jarlyyn
发表于 2024-5-24 16:32:27
开始触发:
结束触发
效果:
jarlyyn
发表于 2024-5-24 16:35:08
如果多行文字有分割符号,那么i=i-2部分按实际间隔递减就好。
jarlyyn
发表于 2024-5-31 16:05:02
本帖最后由 jarlyyn 于 2024-5-31 04:15 PM 编辑
正好有人问我房间描述的是否可以处理。
我就写一个简单的demo。
首先是 房间开始,我们就按最简单的有 - 都当房间处理,实际肯定触发肯定要更复杂
正则是
^(.+) - .*注意,实际肯定不能这样用,会有很多错误触发
代码就是启动记录器
Hclua.HC.recorder:start(999)
然后我们目测下小地图,恩,应该是前6行都是不带色彩的空白
然后是连续的描述,知道空行
再是招牌,天气啥的。
最后是出口信息。
那我们就按这个方式尝试分解一下。
同样的,做个不严禁的触发,实际需要自己处理
^ 这里(明显|唯一|没有)代码就是停记录器,获取所有行,加个local变量mode,记录下当前行的模式,存到不同的变量,最后再打赢出来
Hclua.HC.recorder:stop()
local lines=Hclua.HC.recorder:getLines()
table.remove(lines)
local map={}
local desc={}
local misc={}
local mode=0
for i, v in ipairs(lines) do
if mode==0 then
if (v:slice(1,6):toShort()=='#0AA0 ') then
table.insert(map,v)
else
mode=1
end
end
if mode ==1 then
if string.gsub(v.Text,' ','')~='' then
table.insert(desc,v)
else
mode=2
end
end
if mode ==2 then
table.insert(misc,v)
end
end
print(Hclua.HC.lineutils.combineLinesShort(map))
print('---')
print(Hclua.HC.lineutils.combineLinesShort(desc))
print('---')
print(Hclua.HC.lineutils.combineLinesShort(misc))
就好了。
注意,这个是我花十分钟手写的,实际触发没这么简单
然后look一下,看看效果
用---把地图,描述,环境分开打印了。
注意,实际使用时肯定不会这样处理,从触发到数据的保存都不应该这样用的,这只是个showcase.
kumarajivar
发表于 2024-10-12 16:12:54
本帖最后由 kumarajivar 于 2024-10-12 04:21 PM 编辑
wait