#============================================================================== # イベントランダム配置 ver1.03 #------------------------------------------------------------------------------ #[特徴] # 特定のイベントを特定のリージョンにランダムに配置します。 # #[使用方法] # イベント名に <ランダム配置> と書く。 # また、 と書くとリージョンID1に配置します。 # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net/ # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== #============================================================================== # バージョンアップ情報 # ver1.03 イベントを正しく配置できないバグを修正 # ver1.02 ランダムに配置したイベントの記録を任意のタイミングでクリアできるように # ver1.01 ランダムに配置したイベントが重ならないように改善 # ver1.00 公開 #============================================================================== #============================================================================== # 設定項目 #============================================================================== module Kazari module EventRandomSetup # イベント名に 等、書かなかった場合、 # 下記の数値のリージョンに配置します。 REGION_ID = 2 # ランダムに配置したイベントの記録をクリアするタイミング # true : マップ移動時に自動でクリアする。 # false : イベントコマンドで「clear_random_set_event」 AUTO_CLEAR = false # clear_random_set_event : すべてのマップの記録をクリア # clear_random_set_event(map_id) : 指定したマップIDの記録のみクリア end end #============================================================================== # ここまで #============================================================================== $kzr_imported = {} if $kzr_imported == nil $kzr_imported["EventRandomSetup"] = true #============================================================================== # ■ Game_System #============================================================================== class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :event_pos #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias kzr_event_random_setup_initialize initialize def initialize kzr_event_random_setup_initialize @event_pos = [] end #-------------------------------------------------------------------------- # ● イベントの配置記録をクリアする #-------------------------------------------------------------------------- def clear_random_set_event(map_id = nil) if map_id @event_pos[map_id].clear else @event_pos = [] end end end #============================================================================== # ■ Game_Map #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ● セットアップ #-------------------------------------------------------------------------- alias kzr_event_random_setup setup def setup(map_id) $game_system.clear_random_set_event if @map_id != map_id && Kazari::EventRandomSetup::AUTO_CLEAR kzr_event_random_setup(map_id) end end #============================================================================== # ■ Game_Event #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias kzr_event_random_setup_initialize initialize def initialize(map_id, event) kzr_event_random_setup_initialize(map_id, event) $game_system.event_pos[map_id] = [] unless $game_system.event_pos[map_id] if $game_system.event_pos[map_id][@id] x = $game_system.event_pos[map_id][@id][0] y = $game_system.event_pos[map_id][@id][1] moveto(x, y) elsif event.name =~ /<ランダム配置>/i region_id = Kazari::EventRandomSetup::REGION_ID region_id = $1.to_i if //i =~ event.name map = $game_map position = [] map.width.times {|x_pos| map.height.times {|y_pos| position << [x_pos, y_pos] if map.region_id(x_pos, y_pos) == region_id } } unless position.empty? loop do pos = position[rand(position.size)] if $game_map.events_xy(pos[0], pos[1]).empty? $game_system.event_pos[map_id][@id] = [pos[0], pos[1]] moveto(pos[0], pos[1]) break end end end end end end #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● イベントの配置記録をクリアする #-------------------------------------------------------------------------- def clear_random_set_event(map_id = nil) $game_system.clear_random_set_event(map_id) end end