此教程不是为Macro新人准备的,我将假设阅读的各位已经有关于Macro Mod脚本的基础知识
第一部分-和处理文字相关的事件
在“宏绑定-事件”的选项中,我们可以看到有两个和聊天相关的事件,分别是onChat和onSendChatMessage。这两个事件中,onChat用于处理接收到的聊天信息,onSendChatMessage用于处理发出的聊天信息。这两个事件都可以通过CHAT变量在事件中获取信息,但是要注意的是,即使是自己发出的信息,两个事件获取到的信息是有差别的,例如我在两个事件中分别绑定如下代码:
效果如下: 可以看到两个信息中的CHAT变量内容是不同的,因为发出的信息已经被服务器编辑过了,在想要对信息进行检测的时候尤其需要注意。 |
第二部分-聊天过滤器
聊天过滤器是这个mod一个相当实用的功能,虽然说这个功能本身非常简单,我在论坛上也看见其它同样功能的mod,但是它的强大之处在于它不仅仅是过滤文本,配合脚本还可以实现和其它脚本以及自定义gui的互动。 在这里先不提其它的功能,专注于过滤功能本身。 想要编辑聊天过滤器,在打开编辑宏绑定的界面后,点击左上角的图标,在弹出的菜单里面就可以找到“编辑聊天过滤器” 打开后大概是一个像是Macro文本编辑器的界面,在这里写的脚本就会在每次收到聊天信息的时候被执行。 这里有两个特别的命令可以使用,分别是FILTER()和PASS(),都是无参数的,FILTER()表示这条信息将会被过滤掉,这样一来你就像是从来没收到这条信息,PASS()则会标记这条信息为通过。事实上如果执行到脚本结尾都还没有执行到FILTER或PASS的话这条信息将会自动通过。 例:(如果@f全局变量为真,则过滤掉所有信息)
注意:在这里写的脚本将会比onChat事件先执行,这也意味着如果在这里信息就被过滤掉的话onChat事件并不会被呼叫。 |
第三部分-文字内容判断
相信在处理文本的时候根据文本的内容进行判断是相当有用的功能,于是Macro提供了四个对文本内容进行判断的方法,分别是IFBEGINSWITH, IFENDWITH, IFCONTAINS和IFMATCHES,这里首先介绍最简单的IFCONTAINS,它的用法是这样的:
这个时候,结合变量:
IFBEGINSWITH和IFENDSWITH用法都和IFCONTAINS类似,不过指明了只匹配开头和结尾处。 对于有进阶需求的人,可以使用IFMATCHES,语法和IFCONTAINS类似,不过这里匹配的条件使用的是正则表达式,只要文本中有一处匹配便会视为条件达成,正则表达式的教程在这里就不展开了,请自行百度。同时,据测试匹配不支持中文,想要匹配中文的人,请使用正则表达式的unicode转码,例:
|
第四部分-关于彩色文本的处理
Macros对于MC的彩色文本提供了非常好的支持,只要是不发到服务器的消息(ECHO),只需要使用“&”就可以像使用“§”一样的做出颜色代码,例如:
这里提到的是给文字使用颜色代码加上颜色,但是有的时候服务器发来的文本里面如果有样式代码却会给我们带来麻烦,因为颜色代码虽然不会显示出来,但是在尝试匹配的时候却会卡在字与字之间,影响判断。对此Macro也提供了解决办法,就是STRIP语句,用法如下:
至于输出的颜色是LOG语句的默认设定,事实上&message变量中存的内容已经是没有格式代码的了。 |