|
![](static/image/common/ico_lz.png)
楼主 |
发表于 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.
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|