#============================================================================== # 「セルフスイッチ操作ぷらす」(ACE) ver1.1 by奈々 # # ◇使用規約 # 使用される場合はスクリプト作成者として「奈々」を明記して下さい。 # このスクリプトを改変したり、改変したものを配布するなどは自由ですが # その場合も元のスクリプトの作成者として名前は載せて下さい。 # #------------------------------------------------------------------------------ # # イベントでセルフスイッチを自在に切り替えるスクリプトです。 # 他のマップ、好きなイベントのセルフスイッチを操作可能なだけでなく # 全てのマップ、全てのイベントといった指定も行えます。 # # また、おまけとして # 指定したスイッチ/変数を一括で変えるコマンド # 指定したスイッチ/変数以外を一括で変えるコマンドが追加されます。 # # # ◇使用方法 # イベントコマンドの「スクリプト」から呼び出す。 # # ・セルフスイッチの操作 # adv_self_switches(マップID, イベントID, "スイッチ名", true / false) # # 例1: # adv_self_switches(1, 1, "A", true) # マップ1番のイベント1番のセルフスイッチAをonにする。 # # 例2:[]で指定することで、複数のIDを指定できる。 # adv_self_switches([1,2,3], 1, "A", true) # マップ1番と2番と3番のイベント1番のセルフスイッチAをonにする。 # adv_self_switches(1, [2,5], ["A","C"], true) # マップ1番のイベント2番と5番のセルフスイッチACをonにする。 # # 例3:"all"を指定することで、全てのIDを指定できる。 # adv_self_switches("all", 1, "A", true) # 全てのマップのイベント1番のセルフスイッチAをonにする。 # adv_self_switches(1, "all", "all", true) # マップ1番の全てのイベントのセルフスイッチABCDをonにする。 # adv_self_switches("all", "all", "all", false) # 全てのセルフスイッチをoffにする。 # # ・スイッチ/変数の一括操作 # adv_switches(スイッチID, true / false) # adv_switches_rev(スイッチID, true / false) # adv_variables(変数ID, 数値) # adv_variables_rev(変数ID, 数値) # # IDは[]で複数指定可能。指定したIDを一括操作する。 # revの方は指定したID「以外」を一括操作する。 # #============================================================================== #============================================================================== # ■ Game_Interpreter #------------------------------------------------------------------------------ # イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、 # Game_Troop クラス、Game_Event クラスの内部で使用されます。 #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● スイッチの上級操作 #-------------------------------------------------------------------------- def adv_switches(list, value) if list.is_a?(Numeric) list = [list] end $data_system.switches.each_index {|index| next if index == 0 next if !list.include?(index) $game_switches[index] = value } end def adv_switches_rev(list, value) if list.is_a?(Numeric) list = [list] end $data_system.switches.each_index {|index| next if index == 0 next if list.include?(index) $game_switches[index] = value } end #-------------------------------------------------------------------------- # ● 変数の上級操作 #-------------------------------------------------------------------------- def adv_variables(list, value) if list.is_a?(Numeric) list = [list] end $data_system.variables.each_index {|index| next if index == 0 next if !list.include?(index) $game_variables[index] = value } end def adv_variables_rev(list, value) if list.is_a?(Numeric) list = [list] end $data_system.variables.each_index {|index| next if index == 0 next if list.include?(index) $game_variables[index] = value } end #-------------------------------------------------------------------------- # ● セルフスイッチの上級操作 #-------------------------------------------------------------------------- def adv_self_switches(map_id, event_id, channel, value) #チャンネルのセット if channel == "all" channel = ["A","B","C","D"] elsif channel.is_a?(String) channel = [channel] end #マップIDのセット if map_id == "all" map_id = [] $data_mapinfos.each_key{|key| map_id += [key] } elsif map_id.is_a?(Numeric) map_id = [map_id] end map_id.each{|mi| #イベントIDのセット(マップ毎) if event_id == "all" event_id2 = [] map = load_data(sprintf("Data/Map%03d.rvdata2", mi)) map.events.each_key{|key| event_id2 += [key] } elsif event_id.is_a?(Numeric) event_id2 = [event_id] else event_id2 = event_id end event_id2.each{|ei| channel.each{|ch| $game_self_switches[[mi, ei, ch]] = value } } } end end