メ
ニ
ュ
ー
画
面
改
造
概要
メニュー画面を横型に改造します。
(コマンド追加系のスクリプトを使用する場合にもお勧め)
スクリーンショット
スクリプト
RGSS
セクション:KGC_MenuAlter
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆ メニュー画面改造 - KGC_MenuAlter ◆ #_/ ◇ Last update : 2009/08/23 ◇ #_/---------------------------------------------------------------------------- #_/ メニュー画面を怪しいスタイルに改造します。 #_/============================================================================ #_/ ≪多人数パーティ[LargeParty]≫より上 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ★ カスタマイズ項目 ★ #============================================================================== module KGC # ◆メニュー背景透過 MA_MENU_TRANSPARENT = true # ◆[正常]時に表示する文字列 MA_FINE_STATE_NAME = "Fine." # ◆メニューステータスにバトラーグラフィックを表示 MA_MENU_STATUS_BATTLER = true # ◆メニューステータスに表示する人数 # ※仕様上、5 以上にすると表示が被ります。 MA_MENU_STATUS_MEMBER = 4 # ◆必須メンバーの背景色 MA_INDISPENSABLE_COLOR = Color.new(0, 128, 192, 96) # ◆待機メンバーの背景色 MA_STAND_COLOR = Color.new(0, 0, 0, 96) # ↑2つは≪多人数パーティ[LargeParty]≫が無いと無効。 # 使用しない場合は、第4引数を 0 にしてください。 # ◆コマンド名「ステータス」 MA_COMMAND_STATUS = "ステータス" # ◆コマンド名「セーブ」 MA_COMMAND_SAVE = "セーブ" # ◆コマンド名「ゲーム終了」 MA_COMMAND_END = "ゲーム終了" # ◆コマンド名「プレイ記録」(≪プレイ記録画面≫) MA_COMMAND_PLAY_RECORD = "プレイ記録" # ◆コマンド名「パーティ編成」(≪多人数パーティ≫) MA_COMMAND_PARTY_ARRANGE = "パーティ編成" # ◆コマンド名「スキル設定」(≪スキルCP制≫) MA_COMMAND_SKILL_SETTING = "スキル設定" # ◆コマンド名「モンスター図鑑」(≪モンスター図鑑≫) MA_COMMAND_MONSTER_GUIDE = "モンスター図鑑" # ◆コマンド名「あらすじ」(≪あらすじ≫) MA_COMMAND_OUTLINE = "あらすじ" # ◆コマンド名「パラメータ振り分け」(≪パラメータ振り分け≫) MA_COMMAND_DISTRIBUTE_PARAMETER = "パラメータ振分" # ◆一行に表示するコマンド数 MA_COL_COMMANDS = 7 # ◆メニューコマンドリスト # 以下の中から使用したいコマンドを表示順に格納。 # (6 以降は、対応する機能を導入しないと使えません) # ≪ 0..アイテム 1..スキル 2..装備 3..ステータス 4..セーブ 5..終了 # 6..プレイ記録 7..パーティ編成 8..スキル設定 9..戦闘難易度 # 10..ACBウェイトモード 11..モンスター図鑑 12..あらすじ # 13..パラメータ振り分け ≫ # ※同じコマンドを複数指定するとバグります。 MA_COMMANDS = [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 5] # ◆ActiveCountBattle ウェイトモード名 MA_ACB_WAIT_MODE = ["フルアクティブ", "セミアクティブ", "ウェイト"] # ◆メニュー画面トランジション MA_MENU_TRANSITION = "015-Diamond01" end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ $imported = {} if $imported == nil $imported["MenuAlter"] = true #============================================================================== # ■ Game_Temp #============================================================================== class Game_Temp attr_accessor :menu_selected_index #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize initialize_KGC_MenuAlter @menu_selected_index = nil end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor < Game_Battler attr_reader :exp_list end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # ● 名前の描画 #-------------------------------------------------------------------------- def draw_actor_name(actor, x, y) self.contents.font.color = normal_color self.contents.draw_shadow_text(x, y, 120, 32, actor.name) end #-------------------------------------------------------------------------- # ● クラスの描画 #-------------------------------------------------------------------------- def draw_actor_class(actor, x, y) self.contents.font.color = normal_color self.contents.draw_shadow_text(x, y, 236, 32, actor.class_name) end #-------------------------------------------------------------------------- # ● レベルの描画 #-------------------------------------------------------------------------- def draw_actor_level(actor, x, y) self.contents.font.color = system_color self.contents.draw_shadow_text(x, y, 32, 32, "Lv") self.contents.font.color = normal_color self.contents.draw_shadow_text(x + 32, y, 24, 32, actor.level.to_s, 2) end #-------------------------------------------------------------------------- # ● 描画用のステート文字列作成 #-------------------------------------------------------------------------- def make_battler_state_text(battler, width, need_normal) # 括弧の幅を取得 brackets_width = self.contents.text_size("[]").width # ステート名の文字列を作成 text = "" battler.states.each { |i| if $data_states[i].rating >= 1 if text == "" text = $data_states[i].name else new_text = text + "/" + $data_states[i].name text_width = self.contents.text_size(new_text).width break if text_width > width - brackets_width text = new_text end end } # ステート名の文字列が空の場合は KGC::MA_FINE_STATE_NAME にする if text == "" text = KGC::MA_FINE_STATE_NAME if need_normal elsif battler.is_a?(Game_Enemy) # 敵の場合は括弧をつける text = "[#{text}]" end # 完成した文字列を返す return text end unless $imported["StateIcon"] #-------------------------------------------------------------------------- # ● ステートの描画 #-------------------------------------------------------------------------- def draw_actor_state(actor, x, y, width = 120) text = make_battler_state_text(actor, width, true) self.contents.font.color = actor.dead? ? knockout_color : normal_color self.contents.draw_shadow_text(x, y, width, 32, text) end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_MenuCommand #------------------------------------------------------------------------------ # メニュー用のコマンド選択を行うウィンドウです。 #============================================================================== class Window_MenuCommand < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # commands : コマンド文字列の配列 #-------------------------------------------------------------------------- def initialize(commands) col_max = KGC::MA_COL_COMMANDS # コマンドの個数からウィンドウの高さを算出 super(0, 0, 640, (commands.size / col_max + 1) * 32 + 32) @column_max = col_max @item_max = commands.size @commands = commands self.contents = Bitmap.new(width - 32, height - 32) refresh self.index = 0 end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh(commands = nil) @commands = commands if commands != nil 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((index % @column_max) * ((width - 32) / @column_max), index / @column_max * 32, (width - 32) / @column_max, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.draw_text(rect, @commands[index], 1) end #-------------------------------------------------------------------------- # ● 項目の無効化 # index : 項目番号 #-------------------------------------------------------------------------- def disable_item(index) draw_item(index, disabled_color) 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 = (width - 32) / @column_max # カーソルの座標を計算 x = @index % @column_max * cursor_width y = @index / @column_max * 32 - self.oy # カーソルの矩形を更新 self.cursor_rect.set(x, y, cursor_width, 32) end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_MenuStatus #============================================================================== class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(items = KGC::MA_COL_COMMANDS) @dy = (items / KGC::MA_COL_COMMANDS + 1) * 32 + 32 @dw = 608 / KGC::MA_MENU_STATUS_MEMBER @dh = 384 - @dy super(0, @dy, 640, @dh) @column_max = KGC::MA_MENU_STATUS_MEMBER bh = (($game_party.actors.size - 1) / @column_max + 1) * @dh - 32 self.contents = Bitmap.new(608, bh) refresh self.active = false self.index = -1 end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear self.contents.font.size = 20 @item_max = $game_party.actors.size ch = @dh - 192 for i in 0...$game_party.actors.size actor = $game_party.actors[i] x = i % @column_max * @dw + 8 y = i / @column_max * @dh + ch if $imported["LargeParty"] # 必須メンバー if $game_party.indispensable_actors.include?(actor) color = KGC::MA_INDISPENSABLE_COLOR # 戦闘参加メンバー以降 elsif i >= $game_party.battle_actors.size color = KGC::MA_STAND_COLOR else color = Color.new(0, 0, 0, 0) end self.contents.fill_rect(x - 8, y - ch, @dw, @dh, color) end if KGC::MA_MENU_STATUS_BATTLER draw_actor_graphic(actor, x, y - ch) else draw_actor_graphic(actor, x + 64, y - ch / 3) end draw_actor_name(actor, x, y) draw_actor_class(actor, x, y + 24) draw_actor_level(actor, x, y + 48) draw_actor_state(actor, x + 64, y + 48) draw_actor_hp(actor, x, y + 96) draw_actor_sp(actor, x, y + 124) if $imported["HPSPAlter2"] # EXP描画 draw_actor_next_exp(actor, x, y + 72) next end # HP/SPゲージを導入している場合 if $imported["HPSPAlter"] # EXPゲージ描画 rest_exp = actor.next_rest_exp_s.to_i next_exp = actor.next_exp_s.to_i - actor.exp_list[actor.level] gx = x gw = (next_exp - rest_exp) * @g_width / next_exp if KGC::HPSP_GAUGE_SLANT gy = @g_height + 96 gy2 = @g_height + 1 for i in 0...(@g_height + 2) self.contents.blt(gx + 31 + i, y + gy - i, @hpsp_gauge, Rect.new(0, gy2 - i, 102, 1)) end gy -= 1 gy2 = @g_height * 4 + 1 for i in 0...@g_height self.contents.blt(gx + 33 + i, y + 99 - i, @hpsp_gauge, Rect.new(0, gy2 - i , gw, 1)) end else self.contents.blt(gx + 31, y + 95, @hpsp_gauge, Rect.new(0, 0, 102, @g_height + 2)) self.contents.blt(gx + 32, y + 96, @hpsp_gauge, Rect.new(0, @g_height * 4 + 2 , gw, @g_height)) end end self.contents.font.color = system_color self.contents.draw_shadow_text(x, y + 72, 32, 32, "Next") self.contents.font.color = normal_color self.contents.draw_shadow_text(x + 32, y + 72, 100, 32, actor.next_rest_exp_s, 2) end end #-------------------------------------------------------------------------- # ● カーソル矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect # カーソル位置が 0 未満の場合 if @index < 0 self.cursor_rect.empty return end # カーソルの座標を計算 x = @index % @column_max * @dw y = @index / @column_max * @dh - self.oy # カーソルの矩形を更新 self.cursor_rect.set(x, y, @dw, @dh - 32) self.oy = @index / @column_max * @dh end #-------------------------------------------------------------------------- # ● グラフィックの描画 #-------------------------------------------------------------------------- if KGC::MA_MENU_STATUS_BATTLER def draw_actor_graphic(actor, x, y) bitmap = RPG::Cache.battler(actor.battler_name, actor.battler_hue) cw, ch = bitmap.width, bitmap.height self.contents.blt(x, y, bitmap, bitmap.rect) end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_Item #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_Item < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize initialize_KGC_MenuAlter self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_Skill #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_Skill < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize(actor) initialize_KGC_MenuAlter(actor) self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_SkillStatus #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_SkillStatus < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize(actor) initialize_KGC_MenuAlter(actor) self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_Target #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_Target < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize initialize_KGC_MenuAlter self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_EquipLeft #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_EquipLeft < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize(actor) initialize_KGC_MenuAlter(actor) self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_EquipRight #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize(actor) initialize_KGC_MenuAlter(actor) self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_EquipItem #============================================================================== if KGC::MA_MENU_TRANSPARENT class Window_EquipItem < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_MenuAlter initialize def initialize(actor, equip_type) initialize_KGC_MenuAlter(actor, equip_type) self.back_opacity = 160 end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● メニューの呼び出し #-------------------------------------------------------------------------- alias call_menu_KGC_MenuAlter call_menu def call_menu $game_temp.menu_selected_index = nil call_menu_KGC_MenuAlter end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Menu #============================================================================== class Scene_Menu #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main if $game_temp.menu_selected_index != nil @menu_index = $game_temp.menu_selected_index end # スプライトセットを作成 @spriteset = Spriteset_Map.new if KGC::MA_MENU_TRANSPARENT # コマンドウィンドウを作成 @commands = [] @com_index = [] KGC::MA_COMMANDS.each_with_index { |com, i| case com when 0 @commands << $data_system.words.item when 1 @commands << $data_system.words.skill when 2 @commands << $data_system.words.equip when 3 @commands << KGC::MA_COMMAND_STATUS when 4 @commands << KGC::MA_COMMAND_SAVE when 5 @commands << KGC::MA_COMMAND_END when 6 @commands << KGC::MA_COMMAND_PLAY_RECORD when 7 @commands << KGC::MA_COMMAND_PARTY_ARRANGE when 8 @commands << KGC::MA_COMMAND_SKILL_SETTING when 9 @commands << ($imported["BattleDifficulty"] ? Difficulty.get[0] : "No Command") when 10 @commands << ($imported["ActiveCountBattle"] ? KGC::MA_ACB_WAIT_MODE[$game_system.wait_mode] : "No Command") when 11 @commands << ($imported["MonsterGuide"] ? KGC::MA_COMMAND_MONSTER_GUIDE : "No Command") when 12 @commands << ($imported["Outline"] ? KGC::MA_COMMAND_OUTLINE : "No Command") when 13 @commands << ($imported["DistributeParameter"] ? KGC::MA_COMMAND_DISTRIBUTE_PARAMETER : "No Command") end @com_index[com] = i } @command_window = Window_MenuCommand.new(@commands) @command_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @command_window.index = @menu_index # 項目を無効化 disable_command # プレイ時間ウィンドウを作成 @playtime_window = Window_PlayTime.new @playtime_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @playtime_window.x = 0 @playtime_window.y = 384 # ゴールドウィンドウを作成 @gold_window = Window_Gold.new @gold_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @gold_window.opacity = 0 @gold_window.x = 640 - @gold_window.width @gold_window.y = @command_window.height - @gold_window.height if $imported["PlaceMission"] # 情報ウィンドウを作成 @info_window = Window_Information.new @info_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @info_window.x = 160 @info_window.y = 384 else # ゴールドウィンドウ位置を調整 @gold_window.x = 160 @gold_window.y = 384 end # ステータスウィンドウを作成 @status_window = Window_MenuStatus.new(@commands.size) @status_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @status_window.x = 0 offset = 608 / KGC::MA_COL_COMMANDS if $imported["BattleDifficulty"] && @com_index[9] != nil # 難易度選択ウィンドウを作成 commands = [] $game_system.difficulty_list.each { |diff| commands.push(diff[0]) } @difficulty_window = Window_Command.new(160, commands) @difficulty_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @difficulty_window.x = [16 + @com_index[9] % KGC::MA_COL_COMMANDS * offset, 640 - @difficulty_window.width].min @difficulty_window.y = 16 + @com_index[9] / KGC::MA_COL_COMMANDS * 32 @difficulty_window.z = 2000 @difficulty_window.active = false @difficulty_window.visible = false end if $imported["ActiveCountBattle"] && @com_index[10] != nil # ウェイトモード選択ウィンドウを作成 @waitmode_window = Window_Command.new(160, KGC::MA_ACB_WAIT_MODE) @waitmode_window.back_opacity = 160 if KGC::MA_MENU_TRANSPARENT @waitmode_window.x = [16 + @com_index[10] % KGC::MA_COL_COMMANDS * offset, 640 - @waitmode_window.width].min @waitmode_window.y = 16 + @com_index[10] / KGC::MA_COL_COMMANDS * 32 @waitmode_window.z = 2000 @waitmode_window.active = false @waitmode_window.visible = false end # トランジション実行 Graphics.transition(30, "Graphics/Transitions/" + KGC::MA_MENU_TRANSITION) # メインループ loop { Graphics.update Input.update update if $scene != self break end } # トランジション準備 Graphics.freeze # ウィンドウを解放 @command_window.dispose @playtime_window.dispose @steps_window.dispose if @steps_window != nil @gold_window.dispose @status_window.dispose @info_window.dispose if @info_window != nil @difficulty_window.dispose if @difficulty_window != nil @waitmode_window.dispose if @waitmode_window != nil @spriteset.dispose if KGC::MA_MENU_TRANSPARENT end #-------------------------------------------------------------------------- # ● 無効コマンドを設定 #-------------------------------------------------------------------------- def disable_command if !$imported["PlayRecord"] && @com_index[6] != nil @command_window.disable_item(@com_index[6]) end if !($imported["LargeParty"] && $game_system.partyform_permit) && @com_index[7] != nil @command_window.disable_item(@com_index[7]) end if !$imported["SkillCPSystem"] && @com_index[8] != nil @command_window.disable_item(@com_index[8]) end if !$imported["BattleDifficulty"] && @com_index[9] != nil @command_window.disable_item(@com_index[9]) end if !$imported["ActiveCountBattle"] && @com_index[10] != nil @command_window.disable_item(@com_index[10]) end if !$imported["MonsterGuide"] && @com_index[11] != nil @command_window.disable_item(@com_index[11]) end if !$imported["Outline"] && @com_index[12] != nil @command_window.disable_item(@com_index[12]) end if !$imported["DistributeParameter"] && @com_index[13] != nil @command_window.disable_item(@com_index[13]) end # パーティ人数が 0 人の場合 if $game_party.actors.size == 0 # アイテム、スキル、装備、ステータスを無効化 @command_window.disable_item(@com_index[0]) if @com_index[0] != nil @command_window.disable_item(@com_index[1]) if @com_index[1] != nil @command_window.disable_item(@com_index[2]) if @com_index[2] != nil @command_window.disable_item(@com_index[3]) if @com_index[3] != nil end # セーブ禁止の場合 if $game_system.save_disabled && @com_index[4] != nil # セーブを無効にする @command_window.disable_item(@com_index[4]) end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # ウィンドウを更新 @command_window.update @playtime_window.update @steps_window.update if @steps_window != nil @gold_window.update @status_window.update @info_window.update if @info_window != nil @difficulty_window.update if @difficulty_window != nil @waitmode_window.update if @waitmode_window != nil # コマンドウィンドウがアクティブの場合: update_command を呼ぶ if @command_window.active update_command return end # ステータスウィンドウがアクティブの場合: update_status を呼ぶ if @status_window.active update_status return end # 難易度選択ウィンドウがアクティブの場合: update_difficulty を呼ぶ if @difficulty_window != nil && @difficulty_window.active update_difficulty return end # ウェイトモード選択ウィンドウがアクティブの場合: update_waitmode を呼ぶ if @waitmode_window != nil && @waitmode_window.active update_waitmode return end end #-------------------------------------------------------------------------- # ● フレーム更新 (コマンドウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_command # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # マップ画面に切り替え $scene = Scene_Map.new return end # C ボタンが押された場合 if Input.trigger?(Input::C) command = KGC::MA_COMMANDS[@command_window.index] # パーティ人数が 0 人で、セーブ、ゲーム終了以外のコマンドの場合 if $game_party.actors.size == 0 && command != 4 && command != 5 # ブザー SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # コマンド内容で分岐 case command when 0 # アイテム $game_system.se_play($data_system.decision_se) # アイテム画面に切り替え $scene = Scene_Item.new when 1 # スキル $game_system.se_play($data_system.decision_se) # ステータスウィンドウをアクティブにする @command_window.active = false @status_window.active = true @status_window.index = 0 when 2 # 装備 $game_system.se_play($data_system.decision_se) # ステータスウィンドウをアクティブにする @command_window.active = false @status_window.active = true @status_window.index = 0 when 3 # ステータス $game_system.se_play($data_system.decision_se) # ステータスウィンドウをアクティブにする @command_window.active = false @status_window.active = true @status_window.index = 0 when 4 # セーブ if $game_system.save_disabled $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # セーブ画面に切り替え $scene = Scene_Save.new when 5 # ゲーム終了 $game_system.se_play($data_system.decision_se) # ゲーム終了画面に切り替え $scene = Scene_End.new when 6 # プレイ記録 unless $imported["PlayRecord"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # プレイ記録画面に切り替え $scene = Scene_Record.new when 7 # パーティ編成 # ≪多人数パーティ≫を導入していない、または編成禁止の場合 if !$imported["LargeParty"] || !$game_system.partyform_permit $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # パーティ編成画面に切り替え $scene = Scene_PartyForm.new when 8 # スキル設定 unless $imported["SkillCPSystem"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # ステータスウィンドウをアクティブにする @command_window.active = false @status_window.active = true @status_window.index = 0 when 9 # 難易度変更 unless $imported["BattleDifficulty"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # 難易度選択ウィンドウをアクティブにする @command_window.active = false @difficulty_window.active = true @difficulty_window.visible = true @difficulty_window.index = $game_system.difficulty when 10 # ウェイトモード変更 unless $imported["ActiveCountBattle"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # 難易度選択ウィンドウをアクティブにする @command_window.active = false @waitmode_window.active = true @waitmode_window.visible = true @waitmode_window.index = $game_system.wait_mode when 11 # モンスター図鑑 unless $imported["MonsterGuide"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # モンスター図鑑画面に切り替え $scene = Scene_MonsterGuide.new when 12 # あらすじ unless $imported["Outline"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # あらすじ画面に切り替え $scene = Scene_Outline.new when 13 # パラメータ振り分け unless $imported["DistributeParameter"] $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # ステータスウィンドウをアクティブにする @command_window.active = false @status_window.active = true @status_window.index = 0 end # 選択コマンドを保存 $game_temp.menu_selected_index = @command_window.index return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ステータスウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_status # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # コマンドウィンドウをアクティブにする @command_window.active = true @status_window.active = false @status_window.index = -1 return end # C ボタンが押された場合 if Input.trigger?(Input::C) command = KGC::MA_COMMANDS[@command_window.index] # コマンド内容で分岐 case command when 1 # スキル if $game_party.actors[@status_window.index].restriction >= 2 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) # スキル画面に切り替え $scene = Scene_Skill.new(@status_window.index) when 2 # 装備 $game_system.se_play($data_system.decision_se) # 装備画面に切り替え $scene = Scene_Equip.new(@status_window.index) when 3 # ステータス $game_system.se_play($data_system.decision_se) # ステータス画面に切り替え $scene = Scene_Status.new(@status_window.index) when 8 # スキル設定 $game_system.se_play($data_system.decision_se) # スキル設定画面に切り替え $scene = Scene_SelectBattleSkill.new(@status_window.index) when 13 # パラメータ振り分け $game_system.se_play($data_system.decision_se) # 振り分け画面に切り替え $scene = Scene_DistributeParameter.new(@status_window.index, @command_window.index, Scene_DistributeParameter::HOST_MENU) end return end end #-------------------------------------------------------------------------- # ● フレーム更新 (難易度選択ウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_difficulty # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # コマンドウィンドウに切り替え @command_window.active = true @difficulty_window.active = false @difficulty_window.visible = false return end # C ボタンが押された場合 if Input.trigger?(Input::C) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # 難易度変更 $game_system.difficulty = @difficulty_window.index # コマンドウィンドウ再作成 @commands[@command_window.index] = Difficulty.get[0] @command_window.refresh(@commands) disable_command # コマンドウィンドウに切り替え @command_window.active = true @difficulty_window.active = false @difficulty_window.visible = false return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ウェイトモードウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_waitmode # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # コマンドウィンドウに切り替え @command_window.active = true @waitmode_window.active = false @waitmode_window.visible = false return end # C ボタンが押された場合 if Input.trigger?(Input::C) # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # ウェイトモード変更 $game_system.wait_mode = @waitmode_window.index # コマンドウィンドウ再作成 @commands[@command_window.index] = KGC::MA_ACB_WAIT_MODE[$game_system.wait_mode] @command_window.refresh(@commands) disable_command # コマンドウィンドウに切り替え @command_window.active = true @waitmode_window.active = false @waitmode_window.visible = false return end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Item #============================================================================== if KGC::MA_MENU_TRANSPARENT class Scene_Item #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- alias main_KGC_MenuAlter main def main # スプライトセットを作成 @spriteset = Spriteset_Map.new # 元の処理を実行 main_KGC_MenuAlter @spriteset.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_KGC_MenuAlter update def update @help_window.back_opacity = 160 # 元の処理を実行 update_KGC_MenuAlter end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Skill #============================================================================== if KGC::MA_MENU_TRANSPARENT class Scene_Skill #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- alias main_KGC_MenuAlter main def main # スプライトセットを作成 @spriteset = Spriteset_Map.new # 元の処理を実行 main_KGC_MenuAlter @spriteset.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_KGC_MenuAlter update def update @help_window.back_opacity = 160 # 元の処理を実行 update_KGC_MenuAlter end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Equip #============================================================================== if KGC::MA_MENU_TRANSPARENT class Scene_Equip #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- alias main_KGC_MenuAlter main def main # スプライトセットを作成 @spriteset = Spriteset_Map.new # 元の処理を実行 main_KGC_MenuAlter @spriteset.dispose end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_KGC_MenuAlter update def update @help_window.back_opacity = 160 # 元の処理を実行 update_KGC_MenuAlter end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Status #============================================================================== if KGC::MA_MENU_TRANSPARENT class Scene_Status #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- alias main_KGC_MenuAlter main def main # スプライトセットを作成 @spriteset = Spriteset_Map.new # 元の処理を実行 main_KGC_MenuAlter @spriteset.dispose end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_End #============================================================================== class Scene_End #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- if KGC::MA_MENU_TRANSPARENT alias main_KGC_MenuAlter main def main # スプライトセットを作成 @spriteset = Spriteset_Map.new # 元の処理を実行 main_KGC_MenuAlter @spriteset.dispose end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # コマンドウィンドウを更新 @command_window.update # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュー画面に切り替え index = KGC::MA_COMMANDS.index(5) if index != nil $scene = Scene_Menu.new(index) else $scene = Scene_Menu.new end return end # C ボタンが押された場合 if Input.trigger?(Input::C) # コマンドウィンドウのカーソル位置で分岐 case @command_window.index when 0 # タイトルへ command_to_title when 1 # シャットダウン command_shutdown when 2 # やめる command_cancel end return end end end