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
页: 1 2 [3]
查看完整版本: 杰哥乱弹琴之任务多行文字处理