Project1

标题: 如何实现进入地图中之后,执行某个队伍的列表内容? [打印本页]

作者: hys111111    时间: 2012-10-10 13:00
标题: 如何实现进入地图中之后,执行某个队伍的列表内容?
这个问题有一些难度。希望更高的高手来帮一下忙。

原因是执行$data_troops[troop_id].pages[0].list的时候出错了。
但是我检查不出错误来。

出错部分:

  1. @main_interpreter = Interpreter.new
  2. for troop_id in 0...encounter_list.size
  3.       @start_list = $data_troops[troop_id].pages[0].list
  4.       @main_interpreter.setup(@start_list, 0)
  5.       @main_interpreter.update
  6.     end
复制代码
这是地图设置中的队伍。


我想让它执行下面战斗事件的东西。
dsu_plus_rewardpost_czw
作者: 飞3a    时间: 2012-10-10 20:38
我试着把怪物清空在来打的,显示的结果是还是出现战斗场景但是没有怪= =
能把具体的出错原因贴上来么?例如for nil class或者syntax error这种原因。
还有不知道你是否有没有套用过别的脚本?
作者: hys111111    时间: 2012-10-10 21:16
飞3a 发表于 2012-10-10 20:38
我试着把怪物清空在来打的,显示的结果是还是出现战斗场景但是没有怪= =
能把具体的出错原因贴上来么?例如f ...

pages那个nil class。

但是找不到原因。Game_Troop和RPG::Troop均没有被其他脚本套用。
而Scene_Battle1第163行附近的

  1. for index in 0...$data_troops[@troop_id].pages.size
  2.       # 获取事件页
  3.       page = $data_troops[@troop_id].pages[index]
复制代码
却没有问题。
作者: imsy    时间: 2012-10-10 21:21
我觉得问题应该是出在encounter_list.size身上。
改成for troop_id in 1..10表示成功执行。
作者: hys111111    时间: 2012-10-10 21:28
imsy 发表于 2012-10-10 21:21
我觉得问题应该是出在encounter_list.size身上。
改成for troop_id in 1..10表示成功执行。 ...

我忘了说明下,这个我放在Game_Map里面执行……
  1.   def encounter_list
  2.     return @map.encounter_list
  3.   end
复制代码
如果局部还是查不出的话干脆整段发上来吧……

  1. #——————————————————————————————————
  2. # Game_Map
  3. #—————————————————————————————————

  4. class Game_Map
  5.   attr_reader :start_list
  6.   attr_reader :auto_list
  7.   
  8.   alias hys_map_setting_initialize initialize
  9.   alias hys_map_setting_setup setup
  10.   alias hys_map_setting_update update
  11.   
  12.   def initialize
  13.     hys_map_setting_initialize
  14.     @start_list = [RPG::EventCommand.new]
  15.     @auto_list = [RPG::EventCommand.new]
  16.     @main_interpreter = Interpreter.new
  17.   end
  18.   
  19.   def setup(map_id)
  20.     hys_map_setting_setup(map_id)
  21.     for troop_id in 0...encounter_list.size
  22.       @start_list = $data_troops[troop_id].pages[0].list
  23.       @main_interpreter.setup(@start_list, 0)
  24.       @main_interpreter.update
  25.     end
  26.   end
  27.   
  28. end  
复制代码

作者: imsy    时间: 2012-10-10 21:53
pages那个nil class

是因为$data_troops[0]不存在
p $data_troops[1].pages没问题
p $data_troops[0].pages就pages那个nil class了

若有口胡请无视
for troop_id in 1...encounter_list.size
应该会好
作者: hys111111    时间: 2012-10-11 13:31
imsy 发表于 2012-10-10 21:53
pages那个nil class

是因为$data_troops[0]不存在


多谢了。你让我终于找到了一个重要部分。
正确解法:
  1.     for troop_id in encounter_list
  2.       @start_list = $data_troops[troop_id].pages[0].list
  3.       @main_interpreter.setup(@start_list, 0)
  4.       @main_interpreter.update
  5.     end
  6.   end
复制代码





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