Project1

标题: 关于VX通行定义 [打印本页]

作者: kk9911    时间: 2016-3-9 00:28
标题: 关于VX通行定义
本帖最后由 kk9911 于 2016-3-9 00:35 编辑

RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 可以通行判定
  3.   #     x : X 坐标
  4.   #     y : Y 坐标
  5.   #     flag : 通行度标志(非交通工具时,一般为 0x01)
  6.   #--------------------------------------------------------------------------
  7.   def passable?(x, y, flag = 0x01)
  8.     for event in events_xy(x, y)            # 循环指定位置的事件数组
  9.       next if event.tile_id == 0            # 事件图片非图块的情况下
  10.       next if event.priority_type > 0       # 非「一般角色之下」
  11.       next if event.through                 # 允许穿透
  12.       pass = @passages[event.tile_id]       # 获取通行属性
  13.       next if pass & 0x10 == 0x10           # ☆: 不影响通行判定
  14.       return true if pass & flag == 0x00    # ○: 可以通行
  15.       return false if pass & flag == flag   # x: 不可通行
  16.     end
  17.     for i in [2, 1, 0]                      # 由上层而下
  18.       tile_id = @map.data[x, y, i]          # 获取图块 ID
  19.       return false if tile_id == nil        # 无法获取图块:不可通行
  20.       pass = @passages[tile_id]             # 获取通行属性
  21.       next if pass & 0x10 == 0x10           # ☆: 不影响通行判定
  22.       return true if pass & flag == 0x00    # o: 可以通行
  23.       return false if pass & flag == flag   # x: 不可通行
  24.     end
  25.     return false                            # 不可通行
  26.   end


以上的“if pass & 0x10 == 0x10””if pass & flag == 0x00“ ”if pass & flag == flag“是什么意思
“pass = @passages[event.tile_id]       # 获取通行属性”这个pass实际取到的是什么数值
作者: Vortur    时间: 2016-3-9 01:43
本帖最后由 Vortur 于 2016-8-12 07:12 编辑

脚本盲,尝试回答一下:
1. 在下默认楼主已知判定语句以及各符号的意思。0x10好像表示这是个16进制(还是2进制?)的数值,也就是下面说的id(序号)。 flag 是标志的含义,具体不明。if pass & flag == flag 即 “若pass为空”
2.event.tile_id指的是在rm编辑界面,地图土块元件板块中的“序号”;即第几个,从1开始计数。




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