Project1

标题: 为什么会出错跳出? [打印本页]

作者: 幻耶    时间: 2008-4-21 23:35
标题: 为什么会出错跳出?
设置了两个事件,事件中各有一脚本,执行后出错如何解决?

事件1有以下脚本:
for i in $temp_skills
$game_actors[1].learn_skill(i)
end
结果游戏测试与事件1对话会有以下出错提示




事件2有以下脚本:
$temp_skills = Array.new($game_actors[1].
skills.size)
for i in $game_actors[1].skills.size
$temp_skills = $game_actors[1].skills
end
结果游戏测试与事件2对话会有以下出错提示
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 司马睿风    时间: 2008-4-21 23:49
看提示是没找到each,在第6行,你看看吧,脚本编辑器里有错误吗?
作者: 幻耶    时间: 2008-4-22 00:27
什么第6行??脚本编辑器里没错啊
作者: 水迭澜    时间: 2008-4-22 02:20
1、$temp_skill未定义或者赋值
2、好象是for i in $game_actors[1].skills
作者: link006007    时间: 2008-4-22 02:46
啊!!!! 对不起LZ了  for i in $game_actors[1].skills.size
这个是我的错(如果是我前面回的那个贴的话)   偷懒把上一行代码直接copy{/gg}


解决方法如楼上所述
作者: 幻耶    时间: 2008-4-22 17:23
我这么测试
第一步、先与第一个事件对话,暂存当前学会的特技:
$temp_skills = Array.new($game_actors[1].
skills.size)
for i in $game_actors[1].skills
$temp_skills = $game_actors[1].skills
end


第二步、让角色遗忘全部特技:
for i in 1..81
$game_actors[1].forget_skill(i)
end


第三步、与第二个事件对话学回遗忘的特技:
for i in $temp_skills
$game_actors[1].learn_skill(i)
end


结果出现以下错误:



然后我把二个事件中的脚本改为: $game_actors[1].skills=$temp_skills
结果按ESC查看特技的时候出错:

作者: 暴风の龙    时间: 2008-4-22 17:34
$temp_skills = Array.new($game_actors[1].
skills.size)
for i in $game_actors[1].skills
$temp_skills = $game_actors[1].skills
end
这句的分行好象分的不好,或许会造成出错.
改成这样试下?
$temp_skills = Array.new(
$game_actors[1].skills.size)

for i in $game_actors[1].skills
$temp_skills = $game_actors[1].skills
end

作者: 禾西    时间: 2008-4-22 18:02
第零步、修改接口類型
Game_Actor 23 行
  attr_accessor   :skills                   # 特技


第一步、先与第一个事件对话,暂存当前学会的特技:
$temp_skills = $game_actors[1].skills.clone


第二步、让角色遗忘全部特技:
$game_actors[1].skills.clear


第三步、与第二个事件对话学回遗忘的特技:
$game_actors[1].skills = $temp_skills [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 幻耶    时间: 2008-4-22 18:10
以下引用禾西于2008-4-22 10:02:55的发言:
第零步、修改變量類型Game_Actor 23 行  attr_accessor   :skills  # 特技



是修改attr_reader   :skills还是添加啊
作者: 禾西    时间: 2008-4-22 18:17
就是把這個的reader修改爲accessor
[LINE]1,#dddddd[/LINE]
你都沒有試驗過就結帖嗎==|||
作者: link006007    时间: 2008-4-22 18:35
重复....
作者: link006007    时间: 2008-4-22 18:56
第一楼的那个错误是你没有先初始化$temp_skills就使用, 第二个是我的错, for写错了
$temp_skills = Array.new($game_party.actors[1].skills.size)
for i in 0...$game_party.actors[1].skills.size
$temp_skills =$game_party.actors[1].skills
end
$game_party.actors[1].skills.clear
for i in $temp_skills
$game_party.actors[1].learn_skill(i)
end

或者
$temp_skills = $game_party.actors[1].skills.clone
$game_party.actors[1].skills.clear
for i in $temp_skills
  $game_party.actors[1].learn_skill(i)
end
不需要修改访问属性吧?  不然到时无意的修改你是不能察觉到的

作者: 幻耶    时间: 2008-4-22 19:04
执行这个脚本会有SyntexError
$temp_skills = Array.new($game_party.actors
[1].skills.size)
for i in 0...$game_party.actors[1].skills.
size
$temp_skills =$game_party.actors[1].
skills
end
作者: link006007    时间: 2008-4-22 19:28
汗   换行符贴到网页上都没有掉了 = =
总之 有'\'的地方后面另起一行   '\'符号保留

  1. $temp_skills = Array.new(\$game_party.actors[1].skills.size)
  2. for i in\ 0...$game_party.actors[1].skills.size
  3. $temp_skills[i] =\$game_party.actors[1].skills[i]
  4. end
  5. $game_party.actors[1].skills.clear
  6. for i in $temp_skills
  7. $game_party.actors[1].learn_skill(i)
  8. end
复制代码





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