查看: 2491|回复: 2

[已经过期] 读取地图上事件注释内容

[复制链接]
梦石
0
星屑
1816
在线时间
2527 小时
注册时间
2010-10-12
回帖
1336

开拓者

发表于 2015-12-7 08:42:18 | 显示全部楼层 |阅读模式

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

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

×
如题,

鄙人模仿其他工程写的这段脚本来获得 某地图上的事件的注释内容:

[pre lang="ruby"]

parms = []
        (1..5).each {|i|
          if event.list.code == 108
            parms << event.list.parameters
          end
        }
        5.times {|i| parms = [0] if parms == [nil] }
        arry = []
        group_1 = []
        t = parms[0][0].split if parms[0] != nil
        i = 0
        loop do  
          break if t.to_i == 0  or parms[0] == nil
          group_1.push t.to_i
          i+=1
        end
        group_2 = []
        t = parms[1][0].split if parms[1] != nil
        i = 0
        loop do  
          break if t.to_i == 0  or parms[1] == nil
          group_2.push t.to_i
          i+=1
        end
        group_3 = []
        t = parms[2][0].split if parms[2] != nil
        i = 0
        loop do  
          break if t.to_i == 0  or parms[2] == nil
          group_3.push t.to_i
          i+=1
        end
        group_4 = []
        t = parms[3][0].split if parms[3] != nil
        i = 0
        loop do  
          break if t.to_i == 0  or parms[3] == nil
          group_4.push t.to_i
          i+=1
        end
        group_5 = []
        t = parms[4][0].split if parms[4] != nil
        i = 0
        loop do  
          break if t.to_i == 0 or parms[4] == nil
          group_5.push t.to_i
          i+=1
        end
   ..... 剩下的略

[/pre]

具体是这样的,如果事件是如此设置的,则把从第二行注释开始每行里的数字(空格区分)都分别加入到 group_1, group_2, group_3, group_4, group_5 里

QQ截图20151206163341.png

如上图所示,运行后的结果是:
group_1 = [6,6,6,6]
group_2 = [28,28,28,28,28]
group_3 = [28,28,28,28,28]
group_4 = [28,28,28,28,28]
group_5 = [6,6,6,6]

到目前为止,一切还正常。但是,一旦某行的注释超过一排后,如下图:
QQ截图20151206164008.png

他就不能读全了,只能读取每条注释的第一行。(是不是有点绕口。。)

总之请问如何才能够做到读取到每一个数字呢?



梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2015-12-7 09:12:03 | 显示全部楼层
提示一下,表示注释的事件指令代码是108和408,其中108表示每个注释的第一行,408表示其它行。
显然你的脚本里面根本没出现408,所以每次只能读到第一行了。

BTW你的脚本为什么代码重复率这么高,应该可以简化很多的吧……

点评

event.list[0].code == 408不是代入  发表于 2015-12-10 10:28
每个注释第一行是108后面是408,因此list[0]不可能是408  发表于 2015-12-7 12:33
可以简化,但是为了方便直接复制粘贴得了。 顺便我试了一下event.list[0].code == 408 好像不管用啊  发表于 2015-12-7 10:26
回复

使用道具 举报

梦石
0
星屑
451
在线时间
228 小时
注册时间
2015-2-23
回帖
233
发表于 2015-12-7 20:17:43 | 显示全部楼层
如果是408的话,是否可以这样:

[pre lang="ruby"]text = ""
if event.list[0].code == 108
  text += event.list[0].parameters
  for i in 1...event.list.size
    break if event.list.code != 408
    text += event.list.parameters
  end
end[/pre]
制作XP特效,找我。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部