- class Game_Map 
-   #-------------------------------------------------------------------------- 
-   # ● 计算地图元件ID 
-   #-------------------------------------------------------------------------- 
-   def get_tile_id(x, y) 
-     a = data[x, y, 0] 
-     return 0 unless a 
-     a-=2000 
-     map_tile_id_0 = (a >= 0) ? a/48 : (a+593) 
-     map_tile_id_1 = (data[x, y, 1]-2000) / 48 
-     map_tile_id_2 = (data[x, y, 2]) 
-   
-     map_tile_id_0 = 0 if map_tile_id_0 == -42 # A 
-     map_tile_id_1 = 0 if map_tile_id_1 == -42 # I 
-     map_tile_id_2 = 0 if map_tile_id_2 == -42 # B~E 
-   
-     # 图块 ID 矫正 
-     map_tile_id_0 = map_tile_id_1 if map_tile_id_1 > 0 
-     unless @events.nil? 
-       for event in @events.values 
-         if event.pos?(x, y) and event.tile_id > 0 
-           # 若是事件使用地图元件,使用该地图元件的ID 
-           map_tile_id_2 = event.tile_id 
-         end 
-       end 
-     end 
-     # 返回 [底层ID, 上层ID] 
-     return [map_tile_id_0, map_tile_id_2] 
-   end 
- end 
- class Game_Character < Game_CharacterBase 
-   #-------------------------------------------------------------------------- 
-   # ● 获取地图元件ID 
-   #-------------------------------------------------------------------------- 
-   def get_map_tile_id(x, y) 
-     return $game_map.get_tile_id(x, y) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 判断是否能跳跃 
-   #-------------------------------------------------------------------------- 
-   def can_jump? 
-     # 面向与方向键不同时不跳跃 
-     return false if Input.dir4 != @direction  
-     return false if debug_through? # 测试行走(按下Ctrl)时不跳跃 
-     x_f1 = x_f2 = @x 
-     y_f1 = y_f2 = @y 
-   
-     # 计算前两格座标 
-     case @direction 
-     when 2 
-       y_f2 += 2 
-       y_f1 += 1 
-     when 4 
-       x_f2 -= 2 
-       x_f1 -= 1 
-     when 6 
-       x_f2 += 2 
-       x_f1 += 1 
-     when 8 
-       y_f2 -= 2 
-       y_f1 -= 1 
-     end 
-     tile_id_0 = get_map_tile_id(@x, @y)       # 获取当前格元件ID 
-     tile_id_1 = get_map_tile_id(x_f1, y_f1)   # 获取前一格元件ID 
-     tile_id_2 = get_map_tile_id(x_f2, y_f2)   # 获取前两格元件ID 
-     event_1 = $game_map.events_xy(x_f1, y_f1) # 获取前一格事件 
-     event_2 = $game_map.events_xy(x_f2, y_f2) # 获取前两格事件 
-   
-     # 事件判断 
-     if !event_1.empty? # 若前一格有事件 
-       return false if !event_2.empty? # 前两格也有事件则不能跳跃 
-       return check_event_jumpable?(event_1) # 判断是否指定可以跳跃 
-     end 
-   
-     # 前第一格判断 
-     if tile_id_1[1]>1  
-       return false # 前一格的B~E层无法通行时也不能跳跃 
-     elsif $game_map.counter?(x_f1, y_f1) 
-       return false # 前一格为柜台时无法跳跃 
-     end 
-   
-     # 判断面前两格是否相同 
-     return false if tile_id_1 == tile_id_2 
-     return false if tile_id_1 == tile_id_0 
-   
-     # 判断面前一格是否墙壁元件 
-     wall_tile = (89..96).to_a + (105..112).to_a + (121..128).to_a # 获取墙壁元件ID 
-     w_top_tile = (81..88).to_a + (97..104).to_a + (113..120).to_a # 获取墙顶元件ID 
-     return false if wall_tile.include?(tile_id_1[0]) # 前一格为墙壁时无法跳跃 
-     if w_top_tile.include?(tile_id_0[0]) # 若当前格为墙顶 
-       # 前一格非墙顶,而前两格为墙顶时则可以跳跃 
-       if !w_top_tile.include?(tile_id_1[0]) && w_top_tile.include?(tile_id_2[0]) 
-         return true 
-       end 
-     end 
-     return false if map_passable?(x_f1, y_f1, @direction) # 前一格能通行时不跳跃 
-     return map_passable?(x_f2, y_f2, @direction) # 判断前两格是否能通行 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 判断某格的事件是否能跳跃 
-   #-------------------------------------------------------------------------- 
-   def check_event_jumpable?(events) 
-     events.each{|event| 
-       return true if event.can_jump? 
-     } 
-     return false 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 执行跳跃 
-   #-------------------------------------------------------------------------- 
-   def do_jump(d=@direction) 
-     # 判断跳跃方向 
-     case d 
-       when 2;  jump(0, 2)  # 向下跳 
-       when 4;  jump(-2, 0) # 向左跳 
-       when 6;  jump(2, 0)  # 向右跳 
-       when 8;  jump(0, -2) # 向上跳 
-     end 
-   end 
- end 
- class Game_Event < Game_Character 
-   #-------------------------------------------------------------------------- 
-   # ● 判断事件是否能跳跃 
-   #-------------------------------------------------------------------------- 
-   def can_jump? 
-     return false if @list[0].code != 108 # 第一个指令不是“注释”时返回 false 
-     return @list[0].parameters[0] == "jumpable" 
-   end 
- end 
- class Game_Player < Game_Character 
-   #-------------------------------------------------------------------------- 
-   # ● 输入移动处理 
-   #-------------------------------------------------------------------------- 
-   alias old_move_by_input move_by_input 
-   def move_by_input 
-     # 不能行动时忽略所有动作 
-     return unless movable? 
-     # 解释器执行时忽略所有动作 
-     return if $game_map.interpreter.running? 
-     d = Input.dir4 
-     if can_jump?# 能够跳跃时 
-       if $game_player.followers.visible # 队伍跟随时 
-         $game_player.followers.gather   # 跟随队伍聚集 
-         while !$game_player.followers.gather? 
-           $game_player.followers.update # 跟随队伍刷新 
-         end 
-         # 跟随队员跳跃 
-         $game_player.followers.each{ |follower| 
-           follower.do_jump(d) 
-         } 
-       end 
-     if Input.trigger?(:C) 
-         do_jump(d) # 执行跳跃 
-     end 
-     else 
-       old_move_by_input # 呼叫原有方法 
-     end 
-   end 
- end