Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- =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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement