Project1

标题: 自己写了段脚本,写一半测试发现不能用 [打印本页]

作者: 奶油Da蛋糕    时间: 2009-8-17 14:33
标题: 自己写了段脚本,写一半测试发现不能用
本帖最后由 奶油Da蛋糕 于 2009-8-17 14:37 编辑

自己写了段脚本,写一半测试发现不能用。
就是想做一个退出游戏的窗口。
按了×之后不退出,进入界面。
界面里介绍。
“您的存档次数为XXX”
[快速存档] [确认退出] [返回游戏]

---------------------------
梦想逍遥游
---------------------------
执行脚本时发生 ArgumentError 。

wrong number of arguments(1 for 0)
---------------------------
确定   
---------------------------

运行之后发现这个
翻译之后是:执行脚本时发生 ArgumentError 。
错误的号码arguments(1对于 0)
  1. def exit
  2. $scene = Scene_Exit.new
  3. end

  4. class Window_Exit
  5.     def initialize
  6.     super(100, 128, 640-200, 352-50)
  7.     self.windowskin = RPG::Cache.windowskin("002-xycs.png")
  8.     self.contents = Bitmap.new(width - 32, height - 32)
  9.     update
  10.   end
  11. def update
  12.     self.contents.clear
  13.     self.contents.font.color = normal_color
  14.     self.contents.font.size = 16
  15.     self.contents.draw_text(10,-210,640,480,"存档次数:")
  16.     self.contents.draw_text(40,-210,640,480,$game_system.save_count.to_s)
  17. end
  18. end

  19.   
  20.   
  21. class Scene_Exit
  22.   def main
  23.     @spriteset = Spriteset_Map.new
  24.     @command_window = Window_Exit.new
  25.     Graphics.transition
  26.     loop do
  27.       Graphics.update
  28.       Input.update
  29.       update
  30.       if $scene != self
  31.         break
  32.       end
  33.     end
  34.     Graphics.freeze
  35.     @command_window.dispose
  36.     @spriteset.dispose
  37.   end
  38.   def update
  39.     100.times{Graphics.update}
  40.   end  
  41.   def exit_e
  42.     $game_system.se_play($data_system.decision_se)
  43.     Audio.bgm_fade(800)
  44.     Audio.bgs_fade(800)
  45.     Audio.me_fade(800)
  46.     $scene = nil
  47.   end  
  48. end
复制代码

作者: 「旅」    时间: 2009-8-17 15:22
本帖最后由 「旅」 于 2009-8-17 15:26 编辑

①、exit有1个参数(参考:http://rpg.blue/viewthread.php?tid=118256)
②、class Window_Exit忘了加上 < Window_Base
③、建议不要这么正统,不要用$scene直接运行一段脚本,不然标题什么的容易出错,效果也很怪……
作者: 后知后觉    时间: 2009-8-17 17:54
本帖最后由 后知后觉 于 2009-8-17 18:02 编辑

你这个脚本写得很神奇

我好像都没有看见有按键的判断

而看到了很神奇的地方
def update
  100.times{Graphics.update}
end
就这3行就能看出是个无限循环了
如果不是exit的参数出错的话
恐怕你要打开任务管理器才能关闭RGSS Player了- -||b
帖一段我自己重定义的exit - -
  1. unless $hzhj_method
  2.   module Kernel
  3.     alias old_exit exit
  4.     def exit(*args)
  5.       Audio.bgm_stop
  6.       if Hzhj.tempfilenumber != 0
  7.         for file in Hzhj.tempfile.values
  8.           File.delete(file)
  9.           Graphics.update
  10.         end
  11.       end
  12.       old_exit(*args)
  13.     end
  14.   end  
  15.   $hzhj_method = true
  16. end
复制代码
再帖一段秀秀的教程片段
  Method类还有一个方法 ality 是用来返回方法参数的个数
  如果方法参数为不定参数形势(*args)
  返回值为-1
  
  具体作用在元编程里会很常用
  记得这句经典的报错吗?
  wrong number of arguments(x for x)
  表示参数不正确 后面的 x for x
  如果 0 for 1
  表示 原来方法有1各参数 调用的时候参数为0
  
  这就是一个很经典的元编程
  
  监测方法调用时候的参数
  如定义的时候为不定参数则 不检查调用时候的参数
  如不是不定参数
  调用时候的参数个数和定义的时候数量如果不正确
  就调用error程序


最后再说一句你的Scene有问题.
作者: 奶油Da蛋糕    时间: 2009-8-17 18:19
本帖最后由 奶油Da蛋糕 于 2009-8-17 18:26 编辑
你这个脚本写得很神奇

我好像都没有看见有按键的判断

而看到了很神奇的地方
def update
  100.times{Graphics.update}
end
就这3行就能看出是个无限循环了
如果不是exit的参数出错的话
恐怕你要打开任务管理器才能 ...
后知后觉 发表于 2009-8-17 17:54



不是啦,我这个还只写了一半,主要是测试窗口能不能正常显示。
然后准备用
@zzzzzzzz.bitmap = 精灵.new
插入图片。
再用鼠标判定图片按钮就OK了。
效果不比按键差,
最关键是,写起来方便,新人都会写。
我最讨厌写按钮选项的了。上次那个打牌的锦囊按钮(就是窗口中的窗口的按钮)做了好久,最终还是以失败告终没做了。
但是鼠标就不会。
永远写的很方便。
弄好X坐标和Y坐标。
搞定。
什么按钮都能判定。
哇哈哈哈。

那个神奇的地方是不知道写点什么点放那,就先乱写了点用来测试的。

另外。EXIT(括号里面的这个参数具体是检测什么的?)
如果这里面的参数忽略掉了会有影响吗?
作者: 后知后觉    时间: 2009-8-17 19:24
你不就是忽略掉了然后报错了么
那个参数是做什么用的忘记了 - -
作者: 赤点    时间: 2009-8-17 19:30
好象是填0表正常退出...其他值不正常
作者: 后知后觉    时间: 2009-8-17 19:50
exit([status])
终止Ruby程序的运行.若向status传递了一个整数的话,该整数就将成为Ruby命令的结束状态值.默认的结束状态值是0.

exit通过引发SystemExit异常来结束程序的运行.若有必要的话,可以使用rescue部分来捕捉到它.

ruby 1.8 特性:若status为true的话,就以EXIT_SUCCESS作为结束状态值.若status为false的话,就以EXIT_FAILURE作为结束状态值.默认的结束状态值已被改为EXIT_SUCCESS.

exit!([status])
以整数status为结束状态值来终止Ruby程序的运行.默认的结束状态值为-1.

exit!与exit不同,它不会进行异常处理.在fork之后,若想终止子进程时可以使用该语句.

ruby 1.8 特性:若status为true的话,就以EXIT_SUCCESS作为结束状态值.若status为false的话,就以EXIT_FAILURE作为结束状态值.默认的结束状态值已被改为EXIT_FAILURE.
作者: 赤点    时间: 2009-8-17 20:00
精辟,不过一般人用不上
作者: 霜冻之狼    时间: 2009-8-20 12:20
为什么要重定义exit,
这样RM不就关闭不能了吗




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