楼主: Sion

[RMVA发布] 多功能 DLL SiNova v10015【6/9更新鼠标脚本】

[复制链接]
梦石
0
星屑
50
在线时间
230 小时
注册时间
2014-2-16
回帖
164
发表于 2014-5-19 20:39:51 | 显示全部楼层
希望鼠标系统可以加个控制开关吧,因为和鼠标冲突的脚本略多...如果可以通过脚本来控制鼠标开关就好了。
回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

 楼主| 发表于 2014-5-19 22:37:54 | 显示全部楼层
mickeymo 发表于 2014-5-10 21:06
文字输入只能安排给变量吗?
可否用于角色名字输入
  1. typein_active(1)
  2. $game_actors[1].name = $game_variables[1]
复制代码
回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

 楼主| 发表于 2014-5-19 22:40:13 | 显示全部楼层
落月小天魔 发表于 2014-5-19 20:39
希望鼠标系统可以加个控制开关吧,因为和鼠标冲突的脚本略多...如果可以通过脚本来控制鼠标开关就好了。 ...

这脚本是刚学的时候写的,乱七八糟,好难改。自己动手丰衣足食吧
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-7-6 23:19:15 | 显示全部楼层
发现一个问题,修改窗口大小的功能在修改窗口的分辨率为正常值时窗口大小固定是544*416,如果游戏修改了分辨率以后用起来很蛋疼啊…………

点评

连按两次F3就被打回原形了  发表于 2014-7-7 23:36
resize_screen 放在 base 之前就行了  发表于 2014-7-7 19:59
回复

使用道具 举报

梦石
0
星屑
160
在线时间
103 小时
注册时间
2013-11-22
回帖
20
发表于 2014-8-2 15:03:06 | 显示全部楼层
360截图-89557350.jpg
存档读档就会变成这样,请问该怎么办?用了一个美化存档的脚本,舍不得弃掉...

点评

脚本呢?  发表于 2014-8-6 21:38
回复

使用道具 举报

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
回帖
155
发表于 2014-8-20 17:46:23 | 显示全部楼层
文本输入那里
似乎不能输出"  _   "
还有DELETE不能用

点评

好的  发表于 2014-8-23 22:44
最近在外面,源码在家里的电脑里,暂时没法弄咯。等回去的吧。  发表于 2014-8-23 22:08
可以了..." _ "被遮住了= =。delete还是不行  发表于 2014-8-20 21:50
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2014-4-2
回帖
11
发表于 2014-12-28 11:26:18 | 显示全部楼层
好东西回复支持
回复

使用道具 举报

梦石
0
星屑
1309
在线时间
904 小时
注册时间
2014-12-4
回帖
349
发表于 2015-9-11 20:34:07 | 显示全部楼层
本帖最后由 翻滚牛宝宝 于 2015-9-11 20:54 编辑

@Sion  楼主,这个鼠标指针变化 能不能在固定的地图变成固定的样子呀? 比如在Map2 就是鼠标指针2的样子   如果能扩展一下,按顺序自动0 1 2 3  显示就更好了, 这样就能动起来了……
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2015-9-12
回帖
13
发表于 2015-9-12 23:01:33 | 显示全部楼层
顶一个补回经验
回复

使用道具 举报

梦石
0
星屑
1297
在线时间
995 小时
注册时间
2014-12-14
回帖
2939

开拓者

发表于 2016-1-5 09:15:47 | 显示全部楼层
本帖最后由 Vortur 于 2016-1-10 16:52 编辑

感谢楼主的脚本!!

能否提供一个可以关闭鼠标脚本的代码呢?
   在下发现它与Falcao Pearl ABS Liquid v3 冲突,又不知从何改起。大概觉得可能是“鼠标”与“物品道具栏”有冲突。如果能有个“关闭鼠标脚本”的方法,或许就能解决一些因各种原因导致的不兼容现象。


  在下发现该脚本与 伪3D 脚本无法兼容;怀疑是因为“全键盘”功能与“伪3d”冲突的缘故。


在下的工程文件(伪3d已注释掉):
链接:http://pan.baidu.com/s/1hr1TLVe 密码:4c1v

脚本来自tseyik于该帖4楼的回复:
https://rpg.blue/thread-382183-1-1.html


在下使用这一版本的伪3d:
资料库
  1. =begin
  2. ▼ 乗り物擬似3D化 データベース ver. 3.0

  3. RPGツクールVXAce用スクリプト

  4. 制作 : 木星ペンギン
  5. URL  : http://woodpenguin.blog.fc2.com/

  6. ------------------------------------------------------------------------------
  7. 概要

  8. □ 乗り物搭乗時の画面を、後方から視た擬似3Dで表示します。

  9. ------------------------------------------------------------------------------
  10. 使い方

  11. □ 各パラメータの簡易説明
  12.   
  13.   :system         => 乗り物を追加する場合の基本データ
  14.   
  15.   :switch_id      => 乗り物搭乗時にONになるスイッチID
  16.   :passage1       => 通行できるオートタイルの種類の配列
  17.   :passage2       => タイルセットB~Eを通行できるかどうか
  18.   :land_denial    => 乗り物から降りられないオートタイルの種類の配列
  19.   :move_speed     => 移動速度(小数点以下も可能)
  20.   :turning        => 旋回速度
  21.   :walk_anime     => 搭乗中の歩行アニメフラグ
  22.   :step_anime     => 搭乗中の足踏みアニメフラグ
  23.   :encount        => エンカウント率(100で通常と同じ)
  24.   :sync_dir       => 搭乗時に乗り物の向きをプレイヤーの向きに合わせるフラグ
  25.   :get_here       => 重なった状態で搭乗するかどうかのフラグ
  26.   :flight         => 飛行フラグ
  27.   :max_altitude   => 飛行時の高度の上限
  28.   :min_altitude   => 飛行時の高度の下限
  29.   :dir_type       => 搭乗中に表示される乗り物の向き変更タイプ
  30.   :vehicle_index1 => 搭乗中に表示される乗り物の歩行グラフィックのインデックス1
  31.   :vehicle_index2 => 搭乗中に表示される乗り物の歩行グラフィックのインデックス2
  32.   :vehicle_index3 => 搭乗中に表示される乗り物の歩行グラフィックのインデックス3
  33.   :vehicle_zoom   => 搭乗中に表示される歩行グラフィックの拡大率
  34.   
  35.   :inp_forward1   => 前進を行うボタン1
  36.   :inp_forward2   => 前進を行うボタン2
  37.   :inp_backward   => 後退を行うボタン
  38.   :inp_turnleft1  => 右に旋回するボタン1
  39.   :inp_turnleft2  => 右に旋回するボタン2
  40.   :inp_turnright1 => 左に旋回するボタン1
  41.   :inp_turnright2 => 左に旋回するボタン2
  42.   :inp_up         => 上昇するボタン(飛行タイプのみ)
  43.   :inp_down       => 下降するボタン(飛行タイプのみ)
  44.   :inp_horz       => 水平移動するボタン(このボタンと方向キーで操作)
  45.   :inp_get_off    => 乗り物から降りるボタン
  46.   :inp_event      => イベントを調べるボタン
  47.   :inp_menu       => メニュー画面を開くボタン

  48. □ 設定項目の詳細説明は下記のサイトを参照してください。

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

  50. =end
  51. module WdTk
  52. module Veh3D
  53.   @data = {}
  54. #//////////////////////////////////////////////////////////////////////////////
  55. #
  56. # 設定項目
  57. #
  58. #//////////////////////////////////////////////////////////////////////////////
  59.   #--------------------------------------------------------------------------
  60.   # ● 背景画像
  61.   #--------------------------------------------------------------------------
  62.   Scenery = "BlueSky"
  63.   
  64.   #--------------------------------------------------------------------------
  65.   # ● 背景のループ回数
  66.   #--------------------------------------------------------------------------
  67.   Repeat = 4
  68.   
  69.   #--------------------------------------------------------------------------
  70.   # ● フレームレート (10 ~ 60)
  71.   #--------------------------------------------------------------------------
  72.   FrameRate = 40
  73.   
  74.   #--------------------------------------------------------------------------
  75.   # ● 小型船の設定
  76.   #--------------------------------------------------------------------------
  77.   vehicle = {}
  78.   
  79.   vehicle[:passage1]       = [0,6,8,12,14]
  80.   vehicle[:move_speed]     = 4
  81.   vehicle[:turning]        = 16
  82.   vehicle[:encount]        = 100
  83.   vehicle[:sync_dir]       = true
  84.   vehicle[:get_here]       = false
  85.   vehicle[:dir_type]       = 0
  86.   
  87.   vehicle[:inp_forward1]   = :A
  88.   vehicle[:inp_forward2]   = :UP
  89.   vehicle[:inp_backward]   = :DOWN
  90.   vehicle[:inp_turnleft1]  = :LEFT
  91.   vehicle[:inp_turnright1] = :RIGHT
  92.   vehicle[:inp_get_off]    = :C
  93.   vehicle[:inp_event]      = :C
  94.   vehicle[:inp_menu]       = :B
  95.   
  96.   @data[:boat] = vehicle
  97.   
  98.   #--------------------------------------------------------------------------
  99.   # ● 大型船の設定
  100.   #--------------------------------------------------------------------------
  101.   vehicle = {}
  102.   
  103.   vehicle[:passage1]       = [0,1,6,8,12,14]
  104.   vehicle[:move_speed]     = 5
  105.   vehicle[:turning]        = 8
  106.   vehicle[:encount]        = 50
  107.   vehicle[:sync_dir]       = true
  108.   vehicle[:get_here]       = false
  109.   vehicle[:dir_type]       = 0
  110.   
  111.   vehicle[:inp_forward1]   = :A
  112.   vehicle[:inp_forward2]   = :UP
  113.   vehicle[:inp_backward]   = :DOWN
  114.   vehicle[:inp_turnleft1]  = :LEFT
  115.   vehicle[:inp_turnright1] = :RIGHT
  116.   vehicle[:inp_get_off]    = :C
  117.   vehicle[:inp_event]      = :C
  118.   vehicle[:inp_menu]       = :B
  119.   
  120.   @data[:ship] = vehicle
  121.   
  122.   #--------------------------------------------------------------------------
  123.   # ● 飛行船の設定
  124.   #--------------------------------------------------------------------------
  125.   vehicle = {}
  126.   
  127.   vehicle[:land_denial]    = (0..15).to_a + [20,21,23,28,31,36,39,43,44,45,47]
  128.   vehicle[:move_speed]     = 6
  129.   vehicle[:turning]        = 12
  130.   vehicle[:encount]        = 0
  131.   vehicle[:get_here]       = true
  132.   vehicle[:flight]         = true
  133.   vehicle[:dir_type]       = 0
  134.   
  135.   vehicle[:inp_forward1]   = :A
  136.   vehicle[:inp_turnleft1]  = :LEFT
  137.   vehicle[:inp_turnleft2]  = :L
  138.   vehicle[:inp_turnright1] = :RIGHT
  139.   vehicle[:inp_turnright2] = :R
  140.   vehicle[:inp_up]         = :DOWN
  141.   vehicle[:inp_down]       = :UP
  142.   vehicle[:inp_horz]       = :X
  143.   vehicle[:inp_get_off]    = :C
  144.   vehicle[:inp_menu]       = :B
  145.   
  146.   @data[:airship] = vehicle
  147.   
  148.   #--------------------------------------------------------------------------
  149.   # ● 馬の設定 (サンプル 1)
  150.   #--------------------------------------------------------------------------
  151.   vehicle = {}
  152.   vehicle[:system]         = RPG::System::Vehicle.new
  153.   vehicle[:system].character_name  = "Animal"
  154.   vehicle[:system].character_index = 5
  155.   vehicle[:system].bgm             = RPG::BGM.new('Field1')
  156.   vehicle[:system].start_map_id    = 1
  157.   vehicle[:system].start_x         = 58
  158.   vehicle[:system].start_y         = 107
  159.   
  160.   vehicle[:passage1]       = [16,17,18,19,24,25,26,27,29,32,33,34,35,37,40,42]
  161.   vehicle[:passage2]       = true
  162.   vehicle[:move_speed]     = 4.5
  163.   vehicle[:turning]        = 16
  164.   vehicle[:step_anime]     = false
  165.   vehicle[:encount]        = 0
  166.   vehicle[:sync_dir]       = true
  167.   vehicle[:get_here]       = true
  168.   vehicle[:dir_type]       = 0
  169.   
  170.   vehicle[:inp_forward1]   = :A
  171.   vehicle[:inp_forward2]   = :UP
  172.   vehicle[:inp_backward]   = :DOWN
  173.   vehicle[:inp_turnleft1]  = :LEFT
  174.   vehicle[:inp_turnright1] = :RIGHT
  175.   vehicle[:inp_get_off]    = :C
  176.   vehicle[:inp_event]      = :C
  177.   vehicle[:inp_menu]       = :B
  178.   
  179.   #@data[:horse] = vehicle             # コメントアウト解除で配置されます。
  180.   
  181.   #--------------------------------------------------------------------------
  182.   # ● 飛行船2の設定 (サンプル 2)
  183.   #--------------------------------------------------------------------------
  184.   vehicle = {}
  185.   vehicle[:system]         = RPG::System::Vehicle.new
  186.   vehicle[:system].character_name  = "Vehicle"
  187.   vehicle[:system].character_index = 2
  188.   vehicle[:system].bgm             = RPG::BGM.new('Field1')
  189.   vehicle[:system].start_map_id    = 1
  190.   vehicle[:system].start_x         = 58
  191.   vehicle[:system].start_y         = 107
  192.   
  193.   vehicle[:land_denial]    = (0..15).to_a + [20,21,23,28,31,36,39,43,44,45,47]
  194.   vehicle[:flight]         = true
  195.   vehicle[:move_speed]     = 4
  196.   vehicle[:turning]        = 10
  197.   vehicle[:encount]        = 0
  198.   vehicle[:get_here]       = true
  199.   vehicle[:max_altitude]   = 60
  200.   vehicle[:dir_type]       = 0
  201.   
  202.   vehicle[:inp_forward1]   = :UP
  203.   vehicle[:inp_backward]   = :DOWN
  204.   vehicle[:inp_left]       = :LEFT
  205.   vehicle[:inp_right]      = :RIGHT
  206.   vehicle[:inp_turnleft1]  = :LEFT
  207.   vehicle[:inp_turnleft2]  = :L
  208.   vehicle[:inp_turnright1] = :RIGHT
  209.   vehicle[:inp_turnright2] = :R
  210.   vehicle[:inp_up]         = :C
  211.   vehicle[:inp_down]       = :B
  212.   vehicle[:inp_horz]       = :A
  213.   
  214.   #@data[:S_airship] = vehicle
  215.   
  216. #//////////////////////////////////////////////////////////////////////////////
  217. #
  218. # 以降、変更する必要なし
  219. #
  220. #//////////////////////////////////////////////////////////////////////////////

  221.   #--------------------------------------------------------------------------
  222.   # ● 最低限必要な乗り物データが設定されているかどうかチェック
  223.   #--------------------------------------------------------------------------
  224.   def self.msg_non_data(type, param)
  225.     unless @data[type][param]
  226.       message = "乗り物 [:%s] のパラメータ [:%s] を設定してください。"
  227.       msgbox sprintf(message, type, param)
  228.       exit
  229.     end
  230.   end
  231.   @data.each_key do |type|
  232.     msg_non_data(type, :system) unless [:boat, :ship, :airship].include?(type)
  233.     msg_non_data(type, :move_speed)
  234.     msg_non_data(type, :turning)
  235.     msg_non_data(type, :dir_type)
  236.     msg_non_data(type, :vehicle_index3) if @data[type][:dir_type] == 3
  237.   end
  238.   
  239.   def self.data
  240.     @data
  241.   end
  242.   
  243. end

  244.   @material ||= []
  245.   @material << :Veh3D
  246.   def self.include?(sym)
  247.     @material.include?(sym)
  248.   end

  249. end
复制代码


主程式
  1. =begin

  2. ▼ 乗り物擬似3D化 メインスクリプト ver. 3.0.1

  3. RPGツクールVXAce用スクリプト

  4. 制作 : 木星ペンギン
  5. URL  : http://woodpenguin.blog.fc2.com/


  6. #//////////////////////////////////////////////////////////////////////////////
  7. #
  8. # 設定項目なし
  9. #
  10. #//////////////////////////////////////////////////////////////////////////////

  11. ===メモ===
  12.    2x 行目~ : モジュール
  13.    5x 行目~ : ゲームオブジェクト
  14.   98x 行目~ : スプライト
  15. 139x 行目~ : ウィンドウ
  16. 141x 行目~ : シーン

  17. =end

  18. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  19. #
  20. # ▼ モジュール
  21. #
  22. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  23. module WdTk::Veh3D
  24.   #--------------------------------------------------------------------------
  25.   # ● フレームカウントのリセット
  26.   #--------------------------------------------------------------------------
  27.   def self.reset
  28.     @@frame_count = 0
  29.     @@need_update = true
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 更新
  33.   #--------------------------------------------------------------------------
  34.   def self.update
  35.     @@frame_count += FrameRate
  36.     @@need_update = @@frame_count >= 60
  37.     @@frame_count %= 60
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 更新が必要かどうか
  41.   #--------------------------------------------------------------------------
  42.   def self.need_update?
  43.     @@need_update
  44.   end
  45. end

  46. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  47. #
  48. # ▼ ゲームオブジェクト
  49. #
  50. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  51. #==============================================================================
  52. # ■ Game_Map
  53. #==============================================================================
  54. class Game_Map
  55.   #--------------------------------------------------------------------------
  56.   # ☆ 乗り物の作成
  57.   #--------------------------------------------------------------------------
  58.   def create_vehicles
  59.     @vehicles = WdTk::Veh3D.data.collect {|key,| Game_Vehicle.new(key) }
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ☆ 乗り物の取得
  63.   #--------------------------------------------------------------------------
  64.   def vehicle(type)
  65.     @vehicles.find {|vehicle| vehicle.type == type }
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 表示位置の設定 (ループ判定なし)
  69.   #--------------------------------------------------------------------------
  70.   def set_pos(x, y)
  71.     @display_x = x
  72.     @display_y = y
  73.     @parallax_x = x
  74.     @parallax_y = y
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 乗り物の通行可能判定
  78.   #--------------------------------------------------------------------------
  79.   def vehicle_passable?(x, y, types, through)
  80.     return true unless types
  81.     all_tiles(x, y).each do |tile_id|
  82.       if tile_id >= 2048
  83.         return types.include?((tile_id - 2048) / 48)
  84.       else
  85.         flag = tileset.flags[tile_id]
  86.         next if flag & 0x10 != 0
  87.         return (through && flag & 0x0f == 0)
  88.       end
  89.     end
  90.     return false
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 着陸可能判定
  94.   #--------------------------------------------------------------------------
  95.   def land_ok?(x, y, denial)
  96.     return false if denial && denial.include?(autotile_type(x, y, 1))
  97.     return false if denial && denial.include?(autotile_type(x, y, 0))
  98.     return check_passage(x, y, 0x0f)
  99.   end
  100. end

  101. #==============================================================================
  102. # ■ Game_CharacterBase
  103. #==============================================================================
  104. class Game_CharacterBase
  105.   #--------------------------------------------------------------------------
  106.   # ☆ 乗り物との衝突判定
  107.   #--------------------------------------------------------------------------
  108.   def collide_with_vehicles?(x, y)
  109.     $game_map.vehicles.any? {|v| v.pos_nt?(x, y) && !v.get_here? }
  110.   end
  111. end

  112. #==============================================================================
  113. # ■ Game_Player
  114. #==============================================================================
  115. class Game_Player
  116.   #--------------------------------------------------------------------------
  117.   # ● 公開インスタンス変数
  118.   #--------------------------------------------------------------------------
  119.   attr_reader   :keep_vehicles
  120.   attr_accessor :in_vehicle
  121.   #--------------------------------------------------------------------------
  122.   # ◯ オブジェクト初期化
  123.   #--------------------------------------------------------------------------
  124.   alias _wdtk_veh3d_initialize initialize
  125.   def initialize
  126.     _wdtk_veh3d_initialize
  127.     @keep_vehicles = []
  128.   end
  129.   #--------------------------------------------------------------------------
  130.   # ● 搭乗中のタイプかどうか
  131.   #--------------------------------------------------------------------------
  132.   def driving?(type)
  133.     @in_vehicle && @vehicle_type == type
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ◯ 場所移動の実行
  137.   #--------------------------------------------------------------------------
  138.   alias _wdtk_veh3d_perform_transfer perform_transfer
  139.   def perform_transfer
  140.     if transfer? && vehicle
  141.       vehicle.set_direction(@new_direction)
  142.       _wdtk_veh3d_perform_transfer
  143.       vehicle.sync_with_player
  144.     else
  145.       _wdtk_veh3d_perform_transfer
  146.     end
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ☆ 飛行する乗り物に乗っているかどうか
  150.   #--------------------------------------------------------------------------
  151.   def in_airship?
  152.     @in_vehicle && vehicle.flight?
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ◯ フレーム更新
  156.   #--------------------------------------------------------------------------
  157.   alias _wdtk_veh3d_update update
  158.   def update
  159.     if @in_vehicle
  160.       return if !movable? || $game_map.interpreter.running?
  161.       vehicle.process_control
  162.       last_x = @x
  163.       last_y = @y
  164.       @x = @real_x = vehicle.x.round
  165.       @y = @real_y = vehicle.y.round
  166.       update_vehicle_moving(last_x != @x || last_y != @y)
  167.     else
  168.       _wdtk_veh3d_update
  169.     end
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 乗り物で移動した場合の処理
  173.   #     tile_moving : タイルを移動したかどうか
  174.   #--------------------------------------------------------------------------
  175.   def update_vehicle_moving(tile_moving)
  176.     if tile_moving
  177.       increase_steps
  178.       vehicle.update_bush_depth
  179.     end
  180.     return if $game_map.interpreter.running?
  181.     if tile_moving
  182.       return if check_touch_event
  183.     end
  184.     return if vehicle.process_handling
  185.     update_encounter if tile_moving
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ☆ 乗り物に乗る動作の更新
  189.   #--------------------------------------------------------------------------
  190.   def update_vehicle_get_on
  191.     if !@followers.gathering? && !moving?
  192.       @vehicle_getting_on = false
  193.       @transparent = true
  194.       vehicle.get_on
  195.     end
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ☆ エンカウントの更新
  199.   #--------------------------------------------------------------------------
  200.   def update_encounter
  201.     return if $TEST && Input.press?(:CTRL)
  202.     return if $game_party.encounter_none?
  203.     return if @in_vehicle && vehicle.encounter_none?
  204.     return if @move_route_forcing
  205.     @encounter_count -= encounter_progress_value
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ☆ エンカウント進行値の取得
  209.   #--------------------------------------------------------------------------
  210.   def encounter_progress_value
  211.     value = $game_map.bush?(@x, @y) ? 2 : 1
  212.     value *= 0.5 if $game_party.encounter_half?
  213.     value *= vehicle.encount_rate / 100.0 if @in_vehicle
  214.     value
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ◯ 決定ボタンによるイベント起動判定
  218.   #--------------------------------------------------------------------------
  219.   alias _wdtk_veh3d_check_action_event check_action_event
  220.   def check_action_event
  221.     if in_airship?
  222.       check_event_trigger_here([0])
  223.       $game_map.setup_starting_event
  224.     else
  225.       _wdtk_veh3d_check_action_event
  226.     end
  227.   end
  228.   #--------------------------------------------------------------------------
  229.   # ☆ 乗り物に乗る
  230.   #    現在乗り物に乗っていないことが前提。
  231.   #--------------------------------------------------------------------------
  232.   def get_on_vehicle
  233.     front_x = $game_map.round_x_with_direction(@x, @direction)
  234.     front_y = $game_map.round_y_with_direction(@y, @direction)
  235.     $game_map.vehicles.each do |veh|
  236.       next if veh.control
  237.       if veh.get_here?
  238.         @vehicle_type = veh.type if veh.pos?(@x, @y)
  239.       else
  240.         @vehicle_type = veh.type if veh.pos?(front_x, front_y)
  241.       end
  242.     end
  243.     if vehicle
  244.       @vehicle_getting_on = true
  245.       force_move_forward unless vehicle.get_here?
  246.       @followers.gather
  247.     end
  248.     @vehicle_getting_on
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ☆ 乗り物から降りる
  252.   #--------------------------------------------------------------------------
  253.   def get_off_vehicle
  254.     if vehicle.land_ok?(@x, @y, vehicle.angle_dir)
  255.       set_direction(vehicle.sync_dir? ? vehicle.angle_dir : 2)
  256.       @followers.synchronize(@x, @y, @direction)
  257.       vehicle.get_off
  258.       @vehicle_getting_off = true
  259.       make_encounter_count
  260.       @followers.gather
  261.     end
  262.     @vehicle_getting_off
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 乗り物開始処理
  266.   #--------------------------------------------------------------------------
  267.   def on_vehicle_start
  268.     @in_vehicle = true
  269.     if @vehicle_type == :walk
  270.       @vehicle_type = @keep_vehicles.pop
  271.       @transparent = true
  272.       @followers.update
  273.     end
  274.     _wdtk_veh3d_perform_transfer
  275.     vehicle.on_vehicle_start
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● 乗り物終了処理
  279.   #--------------------------------------------------------------------------
  280.   def on_vehicle_end
  281.     @in_vehicle = false
  282.     center(@x, @y)
  283.     vehicle.on_vehicle_end
  284.     if @keep_vehicles.include?(@vehicle_type)
  285.       vehicle.get_off
  286.       @vehicle_type = :walk
  287.       @transparent = false
  288.       @followers.update
  289.     elsif !vehicle.get_here?
  290.       force_move_forward
  291.       @transparent = false
  292.     end
  293.     $game_map.autoplay
  294.     _wdtk_veh3d_perform_transfer
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● 記憶した乗り物に乗る
  298.   #--------------------------------------------------------------------------
  299.   def get_on_keep_vehicle
  300.     sym = @keep_vehicles[-1]
  301.     $game_map.vehicle(sym).transfer if sym
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ● 現在の乗り物を記憶
  305.   #--------------------------------------------------------------------------
  306.   def keep_vehicle
  307.     @keep_vehicles.delete(@vehicle_type)
  308.     @keep_vehicles << @vehicle_type
  309.   end
  310.   #--------------------------------------------------------------------------
  311.   # ● 記憶した乗り物の削除
  312.   #--------------------------------------------------------------------------
  313.   def delete_keep_vehicle
  314.     sym = @keep_vehicles.pop
  315.     $game_map.vehicle(sym).on_vehicle_end if sym
  316.   end
  317. end

  318. #==============================================================================
  319. # ■ Game_Vehicle
  320. #==============================================================================
  321. class Game_Vehicle
  322.   #--------------------------------------------------------------------------
  323.   # ● モジュール
  324.   #--------------------------------------------------------------------------
  325.   include Math
  326.   #--------------------------------------------------------------------------
  327.   # ● 公開インスタンス変数
  328.   #--------------------------------------------------------------------------
  329.   attr_reader   :type
  330.   attr_reader   :angle
  331.   attr_reader   :drive_direction
  332.   attr_reader   :control
  333.   #--------------------------------------------------------------------------
  334.   # ◯ オブジェクト初期化
  335.   #--------------------------------------------------------------------------
  336.   alias _wdtk_veh3d_initialize initialize
  337.   def initialize(type)
  338.     _wdtk_veh3d_initialize(type)
  339.     @drive_speed = 0
  340.     @drive_direction = 5
  341.     @angle = 0
  342.     @angle_speed = 0
  343.     @slide_speed = 0
  344.     @control = false
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● 乗り物データの取得
  348.   #--------------------------------------------------------------------------
  349.   def param(sym)
  350.     WdTk::Veh3D.data[@type][sym]
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ☆ 移動速度の初期化
  354.   #--------------------------------------------------------------------------
  355.   def init_move_speed
  356.     @move_speed = param(:move_speed)
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ◯ システム設定の取得
  360.   #--------------------------------------------------------------------------
  361.   alias _wdtk_veh3d_system_vehicle system_vehicle
  362.   def system_vehicle
  363.     _wdtk_veh3d_system_vehicle || param(:system)
  364.   end
  365.   #--------------------------------------------------------------------------
  366.   # ● 移動中判定
  367.   #--------------------------------------------------------------------------
  368.   def moving?
  369.     @control ? @drive_speed != 0 || @angle_speed != 0 : super
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● 1 フレームあたりの移動距離を計算
  373.   #--------------------------------------------------------------------------
  374.   def distance_per_frame
  375.     super * 60 / WdTk::Veh3D::FrameRate
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # ● デバッグすり抜け状態判定
  379.   #--------------------------------------------------------------------------
  380.   def debug_through?
  381.     $TEST && Input.press?(:CTRL)
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● 乗り物との衝突判定
  385.   #--------------------------------------------------------------------------
  386.   def collide_with_vehicles?(x, y)
  387.     $game_map.vehicles.any? {|v| v != self && v.pos_nt?(x, y) }
  388.   end
  389.   #--------------------------------------------------------------------------
  390.   # ● 指定方向に向き変更
  391.   #     d : 方向(2,4,6,8)
  392.   #--------------------------------------------------------------------------
  393.   def set_direction(d)
  394.     super
  395.     if @driving && d != 0
  396.       case @direction
  397.       when 2; @angle = 180
  398.       when 4; @angle = 90
  399.       when 6; @angle = 270
  400.       when 8; @angle = 0
  401.       end
  402.       stop
  403.     end
  404.   end
  405.   #--------------------------------------------------------------------------
  406.   # ● グラフィックインデックスの取得
  407.   #--------------------------------------------------------------------------
  408.   def vehicle_index
  409.     case @drive_direction
  410.     when 5;       param(:vehicle_index1) || @character_index
  411.     when 2,4,6,8; param(:vehicle_index2) || param(:vehicle_index1) || @character_index
  412.     when 1,3,7,9; param(:vehicle_index3) || @character_index
  413.     end
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 場所移動の予約
  417.   #--------------------------------------------------------------------------
  418.   def transfer
  419.     $game_player.reserve_transfer(@map_id, @x.round, @y.round)
  420.     last_angle = @angle
  421.     get_on
  422.     @angle = last_angle
  423.   end
  424.   #--------------------------------------------------------------------------
  425.   # ◯ 乗り物に乗る
  426.   #--------------------------------------------------------------------------
  427.   alias _wdtk_veh3d_get_on get_on
  428.   def get_on
  429.     _wdtk_veh3d_get_on
  430.     @walk_anime = param(:walk_anime) != false
  431.     @step_anime = param(:step_anime) != false
  432.     @drive_speed = 0
  433.     @drive_direction = 5
  434.     @slide_speed = 0
  435.     @angle = 0
  436.     set_direction($game_player.direction) if sync_dir?
  437.     @angle_speed = 0
  438.     SceneManager.goto(Scene_Vehicle)
  439.   end
  440.   #--------------------------------------------------------------------------
  441.   # ◯ 乗り物から降りる
  442.   #--------------------------------------------------------------------------
  443.   alias _wdtk_veh3d_get_off get_off
  444.   def get_off
  445.     _wdtk_veh3d_get_off
  446.     @step_anime = param(:step_anime) != false
  447.     SceneManager.goto(Scene_Map)
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ● 乗り物開始処理
  451.   #--------------------------------------------------------------------------
  452.   def on_vehicle_start
  453.     unless @control
  454.       @control = true
  455.       if flight?
  456.         @altitude = [[@altitude, max_altitude].min, min_altitude].max
  457.       else
  458.         @altitude = 8
  459.       end
  460.     end
  461.     $game_switches[param(:switch_id)] = true if param(:switch_id)
  462.   end
  463.   #--------------------------------------------------------------------------
  464.   # ● 乗り物終了処理
  465.   #--------------------------------------------------------------------------
  466.   def on_vehicle_end
  467.     unless @driving
  468.       @control = false
  469.       @altitude = flight? ? 32 : 0
  470.       moveto(@x.round, @y.round)
  471.     end
  472.     $game_switches[param(:switch_id)] = false if param(:switch_id)
  473.     refresh
  474.   end
  475.   #--------------------------------------------------------------------------
  476.   # ● 停止
  477.   #--------------------------------------------------------------------------
  478.   def stop
  479.     @drive_speed = 0
  480.     @angle_speed = 0
  481.     @stop_count = 0
  482.   end
  483.   #--------------------------------------------------------------------------
  484.   # ● 移動可能判定
  485.   #--------------------------------------------------------------------------
  486.   def movable?
  487.     @driving
  488.   end
  489.   #--------------------------------------------------------------------------
  490.   # ☆ リフレッシュ
  491.   #--------------------------------------------------------------------------
  492.   def refresh
  493.     if @driving
  494.       @map_id = $game_map.map_id
  495.       #sync_with_player
  496.       stop
  497.     elsif @map_id == $game_map.map_id
  498.       moveto(@x, @y)
  499.     end
  500.     if flight?
  501.       @priority_type = @driving ? 2 : 0
  502.     else
  503.       @priority_type = 1
  504.     end
  505.     if @control
  506.       @drive_direction = 5
  507.       @walk_anime = param(:walk_anime) != false
  508.       @step_anime = param(:step_anime) != false
  509.     else
  510.       @walk_anime = @step_anime = false
  511.     end
  512.   end
  513.   #--------------------------------------------------------------------------
  514.   # ● 飛行するかどうか
  515.   #--------------------------------------------------------------------------
  516.   def flight?
  517.     param(:flight)
  518.   end
  519.   #--------------------------------------------------------------------------
  520.   # ● 搭乗時向き変更するかどうか
  521.   #--------------------------------------------------------------------------
  522.   def sync_dir?
  523.     param(:sync_dir)
  524.   end
  525.   #--------------------------------------------------------------------------
  526.   # ● 同一による搭乗かどうか
  527.   #--------------------------------------------------------------------------
  528.   def get_here?
  529.     param(:get_here)
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ● エンカウント率の取得
  533.   #--------------------------------------------------------------------------
  534.   def encount_rate
  535.     param(:encount) || 0
  536.   end
  537.   #--------------------------------------------------------------------------
  538.   # ● エンカウント無効?
  539.   #--------------------------------------------------------------------------
  540.   def encounter_none?
  541.     encount_rate == 0
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ● 角度から方向の取得
  545.   #--------------------------------------------------------------------------
  546.   def angle_dir
  547.     case (@angle + 45).to_i / 90
  548.     when 0,4; 8
  549.     when 1;   4
  550.     when 2;   2
  551.     when 3;   6
  552.     end
  553.   end
  554.   #--------------------------------------------------------------------------
  555.   # ☆ フレーム更新
  556.   #--------------------------------------------------------------------------
  557.   def update
  558.     if @control
  559.       update_animation
  560.       if $game_player.driving?(@type) && !@driving && flight?
  561.         if @altitude > 32 || Graphics.frame_count % (5 - @altitude / 8) == 0
  562.           @altitude -= 1
  563.         end
  564.       end
  565.     else
  566.       super
  567.       update_airship_altitude if flight?
  568.       @step_anime = param(:step_anime) != false if @driving
  569.     end
  570.   end
  571.   #--------------------------------------------------------------------------
  572.   # ● 乗り物操縦時の処理
  573.   #--------------------------------------------------------------------------
  574.   def process_control
  575.     @drive_direction = 5
  576.     if Input.press?(param(:inp_forward1)) || Input.press?(param(:inp_forward2))
  577.       process_forward
  578.     elsif Input.press?(param(:inp_backward))
  579.       process_backward
  580.     else
  581.       process_reduce_drive
  582.     end
  583.     if Input.press?(param(:inp_left))
  584.       process_left
  585.     elsif Input.press?(param(:inp_right))
  586.       process_right
  587.     else
  588.       process_reduce_slide
  589.     end
  590.     unless Input.press?(param(:inp_horz))
  591.       turn = 0
  592.       turn += 1 if Input.press?(param(:inp_turnleft1))
  593.       turn += 1 if Input.press?(param(:inp_turnleft2))
  594.       turn -= 1 if Input.press?(param(:inp_turnright1))
  595.       turn -= 1 if Input.press?(param(:inp_turnright2))
  596.       process_turn(turn)
  597.       if flight?
  598.         process_up   if Input.press?(param(:inp_up))
  599.         process_down if Input.press?(param(:inp_down))
  600.       end
  601.     else
  602.       process_reduce_turn
  603.     end
  604.     if WdTk::Veh3D.need_update?
  605.       update_angle
  606.       if @drive_speed != 0
  607.         update_drive(@angle, distance_per_frame * @drive_speed / 32)
  608.       end
  609.       if @slide_speed != 0
  610.         update_drive(@angle + 90, distance_per_frame * @slide_speed / 32)
  611.       elsif @drive_speed == 0 && Input.press?(param(:inp_horz))
  612.         process_horz
  613.       end
  614.     end
  615.     update_stop unless moving?
  616.   end
  617.   #--------------------------------------------------------------------------
  618.   # ● 操縦以外の処理
  619.   #--------------------------------------------------------------------------
  620.   def process_handling
  621.     if @drive_speed <= 12
  622.       if Input.trigger?(param(:inp_get_off)) || (!param(:inp_get_off) &&
  623.          @altitude <= (min_altitude + 8) && Input.press?(param(:inp_down)))
  624.         return stop if $game_player.get_off_vehicle
  625.       end
  626.       if Input.trigger?(param(:inp_event))
  627.         $game_player.set_direction(angle_dir)
  628.         return stop if $game_player.check_action_event
  629.       end
  630.     end
  631.     if Input.trigger?(param(:inp_menu))
  632.       return process_menu
  633.     end
  634.   end
  635.   #--------------------------------------------------------------------------
  636.   # ● 前進の処理
  637.   #--------------------------------------------------------------------------
  638.   def process_forward
  639.     @drive_speed += 1 if @drive_speed < 32
  640.     @stop_count = 0
  641.   end
  642.   #--------------------------------------------------------------------------
  643.   # ● 後退の処理
  644.   #--------------------------------------------------------------------------
  645.   def process_backward
  646.     @drive_speed -= 1 if @drive_speed > -16
  647.     @stop_count = 0
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # ● 速度低下の処理
  651.   #--------------------------------------------------------------------------
  652.   def process_reduce_drive
  653.     @drive_speed += (0 <=> @drive_speed)
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # ● 左移動の処理
  657.   #--------------------------------------------------------------------------
  658.   def process_left
  659.     @slide_speed += 1 if @slide_speed < 16
  660.     @stop_count = 0
  661.   end
  662.   #--------------------------------------------------------------------------
  663.   # ● 右移動の処理
  664.   #--------------------------------------------------------------------------
  665.   def process_right
  666.     @slide_speed -= 1 if @slide_speed > -16
  667.     @stop_count = 0
  668.   end
  669.   #--------------------------------------------------------------------------
  670.   # ● 横移動低下の処理
  671.   #--------------------------------------------------------------------------
  672.   def process_reduce_slide
  673.     @slide_speed += (0 <=> @slide_speed)
  674.   end
  675.   #--------------------------------------------------------------------------
  676.   # ● 旋回の処理
  677.   #--------------------------------------------------------------------------
  678.   def process_turn(speed)
  679.     if @angle_speed < 24 * speed
  680.       @angle_speed += 1 if @angle_speed < 32
  681.     elsif @angle_speed > 24 * speed
  682.       @angle_speed -= 1 if @angle_speed > -32
  683.     end
  684.     if speed != 0
  685.       @drive_direction += (0 <=> speed) if (param(:dir_type) || 0) >= 1
  686.       @stop_count = 0
  687.     end
  688.   end
  689.   #--------------------------------------------------------------------------
  690.   # ● 旋回低下の処理
  691.   #--------------------------------------------------------------------------
  692.   def process_reduce_turn
  693.     @angle_speed += (0 <=> @angle_speed)
  694.   end
  695.   #--------------------------------------------------------------------------
  696.   # ● 上昇の処理
  697.   #--------------------------------------------------------------------------
  698.   def process_up
  699.     @altitude += 1        if @altitude < max_altitude
  700.     @drive_direction += 3 if param(:dir_type) >= 2
  701.   end
  702.   #--------------------------------------------------------------------------
  703.   # ● 下降の処理
  704.   #--------------------------------------------------------------------------
  705.   def process_down
  706.     @altitude -= 1        if @altitude > min_altitude
  707.     @drive_direction -= 3 if param(:dir_type) >= 2
  708.   end
  709.   #--------------------------------------------------------------------------
  710.   # ● メニュー呼び出しの処理
  711.   #--------------------------------------------------------------------------
  712.   def process_menu
  713.     Sound.play_ok
  714.     SceneManager.call(Scene_Menu)
  715.     Window_MenuCommand::init_command_position
  716.   end
  717.   #--------------------------------------------------------------------------
  718.   # ● 水平移動の処理
  719.   #--------------------------------------------------------------------------
  720.   def process_horz
  721.     case Input.dir8
  722.     when 1; angle = (@angle + 135) % 360
  723.     when 2; angle = (@angle + 180) % 360
  724.     when 3; angle = (@angle + 225) % 360
  725.     when 4; angle = (@angle + 90) % 360
  726.     when 6; angle = (@angle + 270) % 360
  727.     when 7; angle = (@angle + 45) % 360
  728.     when 8; angle = @angle
  729.     when 9; angle = (@angle + 315) % 360
  730.     else return
  731.     end
  732.     update_drive(angle, distance_per_frame / 3)
  733.   end
  734.   #--------------------------------------------------------------------------
  735.   # ● 向きの更新
  736.   #--------------------------------------------------------------------------
  737.   def update_angle
  738.     speed = param(:turning) * @angle_speed / 128.0 * 60 / WdTk::Veh3D::FrameRate
  739.     @angle = (@angle + speed) % 360
  740.   end
  741.   #--------------------------------------------------------------------------
  742.   # ● 移動時の更新
  743.   #--------------------------------------------------------------------------
  744.   def update_drive(angle, distance)
  745.     x1 = $game_map.round_x(@x.round)
  746.     y1 = $game_map.round_y(@y.round)
  747.     tx = $game_map.round_x(@x - sin(angle * PI / 180) * distance)
  748.     ty = $game_map.round_y(@y - cos(angle * PI / 180) * distance)
  749.     x2 = round_x_with_pos(tx)
  750.     y2 = round_y_with_pos(ty)
  751.     if x1 == x2 || vehicle_passable?(x2, y1)
  752.       @x = @real_x = tx
  753.       if (y1 == y2 || vehicle_passable?(x1, y2)) &&
  754.          (x1 == x2 || vehicle_passable?(x2, y2))
  755.         @y = @real_y = ty
  756.       end
  757.     elsif y1 == y2 || vehicle_passable?(x1, y2)
  758.       @y = @real_y = ty
  759.     end
  760.   end
  761.   #--------------------------------------------------------------------------
  762.   # ☆ 飛行船の最大高度を取得
  763.   #--------------------------------------------------------------------------
  764.   def max_altitude
  765.     param(:max_altitude) || 100
  766.   end
  767.   #--------------------------------------------------------------------------
  768.   # ● 飛行船の最低高度を取得
  769.   #--------------------------------------------------------------------------
  770.   def min_altitude
  771.     param(:min_altitude) || 20
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ☆ 接岸/着陸可能判定
  775.   #     d : 方向(2,4,6,8)
  776.   #--------------------------------------------------------------------------
  777.   def land_ok?(x, y, d)
  778.     if get_here?
  779.       return false unless $game_map.land_ok?(x, y, param(:land_denial))
  780.       return false unless $game_map.events_xy(x, y).empty?
  781.       return false if collide_with_vehicles?(x, y)
  782.     else
  783.       x2 = $game_map.round_x_with_direction(x, d)
  784.       y2 = $game_map.round_y_with_direction(y, d)
  785.       return false unless $game_map.valid?(x2, y2)
  786.       return false unless $game_map.passable?(x2, y2, reverse_dir(d))
  787.       return false if collide_with_characters?(x2, y2)
  788.     end
  789.     return true
  790.   end
  791.   #--------------------------------------------------------------------------
  792.   # ● 通行可能判定
  793.   #--------------------------------------------------------------------------
  794.   def vehicle_passable?(x2, y2)
  795.     return false unless $game_map.valid?(x2, y2)
  796.     return true if @through || debug_through?
  797.     return false unless map_passable?(x2, y2, 0)
  798.     if !flight? && collide_with_events?(x2, y2)
  799.       $game_player.check_event_trigger_touch(x2, y2)
  800.       stop if $game_map.any_event_starting?
  801.       return false
  802.     end
  803.     return false if !flight? && collide_with_vehicles?(x2, y2)
  804.     return true
  805.   end
  806.   #--------------------------------------------------------------------------
  807.   # ● 特定の方向にずらした座標の計算(ループ補正あり)
  808.   #--------------------------------------------------------------------------
  809.   def round_x_with_pos(x)
  810.     return $game_map.round_x(x.floor) if x < @x && x % 1 < 0.75
  811.     return $game_map.round_x(x.ceil)  if x > @x && x % 1 > 0.25
  812.     return $game_map.round_x(x.round)
  813.   end
  814.   def round_y_with_pos(y)
  815.     return $game_map.round_y(y.floor) if y < @y && y % 1 < 0.75
  816.     return $game_map.round_y(y.ceil)  if y > @y && y % 1 > 0.25
  817.     return $game_map.round_y(y.round)
  818.   end
  819.   #--------------------------------------------------------------------------
  820.   # ● 乗り物のマップ通行可能判定
  821.   #--------------------------------------------------------------------------
  822.   def map_passable?(x, y, d)
  823.     $game_map.vehicle_passable?(x, y, param(:passage1), param(:passage2))
  824.   end
  825.   #--------------------------------------------------------------------------
  826.   # ● 角度からラジアンの取得
  827.   #--------------------------------------------------------------------------
  828.   def angle_radian
  829.     if @angle < 90
  830.       sx = [@angle, 45].min
  831.     elsif @angle < 270
  832.       sx = [[180 - @angle, 45].min, -45].max
  833.     else
  834.       sx = [@angle - 360, -45].max
  835.     end
  836.     sy = [[(@angle - 180).abs - 90, 45].min, -45].max
  837.     base = @angle * PI / 180
  838.     base + (atan2(sx, sy) - base) * 2
  839.   end
  840.   #--------------------------------------------------------------------------
  841.   # ● 画面座標の計算
  842.   #--------------------------------------------------------------------------
  843.   def display_x
  844.     (@x - view_distance * sin(angle_radian) + 0.5) % $game_map.width - center_x
  845.   end
  846.   def display_y
  847.     (@y - view_distance * cos(angle_radian) + 0.5) % $game_map.height - center_y
  848.   end
  849.   #--------------------------------------------------------------------------
  850.   # ● 視界距離の取得
  851.   #--------------------------------------------------------------------------
  852.   def view_distance
  853.     5.8 + (Graphics.height - 416) / 64.0
  854.   end
  855.   #--------------------------------------------------------------------------
  856.   # ● スナップ距離の取得
  857.   #--------------------------------------------------------------------------
  858.   def snap_distance
  859.     view_distance * 32 - 8
  860.   end
  861.   #--------------------------------------------------------------------------
  862.   # ● 画面中央の座標
  863.   #--------------------------------------------------------------------------
  864.   def center_x
  865.     Graphics.width / 64.0
  866.   end
  867.   def center_y
  868.     Graphics.height / 64.0
  869.   end
  870.   #--------------------------------------------------------------------------
  871.   # ● スナップ用原点座標の計算
  872.   #--------------------------------------------------------------------------
  873.   def snap_ox
  874.     ((@x * 32).to_i - ($game_map.display_x * 32).to_i + 16) %
  875.     ($game_map.width * 32)
  876.   end
  877.   def snap_oy
  878.     ((@y * 32).to_i - ($game_map.display_y * 32).to_i + 16) %
  879.     ($game_map.height * 32)
  880.   end
  881.   #--------------------------------------------------------------------------
  882.   # ● 原点 Y 座標の計算
  883.   #--------------------------------------------------------------------------
  884.   def adjust_oy(sy)
  885.     s = (Graphics.height - 416) / 2
  886.     rate = sy / (256.0 + s)
  887.     (adjust_bottom(s) + adjust_height(s) * rate + adjust_alt(rate)).to_i
  888.   end
  889.   def adjust_bottom(s)
  890.     88 + s
  891.   end
  892.   def adjust_height(s)
  893.     318 + s - @altitude / 10.0
  894.   end
  895.   def adjust_alt(rate)
  896.     (190 - @altitude) * (sin((0.75 - 0.5 * rate) * PI) - sin(0.75 * PI))
  897.   end
  898.   #--------------------------------------------------------------------------
  899.   # ● 表示座標を差し引いた Y 座標の計算
  900.   #--------------------------------------------------------------------------
  901.   def adjust_y(sy)
  902.     160 + ((sy / 16.0) ** 2).to_i
  903.   end
  904.   #--------------------------------------------------------------------------
  905.   # ● 拡大率の取得
  906.   #--------------------------------------------------------------------------
  907.   def adjust_zoom(sy)
  908.     s = (Graphics.height - 416) / 2
  909.     1.333 + 420.0 / (@altitude + 60) * sy / (318 + s)
  910.   end
  911.   #--------------------------------------------------------------------------
  912.   # ● 乗り物画面表示座標の取得
  913.   #--------------------------------------------------------------------------
  914.   def vscreen_x
  915.     Graphics.width / 2
  916.   end
  917.   def vscreen_y
  918.     Graphics.height - 48 - (flight? ? @altitude * 2 : 0)
  919.   end
  920.   def vscreen_z
  921.     100
  922.   end
  923.   #--------------------------------------------------------------------------
  924.   # ● 乗り物画面表示拡大率の取得
  925.   #--------------------------------------------------------------------------
  926.   def vscreen_zoom
  927.     param(:vehicle_zoom) || 2.0
  928.   end
  929.   #--------------------------------------------------------------------------
  930.   # ● 原点から Y 座標の計算
  931.   #--------------------------------------------------------------------------
  932.   STEP = 5
  933.   def origin_y(oy)
  934.     s = (Graphics.height - 416) / 2
  935.     b = adjust_bottom(s)
  936.     h = adjust_height(s)
  937.     return 0 unless oy.between?(b, b + h + 32)
  938.     i = ((oy - b - (190 - @altitude) * 0.3) * (256 + s) / h).to_i
  939.     i += STEP while adjust_oy(i) < oy
  940.     n1 = adjust_oy(i - STEP)
  941.     n2 = adjust_oy(i)
  942.     i += STEP.to_f * (oy - n1) / (n2 - n1) - STEP if n1 < n2
  943.     adjust_y(i)
  944.   end
  945. end

  946. #==============================================================================
  947. # ■ Game_Interpreter
  948. #==============================================================================
  949. class Game_Interpreter
  950.   #--------------------------------------------------------------------------
  951.   # ☆ 乗り物の乗降
  952.   #--------------------------------------------------------------------------
  953.   def command_206
  954.     if $game_player.in_vehicle && next_event_code == 201
  955.       $game_player.keep_vehicle
  956.       SceneManager.goto(Scene_Map)
  957.     elsif !$game_player.get_on_off_vehicle
  958.       $game_player.get_on_keep_vehicle
  959.     end
  960.   end
  961. end

  962. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  963. #
  964. # スプライト
  965. #
  966. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  967. #==============================================================================
  968. # ■ Sprite_Character
  969. #==============================================================================
  970. class Sprite_Character
  971.   #--------------------------------------------------------------------------
  972.   # ○ 解放
  973.   #--------------------------------------------------------------------------
  974.   alias _wdtk_veh3d_dispose dispose
  975.   def dispose
  976.     dispose_shadow
  977.     _wdtk_veh3d_dispose
  978.   end
  979.   #--------------------------------------------------------------------------
  980.   # ○ フレーム更新
  981.   #--------------------------------------------------------------------------
  982.   alias _wdtk_veh3d_update update
  983.   def update
  984.     _wdtk_veh3d_update
  985.     update_shadow
  986.   end
  987.   #--------------------------------------------------------------------------
  988.   # ● 影表示の開始
  989.   #--------------------------------------------------------------------------
  990.   def start_shadow
  991.     @shadow_sprite = ::Sprite.new(viewport)
  992.     @shadow_sprite.bitmap = Cache.system("Shadow")
  993.     @shadow_sprite.ox = @shadow_sprite.bitmap.width / 2
  994.     @shadow_sprite.oy = @shadow_sprite.bitmap.height
  995.     @shadow_sprite.z = 180
  996.   end
  997.   #--------------------------------------------------------------------------
  998.   # ● 影の解放
  999.   #--------------------------------------------------------------------------
  1000.   def dispose_shadow
  1001.     if @shadow_sprite
  1002.       @shadow_sprite.dispose
  1003.       @shadow_sprite = nil
  1004.     end
  1005.   end
  1006.   #--------------------------------------------------------------------------
  1007.   # ● 影の更新
  1008.   #--------------------------------------------------------------------------
  1009.   def update_shadow
  1010.     return unless @character.is_a?(Game_Vehicle)
  1011.     altitude = @character.altitude
  1012.     altitude -= 10 if $game_player.keep_vehicles.include?(@character.type)
  1013.     if altitude > 0
  1014.       start_shadow unless @shadow_sprite
  1015.       @shadow_sprite.x = @character.screen_x
  1016.       @shadow_sprite.y = @character.screen_y + altitude
  1017.       @shadow_sprite.opacity = altitude * 8
  1018.     else
  1019.       dispose_shadow
  1020.     end
  1021.   end
  1022. end

  1023. #==============================================================================
  1024. # ■ Sprite_Vehicle
  1025. #==============================================================================
  1026. class Sprite_Vehicle < Sprite_Character
  1027.   #--------------------------------------------------------------------------
  1028.   # ● 転送元ビットマップの更新
  1029.   #--------------------------------------------------------------------------
  1030.   def update_bitmap
  1031.     if graphic_changed?
  1032.       @tile_id = 0
  1033.       @character_name = @character.character_name
  1034.       @character_index = @character.vehicle_index
  1035.       set_character_bitmap
  1036.     end
  1037.   end
  1038.   #--------------------------------------------------------------------------
  1039.   # ● グラフィックの変更判定
  1040.   #--------------------------------------------------------------------------
  1041.   def graphic_changed?
  1042.     @character_name != @character.character_name ||
  1043.     @character_index != @character.vehicle_index
  1044.   end
  1045.   #--------------------------------------------------------------------------
  1046.   # ● 転送元矩形の更新
  1047.   #--------------------------------------------------------------------------
  1048.   def update_src_rect
  1049.     if @tile_id == 0
  1050.       index = @character_index
  1051.       pattern = @character.pattern < 3 ? @character.pattern : 1
  1052.       direction = @character.drive_direction
  1053.       direction = 8 if direction == 5
  1054.       direction += 5 <=> direction if direction.odd?
  1055.       sx = (index % 4 * 3 + pattern) * @cw
  1056.       sy = (index / 4 * 4 + (direction - 2) / 2) * @ch
  1057.       self.src_rect.set(sx, sy, @cw, @ch)
  1058.     end
  1059.   end
  1060.   #--------------------------------------------------------------------------
  1061.   # ● 位置の更新
  1062.   #--------------------------------------------------------------------------
  1063.   def update_position
  1064.     self.x = @character.vscreen_x
  1065.     self.y = @character.vscreen_y
  1066.     self.z = @character.vscreen_z
  1067.     self.zoom_x = self.zoom_y = @character.vscreen_zoom
  1068.   end
  1069.   #--------------------------------------------------------------------------
  1070.   # ● 新しいエフェクトの設定
  1071.   #--------------------------------------------------------------------------
  1072.   def setup_new_effect
  1073.     if !animation? && $game_player.animation_id > 0
  1074.       animation = $data_animations[$game_player.animation_id]
  1075.       start_animation(animation)
  1076.     end
  1077.     if !@balloon_sprite && $game_player.balloon_id > 0
  1078.       @balloon_id = $game_player.balloon_id
  1079.       start_balloon
  1080.     end
  1081.   end
  1082.   #--------------------------------------------------------------------------
  1083.   # ● アニメーションの終了
  1084.   #--------------------------------------------------------------------------
  1085.   def end_animation
  1086.     super
  1087.     $game_player.animation_id = 0
  1088.   end
  1089.   #--------------------------------------------------------------------------
  1090.   # ● フキダシアイコンの終了
  1091.   #--------------------------------------------------------------------------
  1092.   def end_balloon
  1093.     dispose_balloon
  1094.     $game_player.balloon_id = 0
  1095.   end
  1096.   #--------------------------------------------------------------------------
  1097.   # ● 影表示の開始
  1098.   #--------------------------------------------------------------------------
  1099.   def start_shadow
  1100.     super
  1101.     @shadow_sprite.oy -= 6
  1102.   end
  1103.   #--------------------------------------------------------------------------
  1104.   # ● 影の更新
  1105.   #--------------------------------------------------------------------------
  1106.   def update_shadow
  1107.     if @character.flight?
  1108.       start_shadow unless @shadow_sprite
  1109.       @shadow_sprite.x = Graphics.width / 2
  1110.       snap_y = Graphics.height / 2 + @character.snap_distance.to_i
  1111.       @shadow_sprite.y = @character.origin_y(snap_y)
  1112.       @shadow_sprite.z = @character.screen_z - 1
  1113.       @shadow_sprite.opacity = 255 * (90 - @character.altitude / 2) / 90
  1114.       @shadow_sprite.zoom_x = (200 - @character.altitude) / 90.0
  1115.       @shadow_sprite.zoom_y = @shadow_sprite.zoom_x
  1116.     end
  1117.   end
  1118. end

  1119. #==============================================================================
  1120. # ■ Spriteset_Map
  1121. #==============================================================================
  1122. class Spriteset_Map
  1123.   #--------------------------------------------------------------------------
  1124.   # ☆ 飛行船の影スプライトの削除
  1125.   #--------------------------------------------------------------------------
  1126.   def create_shadow;  end
  1127.   def dispose_shadow; end
  1128.   def update_shadow;  end
  1129. end

  1130. #==============================================================================
  1131. # ■ Spriteset_Vehicle
  1132. #==============================================================================
  1133. class Spriteset_Vehicle < Spriteset_Map
  1134.   #--------------------------------------------------------------------------
  1135.   # ● 定数
  1136.   #--------------------------------------------------------------------------
  1137.   RATE = 32
  1138.   CUT  = 2
  1139.   #--------------------------------------------------------------------------
  1140.   # ● オブジェクト初期化
  1141.   #--------------------------------------------------------------------------
  1142.   def initialize(viewport)
  1143.     @veh_viewport0 = Viewport.new
  1144.     @veh_viewport4 = viewport
  1145.     @vehicle = $game_player.vehicle
  1146.     create_snap
  1147.     create_scenery
  1148.     create_ground
  1149.     create_vehicle
  1150.     super()
  1151.   end
  1152.   #--------------------------------------------------------------------------
  1153.   # ● ビューポートの作成
  1154.   #--------------------------------------------------------------------------
  1155.   def create_viewports
  1156.     super
  1157.     @viewport1.z = 9990
  1158.   end
  1159.   #--------------------------------------------------------------------------
  1160.   # ● 背景の作成
  1161.   #--------------------------------------------------------------------------
  1162.   def create_scenery
  1163.     @scenery = Plane.new#(@veh_viewport0)
  1164.     @scenery.z = -100
  1165.   end
  1166.   #--------------------------------------------------------------------------
  1167.   # ● 地面の作成
  1168.   #--------------------------------------------------------------------------
  1169.   def create_ground
  1170.     n = 256 + (Graphics.height - 416) / 2
  1171.     m = 0
  1172.     y1 = @vehicle.adjust_y(0)
  1173.     @ground_sprites = Array.new(n) do |i|
  1174.       y2 = @vehicle.adjust_y(i + 1)
  1175.       next nil if (y2 - y1) <= [i / RATE, CUT].min
  1176.       y1 = y2
  1177.       m += 1
  1178.       sprite = Sprite.new(@veh_viewport0)
  1179.       sprite.x = Graphics.width / 2
  1180.       sprite.ox = Graphics.width / 2
  1181.       sprite.opacity = m * 32
  1182.       sprite
  1183.     end
  1184.   end
  1185.   #--------------------------------------------------------------------------
  1186.   # ● 乗り物スプライトの作成
  1187.   #--------------------------------------------------------------------------
  1188.   def create_vehicle
  1189.     @sprite_vehicle = Sprite_Vehicle.new(@veh_viewport0, @vehicle)
  1190.   end
  1191.   #--------------------------------------------------------------------------
  1192.   # ● キャラクタースプライトの作成
  1193.   #--------------------------------------------------------------------------
  1194.   def create_characters
  1195.     super
  1196.     @character_sprites.reject! do |sprite|
  1197.       case sprite.character
  1198.       when $game_player, Game_Follower, @vehicle
  1199.         sprite.dispose
  1200.       end
  1201.       sprite.disposed?
  1202.     end
  1203.   end
  1204.   #--------------------------------------------------------------------------
  1205.   # ● 撮影用スプライトの作成
  1206.   #--------------------------------------------------------------------------
  1207.   def create_snap
  1208.     @snap_sprite = Sprite.new
  1209.     @snap_sprite.x = Graphics.width / 2
  1210.     @snap_sprite.y = Graphics.height / 2 + @vehicle.snap_distance
  1211.     @snap_sprite.z = 9999
  1212.   end
  1213.   #--------------------------------------------------------------------------
  1214.   # ● 解放
  1215.   #--------------------------------------------------------------------------
  1216.   def dispose
  1217.     super
  1218.     dispose_snap
  1219.     dispose_scenery
  1220.     dispose_ground
  1221.     dispose_vehicle
  1222.   end
  1223.   #--------------------------------------------------------------------------
  1224.   # ● ビューポートの解放
  1225.   #--------------------------------------------------------------------------
  1226.   def dispose_viewports
  1227.     @veh_viewport0.dispose
  1228.     super
  1229.   end
  1230.   #--------------------------------------------------------------------------
  1231.   # ● 撮影用スプライトの解放
  1232.   #--------------------------------------------------------------------------
  1233.   def dispose_snap
  1234.     @snap_sprite.dispose
  1235.   end
  1236.   #--------------------------------------------------------------------------
  1237.   # ● 背景の解放
  1238.   #--------------------------------------------------------------------------
  1239.   def dispose_scenery
  1240.     @scenery.bitmap.dispose if @scenery.bitmap && !@scenery.bitmap.disposed?
  1241.     @scenery.dispose
  1242.   end
  1243.   #--------------------------------------------------------------------------
  1244.   # ● 地面の解放
  1245.   #--------------------------------------------------------------------------
  1246.   def dispose_ground
  1247.     @ground_sprites.each {|sprite| sprite.dispose if sprite }
  1248.   end
  1249.   #--------------------------------------------------------------------------
  1250.   # ● 乗り物スプライトの解放
  1251.   #--------------------------------------------------------------------------
  1252.   def dispose_vehicle
  1253.     @sprite_vehicle.dispose
  1254.   end
  1255.   #--------------------------------------------------------------------------
  1256.   # ● フレーム更新
  1257.   #--------------------------------------------------------------------------
  1258.   def update
  1259.     super
  1260.     return unless WdTk::Veh3D.need_update?
  1261.     last_brightness = Graphics.brightness
  1262.     Graphics.brightness = 255
  1263.     on_snap
  1264.     update_snap
  1265.     on_ground
  1266.     update_scenery
  1267.     update_ground
  1268.     update_vehicle
  1269.     on_base
  1270.     Graphics.brightness = last_brightness
  1271.   end
  1272.   #--------------------------------------------------------------------------
  1273.   # ● タイルマップの更新
  1274.   #--------------------------------------------------------------------------
  1275.   def update_tilemap
  1276.     $game_map.set_pos(@vehicle.display_x, @vehicle.display_y)
  1277.     super
  1278.   end
  1279.   #--------------------------------------------------------------------------
  1280.   # ● 天候の更新
  1281.   #--------------------------------------------------------------------------
  1282.   def update_weather
  1283.     super
  1284.     @weather.ox = -@vehicle.angle
  1285.     @weather.oy = 0
  1286.   end
  1287.   #--------------------------------------------------------------------------
  1288.   # ● スナップの撮影
  1289.   #--------------------------------------------------------------------------
  1290.   def on_snap
  1291.     @viewport1.visible = true
  1292.     @veh_viewport0.visible = @viewport2.visible =
  1293.     @viewport3.visible = @veh_viewport4.visible = false
  1294.     @scenery.visible = false
  1295.     @snap_sprite.bitmap.dispose if @snap_sprite.bitmap
  1296.     @snap_sprite.bitmap = Graphics.snap_to_bitmap
  1297.   end
  1298.   #--------------------------------------------------------------------------
  1299.   # ● スナップの更新
  1300.   #--------------------------------------------------------------------------
  1301.   def update_snap
  1302.     gh = Graphics.height
  1303.     gx = (Graphics.width - gh) / 2
  1304.     @snap_sprite.ox = @vehicle.snap_ox - gx
  1305.     @snap_sprite.oy = @vehicle.snap_oy
  1306.     @snap_sprite.src_rect.set(gx, 0, gh, gh)
  1307.     @snap_sprite.angle = -@vehicle.angle
  1308.   end
  1309.   #--------------------------------------------------------------------------
  1310.   # ● 背景の更新
  1311.   #--------------------------------------------------------------------------
  1312.   def update_scenery
  1313.     if WdTk::Veh3D::Scenery
  1314.       @scenery.bitmap = Cache.parallax(WdTk::Veh3D::Scenery)
  1315.     else
  1316.       @scenery.bitmap = @parallax.bitmap
  1317.     end
  1318.     angle = -@vehicle.angle * WdTk::Veh3D::Repeat % 360
  1319.     @scenery.ox = @scenery.bitmap.width * angle / 360
  1320.   end
  1321.   #--------------------------------------------------------------------------
  1322.   # ● 地面の撮影
  1323.   #--------------------------------------------------------------------------
  1324.   def on_ground
  1325.     @viewport1.visible = false
  1326.     @veh_viewport0.visible = @viewport2.visible =
  1327.     @viewport3.visible = @veh_viewport4.visible = false
  1328.     @snap_sprite.visible = true
  1329.     @scenery.visible = true
  1330.     @scenery.oy = 160 - 64
  1331.     @bitmap.dispose if @bitmap
  1332.     @bitmap = Graphics.snap_to_bitmap
  1333.   end
  1334.   #--------------------------------------------------------------------------
  1335.   # ● 地面の更新
  1336.   #--------------------------------------------------------------------------
  1337.   def update_ground
  1338.     next_y = @vehicle.adjust_y(0)
  1339.     last_oy = @vehicle.adjust_oy(0)
  1340.     @ground_sprites.each_with_index do |sprite, i|
  1341.       next unless sprite
  1342.       sprite.bitmap = @bitmap
  1343.       next_oy = @vehicle.adjust_oy(i + 1)
  1344.       height = (next_oy > last_oy ? next_oy - last_oy : 1)
  1345.       sprite.src_rect.set(0, last_oy, @bitmap.width, height)
  1346.       last_oy = next_oy
  1347.       sprite.y = next_y
  1348.       sprite.zoom_x = @vehicle.adjust_zoom(sprite.y - 160)
  1349.       next_y = @vehicle.adjust_y(i + 1)
  1350.       sprite.zoom_y = (next_y - sprite.y).to_f / height
  1351.     end
  1352.   end
  1353.   #--------------------------------------------------------------------------
  1354.   # ● 乗り物の更新
  1355.   #--------------------------------------------------------------------------
  1356.   def update_vehicle
  1357.     @sprite_vehicle.update
  1358.   end
  1359.   #--------------------------------------------------------------------------
  1360.   # ● 基本状態に戻す
  1361.   #--------------------------------------------------------------------------
  1362.   def on_base
  1363.     @snap_sprite.visible = false
  1364.     @veh_viewport0.visible = @viewport2.visible =
  1365.     @viewport3.visible = @veh_viewport4.visible = true
  1366.     @scenery.oy = 0
  1367.   end
  1368. end

  1369. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1370. #
  1371. # ウィンドウ
  1372. #
  1373. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  1374. #==============================================================================
  1375. # ■ Window_Message
  1376. #==============================================================================
  1377. class Window_Message
  1378.   #--------------------------------------------------------------------------
  1379.   # ● ビューポートの設定
  1380.   #--------------------------------------------------------------------------
  1381.   def viewport=(viewport)
  1382.     super
  1383.     @back_sprite.viewport = viewport
  1384.     @gold_window.viewport = viewport
  1385.     @choice_window.viewport = viewport
  1386.     @number_window.viewport = viewport
  1387.     @item_window.viewport = viewport
  1388.   end
  1389. end

  1390. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  1391. #
  1392. # シーン
  1393. #
  1394. #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  1395. #==============================================================================
  1396. # ■ Scene_Map
  1397. #==============================================================================
  1398. class Scene_Map < Scene_Base
  1399.   #--------------------------------------------------------------------------
  1400.   # ◯ 終了前処理
  1401.   #--------------------------------------------------------------------------
  1402.   alias _wdtk_veh3d_pre_terminate pre_terminate
  1403.   def pre_terminate
  1404.     _wdtk_veh3d_pre_terminate
  1405.     fadeout(30) if SceneManager.scene_is?(Scene_Vehicle)
  1406.   end
  1407. end

  1408. #==============================================================================
  1409. # ■ Scene_Vehicle
  1410. #------------------------------------------------------------------------------
  1411. #  乗り物画面の処理を行うクラスです。
  1412. #==============================================================================
  1413. class Scene_Vehicle < Scene_Map
  1414.   #--------------------------------------------------------------------------
  1415.   # ● 開始処理
  1416.   #--------------------------------------------------------------------------
  1417.   def start
  1418.     WdTk::Veh3D.reset
  1419.     $game_player.on_vehicle_start
  1420.     super
  1421.   end
  1422.   #--------------------------------------------------------------------------
  1423.   # ● 終了前処理
  1424.   #--------------------------------------------------------------------------
  1425.   def pre_terminate
  1426.     super
  1427.     pre_map_scene if SceneManager.scene_is?(Scene_Map)
  1428.   end
  1429.   #--------------------------------------------------------------------------
  1430.   # ● 終了処理
  1431.   #--------------------------------------------------------------------------
  1432.   def terminate
  1433.     $game_player.on_vehicle_end if SceneManager.scene_is?(Scene_Map)
  1434.     super
  1435.     GC.start
  1436.   end
  1437.   #--------------------------------------------------------------------------
  1438.   # ● ビューポートの作成
  1439.   #--------------------------------------------------------------------------
  1440.   def create_main_viewport
  1441.     super
  1442.     @window_viewport = Viewport.new
  1443.     @window_viewport.z = 200
  1444.   end
  1445.   #--------------------------------------------------------------------------
  1446.   # ● ビューポートの解放
  1447.   #--------------------------------------------------------------------------
  1448.   def dispose_main_viewport
  1449.     super
  1450.     @window_viewport.dispose
  1451.   end
  1452.   #--------------------------------------------------------------------------
  1453.   # ● フレーム更新(基本)
  1454.   #--------------------------------------------------------------------------
  1455.   def update_basic
  1456.     if WdTk::Veh3D.need_update?
  1457.       Graphics.frame_rate = WdTk::Veh3D::FrameRate
  1458.       Graphics.update
  1459.       Graphics.frame_rate = 60
  1460.     else
  1461.       Graphics.frame_count += 1
  1462.     end
  1463.     Input.update
  1464.     WdTk::Veh3D.update
  1465.     update_all_windows
  1466.   end
  1467.   #--------------------------------------------------------------------------
  1468.   # ● 汎用フェード処理
  1469.   #--------------------------------------------------------------------------
  1470.   def fade_loop(duration)
  1471.     WdTk::Veh3D.reset
  1472.     super
  1473.     Graphics.frame_reset
  1474.   end
  1475.   #--------------------------------------------------------------------------
  1476.   # ● スプライトセットの作成
  1477.   #--------------------------------------------------------------------------
  1478.   def create_spriteset
  1479.     @spriteset = Spriteset_Vehicle.new(@window_viewport)
  1480.   end
  1481.   #--------------------------------------------------------------------------
  1482.   # ● メッセージウィンドウの作成
  1483.   #--------------------------------------------------------------------------
  1484.   def create_message_window
  1485.     super
  1486.     @message_window.viewport = @window_viewport
  1487.   end
  1488.   #--------------------------------------------------------------------------
  1489.   # ● スクロール文章ウィンドウの作成
  1490.   #--------------------------------------------------------------------------
  1491.   def create_scroll_text_window
  1492.     super
  1493.     @scroll_text_window.viewport = @window_viewport
  1494.   end
  1495.   #--------------------------------------------------------------------------
  1496.   # ● マップ名ウィンドウの作成
  1497.   #--------------------------------------------------------------------------
  1498.   def create_location_window
  1499.     super
  1500.     @map_name_window.viewport = @window_viewport
  1501.   end
  1502.   #--------------------------------------------------------------------------
  1503.   # ● キャンセルボタンによるメニュー呼び出し判定
  1504.   #--------------------------------------------------------------------------
  1505.   def update_call_menu
  1506.   end
  1507.   #--------------------------------------------------------------------------
  1508.   # ● マップ画面遷移の前処理
  1509.   #--------------------------------------------------------------------------
  1510.   def pre_map_scene
  1511.     fadeout(30)
  1512.     Graphics.brightness = 0
  1513.   end
  1514. end

  1515. #==============================================================================
  1516. # ■ Scene_Base
  1517. #==============================================================================
  1518. class Scene_Base
  1519.   #--------------------------------------------------------------------------
  1520.   # ○ メイン処理
  1521.   #--------------------------------------------------------------------------
  1522.   alias _wdtk_veh3d_main main
  1523.   def main
  1524.     _wdtk_veh3d_main
  1525.     if SceneManager.scene_is?(Scene_Map) and $game_player.in_vehicle
  1526.       SceneManager.goto(Scene_Vehicle)
  1527.     end
  1528.   end
  1529. end
复制代码
报错:
  当使用3d脚本后,点击鼠标,“SiNova_Input v1.03”的这一行就报错: @dkey_states[@dkey_map[btn]] == 1     
【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部