#============================================================================== # ■ RGSS3 マップ移動時のスイッチ/変数自動変更 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # マップ移動時に、指定したスイッチを自動的にONもしくはOFFにしたり # 変数IDの値が指定した範囲内で変更される仕組みを作ります。 # また、そのスイッチ/変数を「スイッチの操作」や #「変数の操作」のイベントコマンドで変更できなくする機能を持ちます。 # # 下記のスイッチ指定と変数指定は必ず確認/設定の上でご利用下さい。 #============================================================================== module MAP_CHANGE_VC #マップ移動で自動的に変更するスイッチを指定します。 #指定方法は以下のようにして下さい。 #[1,true] #この場合は、スイッチID1は、マップ移動の度に自動的にtrueになります。 #複数指定する場合は、「,」で区切って下さい。 #機能を無効にする場合は最初の「 [ 」と最後の「 ] 」だけ残して #空欄にして置いて下さい。 SWITCHES = [ [1,true], [2,false] ] #上記で設定を行ったスイッチには #イベントコマンドでの変更を無効にするかを設定します。 #trueで無効、falseで有効です。 #(ゲーム制作中に本スクリプトを入れた為 # 本来のスイッチ処理が邪魔になったが # 該当スイッチの設定箇所が多すぎて変更が面倒……という場合に使用して下さい) SCEV_SEAL = false #マップ移動で自動的に変更する変数を指定します。 #指定方法は以下のようにして下さい。 #[1,1,99] #この場合は、変数ID1に、1に0〜99までの数値を #ランダムに1度足した数字を代入します。 #(つまり、1〜100のランダム) #複数指定する場合は、「,」で区切って下さい。 #機能を無効にする場合は最初の「 [ 」と最後の「 ] 」だけ残して #空欄にして置いて下さい。 VARIABLES = [ [11,1,99], [12,1,99] ] #上記で設定を行った変数には #イベントコマンドでの変更を無効にするかを設定します。 #trueで無効、falseで有効です。 #(ゲーム制作中に本スクリプトを入れた為 # 本来の変数処理が邪魔になったが # 該当変数の設定箇所が多すぎて変更が面倒……という場合に使用して下さい) VCEV_SEAL = true end class Game_Map #-------------------------------------------------------------------------- # ● セットアップ #-------------------------------------------------------------------------- alias setup_variables_reset setup def setup(map_id) #マップセットアップ時に自動的にスイッチを変更する if MAP_CHANGE_VC::SWITCHES.size > 0 MAP_CHANGE_VC::SWITCHES.each do |s| $game_switches[s[0]] = s[1] end end #マップセットアップ時に自動的に変数を変更する if MAP_CHANGE_VC::VARIABLES.size > 0 MAP_CHANGE_VC::VARIABLES.each do |v| $game_variables[v[0]] = v[1] + rand(v[2] + 1) end end #元の処理を実行 setup_variables_reset(map_id) end end class Game_Interpreter #やむを得ずスイッチ処理を再定義 def command_121 (@params[0]..@params[1]).each do |i| #通常のイベントコマンドによる #該当のスイッチIDへの干渉が認められていない場合処理を飛ばす。 next if MAP_CHANGE_VC::SCEV_SEAL && $game_temp.seal_switches.include?(i) $game_switches[i] = (@params[2] == 0) end end alias operate_variable_seal operate_variable def operate_variable(variable_id, operation_type, value) #通常のイベントコマンドによる #該当の変数IDへの干渉が認められていない場合こちらの処理も行う。 if MAP_CHANGE_VC::VCEV_SEAL return if $game_temp.seal_variables.include?(variable_id) end operate_variable_seal(variable_id, operation_type, value) end end class Game_Temp def seal_switches #キャッシュがある場合はそれを返す。 return @seal_switches if @seal_switches != nil #干渉を封印された変数の配列を作成。 @seal_switches = [] if !MAP_CHANGE_VC::SWITCHES.empty? MAP_CHANGE_VC::SWITCHES.each do |s| @seal_switches.push(s[0]) end end #配列を返す。 return @seal_switches end def seal_variables #キャッシュがある場合はそれを返す。 return @seal_variables if @seal_variables != nil #干渉を封印された変数の配列を作成。 @seal_variables = [] if !MAP_CHANGE_VC::VARIABLES.empty? MAP_CHANGE_VC::VARIABLES.each do |v| @seal_variables.push(v[0]) end end #配列を返す。 return @seal_variables end end