赞 | 123 |
VIP | 13 |
好人卡 | 16 |
积分 | 194 |
经验 | 38692 |
最后登录 | 2024-11-13 |
在线时间 | 3098 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 19403
- 在线时间
- 3098 小时
- 注册时间
- 2013-1-11
- 帖子
- 1290
|
刚刚那个只是对"末尾单词会隔开"问题进行修复。。
太长换行执行下面这个试试。
- $data_mapinfos = load_data("Data/MapInfos.rxdata")
- num = 0
- for id in $data_mapinfos.keys
- map = load_data(sprintf("Data/Map%03d.rxdata", id))
- for e in map.events.values # 遍历事件
- next if e.nil?
-
- for p in e.pages # 遍历事件页
- next if p.nil?
-
- p.list.each_with_index do |list, index| # 遍历事件内容
- next if list.nil? or (list.code != 101 and list.code != 401)
-
- str = list.parameters[0]
- next if str.length <= 30 # 小于30的不进行换行
-
- str =~ /(.{0,30}) (.*)/
- next unless ($1 and $2)
-
- list.parameters[0] = $1
- newEV = proc{|code, indent, msg|
- ev = RPG::EventCommand.new
- ev.code = code
- ev.indent = indent
- ev.parameters = [msg]
- return ev
- }
-
- # 101和401很头疼,不想每个换行都用单独的行,算是解决了。。
- if list.code == 101 # 101首行
- r = 3
- 3.times{|i| p.list[index+i+1].code == 401 ? r -= 1 : break }
- p.list.insert index+1,newEV.call(401, list.indent, $2)
- if r <= 0 # 换行为101
- p.list[index+4].code = 101 if p.list[index+4].code == 401
- end
- else # 401续行
- r = 3
- 3.times{|i| (index-i >= 0 and p.list[index-i].code == 401) ? r -= 1 : break }
- 2.times{|i| p.list[index+i+1].code == 401 ? r -= 1 : break }
- if r <= 0 # 新行
- if p.list[index+1].code == 101
- p.list.insert index+1,newEV.call(101, list.indent, $2)
- 3.times{|i| (p.list[index+2+i].code = 401;break) if p.list[index+2+i].code == 101 }
- else
- p.list.insert index+1,newEV.call(401, list.indent, $2)
- p.list[index+2].code = 101
- 3.times{|i| (p.list[index+3+i].code = 401;break) if p.list[index+3+i].code == 101 }
- end
- else
- p.list.insert index+1,newEV.call(401, list.indent, $2)
- end
- end
-
- num += 1
- end
-
- end
- end
- save_data(map, sprintf("Data/Map%03d.rxdata", id))
- end
- print "换行#{num}次, 重启工程查看"
- exit
复制代码 |
评分
-
查看全部评分
|