设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1596|回复: 8
打印 上一主题 下一主题

[已经解决] 自己写了段脚本,写一半测试发现不能用

 关闭 [复制链接]

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
跳转到指定楼层
1
发表于 2009-8-17 14:33:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 奶油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
复制代码
我爱66RPG,但我讨厌66.

Lv3.寻梦者

小柯的徒弟

梦石
0
星屑
1535
在线时间
1157 小时
注册时间
2008-5-24
帖子
3085

贵宾

2
发表于 2009-8-17 15:22:51 | 只看该作者
本帖最后由 「旅」 于 2009-8-17 15:26 编辑

①、exit有1个参数(参考:http://rpg.blue/viewthread.php?tid=118256)
②、class Window_Exit忘了加上 < Window_Base
③、建议不要这么正统,不要用$scene直接运行一段脚本,不然标题什么的容易出错,效果也很怪……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6875
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

3
发表于 2009-8-17 17:54:39 | 只看该作者
本帖最后由 后知后觉 于 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有问题.











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
4
 楼主| 发表于 2009-8-17 18:19:34 | 只看该作者
本帖最后由 奶油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(括号里面的这个参数具体是检测什么的?)
如果这里面的参数忽略掉了会有影响吗?
我爱66RPG,但我讨厌66.
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6875
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

5
发表于 2009-8-17 19:24:35 | 只看该作者
你不就是忽略掉了然后报错了么
那个参数是做什么用的忘记了 - -











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

6
发表于 2009-8-17 19:30:17 | 只看该作者
好象是填0表正常退出...其他值不正常
就算痛也要做,宅必备宅人的必备网站
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6875
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

7
发表于 2009-8-17 19:50:31 | 只看该作者
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.











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

清纯红

梦石
0
星屑
61
在线时间
65 小时
注册时间
2009-7-23
帖子
995

贵宾

8
发表于 2009-8-17 20:00:26 | 只看该作者
精辟,不过一般人用不上
就算痛也要做,宅必备宅人的必备网站
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
128 小时
注册时间
2009-1-28
帖子
2790
9
发表于 2009-8-20 12:20:44 | 只看该作者
为什么要重定义exit,
这样RM不就关闭不能了吗

炼金术的根本法则是等价交换。想要获得,必须失去同等价值的东西。每当烦躁的时候,煎熬在不想做却又正在做的烦心事中的时候,我就安慰自己,提醒自己做这些事情的目的所在,告诉自己不要忽略所获得或者即将获得的回报,物质的,精神的,肉体的,灵魂的回报!只做想做的事情,就会失去不想失去的东西。
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-10 22:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表