查看: 2501|回复: 13

[已经解决] 自己写的一段脚本,有毛病,求高手修正。

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2009-7-11
回帖
12
发表于 2009-7-26 14:07:43 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
梦石
0
星屑
50
在线时间
27 小时
注册时间
2008-2-13
回帖
1700
发表于 2009-7-26 14:09:00 | 显示全部楼层
出的错误是什么.....
好久没用脚本了...堕落了,也懒得一个个看
好吧,果然换个签名就没人认识我了。我承认我被时间埋没了
回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
发表于 2009-7-26 14:13:35 | 显示全部楼层
17行,NOMETHO```
回复

使用道具 举报

孤独守望

梦石
0
星屑
3144
在线时间
1535 小时
注册时间
2006-10-16
回帖
4223

开拓者贵宾

发表于 2009-7-26 15:16:56 | 显示全部楼层
类里面可不能直接写代码
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2009-7-26 17:35:05 | 显示全部楼层
本帖最后由 后知后觉 于 2009-7-26 17:37 编辑

1.
class
end
你的窗口类貌似少了个end

2.默认脚本自带命令窗口类 你定义的这个类 就目前的情况来说 没有必要存在
3.Scene类 要有个main方法才行
class Scene_xxx
def main
生成对象
Graphics.transition
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.freeze
释放对象
end
def update
刷新等数据处理
end
end
以上非汉字部分基本上上就是一个Scene类的固定格式











你知道得太多了

回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
发表于 2009-7-26 17:40:19 | 显示全部楼层
类里面可不能直接写代码
IamI 发表于 2009-7-26 15:16

还是不懂,到底哪里是"直接用代码"?

PS.楼主是我马甲。
回复

使用道具 举报

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
回帖
6441

贵宾

发表于 2009-7-26 17:42:16 | 显示全部楼层
我一般都是拿着已有的脚本胡乱改的,自己写可不会,LZ继续加油吧
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
回帖
705
发表于 2009-7-26 18:11:32 | 显示全部楼层
class
end
里不能直接写代码,要用到函数!
如你 Window_information 的时候里面有
def initialize(xinxi)
代码..
end
def xinxi
代码..
end
定义class Window_information少了个end
定义class Scene_information
代码要写在函数内.
def main是调用改类时系统自动运行的.可以把代码写在其他函数,然后放在这里面调用.
回复

使用道具 举报

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
发表于 2009-7-26 18:15:55 | 显示全部楼层
1.
class
end
你的窗口类貌似少了个end

2.默认脚本自带命令窗口类 你定义的这个类 就目前的情况来说 没有必要存在
3.Scene类 要有个main方法才行
class Scene_xxx
def main
生成对象
Graphics.transition
loop do
...
后知后觉 发表于 2009-7-26 17:35















谢谢,我改成这样了,还遇到一个问题,就是在召唤这个脚本菜单的时候($scene = Scene_information.new)。第37行case @command_window.index发生了NOMETHOD。
可能还需要一些解决措施。
  1. class Window_information < Window_Base
  2. def initialize(xinxi)
  3.   super(0, 0, 480, 480)
  4.   self.contents = Bitmap.new(width - 32, height - 32)
  5.   xinxi
  6. end
  7. end

  8. def xinxi
  9.   s1="剧情任务"
  10.   s2="剧情属性"
  11.   s3="人际交友"
  12.     @command_window = Window_Command.new(160, [s1, s2, s3])
  13.     @command_window.index = @menu_index
  14. end

  15. class Scene_information
  16. def main
  17.    Graphics.transition
  18. loop do
  19. Graphics.update
  20. Input.update
  21. update
  22. break if $scene != self
  23. end
  24. Graphics.freeze
  25. end
  26. def update

  27.   if Input.trigger?(Input::C)
  28.     $game_system.se_play($data_system.decision_se)
  29.     @cs_window = Window_information.new(@command_window.index)
  30.     @cs_window.x = 160
  31.     @command_window.active = false
  32.     return
  33.   end
  34.           case @command_window.index
  35.       when 0
  36.         $scene = Scene_Task.new
  37.       when 1
  38.         $scene = Scene_atb.new
  39.       when 2  
  40.         $scene = Scene_frd.new
  41.       end
  42.       return
  43.     end
  44.   if Input.trigger?(Input::B)
  45.     $game_system.se_play($data_system.cancel_se)
  46.     $scene = Scene_Map.new
  47.     return
  48.   end
  49. else
  50.   if Input.trigger?(Input::B)
  51.     $game_system.se_play($data_system.cancel_se)
  52.     @cs_window.dispose
  53.     @command_window.active = true
  54.     return
  55.   end
  56. end
复制代码
回复

使用道具 举报

梦石
0
星屑
50
在线时间
93 小时
注册时间
2008-5-16
回帖
705
发表于 2009-7-26 18:24:29 | 显示全部楼层
你的xinxi函数是写在类外,不过也是可以,至于有什么不好我也不大清楚...
问题是你没有调用xinxi函数,所以(@command_window这个对象没有产生...
在def main里要调用xinxi函数
def main
xinxi
   Graphics.transition

loop do
.....
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部