#============================================================================== # ■ XP-RGSS-19 動くアクター(メニュー) by Claimh #------------------------------------------------------------------------------ #  ・トップメニュー画面でアクターが動きます #============================================================================== module Move_Actor MENU_ANIME_ID = [] #============================================================================== # カスタマイズSTART #============================================================================== # カーソルがあたっている時のみ動作させる TOP_SELECT = false # 基本動作タイプ # 0:歩く 1:回る TOP_MOVE = 0 # 動作タイプ<歩く>の向き(2:下 4:左 6:右 8:上) WALK_DIREC = 6 # カーソルが当たっている場合のみ動作を変える(TOP_SELECT = false時のみ) SELECT_CHANGE = true # カーソルが当たっている場合の動作タイプ # 0:歩く 1:回る SELECT_MT = 0 # 動作タイプ<歩く>の向き(2:下 4:左 6:右 8:上) SEW_DIREC = 2 # カーソルが当たっている場合、アニメーションを実行(ループなし) SELECT_ANIME = false # 実行するアニメID # MENU_ANIME_ID[アクターID] = アニメーションID # ※アクターID=0は共通物 MENU_ANIME_ID[0] = 1 MENU_ANIME_ID[1] = 2 # カーソルがあっている場合、明暗処理実行 SEL_BLINK = true #============================================================================== # カスタマイズEND #============================================================================== end #============================================================================== # ■ Window_MenuStatus #============================================================================== class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_walk initialize def initialize @character_sprite = [] for i in 0...$game_party.actors.size actor = $game_party.actors[i] x = 64 + 160 + 16 y = i * 116 + 16 @character_sprite[actor.id] = Sprite_MoveActor.new(nil, actor) @character_sprite[actor.id].move_type = Move_Actor::TOP_MOVE @character_sprite[actor.id].direction = Move_Actor::WALK_DIREC if Move_Actor::TOP_SELECT @character_sprite[actor.id].move_stop = true end @character_sprite[actor.id].x = x - 40 @character_sprite[actor.id].y = y + 80 @character_sprite[actor.id].z = 160 @character_sprite[actor.id].setup end initialize_walk end #-------------------------------------------------------------------------- # ● リフレッシュ(再定義) #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] #draw_actor_graphic(actor, x - 40, y + 80) ※いらないので消去 draw_actor_name(actor, x, y) draw_actor_class(actor, x + 144, y) draw_actor_level(actor, x, y + 32) draw_actor_state(actor, x + 90, y + 32) draw_actor_exp(actor, x, y + 64) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end #-------------------------------------------------------------------------- # ● カーソルの矩形更新 #-------------------------------------------------------------------------- alias update_cursor_rect_aas update_cursor_rect def update_cursor_rect update_cursor_rect_aas # カーソルが切り替え発生 if @index != @cursor_index @cursor_index = @index move_actor = $game_party.actors[@index] # カーソルがあっている場合のみ動作 if Move_Actor::TOP_SELECT for actor in $game_party.actors if actor.id == move_actor.id and @index >= 0 @character_sprite[actor.id].move_stop = false else @character_sprite[actor.id].move_stop = true end end else # カーソルが当たってる場合に動作チェンジ if Move_Actor::SELECT_CHANGE for actor in $game_party.actors if actor.id == move_actor.id and @index >= 0 @character_sprite[actor.id].move_type = Move_Actor::SELECT_MT @character_sprite[actor.id].direction = Move_Actor::SEW_DIREC else @character_sprite[actor.id].move_type = Move_Actor::TOP_MOVE @character_sprite[actor.id].direction = Move_Actor::WALK_DIREC end end end end # カーソル切り替え時にアニメーション実行 if Move_Actor::SELECT_ANIME if @index >= 0 @character_sprite[move_actor.id].exe_animation(Move_Actor::MENU_ANIME_ID) end end # カーソルがあたってる場合に明暗処理 if Move_Actor::SEL_BLINK for actor in $game_party.actors if move_actor.id == actor.id and @index >= 0 @character_sprite[actor.id].exe_blink(true) else @character_sprite[actor.id].exe_blink(false) end end end end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super for actor in $game_party.actors @character_sprite[actor.id].update end end #-------------------------------------------------------------------------- # ● 動くアクタースプライト消去 #-------------------------------------------------------------------------- def dispose super for actor in $game_party.actors @character_sprite[actor.id].dispose end end end