#============================================================================== # バトラーをランダムに配置するスクリプト ver1.00 #------------------------------------------------------------------------------ #[導入上の注意] # 再定義している関数があるので、他のスクリプトと競合する可能性があります。 # そのような場合は、このスクリプトを前の方に置いて、 #「追加した」と書かれている行を競合したスクリプトの対応する場所にコピペしてください。 # # # UN_RANDOM_TROOP にランダム配置させたくないトループのIDを入れてください。 # イベント戦とかボス戦とか # # ADJUST_SPACE に上下左右に開けたいスペースの数値を入れてください。 # 0でも画面からはみ出すということはありませんが、 # 下のスペースにある程度の数値を入れておかないと、ステータスウィンドウにかぶります。 # # PERFECT_RANDOM を true にすると、ごっちゃごちゃになります。 # 画面上のエネミーで対象の選択をするスクリプトなどを導入していると、 # 選択キーがぶっ飛びます。そのような場合には false にしてください。 # indexの小さい順に左からランダムに配置します。 # # 画面のサイズを変更するスクリプトを導入している場合は # WINDOW_SIZE の数値をいじくってください。 # # # 作成:ぶちょー # ホム:http://nyannyannyan.bake-neko.net # 著作:自分で作ったとか言わないで>< # 改造はご自由にどうぞ。 # リードミーとかに私の名前の載せたりするのは任意で。 #============================================================================== UN_RANDOM_TROOP = [1,2] # ランダム配置しないトループのID ADJUST_SPACE = [42,128,16,16] # 上下左右に開けるスペース[上,下,左,右] PERFECT_RANDOM = false # false : indexの小さい順に左から並べる。 # true : indexに関係なくランダムに並べる。 WINDOW_SIZE = [544,416] # 画面のサイズ[横,縦] #============================================================================== # ■ Game_Interpreter #============================================================================== class Game_Interpreter #-------------------------------------------------------------------------- # ● random_game_troop #-------------------------------------------------------------------------- def random_game_troop(troop_id) unless UN_RANDOM_TROOP.include?(troop_id) for enemy in $game_troop.members battler = Cache.battler(enemy.battler_name, enemy.battler_hue) x = battler.width y = battler.height + ADJUST_SPACE[0] width = WINDOW_SIZE[0] - ADJUST_SPACE[2] - ADJUST_SPACE[3] - x if PERFECT_RANDOM enemy.screen_x = rand(width) + x / 2 + ADJUST_SPACE[2] else width /= $game_troop.members.size enemy.screen_x = enemy.index * width + rand(x) + x / 2 + ADJUST_SPACE[2] end enemy.screen_y = rand(WINDOW_SIZE[1] - ADJUST_SPACE[1] - y) + y end end end #-------------------------------------------------------------------------- # ● バトルの処理 ※ 再定義 #-------------------------------------------------------------------------- def command_301 return true if $game_temp.in_battle if @params[0] == 0 # 直接指定 troop_id = @params[1] else # 変数で指定 troop_id = $game_variables[@params[1]] end if $data_troops[troop_id] != nil $game_troop.setup(troop_id) $game_troop.can_escape = @params[2] $game_troop.can_lose = @params[3] $game_temp.battle_proc = Proc.new { |n| @branch[@indent] = n } $game_temp.next_scene = "battle" random_game_troop(troop_id) # 追加した end @index += 1 return false end end #============================================================================== # ■ Scene_Map #============================================================================== class Scene_Map < Scene_Base #-------------------------------------------------------------------------- # ● random_game_troop #-------------------------------------------------------------------------- def random_game_troop(troop_id) unless UN_RANDOM_TROOP.include?(troop_id) for enemy in $game_troop.members battler = Cache.battler(enemy.battler_name, enemy.battler_hue) x = battler.width y = battler.height + ADJUST_SPACE[0] width = WINDOW_SIZE[0] - ADJUST_SPACE[2] - ADJUST_SPACE[3] - x if PERFECT_RANDOM enemy.screen_x = rand(width) + x / 2 + ADJUST_SPACE[2] else width /= $game_troop.members.size enemy.screen_x = enemy.index * width + rand(x) + x / 2 + ADJUST_SPACE[2] end enemy.screen_y = rand(WINDOW_SIZE[1] - ADJUST_SPACE[1] - y) + y end end end #-------------------------------------------------------------------------- # ● エンカウントの処理 ※ 再定義 #-------------------------------------------------------------------------- def update_encounter return if $game_player.encounter_count > 0 # 遭遇歩数未満? return if $game_map.interpreter.running? # イベント実行中? return if $game_system.encounter_disabled # エンカウント禁止中? troop_id = $game_player.make_encounter_troop_id # 敵グループを決定 return if $data_troops[troop_id] == nil # 敵グループが無効? $game_troop.setup(troop_id) $game_troop.can_escape = true $game_temp.battle_proc = nil $game_temp.next_scene = "battle" preemptive_or_surprise random_game_troop(troop_id) # 追加した end end #============================================================================== # ■ Scene_Title #============================================================================== class Scene_Title < Scene_Base #-------------------------------------------------------------------------- # ● random_game_troop #-------------------------------------------------------------------------- def random_game_troop(troop_id) unless UN_RANDOM_TROOP.include?(troop_id) for enemy in $game_troop.members battler = Cache.battler(enemy.battler_name, enemy.battler_hue) x = battler.width y = battler.height + ADJUST_SPACE[0] width = WINDOW_SIZE[0] - ADJUST_SPACE[2] - ADJUST_SPACE[3] - x if PERFECT_RANDOM enemy.screen_x = rand(width) + x / 2 + ADJUST_SPACE[2] else width /= $game_troop.members.size enemy.screen_x = enemy.index * width + rand(x) + x / 2 + ADJUST_SPACE[2] end enemy.screen_y = rand(WINDOW_SIZE[1] - ADJUST_SPACE[1] - y) + y end end end #-------------------------------------------------------------------------- # ● 戦闘テスト ※ 再定義 #-------------------------------------------------------------------------- def battle_test load_bt_database # 戦闘テスト用データベースをロード create_game_objects # ゲームオブジェクトを作成 Graphics.frame_count = 0 # プレイ時間を初期化 $game_party.setup_battle_test_members $game_troop.setup($data_system.test_troop_id) random_game_troop($data_system.test_troop_id) # 追加した $game_troop.can_escape = true $game_system.battle_bgm.play snapshot_for_background $scene = Scene_Battle.new end end