Project1

标题: 脚本发生RangeError怎么解决 [打印本页]

作者: 赛露休斯    时间: 2009-7-17 03:33
标题: 脚本发生RangeError怎么解决
脚本发生RangeError
float -1.#IND out of range of integer
F1上说“在进行超出范围的数值变换(从 Bignum 变为 Fixnum)等操作时就会引发该异常。”
不知是怎么一回事?
怎么解决?
作者: 蓝の星辰    时间: 2009-7-17 09:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 玄月    时间: 2009-7-17 09:40
发现和尚 - - 是dbshy么
作者: 霜冻之狼    时间: 2009-7-17 10:11
2# 蓝の星辰
大师你又来了....
作者: IamI    时间: 2009-7-17 10:12
伸手,脚本拿来- -
作者: 赛露休斯    时间: 2009-7-17 18:20
#出错点是Game_Map里的“tile_id = data[x, y, i]”这一句,可能是由于一些外挂脚本导致,错误的发生好像还带有一些随机性,有没有办法避免掉这个错误,使之不报错

  1. def bush?(x, y)
  2.     if @map_id != 0
  3.       for i in [2, 1, 0]
  4.         tile_id = data[x, y, i]
  5.         if tile_id == nil
  6.           return false
  7.         elsif @passages[tile_id] & 0x40 == 0x40
  8.           return true
  9.         end
  10.       end
  11.     end
  12.     return false
  13.   end
复制代码

作者: 猫哥哥    时间: 2009-7-17 18:57
本帖最后由 猫哥哥 于 2009-7-17 19:09 编辑

这一段脚本看名字是检测图块繁茂(bush值)的,比默认脚本多出来的部分似乎是在迭代每个图块数据里的值,检查是否有空值产生。然后根据这里诡异地多出来的0和2设置通行(原脚本是@map.data[x,y,1])。

ps.第三次编辑帖子

实在是……很明显,我想问楼主,data这个变量是哪里钻出来的?
作者: 赛露休斯    时间: 2009-7-17 19:24
最好还是让这句“tile_id = data[x, y, i]”无错时执行,有错时忽略
另外,data这个变量也是默认Game_Map里的
获取地图数据
  1.   
  2. def data
  3.     return @map.data
  4.   end
复制代码

作者: 猫哥哥    时间: 2009-7-17 19:45
sorry,我看成VX的脚本了。

那什么,楼主你贴出来的这一段脚本和默认脚本一模一样 = =
作者: 蓝の星辰    时间: 2009-7-17 20:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: ONEWateR    时间: 2009-7-17 21:13
无错时执行,有错时忽略?

tile_id = data[x, y, i] if @map.data != nil and x != nil and y != nil

这样够保险 = =~

ps:因为这只是局部,难以顾全或者说无法顾全大局。
作者: 赛露休斯    时间: 2009-7-18 18:52
这个问题已经想到解决方法了
版主帮忙自己判断认可下吧,虽然上面一个方法也没用到
(那个认可专贴我为什么找不到了?)
作者: ONEWateR    时间: 2009-7-18 20:21
认可贴……果然……我还是觉得不置顶较好……很容易被54




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