查看: 2151|回复: 5

[已经解决] 关于交通工具的开关问题

[复制链接]
梦石
0
星屑
164
在线时间
135 小时
注册时间
2009-10-7
回帖
12
发表于 2017-3-15 00:10:24 | 显示全部楼层 |阅读模式

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

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

×
1.如何在乘船时开关1打开,下船时开关1关闭?
2.限制船只随意停靠,用搜索找到了VA版本的,但是我一个脚本盲,依样画葫芦折腾了许久还是弄不成,所以只能寻求高人指点了!
梦石
0
星屑
185
在线时间
49 小时
注册时间
2015-9-17
回帖
20
发表于 2017-3-15 09:59:54 | 显示全部楼层
本帖最后由 图灵 于 2017-3-15 10:14 编辑

船只任意停靠是什么概念
开关的话
找到Game_Vehicle中第105行下面改成这样
[pre lang="ruby" line="105"]def get_on
    $game_switches[1] = true
    @driving = true
    @walk_anime = true
    @step_anime = true
    if @type == 2               # 飞船的场合
      @priority_type = 2        # 改变优先度为「一般角色之上」
    end
    @bgm.play                   # 开始 BGM
  end[/pre]
第117行改成这样
[pre lang="ruby" line="117"]def get_off
    $game_switches[1] = false
    @driving = false
    @walk_anime = false
    @step_anime = false
    @direction = 4
  end[/pre]

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 认可答案

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
164
在线时间
135 小时
注册时间
2009-10-7
回帖
12
 楼主| 发表于 2017-3-15 21:10:06 | 显示全部楼层
图灵 发表于 2017-3-15 09:59
船只任意停靠是什么概念
开关的话
找到Game_Vehicle中第105行下面改成这样

非常感谢,但是有个问题,如何刷新一下地图,开关是随着上下船开启和关闭了,但是NPC并没有在地图上出现,后来我发现按一下ESC调出菜单再关闭后,NPC才出现,这个问题怎么解决呢?任意停靠就是当坐上船出海的时候,只要有陆地就能直接上岸。能不能限制这样的情况,让船只能到指定位置触发事件时才能上岸。
回复

使用道具 举报

梦石
0
星屑
185
在线时间
49 小时
注册时间
2015-9-17
回帖
20
发表于 2017-3-16 09:55:55 | 显示全部楼层
本帖最后由 图灵 于 2017-3-16 12:03 编辑
salamantala 发表于 2017-3-15 21:10
非常感谢,但是有个问题,如何刷新一下地图,开关是随着上下船开启和关闭了,但是NPC并没有在地图上出现 ...


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


下面脚本插入main以上
[pre lang="ruby"]#==============================================================================
# ■ 码头系统
#------------------------------------------------------------------------------
#  By:图灵
#   使用方法:将事件命名为码头即可。
#   码头影响范围默认为2 在下方 WHARTDIS 更改
#==============================================================================
#==============================================================================
# ■ Vector2
#------------------------------------------------------------------------------
#  处理二维向量的类。
#==============================================================================
class Vector2
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :x
  attr_accessor :y
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize(x = 0, y = 0)
    @x = x
    @y = y
  end
  #--------------------------------------------------------------------------
  # ● 计算距离
  #--------------------------------------------------------------------------
  def self.dis(x,y)
    return Math.hypot(x,y)
  end
end
#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
#==============================================================================

class Game_Map
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :wharts
  alias old_setup setup
  def setup(map_id)
    old_setup(map_id)
    set_whart
  end
  #--------------------------------------------------------------------------
  # ● 设置码头
  #--------------------------------------------------------------------------
  def set_whart
    @wharts = []
    @map.events.each_value do |event|
      if event.name == "码头"
        port = Vector2.new(event.x,event.y)
        @wharts.push(port)
      end
    end
  end
end

#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
#  处理主角的类。事件启动的判定、以及地图的滚动等功能。
# 本类的实例请参考 $game_player。
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ● 常量
  # WHARTDIS = 码头影响范围
  #--------------------------------------------------------------------------
  WHARTDIS = 2
  #--------------------------------------------------------------------------
  # ● 上下交通工具
  #--------------------------------------------------------------------------
  def get_on_off_vehicle
    return false unless movable?
    can = false
    $game_map.wharts.each do |i|
      can = true if Vector2.dis(i.x-x,i.y-y)<WHARTDIS
    end
    if can
      if in_vehicle?
        return get_off_vehicle
      else
        return get_on_vehicle
      end
    end
  end
end

[/pre]

评分

参与人数 1星屑 +50 收起 理由
怪蜀黍 + 50 认可答案

查看全部评分

回复 1 0

使用道具 举报

梦石
0
星屑
164
在线时间
135 小时
注册时间
2009-10-7
回帖
12
 楼主| 发表于 2017-3-16 12:51:07 | 显示全部楼层
图灵 发表于 2017-3-16 09:55
在那两段里面加上

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

点评

不用谢 现在用VX和XP的人越来越少了 所以能帮一个是一个  发表于 2017-3-16 12:58
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部