=begin    ★ゲーム内共有変数★ 設定箇所で指定したスイッチと変数を、 セーブファイルの違いなど関係なく、ゲーム全体で共有します。 素材の一番下に挿入することをオススメします。 ● 仕様 ●========================================================== スクリプト導入後にセーブするとゲームフォルダ内に新しく "PublicData" というrvdataファイルが自動的に作成されます。 -------------------------------------------------------------------- 共有データセーブのタイミングは、通常のセーブ時&シャットダウン時(設定可)、 共有データロードのタイミングは、通常のロード時&ゲーム立ち上げ時です。 -------------------------------------------------------------------- ゲーム立ち上げ時にも共有データファイルをロードするため、 タイトル画面にも変数やスイッチが反映されます。 ==================================================================== ● 注意 ●========================================================== PublicData.rvdataが作成された後に、このスクリプトの設定を変更した場合、 ロード時にエラーを吐くことがあります。 その場合は、古いPublicData.rvdataを削除してからゲームを起動してください。 ==================================================================== ● イベントについて ●============================================== イベントコマンドのスクリプトに、 PUBLIC_DATA.write_public_data と記述すると、任意のタイミングで共有データのセーブを行うことができます。 エンディング時などにどうぞ。 -------------------------------------------------------------------- また、この記述をスクリプトエディタの任意の箇所にすると、 そのタイミングで共有データのセーブを行います。 戦闘終了後強制セーブなど、スクリプトができる人はどうぞ改造に。 ==================================================================== ※「スクリプト内グローバル変数」の部分に限り、 サポート対象外とさせていただきます。ゴメンネ。 ver1.01 Last Update : 2011/12/14 12/14 : ソースコードの見直し ----------------------2011-------------------------- 04/08 : 新規 ----------------------2009-------------------------- ろかん   http://kaisou-ryouiki.sakura.ne.jp/ =end module PUBLIC_DATA #---------------------------------------------------------------------------- # ● 設定箇所ここから #---------------------------------------------------------------------------- # 共有するスイッチ番号 (例 : SWITCH = [3, 7, 12]) SWITCH = [294,296,293,292,295,290,291,319] # 共有する変数番号 (例 : VARIABLE = [1, 6]) VARIABLE = [92,93,98,99,100] # 通常のセーブと同時に共有データのセーブも行うかどうか(true/ false) S_AUTOSAVE = true # シャットダウンと同時に共有データのセーブも行うかどうか(true/ false) D_AUTOSAVE = false #========================================================================== # ● 以下、スクリプトが少しわかる人向け設定箇所 #========================================================================== # 共有する変数の書き込み def self.public_script_global_variable_save(file_name) # Marshal.dump($abc, file_name) # このような形で追加 $abcの部分を変更 end # 共有する変数の読み込み def self.public_script_global_variable_load(file_name) # $abc = Marshal.load(file_name) # このような形で追加 $abcの部分を変更 end #---------------------------------------------------------------------------- # ● 設定箇所ここまで #---------------------------------------------------------------------------- end $rsi ||= {} $rsi["ゲーム内共有変数"] = true #============================================================================== # ■ PUBLIC_DATA #------------------------------------------------------------------------------ #  共有データの書き込み、読み込みを実行するモジュール #============================================================================== module PUBLIC_DATA # 共有データファイル名 FILE_NAME = "PublicData" #-------------------------------------------------------------------------- # ● 共有データの書き込み #-------------------------------------------------------------------------- def self.write_public_data file = File.open("#{FILE_NAME}.rvdata", "wb") $public ||= {} $public[0] = SWITCH $public[1] = VARIABLE Marshal.dump($public, file) $public[0].each{|i| Marshal.dump($game_switches[i], file)} $public[1].each{|i| Marshal.dump($game_variables[i], file)} public_script_global_variable_save(file) file.close end #-------------------------------------------------------------------------- # ● 共有データの読み込み #-------------------------------------------------------------------------- def self.read_public_data if File.exist?("#{FILE_NAME}.rvdata") file = File.open("#{FILE_NAME}.rvdata", "rb") $public = Marshal.load (file) $public[0].each{|i| $game_switches[i] = Marshal.load(file) if SWITCH.include?(i) } $public[1].each{|i| $game_variables[i] = Marshal.load(file) if VARIABLE.include?(i) } public_script_global_variable_load(file) file.close end end end class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● 各種ゲームオブジェクトの作成 #-------------------------------------------------------------------------- alias public_data_create_game_objects create_game_objects def create_game_objects public_data_create_game_objects PUBLIC_DATA.read_public_data end #-------------------------------------------------------------------------- # ● コマンド : シャットダウン #-------------------------------------------------------------------------- alias public_data_command_shutdown command_shutdown def command_shutdown PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE public_data_command_shutdown end end class Scene_File < Scene_Base #-------------------------------------------------------------------------- # ● セーブの実行 #-------------------------------------------------------------------------- alias pablic_save do_save def do_save PUBLIC_DATA.write_public_data if PUBLIC_DATA::S_AUTOSAVE pablic_save end #-------------------------------------------------------------------------- # ● ロードの実行 #-------------------------------------------------------------------------- alias pablic_load do_load def do_load pablic_load PUBLIC_DATA.read_public_data end end class Scene_End < Scene_Base #-------------------------------------------------------------------------- # ● コマンド [シャットダウン] 選択時の処理 #-------------------------------------------------------------------------- alias shutdown_public_save command_shutdown def command_shutdown PUBLIC_DATA.write_public_data if PUBLIC_DATA::D_AUTOSAVE shutdown_public_save end end