Project1

标题: 为什么没有迭代却提示无法在迭代内插入值 [打印本页]

作者: jeffice0325    时间: 2019-8-9 08:53
标题: 为什么没有迭代却提示无法在迭代内插入值
本帖最后由 jeffice0325 于 2019-8-9 11:36 编辑


RUBY 代码复制
  1. module PSCL
  2. module EVENT
  3.   @whouse=[]
  4.   def self.geteventname(evt)
  5.     evt.instance_variable_get("@event").instance_variable_get("@name")
  6.   end
  7.   def self.seteventxyid(evt,x,y,id)
  8.     evt.instance_variable_get("@event").instance_variable_set("@x",x)
  9.     evt.instance_variable_get("@event").instance_variable_set("@y",y)
  10.     evt.instance_variable_set("@id",id)
  11.   end
  12.   def self.search_events(amap,sid=0)
  13.     @whouse[sid] = {} if @whouse[sid] == nil
  14.     amap.events.each{|k,v|
  15.       @whouse[sid][geteventname(v)] = v
  16.     }
  17.   end
  18.   def self.put_event(amap,ename,x,y,sid=0)
  19.     ael = amap.events.length().to_s.to_i + 1
  20.     amap.events.merge!({ael => Marshal.load(Marshal.dump(@whouse[sid][ename]))})
  21.     seteventxyid(amap.events[ael],x,y,ael)
  22.     return ael
  23.   end
  24. end
  25. end

如上,我应当是在迭代外插入值的,但为什么总提示不能在迭代内插入值?
作者: jeffice0325    时间: 2019-8-9 10:05
没有人吗?

作者: hyrious    时间: 2019-8-9 15:06
问题出在 put_event,如果你看默认脚本,Game_Map 里有一句
  1. @events.each_value {|event| event.update }
复制代码
用来执行事件
同时你在事件脚本里修改当前地图 $game_map 的事件表 amap.events,简化一下就是
  1. $game_map.events.each_value { |e| $game_map.events.merge!({ ael => x }) }
复制代码
自然是在迭代内插入值的

看这个脚本也不知道你想干嘛,我就不继续展开了
作者: jeffice0325    时间: 2019-8-9 15:30
hyrious 发表于 2019-8-9 15:06
问题出在 put_event,如果你看默认脚本,Game_Map 里有一句
用来执行事件
同时你在事件脚本里修改当前地图  ...

谢谢dalao,现在明白了,脚本是简化的,只保留了实现部分,其余未给出




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