查看: 3153|回复: 3

[转载] Mode7Ace 出1.9了诶~~哪位大神给搬来一下……我好像下载不了~~

[复制链接]
梦石
0
星屑
50
在线时间
145 小时
注册时间
2011-2-5
回帖
85
发表于 2015-8-11 12:09:06 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
伪3D脚本Mode 7 Ace

http://www.rgss-factory.net/2012/04/28/ace-mode-7-ace/
梦石
0
星屑
50
在线时间
289 小时
注册时间
2014-12-12
回帖
138
发表于 2015-8-11 15:21:13 | 显示全部楼层
w我看一看如果可以,我就上传吧!
PPT 制作
回复

使用道具 举报

梦石
0
星屑
50
在线时间
289 小时
注册时间
2014-12-12
回帖
138
发表于 2015-8-11 15:24:37 | 显示全部楼层
本帖最后由 13790758417 于 2015-8-11 15:30 编辑



我显示乱码,不好意思
下载地址http://www.mediafire.com/downloa ... 9_Rotation_V1.7.exe
[fold=主脚本]=begin

仴 忔傝暔媅帡俁俢壔 儊僀儞僗僋儕僾僩 ver. 3.0.1

RPG僣僋乕儖VXAce梡僗僋儕僾僩

惂嶌 : 栘惎儁儞僊儞
URL  : http://woodpenguin.blog.fc2.com/


#//////////////////////////////////////////////////////////////////////////////
#
# 愝掕崁栚側偟
#
#//////////////////////////////////////////////////////////////////////////////

===儊儌===
   2x 峴栚乣 : 儌僕儏乕儖
   5x 峴栚乣 : 僎乕儉僆僽僕僃僋僩
  98x 峴栚乣 : 僗僾儔僀僩
139x 峴栚乣 : 僂傿儞僪僂
141x 峴栚乣 : 僔乕儞

=end

#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒
#
# 仴 儌僕儏乕儖
#
#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒

module WdTk::Veh3D
  #--------------------------------------------------------------------------
  # 仠 僼儗乕儉僇僂儞僩偺儕僙僢僩
  #--------------------------------------------------------------------------
  def self.reset
    @@frame_count = 0
    @@need_update = true
  end
  #--------------------------------------------------------------------------
  # 仠 峏怴
  #--------------------------------------------------------------------------
  def self.update
    @@frame_count += FrameRate
    @@need_update = @@frame_count >= 60
    @@frame_count %= 60
  end
  #--------------------------------------------------------------------------
  # 仠 峏怴偑昁梫偐偳偆偐
  #--------------------------------------------------------------------------
  def self.need_update?
    @@need_update
  end
end

#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒
#
# 仴 僎乕儉僆僽僕僃僋僩
#
#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒

#==============================================================================
# 仭 Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偺嶌惉
  #--------------------------------------------------------------------------
  def create_vehicles
    @vehicles = WdTk::Veh3D.data.collect {|key,| Game_Vehicle.new(key) }
  end
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偺庢摼
  #--------------------------------------------------------------------------
  def vehicle(type)
    @vehicles.find {|vehicle| vehicle.type == type }
  end
  #--------------------------------------------------------------------------
  # 仠 昞帵埵抲偺愝掕 (儖乕僾敾掕側偟)
  #--------------------------------------------------------------------------
  def set_pos(x, y)
    @display_x = x
    @display_y = y
    @parallax_x = x
    @parallax_y = y
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔偺捠峴壜擻敾掕
  #--------------------------------------------------------------------------
  def vehicle_passable?(x, y, types, through)
    return true unless types
    all_tiles(x, y).each do |tile_id|
      if tile_id >= 2048
        return types.include?((tile_id - 2048) / 48)
      else
        flag = tileset.flags[tile_id]
        next if flag & 0x10 != 0
        return (through && flag & 0x0f == 0)
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # 仠 拝棨壜擻敾掕
  #--------------------------------------------------------------------------
  def land_ok?(x, y, denial)
    return false if denial && denial.include?(autotile_type(x, y, 1))
    return false if denial && denial.include?(autotile_type(x, y, 0))
    return check_passage(x, y, 0x0f)
  end
end

#==============================================================================
# 仭 Game_CharacterBase
#==============================================================================
class Game_CharacterBase
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偲偺徴撍敾掕
  #--------------------------------------------------------------------------
  def collide_with_vehicles?(x, y)
    $game_map.vehicles.any? {|v| v.pos_nt?(x, y) && !v.get_here? }
  end
end

#==============================================================================
# 仭 Game_Player
#==============================================================================
class Game_Player
  #--------------------------------------------------------------------------
  # 仠 岞奐僀儞僗僞儞僗曄悢
  #--------------------------------------------------------------------------
  attr_reader   :keep_vehicles
  attr_accessor :in_vehicle
  #--------------------------------------------------------------------------
  # 侟 僆僽僕僃僋僩弶婜壔
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_initialize initialize
  def initialize
    _wdtk_veh3d_initialize
    @keep_vehicles = []
  end
  #--------------------------------------------------------------------------
  # 仠 搵忔拞偺僞僀僾偐偳偆偐
  #--------------------------------------------------------------------------
  def driving?(type)
    @in_vehicle && @vehicle_type == type
  end
  #--------------------------------------------------------------------------
  # 侟 応強堏摦偺幚峴
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_perform_transfer perform_transfer
  def perform_transfer
    if transfer? && vehicle
      vehicle.set_direction(@new_direction)
      _wdtk_veh3d_perform_transfer
      vehicle.sync_with_player
    else
      _wdtk_veh3d_perform_transfer
    end
  end
  #--------------------------------------------------------------------------
  # 仚 旘峴偡傞忔傝暔偵忔偭偰偄傞偐偳偆偐
  #--------------------------------------------------------------------------
  def in_airship?
    @in_vehicle && vehicle.flight?
  end
  #--------------------------------------------------------------------------
  # 侟 僼儗乕儉峏怴
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_update update
  def update
    if @in_vehicle
      return if !movable? || $game_map.interpreter.running?
      vehicle.process_control
      last_x = @x
      last_y = @y
      @x = @real_x = vehicle.x.round
      @y = @real_y = vehicle.y.round
      update_vehicle_moving(last_x != @x || last_y != @y)
    else
      _wdtk_veh3d_update
    end
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔偱堏摦偟偨応崌偺張棟
  #     tile_moving : 僞僀儖傪堏摦偟偨偐偳偆偐
  #--------------------------------------------------------------------------
  def update_vehicle_moving(tile_moving)
    if tile_moving
      increase_steps
      vehicle.update_bush_depth
    end
    return if $game_map.interpreter.running?
    if tile_moving
      return if check_touch_event
    end
    return if vehicle.process_handling
    update_encounter if tile_moving
  end
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偵忔傞摦嶌偺峏怴
  #--------------------------------------------------------------------------
  def update_vehicle_get_on
    if !@followers.gathering? && !moving?
      @vehicle_getting_on = false
      @transparent = true
      vehicle.get_on
    end
  end
  #--------------------------------------------------------------------------
  # 仚 僄儞僇僂儞僩偺峏怴
  #--------------------------------------------------------------------------
  def update_encounter
    return if $TEST && Input.press?(:CTRL)
    return if $game_party.encounter_none?
    return if @in_vehicle && vehicle.encounter_none?
    return if @move_route_forcing
    @encounter_count -= encounter_progress_value
  end
  #--------------------------------------------------------------------------
  # 仚 僄儞僇僂儞僩恑峴抣偺庢摼
  #--------------------------------------------------------------------------
  def encounter_progress_value
    value = $game_map.bush?(@x, @y) ? 2 : 1
    value *= 0.5 if $game_party.encounter_half?
    value *= vehicle.encount_rate / 100.0 if @in_vehicle
    value
  end
  #--------------------------------------------------------------------------
  # 侟 寛掕儃僞儞偵傛傞僀儀儞僩婲摦敾掕
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_check_action_event check_action_event
  def check_action_event
    if in_airship?
      check_event_trigger_here([0])
      $game_map.setup_starting_event
    else
      _wdtk_veh3d_check_action_event
    end
  end
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偵忔傞
  #    尰嵼忔傝暔偵忔偭偰偄側偄偙偲偑慜採丅
  #--------------------------------------------------------------------------
  def get_on_vehicle
    front_x = $game_map.round_x_with_direction(@x, @direction)
    front_y = $game_map.round_y_with_direction(@y, @direction)
    $game_map.vehicles.each do |veh|
      next if veh.control
      if veh.get_here?
        @vehicle_type = veh.type if veh.pos?(@x, @y)
      else
        @vehicle_type = veh.type if veh.pos?(front_x, front_y)
      end
    end
    if vehicle
      @vehicle_getting_on = true
      force_move_forward unless vehicle.get_here?
      @followers.gather
    end
    @vehicle_getting_on
  end
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偐傜崀傝傞
  #--------------------------------------------------------------------------
  def get_off_vehicle
    if vehicle.land_ok?(@x, @y, vehicle.angle_dir)
      set_direction(vehicle.sync_dir? ? vehicle.angle_dir : 2)
      @followers.synchronize(@x, @y, @direction)
      vehicle.get_off
      @vehicle_getting_off = true
      make_encounter_count
      @followers.gather
    end
    @vehicle_getting_off
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔奐巒張棟
  #--------------------------------------------------------------------------
  def on_vehicle_start
    @in_vehicle = true
    if @vehicle_type == :walk
      @vehicle_type = @keep_vehicles.pop
      @transparent = true
      @followers.update
    end
    _wdtk_veh3d_perform_transfer
    vehicle.on_vehicle_start
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔廔椆張棟
  #--------------------------------------------------------------------------
  def on_vehicle_end
    @in_vehicle = false
    center(@x, @y)
    vehicle.on_vehicle_end
    if @keep_vehicles.include?(@vehicle_type)
      vehicle.get_off
      @vehicle_type = :walk
      @transparent = false
      @followers.update
    elsif !vehicle.get_here?
      force_move_forward
      @transparent = false
    end
    $game_map.autoplay
    _wdtk_veh3d_perform_transfer
  end
  #--------------------------------------------------------------------------
  # 仠 婰壇偟偨忔傝暔偵忔傞
  #--------------------------------------------------------------------------
  def get_on_keep_vehicle
    sym = @keep_vehicles[-1]
    $game_map.vehicle(sym).transfer if sym
  end
  #--------------------------------------------------------------------------
  # 仠 尰嵼偺忔傝暔傪婰壇
  #--------------------------------------------------------------------------
  def keep_vehicle
    @keep_vehicles.delete(@vehicle_type)
    @keep_vehicles << @vehicle_type
  end
  #--------------------------------------------------------------------------
  # 仠 婰壇偟偨忔傝暔偺嶍彍
  #--------------------------------------------------------------------------
  def delete_keep_vehicle
    sym = @keep_vehicles.pop
    $game_map.vehicle(sym).on_vehicle_end if sym
  end
end

#==============================================================================
# 仭 Game_Vehicle
#==============================================================================
class Game_Vehicle
  #--------------------------------------------------------------------------
  # 仠 儌僕儏乕儖
  #--------------------------------------------------------------------------
  include Math
  #--------------------------------------------------------------------------
  # 仠 岞奐僀儞僗僞儞僗曄悢
  #--------------------------------------------------------------------------
  attr_reader   :type
  attr_reader   :angle
  attr_reader   :drive_direction
  attr_reader   :control
  #--------------------------------------------------------------------------
  # 侟 僆僽僕僃僋僩弶婜壔
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_initialize initialize
  def initialize(type)
    _wdtk_veh3d_initialize(type)
    @drive_speed = 0
    @drive_direction = 5
    @Angle = 0
    @angle_speed = 0
    @slide_speed = 0
    @control = false
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔僨乕僞偺庢摼
  #--------------------------------------------------------------------------
  def param(sym)
    WdTk::Veh3D.data[@type][sym]
  end
  #--------------------------------------------------------------------------
  # 仚 堏摦懍搙偺弶婜壔
  #--------------------------------------------------------------------------
  def init_move_speed
    @move_speed = param(:move_speed)
  end
  #--------------------------------------------------------------------------
  # 侟 僔僗僥儉愝掕偺庢摼
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_system_vehicle system_vehicle
  def system_vehicle
    _wdtk_veh3d_system_vehicle || param(:system)
  end
  #--------------------------------------------------------------------------
  # 仠 堏摦拞敾掕
  #--------------------------------------------------------------------------
  def moving?
    @control ? @drive_speed != 0 || @angle_speed != 0 : super
  end
  #--------------------------------------------------------------------------
  # 仠 1 僼儗乕儉偁偨傝偺堏摦嫍棧傪寁嶼
  #--------------------------------------------------------------------------
  def distance_per_frame
    super * 60 / WdTk::Veh3D::FrameRate
  end
  #--------------------------------------------------------------------------
  # 仠 僨僶僢僌偡傝敳偗忬懺敾掕
  #--------------------------------------------------------------------------
  def debug_through?
    $TEST && Input.press?(:CTRL)
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔偲偺徴撍敾掕
  #--------------------------------------------------------------------------
  def collide_with_vehicles?(x, y)
    $game_map.vehicles.any? {|v| v != self && v.pos_nt?(x, y) }
  end
  #--------------------------------------------------------------------------
  # 仠 巜掕曽岦偵岦偒曄峏
  #     d : 曽岦乮2,4,6,8乯
  #--------------------------------------------------------------------------
  def set_direction(d)
    super
    if @driving && d != 0
      case @direction
      when 2; @Angle = 180
      when 4; @angle = 90
      when 6; @angle = 270
      when 8; @angle = 0
      end
      stop
    end
  end
  #--------------------------------------------------------------------------
  # 仠 僌儔僼傿僢僋僀儞僨僢僋僗偺庢摼
  #--------------------------------------------------------------------------
  def vehicle_index
    case @drive_direction
    when 5;       param(:vehicle_index1) || @character_index
    when 2,4,6,8; param(:vehicle_index2) || param(:vehicle_index1) || @character_index
    when 1,3,7,9; param(:vehicle_index3) || @character_index
    end
  end
  #--------------------------------------------------------------------------
  # 仠 応強堏摦偺梊栺
  #--------------------------------------------------------------------------
  def transfer
    $game_player.reserve_transfer(@map_id, @x.round, @y.round)
    last_angle = @angle
    get_on
    @angle = last_angle
  end
  #--------------------------------------------------------------------------
  # 侟 忔傝暔偵忔傞
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_get_on get_on
  def get_on
    _wdtk_veh3d_get_on
    @walk_anime = param(:walk_anime) != false
    @step_anime = param(:step_anime) != false
    @drive_speed = 0
    @drive_direction = 5
    @slide_speed = 0
    @angle = 0
    set_direction($game_player.direction) if sync_dir?
    @angle_speed = 0
    SceneManager.goto(Scene_Vehicle)
  end
  #--------------------------------------------------------------------------
  # 侟 忔傝暔偐傜崀傝傞
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_get_off get_off
  def get_off
    _wdtk_veh3d_get_off
    @step_anime = param(:step_anime) != false
    SceneManager.goto(Scene_Map)
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔奐巒張棟
  #--------------------------------------------------------------------------
  def on_vehicle_start
    unless @control
      @control = true
      if flight?
        @altitude = [[@altitude, max_altitude].min, min_altitude].max
      else
        @altitude = 8
      end
    end
    $game_switches[param(:switch_id)] = true if param(:switch_id)
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔廔椆張棟
  #--------------------------------------------------------------------------
  def on_vehicle_end
    unless @driving
      @control = false
      @altitude = flight? ? 32 : 0
      moveto(@x.round, @y.round)
    end
    $game_switches[param(:switch_id)] = false if param(:switch_id)
    refresh
  end
  #--------------------------------------------------------------------------
  # 仠 掆巭
  #--------------------------------------------------------------------------
  def stop
    @drive_speed = 0
    @angle_speed = 0
    @stop_count = 0
  end
  #--------------------------------------------------------------------------
  # 仠 堏摦壜擻敾掕
  #--------------------------------------------------------------------------
  def movable?
    @driving
  end
  #--------------------------------------------------------------------------
  # 仚 儕僼儗僢僔儏
  #--------------------------------------------------------------------------
  def refresh
    if @driving
      @map_id = $game_map.map_id
      #sync_with_player
      stop
    elsif @map_id == $game_map.map_id
      moveto(@x, @y)
    end
    if flight?
      @priority_type = @driving ? 2 : 0
    else
      @priority_type = 1
    end
    if @control
      @drive_direction = 5
      @walk_anime = param(:walk_anime) != false
      @step_anime = param(:step_anime) != false
    else
      @walk_anime = @step_anime = false
    end
  end
  #--------------------------------------------------------------------------
  # 仠 旘峴偡傞偐偳偆偐
  #--------------------------------------------------------------------------
  def flight?
    param(:flight)
  end
  #--------------------------------------------------------------------------
  # 仠 搵忔帪岦偒曄峏偡傞偐偳偆偐
  #--------------------------------------------------------------------------
  def sync_dir?
    param(:sync_dir)
  end
  #--------------------------------------------------------------------------
  # 仠 摨堦偵傛傞搵忔偐偳偆偐
  #--------------------------------------------------------------------------
  def get_here?
    param(:get_here)
  end
  #--------------------------------------------------------------------------
  # 仠 僄儞僇僂儞僩棪偺庢摼
  #--------------------------------------------------------------------------
  def encount_rate
    param(:encount) || 0
  end
  #--------------------------------------------------------------------------
  # 仠 僄儞僇僂儞僩柍岠丠
  #--------------------------------------------------------------------------
  def encounter_none?
    encount_rate == 0
  end
  #--------------------------------------------------------------------------
  # 仠 妏搙偐傜曽岦偺庢摼
  #--------------------------------------------------------------------------
  def angle_dir
    case (@angle + 45).to_i / 90
    when 0,4; 8
    when 1;   4
    when 2;   2
    when 3;   6
    end
  end
  #--------------------------------------------------------------------------
  # 仚 僼儗乕儉峏怴
  #--------------------------------------------------------------------------
  def update
    if @control
      update_animation
      if $game_player.driving?(@type) && !@driving && flight?
        if @altitude > 32 || Graphics.frame_count % (5 - @altitude / 8) == 0
          @altitude -= 1
        end
      end
    else
      super
      update_airship_altitude if flight?
      @step_anime = param(:step_anime) != false if @driving
    end
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔憖廲帪偺張棟
  #--------------------------------------------------------------------------
  def process_control
    @drive_direction = 5
    if Input.press?(param(:inp_forward1)) || Input.press?(param(:inp_forward2))
      process_forward
    elsif Input.press?(param(:inp_backward))
      process_backward
    else
      process_reduce_drive
    end
    if Input.press?(param(:inp_left))
      process_left
    elsif Input.press?(param(:inp_right))
      process_right
    else
      process_reduce_slide
    end
    unless Input.press?(param(:inp_horz))
      turn = 0
      turn += 1 if Input.press?(param(:inp_turnleft1))
      turn += 1 if Input.press?(param(:inp_turnleft2))
      turn -= 1 if Input.press?(param(:inp_turnright1))
      turn -= 1 if Input.press?(param(:inp_turnright2))
      process_turn(turn)
      if flight?
        process_up   if Input.press?(param(:inp_up))
        process_down if Input.press?(param(:inp_down))
      end
    else
      process_reduce_turn
    end
    if WdTk::Veh3D.need_update?
      update_angle
      if @drive_speed != 0
        update_drive(@angle, distance_per_frame * @drive_speed / 32)
      end
      if @slide_speed != 0
        update_drive(@angle + 90, distance_per_frame * @slide_speed / 32)
      elsif @drive_speed == 0 && Input.press?(param(:inp_horz))
        process_horz
      end
    end
    update_stop unless moving?
  end
  #--------------------------------------------------------------------------
  # 仠 憖廲埲奜偺張棟
  #--------------------------------------------------------------------------
  def process_handling
    if @drive_speed <= 12
      if Input.trigger?(param(:inp_get_off)) || (!param(:inp_get_off) &&
         @altitude <= (min_altitude + 8) && Input.press?(param(:inp_down)))
        return stop if $game_player.get_off_vehicle
      end
      if Input.trigger?(param(:inp_event))
        $game_player.set_direction(angle_dir)
        return stop if $game_player.check_action_event
      end
    end
    if Input.trigger?(param(:inp_menu))
      return process_menu
    end
  end
  #--------------------------------------------------------------------------
  # 仠 慜恑偺張棟
  #--------------------------------------------------------------------------
  def process_forward
    @drive_speed += 1 if @drive_speed < 32
    @stop_count = 0
  end
  #--------------------------------------------------------------------------
  # 仠 屻戅偺張棟
  #--------------------------------------------------------------------------
  def process_backward
    @drive_speed -= 1 if @drive_speed > -16
    @stop_count = 0
  end
  #--------------------------------------------------------------------------
  # 仠 懍搙掅壓偺張棟
  #--------------------------------------------------------------------------
  def process_reduce_drive
    @drive_speed += (0 <=> @drive_speed)
  end
  #--------------------------------------------------------------------------
  # 仠 嵍堏摦偺張棟
  #--------------------------------------------------------------------------
  def process_left
    @slide_speed += 1 if @slide_speed < 16
    @stop_count = 0
  end
  #--------------------------------------------------------------------------
  # 仠 塃堏摦偺張棟
  #--------------------------------------------------------------------------
  def process_right
    @slide_speed -= 1 if @slide_speed > -16
    @stop_count = 0
  end
  #--------------------------------------------------------------------------
  # 仠 墶堏摦掅壓偺張棟
  #--------------------------------------------------------------------------
  def process_reduce_slide
    @slide_speed += (0 <=> @slide_speed)
  end
  #--------------------------------------------------------------------------
  # 仠 慁夞偺張棟
  #--------------------------------------------------------------------------
  def process_turn(speed)
    if @angle_speed < 24 * speed
      @angle_speed += 1 if @angle_speed < 32
    elsif @angle_speed > 24 * speed
      @angle_speed -= 1 if @angle_speed > -32
    end
    if speed != 0
      @drive_direction += (0 <=> speed) if (param(:dir_type) || 0) >= 1
      @stop_count = 0
    end
  end
  #--------------------------------------------------------------------------
  # 仠 慁夞掅壓偺張棟
  #--------------------------------------------------------------------------
  def process_reduce_turn
    @angle_speed += (0 <=> @angle_speed)
  end
  #--------------------------------------------------------------------------
  # 仠 忋徃偺張棟
  #--------------------------------------------------------------------------
  def process_up
    @altitude += 1        if @altitude < max_altitude
    @drive_direction += 3 if param(:dir_type) >= 2
  end
  #--------------------------------------------------------------------------
  # 仠 壓崀偺張棟
  #--------------------------------------------------------------------------
  def process_down
    @altitude -= 1        if @altitude > min_altitude
    @drive_direction -= 3 if param(:dir_type) >= 2
  end
  #--------------------------------------------------------------------------
  # 仠 儊僯儏乕屇傃弌偟偺張棟
  #--------------------------------------------------------------------------
  def process_menu
    Sound.play_ok
    SceneManager.call(Scene_Menu)
    Window_MenuCommand::init_command_position
  end
  #--------------------------------------------------------------------------
  # 仠 悈暯堏摦偺張棟
  #--------------------------------------------------------------------------
  def process_horz
    case Input.dir8
    when 1; angle = (@angle + 135) % 360
    when 2; angle = (@angle + 180) % 360
    when 3; angle = (@angle + 225) % 360
    when 4; angle = (@angle + 90) % 360
    when 6; angle = (@angle + 270) % 360
    when 7; angle = (@angle + 45) % 360
    when 8; angle = @angle
    when 9; angle = (@angle + 315) % 360
    else return
    end
    update_drive(angle, distance_per_frame / 3)
  end
  #--------------------------------------------------------------------------
  # 仠 岦偒偺峏怴
  #--------------------------------------------------------------------------
  def update_angle
    speed = param(:turning) * @angle_speed / 128.0 * 60 / WdTk::Veh3D::FrameRate
    @angle = (@angle + speed) % 360
  end
  #--------------------------------------------------------------------------
  # 仠 堏摦帪偺峏怴
  #--------------------------------------------------------------------------
  def update_drive(angle, distance)
    x1 = $game_map.round_x(@x.round)
    y1 = $game_map.round_y(@y.round)
    tx = $game_map.round_x(@x - sin(angle * PI / 180) * distance)
    ty = $game_map.round_y(@y - cos(angle * PI / 180) * distance)
    x2 = round_x_with_pos(tx)
    y2 = round_y_with_pos(ty)
    if x1 == x2 || vehicle_passable?(x2, y1)
      @x = @real_x = tx
      if (y1 == y2 || vehicle_passable?(x1, y2)) &&
         (x1 == x2 || vehicle_passable?(x2, y2))
        @y = @real_y = ty
      end
    elsif y1 == y2 || vehicle_passable?(x1, y2)
      @y = @real_y = ty
    end
  end
  #--------------------------------------------------------------------------
  # 仚 旘峴慏偺嵟戝崅搙傪庢摼
  #--------------------------------------------------------------------------
  def max_altitude
    param(:max_altitude) || 100
  end
  #--------------------------------------------------------------------------
  # 仠 旘峴慏偺嵟掅崅搙傪庢摼
  #--------------------------------------------------------------------------
  def min_altitude
    param(:min_altitude) || 20
  end
  #--------------------------------------------------------------------------
  # 仚 愙娸乛拝棨壜擻敾掕
  #     d : 曽岦乮2,4,6,8乯
  #--------------------------------------------------------------------------
  def land_ok?(x, y, d)
    if get_here?
      return false unless $game_map.land_ok?(x, y, param(:land_denial))
      return false unless $game_map.events_xy(x, y).empty?
      return false if collide_with_vehicles?(x, y)
    else
      x2 = $game_map.round_x_with_direction(x, d)
      y2 = $game_map.round_y_with_direction(y, d)
      return false unless $game_map.valid?(x2, y2)
      return false unless $game_map.passable?(x2, y2, reverse_dir(d))
      return false if collide_with_characters?(x2, y2)
    end
    return true
  end
  #--------------------------------------------------------------------------
  # 仠 捠峴壜擻敾掕
  #--------------------------------------------------------------------------
  def vehicle_passable?(x2, y2)
    return false unless $game_map.valid?(x2, y2)
    return true if @through || debug_through?
    return false unless map_passable?(x2, y2, 0)
    if !flight? && collide_with_events?(x2, y2)
      $game_player.check_event_trigger_touch(x2, y2)
      stop if $game_map.any_event_starting?
      return false
    end
    return false if !flight? && collide_with_vehicles?(x2, y2)
    return true
  end
  #--------------------------------------------------------------------------
  # 仠 摿掕偺曽岦偵偢傜偟偨嵗昗偺寁嶼乮儖乕僾曗惓偁傝乯
  #--------------------------------------------------------------------------
  def round_x_with_pos(x)
    return $game_map.round_x(x.floor) if x < @x && x % 1 < 0.75
    return $game_map.round_x(x.ceil)  if x > @x && x % 1 > 0.25
    return $game_map.round_x(x.round)
  end
  def round_y_with_pos(y)
    return $game_map.round_y(y.floor) if y < @y && y % 1 < 0.75
    return $game_map.round_y(y.ceil)  if y > @y && y % 1 > 0.25
    return $game_map.round_y(y.round)
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔偺儅僢僾捠峴壜擻敾掕
  #--------------------------------------------------------------------------
  def map_passable?(x, y, d)
    $game_map.vehicle_passable?(x, y, param(:passage1), param(:passage2))
  end
  #--------------------------------------------------------------------------
  # 仠 妏搙偐傜儔僕傾儞偺庢摼
  #--------------------------------------------------------------------------
  def angle_radian
    if @angle < 90
      sx = [@angle, 45].min
    elsif @angle < 270
      sx = [[180 - @angle, 45].min, -45].max
    else
      sx = [@angle - 360, -45].max
    end
    sy = [[(@angle - 180).abs - 90, 45].min, -45].max
    base = @angle * PI / 180
    base + (atan2(sx, sy) - base) * 2
  end
  #--------------------------------------------------------------------------
  # 仠 夋柺嵗昗偺寁嶼
  #--------------------------------------------------------------------------
  def display_x
    (@x - view_distance * sin(angle_radian) + 0.5) % $game_map.width - center_x
  end
  def display_y
    (@y - view_distance * cos(angle_radian) + 0.5) % $game_map.height - center_y
  end
  #--------------------------------------------------------------------------
  # 仠 帇奅嫍棧偺庢摼
  #--------------------------------------------------------------------------
  def view_distance
    5.8 + (Graphics.height - 416) / 64.0
  end
  #--------------------------------------------------------------------------
  # 仠 僗僫僢僾嫍棧偺庢摼
  #--------------------------------------------------------------------------
  def snap_distance
    view_distance * 32 - 8
  end
  #--------------------------------------------------------------------------
  # 仠 夋柺拞墰偺嵗昗
  #--------------------------------------------------------------------------
  def center_x
    Graphics.width / 64.0
  end
  def center_y
    Graphics.height / 64.0
  end
  #--------------------------------------------------------------------------
  # 仠 僗僫僢僾梡尨揰嵗昗偺寁嶼
  #--------------------------------------------------------------------------
  def snap_ox
    ((@x * 32).to_i - ($game_map.display_x * 32).to_i + 16) %
    ($game_map.width * 32)
  end
  def snap_oy
    ((@y * 32).to_i - ($game_map.display_y * 32).to_i + 16) %
    ($game_map.height * 32)
  end
  #--------------------------------------------------------------------------
  # 仠 尨揰 Y 嵗昗偺寁嶼
  #--------------------------------------------------------------------------
  def adjust_oy(sy)
    s = (Graphics.height - 416) / 2
    rate = sy / (256.0 + s)
    (adjust_bottom(s) + adjust_height(s) * rate + adjust_alt(rate)).to_i
  end
  def adjust_bottom(s)
    88 + s
  end
  def adjust_height(s)
    318 + s - @altitude / 10.0
  end
  def adjust_alt(rate)
    (190 - @altitude) * (sin((0.75 - 0.5 * rate) * PI) - sin(0.75 * PI))
  end
  #--------------------------------------------------------------------------
  # 仠 昞帵嵗昗傪嵎偟堷偄偨 Y 嵗昗偺寁嶼
  #--------------------------------------------------------------------------
  def adjust_y(sy)
    160 + ((sy / 16.0) ** 2).to_i
  end
  #--------------------------------------------------------------------------
  # 仠 奼戝棪偺庢摼
  #--------------------------------------------------------------------------
  def adjust_zoom(sy)
    s = (Graphics.height - 416) / 2
    1.333 + 420.0 / (@altitude + 60) * sy / (318 + s)
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔夋柺昞帵嵗昗偺庢摼
  #--------------------------------------------------------------------------
  def vscreen_x
    Graphics.width / 2
  end
  def vscreen_y
    Graphics.height - 48 - (flight? ? @altitude * 2 : 0)
  end
  def vscreen_z
    100
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔夋柺昞帵奼戝棪偺庢摼
  #--------------------------------------------------------------------------
  def vscreen_zoom
    param(:vehicle_zoom) || 2.0
  end
  #--------------------------------------------------------------------------
  # 仠 尨揰偐傜 Y 嵗昗偺寁嶼
  #--------------------------------------------------------------------------
  STEP = 5
  def origin_y(oy)
    s = (Graphics.height - 416) / 2
    b = adjust_bottom(s)
    h = adjust_height(s)
    return 0 unless oy.between?(b, b + h + 32)
    i = ((oy - b - (190 - @altitude) * 0.3) * (256 + s) / h).to_i
    i += STEP while adjust_oy(i) < oy
    n1 = adjust_oy(i - STEP)
    n2 = adjust_oy(i)
    i += STEP.to_f * (oy - n1) / (n2 - n1) - STEP if n1 < n2
    adjust_y(i)
  end
end

#==============================================================================
# 仭 Game_Interpreter
#==============================================================================
class Game_Interpreter
  #--------------------------------------------------------------------------
  # 仚 忔傝暔偺忔崀
  #--------------------------------------------------------------------------
  def command_206
    if $game_player.in_vehicle && next_event_code == 201
      $game_player.keep_vehicle
      SceneManager.goto(Scene_Map)
    elsif !$game_player.get_on_off_vehicle
      $game_player.get_on_keep_vehicle
    end
  end
end

#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒
#
# 僗僾儔僀僩
#
#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒

#==============================================================================
# 仭 Sprite_Character
#==============================================================================
class Sprite_Character
  #--------------------------------------------------------------------------
  # 仜 夝曻
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_dispose dispose
  def dispose
    dispose_shadow
    _wdtk_veh3d_dispose
  end
  #--------------------------------------------------------------------------
  # 仜 僼儗乕儉峏怴
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_update update
  def update
    _wdtk_veh3d_update
    update_shadow
  end
  #--------------------------------------------------------------------------
  # 仠 塭昞帵偺奐巒
  #--------------------------------------------------------------------------
  def start_shadow
    @shadow_sprite = ::Sprite.new(viewport)
    @shadow_sprite.bitmap = Cache.system("Shadow")
    @shadow_sprite.ox = @shadow_sprite.bitmap.width / 2
    @shadow_sprite.oy = @shadow_sprite.bitmap.height
    @shadow_sprite.z = 180
  end
  #--------------------------------------------------------------------------
  # 仠 塭偺夝曻
  #--------------------------------------------------------------------------
  def dispose_shadow
    if @shadow_sprite
      @shadow_sprite.dispose
      @shadow_sprite = nil
    end
  end
  #--------------------------------------------------------------------------
  # 仠 塭偺峏怴
  #--------------------------------------------------------------------------
  def update_shadow
    return unless @character.is_a?(Game_Vehicle)
    altitude = @character.altitude
    altitude -= 10 if $game_player.keep_vehicles.include?(@character.type)
    if altitude > 0
      start_shadow unless @shadow_sprite
      @shadow_sprite.x = @character.screen_x
      @shadow_sprite.y = @character.screen_y + altitude
      @shadow_sprite.opacity = altitude * 8
    else
      dispose_shadow
    end
  end
end

#==============================================================================
# 仭 Sprite_Vehicle
#==============================================================================
class Sprite_Vehicle < Sprite_Character
  #--------------------------------------------------------------------------
  # 仠 揮憲尦價僢僩儅僢僾偺峏怴
  #--------------------------------------------------------------------------
  def update_bitmap
    if graphic_changed?
      @tile_id = 0
      @character_name = @character.character_name
      @character_index = @character.vehicle_index
      set_character_bitmap
    end
  end
  #--------------------------------------------------------------------------
  # 仠 僌儔僼傿僢僋偺曄峏敾掕
  #--------------------------------------------------------------------------
  def graphic_changed?
    @character_name != @character.character_name ||
    @character_index != @character.vehicle_index
  end
  #--------------------------------------------------------------------------
  # 仠 揮憲尦嬮宍偺峏怴
  #--------------------------------------------------------------------------
  def update_src_rect
    if @tile_id == 0
      index = @character_index
      pattern = @character.pattern < 3 ? @character.pattern : 1
      direction = @character.drive_direction
      direction = 8 if direction == 5
      direction += 5 <=> direction if direction.odd?
      sx = (index % 4 * 3 + pattern) * @cw
      sy = (index / 4 * 4 + (direction - 2) / 2) * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    end
  end
  #--------------------------------------------------------------------------
  # 仠 埵抲偺峏怴
  #--------------------------------------------------------------------------
  def update_position
    self.x = @character.vscreen_x
    self.y = @character.vscreen_y
    self.z = @character.vscreen_z
    self.zoom_x = self.zoom_y = @character.vscreen_zoom
  end
  #--------------------------------------------------------------------------
  # 仠 怴偟偄僄僼僃僋僩偺愝掕
  #--------------------------------------------------------------------------
  def setup_new_effect
    if !animation? && $game_player.animation_id > 0
      animation = $data_animations[$game_player.animation_id]
      start_animation(animation)
    end
    if !@balloon_sprite && $game_player.balloon_id > 0
      @balloon_id = $game_player.balloon_id
      start_balloon
    end
  end
  #--------------------------------------------------------------------------
  # 仠 傾僯儊乕僔儑儞偺廔椆
  #--------------------------------------------------------------------------
  def end_animation
    super
    $game_player.animation_id = 0
  end
  #--------------------------------------------------------------------------
  # 仠 僼僉僟僔傾僀僐儞偺廔椆
  #--------------------------------------------------------------------------
  def end_balloon
    dispose_balloon
    $game_player.balloon_id = 0
  end
  #--------------------------------------------------------------------------
  # 仠 塭昞帵偺奐巒
  #--------------------------------------------------------------------------
  def start_shadow
    super
    @shadow_sprite.oy -= 6
  end
  #--------------------------------------------------------------------------
  # 仠 塭偺峏怴
  #--------------------------------------------------------------------------
  def update_shadow
    if @character.flight?
      start_shadow unless @shadow_sprite
      @shadow_sprite.x = Graphics.width / 2
      snap_y = Graphics.height / 2 + @character.snap_distance.to_i
      @shadow_sprite.y = @character.origin_y(snap_y)
      @shadow_sprite.z = @character.screen_z - 1
      @shadow_sprite.opacity = 255 * (90 - @character.altitude / 2) / 90
      @shadow_sprite.zoom_x = (200 - @character.altitude) / 90.0
      @shadow_sprite.zoom_y = @shadow_sprite.zoom_x
    end
  end
end

#==============================================================================
# 仭 Spriteset_Map
#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # 仚 旘峴慏偺塭僗僾儔僀僩偺嶍彍
  #--------------------------------------------------------------------------
  def create_shadow;  end
  def dispose_shadow; end
  def update_shadow;  end
end

#==============================================================================
# 仭 Spriteset_Vehicle
#==============================================================================
class Spriteset_Vehicle < Spriteset_Map
  #--------------------------------------------------------------------------
  # 仠 掕悢
  #--------------------------------------------------------------------------
  RATE = 32
  CUT  = 2
  #--------------------------------------------------------------------------
  # 仠 僆僽僕僃僋僩弶婜壔
  #--------------------------------------------------------------------------
  def initialize(viewport)
    @veh_viewport0 = Viewport.new
    @veh_viewport4 = viewport
    @vehicle = $game_player.vehicle
    create_snap
    create_scenery
    create_ground
    create_vehicle
    super()
  end
  #--------------------------------------------------------------------------
  # 仠 價儏乕億乕僩偺嶌惉
  #--------------------------------------------------------------------------
  def create_viewports
    super
    @viewport1.z = 9990
  end
  #--------------------------------------------------------------------------
  # 仠 攚宨偺嶌惉
  #--------------------------------------------------------------------------
  def create_scenery
    @scenery = Plane.new#(@veh_viewport0)
    @scenery.z = -100
  end
  #--------------------------------------------------------------------------
  # 仠 抧柺偺嶌惉
  #--------------------------------------------------------------------------
  def create_ground
    n = 256 + (Graphics.height - 416) / 2
    m = 0
    y1 = @vehicle.adjust_y(0)
    @ground_sprites = Array.new(n) do |i|
      y2 = @vehicle.adjust_y(i + 1)
      next nil if (y2 - y1) <= [i / RATE, CUT].min
      y1 = y2
      m += 1
      sprite = Sprite.new(@veh_viewport0)
      sprite.x = Graphics.width / 2
      sprite.ox = Graphics.width / 2
      sprite.opacity = m * 32
      sprite
    end
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔僗僾儔僀僩偺嶌惉
  #--------------------------------------------------------------------------
  def create_vehicle
    @sprite_vehicle = Sprite_Vehicle.new(@veh_viewport0, @vehicle)
  end
  #--------------------------------------------------------------------------
  # 仠 僉儍儔僋僞乕僗僾儔僀僩偺嶌惉
  #--------------------------------------------------------------------------
  def create_characters
    super
    @character_sprites.reject! do |sprite|
      case sprite.character
      when $game_player, Game_Follower, @vehicle
        sprite.dispose
      end
      sprite.disposed?
    end
  end
  #--------------------------------------------------------------------------
  # 仠 嶣塭梡僗僾儔僀僩偺嶌惉
  #--------------------------------------------------------------------------
  def create_snap
    @snap_sprite = Sprite.new
    @snap_sprite.x = Graphics.width / 2
    @snap_sprite.y = Graphics.height / 2 + @vehicle.snap_distance
    @snap_sprite.z = 9999
  end
  #--------------------------------------------------------------------------
  # 仠 夝曻
  #--------------------------------------------------------------------------
  def dispose
    super
    dispose_snap
    dispose_scenery
    dispose_ground
    dispose_vehicle
  end
  #--------------------------------------------------------------------------
  # 仠 價儏乕億乕僩偺夝曻
  #--------------------------------------------------------------------------
  def dispose_viewports
    @veh_viewport0.dispose
    super
  end
  #--------------------------------------------------------------------------
  # 仠 嶣塭梡僗僾儔僀僩偺夝曻
  #--------------------------------------------------------------------------
  def dispose_snap
    @snap_sprite.dispose
  end
  #--------------------------------------------------------------------------
  # 仠 攚宨偺夝曻
  #--------------------------------------------------------------------------
  def dispose_scenery
    @scenery.bitmap.dispose if @scenery.bitmap && !@scenery.bitmap.disposed?
    @scenery.dispose
  end
  #--------------------------------------------------------------------------
  # 仠 抧柺偺夝曻
  #--------------------------------------------------------------------------
  def dispose_ground
    @ground_sprites.each {|sprite| sprite.dispose if sprite }
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔僗僾儔僀僩偺夝曻
  #--------------------------------------------------------------------------
  def dispose_vehicle
    @sprite_vehicle.dispose
  end
  #--------------------------------------------------------------------------
  # 仠 僼儗乕儉峏怴
  #--------------------------------------------------------------------------
  def update
    super
    return unless WdTk::Veh3D.need_update?
    last_brightness = Graphics.brightness
    Graphics.brightness = 255
    on_snap
    update_snap
    on_ground
    update_scenery
    update_ground
    update_vehicle
    on_base
    Graphics.brightness = last_brightness
  end
  #--------------------------------------------------------------------------
  # 仠 僞僀儖儅僢僾偺峏怴
  #--------------------------------------------------------------------------
  def update_tilemap
    $game_map.set_pos(@vehicle.display_x, @vehicle.display_y)
    super
  end
  #--------------------------------------------------------------------------
  # 仠 揤岓偺峏怴
  #--------------------------------------------------------------------------
  def update_weather
    super
    @weather.ox = -@vehicle.angle
    @weather.oy = 0
  end
  #--------------------------------------------------------------------------
  # 仠 僗僫僢僾偺嶣塭
  #--------------------------------------------------------------------------
  def on_snap
    @viewport1.visible = true
    @veh_viewport0.visible = @viewport2.visible =
    @viewport3.visible = @veh_viewport4.visible = false
    @scenery.visible = false
    @snap_sprite.bitmap.dispose if @snap_sprite.bitmap
    @snap_sprite.bitmap = Graphics.snap_to_bitmap
  end
  #--------------------------------------------------------------------------
  # 仠 僗僫僢僾偺峏怴
  #--------------------------------------------------------------------------
  def update_snap
    gh = Graphics.height
    gx = (Graphics.width - gh) / 2
    @snap_sprite.ox = @vehicle.snap_ox - gx
    @snap_sprite.oy = @vehicle.snap_oy
    @snap_sprite.src_rect.set(gx, 0, gh, gh)
    @snap_sprite.angle = -@vehicle.angle
  end
  #--------------------------------------------------------------------------
  # 仠 攚宨偺峏怴
  #--------------------------------------------------------------------------
  def update_scenery
    if WdTk::Veh3D::Scenery
      @scenery.bitmap = Cache.parallax(WdTk::Veh3D::Scenery)
    else
      @scenery.bitmap = @parallax.bitmap
    end
    angle = -@vehicle.angle * WdTk::Veh3D::Repeat % 360
    @scenery.ox = @scenery.bitmap.width * angle / 360
  end
  #--------------------------------------------------------------------------
  # 仠 抧柺偺嶣塭
  #--------------------------------------------------------------------------
  def on_ground
    @viewport1.visible = false
    @veh_viewport0.visible = @viewport2.visible =
    @viewport3.visible = @veh_viewport4.visible = false
    @snap_sprite.visible = true
    @scenery.visible = true
    @scenery.oy = 160 - 64
    @bitmap.dispose if @bitmap
    @bitmap = Graphics.snap_to_bitmap
  end
  #--------------------------------------------------------------------------
  # 仠 抧柺偺峏怴
  #--------------------------------------------------------------------------
  def update_ground
    next_y = @vehicle.adjust_y(0)
    last_oy = @vehicle.adjust_oy(0)
    @ground_sprites.each_with_index do |sprite, i|
      next unless sprite
      sprite.bitmap = @bitmap
      next_oy = @vehicle.adjust_oy(i + 1)
      height = (next_oy > last_oy ? next_oy - last_oy : 1)
      sprite.src_rect.set(0, last_oy, @bitmap.width, height)
      last_oy = next_oy
      sprite.y = next_y
      sprite.zoom_x = @vehicle.adjust_zoom(sprite.y - 160)
      next_y = @vehicle.adjust_y(i + 1)
      sprite.zoom_y = (next_y - sprite.y).to_f / height
    end
  end
  #--------------------------------------------------------------------------
  # 仠 忔傝暔偺峏怴
  #--------------------------------------------------------------------------
  def update_vehicle
    @sprite_vehicle.update
  end
  #--------------------------------------------------------------------------
  # 仠 婎杮忬懺偵栠偡
  #--------------------------------------------------------------------------
  def on_base
    @snap_sprite.visible = false
    @veh_viewport0.visible = @viewport2.visible =
    @viewport3.visible = @veh_viewport4.visible = true
    @scenery.oy = 0
  end
end

#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒
#
# 僂傿儞僪僂
#
#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒

#==============================================================================
# 仭 Window_Message
#==============================================================================
class Window_Message
  #--------------------------------------------------------------------------
  # 仠 價儏乕億乕僩偺愝掕
  #--------------------------------------------------------------------------
  def viewport=(viewport)
    super
    @back_sprite.viewport = viewport
    @gold_window.viewport = viewport
    @choice_window.viewport = viewport
    @number_window.viewport = viewport
    @item_window.viewport = viewport
  end
end

#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒
#
# 僔乕儞
#
#劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒劒

#==============================================================================
# 仭 Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # 侟 廔椆慜張棟
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_pre_terminate pre_terminate
  def pre_terminate
    _wdtk_veh3d_pre_terminate
    fadeout(30) if SceneManager.scene_is?(Scene_Vehicle)
  end
end

#==============================================================================
# 仭 Scene_Vehicle
#------------------------------------------------------------------------------
# 丂忔傝暔夋柺偺張棟傪峴偆僋儔僗偱偡丅
#==============================================================================
class Scene_Vehicle < Scene_Map
  #--------------------------------------------------------------------------
  # 仠 奐巒張棟
  #--------------------------------------------------------------------------
  def start
    WdTk::Veh3D.reset
    $game_player.on_vehicle_start
    super
  end
  #--------------------------------------------------------------------------
  # 仠 廔椆慜張棟
  #--------------------------------------------------------------------------
  def pre_terminate
    super
    pre_map_scene if SceneManager.scene_is?(Scene_Map)
  end
  #--------------------------------------------------------------------------
  # 仠 廔椆張棟
  #--------------------------------------------------------------------------
  def terminate
    $game_player.on_vehicle_end if SceneManager.scene_is?(Scene_Map)
    super
    GC.start
  end
  #--------------------------------------------------------------------------
  # 仠 價儏乕億乕僩偺嶌惉
  #--------------------------------------------------------------------------
  def create_main_viewport
    super
    @window_viewport = Viewport.new
    @window_viewport.z = 200
  end
  #--------------------------------------------------------------------------
  # 仠 價儏乕億乕僩偺夝曻
  #--------------------------------------------------------------------------
  def dispose_main_viewport
    super
    @window_viewport.dispose
  end
  #--------------------------------------------------------------------------
  # 仠 僼儗乕儉峏怴乮婎杮乯
  #--------------------------------------------------------------------------
  def update_basic
    if WdTk::Veh3D.need_update?
      Graphics.frame_rate = WdTk::Veh3D::FrameRate
      Graphics.update
      Graphics.frame_rate = 60
    else
      Graphics.frame_count += 1
    end
    Input.update
    WdTk::Veh3D.update
    update_all_windows
  end
  #--------------------------------------------------------------------------
  # 仠 斈梡僼僃乕僪張棟
  #--------------------------------------------------------------------------
  def fade_loop(duration)
    WdTk::Veh3D.reset
    super
    Graphics.frame_reset
  end
  #--------------------------------------------------------------------------
  # 仠 僗僾儔僀僩僙僢僩偺嶌惉
  #--------------------------------------------------------------------------
  def create_spriteset
    @spriteset = Spriteset_Vehicle.new(@window_viewport)
  end
  #--------------------------------------------------------------------------
  # 仠 儊僢僙乕僕僂傿儞僪僂偺嶌惉
  #--------------------------------------------------------------------------
  def create_message_window
    super
    @message_window.viewport = @window_viewport
  end
  #--------------------------------------------------------------------------
  # 仠 僗僋儘乕儖暥復僂傿儞僪僂偺嶌惉
  #--------------------------------------------------------------------------
  def create_scroll_text_window
    super
    @scroll_text_window.viewport = @window_viewport
  end
  #--------------------------------------------------------------------------
  # 仠 儅僢僾柤僂傿儞僪僂偺嶌惉
  #--------------------------------------------------------------------------
  def create_location_window
    super
    @map_name_window.viewport = @window_viewport
  end
  #--------------------------------------------------------------------------
  # 仠 僉儍儞僙儖儃僞儞偵傛傞儊僯儏乕屇傃弌偟敾掕
  #--------------------------------------------------------------------------
  def update_call_menu
  end
  #--------------------------------------------------------------------------
  # 仠 儅僢僾夋柺慗堏偺慜張棟
  #--------------------------------------------------------------------------
  def pre_map_scene
    fadeout(30)
    Graphics.brightness = 0
  end
end

#==============================================================================
# 仭 Scene_Base
#==============================================================================
class Scene_Base
  #--------------------------------------------------------------------------
  # 仜 儊僀儞張棟
  #--------------------------------------------------------------------------
  alias _wdtk_veh3d_main main
  def main
    _wdtk_veh3d_main
    if SceneManager.scene_is?(Scene_Map) and $game_player.in_vehicle
      SceneManager.goto(Scene_Vehicle)
    end
  end
end[/fold]

[fold=数据库]=begin

仴 忔傝暔媅帡俁俢壔 僨乕僞儀乕僗 ver. 3.0

RPG僣僋乕儖VXAce梡僗僋儕僾僩

惂嶌 : 栘惎儁儞僊儞
URL  : http://woodpenguin.blog.fc2.com/

------------------------------------------------------------------------------
奣梫

仩 忔傝暔搵忔帪偺夋柺傪丄屻曽偐傜帇偨媅帡俁俢偱昞帵偟傑偡丅

------------------------------------------------------------------------------
巊偄曽

仩 奺僷儔儊乕僞偺娙堈愢柧
  
  :system         => 忔傝暔傪捛壛偡傞応崌偺婎杮僨乕僞
  
  :switch_id      => 忔傝暔搵忔帪偵ON偵側傞僗僀僢僠ID
  :passage1       => 捠峴偱偒傞僆乕僩僞僀儖偺庬椶偺攝楍
  :passage2       => 僞僀儖僙僢僩B乣俤傪捠峴偱偒傞偐偳偆偐
  :land_denial    => 忔傝暔偐傜崀傝傜傟側偄僆乕僩僞僀儖偺庬椶偺攝楍
  :move_speed     => 堏摦懍搙乮彫悢揰埲壓傕壜擻乯
  :turning        => 慁夞懍搙
  :walk_anime     => 搵忔拞偺曕峴傾僯儊僼儔僌
  :step_anime     => 搵忔拞偺懌摜傒傾僯儊僼儔僌
  :encount        => 僄儞僇僂儞僩棪乮100偱捠忢偲摨偠乯
  :sync_dir       => 搵忔帪偵忔傝暔偺岦偒傪僾儗僀儎乕偺岦偒偵崌傢偣傞僼儔僌
  :get_here       => 廳側偭偨忬懺偱搵忔偡傞偐偳偆偐偺僼儔僌
  :flight         => 旘峴僼儔僌
  :max_altitude   => 旘峴帪偺崅搙偺忋尷
  :min_altitude   => 旘峴帪偺崅搙偺壓尷
  :dir_type       => 搵忔拞偵昞帵偝傟傞忔傝暔偺岦偒曄峏僞僀僾
  :vehicle_index1 => 搵忔拞偵昞帵偝傟傞忔傝暔偺曕峴僌儔僼傿僢僋偺僀儞僨僢僋僗1
  :vehicle_index2 => 搵忔拞偵昞帵偝傟傞忔傝暔偺曕峴僌儔僼傿僢僋偺僀儞僨僢僋僗2
  :vehicle_index3 => 搵忔拞偵昞帵偝傟傞忔傝暔偺曕峴僌儔僼傿僢僋偺僀儞僨僢僋僗3
  :vehicle_zoom   => 搵忔拞偵昞帵偝傟傞曕峴僌儔僼傿僢僋偺奼戝棪
  
  :inp_forward1   => 慜恑傪峴偆儃僞儞1
  :inp_forward2   => 慜恑傪峴偆儃僞儞2
  :inp_backward   => 屻戅傪峴偆儃僞儞
  :inp_turnleft1  => 塃偵慁夞偡傞儃僞儞1
  :inp_turnleft2  => 塃偵慁夞偡傞儃僞儞2
  :inp_turnright1 => 嵍偵慁夞偡傞儃僞儞1
  :inp_turnright2 => 嵍偵慁夞偡傞儃僞儞2
  :inp_up         => 忋徃偡傞儃僞儞乮旘峴僞僀僾偺傒乯
  :inp_down       => 壓崀偡傞儃僞儞乮旘峴僞僀僾偺傒乯
  :inp_horz       => 悈暯堏摦偡傞儃僞儞乮偙偺儃僞儞偲曽岦僉乕偱憖嶌乯
  :inp_get_off    => 忔傝暔偐傜崀傝傞儃僞儞
  :inp_event      => 僀儀儞僩傪挷傋傞儃僞儞
  :inp_menu       => 儊僯儏乕夋柺傪奐偔儃僞儞

仩 愝掕崁栚偺徻嵶愢柧偼壓婰偺僒僀僩傪嶲徠偟偰偔偩偝偄丅

  http://woodpenguin.web.fc2.com/rgss3/vehicle3D.html

=end
module WdTk
module Veh3D
  @data = {}
#//////////////////////////////////////////////////////////////////////////////
#
# 愝掕崁栚
#
#//////////////////////////////////////////////////////////////////////////////
  #--------------------------------------------------------------------------
  # 仠 攚宨夋憸
  #--------------------------------------------------------------------------
  Scenery = "BlueSky"
  
  #--------------------------------------------------------------------------
  # 仠 攚宨偺儖乕僾夞悢
  #--------------------------------------------------------------------------
  Repeat = 4
  
  #--------------------------------------------------------------------------
  # 仠 僼儗乕儉儗乕僩 (10 乣 60)
  #--------------------------------------------------------------------------
  FrameRate = 40
  
  #--------------------------------------------------------------------------
  # 仠 彫宆慏偺愝掕
  #--------------------------------------------------------------------------
  vehicle = {}
  
  vehicle[:passage1]       = [0,6,8,12,14]
  vehicle[:move_speed]     = 4
  vehicle[:turning]        = 16
  vehicle[:encount]        = 100
  vehicle[:sync_dir]       = true
  vehicle[:get_here]       = false
  vehicle[:dir_type]       = 0
  
  vehicle[:inp_forward1]   = :A
  vehicle[:inp_forward2]   = :UP
  vehicle[:inp_backward]   = :DOWN
  vehicle[:inp_turnleft1]  = :LEFT
  vehicle[:inp_turnright1] = :RIGHT
  vehicle[:inp_get_off]    = :C
  vehicle[:inp_event]      = :C
  vehicle[:inp_menu]       = :B
  
  @data[:boat] = vehicle
  
  #--------------------------------------------------------------------------
  # 仠 戝宆慏偺愝掕
  #--------------------------------------------------------------------------
  vehicle = {}
  
  vehicle[:passage1]       = [0,1,6,8,12,14]
  vehicle[:move_speed]     = 5
  vehicle[:turning]        = 8
  vehicle[:encount]        = 50
  vehicle[:sync_dir]       = true
  vehicle[:get_here]       = false
  vehicle[:dir_type]       = 0
  
  vehicle[:inp_forward1]   = :A
  vehicle[:inp_forward2]   = :UP
  vehicle[:inp_backward]   = :DOWN
  vehicle[:inp_turnleft1]  = :LEFT
  vehicle[:inp_turnright1] = :RIGHT
  vehicle[:inp_get_off]    = :C
  vehicle[:inp_event]      = :C
  vehicle[:inp_menu]       = :B
  
  @data[:ship] = vehicle
  
  #--------------------------------------------------------------------------
  # 仠 旘峴慏偺愝掕
  #--------------------------------------------------------------------------
  vehicle = {}
  
  vehicle[:land_denial]    = (0..15).to_a + [20,21,23,28,31,36,39,43,44,45,47]
  vehicle[:move_speed]     = 6
  vehicle[:turning]        = 12
  vehicle[:encount]        = 0
  vehicle[:get_here]       = true
  vehicle[:flight]         = true
  vehicle[:dir_type]       = 0
  
  vehicle[:inp_forward1]   = :A
  vehicle[:inp_turnleft1]  = :LEFT
  vehicle[:inp_turnleft2]  = :L
  vehicle[:inp_turnright1] = :RIGHT
  vehicle[:inp_turnright2] = :R
  vehicle[:inp_up]         = :DOWN
  vehicle[:inp_down]       = :UP
  vehicle[:inp_horz]       = :X
  vehicle[:inp_get_off]    = :C
  vehicle[:inp_menu]       = :B
  
  @data[:airship] = vehicle
  
  #--------------------------------------------------------------------------
  # 仠 攏偺愝掕 (僒儞僾儖 1)
  #--------------------------------------------------------------------------
  vehicle = {}
  vehicle[:system]         = RPG::System::Vehicle.new
  vehicle[:system].character_name  = "Animal"
  vehicle[:system].character_index = 5
  vehicle[:system].bgm             = RPG::BGM.new('Field1')
  vehicle[:system].start_map_id    = 1
  vehicle[:system].start_x         = 58
  vehicle[:system].start_y         = 107
  
  vehicle[:passage1]       = [16,17,18,19,24,25,26,27,29,32,33,34,35,37,40,42]
  vehicle[:passage2]       = true
  vehicle[:move_speed]     = 4.5
  vehicle[:turning]        = 16
  vehicle[:step_anime]     = false
  vehicle[:encount]        = 0
  vehicle[:sync_dir]       = true
  vehicle[:get_here]       = true
  vehicle[:dir_type]       = 0
  
  vehicle[:inp_forward1]   = :A
  vehicle[:inp_forward2]   = :UP
  vehicle[:inp_backward]   = :DOWN
  vehicle[:inp_turnleft1]  = :LEFT
  vehicle[:inp_turnright1] = :RIGHT
  vehicle[:inp_get_off]    = :C
  vehicle[:inp_event]      = :C
  vehicle[:inp_menu]       = :B
  
  #@data[:horse] = vehicle             # 僐儊儞僩傾僂僩夝彍偱攝抲偝傟傑偡丅
  
  #--------------------------------------------------------------------------
  # 仠 旘峴慏2偺愝掕 (僒儞僾儖 2)
  #--------------------------------------------------------------------------
  vehicle = {}
  vehicle[:system]         = RPG::System::Vehicle.new
  vehicle[:system].character_name  = "Vehicle"
  vehicle[:system].character_index = 2
  vehicle[:system].bgm             = RPG::BGM.new('Field1')
  vehicle[:system].start_map_id    = 1
  vehicle[:system].start_x         = 58
  vehicle[:system].start_y         = 107
  
  vehicle[:land_denial]    = (0..15).to_a + [20,21,23,28,31,36,39,43,44,45,47]
  vehicle[:flight]         = true
  vehicle[:move_speed]     = 4
  vehicle[:turning]        = 10
  vehicle[:encount]        = 0
  vehicle[:get_here]       = true
  vehicle[:max_altitude]   = 60
  vehicle[:dir_type]       = 0
  
  vehicle[:inp_forward1]   = :UP
  vehicle[:inp_backward]   = :DOWN
  vehicle[:inp_left]       = :LEFT
  vehicle[:inp_right]      = :RIGHT
  vehicle[:inp_turnleft1]  = :LEFT
  vehicle[:inp_turnleft2]  = :L
  vehicle[:inp_turnright1] = :RIGHT
  vehicle[:inp_turnright2] = :R
  vehicle[:inp_up]         = :C
  vehicle[:inp_down]       = :B
  vehicle[:inp_horz]       = :A
  
  #@data[:S_airship] = vehicle
  
#//////////////////////////////////////////////////////////////////////////////
#
# 埲崀丄曄峏偡傞昁梫側偟
#
#//////////////////////////////////////////////////////////////////////////////

  #--------------------------------------------------------------------------
  # 仠 嵟掅尷昁梫側忔傝暔僨乕僞偑愝掕偝傟偰偄傞偐偳偆偐僠僃僢僋
  #--------------------------------------------------------------------------
  def self.msg_non_data(type, param)
    unless @data[type][param]
      message = "忔傝暔 [:%s] 偺僷儔儊乕僞 [:%s] 傪愝掕偟偰偔偩偝偄丅"
      msgbox sprintf(message, type, param)
      exit
    end
  end
  @data.each_key do |type|
    msg_non_data(type, :system) unless [:boat, :ship, :airship].include?(type)
    msg_non_data(type, :move_speed)
    msg_non_data(type, :turning)
    msg_non_data(type, :dir_type)
    msg_non_data(type, :vehicle_index3) if @data[type][:dir_type] == 3
  end
  
  def self.data
    @data
  end
  
end

  @material ||= []
  @material << :Veh3D
  def self.include?(sym)
    @material.include?(sym)
  end

end[/fold]

[fold=最后]进入[/fold]  

[VXA]Mode7_Ace_V1.9_Rotation_V1.7.zip

1.41 MB, 下载次数: 214

上传了,你应该可以下载吧,免费的

PPT 制作
回复

使用道具 举报

梦石
0
星屑
50
在线时间
145 小时
注册时间
2011-2-5
回帖
85
 楼主| 发表于 2015-8-13 16:02:45 | 显示全部楼层
13790758417 发表于 2015-8-11 15:24
我显示乱码,不好意思
下载地址http://www.mediafire.com/download/lws02dywddzd0x8/%5BVXA%5DMode7_Ace_ ...

谢谢~
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部