找回密码
 注册
搜索
查看: 547|回复: 6

新版官方的官府播报揭榜npc的抓取(防撞车)两种小code

[复制链接]
门派:铁掌帮
发表于 2021-9-12 15:05:37 | 显示全部楼层 |阅读模式
首先感谢小风神之前分享的帖子:“放一个定制版的高端福利,如何避免官府撞车?”
http://www.sjever.net/bbs/forum.php?mod=viewthread&tid=235593
里面描述了如何抓取chat里的播报员播报的npc,特征串是:“ "通缉犯【(.*)】被接取"”
然后添加BAN列表。需要先把这个贴子看明白作为基础。

现在新版官方进行了播报,播报格式是:"【官府公告】令狐国冲揭榜追捕人犯丹珍风,请武林同道多多支持!"

我测试了两种修改的方法。
方法一:
相对简陋些。因为公版机器默认不会将新增的“书剑公告”抓到chat日志窗口,一开始我也不懂怎么弄。所以我把触发加到了shujian.lua的hp_trigger。就跟chat频道没有一点关系了。“书剑公告”没有留下chat日志。

方法二:
学习了一下机器版大佬们的一些帖子。就是按小风神原有方案,沿用以前的chat频道。想办法把将新增的“书剑公告”抓到chat日志窗口。那么改法就跟小风神原帖的方法一个套路了。
详细见下。
门派:铁掌帮
 楼主| 发表于 2021-9-12 15:06:32 | 显示全部楼层
方法一:
1、增加一个触发
我是加在了shujian.lua里的function hp_trigger()函数。
  create_trigger_t('hp40','^(> )*【官府公告】(\\D*)揭榜追捕人犯(\\D*),请武林同道多多支持!','','guanfuHuibi')
  ...
SetTriggerOption("hp40","group","hp")

2. 抓到触发以后,就是把抓出来的npc名字添加到BAN列表
这个函数里对"【官府公告】令狐国冲揭榜追捕人犯丹珍风,请武林同道多多支持!"抓取后
w[2]就是玩家名字"令狐国冲", w[3]就是npc名字"丹珍风"。可以打开注释自己测试。
function guanfuHuibi(n,l,w)
        --print(w[1])
        --print(w[2])
        --print(w[3])

  table.insert(GF_ban_targetX,w[3])
end
门派:铁掌帮
 楼主| 发表于 2021-9-12 15:19:14 | 显示全部楼层
方法二:(连一下楼哈)好处是书剑公告都可以记录在chat日志窗口。
1、将新增“的书剑公告”抓入到chat窗口
修改chat.lua的chat_trigger=function()函数
1) 这句加一个“官府公告”
    create_trigger_t('chat1',"^(> )*(\\! )*【(江湖传闻|官府通告|官府公告|活动公告|嵩山派|古墓派|闲聊|丐帮|昆仑派|铁掌帮|天龙寺|大轮寺|明教|星宿派|姑苏慕容|神龙教|华山派|武当派|桃花岛|少林派|峨嵋派|队伍|谣言|书剑|新闻|表决)】",'','color_chats')

2)加一个整行抓取“官府公告”的触发
    create_triggerex_lvl('chat8',"^(> )*(\\! )*【官府公告】(.*)",'','chatGuanfu',90)
...
    SetTriggerOption("chat8","group","chat")

2、处理抓出来的“官府公告”中的特征文字(同小风神原帖基本一模一样了)
比照原帖中的 chatUser函数依葫芦画瓢写新一个chatGuanfu函数。
wildcards[3]就是整段的官府公告内容,不清楚抓可以打开注释调试。
function chatGuanfu(name, line, wildcards, styles)
   color_chats(name, line, wildcards, styles)

        --print(wildcards[1])
        --print(wildcards[2])
        --print(wildcards[3])
        --print(wildcards[4])
        --print(wildcards[5])
   local l_words=tostring(wildcards[3])
   
   local _, _, value = string.find(l_words, "揭榜追捕人犯(.*),请武林同道多多支持")

   if value then table.insert(GF_ban_targetX,value) end
   
end

门派:铁掌帮
 楼主| 发表于 2021-9-12 15:27:48 | 显示全部楼层
方法二的效果示例:
BAN列表:
3="慕容鲍"
4="本毛"



09/12/21 15:15:45> 【谣言】某人:有人带着洞箫在桃花岛一带出现!
09/12/21 15:16:12【官府公告】扬州府现通缉一众要犯,请各位武林豪杰为民除害!
09/12/21 15:16:31【官府公告】飞舞揭榜追捕人犯慕容鲍,请武林同道多多支持!
09/12/21 15:16:34【官府公告】太清云风揭榜追捕人犯本毛,请武林同道多多支持!

门派:明教
发表于 2021-9-12 20:40:23 | 显示全部楼层
lhgchong@tj 发表于 2021-9-12 15:19
方法二:(连一下楼哈)好处是书剑公告都可以记录在chat日志窗口。
1、将新增“的书剑公告”抓入到chat窗 ...

我试过了不行,你把你自己的chatGuanfu函数粘一个出来吧
门派:铁掌帮
 楼主| 发表于 2021-9-12 22:49:22 | 显示全部楼层
ywts@tj 发表于 2021-9-12 20:40
我试过了不行,你把你自己的chatGuanfu函数粘一个出来吧

这里都是片段的代码,不是下载就能用的,只能起到参考。需要按小风神的原帖,一步步修改,跑通了以后,再把播报的识别按新方法修改。例如:GF_ban_targetX在下载的公版代码中是没有的,必须手工定义。如果不定义,官府公告揭榜一出来,这里直接弹出对话框报错。
门派:明教
发表于 2021-9-14 14:29:52 | 显示全部楼层
lhgchong@tj 发表于 2021-9-12 15:19
方法二:(连一下楼哈)好处是书剑公告都可以记录在chat日志窗口。
1、将新增“的书剑公告”抓入到chat窗 ...

1) 这句加一个“官府公告”
    create_trigger_t('chat1',"^(> )*(\\! )*【(江湖传闻|官府通告|官府公告|活动公告|嵩山派|古墓派|闲聊|丐帮|昆仑派|铁掌帮|天龙寺|大轮寺|明教|星宿派|姑苏慕容|神龙教|华山派|武当派|桃花岛|少林派|峨嵋派|队伍|谣言|书剑|新闻|表决)】",'','color_chats')

这个触发器已经把信息抓下来了,后边第二步就不用再创建触发器了,直接去color_chats里改就行了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-4 20:05 , Processed in 0.038656 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表