タ
イ
ト
ル
オ
プ
シ
ョ
ン
概要
タイトル画面に「オプション」を追加するスクリプトです。
スクリーンショット
スクリプト
RGSS
セクション:KGC_TitleOption
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆タイトルオプション− KGC_TitleOption◆ #_/---------------------------------------------------------------------------- #_/ タイトル画面に「オプション」を追加します。 #_/ ([Active Count Battle][戦闘難易度]が無いとバグります) #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ★ カスタマイズ項目 ★ #============================================================================== module KGC # オプション項目名 TO_COMMAND_OPTION = "オプション弄る(・∀・∀・)" end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ $imported = {} if $imported == nil $imported["TitleOption"] = true #============================================================================== # ■ Window_TitleOption #------------------------------------------------------------------------------ # タイトル画面のオプション内容を表示するウィンドウです。 #============================================================================== class Window_TitleOption < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 480) self.back_opacity = 160 @column_max = 1 @item_max = 3 # ←項目数 self.contents = Bitmap.new(width - 32, row_max * 32) refresh self.index = 0 self.active = true end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_shadow_text(4, 0, 160, 32, "バトルスピード") self.contents.draw_shadow_text(4, 32, 160, 32, "ウェイトモード") self.contents.draw_shadow_text(4, 64, 160, 32, "戦闘難易度") self.contents.font.color = normal_color self.contents.draw_shadow_text(192, 0, 48, 32, $battle_speed.to_s) # ウェイトモード名取得 case $wait_mode when 0 text = "フルアクティブ" when 1 text = "セミアクティブ" when 2 text = "ウェイト" end self.contents.draw_shadow_text(192, 32, 160, 32, text) text = $game_system.difficulty_list[$difficulty][0] self.contents.draw_shadow_text(192, 64, 160, 32, text) end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Title #============================================================================== class Scene_Title #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_KGC_TitleOption update def update # コマンドウィンドウを再作成 unless @command_window_created op = @command_window.opacity b_op = @command_window.back_opacity c_op = @command_window.contents_opacity win_x = @command_window.x win_y = @command_window.y @command_window.dispose # コマンドウィンドウを作成 s = [] s[0] = $imported["TitleDirection"] ? KGC::TD_COMMAND_NEWGAME : "ニューゲーム" s[1] = $imported["TitleDirection"] ? KGC::TD_COMMAND_CONTINUE : "コンティニュー" s[2] = KGC::TO_COMMAND_OPTION s[3] = $imported["TitleDirection"] ? KGC::TD_COMMAND_SHUTDOWN : "シャットダウン" @command_window = Window_Command.new( $imported["TitleDirection"] ? KGC::TD_WINDOW_WIDTH : 192, s) if @continue_enabled @command_window.index = 1 else @command_window.disable_item(1) end @command_window.opacity = op @command_window.back_opacity = b_op @command_window.contents_opacity = c_op @command_window.x = win_x @command_window.y = win_y # 作成済みフラグをオン @command_window_created = true end # C ボタンが押された場合 if Input.trigger?(Input::C) # コマンドウィンドウのカーソル位置で分岐 case @command_window.index when 0 # ニューゲーム command_new_game when 1 # コンティニュー command_continue when 2 # オプション # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # オプション画面に切り替え $scene = Scene_TitleOption.new when 3 # シャットダウン command_shutdown end return end # 元の処理を実行 update_KGC_TitleOption end #-------------------------------------------------------------------------- # ● コマンド : ニューゲーム #-------------------------------------------------------------------------- alias command_new_game_KGC_TitleOption command_new_game def command_new_game # 元の処理を実行 command_new_game_KGC_TitleOption # オプション設定を読み込む if $battle_speed != nil $game_system.battle_speed = $battle_speed end if $wait_mode != nil $game_system.wait_mode = $wait_mode end if $difficulty != nil $game_system.difficulty = $difficulty end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_TitleOption #------------------------------------------------------------------------------ # タイトルのオプション画面処理を行うクラスです。 #============================================================================== class Scene_TitleOption #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main # バトルスピード初期化 if $battle_speed == nil $battle_speed = $game_system.battle_speed end # ウェイトモード初期化 if $wait_mode == nil $wait_mode = $game_system.wait_mode end # 戦闘難易度初期化 if $difficulty == nil $difficulty = $game_system.difficulty end # タイトルグラフィックを作成 @sprite = Sprite.new @sprite.bitmap = RPG::Cache.title($data_system.title_name) # オプションウィンドウを作成 @option_window = Window_TitleOption.new # トランジション実行 Graphics.transition # メインループ loop do # ゲーム画面を更新 Graphics.update # 入力情報を更新 Input.update # フレーム更新 update # 画面が切り替わったらループを中断 if $scene != self break end end # トランジション準備 Graphics.freeze # ウィンドウを解放 @option_window.dispose # タイトルグラフィックを解放 @sprite.bitmap.dispose @sprite.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 @option_window.update # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # タイトル画面に切り替え $scene = Scene_Title.new return end # 左ボタンが押された場合 if Input.repeat?(Input::LEFT) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # カーソル位置で分岐 case @option_window.index when 0 # バトルスピード # バトルスピード減少 $battle_speed = [$battle_speed - 10, 100].max when 1 # ウェイトモード # ウェイトモード変更 $wait_mode = [$wait_mode - 1, 0].max when 2 # 戦闘難易度 # 戦闘難易度変更 $difficulty = [$difficulty - 1, 0].max end # ウィンドウをリフレッシュ @option_window.refresh return end # 右ボタンが押された場合 if Input.repeat?(Input::RIGHT) # カーソル SE を演奏 $game_system.se_play($data_system.cursor_se) # カーソル位置で分岐 case @option_window.index when 0 # バトルスピード # バトルスピード増加 $battle_speed = [$battle_speed + 10, 800].min when 1 # ウェイトモード # ウェイトモード変更 $wait_mode = [$wait_mode + 1, 2].min when 2 # 戦闘難易度 # 戦闘難易度変更 $difficulty = [$difficulty + 1, $game_system.difficulty_list.size - 1].min end # ウィンドウをリフレッシュ @option_window.refresh return end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Load #============================================================================== class Scene_Load < Scene_File #-------------------------------------------------------------------------- # ● セーブデータの読み込み # file : 読み込み用ファイルオブジェクト (オープン済み) #-------------------------------------------------------------------------- alias read_save_data_KGC_TitleOption read_save_data def read_save_data(file) # 元の処理を実行 read_save_data_KGC_TitleOption(file) # オプション設定を読み込む if $battle_speed != nil $game_system.battle_speed = $battle_speed end if $wait_mode != nil $game_system.wait_mode = $wait_mode end if $difficulty != nil $game_system.difficulty = $difficulty end end end