本帖最后由 独家记忆 于 2022-7-1 10:20 编辑
这次给大家分享1个实用的屏蔽功能,GM们可以自定义自己的版本要屏蔽的内容。 我不是搞教学的啊,就是觉得分享心得挺有意思的,可以给大家开阔开阔思路什么的,我也没啥压力,有空了就写写,没空了就干自己的事。希望大家都能积极的分享吧,我这代码也许写的还不够健壮,毕竟不做研发都快5年了,如果大家改进了,也可以把改进版的发到论坛来啊! 接下来开始介绍脚本吧!TS文件的存放关系对应的import引入要正确,以及需要在Main里引用,这块我就不多说了 (1)首先在ManageNpc.ts文件里的GameLib.onScriptEngineInit函数内,调用PingbiUnit.Init(),这块就等同于屏蔽配置的初始化。在init里,自己来配置要屏蔽的模块。模块分为主模块和子模块,比如图中:“超级装备爆出”就是主模块,“创世纪Super☆仙装备”就是子模块。相关的其他配置参数,都写在图里了,可以自己看。
这里,就是GM需要设置的地方 (2)PingbiNpc.ts的别的内容,都可以不用管。具体的处理逻辑在PingbiUnit这里。 Main、BackToMain函数:这2是一样的,一个直接打开NPC调用main。一个是从子菜单返回主页面触发的。 MainPingbi函数:1级页面,每个item的点击调用,依然不用管。 ChildPingbi函数:2级页面,每个item的点击调用,依然不用管。 (4)原理介绍:首先根据init中,GM配置的内容,产生1级页面。点击1级页面后,则跳转到实际要设置的2级页面这里的,在2级页面内进行设置。比如点了“系统消息” - "竞技场杀人"屏蔽,系统会自动的调用play.varBoolean("系统消息-竞技场杀人").asBoolean = true 或 =false,以此来自动的保存配置。 (5)最终调用层,这是最为关键的一步 自己在实际要给用户发送消息的地方,不要直接player.sendmessage,要调用PingbiUnit.SendMessage【实际这个函数就是对sendmessage封装了一层而已,最终还是调用的player.sendmessage】,这个时候系统就可以进行智能的进行判断了。 PingbiUnit.SendMessage有5个参数:
1、player:必填,不做多说了。 2、msg:必填,不做多说了 3、isPingbi:必填,是否屏蔽。当GM很明确某个消息用户是不能开启/关闭,则传false,避免无必要的逻辑判断
4、mainkind:非必填,1级分类,就是上面写的“低级装备爆出” 5、childKind:非必填,2级分类,就是上面写的“30级装备” 以后所有的sendMessage都可以走这个方法,以便进行全局的控制。至于,还有别的发送什么centerMessage之类的方法,根据这个方法,自己再去封装吧,封装思路是一样的 举例(最常用的垃圾装备屏蔽):物品爆出,比如裁决是30级装备,井中月是20级装备。 1、GM需要初始化 list.push(new PingbiUnit.Messsage("低级装备爆出","20级装备")) list.push(new PingbiUnit.Messsage("低级装备爆出","30级装备")) 2、在实际爆出的那里,判断爆出的装备。如果是裁决,则用Gamelib.Player[I]获得所有玩家的player对象,然后调用 PingbiUnit.SendMessage(player,"裁决从XXXX地方爆了出来,快去抢,",true,"低级装备爆出","30级装备")。 如果有人开启了30级装备屏蔽,则就看不到这个消息了。
【下载地址】:
index.php?c=app&a=puyuetianeditor:index&s=showfile&id=74
|