Project1

标题: 关于交通工具的开关问题 [打印本页]

作者: salamantala    时间: 2017-3-15 00:10
标题: 关于交通工具的开关问题
1.如何在乘船时开关1打开,下船时开关1关闭?
2.限制船只随意停靠,用搜索找到了VA版本的,但是我一个脚本盲,依样画葫芦折腾了许久还是弄不成,所以只能寻求高人指点了!
作者: 图灵    时间: 2017-3-15 09:59
本帖最后由 图灵 于 2017-3-15 10:14 编辑

船只任意停靠是什么概念
开关的话
找到Game_Vehicle中第105行下面改成这样
RUBY 代码复制
  1. def get_on
  2.     $game_switches[1] = true
  3.     @driving = true
  4.     @walk_anime = true
  5.     @step_anime = true
  6.     if @type == 2               # 飞船的场合
  7.       @priority_type = 2        # 改变优先度为「一般角色之上」
  8.     end
  9.     @bgm.play                   # 开始 BGM
  10.   end

第117行改成这样
RUBY 代码复制
  1. def get_off
  2.     $game_switches[1] = false
  3.     @driving = false
  4.     @walk_anime = false
  5.     @step_anime = false
  6.     @direction = 4
  7.   end

作者: salamantala    时间: 2017-3-15 21:10
图灵 发表于 2017-3-15 09:59
船只任意停靠是什么概念
开关的话
找到Game_Vehicle中第105行下面改成这样

非常感谢,但是有个问题,如何刷新一下地图,开关是随着上下船开启和关闭了,但是NPC并没有在地图上出现,后来我发现按一下ESC调出菜单再关闭后,NPC才出现,这个问题怎么解决呢?任意停靠就是当坐上船出海的时候,只要有陆地就能直接上岸。能不能限制这样的情况,让船只能到指定位置触发事件时才能上岸。
作者: 图灵    时间: 2017-3-16 09:55
本帖最后由 图灵 于 2017-3-16 12:03 编辑
salamantala 发表于 2017-3-15 21:10
非常感谢,但是有个问题,如何刷新一下地图,开关是随着上下船开启和关闭了,但是NPC并没有在地图上出现 ...


在那两段里面加上
  1. $game_map.need_refresh = true
复制代码


下面脚本插入main以上
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 码头系统
  3. #------------------------------------------------------------------------------
  4. #  By:图灵
  5. #   使用方法:将事件命名为码头即可。
  6. #   码头影响范围默认为2 在下方 WHARTDIS 更改
  7. #==============================================================================
  8. #==============================================================================
  9. # ■ Vector2
  10. #------------------------------------------------------------------------------
  11. #  处理二维向量的类。
  12. #==============================================================================
  13. class Vector2
  14.   #--------------------------------------------------------------------------
  15.   # ● 定义实例变量
  16.   #--------------------------------------------------------------------------
  17.   attr_accessor :x
  18.   attr_accessor :y
  19.   #--------------------------------------------------------------------------
  20.   # ● 初始化对像
  21.   #--------------------------------------------------------------------------
  22.   def initialize(x = 0, y = 0)
  23.     @x = x
  24.     @y = y
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 计算距离
  28.   #--------------------------------------------------------------------------
  29.   def self.dis(x,y)
  30.     return Math.hypot(x,y)
  31.   end
  32. end
  33. #==============================================================================
  34. # ■ Game_Map
  35. #------------------------------------------------------------------------------
  36. #  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
  37. #==============================================================================
  38.  
  39. class Game_Map
  40.   #--------------------------------------------------------------------------
  41.   # ● 定义实例变量
  42.   #--------------------------------------------------------------------------
  43.   attr_reader   :wharts
  44.   alias old_setup setup
  45.   def setup(map_id)
  46.     old_setup(map_id)
  47.     set_whart
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 设置码头
  51.   #--------------------------------------------------------------------------
  52.   def set_whart
  53.     @wharts = []
  54.     @map.events.each_value do |event|
  55.       if event.name == "码头"
  56.         port = Vector2.new(event.x,event.y)
  57.         @wharts.push(port)
  58.       end
  59.     end
  60.   end
  61. end
  62.  
  63. #==============================================================================
  64. # ■ Game_Player
  65. #------------------------------------------------------------------------------
  66. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  67. # 本类的实例请参考 $game_player。
  68. #==============================================================================
  69.  
  70. class Game_Player < Game_Character
  71.   #--------------------------------------------------------------------------
  72.   # ● 常量
  73.   # WHARTDIS = 码头影响范围
  74.   #--------------------------------------------------------------------------
  75.   WHARTDIS = 2
  76.   #--------------------------------------------------------------------------
  77.   # ● 上下交通工具
  78.   #--------------------------------------------------------------------------
  79.   def get_on_off_vehicle
  80.     return false unless movable?
  81.     can = false
  82.     $game_map.wharts.each do |i|
  83.       can = true if Vector2.dis(i.x-x,i.y-y)<WHARTDIS
  84.     end
  85.     if can
  86.       if in_vehicle?
  87.         return get_off_vehicle
  88.       else
  89.         return get_on_vehicle
  90.       end
  91.     end
  92.   end
  93. end

作者: salamantala    时间: 2017-3-16 12:51
图灵 发表于 2017-3-16 09:55
在那两段里面加上

激动得让我吼了起来“PERFECT!”
实在太感谢了,完美解决了我正面临的问题,瞎折腾一个月不如大师指点一句啊~
感谢感谢~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1