=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--------------------------
ろかん [url]http://kaisou-ryouiki.sakura.ne.jp/[/url]
=end
module PUBLIC_DATA
#----------------------------------------------------------------------------
# ● 設定箇所ここから
#----------------------------------------------------------------------------
# 共有するスイッチ番号 (例 : SWITCH = [3, 7, 12])
SWITCH = []
# 共有する変数番号 (例 : VARIABLE = [1, 6])
VARIABLE = []
# 通常のセーブと同時に共有データのセーブも行うかどうか(true/ false)
S_AUTOSAVE = true
# シャットダウンと同時に共有データのセーブも行うかどうか(true/ false)
D_AUTOSAVE = true
#==========================================================================
# ● 以下、スクリプトが少しわかる人向け設定箇所
#==========================================================================
# 共有する変数の書き込み
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