#============================================================================== # ■ RGSS3 シーン遷移時クイックコモンイベント Ver1.01 by 星潟 #------------------------------------------------------------------------------ # このスクリプトは前提スクリプトとして # 「RGSS3 クイックコモンイベント」が必要です。 # シーン終了時、どのシーンからどのシーンに移るかによって # 瞬間的に指定したコモンイベントをクイックコモンイベントとして実行します。 #============================================================================== module SceneEndInterpreter #空のハッシュを用意。(変更不要) P = {} A = {} #-------------------------------------------------------------------------- # 指定シーンに移る時にイベント発生(変更不要) #-------------------------------------------------------------------------- def self.pset(scene_name,common_event_id,pre_scene = nil) P[scene_name] ||= [] P[scene_name].push([common_event_id,pre_scene]) end #-------------------------------------------------------------------------- # 指定シーンから移る時にイベント発生(変更不要) #-------------------------------------------------------------------------- def self.aset(scene_name,common_event_id,current_scene = nil) A[scene_name] ||= [] A[scene_name].push([common_event_id,current_scene]) end #指定シーンに移る時に発生させるコモンイベントを指定(複数指定可能) #例1.pset("Scene_Menu",5) #この場合、Scene_Menu、つまりメニュー画面に移る時に #コモンイベントID5をクイックコモンイベントとして実行する #例2.pset("Scene_Menu",5,"Scene_Map") #この場合、Scene_Menu、つまりメニュー画面に移る時 #直前がマップ画面である場合に限り #コモンイベントID5をクイックコモンイベントとして実行する pset("Scene_Menu",5,"Scene_Map") #指定シーンから離れる時に発生させるコモンイベントを指定(複数指定可能) #例1.aset("Scene_Menu",6) #この場合、Scene_Menu、つまりメニュー画面から離れる時に #コモンイベントID6をクイックコモンイベントとして実行する #例2.aset("Scene_Menu",6,"Scene_Map") #この場合、Scene_Menu、つまりメニュー画面から離れる時に #次の画面がマップ画面である場合に限り #コモンイベントID6をクイックコモンイベントとして実行する aset("Scene_Menu",6,"Scene_Map") end module SceneManager #-------------------------------------------------------------------------- # 現在クラスの名称 #-------------------------------------------------------------------------- def self.temp_int_current_class_name @scene ? @scene.class.to_s : nil end end class Scene_Base #-------------------------------------------------------------------------- # 終了処理 #-------------------------------------------------------------------------- alias terminate_scene_temp_interpreter terminate def terminate terminate_scene_temp_interpreter a = SceneEndInterpreter::A[self.class.to_s] if a a.each {|v| if v && (!v[1] or v[1] == SceneManager.temp_int_current_class_name) quick_common_event_execute(v[0]) end} end a = SceneEndInterpreter::P[SceneManager.temp_int_current_class_name] if a a.each {|v| if v && (!v[1] or v[1] == self.class.to_s) quick_common_event_execute(v[0]) end} end end end