设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1367|回复: 4
打印 上一主题 下一主题

[已经过期] 角色站上移動物跟著移動

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2012-1-3
帖子
14
跳转到指定楼层
1
发表于 2012-1-18 12:56:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想將下列圖

那個移動可以讓角色上去跟著移動要如何使用





我在移動部份用角色穿透  可是這樣連其他地方都可以穿透過去
而且角色站上去也不會跟著走

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2011-3-10
帖子
65
2
发表于 2012-1-18 13:14:30 | 只看该作者
本帖最后由 s20810 于 2012-1-18 13:17 编辑

需要以下腳本
  1. #==============================================================================
  2. #
  3. # ■乗り物拡張 □Ver. 2.81 □製作者:月紳士
  4. # ・RPGツクールVX用 RGSS2スクリプト
  5. #
  6. #    ●…書き換えメソッド(競合注意) ◎…メソッドのエイリアス ○…新規メソッド
  7. #
  8. #  ※二次配布禁止!配布元には利用規約があります。必ずそちらを見てください。
  9. #------------------------------------------------------------------------------
  10. # 更新履歴
  11. #  Ver. 2.81  茂みによるエンカウント増加が飛行中に適用されないよう修正。
  12. #  Ver. 2.80  乗り物ステートの機能を追加。
  13. #  Ver. 2.70  エンカウントしない乗り物機能が未実装だった為、追加。
  14. #  Ver. 2.63  前回の修正が不十分だったことによる不具合を再修正。
  15. #  Ver. 2.62  イベント乗り物を乗り継いだ際に再度乗れなくなる不具合を修正。
  16. #  Ver. 2.61  下記更新の微調整。
  17. #  Ver. 2.60  HARTS HORN様の「隊列歩行スクリプト」併用動作の修正と
  18. #             月紳士のスクリプト【パーティーメンバーの追従】併用時用の更新。
  19. #  Ver. 2.51  スクリプトの見直しと細かい動作修正。
  20. #  Ver. 2.50  乗り物に乗った状態でのセーブ・ロード時の不具合を解消。
  21. #
  22. #   ※これ以前の更新履歴はマニュアルを参考にしてください。
  23. #==============================================================================
  24. =begin
  25.   
  26.  このスクリプトで追加されるのは以下の機能です。

  27.   ○馬、大型飛行船、魔法の絨毯というみっつの新しい乗り物を追加。

  28.   ○キャラクターが上に乗る、騎乗タイプの乗り物を作成できる。

  29.   ○イベントにプレイヤーを乗り込ませたり、騎乗させたりできる。

  30.   ○イベントにイベントを騎乗させることができる。

  31.   ○システムの応用にて、イベントを持ち上げる、運ぶ、といったことも可能に。


  32.  ※ 詳しい説明はマニュアルをご覧ください。

  33. =end

  34. #==============================================================================
  35. # □ 乗り物拡張・モジュール(カスタマイズ項目)
  36. #==============================================================================

  37. module Expansion_Vehicle

  38. # 馬の初期設定 # -----------------------------------------------------

  39.   # 初期配置するマップのID/X座標/Y座標
  40.     HORSE_MAP_ID = 0                     
  41.     HORSE_X = 0
  42.     HORSE_Y = 0

  43.   # 画像ファイルの名前/画像ファイルのINDEX
  44.     HORSE_FILE_NAME = "Animal"           
  45.     HORSE_FILE_INDEX = 5

  46.   # BGMファイルの名前
  47.     HORSE_BGM_NAME = "ship"              

  48. # 大型飛行船の初期設定 # ----------------------------------------------

  49.   # 初期配置するマップのID/X座標/Y座標
  50.     BIG_AIRSHIP_MAP_ID = 0
  51.     BIG_AIRSHIP_X = 0
  52.     BIG_AIRSHIP_Y = 0

  53.   # 画像ファイルの名前/画像ファイルのINDEX
  54.     BIG_AIRSHIP_FILE_NAME = "$Wivern"
  55.     BIG_AIRSHIP_FILE_INDEX = 0

  56.   # BGMファイルの名前
  57.     BIG_AIRSHIP_BGM_NAME = "Scene9"     

  58. # 魔法の絨毯の初期設定 # ----------------------------------------------

  59.   # 初期配置するマップのID/X座標/Y座標
  60.     MAGIC_CARPET_MAP_ID = 0
  61.     MAGIC_CARPET_X = 0
  62.     MAGIC_CARPET_Y = 0

  63.   # 画像ファイルの名前/画像ファイルのINDEX
  64.     MAGIC_CARPET_FILE_NAME = "Ride"
  65.     MAGIC_CARPET_FILE_INDEX = 6

  66.   # BGMファイルの名前
  67.     MAGIC_CARPET_BGM_NAME = "Airship"     

  68. # その他の設定 # ------------------------------------------------------
  69.    
  70.   # エンカウントしない乗り物のID
  71.     NOT_ENCOUNTER_VEHICIE_ID = [0, 1, 2, 3, 4, 5]
  72.     # ID = 0:小型船/1:大型船/2:飛行船/3:馬/4:大型飛行船/5:魔法の絨毯
  73.    
  74.   # 乗り物ステート
  75.     BOAT_STATE         = []  # 小型船
  76.     SHIP_STATE         = []  # 大型船
  77.     AIRSHIP_STATE      = []  # 飛行船
  78.     HORSE_STATE        = []  # 馬
  79.     BIG_AIRSHIP_STATE  = []  # 大型飛行船
  80.     MAGIC_CARPET_STATE = []  # 魔法の絨毯
  81.       
  82. end

  83. #==============================================================================
  84. # □ Riding_Data
  85. #------------------------------------------------------------------------------
  86. #  騎乗時の画像処理に必要なデータを扱うクラスです。このクラスのインスタンスは
  87. # $riding_data で参照されます。
  88. #==============================================================================

  89. class Riding_Data
  90.   #--------------------------------------------------------------------------
  91.   # ○ 騎乗用キャラクター・データ
  92.   #--------------------------------------------------------------------------
  93.   #  @riding_pct_name      # 騎乗時に重ねる画像のファイル名
  94.   #                        # ※ ここを "self" にすると元々のキャラクター画像を
  95.   #                        #    騎乗時に重ねる画像に使います。
  96.   #  @riding_pct_index     # 騎乗時に重ねる画像のインデックス
  97.   #  @positioning_down     # 下向きの際の位置修正値
  98.   #  @positioning_left     # 左向きの際の位置修正値
  99.   #  @positioning_right    # 右向きの際の位置修正値(省略可・省略時は左向きの逆の値を使用)
  100.   #  @positioning_up       # 上向きの際の位置修正値
  101.   #  @priority_type        # 待機時のふさわしいプライオリティ(0 の時のみ設定)
  102.   #  @object_type          # 乗る側と乗られる側の処理逆転(する場合のみtrueを定義)
  103.   #                        # ※ 物を持ち上げる表現に使います。
  104.   #--------------------------------------------------------------------------
  105.   def make_ride_data
  106.     # 騎馬
  107.     @character_name = "Animal"
  108.     @character_index = 5
  109.     @riding_pct_name = "Ride"
  110.     @riding_pct_index = 0
  111.     @positioning_down = [[0, -18], [0, -17], [0, -18]]
  112.     @positioning_left = [[4, -17], [4, -16], [4, -17]]
  113.     @positioning_up = [[0, -15], [0, -14], [0, -15]]
  114.     set_ride_data
  115.    
  116.     # オオカミ
  117.     @character_name = "Animal"
  118.     @character_index = 6
  119.     @riding_pct_name = "Ride"
  120.     @riding_pct_index = 1
  121.     @positioning_down = [[0, -20], [0, -19], [0, -20]]
  122.     @positioning_left = [[4, -16], [4, -15], [4, -16]]
  123.     @positioning_up = [[0, -15], [0, -14], [0, -15]]
  124.     set_ride_data
  125.    
  126.     # いかだ
  127.     @character_name = "Ride"
  128.     @character_index = 2
  129.     @positioning_down = [[0, -13], [0, -12], [0, -11]]
  130.     @positioning_left = [[0, -11], [0, -12], [0, -13]]
  131.     @positioning_up = [[0, -15], [0, -14], [0, -13]]
  132.     @priority_type = 0
  133.     set_ride_data
  134.    
  135.     # フロート
  136.     @character_name = "Ride"
  137.     @character_index = 5
  138.     @positioning_down = [[0, -11], [0, -12], [0, -13]]
  139.     @positioning_left = [[0, -11], [0, -12], [0, -13]]
  140.     @positioning_up = [[0, -11], [0, -12], [0, -13]]
  141.     @priority_type = 0
  142.     set_ride_data
  143.       
  144.     # ペガサス
  145.     @character_name = "Ride"
  146.     @character_index = 3
  147.     @riding_pct_name = "Ride"
  148.     @riding_pct_index = 7
  149.     @positioning_down = [[0, -19], [0, -20], [0, -21]]
  150.     @positioning_left = [[4, -19], [4, -18], [4, -17]]
  151.     @positioning_up = [[0, -15], [0, -14], [0, -13]]
  152.     set_ride_data
  153.    
  154.     # トロッコ
  155.     @character_name = "Vehicle"
  156.     @character_index = 6
  157.     @riding_pct_name = "Ride"
  158.     @riding_pct_index = 4
  159.     @positioning_down = [[0, -10], [0, -11], [0, -10]]
  160.     @positioning_left = [[-2, -10], [-1, -10], [-2, -10]]
  161.     @positioning_right = [[1, -10], [2, -10], [1, -10]]
  162.     @positioning_up = [[0, -10], [0, -11], [0, -10]]
  163.     set_ride_data
  164.    
  165.     # オブジェクト
  166.     @character_name = "!$Object"
  167.     @riding_pct_name = "self"
  168.     @positioning_down = [[-1, -9], [0, -10], [1, -9]]
  169.     @positioning_left = [[-6, -11], [-5, -10], [-4, -9]]
  170.     @positioning_up = [[1, -11], [0, -12], [-1, -11]]
  171.     @object_type = true
  172.     set_ride_data
  173.    
  174.     # アイテム
  175.     @character_name = "$Item"
  176.     @riding_pct_name = "self"
  177.     @positioning_down = [[-1, 1], [0, 0], [1, 1]]
  178.     @positioning_left = [[-6, -1], [-5, 0], [-4, 1]]
  179.     @positioning_up = [[1, -1], [0, -2], [-1, -1]]
  180.     @object_type = true
  181.     set_ride_data

  182.     # 魔法の絨毯
  183.     @character_name = "Ride"
  184.     @character_index = 6
  185.     @positioning_down = [[0, -12], [0, -13], [0, -14]]
  186.     @positioning_left = [[0, -10], [0, -11], [0, -12]]
  187.     @positioning_up = [[0, -12], [0, -13], [0, -14]]
  188.     @priority_type = 0
  189.     set_ride_data
  190.    
  191.     # 飛竜
  192.     @character_name = "$Wivern"
  193.     @character_index = 0
  194.     @riding_pct_name = "$Wivern_Ride"
  195.     @riding_pct_index = 0
  196.     @positioning_down = [[0, -25], [0, -24], [0, -24]]
  197.     @positioning_left = [[7, -19], [7, -19], [7, -20]]
  198.     @positioning_up = [[0, -24], [0, -23], [0, -23]]
  199.     set_ride_data
  200.    
  201.     # ランタン
  202.     @character_name = "!Flame"
  203.     @character_index = 1
  204.     @riding_pct_name = "self"
  205.     @positioning_down = [[-6, 5], [-5, 4], [-4, 5]]
  206.     @positioning_left = [[-3, 3], [-2, 4], [-1, 5]]
  207.     @positioning_up = [[7, 1], [8, 0], [7, -1]]
  208.     @object_type = true
  209.     set_ride_data
  210.    
  211.     # 宝玉
  212.     @character_name = "!Other1"
  213.     @character_index = 6
  214.     @riding_pct_name = "self"
  215.     @positioning_down = [[-1, 12], [0, 11], [1, 12]]
  216.     @positioning_left = [[-6, 10], [-5, 11], [-4, 12]]
  217.     @positioning_up = [[1, 10], [0, 9], [-1, 10]]
  218.     @object_type = true
  219.     set_ride_data
  220.    
  221.     # ニワトリ
  222.     @character_name = "Animal"
  223.     @character_index = 2
  224.     @riding_pct_name = "self"
  225.     @positioning_down = [[-1, 2], [0, 1], [1, 2]]
  226.     @positioning_left = [[-8, -1], [-7, 0], [-6, 1]]
  227.     @positioning_up = [[1, -2], [0, -3], [-1, -2]]
  228.     @object_type = true
  229.     set_ride_data
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ○ 公開インスタンス変数(データベース項目の説明)
  233.   #--------------------------------------------------------------------------  
  234.   # [character_name, character_index] をキーとしたハッシュとして
  235.   #  他クラスより参照します。
  236.   #--------------------------------------------------------------------------
  237.   attr_accessor :data_riding_pct_name
  238.   attr_accessor :data_riding_pct_index
  239.   attr_accessor :data_positioning_down
  240.   attr_accessor :data_positioning_left
  241.   attr_accessor :data_positioning_right
  242.   attr_accessor :data_positioning_up
  243.   attr_accessor :data_priority_type
  244.   attr_accessor :data_object_type
  245.   #--------------------------------------------------------------------------
  246.   # ○ オブジェクト初期化
  247.   #--------------------------------------------------------------------------
  248.   def initialize
  249.     @data_riding_pct_name = {}
  250.     @data_riding_pct_index = {}
  251.     @data_positioning_down = {}
  252.     @data_positioning_left = {}
  253.     @data_positioning_right = {}
  254.     @data_positioning_up = {}
  255.     @data_priority_type = {}
  256.     @data_object_type = {}
  257.     clear
  258.     make_ride_data
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ○ クリア
  262.   #--------------------------------------------------------------------------
  263.   def clear
  264.     @character_name = ""
  265.     @character_index = 0
  266.     @riding_pct_name = ""
  267.     @riding_pct_index = 0
  268.     @positioning_down = [[0, 0], [0, 0], [0, 0]]
  269.     @positioning_left = [[0, 0], [0, 0], [0, 0]]
  270.     @positioning_right = nil
  271.     @positioning_up = [[0, 0], [0, 0], [0, 0]]
  272.     @priority_type = nil
  273.     @object_type = false
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ○ 騎乗用キャラクター・データベース化
  277.   #--------------------------------------------------------------------------  
  278.   def set_ride_data
  279.     key = [@character_name, @character_index]
  280.     @data_riding_pct_name[key] = @riding_pct_name
  281.     @data_riding_pct_index[key] = @riding_pct_index
  282.     @data_positioning_down[key] = @positioning_down
  283.     @data_positioning_left[key] = @positioning_left
  284.     if @positioning_right == nil
  285.       @data_positioning_right[key] = [[], [], []]
  286.       @data_positioning_right[key][0][0] = -@positioning_left[0][0]
  287.       @data_positioning_right[key][0][1] = @positioning_left[0][1]
  288.       @data_positioning_right[key][1][0] = -@positioning_left[1][0]
  289.       @data_positioning_right[key][1][1] = @positioning_left[1][1]
  290.       @data_positioning_right[key][2][0] = -@positioning_left[2][0]
  291.       @data_positioning_right[key][2][1] = @positioning_left[2][1]
  292.     else
  293.       @data_positioning_right[key] = @positioning_right
  294.     end
  295.     @data_positioning_up[key] = @positioning_up
  296.     @data_priority_type[key] = @priority_type
  297.     @data_object_type[key] = @object_type
  298.     clear
  299.   end
  300. end

  301. #==============================================================================
  302. # ■ Game_Vehicle
  303. #------------------------------------------------------------------------------
  304. #  乗り物を扱うクラスです。このクラスは Game_Map クラスの内部で使用されます。
  305. # 現在のマップに乗り物がないときは、マップ座標 (-1,-1) に設定されます。
  306. #==============================================================================

  307. class Game_Vehicle < Game_Character
  308.   #--------------------------------------------------------------------------
  309.   # ○ 拡張の乗り物のセッティング
  310.   #      @move_speed : 乗り物の速度
  311.   #      @walk_anime : 移動時アニメ
  312.   #      @step_anime : 停止時アニメ
  313.   #--------------------------------------------------------------------------
  314.   def riding_vehicle_settings
  315.     case @type
  316.     when 3 # 馬
  317.       @map_id = Expansion_Vehicle::HORSE_MAP_ID
  318.       @x = Expansion_Vehicle::HORSE_X
  319.       @y = Expansion_Vehicle::HORSE_Y
  320.       @character_name = Expansion_Vehicle::HORSE_FILE_NAME
  321.       @character_index = Expansion_Vehicle::HORSE_FILE_INDEX
  322.       @bgm = RPG::BGM.new
  323.       @bgm.name  = Expansion_Vehicle::HORSE_BGM_NAME
  324.       
  325.       @move_speed = 5
  326.       @walk_anime = true
  327.       @step_anime = false
  328.       
  329.     when 4 # 大型飛行船
  330.       @map_id = Expansion_Vehicle::BIG_AIRSHIP_MAP_ID
  331.       @x = Expansion_Vehicle::BIG_AIRSHIP_X
  332.       @y = Expansion_Vehicle::BIG_AIRSHIP_Y
  333.       @character_name = Expansion_Vehicle::BIG_AIRSHIP_FILE_NAME
  334.       @character_index = Expansion_Vehicle::BIG_AIRSHIP_FILE_INDEX
  335.       @bgm = RPG::BGM.new
  336.       @bgm.name = Expansion_Vehicle::BIG_AIRSHIP_BGM_NAME
  337.       
  338.       @move_speed = 5
  339.       @walk_anime = true
  340.       @step_anime = true
  341.       
  342.     when 5 # 魔法の絨毯
  343.       @map_id = Expansion_Vehicle::MAGIC_CARPET_MAP_ID
  344.       @x = Expansion_Vehicle::MAGIC_CARPET_X
  345.       @y = Expansion_Vehicle::MAGIC_CARPET_Y
  346.       @character_name = Expansion_Vehicle::MAGIC_CARPET_FILE_NAME
  347.       @character_index = Expansion_Vehicle::MAGIC_CARPET_FILE_INDEX
  348.       @bgm = RPG::BGM.new
  349.       @bgm.name = Expansion_Vehicle::MAGIC_CARPET_BGM_NAME
  350.       
  351.       @move_speed = 6
  352.       @walk_anime = true
  353.       @step_anime = true
  354.     end
  355.   end
  356.   #--------------------------------------------------------------------------
  357.   # ○ 既存の乗り物のセッティング
  358.   #      @move_speed : 乗り物の速度
  359.   #      @walk_anime : 移動時アニメ
  360.   #      @step_anime : 停止時アニメ
  361.   #--------------------------------------------------------------------------
  362.   def tig_ev_vehicle_initialize
  363.     case @type
  364.     when 0 # 小型船
  365.       @move_speed = 4
  366.       @walk_anime = true
  367.       @step_anime = true
  368.     when 1 # 大型船
  369.       @move_speed = 5
  370.       @walk_anime = false
  371.       @step_anime = true
  372.     when 2 # 飛行船
  373.       @move_speed = 5
  374.       @walk_anime = true
  375.       @step_anime = true
  376.     end
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ○ 公開インスタンス変数
  380.   #--------------------------------------------------------------------------
  381.   attr_reader   :pattern                  # パターン
  382.   attr_reader   :bgm                      # 乗り込み時BGM
  383.   attr_accessor :priority_type            # プライオリティタイプ
  384.   attr_accessor :move_speed               # 移動速度
  385.   attr_accessor :walk_anime               # 歩行アニメ
  386.   attr_accessor :step_anime               # 足踏みアニメ
  387.   attr_accessor :instant                  # 一時的な呼び出しフラグ
  388.   #--------------------------------------------------------------------------
  389.   # ◎ システム設定のロード
  390.   #--------------------------------------------------------------------------
  391.   alias tig_ev_load_system_settings load_system_settings
  392.   def load_system_settings
  393.     tig_ev_load_system_settings
  394.     tig_ev_vehicle_initialize
  395.     riding_vehicle_settings
  396.     @instant = false
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● リフレッシュ
  400.   #--------------------------------------------------------------------------
  401.   def refresh
  402.                                      # 位置の調整
  403.     if @driving
  404.       @map_id = $game_map.map_id
  405.       sync_with_player               
  406.     elsif @map_id == $game_map.map_id
  407.       moveto(@x, @y)
  408.     end
  409.                                      # プライオリティタイプ調整
  410.     if [2, 4].include?(@type)         # 飛行船・大型飛行船の場合
  411.       @priority_type = @driving ? 2 : vehicle_priority
  412.     else                              # その他の乗り物
  413.       @priority_type = @driving ? 1 : vehicle_priority
  414.     end
  415.   end
  416.   #--------------------------------------------------------------------------
  417.   # ● フレーム更新
  418.   #--------------------------------------------------------------------------
  419.   def update
  420.     super
  421.    
  422.     if [2, 4, 5].include?(@type)     # 飛行船・大型飛行船・魔法の絨毯の場合
  423.       
  424.       case @type                     # タイプに合わせた最頂点の高さの取得
  425.       when 2 ; height = 1
  426.       when 4 ; height = 2
  427.       when 5 ; height = 1
  428.       end
  429.       
  430.       if @driving
  431.         return if $game_player.follow_member_gathering == true
  432.         if @altitude < MAX_ALTITUDE * height
  433.           @altitude += 1             # 高度を上げる
  434.         end
  435.       elsif @altitude > 0
  436.         @altitude -= 1               # 高度を下げる
  437.         if @altitude == 0
  438.           @priority_type = vehicle_priority   # 待機時のプライオリティに
  439.           $game_player.ride_off_character
  440.           $game_player.turn_down
  441.           update_bush_depth
  442.           turn_left
  443.         end
  444.       end
  445.     end
  446.   end
  447.   #--------------------------------------------------------------------------
  448.   # ◎ アニメカウントの更新
  449.   #--------------------------------------------------------------------------
  450.   alias tig_ev_update_animation update_animation unless $@
  451.   def update_animation
  452.     if riding_type? and rided_character == nil  # 乗り込み最中のアニメをオフに
  453.       @pattern = @original_pattern
  454.       return
  455.     end
  456.     unless @driving or @altitude > 0           # 乗り物未使用時のアニメをオフに
  457.       @pattern = @original_pattern
  458.       return
  459.     end
  460.     tig_ev_update_animation
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ◎ プレイヤーとの同期
  464.   #--------------------------------------------------------------------------
  465.   alias tig_ev_ve_sync_with_player sync_with_player
  466.   def sync_with_player
  467.     tig_ev_ve_sync_with_player
  468.     @stop_count = $game_player.stop_count
  469.                      # 停止時のアニメを正しくシンクロさせる為のカウント同期追加
  470.    
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # ◎ 移動可能判定
  474.   #--------------------------------------------------------------------------
  475.   alias tig_ev_ve_movable? movable?
  476.   def movable?
  477.     return false if (@type == 4 and @altitude < MAX_ALTITUDE * 2)
  478.     return false if (@type == 5 and @altitude < MAX_ALTITUDE)
  479.                                      # 上昇中、下降中ならば動けない(追加乗り物)
  480.     return tig_ev_ve_movable?
  481.   end
  482.   #--------------------------------------------------------------------------
  483.   # ○ 待機中のプライオリティの取得
  484.   #--------------------------------------------------------------------------
  485.   def vehicle_priority
  486.     key = [@character_name, @character_index]
  487.     result = $riding_data.data_priority_type[key]
  488.     return result == nil ? 1 : result
  489.   end
  490.   #--------------------------------------------------------------------------
  491.   # ◎ 画面 Y 座標の取得
  492.   #--------------------------------------------------------------------------
  493.   alias tig_ev_ve_screen_y screen_y
  494.   def screen_y
  495.     if @type == 5
  496.       super - altitude / 5           # 魔法の絨毯を浮遊させる(高さの調節)
  497.     else
  498.       tig_ev_ve_screen_y
  499.     end
  500.   end
  501.   #--------------------------------------------------------------------------
  502.   # ● 乗り物に乗る
  503.   #--------------------------------------------------------------------------
  504.   def get_on
  505.     @driving = true
  506.     if [2, 4].include?(@type)     # 飛行船・大型飛行船の場合
  507.       @priority_type = 2          # プライオリティを「通常キャラの上」に変更
  508.     end
  509.     @bgm.play if @bgm.name != ""  # BGM 開始 (設定されていなければ今の曲を継続)
  510.     add_vehicle_states
  511.   end
  512.   #--------------------------------------------------------------------------
  513.   # ● 乗り物から降りる
  514.   #--------------------------------------------------------------------------
  515.   def get_off
  516.     @driving = false
  517.     unless [2, 4, 5].include?(@type)     # 飛行船・大型飛行船・魔法の絨毯の場合
  518.       @priority_type = vehicle_priority   # 本来のプライオリティに戻す
  519.       $game_player.ride_off_character     # 騎乗状態の解除
  520.     end
  521.     @direction = 4
  522.     remove_vehicle_state
  523.   end
  524.   #--------------------------------------------------------------------------
  525.   # ○ 乗り物ステートの取得
  526.   #--------------------------------------------------------------------------
  527.   def vehicle_states
  528.     states = []
  529.     case @type
  530.     when 0 ; states = Expansion_Vehicle::BOAT_STATE
  531.     when 1 ; states = Expansion_Vehicle::SHIP_STATE
  532.     when 2 ; states = Expansion_Vehicle::AIRSHIP_STATE
  533.     when 3 ; states = Expansion_Vehicle::HORSE_STATE
  534.     when 4 ; states = Expansion_Vehicle::BIG_AIRSHIP_STATE
  535.     when 5 ; states = Expansion_Vehicle::MAGIC_CARPET_STATE
  536.     end
  537.     return states
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ○ 乗り物ステートの付加
  541.   #--------------------------------------------------------------------------
  542.   def add_vehicle_states
  543.     for state in vehicle_states
  544.       $game_party.members.each {|actor|actor.add_state(state)}
  545.     end
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ○ 乗り物ステートの解除
  549.   #--------------------------------------------------------------------------
  550.   def remove_vehicle_state
  551.     for state in vehicle_states
  552.       $game_party.members.each {|actor|actor.remove_state(state)}
  553.     end
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ● 位置の変更 ※変数指定を組み込み
  557.   #       map_id : 移動先のマップID
  558.   #            x : 移動先マップのX座標
  559.   #            y : 移動先マップのY座標
  560.   #    variables : 変数指定するか?
  561.   #--------------------------------------------------------------------------
  562.   def set_location(map_id, x, y, variables = false)
  563.    
  564.     # 変数で指定の場合
  565.     if variables                           
  566.       map_id = $game_variables[map_id]
  567.       x = $game_variables[x]
  568.       y = $game_variables[y]
  569.     end
  570.    
  571.     @map_id = map_id
  572.     @x = x
  573.     @y = y
  574.     refresh
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ○ 乗り物を呼び出す
  578.   #     here : true = プレーヤーと同位置 false = プレーヤーの目の前
  579.   #--------------------------------------------------------------------------
  580.   def call(test = false, here = false)
  581.     return false if $game_player.event_vehicle_lock
  582.    
  583.     # 対象となる位置座標を取得                                             
  584.     if here # この場
  585.       x = $game_player.x
  586.       y = $game_player.y
  587.     else    # 目の前
  588.       x = $game_map.x_with_direction($game_player.x, $game_player.direction)
  589.       y = $game_map.y_with_direction($game_player.y, $game_player.direction)
  590.     end
  591.    
  592.     # 飛行船進入禁止エリア(拡張スクリプト設定)内で呼び出し禁止されているタイプ
  593.     if $game_map.airship_obstacle_area != nil and
  594.       $game_map.airship_obstacle_area.include?([x, y])            
  595.       return false if Expansion_Vehicle::CAN_T_CALL.include?(@type)
  596.     end
  597.    
  598.     # 他の乗り物がそこにある?
  599.     return false if $game_map.vehicle_pos_nt?(x, y)
  600.    
  601.     # タイプ別に通行判定・着陸判定
  602.     case @type
  603.     when 0  # 小型船
  604.       can_call = $game_map.boat_passable?(x, y)
  605.     when 1  # 大型船
  606.       can_call = $game_map.ship_passable?(x, y)
  607.     when 2  # 飛行船  
  608.       can_call = $game_map.airship_land_ok?(x, y)
  609.     when 3  # 馬
  610.       can_call = $game_map.horse_passable?(x, y)
  611.     when 4  # 大型飛行船
  612.       can_call = $game_map.big_airship_land_ok?(x, y)
  613.     when 5  # 魔法の絨毯
  614.       can_call = $game_map.airship_land_ok?(x, y)
  615.     end
  616.    
  617.     # 判定に問題なければ実際に呼ぶ
  618.     if can_call                                 
  619.       set_location($game_map.map_id, x, y) unless test
  620.       return true
  621.     else
  622.       return false
  623.     end
  624.   end
  625.   #--------------------------------------------------------------------------
  626.   # ○ この場に乗り物を呼び出す
  627.   #      このコマンドで呼んだ乗り物は、降りた時に消えてしまう。
  628.   #--------------------------------------------------------------------------
  629.   def call_here
  630.     call(false, true)
  631.   end
  632.   #--------------------------------------------------------------------------
  633.   # ○ 目の前に乗り物を呼び出せるかのテスト
  634.   #--------------------------------------------------------------------------
  635.   def call_test
  636.     return call(true)
  637.   end
  638.   #--------------------------------------------------------------------------
  639.   # ○ この場に乗り物を呼び出せるかのテスト
  640.   #--------------------------------------------------------------------------
  641.   def call_test_here
  642.     return call(true, true)
  643.   end  
  644.   #--------------------------------------------------------------------------
  645.   # ○ 一時的に乗り物を呼び出す
  646.   #      このコマンドで呼んだ乗り物は、降りた時に消えてしまう。
  647.   #--------------------------------------------------------------------------
  648.   def instant_call
  649.     @instant = true
  650.     call
  651.   end
  652.   #--------------------------------------------------------------------------
  653.   # ○ この場に一時的に乗り物を呼び出す
  654.   #      このコマンドで呼んだ乗り物は、降りた時に消えてしまう。
  655.   #--------------------------------------------------------------------------
  656.   def instant_call_here
  657.     @instant = true
  658.     call(false, true)
  659.   end
  660. end

  661. #==============================================================================
  662. # ■ Scene_Title
  663. #------------------------------------------------------------------------------
  664. #  タイトル画面の処理を行うクラスです。
  665. #==============================================================================

  666. class Scene_Title < Scene_Base
  667.   #--------------------------------------------------------------------------
  668.   # ◎ 各種ゲームオブジェクトの作成
  669.   #--------------------------------------------------------------------------
  670.   alias tig_ev_create_game_objects create_game_objects
  671.   def create_game_objects
  672.     tig_ev_create_game_objects
  673.     $riding_data = Riding_Data.new             # 騎乗型キャラクターのデータ生成
  674.   end
  675. end

  676. #==============================================================================
  677. # ■ AudioFile
  678. #------------------------------------------------------------------------------
  679. #  BGM、BGS、ME、SE のスーパークラスです。
  680. #==============================================================================

  681. class RPG::AudioFile
  682.   #--------------------------------------------------------------------------
  683.   # ○ ファイル(ネーム)の変更
  684.   #  名前の変更だけで曲を変更できるように
  685.   #--------------------------------------------------------------------------
  686.   def name=(name)
  687.     @name = name
  688.   end
  689. end

  690. #==============================================================================
  691. # ■ Game_Map
  692. #------------------------------------------------------------------------------
  693. #  マップを扱うクラスです。スクロールや通行可能判定などの機能を持っています。
  694. # このクラスのインスタンスは $game_map で参照されます。
  695. #==============================================================================

  696. class Game_Map
  697.   #--------------------------------------------------------------------------
  698.   # ○ 公開インスタンス変数
  699.   #--------------------------------------------------------------------------
  700.   attr_reader   :airship_obstacle_area            # 飛行船補助スクリプト連携用
  701.   #--------------------------------------------------------------------------
  702.   # ◎ セットアップ
  703.   #     map_id : マップ ID
  704.   # ※ 乗り物を別マップに乗り越した際の処理を追加
  705.   #--------------------------------------------------------------------------
  706.   alias tig_ev_setup setup
  707.   def setup(map_id)
  708.     tig_ev_setup(map_id)
  709.    
  710.     result = false
  711.     if $game_player.vehicle_event_data != nil  # イベント乗り物持ち越し時の処理
  712.       # マップ内に画像・名前が同じイベントが存在するなら乗り物を継続する
  713.       for event in @events.values
  714.         if event.name == $game_player.vehicle_event_data[0] and
  715.            event.character_name == $game_player.vehicle_event_data[1] and
  716.            event.character_index == $game_player.vehicle_event_data[2]
  717.           $game_player.vehicle_event_data[3] = event.id
  718.           if event.riding_type?
  719.             $game_player.ride_off_character
  720.             $game_player.ride_on(event)
  721.             key = [event.character_name, event.character_index]
  722.           end
  723.           $game_player.moveto($game_player.new_x, $game_player.new_y)
  724.           event.sync_with_player
  725.           result = true
  726.           break
  727.         end
  728.       end
  729.     end
  730.     unless result
  731.       event_vehicle_refresh     # イベント乗り物の初期化(何も乗っていない状態に)
  732.     end

  733.     interpreter.update
  734.    
  735.   end
  736.   #--------------------------------------------------------------------------
  737.   # ○ イベント乗り物のリフレッシュ
  738.   #--------------------------------------------------------------------------
  739.   def event_vehicle_refresh
  740.     $game_player.vehicle_event_data = nil
  741.     $game_player.event_vehicle_lock = false
  742.     if $game_player.vehicle_type == -1
  743.       $game_player.ride_off_character
  744.     end
  745.   end
  746.   #--------------------------------------------------------------------------
  747.   # ◎ 乗り物の作成
  748.   #--------------------------------------------------------------------------
  749.   alias tig_ev_create_vehicles create_vehicles
  750.   def create_vehicles
  751.     tig_ev_create_vehicles
  752.     @vehicles[3] = Game_Vehicle.new(3)    # 馬
  753.     @vehicles[4] = Game_Vehicle.new(4)    # 大型飛行船
  754.     @vehicles[5] = Game_Vehicle.new(5)    # 魔法の絨毯
  755.   end
  756.   #--------------------------------------------------------------------------
  757.   # ○ 馬の取得
  758.   #--------------------------------------------------------------------------
  759.   def horse
  760.     return @vehicles[3]
  761.   end
  762.   #--------------------------------------------------------------------------
  763.   # ○  大型飛行船の取得
  764.   #--------------------------------------------------------------------------
  765.   def big_airship
  766.     return @vehicles[4]
  767.   end
  768.   #--------------------------------------------------------------------------
  769.   # ○  魔法の絨毯の取得
  770.   #--------------------------------------------------------------------------
  771.   def magic_carpet
  772.     return @vehicles[5]
  773.   end
  774.   #--------------------------------------------------------------------------
  775.   # ○  プレイヤーの乗り物になっているイベントの取得
  776.   #--------------------------------------------------------------------------
  777.   def event_vehicle
  778.     return nil if $game_player.vehicle_event_data == nil
  779.     return @events[$game_player.vehicle_event_data[3]]
  780.   end
  781.   #--------------------------------------------------------------------------
  782.   # ○ 拡張乗り物用の通行障害判定
  783.   #     ※ 一部の乗り物が通過することができないタイルのIDをここで指定。
  784.   #--------------------------------------------------------------------------
  785.   def ex_obstacle?(tile_id)
  786.     if (2048..8191).include?(tile_id)
  787.       tile_id -= ((tile_id - 2048) % 48)
  788.     end
  789.     return [157,
  790.             160, 161, 162, 163, 164, 165, 166,
  791.             168, 169, 170, 171, 172, 174, 175,
  792.             184, 185, 186, 187, 188, 189, 190, 191,
  793.             200, 201, 202, 203, 204, 205, 206, 207,
  794.             208, 209, 210, 211, 212, 213, 214,
  795.             216, 217, 218, 219, 220, 221, 222,
  796.             226, 227, 228,
  797.             232, 233, 234, 235, 236, 237, 238,
  798.             241, 242,
  799.             248, 249, 250, 251, 252, 253, 254, 255,
  800.             2864, 3248, 3632, 4016,
  801.             2912, 3296, 3680, 4064].include?(tile_id)
  802.   end
  803.   #--------------------------------------------------------------------------
  804.   # ○ 拡張乗り物用の通行許可判定
  805.   #   ※ 浮遊型乗り物が越えることのできるタイルのIDをここで指定。
  806.   #--------------------------------------------------------------------------
  807.   def ex_pass?(tile_id)
  808.     if (2048..8191).include?(tile_id)
  809.       tile_id -= ((tile_id - 2048) % 48)
  810.     end
  811.     return [526, 527, 671, 679,
  812.             2048, 2096, 2240, 2336,
  813.             2432, 2528, 2624, 2720,
  814.             1536,
  815.             1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551,
  816.             1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567,
  817.             1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583,
  818.             1624, 1625].include?(tile_id)
  819.   end
  820.   #--------------------------------------------------------------------------
  821.   # ○ テーブル型オブジェクト判定
  822.   #   ※ オブジェクト型乗り物を置くことができるタイルのIDをここで指定。
  823.   #--------------------------------------------------------------------------
  824.   def ex_table?(tile_id)
  825.     if (2048..8191).include?(tile_id)
  826.       tile_id -= ((tile_id - 2048) % 48)
  827.     end
  828.     return [75, 131,
  829.             350, 352, 353, 354, 355,
  830.             680,
  831.             3152, 3536, 3920, 4304].include?(tile_id)
  832.   end
  833.   #--------------------------------------------------------------------------
  834.   # ○ 馬の通行可能判定
  835.   #    ※ passable? メソッドを部分改造したものです。
  836.   #--------------------------------------------------------------------------
  837.   def horse_passable?(x, y, flag = 0x01)
  838.     for event in events_xy(x, y)            # 座標が一致するイベントを調べる
  839.       next if event.tile_id == 0            # グラフィックがタイルではない
  840.       next if event.priority_type > 0       # [通常キャラの下] ではない
  841.       next if event.through                 # すり抜け状態
  842.       pass = @passages[event.tile_id]       # 通行属性を取得
  843.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  844.       return true if pass & flag == 0x00    # [○] : 通行可
  845.       return false if pass & flag == flag   # [×] : 通行不可
  846.     end
  847.     for i in [2, 1, 0]                      # レイヤーの上から順に調べる
  848.       tile_id = @map.data[x, y, i]          # タイル ID を取得
  849.       return false if tile_id == nil        # タイル ID 取得失敗 : 通行不可
  850.       pass = @passages[tile_id]             # 通行属性を取得
  851.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  852.       
  853.       return false if ex_obstacle?(tile_id) ### 拡張通行不可(特殊部分) ###
  854.       
  855.       return true if pass & flag == 0x00    # [○] : 通行可
  856.       return false if pass & flag == flag   # [×] : 通行不可
  857.     end
  858.     return false                            # 通行不可
  859.   end
  860.   #--------------------------------------------------------------------------
  861.   # ○ 魔法の絨毯の通行可能判定
  862.   #    ※ passable? メソッドを部分改造したものです。
  863.   #--------------------------------------------------------------------------
  864.   def magic_carpet_passable?(x, y, flag = 0x01)
  865.     for event in events_xy(x, y)            # 座標が一致するイベントを調べる
  866.       next if event.tile_id == 0            # グラフィックがタイルではない
  867.       next if event.priority_type > 0       # [通常キャラの下] ではない
  868.       next if event.through                 # すり抜け状態
  869.       pass = @passages[event.tile_id]       # 通行属性を取得
  870.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  871.       return true if pass & flag == 0x00    # [○] : 通行可
  872.       return false if pass & flag == flag   # [×] : 通行不可
  873.     end
  874.     for i in [2, 1, 0]                      # レイヤーの上から順に調べる
  875.       tile_id = @map.data[x, y, i]          # タイル ID を取得
  876.       return false if tile_id == nil        # タイル ID 取得失敗 : 通行不可
  877.       pass = @passages[tile_id]             # 通行属性を取得
  878.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  879.       
  880.       return false if ex_obstacle?(tile_id) ### 拡張通行不可(特殊部分) ###
  881.       return true if ex_pass?(tile_id)      ### 拡張通行許可(特殊部分) ###
  882.       
  883.       return true if pass & flag == 0x00    # [○] : 通行可
  884.       return false if pass & flag == flag   # [×] : 通行不可
  885.     end
  886.     return false                            # 通行不可
  887.   end
  888.   #--------------------------------------------------------------------------
  889.   # ○ フロートの通行可能判定
  890.   #    ※ passable? メソッドを部分改造したものです。
  891.   #--------------------------------------------------------------------------
  892.   def float_passable?(x, y, flag = 0x01)
  893. #    for event in events_xy(x, y)            # 座標が一致するイベントを調べる
  894. #      next if event.tile_id == 0            # グラフィックがタイルではない
  895. #      next if event.priority_type > 0       # [通常キャラの下] ではない
  896. #      next if event.through                 # すり抜け状態
  897. #      pass = @passages[event.tile_id]       # 通行属性を取得
  898. #      next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  899. #      return true if pass & flag == 0x00    # [○] : 通行可
  900. #      return false if pass & flag == flag   # [×] : 通行不可
  901. #    end
  902.     for i in [2, 1, 0]                      # レイヤーの上から順に調べる
  903.       tile_id = @map.data[x, y, i]          # タイル ID を取得
  904.       return false if tile_id == nil        # タイル ID 取得失敗 : 通行不可
  905.       pass = @passages[tile_id]             # 通行属性を取得
  906.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  907.       
  908.       return false if ex_obstacle?(tile_id) ### 拡張通行不可(特殊部分) ###
  909.       return true if ex_pass?(tile_id)      ### 拡張通行許可(特殊部分) ###
  910.       
  911.       #return true if pass & flag == 0x00    # [○] : 通行可 # コメントアウト
  912.       #return false if pass & flag == flag   # [×] : 通行不可 # コメントアウト
  913.     end
  914.     return false                            # 通行不可
  915.   end
  916.   #--------------------------------------------------------------------------
  917.   # ○ オブジェクトの設置可能判定
  918.   #    ※ passable? メソッドを部分改造したものです。
  919.   #--------------------------------------------------------------------------
  920.   def object_passable?(x, y, flag = 0x01)
  921.     for event in events_xy(x, y)            # 座標が一致するイベントを調べる
  922.       next if event.tile_id == 0            # グラフィックがタイルではない
  923.       next if event.priority_type > 0       # [通常キャラの下] ではない
  924.       next if event.through                 # すり抜け状態
  925.       pass = @passages[event.tile_id]       # 通行属性を取得
  926.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  927.       return true if pass & flag == 0x00    # [○] : 通行可
  928.       return false if pass & flag == flag   # [×] : 通行不可
  929.     end
  930.     for i in [2, 1, 0]                      # レイヤーの上から順に調べる
  931.       tile_id = @map.data[x, y, i]          # タイル ID を取得
  932.       return false if tile_id == nil        # タイル ID 取得失敗 : 通行不可
  933.       pass = @passages[tile_id]             # 通行属性を取得
  934.       next if pass & 0x10 == 0x10           # [☆] : 通行に影響しない
  935.       return true if pass & flag == 0x00    # [○] : 通行可
  936.       
  937.       return true if ex_table?(tile_id)     ### テーブル判定(特殊部分) ###

  938.       #return true if pass & flag == 0x00    # [○] : 通行可 # コメントアウト      
  939.       return false if pass & flag == flag   # [×] : 通行不可
  940.     end
  941.     return false                            # 通行不可
  942.   end
  943.   #--------------------------------------------------------------------------
  944.   # ◎ 飛行船の着陸可能判定
  945.   #     x : X 座標
  946.   #     y : Y 座標
  947.   #--------------------------------------------------------------------------
  948.   alias tig_ev_airship_land_ok? airship_land_ok?
  949.   def airship_land_ok?(x, y)
  950.     if $game_player.now_vehicle == @vehicles[4]  # 現在の乗り物が大型船ならば
  951.       return big_airship_land_ok?(x, y)           # 大型飛行船の着陸可能判定
  952.     else                                         # 飛行船の着陸可能判定
  953.       return false if hide_tile?(x, y)            # 物陰には着地不可
  954.       for i in [2, 1, 0]
  955.         return false if ex_obstacle?(@map.data[x, y, i]) # 拡張通行不可
  956.       end
  957.       return tig_ev_airship_land_ok?(x, y)       # 通常の着陸可能判定
  958.     end
  959.   end
  960.   #--------------------------------------------------------------------------
  961.   # ◎ 大型飛行船の着陸可能判定
  962.   #     x : X 座標
  963.   #     y : Y 座標
  964.   #--------------------------------------------------------------------------
  965.   def big_airship_land_ok?(x, y)
  966.     return false if hide_tile?(x, y)   # 物陰には着地不可
  967.     return passable?(x, y)             # 通常の通行判定
  968.   end
  969.   #--------------------------------------------------------------------------
  970.   # ○ 物陰か?判定
  971.   #     x : X 座標
  972.   #     y : Y 座標
  973.   #--------------------------------------------------------------------------
  974.   def hide_tile?(x, y)
  975.     tile_id = @map.data[x, y, 2]
  976.     if tile_id != nil
  977.       return @passages[tile_id] == 0x16
  978.     end
  979.     return false
  980.   end
  981.   #--------------------------------------------------------------------------
  982.   # ○ なんらかの乗り物があるか?
  983.   #     x : X 座標
  984.   #     y : Y 座標
  985.   #--------------------------------------------------------------------------
  986.   def vehicle_pos_nt?(x, y)
  987.     return true if boat.pos_nt?(x, y)
  988.     return true if ship.pos_nt?(x, y)
  989.     return true if airship.pos_nt?(x, y) and not airship.driving
  990.     return true if horse.pos_nt?(x, y)
  991.     return true if big_airship.pos_nt?(x, y) and not big_airship.driving
  992.     return true if magic_carpet.pos_nt?(x, y)
  993.     return false
  994.   end
  995.   #--------------------------------------------------------------------------
  996.   # ◎ BGM / BGS 自動切り替え
  997.   #    ※ 乗り物を降りた際のBGM再開の挙動を修正。
  998.   #--------------------------------------------------------------------------
  999.   alias tig_ev_autoplay autoplay
  1000.   def autoplay
  1001.     if $game_player.vehicle_type > -1            # 乗り物時の自動演奏
  1002.       $game_player.now_vehicle.bgm.play
  1003.       $game_player.walking_bgm = @map.bgm
  1004.       unless @map.autoplay_bgm                   # マップBGMが未設定なら
  1005.         $game_player.walking_bgm.name = ""        # 歩行再開時のBGMを無音に
  1006.       end
  1007.     else
  1008.       tig_ev_autoplay
  1009.     end
  1010.   end
  1011. end

  1012. #==============================================================================
  1013. # ■ Game_Character
  1014. #------------------------------------------------------------------------------
  1015. #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
  1016. # クラスのスーパークラスとして使用されます。
  1017. #==============================================================================

  1018. class Game_Character
  1019.   #--------------------------------------------------------------------------
  1020.   # ○ 公開インスタンス変数
  1021.   #--------------------------------------------------------------------------
  1022.   attr_reader   :altitude
  1023.   attr_reader   :stop_count
  1024.   attr_reader   :on_tile        # 壁タイル拡張用ダミー
  1025.   attr_reader   :turn_back      # 壁タイル拡張用ダミー
  1026.   attr_accessor :stop_count
  1027.   attr_accessor :riding_character_id
  1028.   attr_accessor :rided_character_id
  1029.   #--------------------------------------------------------------------------
  1030.   # ◎ オブジェクト初期化
  1031.   #--------------------------------------------------------------------------
  1032.   alias tig_ev_initialize initialize
  1033.   def initialize  
  1034.     tig_ev_initialize
  1035.     @riding_character_id = nil
  1036.     @rided_character_id = nil
  1037.     @altitude = 0
  1038.   end
  1039.   #--------------------------------------------------------------------------
  1040.   # ◎ 移動時の更新
  1041.   #    ※ 他のキャラクターへの騎乗時のアニメを停止させる。
  1042.   #--------------------------------------------------------------------------
  1043.   alias tig_ev_update_move update_move
  1044.   def update_move
  1045.     tig_ev_update_move
  1046.     if riding_character != nil           # 他のキャラクターへ騎乗している場合
  1047.       key = [riding_character.character_name, riding_character.character_index]
  1048.       unless $riding_data.data_object_type[key]  # オブジェクトタイプでなければ
  1049.         @anime_count = 0
  1050.       end
  1051.     end
  1052.   end
  1053.   #--------------------------------------------------------------------------
  1054.   # ○ 騎乗タイプの乗り物か?(オブジェクトタイプ含む)
  1055.   #--------------------------------------------------------------------------
  1056.   def riding_type?
  1057.     key = [@character_name, @character_index]
  1058.     return $riding_data.data_riding_pct_name.key?(key)
  1059.   end
  1060.   #--------------------------------------------------------------------------
  1061.   # ○ オブジェクトタイプ(の乗り物)か?
  1062.   #--------------------------------------------------------------------------
  1063.   def object_type?
  1064.     key = [@character_name, @character_index]
  1065.     return $riding_data.data_object_type.key?(key)
  1066.   end
  1067.   #--------------------------------------------------------------------------
  1068.   # ◎ キャラクター衝突判定
  1069.   #     x : X 座標
  1070.   #     y : Y 座標
  1071.   #    プレイヤーと乗り物を含め、通常キャラの衝突を検出する。
  1072.   #--------------------------------------------------------------------------
  1073.   alias tig_ev_collide_with_characters? collide_with_characters?
  1074.   def collide_with_characters?(x, y)
  1075.     if @priority_type == 1                     # 自分が通常キャラ
  1076.       if self.is_a?(Game_Player)                # プレイヤーの場合
  1077.         if riding_character != nil              # 騎乗している場合
  1078.           return true if $game_player.other_vehicle?(x, y) # その他の乗り物と衝突   
  1079.         end
  1080.       else                                      # プレイヤー以外の場合
  1081.         return true if $game_map.vehicle_pos_nt?(x, y) # 乗り物と衝突
  1082.       end
  1083.     end
  1084.     return tig_ev_collide_with_characters?(x, y)
  1085.   end
  1086.   #--------------------------------------------------------------------------
  1087.   # ◎ 画面 Z 座標の取得
  1088.   #    ※ 騎乗用画像追加により同位置画像が増える為、
  1089.   #       重なり順を座標に合わせて整理している。
  1090.   #--------------------------------------------------------------------------
  1091.   alias tig_ev_screen_z screen_z
  1092.   def screen_z
  1093.     if riding_character != nil
  1094.       return riding_character.screen_z + 1
  1095.     end
  1096.     return tig_ev_screen_z + (screen_y / 18) * 3   
  1097.   end   
  1098.   #--------------------------------------------------------------------------
  1099.   # ◎ 茂み深さの更新
  1100.   #    ※ 騎乗したキャラクターに茂み処理がされるのを防ぐ。
  1101.   #--------------------------------------------------------------------------
  1102.   alias tig_ev_update_bush_depth update_bush_depth
  1103.   def update_bush_depth
  1104.     if self.is_a?(Game_Player) and $game_player.now_vehicle != nil
  1105.       return @bush_depth = 0
  1106.     elsif self.is_a?(Game_Vehicle) and @type == 5
  1107.       return @bush_depth = 0
  1108.     elsif riding_character != nil
  1109.       return @bush_depth = 0 unless riding_character.object_type?
  1110.     end
  1111.     return tig_ev_update_bush_depth
  1112.   end
  1113.   #--------------------------------------------------------------------------
  1114.   # ○ 他のキャラクターにのる
  1115.   #--------------------------------------------------------------------------
  1116.   def ride_on(character, test = false)
  1117.     return false if riding_character != nil         # 既に騎乗中なら騎乗不可
  1118.     return false if character.rided_character != nil
  1119.                                        # すでに乗り手がいるキャラへは騎乗不可
  1120.     return true if test                # テストならばここで true を返して終了
  1121.    
  1122.     if character.is_a?(Game_Player)
  1123.       @riding_character_id = 0
  1124.     elsif character.is_a?(Game_Vehicle)
  1125.       @riding_character_id = -1
  1126.       @riding_character_id -= character.type
  1127.     else
  1128.       @riding_character_id = character.id
  1129.     end
  1130.     if self.is_a?(Game_Player)
  1131.       character.rided_character_id = 0
  1132.     elsif self.is_a?(Game_Vehicle)
  1133.       character.rided_character_id = -1
  1134.       character.rided_character_id -= @type
  1135.     else
  1136.       character.rided_character_id = @id
  1137.     end   
  1138.     character.sync_with_rided
  1139.     return true
  1140.   end
  1141.   #--------------------------------------------------------------------------
  1142.   # ○ 自分が乗り物にしているキャラクター
  1143.   #--------------------------------------------------------------------------
  1144.   def riding_character
  1145.     return if @riding_character_id == nil
  1146.     if @riding_character_id == 0
  1147.       return $game_player
  1148.     elsif @riding_character_id < 0
  1149.       return $game_map.vehicles[@riding_character_id.abs - 1]
  1150.     else
  1151.       return $game_map.events[@riding_character_id]
  1152.     end
  1153.   end
  1154.   #--------------------------------------------------------------------------
  1155.   # ○ 自分の乗り手となっているキャラクター
  1156.   #--------------------------------------------------------------------------
  1157.   def rided_character
  1158.     return if @rided_character_id == nil
  1159.     if @rided_character_id == 0
  1160.       return $game_player
  1161.     elsif @rided_character_id < 0
  1162.       return $game_map.vehicles[@rided_character_id.abs - 1]
  1163.     else
  1164.       return $game_map.events[@rided_character_id]
  1165.     end
  1166.   end
  1167.   #--------------------------------------------------------------------------
  1168.   # ○ 他のキャラクターからおりる
  1169.   #--------------------------------------------------------------------------
  1170.   def ride_off_character(test = false)
  1171.     return false if riding_character == nil     # 騎乗してなければ降りれない
  1172.     return true if test                # テストならばここで true を返して終了

  1173.     riding_character.rided_character_id = nil
  1174.     @riding_character_id = nil
  1175.     return true
  1176.   end
  1177.   #--------------------------------------------------------------------------
  1178.   # ○ 騎乗キャラクターとの同期
  1179.   #--------------------------------------------------------------------------
  1180.   def sync_with_rided
  1181.     @x = rided_character.x
  1182.     @y = rided_character.y
  1183.     @real_x = rided_character.real_x
  1184.     @real_y = rided_character.real_y
  1185.     @direction = @direction_fix ? @direction : rided_character.direction
  1186.     update_bush_depth
  1187.     @stop_count = rided_character.stop_count
  1188.   end
  1189.   #--------------------------------------------------------------------------
  1190.   # ○ 段差マップ用・拡張通過判定(ダミーメソッド)
  1191.   #--------------------------------------------------------------------------
  1192.   def ex_passable(direction, test = false)
  1193.     return true
  1194.   end
  1195. end

  1196. #==============================================================================
  1197. # ■ Game_Event
  1198. #------------------------------------------------------------------------------
  1199. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  1200. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  1201. #==============================================================================

  1202. class Game_Event < Game_Character
  1203.   #--------------------------------------------------------------------------
  1204.   # ○ 公開インスタンス変数
  1205.   #--------------------------------------------------------------------------
  1206.   attr_accessor :passable_type
  1207.   attr_accessor :priority_type
  1208.   #--------------------------------------------------------------------------
  1209.   # ◎ オブジェクト初期化
  1210.   #     map_id : マップ ID
  1211.   #     event  : イベント (RPG::Event)
  1212.   #--------------------------------------------------------------------------
  1213.   alias tig_ev_event_initialize initialize
  1214.   def initialize(map_id, event)
  1215.     tig_ev_event_initialize(map_id, event)
  1216.     set_passable_setting
  1217.   end
  1218.   #--------------------------------------------------------------------------
  1219.   # ○ イベントの通行判定設定
  1220.   #--------------------------------------------------------------------------  
  1221.   def set_passable_setting
  1222.     @passable_type = -1
  1223.     @event.name = @event.name.sub(/[\<<]小型船[\>>]/, "")
  1224.     @passable_type = 0 if $& != nil
  1225.     @event.name = @event.name.sub(/[\<<]大型船[\>>]/, "")
  1226.     @passable_type = 1 if $& != nil
  1227.     @event.name = @event.name.sub(/[\<<]馬[\>>]/, "")
  1228.     @passable_type = 2 if $& != nil
  1229.     @event.name = @event.name.sub(/[\<<]フロート[\>>]/, "")
  1230.     @passable_type = 3 if $& != nil
  1231.   end
  1232.   #--------------------------------------------------------------------------
  1233.   # ○ 名前の取得
  1234.   #--------------------------------------------------------------------------
  1235.   def name
  1236.     return @event.name
  1237.   end
  1238.   #--------------------------------------------------------------------------
  1239.   # ◎ フレーム更新
  1240.   #--------------------------------------------------------------------------
  1241.   alias tig_ev_update update
  1242.   def update
  1243.     if riding_character != nil
  1244.       riding_character.sync_with_rided
  1245.     end
  1246.     tig_ev_update
  1247.   end
  1248.   #--------------------------------------------------------------------------
  1249.   # ◎ 自律移動の更新
  1250.   #--------------------------------------------------------------------------
  1251.   alias tig_ev_update_self_movement update_self_movement unless $@
  1252.   def update_self_movement
  1253.     return if rided_character != nil
  1254.     tig_ev_update_self_movement
  1255.   end
  1256.   #--------------------------------------------------------------------------
  1257.   # ○ プレイヤーとの同期
  1258.   #--------------------------------------------------------------------------
  1259.   def sync_with_player
  1260.     @x = $game_player.x
  1261.     @y = $game_player.y
  1262.     @real_x = $game_player.real_x
  1263.     @real_y = $game_player.real_y
  1264.     @direction = @direction_fix ? @direction : $game_player.direction
  1265.     update_bush_depth
  1266.     @stop_count = $game_player.stop_count
  1267.     @on_tile = $game_player.on_tile
  1268.     @turn_back = $game_player.turn_back
  1269.   end
  1270.   #--------------------------------------------------------------------------
  1271.   # ● マップ通行可能判定
  1272.   #     x : X 座標
  1273.   #     y : Y 座標
  1274.   #--------------------------------------------------------------------------
  1275.   def map_passable?(x, y)
  1276.     case @passable_type
  1277.     when 0  # 小型船
  1278.       return $game_map.boat_passable?(x, y)
  1279.     when 1  # 大型船
  1280.       return $game_map.ship_passable?(x, y)
  1281.     when 2  # 馬
  1282.       return $game_map.horse_passable?(x, y)
  1283.     when 3  # フロート
  1284.       return $game_map.float_passable?(x, y)
  1285.     else    # 徒歩
  1286.       return $game_map.passable?(x, y)
  1287.     end
  1288.   end
  1289.   #--------------------------------------------------------------------------
  1290.   # ● イベント起動
  1291.   #--------------------------------------------------------------------------
  1292.   #  lock(イベント起動時に主人公の方を向く動作)をする条件を
  1293.   #  イベント内にイベントコマンド・文章を表示が含まれている場合のみに
  1294.   #  限定する改変をしています。
  1295.   #  これにより、イベントへの乗り込み動作をスムーズに見せます。
  1296.   #--------------------------------------------------------------------------
  1297.   def start
  1298.     return if @list.size <= 1                   # 実行内容が空?
  1299.     @starting = true
  1300.    
  1301.     result = false                              ### 追加部分(ここから) ###
  1302.     for i in [email protected]
  1303.       result = true if @list[i].code == 101
  1304.     end                                         ### 追加部分(ここまで) ###
  1305.    
  1306.     lock if @trigger < 3 and result             #### 改変部分(この行) ####
  1307.    
  1308.     unless $game_map.interpreter.running?
  1309.       $game_map.interpreter.setup_starting_event
  1310.     end
  1311.   end
  1312. end

  1313. #==============================================================================
  1314. # ■ Game_Player
  1315. #------------------------------------------------------------------------------
  1316. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  1317. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  1318. #==============================================================================

  1319. class Game_Player < Game_Character
  1320.   #--------------------------------------------------------------------------
  1321.   # ○ 公開インスタンス変数
  1322.   #--------------------------------------------------------------------------
  1323.   attr_reader   :new_x
  1324.   attr_reader   :new_y
  1325.   attr_accessor :walking_bgm
  1326.   attr_accessor :vehicle_event_data
  1327.   attr_accessor :not_encounter_vehicle_id
  1328.   attr_accessor :event_vehicle_lock
  1329.   attr_accessor :follow_member_gathering  #【パーティーメンバーの追従】併用時用
  1330.   #--------------------------------------------------------------------------
  1331.   # ◎ オブジェクト初期化
  1332.   #--------------------------------------------------------------------------
  1333.   alias tig_ev_pl_initialize initialize
  1334.   def initialize
  1335.     tig_ev_pl_initialize

  1336.     @not_encounter_vehicle_id = Expansion_Vehicle::NOT_ENCOUNTER_VEHICIE_ID   
  1337.                                                   # 非遭遇乗り物IDの初期値設定
  1338.     @event_vehicle_lock = false
  1339.   end
  1340.   #--------------------------------------------------------------------------
  1341.   # ○ 今乗っている乗り物
  1342.   #--------------------------------------------------------------------------
  1343.   def now_vehicle
  1344.     if in_event_vehicle?
  1345.       return $game_map.events[@vehicle_event_data[3]] unless event_vehicle_object?
  1346.     end
  1347.     return nil if @vehicle_type == -1
  1348.     return $game_map.vehicles[@vehicle_type]
  1349.   end
  1350.   #--------------------------------------------------------------------------
  1351.   # ○ 今乗っている乗り物が騎乗タイプか?
  1352.   #--------------------------------------------------------------------------
  1353.   def now_vehicle_riding_type?
  1354.     return false if now_vehicle == nil
  1355.     return now_vehicle.riding_type?
  1356.   end
  1357.   #--------------------------------------------------------------------------
  1358.   # ○ イベント乗り物の取得
  1359.   #--------------------------------------------------------------------------
  1360.   def event_vehicle
  1361.     return nil unless in_event_vehicle?
  1362.     return $game_map.events[@vehicle_event_data[3]]
  1363.   end
  1364.   #--------------------------------------------------------------------------
  1365.   # ○ イベントに乗っているか判定
  1366.   #--------------------------------------------------------------------------
  1367.   def in_event_vehicle?
  1368.     return @vehicle_event_data != nil
  1369.   end
  1370.   #--------------------------------------------------------------------------
  1371.   # ○  イベント乗り物がオブジェクトタイプか?
  1372.   #--------------------------------------------------------------------------
  1373.   def event_vehicle_object?
  1374.     return false unless event_vehicle
  1375.     key = [event_vehicle.character_name, event_vehicle.character_index]
  1376.     return $riding_data.data_object_type[key]
  1377.   end
  1378.   #--------------------------------------------------------------------------
  1379.   # ○ 今乗っている乗り物と別の乗り物がそこにあるか?
  1380.   #--------------------------------------------------------------------------
  1381.   def other_vehicle?(x = @x, y = @y)
  1382.     return false if @vehicle_type == -1
  1383.     for vehicle in $game_map.vehicles
  1384.       if vehicle.pos?(x, y)
  1385.         return true if vehicle != now_vehicle
  1386.       end
  1387.     end
  1388.     return false
  1389.   end
  1390.   #--------------------------------------------------------------------------
  1391.   # ◎ 飛行船(もしくは大型飛行船)に乗っている状態判定
  1392.   #--------------------------------------------------------------------------
  1393.   alias tig_ev_airship? in_airship?
  1394.   def in_airship?
  1395.     return true if @vehicle_type == 4
  1396.     return tig_ev_airship?
  1397.   end
  1398.   #--------------------------------------------------------------------------
  1399.   # ◎ 移動可能判定
  1400.   #--------------------------------------------------------------------------
  1401.   alias tig_ev_pl_movable? movable?
  1402.   def movable?
  1403.     if [4, 5].include?(@vehicle_type)
  1404.       return false if moving?                     # 移動中
  1405.       return false if @move_route_forcing         # 移動ルート強制中
  1406.       return false if @vehicle_getting_on         # 乗る動作の途中
  1407.       return false if @vehicle_getting_off        # 降りる動作の途中
  1408.       return false if $game_message.visible       # メッセージ表示中
  1409.       return false unless $game_map.big_airship.movable? or
  1410.                           $game_map.magic_carpet.movable?
  1411.       return true
  1412.     else
  1413.       return tig_ev_pl_movable?
  1414.     end
  1415.   end
  1416.   #--------------------------------------------------------------------------
  1417.   # ◎ マップ通行可能判定
  1418.   #     x : X 座標
  1419.   #     y : Y 座標
  1420.   #--------------------------------------------------------------------------
  1421.   alias tig_ev_map_passable? map_passable?
  1422.   def map_passable?(x, y)
  1423.     if in_event_vehicle?
  1424.       return $game_map.event_vehicle.map_passable?(x, y)
  1425.     end
  1426.     case @vehicle_type
  1427.     when 3  
  1428.       return $game_map.horse_passable?(x, y)
  1429.     when 4
  1430.       return $game_map.big_airship_passable?(x, y)
  1431.     when 5
  1432.       return $game_map.magic_carpet_passable?(x, y)
  1433.     else   
  1434.       return tig_ev_map_passable?(x, y)
  1435.     end
  1436.   end
  1437.   #--------------------------------------------------------------------------
  1438.   # ◎ フレーム更新
  1439.   #--------------------------------------------------------------------------
  1440.   alias tig_ev_update update
  1441.   def update
  1442.     tig_ev_update
  1443.     update_event_vehicle
  1444.   end
  1445.   #--------------------------------------------------------------------------
  1446.   # ◎ 乗り物の乗降
  1447.   #--------------------------------------------------------------------------
  1448.   alias tig_ev_get_on_off_vehicle get_on_off_vehicle
  1449.   def get_on_off_vehicle
  1450.     return false unless movable?
  1451.     if in_event_vehicle?
  1452.       unless @event_vehicle_lock
  1453.         result = get_off_event_vehicle
  1454.         if result
  1455.           unless event_vehicle_object?
  1456.             @vehicle_getting_off_wait = true #【パーティーメンバーの追従】併用時用
  1457.             @vehicle_hide = false            #【パーティーメンバーの追従】併用時用
  1458.           end
  1459.           return result
  1460.         end
  1461.       else
  1462.         return false
  1463.       end
  1464.     else
  1465.       return tig_ev_get_on_off_vehicle
  1466.     end
  1467.   end
  1468.   #--------------------------------------------------------------------------
  1469.   # ● 乗り物の処理
  1470.   #--------------------------------------------------------------------------
  1471.   def update_vehicle
  1472.     return unless in_vehicle?
  1473.     vehicle = $game_map.vehicles[@vehicle_type]
  1474.     if @vehicle_getting_on                    # 乗る途中?
  1475.       vehicle.moveto(@x, @y)         # 乗っている間に自律移動してしまうのを防ぐ
  1476.       if not moving? and not @follow_member_gathering
  1477.         if vehicle.riding_type?
  1478.           unless [2, 4].include?(@vehicle_type)
  1479.             vehicle.priority_type = 1
  1480.           end
  1481.           ride_on(vehicle)
  1482.         else
  1483.           @transparent = true                 # 透明化
  1484.         end
  1485.         @direction = vehicle.direction        # 向きを変更
  1486.         @move_speed = vehicle.speed           # 移動速度を変更
  1487.         @vehicle_getting_on = false           # 乗る動作終了
  1488.       end
  1489.     elsif @vehicle_getting_off                # 降りる途中?
  1490.       if not moving? and vehicle.altitude == 0
  1491.         @vehicle_getting_off = false          # 降りる動作終了
  1492.         if vehicle.riding_type?
  1493.           vehicle.priority_type = vehicle.vehicle_priority
  1494.         else
  1495.           @transparent = false                  # 透明を解除         
  1496.         end
  1497.         if vehicle.instant
  1498.           vehicle.instant = false
  1499.           vehicle.set_location(0, 0, 0)
  1500.         end
  1501.         @vehicle_type = -1                    # 乗り物タイプ消去
  1502.         update_bush_depth
  1503.       end
  1504.     else                                      # 乗り物に乗っている
  1505.       vehicle.sync_with_player                # プレイヤーと同時に動かす
  1506.     end
  1507.   end
  1508.   #--------------------------------------------------------------------------
  1509.   # ◎ 乗り物に乗る
  1510.   #    現在乗り物に乗っていないことが前提。
  1511.   #--------------------------------------------------------------------------
  1512.   alias tig_ev_get_on_vehicle get_on_vehicle
  1513.   def get_on_vehicle
  1514.     if $game_map.horse.pos?(@x, @y)                 # 馬と重なっている?
  1515.       get_on_horse
  1516.       return true
  1517.     elsif $game_map.big_airship.pos?(@x, @y)        # 大型飛行船と重なっている?
  1518.       get_on_big_airship
  1519.       return true
  1520.     elsif $game_map.magic_carpet.pos?(@x, @y)       # 魔法の絨毯と重なっている?
  1521.       get_on_magic_carpet
  1522.       return true
  1523.     end
  1524.     return tig_ev_get_on_vehicle
  1525.   end
  1526.   #--------------------------------------------------------------------------
  1527.   # ◎ 乗り物から降りる
  1528.   #    現在乗り物に乗っていることが前提。
  1529.   #--------------------------------------------------------------------------
  1530.   alias tig_ev_get_off_vehicle get_off_vehicle
  1531.   def get_off_vehicle
  1532.     return false if other_vehicle?
  1533.     return false if $game_map.hide_tile?(x, y)
  1534.     if @vehicle_type < 2
  1535.       return false unless tig_ev_get_off_vehicle
  1536.     elsif @vehicle_type == 2
  1537.       return false unless tig_ev_get_off_vehicle
  1538.       @direction = 4
  1539.     else
  1540.       if @vehicle_type == 3
  1541.         return false unless $game_map.events_xy(@x, @y).empty?
  1542.         @direction = 2
  1543.       elsif @vehicle_type == 4 or @vehicle_type == 5
  1544.         return false unless airship_land_ok?(@x, @y)
  1545.         @direction = 4
  1546.       end
  1547.       now_vehicle.get_off                           # 降りる処理
  1548.       @vehicle_getting_off = true                   # 降りる動作の開始
  1549.       @move_speed = 4                               # 移動速度を戻す
  1550.       @through = false                              # すり抜け OFF
  1551.       @walking_bgm.play                             # 歩行時の BGM 復帰
  1552.       make_encounter_count                          # エンカウント初期化
  1553.     end
  1554.     return true
  1555.   end
  1556.   #--------------------------------------------------------------------------
  1557.   # ○ 馬に乗る
  1558.   #--------------------------------------------------------------------------
  1559.   def get_on_horse
  1560.     @vehicle_getting_on = true        # 乗り込み中フラグ
  1561.     @vehicle_type = 3                 # 乗り物タイプ設定
  1562.     @walking_bgm = RPG::BGM::last     # 歩行時の BGM 記憶
  1563.     $game_map.horse.get_on            # 乗り込み処理
  1564.   end
  1565.   #--------------------------------------------------------------------------
  1566.   # ○ 大型飛行船に乗る
  1567.   #--------------------------------------------------------------------------
  1568.   def get_on_big_airship
  1569.     @vehicle_getting_on = true        # 乗る動作の開始
  1570.     @vehicle_type = 4                 # 乗り物タイプ設定
  1571.     @through = true                   # すり抜け ON
  1572.     @walking_bgm = RPG::BGM::last     # 歩行時の BGM 記憶
  1573.     $game_map.big_airship.get_on      # 乗り込み処理
  1574.   end
  1575.   #--------------------------------------------------------------------------
  1576.   # ○ 魔法の絨毯に乗る
  1577.   #--------------------------------------------------------------------------
  1578.   def get_on_magic_carpet
  1579.     @vehicle_getting_on = true        # 乗る動作の開始
  1580.     @vehicle_type = 5                 # 乗り物タイプ設定
  1581.     @walking_bgm = RPG::BGM::last     # 歩行時の BGM 記憶
  1582.     $game_map.magic_carpet.get_on     # 乗り込み処理
  1583.   end
  1584.   #--------------------------------------------------------------------------
  1585.   # ○ イベントに乗る
  1586.   #--------------------------------------------------------------------------
  1587.   def get_on_event(event_id, test = false)
  1588.     vehicle = $game_map.events[event_id]
  1589.     return false if in_vehicle?
  1590.     return false if in_event_vehicle?
  1591.     return false if riding_character != nil
  1592.     return false if vehicle.rided_character != nil
  1593.     return false if vehicle.moving?
  1594.     return true if test

  1595.     @vehicle_getting_on = true                  # 乗り込み中フラグ
  1596.    
  1597.     @vehicle_event_data = []                    # イベント乗り物データ登録
  1598.     @vehicle_event_data[0] = vehicle.name
  1599.     @vehicle_event_data[1] = vehicle.character_name
  1600.     @vehicle_event_data[2] = vehicle.character_index
  1601.     @vehicle_event_data[3] = vehicle.id
  1602.     key = [vehicle.character_name, vehicle.character_index]
  1603.     if $riding_data.data_priority_type[key] == 0
  1604.       @vehicle_event_data[4] = vehicle.priority_type
  1605.       vehicle.priority_type = 0
  1606.     end
  1607.     vehicle.stop_count = -20
  1608.     front_x = $game_map.x_with_direction(@x, @direction)
  1609.     front_y = $game_map.y_with_direction(@y, @direction)
  1610.     if vehicle.x == front_x and vehicle.y == front_y
  1611.       unless $riding_data.data_object_type[key]
  1612.         if @follow_member_gathering != nil
  1613.           @follow_member_gathering = true  # 【パーティーメンバーの追従】併用時用
  1614.         end
  1615.         force_move_forward                         # 一歩前進
  1616.       end
  1617.     end
  1618.     return true
  1619.   end
  1620.   #--------------------------------------------------------------------------
  1621.   # ○ イベント乗り物の処理
  1622.   #--------------------------------------------------------------------------
  1623.   def update_event_vehicle
  1624.     return unless in_event_vehicle?
  1625.     vehicle = $game_map.events[@vehicle_event_data[3]]
  1626.     key = [vehicle.character_name, vehicle.character_index]
  1627.     if @vehicle_getting_on                    # 乗る途中?
  1628.       if not moving? and not @follow_member_gathering
  1629.         if @vehicle_event_data[4] != nil
  1630.           vehicle.priority_type = 1
  1631.         end
  1632.         if vehicle.riding_type?
  1633.           if $riding_data.data_object_type[key]
  1634.             vehicle.set_direction(@direction)
  1635.           end
  1636.           ride_on(vehicle)
  1637.         else
  1638.           @transparent = true                 # 透明化
  1639.         end
  1640.         @vehicle_getting_on = false           # 乗る動作終了
  1641.         @through = false
  1642.       end
  1643.     elsif @vehicle_getting_off                # 降りる途中?
  1644.       if not moving?
  1645.         if @vehicle_event_data[4] != nil
  1646.           vehicle.priority_type = @vehicle_event_data[4]
  1647.         end
  1648.         @vehicle_getting_off = false          # 降りる動作終了
  1649.         key = [$game_map.map_id, @vehicle_event_data[3], "D"]
  1650.         $game_self_switches[key] = true
  1651.         $game_map.need_refresh = true
  1652.         $game_player.vehicle_event_data = nil
  1653.         update_bush_depth
  1654.       end
  1655.     else
  1656.       vehicle.sync_with_player                # イベント位置を同期
  1657.     end
  1658.   end
  1659.   #--------------------------------------------------------------------------
  1660.   # ○ イベントから降りる処理
  1661.   #--------------------------------------------------------------------------
  1662.   def get_off_event_vehicle
  1663.     vehicle = $game_map.event_vehicle
  1664.     front_x = $game_map.x_with_direction(@x, @direction)
  1665.     front_y = $game_map.y_with_direction(@y, @direction)
  1666.     key = [vehicle.character_name, vehicle.character_index]
  1667.     if [0, 1, 3].include?(vehicle.passable_type)
  1668.       return false unless tig_ev_map_passable?(front_x, front_y)   # 接岸できない
  1669.       if $riding_data.data_priority_type[key] == 0
  1670.         @vehicle_event_data[4] = vehicle.priority_type
  1671.         vehicle.priority_type = 0
  1672.       end
  1673.       force_move_forward
  1674.     elsif $riding_data.data_object_type[key] and
  1675.           vehicle.priority_type == 1
  1676.       @vehicle_getting_off_wait = false   #【パーティーメンバーの追従】併用時用
  1677.       return false if collide_with_characters?(front_x, front_y)
  1678.       return false unless $game_map.object_passable?(front_x, front_y)
  1679.       return false unless vehicle.ex_passable(@direction)
  1680.       case @direction
  1681.       when 2;  vehicle.move_down(false)
  1682.       when 4;  vehicle.move_left(false)
  1683.       when 6;  vehicle.move_right(false)
  1684.       when 8;  vehicle.move_up(false)
  1685.       end
  1686.       vehicle.moveto(front_x, front_y)
  1687.     end
  1688.     if vehicle.riding_type?
  1689.       ride_off_character
  1690.     else
  1691.       @transparent = false                       # 透明を解除
  1692.     end
  1693.     vehicle.stop_count = 0
  1694.     @vehicle_getting_off = true
  1695.     return true
  1696.   end
  1697.   #--------------------------------------------------------------------------
  1698.   # ○ イベントからの強制離脱
  1699.   #--------------------------------------------------------------------------
  1700.   def compulsory_off_event_vehicle(erase = false)
  1701.     vehicle = $game_map.event_vehicle
  1702.     if vehicle and vehicle.riding_type?
  1703.       ride_off_character
  1704.     else
  1705.       @transparent = false                       # 透明を解除     
  1706.     end
  1707.     @vehicle_getting_off_wait = true      #【パーティーメンバーの追従】併用時用
  1708.     @vehicle_hide = false                 #【パーティーメンバーの追従】併用時用
  1709.     $game_player.vehicle_event_data = nil
  1710.     update_bush_depth
  1711.     vehicle.erase if erase
  1712.   end
  1713.   #--------------------------------------------------------------------------
  1714.   # ● エンカウントの更新
  1715.   #--------------------------------------------------------------------------
  1716.   def update_encounter
  1717.     return if $TEST and Input.press?(Input::CTRL)   # テストプレイ中?
  1718.     return if @not_encounter_vehicle_id.include?(@vehicle_type)    ## 変更点
  1719.     if $game_player.in_airship?              # 飛行中なら          ## 追加点
  1720.       @encounter_count -= 1                  # カウントを 1 減らす ## 追加点
  1721.     elsif $game_map.bush?(@x, @y)            # 茂みなら            ## 変更点
  1722.       @encounter_count -= 2                  # カウントを 2 減らす
  1723.     else                                     # 茂み以外なら
  1724.       @encounter_count -= 1                  # カウントを 1 減らす
  1725.     end
  1726.   end
  1727. end

  1728. #==============================================================================
  1729. # ■ Sprite_Character
  1730. #------------------------------------------------------------------------------
  1731. #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
  1732. # 監視し、スプライトの状態を自動的に変化させます。
  1733. #==============================================================================

  1734. class Sprite_Character < Sprite_Base
  1735.   #--------------------------------------------------------------------------
  1736.   # ◎ フレーム更新
  1737.   #--------------------------------------------------------------------------
  1738.   alias tig_ev_update update
  1739.   def update
  1740.     tig_ev_update
  1741.     riding_positioning
  1742.   end
  1743.   #--------------------------------------------------------------------------
  1744.   # ○ 騎乗用画像のファイルの名前取得
  1745.   #--------------------------------------------------------------------------
  1746.   def riding_pct_name
  1747.     key = [@character.character_name, @character.character_index]
  1748.     return $riding_data.data_riding_pct_name[key]
  1749.   end
  1750.   #--------------------------------------------------------------------------
  1751.   # ○ 騎乗用画像のファイルのインデックス取得
  1752.   #--------------------------------------------------------------------------
  1753.   def riding_pct_index
  1754.     key = [@character.character_name, @character.character_index]
  1755.     return $riding_data.data_riding_pct_index[key]
  1756.   end
  1757.   #--------------------------------------------------------------------------
  1758.   # ○ 騎乗しているキャラクターの取得
  1759.   #--------------------------------------------------------------------------
  1760.   def riding_character
  1761.     return @character.riding_character
  1762.   end
  1763.   #--------------------------------------------------------------------------
  1764.   # ○ 騎乗しているキャラクターの取得
  1765.   #--------------------------------------------------------------------------
  1766.   def rided_character
  1767.     return @character.rided_character
  1768.   end
  1769.   #--------------------------------------------------------------------------
  1770.   # ○ 騎乗時のX座標修正値の取得
  1771.   #--------------------------------------------------------------------------
  1772.   def riding_positioning_x(key_character, base_character)
  1773.     key = [key_character.character_name, key_character.character_index]
  1774.     return 0 unless $riding_data.data_positioning_down.key?(key)
  1775.     pattern = base_character.pattern
  1776.     pattern = 1 if pattern == 3
  1777.     case base_character.direction
  1778.     when 2
  1779.       return $riding_data.data_positioning_down[key][pattern][0]
  1780.     when 4
  1781.       return $riding_data.data_positioning_left[key][pattern][0]
  1782.     when 6
  1783.       return $riding_data.data_positioning_right[key][pattern][0]
  1784.     when 8
  1785.       return $riding_data.data_positioning_up[key][pattern][0]
  1786.     end
  1787.   end
  1788.   #--------------------------------------------------------------------------
  1789.   # ○ 騎乗時のY座標修正値の取得
  1790.   #--------------------------------------------------------------------------
  1791.   def riding_positioning_y(key_character, base_character)
  1792.     key = [key_character.character_name, key_character.character_index]
  1793.     return 0 unless $riding_data.data_positioning_down.key?(key)
  1794.     pattern = base_character.pattern
  1795.     pattern = 1 if pattern == 3
  1796.     case base_character.direction
  1797.     when 2
  1798.       return $riding_data.data_positioning_down[key][pattern][1]
  1799.     when 4
  1800.       return $riding_data.data_positioning_left[key][pattern][1]
  1801.     when 6
  1802.       return $riding_data.data_positioning_right[key][pattern][1]
  1803.     when 8
  1804.       return $riding_data.data_positioning_up[key][pattern][1]
  1805.     end
  1806.   end
  1807.   #--------------------------------------------------------------------------
  1808.   # ◎ 騎乗時の位置補正
  1809.   #--------------------------------------------------------------------------
  1810.   def riding_positioning
  1811.     if riding_character != nil
  1812.       key = [riding_character.character_name, riding_character.character_index]
  1813.       unless $riding_data.data_object_type[key]
  1814.         self.x += riding_positioning_x(riding_character, riding_character)
  1815.         self.y = riding_character.screen_y
  1816.         self.y += riding_positioning_y(riding_character, riding_character)
  1817.       end
  1818.     end
  1819.     if rided_character != nil
  1820.       key = [@character.character_name, @character.character_index]
  1821.       if $riding_data.data_object_type[key]
  1822.         self.x += riding_positioning_x(@character, rided_character)
  1823.         self.y += riding_positioning_y(@character, rided_character)
  1824.       end
  1825.     end
  1826.   end
  1827.   #--------------------------------------------------------------------------
  1828.   # ◎ 転送元ビットマップの更新
  1829.   #--------------------------------------------------------------------------
  1830.   alias tig_ev_update_bitmap update_bitmap
  1831.   def update_bitmap
  1832.     tig_ev_update_bitmap
  1833.     if @character.rided_character != nil  
  1834.       return if @back_seeing == true
  1835.       return if riding_pct_name == nil
  1836.       if @ride_sprite == nil or
  1837.          @riding_pct_name != riding_pct_name or
  1838.          @riding_pct_index != riding_pct_index
  1839.         
  1840.         @riding_pct_name = riding_pct_name
  1841.         @riding_pct_index = riding_pct_index
  1842.         @ride_sprite = ::Sprite.new(viewport)
  1843.         file_name = @riding_pct_name == "self" ? @character.character_name : @riding_pct_name
  1844.         @ride_sprite.bitmap = Cache.character(file_name)
  1845.         sign = file_name[/^[\!\$]./]
  1846.         if sign != nil and sign.include?('$')
  1847.           @rcw = @ride_sprite.bitmap.width / 3
  1848.           @rch = @ride_sprite.bitmap.height / 4
  1849.         else
  1850.           @rcw = @ride_sprite.bitmap.width / 12
  1851.           @rch = @ride_sprite.bitmap.height / 8
  1852.         end
  1853.         @ride_sprite.ox = @rcw / 2
  1854.         @ride_sprite.oy = @rch
  1855.       end
  1856.     else
  1857.       dispose_ride_sprite
  1858.     end
  1859.   end
  1860.   #--------------------------------------------------------------------------
  1861.   # ◎ 転送元矩形の更新
  1862.   #--------------------------------------------------------------------------
  1863.   alias tig_ev_update_src_rect update_src_rect
  1864.   def update_src_rect
  1865.     tig_ev_update_src_rect
  1866.     dispose_ride_sprite if @back_seeing == true
  1867.     return if @ride_sprite == nil
  1868.    
  1869.     index = @riding_pct_name == "self" ? @character.character_index : @riding_pct_index
  1870.     pattern = @character.pattern < 3 ? @character.pattern : 1
  1871.     sx = (index % 4 * 3 + pattern) * @rcw
  1872.     sy = (index / 4 * 4 + (@character.direction - 2) / 2) * @rch
  1873.     @ride_sprite.src_rect.set(sx, sy, @rcw, @rch)
  1874.     @ride_sprite.x = @character.screen_x
  1875.     @ride_sprite.y = @character.screen_y
  1876.     @ride_sprite.z = @character.screen_z + 2
  1877.     @ride_sprite.viewport = viewport

  1878.     if @riding_pct_name == "self" and rided_character.direction == 8
  1879.       @ride_sprite.x = -50
  1880.     end
  1881.     key = [@character.character_name, @character.character_index]
  1882.     if $riding_data.data_object_type[key]
  1883.       @ride_sprite.x += riding_positioning_x(@character, rided_character)
  1884.       @ride_sprite.y += riding_positioning_y(@character, rided_character)
  1885.     end
  1886.   end
  1887.   #--------------------------------------------------------------------------
  1888.   # ◎ 解放
  1889.   #--------------------------------------------------------------------------
  1890.   alias tig_ev_dispose dispose
  1891.   def dispose
  1892.     tig_ev_dispose
  1893.     dispose_ride_sprite
  1894.   end
  1895.   #--------------------------------------------------------------------------
  1896.   # ◎ 騎乗用スプライトの消去
  1897.   #--------------------------------------------------------------------------
  1898.   def dispose_ride_sprite
  1899.     if @ride_sprite != nil
  1900.       @ride_sprite.dispose
  1901.       @ride_sprite = nil
  1902.     end
  1903.   end
  1904. end

  1905. #==============================================================================
  1906. # ■ Spriteset_Map
  1907. #------------------------------------------------------------------------------
  1908. #  マップ画面のスプライトやタイルマップなどをまとめたクラスです。このクラスは
  1909. # Scene_Map クラスの内部で使用されます。
  1910. #==============================================================================

  1911. class Spriteset_Map
  1912.   #--------------------------------------------------------------------------
  1913.   # ◎ 飛行船の影スプライトの更新
  1914.   #--------------------------------------------------------------------------
  1915.   alias tig_ev_update_shadow update_shadow
  1916.   def update_shadow
  1917.     @shadow_sprite.z = 100
  1918.     if $game_map.big_airship.altitude > 0
  1919.       @shadow_sprite.x = $game_map.big_airship.screen_x
  1920.       @shadow_sprite.y = $game_map.big_airship.screen_y + $game_map.big_airship.altitude
  1921.       @shadow_sprite.opacity = $game_map.big_airship.altitude * 4
  1922.       @shadow_sprite.update
  1923.     elsif $game_map.magic_carpet.altitude > 0
  1924.       if $game_player.on_tile == true
  1925.         @shadow_sprite.viewport = @viewport4
  1926.       else
  1927.         @shadow_sprite.viewport = @viewport1
  1928.       end
  1929.       @shadow_sprite.x = $game_map.magic_carpet.screen_x
  1930.       @shadow_sprite.y = $game_map.magic_carpet.screen_y + $game_map.magic_carpet.altitude / 5
  1931.       @shadow_sprite.opacity = $game_map.magic_carpet.altitude * 8
  1932.       @shadow_sprite.update
  1933.     else
  1934.       tig_ev_update_shadow
  1935.     end
  1936.   end
  1937. end


  1938. #==============================================================================
  1939. # ■ Game_Interpreter
  1940. #------------------------------------------------------------------------------
  1941. #  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
  1942. # Game_Troop クラス、Game_Event クラスの内部で使用されます。
  1943. #==============================================================================

  1944. class Game_Interpreter
  1945.   #--------------------------------------------------------------------------
  1946.   # ◎ 乗り物の乗降
  1947.   #--------------------------------------------------------------------------
  1948.   alias tig_ev_command_206 command_206
  1949.   def command_206
  1950.     @wait_count = 2       #【パーティーメンバーの追従】併用時にあったほうがよい
  1951.     return tig_ev_command_206
  1952.   end
  1953.   #--------------------------------------------------------------------------
  1954.   # ○ 小型船
  1955.   #--------------------------------------------------------------------------
  1956.   def boat
  1957.     return $game_map.boat
  1958.   end
  1959.   #--------------------------------------------------------------------------
  1960.   # ○ 大型船
  1961.   #--------------------------------------------------------------------------
  1962.   def ship
  1963.     return $game_map.ship
  1964.   end
  1965.   #--------------------------------------------------------------------------
  1966.   # ○ 飛行船
  1967.   #--------------------------------------------------------------------------
  1968.   def airship
  1969.     return $game_map.airship
  1970.   end
  1971.   #--------------------------------------------------------------------------
  1972.   # ○ 馬
  1973.   #--------------------------------------------------------------------------
  1974.   def horse
  1975.     return $game_map.horse
  1976.   end
  1977.   #--------------------------------------------------------------------------
  1978.   # ○ 大型飛行船
  1979.   #--------------------------------------------------------------------------
  1980.   def big_airship
  1981.     return $game_map.big_airship
  1982.   end
  1983.   #--------------------------------------------------------------------------
  1984.   # ○ 魔法の絨毯
  1985.   #--------------------------------------------------------------------------
  1986.   def magic_carpet
  1987.     return $game_map.magic_carpet
  1988.   end
  1989.   #--------------------------------------------------------------------------
  1990.   # ○ プレーヤーがイベントに乗る
  1991.   # ※ 乗り物にするイベントの「スクリプト」コマンドで実行する。
  1992.   #--------------------------------------------------------------------------
  1993.   def get_on_event(test = false)
  1994.     if @event_id > 0
  1995.       return false if $game_player.event_vehicle_lock
  1996.       return $game_player.get_on_event(@event_id, test)
  1997.     else  
  1998.       return false
  1999.     end
  2000.   end
  2001.   #--------------------------------------------------------------------------
  2002.   # ○ プレーヤーがイベントに乗れるかのテスト
  2003.   #  ※ 乗り物にするイベントの「スクリプト」コマンドで実行する。
  2004.   #--------------------------------------------------------------------------
  2005.   def get_on_event_test
  2006.     return get_on_event(true)
  2007.   end
  2008.   #--------------------------------------------------------------------------
  2009.   # ○ プレイヤーがイベント乗り物に乗っているかの判定
  2010.   #    word : 指定語句
  2011.   # ※ 指定語句がなければ乗り物にのっているかどうかを判定
  2012.   #     あればその語句が名前に含まれている乗り物にのっているかを判定
  2013.   #--------------------------------------------------------------------------
  2014.   def player_in_event_vehicle(word = nil)
  2015.     return false unless $game_player.in_event_vehicle?
  2016.     return true if word == nil
  2017.     return $game_map.event_vehicle.name.include?(word)
  2018.   end
  2019.   #--------------------------------------------------------------------------
  2020.   # ○ プレーヤーのイベント乗り物をロックする
  2021.   #--------------------------------------------------------------------------  
  2022.   def event_vehicle_lock
  2023.     $game_player.event_vehicle_lock = true
  2024.   end
  2025.   #--------------------------------------------------------------------------
  2026.   # ○ プレーヤーのイベント乗り物をロックを解除する
  2027.   #--------------------------------------------------------------------------  
  2028.   def event_vehicle_lock_off
  2029.     $game_player.event_vehicle_lock = false
  2030.   end
  2031.   #--------------------------------------------------------------------------
  2032.   # ○ プレーヤーをイベントから強制的に降ろす
  2033.   #--------------------------------------------------------------------------  
  2034.   def event_vehicle_compulsory_off
  2035.     $game_player.compulsory_off_event_vehicle
  2036.   end
  2037.   #--------------------------------------------------------------------------
  2038.   # ○ プレーヤーのイベント乗り物を消去する
  2039.   #--------------------------------------------------------------------------  
  2040.   def event_vehicle_erase
  2041.     $game_player.compulsory_off_event_vehicle(true)
  2042.   end
  2043.   #--------------------------------------------------------------------------
  2044.   # ○ イベントをイベントに乗せる
  2045.   #     event_id : 乗り手になるイベントのID
  2046.   #   vehicle_id : 乗り物になるイベントのID
  2047.   #--------------------------------------------------------------------------
  2048.   def event_vehicle(event_id, vehicle_id, test = false)
  2049.     if $game_map.events[event_id] != nil and $game_map.events[vehicle_id] != nil
  2050.       return $game_map.events[event_id].ride_on($game_map.events[vehicle_id], test)
  2051.     else  
  2052.       return false
  2053.     end
  2054.   end
  2055.   #--------------------------------------------------------------------------
  2056.   # ○ イベントをイベントに乗せることが出来るかのテスト
  2057.   #--------------------------------------------------------------------------
  2058.   def event_vehicle_test(event_id, vehicle_id)
  2059.     return event_vehicle_test(event_id, vehicle_id, true)
  2060.   end
  2061.   #--------------------------------------------------------------------------
  2062.   # ○ イベントから降ろす
  2063.   #     event_id : イベントから降ろすイベントのID
  2064.   #--------------------------------------------------------------------------
  2065.   def get_off_event(event_id, test = false)
  2066.     if $game_map.events[event_id] != nil
  2067.       return $game_map.events[event_id].ride_off_character(test)
  2068.     else  
  2069.       return false
  2070.     end
  2071.   end
  2072.   #--------------------------------------------------------------------------
  2073.   # ○ イベントから降ろすことが出来るかのテスト
  2074.   #--------------------------------------------------------------------------
  2075.   def get_off_event_test(event_id)
  2076.     return get_off_event_test(event_id, true)
  2077.   end
  2078.   #--------------------------------------------------------------------------
  2079.   # ○ イベントをID指定してセルフスイッチを操作する
  2080.   #--------------------------------------------------------------------------
  2081.   def self_switches(event_id, switches_id, on_off)
  2082.     return if $game_map.events == nil
  2083.     return if $game_map.events[event_id] == nil
  2084.     key = [$game_map.map_id, event_id, switches_id]
  2085.     $game_self_switches[key] = on_off
  2086.     $game_map.need_refresh = true
  2087.     $game_map.need_refresh = true
  2088.   end
  2089.   #--------------------------------------------------------------------------
  2090.   # ○ ID指定したイベントのセルフスイッチをオン
  2091.   #--------------------------------------------------------------------------
  2092.   def self_switches_on(event_id, switches_id)
  2093.     self_switches(event_id, switches_id, true)
  2094.   end
  2095.   #--------------------------------------------------------------------------
  2096.   # ○ ID指定したイベントのセルフスイッチをオフ
  2097.   #--------------------------------------------------------------------------
  2098.   def self_switches_off(event_id, switches_id)
  2099.     self_switches(event_id, switches_id, false)
  2100.   end
  2101.   #--------------------------------------------------------------------------
  2102.   # ○ ID指定したイベントのセルフスイッチをクリア(すべてオフ)
  2103.   #--------------------------------------------------------------------------
  2104.   def self_switches_clear(event_id)
  2105.     self_switches(event_id, "A", false)
  2106.     self_switches(event_id, "B", false)
  2107.     self_switches(event_id, "C", false)
  2108.     self_switches(event_id, "D", false)
  2109.   end
  2110.   #--------------------------------------------------------------------------
  2111.   # ○ ID指定したイベントがオンか?
  2112.   #--------------------------------------------------------------------------
  2113.   def self_switches_on?(event_id, switches_id)
  2114.     key = [$game_map.map_id, event_id, switches_id]
  2115.     return $game_self_switches[key] == true
  2116.   end
  2117.   #--------------------------------------------------------------------------
  2118.   # ○ ID指定したイベントがオフか?
  2119.   #--------------------------------------------------------------------------
  2120.   def self_switches_off?(event_id, switches_id)
  2121.     key = [$game_map.map_id, event_id, switches_id]
  2122.     return $game_self_switches[key] == false
  2123.   end
  2124.   #--------------------------------------------------------------------------
  2125.   # ○ イベントと同位置のイベントのセルフスイッチをオン
  2126.   #--------------------------------------------------------------------------
  2127.   def self_switches_on_here(switches_id)
  2128.     self_switches_here(switches_id, true)
  2129.   end
  2130.   #--------------------------------------------------------------------------
  2131.   # ○ イベントと同位置のイベントのセルフスイッチをオフ
  2132.   #--------------------------------------------------------------------------
  2133.   def self_switches_off_here(switches_id)
  2134.     self_switches_here(switches_id, false)
  2135.   end
  2136.   #--------------------------------------------------------------------------
  2137.   # ○ イベントと同位置のイベントのセルフスイッチを操作する
  2138.   #--------------------------------------------------------------------------
  2139.   def self_switches_here(switches_id, on_off)
  2140.     return if $game_map.events == nil
  2141.     result = false
  2142.     main_event = $game_map.events[@event_id]
  2143.     for event in $game_map.events_xy(main_event.x, main_event.y)
  2144.       next if event == main_event
  2145.       key = [$game_map.map_id, event.id, switches_id]
  2146.       $game_self_switches[key] = on_off
  2147.       $game_map.need_refresh = true
  2148.       result = true
  2149.     end
  2150.     $game_map.need_refresh = true if result
  2151.   end
  2152. end
复制代码
在該事件的指令碼中輸入

get_on_event

建議不要使用移動中的事件來做這樣的效果

因為較為複雜 不會移動的事件比較容易達成

其餘移動相關設置 要用該事件的設置移動路逕來達成

例如穿透開始 結束移動之後記得要穿透結束 免得角色變成特異功能人士 以上
回复

使用道具 举报

Lv1.梦旅人

派大星

梦石
0
星屑
195
在线时间
2133 小时
注册时间
2011-9-18
帖子
2652
3
发表于 2012-1-18 14:18:18 | 只看该作者
感谢R-零的创意,请看小安做的范例。 Project帮助.rar (239.35 KB, 下载次数: 54)
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
13 小时
注册时间
2012-1-3
帖子
14
4
 楼主| 发表于 2012-1-18 20:35:48 | 只看该作者
本帖最后由 約書亞 于 2012-1-18 20:55 编辑
s20810 发表于 2012-1-18 13:14
需要以下腳本在該事件的指令碼中輸入

get_on_event


不知你有沒有範例參考
因為我用此腳本進去有發生錯誤  不知哪邊用錯
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2011-3-10
帖子
65
5
发表于 2012-1-19 02:16:22 | 只看该作者
本帖最后由 s20810 于 2012-1-19 02:18 编辑

錯誤是哪種?? 會彈窗離開遊戲的那種錯誤??

因為我還蠻懶得發範例的-.-
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 02:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表