#◆◇◆◇◆ 条件スイッチ拡張スクリプト ver 1.01 ◇◆◇◆◇ # 全マスタースクリプト共通スクリプト # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin ※ 導入場所の注意 マスタースクリプトに近い場所で、且つシステム上部。 □ 更新履歴 ○ ver 1.01 (2009/01/01) 拡張条件にスクリプトを追加 ページ条件にスクリプトを追加できます ■説明 イベントの発生条件スイッチを、 デフォルトの2つから、無制限に拡張します。 これにより、より複雑なイベントを組みやすくします。 設定にはイベントの内容に、 「どこでもいいので注釈を設定」し、 SW1 といったように SW任意の数値 と入力してください。 スクリプトの場合は \$game_party.gold >= 1 といったように、 \ の後に任意のコードを記入してください。 ただし、何らかのスイッチがオンになるか、 場所を移動しない限り、スクリプトのみでは開始されません。 拡張条件は「1つの注釈で」4つまで設定できます。 SW1 SW2 \$game_party.gold >= 1 といった記述も可能です。 注釈を増やせば、いくらでも設定することが可能です。 原則、判定は「そのスイッチがONの場合」です。 スクリプト判定の設定 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # 条件スイッチ拡張スクリプトを有効化 ( true で有効 / false で無効 ) RGSS["条件スイッチ拡張"] = true end # 条件スイッチ拡張スクリプトが有効な場合に以降の処理を実行する if MINTO::RGSS["条件スイッチ拡張"] == true then #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理 # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。 #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh # ローカル変数 new_page を初期化 new_page = nil # 一時消去されていない場合 unless @erased # 番号の大きいイベントページから順に調べる for page in @event.pages.reverse # イベント条件を c で参照可能に c = page.condition # スイッチ 1 条件確認 if c.switch1_valid if $game_switches[c.switch1_id] == false next end end # スイッチ 2 条件確認 if c.switch2_valid if $game_switches[c.switch2_id] == false next end end # そのページにイベントリストが存在する場合 if page.list != nil then # 拡張スイッチ判定用のローカル変数 break_flag = false switch_clear = 0 # スクリプト評価用のローカル変数 result = nil # ループ処理 (0...page.list.size).each do |i| # 注釈の場合 if page.list[i].code == 108 or page.list[i].code == 408 then # 注釈内ループ処理 (0...page.list[i].parameters.size).each do |id| # 拡張スイッチ記号を取得 s_id = page.list[i].parameters[id].split(/SW/)[1].to_i # スイッチが有効な場合 if s_id >= 1 then # 拡張スイッチ数を加算 switch_clear += 1 # そのスイッチが無効な場合 if $game_switches[s_id] == false then # 条件不成立 break_flag |= true end end # 条件 スクリプト を取得 script = page.list[i].parameters[id].split(/\\/)[1] # スクリプトコードが有効な場合 if script != nil # 条件を評価 result = eval(script) end end end end # 拡張スイッチ数が1以上で、条件不成立の場合 if switch_clear >= 1 and break_flag == true then # 次の処理へ移行 next end # スクリプトでの評価が無効な場合 if result == false then # 次の処理へ移行 next end end # 変数 条件確認 if c.variable_valid if $game_variables[c.variable_id] < c.variable_value next end end # セルフスイッチ 条件確認 if c.self_switch_valid key = [@map_id, @event.id, c.self_switch_ch] if $game_self_switches[key] != true next end end # ローカル変数 new_page を設定 new_page = page # ループを抜ける break end end # 前回と同じイベントページの場合 if new_page == @page # メソッド終了 return end # @page に現在のイベントページを設定 @page = new_page # 起動中フラグをクリア clear_starting # 条件を満たすページがない場合 if @page == nil # 各インスタンス変数を設定 @tile_id = 0 @character_name = "" @character_hue = 0 @move_type = 0 @through = true @trigger = nil @list = nil @interpreter = nil # メソッド終了 return end # 各インスタンス変数を設定 @tile_id = @page.graphic.tile_id @character_name = @page.graphic.character_name @character_hue = @page.graphic.character_hue if @original_direction != @page.graphic.direction @direction = @page.graphic.direction @original_direction = @direction @prelock_direction = 0 end if @original_pattern != @page.graphic.pattern @pattern = @page.graphic.pattern @original_pattern = @pattern end @opacity = @page.graphic.opacity @blend_type = @page.graphic.blend_type @move_type = @page.move_type @move_speed = @page.move_speed @move_frequency = @page.move_frequency @move_route = @page.move_route @move_route_index = 0 @move_route_forcing = false @walk_anime = @page.walk_anime @step_anime = @page.step_anime @direction_fix = @page.direction_fix @through = @page.through @always_on_top = @page.always_on_top @trigger = @page.trigger @list = @page.list @interpreter = nil # トリガーが [並列処理] の場合 if @trigger == 4 # 並列処理用インタプリタを作成 @interpreter = Interpreter.new end # 自動イベントの起動判定 check_event_trigger_auto end end end