#============================================================================== # ■ セーブ選択制限 Ver 1.01                      By むー #------------------------------------------------------------------------------ # セーブに制限を設けます。 # おそらくセーブ・ロード画面レイアウトの素材には対応できるのでは、と思います。 #------------------------------------------------------------------------------ # # ★簡単な仕様★ # # ロードしたファイルにしか保存できないようにします。 # ニューゲーム後、1度もセーブ/ロードをせずにで本機能を使うと、 # インデックス0番にしか保存できません。 # 変数の値が0というのが、何の処置もしていない変数の初期値なのか、 # インデックス0番を指定したのか判断が付かないので、そうしました。 #  # セーブ・ロード画面のレイアウト素材を使用する場合、 # 本スクリプトはそれよりも下へ置いてください。 # # ★使用例★ # # [1] イベントでセーブ制限スイッチをONにする。 # [2] イベントでセーブ画面を開く。 # [3] イベントでセーブ制限スイッチをOFFにする。 # #============================================================================== $moo_save_limit = true module MOO_SAVE_LIMIT #-------------------------------------------------------------------------- # 以下、設定箇所です。 #-------------------------------------------------------------------------- # この機能を使う場合のスイッチ番号 LIMIT_SWITCH = 1 # このスクリプト用のスイッチを1つ用意してください。 # 選択したファイルインデックスを格納する変数番号 INDEX_VAL = 1 # このスクリプト用の変数を1つ用意してください。 # 例外時のファイルインデックス DEFAULT_VAL = 0 # 以下の場合に指定するインデックスです。 # インデックスは、1つめのファイルが0、2つめが1…になります。 # ・変数に何も入っていない場合 (VX Aceの仕様上ありえないかも?) # ・変数格納インデックスが0未満の場合 (VX Aceの仕様上ありえないかも?) # ・変数格納インデックスが上限を上回る場合 (素材による) # ロードファイル以外のインデックスを選択時にヘルプウィンドウへ表示する文字 NOT_WORD = "\eC[10]このファイルへは保存できません。" # \eC[n]で、文字の色を変更できます。nはシステムカラー番号です。 # システムカラーは、素材管理からGraphics/System/Windowの右下にある色です。 # 左上から0、右に行くと1〜となっています。 #-------------------------------------------------------------------------- # ここまで。 #-------------------------------------------------------------------------- end #============================================================================== # ■ Scene_File #------------------------------------------------------------------------------ #  セーブ画面とロード画面の共通処理を行うクラスです。 #============================================================================== class Scene_File < Scene_MenuBase #-------------------------------------------------------------------------- # ○ 実行判断スイッチ #-------------------------------------------------------------------------- def limit_switch $game_switches[MOO_SAVE_LIMIT::LIMIT_SWITCH] end #-------------------------------------------------------------------------- # ○ インデックスの設定 #-------------------------------------------------------------------------- def limit_index def_val = MOO_SAVE_LIMIT::DEFAULT_VAL sw_indx = MOO_SAVE_LIMIT::INDEX_VAL return def_val if $game_variables[sw_indx] == nil return def_val if $game_variables[sw_indx] < top_index return def_val if $game_variables[sw_indx] > bottom_index return $game_variables[sw_indx] end #-------------------------------------------------------------------------- # ◎ カーソルの更新 #-------------------------------------------------------------------------- alias moo_save_limit_update_cursor update_cursor def update_cursor # 実行スイッチがオンかつセーブ画面かつインデックスが相違かどうか if @index != limit_index and @save_scene and limit_switch # ヘルプウィンドウの文字を変更 @help_window.set_text(MOO_SAVE_LIMIT::NOT_WORD + "\eC[0]") else # ヘルプウィンドウの文字を通常通りにする @help_window.set_text(help_window_text) end moo_save_limit_update_cursor end end #============================================================================== # ■ Scene_Save #------------------------------------------------------------------------------ #  セーブ画面の処理を行うクラスです。 #============================================================================== class Scene_Save < Scene_File #-------------------------------------------------------------------------- # ◎ 最初に選択状態にするファイルインデックスを取得 #-------------------------------------------------------------------------- alias moo_save_limit_first_savefile_index first_savefile_index def first_savefile_index # セーブ画面であるフラグを立てる @save_scene = true moo_save_limit_first_savefile_index end #-------------------------------------------------------------------------- # ◎ セーブファイルの決定 #-------------------------------------------------------------------------- alias moo_save_limit_on_savefile_ok on_savefile_ok def on_savefile_ok # 実行スイッチがオンかつインデックスが相違の場合 if @index != limit_index and limit_switch # ブザーを鳴らしてセーブ処理をしない Sound.play_buzzer return end moo_save_limit_on_savefile_ok end #-------------------------------------------------------------------------- # ◎ セーブ成功時の処理 #-------------------------------------------------------------------------- alias moo_save_limit_on_save_success on_save_success def on_save_success # 保存したファイルインデックスを変数へ格納 $game_variables[MOO_SAVE_LIMIT::INDEX_VAL] = @index $game_switches[MOO_SAVE_LIMIT::LIMIT_SWITCH] = false moo_save_limit_on_save_success end end #============================================================================== # ■ Scene_Load #------------------------------------------------------------------------------ #  ロード画面の処理を行うクラスです。 #============================================================================== class Scene_Load < Scene_File #-------------------------------------------------------------------------- # ◎ 最初に選択状態にするファイルインデックスを取得 #-------------------------------------------------------------------------- alias moo_save_limit_first_savefile_index first_savefile_index def first_savefile_index # セーブ画面であるフラグを解除 @save_scene = false moo_save_limit_first_savefile_index end #-------------------------------------------------------------------------- # ● セーブファイルの決定 #-------------------------------------------------------------------------- def on_savefile_ok super if DataManager.load_game(@index) # 変数にインデックスを保持 $game_variables[MOO_SAVE_LIMIT::INDEX_VAL] = @index on_load_success else Sound.play_buzzer end end end