#============================================================================== # ○RGSS2 似非イベントテスト #作成者:riru/ガラス細工の夢幻 #http://garasuzaikunomugen.web.fc2.com/index.html #MVのように指定したイベントを再生するスクリプトです。 #ゴリ押し感半端ないので、各自使いやすいように改造して配布しちゃってください #<使い方> #下のカスタマイズ項目に確認したいイベントの情報を入れて、RIRU_EVENT_TESTをtrueにしてテストプレイをしてください。 #RIRU_EVENT_TESTがfalseなら通常のテストプレイになります。 #最初に起動するコモンイベントは立ち絵の座標など最初に設定するようなものを入れて指定しておくと便利です。 #特になければ0にしてください。 #指定したページと出現条件が同じでページ切り替えが入っていない場合などは場所移動するまで起動しなかったりします #(もちろん通常のテストプレイ及びプレイでは起こりません。) # #*更新履歴* #2016/9/16 公開 #2017/8/25 テストするイベントのグラフィックがテストするイベントページに合わせるように修正。 #2017/8/28 プレイヤーから接触、イベントから接触の場合エラーになる不具合を修正。 #============================================================================== #============================================================================ # ■ カスタマイズ項目 #============================================================================ RIRU_EVENT_TEST = true#イベントテストをするか?する:true しない:false RIRU_TEST_MAP_VAR = 38#テストのマップID RIRU_TEST_EVENT_VAR =12#テストのイベントID RIRU_TEST_EVENT_PAGE = 0#テストのイベントページ(実際のページ番号-1) RIRU_TEST_PLAYER_X = 6#テストのプレイヤーのX RIRU_TEST_PLAYER_Y = 8#テストのプレイヤーのY RIRU_TEST_EVENT_COMMON = 33#テスト最初に起動するコモンイベントID #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● 起動中イベントのセットアップ #-------------------------------------------------------------------------- def setup_starting_event_test if $game_map.need_refresh # 必要ならマップをリフレッシュ $game_map.refresh end if $game_temp.common_event_id > 0 # コモンイベントの呼び出し予約? setup($data_common_events[$game_temp.common_event_id].list) $game_temp.common_event_id = 0 return end event =$game_map.events[RIRU_TEST_EVENT_VAR] # マップイベント return if event ==nil if event.starting # 起動中のイベントが見つかった場合 event.clear_starting # 起動中フラグをクリア setup(event.list, event.id) # イベントをセットアップ return end for event in $game_map.events.values # マップイベント if $TEST and RIRU_EVENT_TEST and event == $game_map.events[RIRU_TEST_EVENT_VAR] if event.starting # 起動中のイベントが見つかった場合 event.clear_starting # 起動中フラグをクリア setup(event.list, event.id) # イベントをセットアップ return end end end for event in $data_common_events.compact # コモンイベント if event.trigger == 1 and # トリガーが自動実行かつ $game_switches[event.switch_id] == true # 条件スイッチが ON の場合 setup(event.list) # イベントをセットアップ return end end end end #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理 # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。 #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● イベント起動 #-------------------------------------------------------------------------- def eventtest_start(list,trigger) refreshtest @list = list @trigger = trigger return if @list.size <= 1 # 実行内容が空? @starting = true lock if @trigger < 3 $game_map.interpreter.setup_starting_event_test end #-------------------------------------------------------------------------- # ● ぺーじ #-------------------------------------------------------------------------- def pages return @event.pages end #-------------------------------------------------------------------------- # ● リフレッシュhajime #-------------------------------------------------------------------------- def refreshtest new_page = nil unless @erased # 一時消去されていない場合 for page in @event.pages.reverse # 番号の大きいページから順に next unless conditions_met?(page) # 条件合致判定 new_page = page break end end refreshitems(new_page) check_event_trigger_auto # 自動イベントの起動判定 end end #-------------------------------------------------------------------------- # ● 変数設定 #-------------------------------------------------------------------------- def refreshitems(new_page) if new_page != @event.pages[RIRU_TEST_EVENT_PAGE] # イベントページが変わった? clear_starting # 起動中フラグをクリア setup(new_page) # イベントページをセットアップ if new_page == nil @tile_id = 0 @character_name = "" @character_index = 0 @move_type = 0 @through = true @trigger = nil @list = nil @interpreter = nil else new_page = @event.pages[RIRU_TEST_EVENT_PAGE] if RIRU_EVENT_TEST == true&&@event.pages[RIRU_TEST_EVENT_PAGE]!=nil @tile_id = new_page.graphic.tile_id @character_name = new_page.graphic.character_name @character_index = new_page.graphic.character_index if @original_direction != new_page.graphic.direction @direction = new_page.graphic.direction @original_direction = @direction @prelock_direction = 0 end if @original_pattern != new_page.graphic.pattern @pattern = new_page.graphic.pattern @original_pattern = @pattern end @move_type = new_page.move_type @move_speed = new_page.move_speed @move_frequency = new_page.move_frequency @move_route = new_page.move_route @move_route_index = 0 @move_route_forcing = false @walk_anime = new_page.walk_anime @step_anime = new_page.step_anime @direction_fix = new_page.direction_fix @through = new_page.through @priority_type = new_page.priority_type @trigger = new_page.trigger @list = new_page.list @interpreter = nil if @trigger == 4 # トリガーが [並列処理] の場合 @interpreter = Game_Interpreter.new # 並列処理用インタプリタを作成 end end end end #============================================================================== # ■ Scene_Title #------------------------------------------------------------------------------ #  タイトル画面の処理を行うクラスです。 #============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● メイン処理 #-------------------------------------------------------------------------- def main if $BTEST # 戦闘テストの場合 battle_test # 戦闘テストの開始処理 elsif $TEST and RIRU_EVENT_TEST # イベントテストの場合 event_test # イベントテストの開始処理 else # 通常のプレイの場合 super # 本来のメイン処理 end end #-------------------------------------------------------------------------- # ● テスト #-------------------------------------------------------------------------- def event_test load_database # データベースをロード create_game_objects # ゲームオブジェクトを作成 confirm_player_location $game_party.setup_starting_members # 初期パーティ $game_map.setup(RIRU_TEST_MAP_VAR) # 初期位置のマップ $game_player.moveto(RIRU_TEST_PLAYER_X, RIRU_TEST_PLAYER_Y) $game_player.refresh $scene = Scene_Map.new RPG::BGM.fade(1500) Graphics.fadeout(60) Graphics.wait(40) Graphics.frame_count = 0 RPG::BGM.stop $game_map.autoplay $game_map.refresh p_list = $game_map.events[RIRU_TEST_EVENT_VAR].pages[RIRU_TEST_EVENT_PAGE].list if RIRU_TEST_EVENT_COMMON != 0 unless $data_common_events[RIRU_TEST_EVENT_COMMON].list.size <= 1 common_list = $data_common_events[RIRU_TEST_EVENT_COMMON].list for list in common_list.reverse p_list.unshift(list) end end end $game_map.events[RIRU_TEST_EVENT_VAR].eventtest_start(p_list,$game_map.events[RIRU_TEST_EVENT_VAR].pages[RIRU_TEST_EVENT_PAGE].trigger) end end