・Surume_WindowCommand にどこでもいいから、以下を追加 class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :event # イベント end #-------------------------------------------------------------------------- # ● 指定の変数に値をセットする # name : 変数名 # no : 値 #-------------------------------------------------------------------------- def set_variable_from_name(name, no) n = $data_system.variables.index(name) if n != nil $game_variables[n] = no return n end return 0 end #-------------------------------------------------------------------------- # ● 指定のマップイベントを捜す # event_name : マップイベント名 #-------------------------------------------------------------------------- def search_map_event(event_name) # 全イベントのループ for event in $game_map.events.values if event.event.name == event_name return event end end return nil end #-------------------------------------------------------------------------- # ● 指定されたマップイベントを実行する #-------------------------------------------------------------------------- def run_event(name) $command_cansel = false event_callback = search_map_event(name) if event_callback != nil # イベントをセットアップ $game_system.map_interpreter.setup(event_callback.list, 0) $scene.wait_interpreter_end if $command_cansel return true end end return false end #-------------------------------------------------------------------------- # ● 選択されたコマンドをキャンセルする #-------------------------------------------------------------------------- def command_cancel $command_cansel = true end *************************************************************************************************** ・SurumeSim_Attack 37行目に以下を追加 # "引数:実行ユニット"という名前の変数に敵の数を格納 if $picked_unit_vid != 0 $picked_unit_vid = set_variable_from_name("引数:実行ユニット", $scene.pick_event_id) end # "引数:対象ユニット"という名前の変数に敵の数を格納 if $selected_unit_vid != 0 $selected_unit_vid = set_variable_from_name("引数:対象ユニット", enemy_id) end if run_event("コールバック:攻撃") next end *************************************************************************************************** ・SurumeSim_Skill 54行目のupdate関数全てを以下に変更 def update # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え return -1 end # C ボタンが押された場合 if Input.trigger?(Input::C) # アクターを取得 actor = $game_map.events[@actor_index].actor # スキルウィンドウで現在選択されているデータを取得 skill = @skill_window.skill # 使用できない場合 if skill == nil or not actor.skill_can_use?(skill.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return 0 end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # スキルウィンドウを不可視状態にする @skill_window.visible = false @help_window.visible = false # 移動範囲クリア $game_map.move_algorythm.clear(2) # 選択ユニットの攻撃可能範囲計算 selected_event = $game_map.events[@actor_index] $game_map.move_algorythm.set_move_action_by_distance(selected_event.x, selected_event.y, 0, skill.range) # 効果範囲が単体の場合 if skill.scope == 1 or skill.scope == 3 or skill.scope == 5 loop do unit_ret = false # 効果範囲が敵単体の場合 if skill.scope == 1 # 敵を選択 unit_ret = $scene.select_enemy(skill.range) else # 味方を選択 unit_ret = $scene.select_party(skill.range) end if unit_ret == true enemy_id = $game_map.surume_check_event($game_player.x, $game_player.y) # 射程範囲内なら if enemy_id > 0 # "引数:動かすユニット"という名前の変数に敵の数を格納 if $picked_unit_vid != 0 $picked_unit_vid = set_variable_from_name("引数:実行ユニット", @actor_index) end # "引数:選んだユニット"という名前の変数に敵の数を格納 if $selected_unit_vid != 0 $selected_unit_vid = set_variable_from_name("引数:対象ユニット", enemy_id) end # "引数:使用スキル"という名前の変数に敵の数を格納 if $selected_unit_vid != 0 $selected_unit_vid = set_variable_from_name("引数:使用スキル", skill.id) end if run_event("コールバック:スキル") next end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # 戦闘シーンに移行 $scene.sim_battle(@actor_index, enemy_id, skill.id) return 1 end # キャンセルなら else # 表示を移動範囲へ $game_map.move_algorythm.set_move_action_by_move(selected_event.actor.range) $game_map.move_algorythm.clear(0xfffd) # 見やすい位置にウィンドウを移動 set_window_position # スキルウィンドウ表示 @skill_window.visible = true @help_window.visible = true break end end # 効果範囲が単体ではない場合 else # スキルの選択を終了 return 1 end end return 0 end *************************************************************************************************** ・SurumeSim_Item 53行目のupdate関数全てを以下に変更 def update # B ボタンが押された場合 if Input.trigger?(Input::B) return -1 # C ボタンが押された場合 elsif Input.trigger?(Input::C) # アクターを取得 actor = $game_map.events[@actor_index].actor # アイテムウィンドウで現在選択されているデータを取得 item = @item_window.item # 使用できない場合 unless $game_party.item_can_use?(item.id) # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return 0 end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # アイテムウィンドウを不可視状態にする @item_window.visible = false @help_window.visible = false # 移動範囲クリア $game_map.move_algorythm.clear(2) # 選択ユニットの攻撃可能範囲計算 selected_event = $game_map.events[@actor_index] $game_map.move_algorythm.set_move_action_by_distance(selected_event.x, selected_event.y, 0, item.range) # 効果範囲が単体の場合 if item.scope == 1 or item.scope == 3 or item.scope == 5 loop do unit_ret = false # 効果範囲が敵単体の場合 if item.scope == 1 # 敵を選択 unit_ret = $scene.select_enemy(item.range) else # 味方を選択 unit_ret = $scene.select_party(item.range) end if unit_ret == true enemy_id = $game_map.surume_check_event($game_player.x, $game_player.y) # 射程範囲内なら if enemy_id > 0 # "引数:動かすユニット"という名前の変数に敵の数を格納 if $picked_unit_vid != 0 $picked_unit_vid = set_variable_from_name("引数:実行ユニット", @actor_index) end # "引数:選んだユニット"という名前の変数に敵の数を格納 if $selected_unit_vid != 0 $selected_unit_vid = set_variable_from_name("引数:対象ユニット", enemy_id) end # "引数:使用スキル"という名前の変数に敵の数を格納 if $selected_unit_vid != 0 $selected_unit_vid = set_variable_from_name("引数:使用アイテム", item.id) end if run_event("コールバック:アイテム") next end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # 消耗品の場合 if item.consumable # 使用したアイテムを 1 減らす $game_party.lose_item(item.id, 1) end # 戦闘シーンに移行 $scene.sim_battle(@actor_index, enemy_id, -item.id) return 1 end # キャンセルなら else # 表示を移動範囲へ $game_map.move_algorythm.set_move_action_by_move(selected_event.actor.range) $game_map.move_algorythm.clear(0xfffd) # 見やすい位置にウィンドウを移動 set_window_position # スキルウィンドウ表示 @item_window.visible = true @help_window.visible = true break end end # 効果範囲が単体ではない場合 else # スキルの選択を終了 return 1 end end return 0 end *************************************************************************************************** ・SurumeSim_End 15行目 cbutton_pushed関数全てを以下に変更 def cbutton_pushed # 他のコマンドが選択されたか? if srmsim_end_cbutton_pushed == true return true end # コマンドウィンドウのカーソル位置で分岐 if @commands[self.index] == "防御" # "引数:動かすユニット"という名前の変数に敵の数を格納 if $picked_unit_vid != 0 $picked_unit_vid = set_variable_from_name("引数:実行ユニット", $scene.pick_event_id) end self.visible = false if run_event("コールバック:防御") self.visible = true return false end self.visible = true # ユニットを防御状態に selected_event = $game_map.events[$scene.pick_event_id] selected_event.actor.current_action.kind = 0 selected_event.actor.current_action.basic = 1 return true end return false end