Project1

标题: 读取地图上事件注释内容 [打印本页]

作者: 刺夜之枪    时间: 2015-12-7 08:42
标题: 读取地图上事件注释内容
如题,

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

RUBY 代码复制
  1. parms = []
  2.         (1..5).each {|i|
  3.           if event.list[i].code == 108
  4.             parms << event.list[i].parameters
  5.           end
  6.         }
  7.         5.times {|i| parms[i] = [0] if parms[i] == [nil] }
  8.         arry = []
  9.         group_1 = []
  10.         t = parms[0][0].split if parms[0] != nil
  11.         i = 0
  12.         loop do  
  13.           break if t[i].to_i == 0  or parms[0] == nil
  14.           group_1.push t[i].to_i
  15.           i+=1
  16.         end
  17.         group_2 = []
  18.         t = parms[1][0].split if parms[1] != nil
  19.         i = 0
  20.         loop do  
  21.           break if t[i].to_i == 0  or parms[1] == nil
  22.           group_2.push t[i].to_i
  23.           i+=1
  24.         end
  25.         group_3 = []
  26.         t = parms[2][0].split if parms[2] != nil
  27.         i = 0
  28.         loop do  
  29.           break if t[i].to_i == 0  or parms[2] == nil
  30.           group_3.push t[i].to_i
  31.           i+=1
  32.         end
  33.         group_4 = []
  34.         t = parms[3][0].split if parms[3] != nil
  35.         i = 0
  36.         loop do  
  37.           break if t[i].to_i == 0  or parms[3] == nil
  38.           group_4.push t[i].to_i
  39.           i+=1
  40.         end
  41.         group_5 = []
  42.         t = parms[4][0].split if parms[4] != nil
  43.         i = 0
  44.         loop do  
  45.           break if t[i].to_i == 0 or parms[4] == nil
  46.           group_5.push t[i].to_i
  47.           i+=1
  48.         end
  49.    ..... 剩下的略


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



如上图所示,运行后的结果是:
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]

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


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

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



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

BTW你的脚本为什么代码重复率这么高,应该可以简化很多的吧……
作者: 枫の叶    时间: 2015-12-7 20:17
如果是408的话,是否可以这样:

RUBY 代码复制
  1. text = ""
  2. if event.list[0].code == 108
  3.   text += event.list[0].parameters
  4.   for i in 1...event.list.size
  5.     break if event.list[i].code != 408
  6.     text += event.list[i].parameters
  7.   end
  8. end





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