#============================================================================== # ■ VXAce-RGSS3-47 フィールドマップ [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # フィールドマップ上に配置された場所移動イベントを利用して # マップの移動ができるようになります #------------------------------------------------------------------------------ # 【併用必須素材】 # - 画面スクロール拡張 #------------------------------------------------------------------------------ # 【フィールドマップ上のイベント設定仕様】 # ●イベントページ # - 移動地点イベント # 1ページ目、もしくはdisable_place/enable_placeで設定したページ番号のみ有効 # - 中継地点イベント # 1ページ目のみ有効 # ●出現条件 # スイッチ、変数、セルフスイッチのみ使用可能(アクター、アイテムは使用不可) # ●グラフィック、自律移動、オプション、プライオリティ # 使用可能 # ●トリガー # 無効です #------------------------------------------------------------------------------ # 【フィールドマップ上のイベントコマンド仕様】 # ●[共通] 使用禁止 # - 乗り物の乗降、隊列歩行設定、シーン制御全般 # ●移動地点:場所移動イベント # - 必ず「場所移動」を入れてください # - メッセージは使用禁止 # ●移動地点:ルート設定イベント # - 必ず「移動ルートの設定(プレイヤー)」を入れてください # - 上下左右への移動以外は無効(斜め移動も無効) # ●中継地点 # - 全て使用不可 #============================================================================== module FieldMap EV={};TR={};RT={} #----------------------------------------------------------------------------- # ●場所移動地点イベント設定 # 移動先/移動元となる位置に配置するイベントを登録します。 # 通常マップとの行き来はここで登録されたイベント経由で行います # 登録したイベントの1ページには通常マップへ移動するイベントを設定してください #----------------------------------------------------------------------------- #【場所移動イベント仕様】 # コマンド : 場所移動 #----------------------------------------------------------------------------- # 設定値 # EV[マップID] = [イベントID, ...] : 指定イベントを移動地点とする # EV[マップID] = nil : マップ上の全イベントを移動地点とする #----------------------------------------------------------------------------- # マップID:1 EV[1] = nil # マップID:6 EV[6] = [2,4,6,8,10,12,19,21,22,23,28,31,32,35] #----------------------------------------------------------------------------- # ●中継地点のイベント設定 # 1地点から複数の移動ルートを設定する場合、分岐点にイベントを配置してください # 中継ポイントを設ける場合、 # 移動ルート(RT)には以下のような2つの設定が必要となります # ・移動元 → 中継地点 # ・中継地点 → 移動先 #  ※移動元 → 移動先 のルート設定はしないでください # ※中継地点から中継地点へのルート設定はしないでください #  ※場所移動地点(EV)への登録は不要です #----------------------------------------------------------------------------- # 設定値 # EV[マップID] = [イベントID, ...] #----------------------------------------------------------------------------- # マップID:1 TR[1] = [4] # マップID:6 TR[6] = [20] #----------------------------------------------------------------------------- # ●中継地点の表示 # true: 移動ルートと同じ表示を足す / false: なし(イベント表示のみ) #----------------------------------------------------------------------------- R_SHOW_RT = true #----------------------------------------------------------------------------- # ●移動ルート設定 # フィールドマップに指定したマップ上のイベントで行き来するルートを決めます # 移動ルート用イベントは移動元イベントの2ページ目以降に配置してください # 戻り側の移動ルートは設定不要です # 移動用ルートのページ番号に0を指定した場合は自動設定になります # ただし、自動設定は直線ルートで移動できる場合のみに限られます # 直線的に移動できない回り道を配置する場合は手動で設定してください #----------------------------------------------------------------------------- #【移動ルート設定仕様(手動設定)】 # コマンド:移動ルート設定(プレイヤー) # 移動コマンド:「下に移動」「左に移動」「右に移動」「上に移動」 # ※斜め移動系は使用不可 # (補足)移動ルート以外のコマンドは無視されます #----------------------------------------------------------------------------- #【設定】 # RT[マップID] = { # ルートID => { # :from => 移動元イベントID, # :to => 移動先イベントID, # :page => 移動ルートのページ番号(省略可/default=0) # :enable => 初期表示(省略可/default=false) # :straight => true : 自動ルート計算時に「できるだけ直線」で生成する # false : ART_STRAIGHTに従う (省略可/default=false) # :acting => true : 演出のみの擬似ルート(省略可/default=false) # } # } #----------------------------------------------------------------------------- # マップID:1 RT[1] = { 1 => {:from=>1, :to=>2, :page=>2, :enable=>true}, 2 => {:from=>3, :to=>4, :page=>2, :enable=>true}, 3 => {:from=>4, :to=>5, :page=>0, :enable=>true}, 4 => {:from=>4, :to=>6}, } # マップID:6 RT[6] = { 1 => {:from=>2, :to=>4, :page=>2}, 2 => {:from=>4, :to=>6}, 3 => {:from=>6, :to=>8, :page=>2}, 4 => {:from=>8, :to=>10}, 5 => {:from=>10, :to=>20}, 6 => {:from=>20, :to=>12}, 13 => {:from=>12, :to=>35}, 7 => {:from=>20, :to=>19}, 8 => {:from=>4, :to=>21, :page=>2}, 9 => {:from=>20, :to=>23}, 10 => {:from=>23, :to=>28}, 11 => {:from=>28, :to=>22}, 12 => {:from=>31, :to=>32, :acting=>true}, } #----------------------------------------------------------------------------- # ●自動移動ルート計算処理タイプ # true: できるだけ直線 / false: 斜め最短 #----------------------------------------------------------------------------- ART_STRAIGHT = true #----------------------------------------------------------------------------- # ●ルート移動時の移動速度 # (1:1/8倍速、2:1/4倍速、3:1/2倍速、4:標準速、5:2倍速、6:4倍速) #----------------------------------------------------------------------------- SPEED = 6 #----------------------------------------------------------------------------- # ●フィールドマップ起動時に移動情報を全て再構築する(デバッグ用) # ルートIDを変更後、コンティニューする場合は # trueに変更後、フィールドマップへ移動してからセーブし直してください # ※ルートを増やすだけの場合はリセット不要です # ※ただし、ルート確立情報含めて全てリセットされるため、使用時は要注意 #----------------------------------------------------------------------------- RESET_ROUTE = false #----------------------------------------------------------------------------- # ●フィールドマップ起動時に移動ルートを再構築する(デバッグ用) # イベント位置や移動ルート(page)を変更後、コンティニューする場合は # trueに変更後、フィールドマップへ移動してからセーブし直してください # ※ルートを増やすだけの場合はリメイク不要です #----------------------------------------------------------------------------- REMAKE_ROUTE = false #----------------------------------------------------------------------------- # ●場所説明 # 移動先のマップ情報として表示する文章です # 未設定時はマップ名(表示名)のみが表示されます # 以下の制御文字も使用できます # \\V[n] : 変数n番の数字 # \\N[n] : アクターn番の名前 # \\C[n] : 以降をn番の色で描画 # \\I[n] : アイコンn番を描画 # \\Y[n] : アクターn番の二つ名 # \\E[n] : エネミーn番の名前 # \\T[n] : アイテムn番の名前 # \\W[n] : 武器n番の名前 # \\A[n] : 防具n番の名前 # \\S[n] : スキルn番の名前 # \\J[n] : 職業n番の名前 # \\M[n] : マップn番の名前 #----------------------------------------------------------------------------- # また、移動先のマップの設定にて # @area[文字] # と設定するとエリア表示を追加することができます(制御文字使用不可) #----------------------------------------------------------------------------- TXT = { #マップID => "説明文(1行) 2 => "西方に位置する豊かな国。豊富な資源と温暖な地形に恵まれた世界有数の大国。", 4 => "\\c[1]エウロパ地方\\c[0]と\\c[1]ベリシア地方\\c[0]との間にある洞窟の入り口", 7 => "\\m[6]へと続く扉\\i[125]", 8 => "砂漠地帯にあるオアシス", 9 => "妖精が住むと言われる森。ただし、最奥地まで入った者は・・・", 10 => "空高くそびえ立つ天空島で最も高い山。この山でしか採掘できない鉱石がある", 14 => "アルカモ神教を信仰する信徒たちが住まう街", 11 => "アルカモ神教の総本山。", 35 => "神官になるための試練が待ち受ける洞窟", 13 => "天空島より更に上に浮かぶ浮島にある天上人たちが住まう街", 12 => "その昔、天使が落ちたと言われる伝承の滝", 16 => "堕天使たちに対抗するために建てられた砦", 19 => "堕天使たちに対抗するために建てられた砦。堕天使たちの侵攻によって倒壊した", 17 => "堕天使アサワルによって滅ぼされた街", 15 => "堕天使アサワルの居城。", } #----------------------------------------------------------------------------- # ●場所説明:長文時の表示方法 # 0:無限ループ # 1:ループリセット # 2:余白付きループリセット #----------------------------------------------------------------------------- TXT_MODE = 2 #----------------------------------------------------------------------------- # ●ルート表示 # 移動ルートの道筋を表示します。 # 移動ルートが長距離/多岐に渡り、重くなる場合はOFFにしてください #----------------------------------------------------------------------------- RT_SHOW = true # 表示有効化 RT_ANIME = true # アニメーション表示 RT_OPACITY = 140 # 不透明度 0..255 #----------------------------------------------------------------------------- # ●ルート表示タイプ # 0 : キャラクター画像 # 1 : アイコン # 2 : アニメーション .. Height:32, Width:32 * 3 # 3 : 塗りつぶし #----------------------------------------------------------------------------- RT_TYPE = 1 #----------------------------------------------------------------------------- # ●ルート表示のキャラクタ設定 # ルート表示有効時に表示する画像を設定します # RT_TYPEごとに設定する内容が異なります #----------------------------------------------------------------------------- # [キャラクター画像] # file : ファイル名 # index : キャラクターIndex # dir : 向きパターンIndex [2..下 4..左 6..右 8..上] # ([2,4,6,8][縦index]}) # ex) #~ RT_CHAR = {:file=>"!Hexagram", :index=>0, :dir=>6} #----------------------------------------------------------------------------- # [アイコン] # index : アイコンIndex # opacity : 不透明度変化(3段階) # ex) RT_CHAR = {:index=>16, :opacity=>[240, 200, 160]} #----------------------------------------------------------------------------- # [アニメーション] # file : ファイル名 # hue : 色相 # ex) #~ RT_CHAR = {:file=>"rt_anime", :hue=>0} #----------------------------------------------------------------------------- # [塗りつぶし] # area : [[範囲, 色], ..] # 範囲 .. Rect.new(x, y, width, height) # 色 .. Color.new(red, green, bule[, alpha]) # ex) #~ RT_CHAR = { #~ :area => [ #~ [Rect.new(6 , 6, 20, 20), Color.new(140, 240, 240, 240)], #~ [Rect.new(6+32 , 6, 20, 20), Color.new(140, 240, 240, 200)], #~ [Rect.new(6+64 , 6, 20, 20), Color.new(140, 240, 240, 160)], #~ [Rect.new(4 , 4, 24, 2), Color.new(255, 255, 255, 240)], #~ [Rect.new(4+32 , 4, 24, 2), Color.new(255, 255, 255, 200)], #~ [Rect.new(4+64 , 4, 24, 2), Color.new(255, 255, 255, 160)], #~ [Rect.new(4 , 26, 24, 2), Color.new(255, 255, 255, 240)], #~ [Rect.new(4+32 , 26, 24, 2), Color.new(255, 255, 255, 200)], #~ [Rect.new(4+64 , 26, 24, 2), Color.new(255, 255, 255, 160)], #~ [Rect.new(4 , 6, 2, 20), Color.new(255, 255, 255, 240)], #~ [Rect.new(4+32 , 6, 2, 20), Color.new(255, 255, 255, 200)], #~ [Rect.new(4+64 , 6, 2, 20), Color.new(255, 255, 255, 160)], #~ [Rect.new(26 , 6, 2, 20), Color.new(255, 255, 255, 240)], #~ [Rect.new(26+32, 6, 2, 20), Color.new(255, 255, 255, 200)], #~ [Rect.new(26+64, 6, 2, 20), Color.new(255, 255, 255, 160)], #~ ] #~ } #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # ●新規ルート開設時の音楽(ME/SE) #----------------------------------------------------------------------------- NEW_SE = RPG::SE.new("Item") #----------------------------------------------------------------------------- # ●新規ルート開設時のスクロール速度 # (1:1/8倍速、2:1/4倍速、3:1/2倍速、4:標準速、5:2倍速、6:4倍速) #----------------------------------------------------------------------------- SCROLL = 5 end #============================================================================== # ■ イベントコマンド仕様 #============================================================================== class Game_Interpreter #============================================================================= # ■ フィールドマップ移動 #----------------------------------------------------------------------------- # [イベントスクリプト記述] # goto_fieldmap(map_id, ev_id, back, dir) # [引数] # map_id .. フィールドマップのマップID # ev_id .. 移動先イベントID # back .. キャンセル時のプレイヤーの移動位置 <省略可> # 0, 5 : 移動なし # -1 : 一方後ろへ # 1 : 左下に1歩移動 # 2 : 下に1歩移動 # 3 : 右下に1歩移動 # 4 : 左に1歩移動 # 6 : 右に1歩移動 # 7 : 左上に1歩移動 # 8 : 上に1歩移動 # 9 : 右上に1歩移動 # dir .. キャンセル時の向き <省略可> # (2:下 4:左 6:右 8:上 0:そのまま) # fade .. フェードタイプ # (0:通常 1:白 2:なし) #============================================================================= def goto_fieldmap(map_id, ev_id, back=0, dir=0, fade=0) start_map_id = $game_map.map_id $game_temp.fade_type = fade SceneManager.scene.pre_transfer SceneManager.goto(Scene_FieldMap) $game_map.setup(map_id) SceneManager.scene.prepare(start_map_id, map_id, ev_id, back, dir, fade) end #============================================================================= # ■ 移動ルート有効化 #----------------------------------------------------------------------------- # [説明] # 移動ルートを有効化します。 # 移動先イベントに出現条件がある場合は合わせて有効化します。 #  出現条件に設定しているスイッチ等はフィールドマップ移動後に有効になります # (イベントスクリプト実行後は無効のままです) # 移動ルートが途切れるルートは有効化できません(演出のみの擬似ルート除く) # [イベントスクリプト記述] # enable_route(map_id, r_id) # [引数] # map_id .. フィールドマップのマップID # r_id .. 移動ルートID #============================================================================= def enable_route(map_id, r_id) return unless FieldMap.rt_include?(map_id, r_id) $game_system.field[map_id].route[r_id].enable end #============================================================================= # ■ 移動ルート無効化 #----------------------------------------------------------------------------- # [説明] # 移動ルートを有効化します。 # 移動先イベントに出現条件がある場合は合わせて無効化します。 # [イベントスクリプト記述] # disable_route(map_id, r_id) # [引数] # map_id .. フィールドマップのマップID # r_id .. 移動ルートID #============================================================================= def disable_route(map_id, r_id) return unless FieldMap.rt_include?(map_id, r_id) $game_system.field[map_id].route[r_id].disable end #============================================================================= # ■ 移動禁止 #----------------------------------------------------------------------------- # [説明] # 移動地点への移動を禁止します。 # (強制移動状態も解除されます) # [イベントスクリプト記述] # disable_place(map_id, ev_id, page) # [引数] # map_id .. フィールドマップのマップID # ev_id .. イベントID # page .. 変更後ページ番号(省略可) #============================================================================= def disable_place(map_id, ev_id, page=-1) return unless FieldMap.check_ev(map_id, ev_id) $game_system.field[map_id].place[ev_id].page = page if page > 0 $game_system.field[map_id].place[ev_id].restrict end #============================================================================= # ■ 移動禁止解除 #----------------------------------------------------------------------------- # [説明] # 移動地点への移動禁止を解除します。 # [イベントスクリプト記述] # enable_place(map_id, ev_id, page) # [引数] # map_id .. フィールドマップのマップID # ev_id .. イベントID # page .. 変更後ページ番号(省略可) #============================================================================= def enable_place(map_id, ev_id, page=-1) return unless FieldMap.check_ev(map_id, ev_id) $game_system.field[map_id].place[ev_id].page = page if page > 0 $game_system.field[map_id].place[ev_id].lift end #============================================================================= # ■ 強制移動 #----------------------------------------------------------------------------- # [説明] # 移動地点へ到達した時に強制的に移動させます # 移動禁止状態の移動地点には無効です # [イベントスクリプト記述] # enable_force_transfer(map_id, ev_id, page) # [引数] # map_id .. フィールドマップのマップID # ev_id .. イベントID # page .. 変更後ページ番号(省略可) #============================================================================= def enable_force_transfer(map_id, ev_id, page=-1) return unless FieldMap.check_ev(map_id, ev_id) place = $game_system.field[map_id].place[ev_id] return unless place.enable? place.page = page if page > 0 place.force = true end #============================================================================= # ■ 強制移動解除 #----------------------------------------------------------------------------- # [説明] # 移動地点への強制移動を解除します # [イベントスクリプト記述] # disable_force_transfer(map_id, ev_id, page) # [引数] # map_id .. フィールドマップのマップID # ev_id .. イベントID # page .. 変更後ページ番号(省略可) #============================================================================= def disable_force_transfer(map_id, ev_id, page=-1) return unless FieldMap.check_ev(map_id, ev_id) place = $game_system.field[map_id].place[ev_id] return unless place.enable? place.page = page if page > 0 place.force = false end end