Project1

标题: [活动] 各种错,各种误,大家一起来找bug? [打印本页]

作者: 禾西    时间: 2010-10-27 05:09
标题: [活动] 各种错,各种误,大家一起来找bug?
本帖最后由 禾西 于 2010-10-29 05:29 编辑

呐。来个平民活动吧~这个活动的目的是收集各种在制作游戏中遇见的脚本错误。无论是常见的RGSS错误,或者是罕见的神秘bug。我们不在乎是VX还是XP,只要你提出来,就有收入。如果能解决的话,更有额外奖金哦!
【活动细则】
1.你需要提出一种会导致游戏终止的脚本错误情况
  -- 这个错误需要包含错误的提示名字 (+15)
  -- 这个错误需要包含错误的提示信息 (+15)
  -- 包含出错的语句 (+15)
  -- 错误的神秘程度 (+?)
2.你不一定需要分析一种错误的出现情况和解决方案。
  -- 用一句话描述错误提示的意思 (+20)
  -- 指出出错的原因 (+?)
  -- 提出解决的思路 (+?)
1和2是分开计分的。所以你如果沒有能力解決的话,只提出错误也可以=v=
3.已被指出的错误不能重复提出,但是你可以提供其它的分析方案。
另外值得注意的是,同名的错误可能指向不同的出错原因。而不同原因的出错,是可以重复提出的哦~
4.你不可以无缘故地二连帖
5.你不能使用外连的图片。
6.一切解释权归版主所有。
7.版主有权不解释。
以上
占樓黨自重……
另外提醒想混分的大家:
在搜索中查找「错误」会有特别收获哦

作者: 禾西    时间: 2010-10-27 05:11
本帖最后由 禾西 于 2011-3-3 01:41 编辑

汇总
沒有任何提示行数的SyntaxError
http://rpg.blue/forum.php?mod=re ... 6&fromuid=49886
ZeroDivisionError
http://rpg.blue/forum.php?mod=re ... 7&fromuid=49886
for nil:NilClass 的NoMethodError
http://rpg.blue/forum.php?mod=re ... 7&fromuid=49886
由 alias 引起的SystemStackError
http://rpg.blue/forum.php?mod=re ... 7&fromuid=49886
http://rpg.blue/forum.php?mod=re ... 0&fromuid=49886
convert Fixnum into String的TypeError
http://rpg.blue/forum.php?mod=re ... 9&fromuid=49886
参数缺失或者过量引起的 ArgumentError
http://rpg.blue/forum.php?mod=re ... 5&fromuid=49886
由 return 和 break 引起的 LocalJumpError
http://rpg.blue/forum.php?mod=re ... 8&fromuid=49886
在'Game_Temp'的0行出现的各种错误
http://rpg.blue/forum.php?mod=re ... 0&fromuid=49886
由虚数引起的FloatDomainError
http://rpg.blue/forum.php?mod=re ... 5&fromuid=49886
由语法匹配引起的SyntaxError
http://rpg.blue/forum.php?mod=re ... 0&fromuid=49886
由长宽度参数错误引起的failed to create bitmap
http://rpg.blue/thread-168954-1-1.html
作者: 禾西    时间: 2010-10-27 05:11
本帖最后由 禾西 于 2010-10-27 05:48 编辑

名字:SyntaxError <- 这是5号字体
提示信息:执行脚本发生SyntaxError,
提示语句:无
提示信息的意思:执行脚本时调用了违反Ruby语法的语句。
出错原因:这可以当作著名的神秘bug之一,因为他没有指向任何的出错语句,因此也是最糟糕的错误之一。
他的出现可能是由 eval 产生
而最可能的原因是在事件的脚本指令当中产生。这种错误,脚本解释器是捕捉不了的。

解决方案:
你可以在 Interpreter 7 的 第272行, command_355 方法的
    result = eval(script)

前加入
    p @map_id, @event_id

查看出错前最后一个调用的事件id和地图id,然后排查出错的具体位置。

如果找不到,那么请审问各种eval……= =
作者: ika-musume    时间: 2010-10-27 05:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 九夜神尊    时间: 2010-10-27 08:59
占楼占楼
作者: 嵐。    时间: 2010-10-27 14:09
本帖最后由 禾西 于 2010-10-28 16:36 编辑

来骗分了,
名字:NoMethodError
错误信息: undefined method ‘item_no’ for nil:NilClass
出错的语句:
  1. if $game_pary.item_no(7) > 3
复制代码

作者: ika-musume    时间: 2010-10-27 14:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 火ZHI意志    时间: 2010-10-27 19:13
标题: 我是来骗分的……
本帖最后由 火ZHI意志 于 2010-10-27 19:39 编辑

错误名称:TypeError(变量的类型错误)
错误信息:cannot convert Fixnum into String
出错语句:覆盖Window_Gold后打开菜单即可
  1. #默认脚本#==============================================================================
  2. # ■ Window_Gold
  3. #------------------------------------------------------------------------------
  4. #  显示金钱的窗口。
  5. #==============================================================================
  6. class Window_Gold < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化窗口
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 160, 64)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     refresh
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 刷新
  17.   #--------------------------------------------------------------------------
  18.   def refresh
  19.     self.contents.clear
  20.     cx = contents.text_size($data_system.words.gold).width
  21.     self.contents.font.color = normal_color
  22.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_variables[1], 2)#换成了显示1号变量
  23.     self.contents.font.color = system_color
  24.     self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
  25.   end
  26. end
复制代码
神秘程度: 脚本只使用事件脚本语句的半菜鸟

错误提示的意思: 变量的类型不是预期所需的

出错的原因: 变量$game_variables[1]不能兑换整数包括固定长整数到串(大概就是这个意思)

解决的思路: 在“$game_variables[1]”后加上“.to_s” 也就是换成
  1. $game_variables[1].to_s
复制代码

作者: 新坦克君    时间: 2010-10-27 19:20
本帖最后由 新坦克君 于 2010-10-27 19:38 编辑

名字:ArgumentError
提示信息:执行脚本发生ArgumentError
提示语句:忘了= =
提示信息的意思:参数个数不对或者参数值错误。
出错原因:参数个数不对或者参数值错误引发
脚本:
class Test
  def say(x,y)
    p x + y
  end
end

调用:
a = Test.new
a.say(1,1,1)

解决方法:
仔细看一看方法再调用= =



这样或许就能骗来分了
作者: ika-musume    时间: 2010-10-27 21:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: 禾西    时间: 2010-10-28 00:44
本帖最后由 禾西 于 2010-10-28 00:46 编辑

错误名字:各種錯
错误信息: 脚本'Game_Temp'的0行出现了(各种)Error
出错的语句: 当然无
提示的意思: 你出现幽灵属性的bug了

出错原因: 已知的一种错误原因是由 load 引起的。所有在外调脚本(load'XXX.rb')中发生的错误,都会反应为Game_Temp的第0行错误。而在外调脚本出现的SyntaxError则会反应为卡死。还有一种情况是底层库出现错误。他最有可能出现的位置是 Sprite 。

解决方案:用注释的方法排除出错的 load 脚本,然后在外调脚本的内部排查出错语句。如果遇见因为动画播放而引起的 0 行错误,你最好从帮助中找到 RPG::Sprite 原文来进行检测。

作者: 火ZHI意志    时间: 2010-10-28 18:05
本帖最后由 火ZHI意志 于 2010-10-28 21:16 编辑

错误名称:FloatDomainError

错误信息:NaN

出错语句:输入事件脚本框
  1. $game_variables[1] = ((1.abs - Math.sqrt(-1))/1).abs
  2. #一号变量=1的绝对值-1的平方根,然后用得到的值再除以1,得到的结果变成它的绝对值
复制代码
神秘程度: 很少出现

错误提示的意思: “若想将正负无穷或 NaN(Not a Number)变为 Bignum,或与 NaN 进行比较时就会引发该异常。

出错的原因: 同上

解决的思路: 把-1改成零或正数

起码有个参与分吧
作者: 禾西    时间: 2010-10-29 05:11
本帖最后由 禾西 于 2010-10-29 15:24 编辑

再来个很好玩的bug~
错误名称:SyntaxError
错误信息:脚本的XX行发生了SyntaxError
出错脚本:
  1. class D
  2.   def g
  3.     return 0
  4.   end
  5. end
  6. d = D.new
  7. p d.g /2  #<<< 这里
  8. p c /3  #<<< 和这里
复制代码
出错原因:如果 "/"后面没有空格,而前面的不是一个明确的变量的话,就会被当作正则表达式来处理。
也就是说,这个情况下,他是不会出错的:
  1. c = 1
  2. p c /10
复制代码
解决方案:如果你想 / 表示除法的话,记得在前后都加入空格
也就是这样:
  1. class D
  2.   def g
  3.     return 0
  4.   end
  5. end
  6. d = D.new
  7. p d / 2
复制代码
大家也一起来吧,不一定是奇怪的错误哦!呵呵呵——
作者: 精灵使者    时间: 2010-10-29 14:09
本帖最后由 精灵使者 于 2010-10-29 14:15 编辑

名字:内存冲突错误
信息:"该内存不能为read"
问题时候:使用夏娜的防卡脚本的时候,战斗开始的时候不定期神奇出现,然后结束游戏。
症状原因:以前夏娜的防卡脚本的graphics.update与切入战斗的时候的graphics.transition神奇的同时出现而引发此错误
结论:防卡脚本容易出现神奇的BUG,这是算法所决定的,建议使用紫苏的脚本
神秘程度:???(非常随机的情况下容易出此错)
作者: 精灵使者    时间: 2010-10-29 17:45
本帖最后由 精灵使者 于 2010-10-29 17:49 编辑

名字:堆栈过深错误
症状:在按F12的时候提示"stack level too deep“
范例脚本是RMXP的自动描边脚本:
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. class Bitmap
  5. unless $OK
  6.   alias sailcat_draw_text draw_text
  7.   def draw_text(p1,p2,p3=0,p4=3,p5=nil,p6=0,p7=3,p8=nil)
  8.     case p1
  9.     when Numeric
  10.       x = p1
  11.       y = p2
  12.       width = p3
  13.       height = p4
  14.       text = p5
  15.       align = p6
  16.       shadow_direction = p7
  17.       shadow_color = p8
  18.       if shadow_color.nil?
  19.         shadow_color = Color.new(0,0,0,self.font.color.alpha * 0.67)
  20.       end
  21.     when Rect
  22.       x = p1.x
  23.       y = p1.y
  24.       width = p1.width
  25.       height = p1.height
  26.       text = p2
  27.       align = p3
  28.       shadow_direction = p4
  29.       shadow_color = p5
  30.       if shadow_color.nil?
  31.         shadow_color = Color.new(0,0,0,self.font.color.alpha * 0.67)
  32.       end
  33.     end
  34. color_temp = self.font.color.clone
  35. if shadow_direction != 0
  36.     self.font.color = shadow_color
  37.     case shadow_direction
  38.     when 1
  39.       sailcat_draw_text(x-1,y+1,width,height,text,align)
  40.     when 3
  41.       sailcat_draw_text(x+1,y+1,width,height,text,align)
  42.     when 7
  43.       sailcat_draw_text(x-1,y-1,width,height,text,align)
  44.     when 9
  45.       sailcat_draw_text(x+1,y-1,width,height,text,align)
  46.     end
  47.   self.font.color=color_temp
  48. end
  49.   $OK = true
  50.   sailcat_draw_text(x,y,width,height,text,align)
  51.   end
  52. end
  53. end
  54. #==============================================================================
  55. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  56. #==============================================================================
复制代码
症因:好像是发生了重定义错误。
解决方案:
把第一行改为 alias sailcat_draw_text draw_text unless method_defined? :sailcat_draw_text
即可
作者: IamI    时间: 2010-10-29 18:01
我路过打酱油= =b
猛击这里囧一下
作者: 六祈    时间: 2010-11-5 22:28
嘛,愚者也来打瓶酱油~
SyntaxError
  1. def foo
  2. H = 0
  3. end
复制代码
原因,在方法内给常量赋值就会发生…
作者: enghao_lim    时间: 2010-11-6 02:08
纯飘过……
名称:logic error
症状:脚本运行结果与预想结果有所出入
解决方法:不停的debug找原因吧。
作者: zhangbanxian    时间: 2010-11-6 09:11
名字:脚本已备份
错误信息:脚本已备份
出错的语句:
  1. sleep(10)
复制代码
提示的意思: 脚本已备份
出错原因:脚本已备份- -b
解决方案:做游戏就老老实实做游戏吧,没事别做乱七八糟的蛋疼事- -b

作者: 574656549    时间: 2011-3-25 17:05
提示: 作者被禁止或删除 内容自动屏蔽




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