# # 戦闘中にエネミーパラメータを編集 #  (C)2006 TYPE74RX-T #  【利用・改造】RPGツクールXP RGSS板 #  Ruby&RGSS初心者用質問スレ Part4 673氏 #  http://jbbs.livedoor.jp/bbs/read.cgi/game/14836/1137649115/673 # #============================================================================== # ■ Window_Base #------------------------------------------------------------------------------ #  ゲーム中のすべてのウィンドウのスーパークラスです。 #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● 名前の描画 # enemy : エネミー # x : 描画先 X 座標 # y : 描画先 Y 座標 #-------------------------------------------------------------------------- def draw_enemy_name(enemy, x, y) self.contents.font.color = normal_color self.contents.draw_text(x, y, 256, 32, enemy.name) end #-------------------------------------------------------------------------- # ● IDの描画 # enemy : エネミー # x : 描画先 X 座標 # y : 描画先 Y 座標 #-------------------------------------------------------------------------- def draw_enemy_id(enemy, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 24, 32, "ID") self.contents.font.color = normal_color self.contents.draw_text(x + 32, y, 128, 32, "#{enemy.id}" + "/" + "#{$rx_e_maxid}") end #-------------------------------------------------------------------------- # ● EXP の描画 # enemy : エネミー # x : 描画先 X 座標 # y : 描画先 Y 座標 #-------------------------------------------------------------------------- def draw_enemy_exp(enemy, x, y) self.contents.font.color = system_color self.contents.draw_text(x, y, 56, 32, "EX") self.contents.font.color = normal_color self.contents.draw_text(x + 24, y, 124, 32, "#{enemy.exp}", 2) end #-------------------------------------------------------------------------- # ● HP の描画 # enemy : エネミー # x : 描画先 X 座標 # y : 描画先 Y 座標 # width : 描画先の幅 #-------------------------------------------------------------------------- def draw_enemy_hp(enemy, x, y, width = 144) # 文字列 "HP" を描画 self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.hp) # MaxHP を描画するスペースがあるか計算 if width - 32 >= 108 hp_x = x + width - 108 flag = true elsif width - 32 >= 48 hp_x = x + width - 48 flag = false end # HP を描画 self.contents.draw_text(hp_x, y, 80, 32, "#{enemy.maxhp}", 2) end #-------------------------------------------------------------------------- # ● SP の描画 # enemy : エネミー # x : 描画先 X 座標 # y : 描画先 Y 座標 # width : 描画先の幅 #-------------------------------------------------------------------------- def draw_enemy_sp(enemy, x, y, width = 144) # 文字列 "SP" を描画 self.contents.font.color = system_color self.contents.draw_text(x, y, 32, 32, $data_system.words.sp) # MaxSP を描画するスペースがあるか計算 if width - 32 >= 108 sp_x = x + width - 108 flag = true elsif width - 32 >= 48 sp_x = x + width - 48 flag = false end # SP を描画 self.contents.draw_text(sp_x, y, 80, 32, "#{enemy.maxsp}", 2) end #-------------------------------------------------------------------------- # ● パラメータの描画 # enemy : エネミー # x : 描画先 X 座標 # y : 描画先 Y 座標 # type : パラメータの種類 (0~6) #-------------------------------------------------------------------------- def draw_enemy_parameter(enemy, x, y, type) case type when 0 parameter_name = $data_system.words.str parameter_value = enemy.str when 1 parameter_name = $data_system.words.dex parameter_value = enemy.dex when 2 parameter_name = $data_system.words.agi parameter_value = enemy.agi when 3 parameter_name = $data_system.words.int parameter_value = enemy.int when 4 parameter_name = $data_system.words.atk parameter_value = enemy.atk when 5 parameter_name = $data_system.words.pdef parameter_value = enemy.pdef when 6 parameter_name = $data_system.words.mdef parameter_value = enemy.mdef when 7 parameter_name = "回避修正" parameter_value = enemy.eva end self.contents.font.color = system_color self.contents.draw_text(x, y, 120, 32, parameter_name) self.contents.font.color = normal_color self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2) end end #============================================================================== # ★ Window_RX_T_Selectable #------------------------------------------------------------------------------ #  カーソルの移動やスクロールの機能を持つウィンドウクラスです(エネミー編集用)。 #============================================================================== class Window_RX_T_Selectable < Window_Base #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_reader :index # カーソル位置 attr_reader :help_window # ヘルプウィンドウ #-------------------------------------------------------------------------- # ● オブジェクト初期化 # x : ウィンドウの X 座標 # y : ウィンドウの Y 座標 # width : ウィンドウの幅 # height : ウィンドウの高さ #-------------------------------------------------------------------------- def initialize(x, y, width, height) super(x, y, width, height) @item_max = 1 @column_max = 1 @index = -1 end #-------------------------------------------------------------------------- # ● カーソル位置の設定 # index : 新しいカーソル位置 #-------------------------------------------------------------------------- def index=(index) @index = index # ヘルプテキストを更新 (update_help は継承先で定義される) if self.active and @help_window != nil update_help end # カーソルの矩形を更新 update_cursor_rect end #-------------------------------------------------------------------------- # ● 行数の取得 #-------------------------------------------------------------------------- def row_max # 項目数と列数から行数を算出 return (@item_max + @column_max - 1) / @column_max end #-------------------------------------------------------------------------- # ● 先頭の行の取得 #-------------------------------------------------------------------------- def top_row # ウィンドウ内容の転送元 Y 座標を、1 行の高さ 32 で割る return self.oy / 32 end #-------------------------------------------------------------------------- # ● 先頭の行の設定 # row : 先頭に表示する行 #-------------------------------------------------------------------------- def top_row=(row) # row が 0 未満の場合は 0 に修正 if row < 0 row = 0 end # row が row_max - 1 超の場合は row_max - 1 に修正 if row > row_max - 1 row = row_max - 1 end # row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする self.oy = row * 32 end #-------------------------------------------------------------------------- # ● 1 ページに表示できる行数の取得 #-------------------------------------------------------------------------- def page_row_max # ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る return (self.height - 32) / 32 end #-------------------------------------------------------------------------- # ● 1 ページに表示できる項目数の取得 #-------------------------------------------------------------------------- def page_item_max # 行数 page_row_max に 列数 @column_max を掛ける return page_row_max * @column_max end #-------------------------------------------------------------------------- # ● ヘルプウィンドウの設定 # help_window : 新しいヘルプウィンドウ #-------------------------------------------------------------------------- def help_window=(help_window) @help_window = help_window # ヘルプテキストを更新 (update_help は継承先で定義される) if self.active and @help_window != nil update_help end end #-------------------------------------------------------------------------- # ● カーソルの矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect # カーソル位置が 0 未満の場合 if @index < 0 self.cursor_rect.empty return end # 現在の行を取得 row = @index / @column_max # 現在の行が、表示されている先頭の行より前の場合 if row < self.top_row # 現在の行が先頭になるようにスクロール self.top_row = row end # 現在の行が、表示されている最後尾の行より後ろの場合 if row > self.top_row + (self.page_row_max - 1) # 現在の行が最後尾になるようにスクロール self.top_row = row - (self.page_row_max - 1) end # カーソルの幅を計算 cursor_width = self.width / @column_max - 32 # カーソルの座標を計算 x = @index % @column_max * (cursor_width + 32) y = @index / @column_max * 32 - self.oy # カーソルの矩形を更新 self.cursor_rect.set(x, y, cursor_width, 32) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super # カーソルの移動が可能な状態の場合 if self.active and @item_max > 0 and @index >= 0 # 方向ボタンの下が押された場合 if Input.repeat?(Input::DOWN) # 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、 # またはカーソル位置が(項目数 - 列数)より前の場合 if (@column_max == 1 and Input.trigger?(Input::DOWN)) or @index < @item_max - @column_max # カーソルを下に移動 $game_system.se_play($data_system.cursor_se) @index = (@index + @column_max) % @item_max end end # 方向ボタンの上が押された場合 if Input.repeat?(Input::UP) # 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、 # またはカーソル位置が列数より後ろの場合 if (@column_max == 1 and Input.trigger?(Input::UP)) or @index >= @column_max # カーソルを上に移動 $game_system.se_play($data_system.cursor_se) @index = (@index - @column_max + @item_max) % @item_max end end # 方向ボタンの右が押された場合 if Input.repeat?(Input::RIGHT) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) if $rx_e_index < $rx_e_maxid # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) $rx_e_index += 1 $status_window.refresh end # 列数が 2 以上で、カーソル位置が(項目数 - 1)より前の場合 if @column_max >= 2 and @index < @item_max - 1 # カーソルを右に移動 $game_system.se_play($data_system.cursor_se) @index += 1 end end # 方向ボタンの左が押された場合 if Input.repeat?(Input::LEFT) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) if $rx_e_index > 1 # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) $rx_e_index -= 1 $status_window.refresh end # 列数が 2 以上で、カーソル位置が 0 より後ろの場合 if @column_max >= 2 and @index > 0 # カーソルを左に移動 $game_system.se_play($data_system.cursor_se) @index -= 1 end end # R ボタンが押された場合 if Input.repeat?(Input::R) # 表示されている最後尾の行が、データ上の最後の行よりも前の場合 if self.top_row + (self.page_row_max - 1) < (self.row_max - 1) # カーソルを 1 ページ後ろに移動 $game_system.se_play($data_system.cursor_se) @index = [@index + self.page_item_max, @item_max - 1].min self.top_row += self.page_row_max end end # L ボタンが押された場合 if Input.repeat?(Input::L) # 表示されている先頭の行が 0 より後ろの場合 if self.top_row > 0 # カーソルを 1 ページ前に移動 $game_system.se_play($data_system.cursor_se) @index = [@index - self.page_item_max, 0].max self.top_row -= self.page_row_max end end end # ヘルプテキストを更新 (update_help は継承先で定義される) if self.active and @help_window != nil update_help end # カーソルの矩形を更新 update_cursor_rect end end #============================================================================== # ★ Window_RX_T_Command #------------------------------------------------------------------------------ #  エネミー編集用コマンド選択を行うウィンドウです。 #============================================================================== class Window_RX_T_Command < Window_RX_T_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # width : ウィンドウの幅 # commands : コマンド文字列の配列 #-------------------------------------------------------------------------- def initialize(width, commands) # コマンドの個数からウィンドウの高さを算出 super(0, 0, width, commands.size * 32 + 32) @item_max = commands.size @commands = commands self.contents = Bitmap.new(width - 32, @item_max * 32) refresh self.index = 0 end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear for i in 0...@item_max draw_item(i, normal_color) end end #-------------------------------------------------------------------------- # ● 項目の描画 # index : 項目番号 # color : 文字色 #-------------------------------------------------------------------------- def draw_item(index, color) self.contents.font.color = color rect = Rect.new(4, 32 * index, self.contents.width - 8, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index]) end #-------------------------------------------------------------------------- # ● 項目の無効化 # index : 項目番号 #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) end end #============================================================================== # ■ Window_Help #------------------------------------------------------------------------------ #  スキルやアイテムの説明、アクターのステータスなどを表示するウィンドウです。 #============================================================================== class Window_Help < Window_Base #-------------------------------------------------------------------------- # ● エネミー設定 # enemy : 名前とステートを表示するエネミー #-------------------------------------------------------------------------- alias rx_rgsss14_set_enemy set_enemy def set_enemy(enemy) $rx_e_id_index = enemy.id rx_rgsss14_set_enemy(enemy) end end #============================================================================== # ★ Window_RX_T_EnemyStatus #------------------------------------------------------------------------------ #  エネミー編集画面でエネミーのステータスを表示するウィンドウです。 #============================================================================== class Window_RX_T_EnemyStatus < Window_RX_T_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 480, 352) self.contents = Bitmap.new(width - 32, height - 32) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_status end #-------------------------------------------------------------------------- # ● カーソルの矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect if @index < 0 self.cursor_rect.empty else self.cursor_rect.set(0, @index * 116, self.width - 32, 96) end end #-------------------------------------------------------------------------- # ● エネミーステータスの描画 #-------------------------------------------------------------------------- def draw_status draw_enemy_id($data_enemies[$rx_e_index], 0, 0) draw_enemy_name($data_enemies[$rx_e_index], 112, 0) draw_enemy_hp($data_enemies[$rx_e_index], 0, 32) draw_enemy_sp($data_enemies[$rx_e_index], 128, 32) draw_enemy_exp($data_enemies[$rx_e_index], 256, 32) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 64, 0) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 96, 1) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 128, 2) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 160, 3) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 192, 4) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 224, 5) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 256, 6) draw_enemy_parameter($data_enemies[$rx_e_index], 0, 288, 7) end end #============================================================================== # ★ Window_RX_T_PointInputNumber #------------------------------------------------------------------------------ #  エネミー編集時に使用する、数値入力用のウィンドウです。 #============================================================================== class Window_RX_T_PointInputNumber < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 # digits_max : 桁数 #-------------------------------------------------------------------------- def initialize(digits_max = 8) @digits_max = digits_max @number = 0 # 数字の幅からカーソルの幅を計算 (0~9 は等幅と仮定) dummy_bitmap = Bitmap.new(32, 32) @cursor_width = dummy_bitmap.text_size("0").width + 8 dummy_bitmap.dispose super(0, 0, @cursor_width * @digits_max + 32, 64) self.contents = Bitmap.new(width - 32, height - 32) self.z += 9999 @index = 0 refresh update_cursor_rect end #-------------------------------------------------------------------------- # ● 数値の取得 #-------------------------------------------------------------------------- def number return @number end #-------------------------------------------------------------------------- # ● 数値の設定 # number : 新しい数値 #-------------------------------------------------------------------------- def number=(number) @number = [[number, 0].max, 10 ** @digits_max - 1].min refresh end #-------------------------------------------------------------------------- # ● カーソルの矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect self.cursor_rect.set(@index * @cursor_width, 0, @cursor_width, 32) end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update super # 方向ボタンの上か下が押された場合 if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN) $game_system.se_play($data_system.cursor_se) # 現在の位の数字を取得し、いったん 0 にする place = 10 ** (@digits_max - 1 - @index) n = @number / place % 10 @number -= n * place # 上なら +1、下なら -1 n = (n + 1) % 10 if Input.repeat?(Input::UP) n = (n + 9) % 10 if Input.repeat?(Input::DOWN) # 現在の位の数字を再設定 @number += n * place refresh end # カーソル右 if Input.repeat?(Input::RIGHT) if @digits_max >= 2 $game_system.se_play($data_system.cursor_se) @index = (@index + 1) % @digits_max end end # カーソル左 if Input.repeat?(Input::LEFT) if @digits_max >= 2 $game_system.se_play($data_system.cursor_se) @index = (@index + @digits_max - 1) % @digits_max end end update_cursor_rect end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = normal_color s = sprintf("%0*d", @digits_max, @number) for i in 0...@digits_max self.contents.draw_text(i * @cursor_width + 4, 0, 32, 32, s[i,1]) end end end #============================================================================== # ■ Scene_Title #------------------------------------------------------------------------------ #  タイトル画面の処理を行うクラスです。 #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- alias rx_rgsss14_main main def main # ★ 戦闘中に編集したエネミーデータがあるなら #  そのデータにファイルを置き換える # # ※:戦闘中に編集したパラメータがあれば、それを優先的に反映し # ツクール本体でしか編集できないデータは #   ツクールで編集した物を優先的に反映します。 if FileTest.exist?("Enemies.rxdata") copy_data_ememies = load_data("Data/Enemies.rxdata") $data_enemies = load_data("Enemies.rxdata") for i in 1...$data_enemies.size if $data_enemies[i].name != copy_data_ememies[i].name $data_enemies[i].name = copy_data_ememies[i].name end if $data_enemies[i].battler_name != copy_data_ememies[i].battler_name $data_enemies[i].battler_name = copy_data_ememies[i].battler_name end if $data_enemies[i].battler_hue != copy_data_ememies[i].battler_hue $data_enemies[i].battler_hue = copy_data_ememies[i].battler_hue end if $data_enemies[i].animation1_id != copy_data_ememies[i].animation1_id $data_enemies[i].animation1_id = copy_data_ememies[i].animation1_id end if $data_enemies[i].animation2_id != copy_data_ememies[i].animation2_id $data_enemies[i].animation2_id = copy_data_ememies[i].animation2_id end if $data_enemies[i].element_ranks != copy_data_ememies[i].element_ranks $data_enemies[i].element_ranks = copy_data_ememies[i].element_ranks end if $data_enemies[i].state_ranks != copy_data_ememies[i].state_ranks $data_enemies[i].state_ranks = copy_data_ememies[i].state_ranks end if $data_enemies[i].actions != copy_data_ememies[i].actions $data_enemies[i].actions = copy_data_ememies[i].actions end if $data_enemies[i].gold != copy_data_ememies[i].gold $data_enemies[i].gold = copy_data_ememies[i].gold end if $data_enemies[i].item_id != copy_data_ememies[i].item_id $data_enemies[i].item_id = copy_data_ememies[i].item_id end if $data_enemies[i].weapon_id != copy_data_ememies[i].weapon_id $data_enemies[i].weapon_id = copy_data_ememies[i].weapon_id end if $data_enemies[i].armor_id != copy_data_ememies[i].armor_id $data_enemies[i].armor_id = copy_data_ememies[i].armor_id end if $data_enemies[i].treasure_prob != copy_data_ememies[i].treasure_prob $data_enemies[i].treasure_prob = copy_data_ememies[i].treasure_prob end end save_data($data_enemies, "Data/Enemies.rxdata") end # コピーデータの解放 copy_data_ememies = nil rx_rgsss14_main end end #============================================================================== # ★ Scene_RX_T_EnemyEdit #------------------------------------------------------------------------------ #  エネミー編集画面の処理を行うクラスです。 #============================================================================== class Scene_RX_T_EnemyEdit #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main @title = "エネミーパラメータ編集 (Bボタン:バトルに戻る)" $rx_e_maxid = 0 if $rx_e_id_index > 1 $rx_e_index = $rx_e_id_index $rx_e_id_index = 1 else $rx_e_index = 1 end $rx_e_maxid = $data_enemies.size - 1 # ヘルプウィンドウ、インプットウィンドウを作成 @help_window = Window_Help.new @help_window.set_text(@title) @help_window.back_opacity = 160 # ステータスウィンドウを作成 $status_window = Window_RX_T_EnemyStatus.new $status_window.x = 160 $status_window.y = 128 $status_window.back_opacity = 160 @input_window = Window_RX_T_PointInputNumber.new @input_window.x = 160 @input_window.y = 64 @input_window.back_opacity = 160 @input_window.visible = false @input_window.active = false # コマンドウィンドウを作成 s1 = "指定したIDへ飛ぶ" s2 = $data_system.words.hp s3 = $data_system.words.sp s4 = "経験値" s5 = $data_system.words.str s6 = $data_system.words.dex s7 = $data_system.words.agi s8 = $data_system.words.int s9 = $data_system.words.atk s10 = $data_system.words.pdef s11 = $data_system.words.mdef s12 = "回避修正" @command_window = Window_RX_T_Command.new(160, [s1, s2, s3, s4, s5, s6, s7, s8, s9 ,s10 ,s11, s12]) @command_window.back_opacity = 160 @command_window.x = 0 @command_window.y = 64 @command_window.index = 1 # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 $status_window.dispose @command_window.dispose @input_window.dispose @help_window.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # コマンドウィンドウがアクティブの場合: update_command を呼ぶ if @command_window.active # コマンドウィンドウを更新 @command_window.update update_command return end # インプットウィンドウがアクティブの場合: update_input を呼ぶ if @input_window.active # インプットウィンドウを更新 @input_window.update update_input return end end #-------------------------------------------------------------------------- # ● フレーム更新 (コマンドウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_command # C ボタンが押された場合 if Input.trigger?(Input::C) help_text(@command_window.index) @input_window.active = true @input_window.visible = true @command_window.active = false return end # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) write_data # マップ画面に切り替え $scene = Scene_Map.new return end end #-------------------------------------------------------------------------- # ● フレーム更新 (コマンドウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_input # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) @input_window.active = false @input_window.visible = false @command_window.active = true @help_window.set_text(@title) return end # C ボタンが押された場合 if Input.trigger?(Input::C) @tmp = false # コマンドウィンドウのカーソル位置で分岐 # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) rx_command(@command_window.index) @input_window.active = false @input_window.visible = false @command_window.active = true @help_window.set_text(@title) return end end #-------------------------------------------------------------------------- # ● コマンド #-------------------------------------------------------------------------- def rx_command(id) case id when 0 $rx_e_index = @input_window.number if $rx_e_index == 0 $rx_e_index = 1 end if $rx_e_index > $rx_e_maxid $rx_e_index = $rx_e_maxid end when 1 $data_enemies[$rx_e_index].maxhp = @input_window.number if $data_enemies[$rx_e_index].maxhp == 0 $data_enemies[$rx_e_index].maxhp = 1 end when 2 $data_enemies[$rx_e_index].maxsp = @input_window.number when 3 $data_enemies[$rx_e_index].exp = @input_window.number when 4 $data_enemies[$rx_e_index].str = @input_window.number when 5 $data_enemies[$rx_e_index].dex = @input_window.number when 6 $data_enemies[$rx_e_index].agi = @input_window.number when 7 $data_enemies[$rx_e_index].int = @input_window.number when 8 $data_enemies[$rx_e_index].atk = @input_window.number when 9 $data_enemies[$rx_e_index].pdef = @input_window.number when 10 $data_enemies[$rx_e_index].mdef = @input_window.number when 11 $data_enemies[$rx_e_index].eva = @input_window.number end # ステータスウィンドウ更新 $status_window.refresh end #-------------------------------------------------------------------------- # ● ヘルプテキスト #-------------------------------------------------------------------------- def help_text(id) case id when 0 @help_window.set_text("編集するエネミーIDを選択(0:1となる)") when 1 @help_window.set_text("エネミーの最大" + $data_system.words.hp + "を設定(0:1となる)") when 2 @help_window.set_text("エネミーの最大" + $data_system.words.sp + "を設定") when 3 @help_window.set_text("エネミーの経験値を設定") when 4 @help_window.set_text("エネミーの" + $data_system.words.str + "を設定") when 5 @help_window.set_text("エネミーの" + $data_system.words.dex + "を設定") when 6 @help_window.set_text("エネミーの" + $data_system.words.agi + "を設定") when 7 @help_window.set_text("エネミーの" + $data_system.words.int + "を設定") when 8 @help_window.set_text("エネミーの" + $data_system.words.atk + "を設定") when 9 @help_window.set_text("エネミーの" + $data_system.words.pdef + "を設定") when 10 @help_window.set_text("エネミーの" + $data_system.words.mdef + "を設定") when 11 @help_window.set_text("エネミーの回避修正を設定") end end #-------------------------------------------------------------------------- # ● 編集終了時、エネミーデータを自動的にセーブ #-------------------------------------------------------------------------- def write_data save_data($data_enemies, "Data/Enemies.rxdata") # ツクール本体から立ち上げると、戦闘中に調整したデータが初期化されるので # それを防ぐために、同じデータを別の場所にも記録しておく save_data($data_enemies, "Enemies.rxdata") end end #============================================================================== # ■ Scene_Battle (分割定義 1) #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- alias rx_rgsss14_main main def main $rx_e_maxid = 0 $rx_e_id_index = 0 $rx_e_index = 0 rx_rgsss14_main # 解放 $rx_e_maxid = nil $rx_e_id_index = nil $rx_e_index = nil end #-------------------------------------------------------------------------- # ● フレーム更新 (アクターコマンドフェーズ : エネミー選択) #-------------------------------------------------------------------------- alias rx_rgsss14_update_phase3_enemy_select update_phase3_enemy_select def update_phase3_enemy_select # デバッグモードが ON かつターゲットの HP が最大値を超えている場合 # HP を最大値のものに引き下げる if $DEBUG and $game_troop.enemies[@enemy_arrow.index].hp > $game_troop.enemies[@enemy_arrow.index].maxhp $game_troop.enemies[@enemy_arrow.index].hp = $game_troop.enemies[@enemy_arrow.index].maxhp end # デバッグモードが ON かつ F8 キーが押されている場合 if $DEBUG and Input.press?(Input::F8)# 現在のシーンを一時退避 tmp_scene = self # エネミーアローを無効化 @enemy_arrow.dispose # ヘルプウィンドウを無効化 @enemy_arrow.help_window.visible = false # ステータスウィンドウを無効化 @status_window.visible = false # アクタースプライトセットを無効化 @spriteset.viewport2.visible = false # シーンデバッグの作成 $scene = Scene_RX_T_EnemyEdit.new # メイン処理 $scene.main # トランジション実行 Graphics.transition # シーンを元に戻す $scene = tmp_scene # エネミーアローを有効化 @enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1) # ヘルプウィンドウを関連付け @enemy_arrow.help_window = @help_window # ステータスウィンドウを有効化 @status_window.visible = true # アクタースプライトセットを有効化 @spriteset.viewport2.visible = true end rx_rgsss14_update_phase3_enemy_select end end