Welcome Guest ( Log In | Register )

欢迎访问本站。游客仅能浏览首页新闻、版块主题、维基条目与资源信息,需登录后方可获得内容发布、话题讨论、维基编辑与资源下载等权限。若无账号请先完成注册流程。
 
Reply to this topicStart new topic
> batclient客户端trigger(触发器)粗略教程, 很菜, 见谅
DouSBao
2020-10-21, 16:02
Post #1


主物质者
Group Icon
 12
   0

Group: Primer
Posts: 1
Joined: 2020-09-28
Member No.: 89573


因为没学过java, 写不来javascript, 只好将就用用batclient里面的trigger. 虽然比不上脚本那么便利, 编写的逻辑上限也被限制的有些许低, 但是trigger还是可以一定程度上简化游戏难度的.

内容介绍
本贴将粗略介绍什么是trigger, trigger manager界面各个模块的用处与使用方式, 以及一些可以在trigger body中使用的字符.

trigger介绍
trigger又称触发器, 可以理解为一种将trigger中的string与ui界面的string相匹配的库. 如若匹配, 则执行trigger中的包含指令. 当然了, 部分脚本的trigger是可以包含些许函数的, 从而能达到跟script相差无几的作用. 但是batclient中的trigger很遗憾的不支持自带函数, 只允许用户通过给定的接口与库互动. 因此该trigger的受众人群更多的是并不会写javascript的菜鸡(比如我).

trigger manage介绍
trigger manager可以在batclient中通过esc->settings->triggers/script->trigger manager路径打开. ui分为trigger name和edit selected trigger. 前者是用于分类与选择trigger, 后者用于改动trigger的各个形参.

在trigger name中, trigger前打勾的表明该trigger正在被启用, 0-9的数字表明trigger的分类与优先级(第一次见到如此清奇之分类), 再者就是trigger的名称.

在edit selected trigger中, trigger name为触发器的名称, trigger body为用于与消息框中的string相匹配的stringMatch. trigger action则为string匹配之后执行的指令.

往下有四个选项, 分别为match from the beginning, match from the end, simple, 和regexp. match from the beginning是让两个字符串从开头向后依次比较, match from the end同理. 此处应该注意的是当不选中以上两个选项时, matcher的工作原理仅仅是找到string中知否含有stringmatch, 而并非要求stringmatch在string的开头, 或者结尾. 后两者中, simple与regexp的作用不明...本菜鸡看了半天官网的trigger介绍, 自己也实验了半天, 还是没想出具体用处 (IMG:style_emoticons/default/sad.gif) simple貌似只会匹配say中的string, 而regexp则会匹配所有字符串

再往下的四个选择中, lite用于给与stringMatch相匹配的string染色, 而gag则用于忽视相匹配的strin. no lite为不染色, full lite为染色, 可在full lite下方的灰白色box里选择颜色, 虽然可以选择很多个, 但是只会优先染成最左边盒子的颜色. partial lite意义不明, partial直译为部分, 但是在选中partial因不明原因无法使字符串相匹配. gag为忽视. 运用gag可以忽视别人走路的信息, 穿装备的信息等等.

在lite/gag下方是script, 并没有卵用

script下面的priority直译为优先, 我曾一度认为这玩意只是拿来分类trigger, 让你容易找自己想要到. 后来发现先数字越小的trigger会优先执行, 等优先高的执行完了才会执行数字大的trigger..不过这好像也没有卵用. 还不如拿来当个单纯的分类.

use trigger为是否启用trigger...是个人都直到吧

sace changes顾名思义, cancel同理, duplicate trigger为复制当前选中的trigger..一般都是用这个来创建新的trigger..delete trigger为删除.

trigger action的秘密 (IMG:style_emoticons/default/fu.gif)
1. 一直苦恼于一个trigger中只能包含一个指令...查询了官网后也没有满意的解决办法, 就导致如果你想干一连串事情的话, 就得写一连串的trigger, 非常的麻烦...直到我在一个trigger的trigger action中试着写了个";"...尼玛还真的把两个指令区分开来. 一下子就便利了很多
2. 除了最基础的字符串以外, trigger action还有一些特殊的工具字符, 在https://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html官网有着很清楚的记载. 我整理了一些比较实用的字符, 如下:
"//": 一个反斜杠 (/)
"t": 一个制表符
"n": 换行符
"r": 回车符 (回车与换行并不一样, 参考老实打字机)
"[abc]": abc三个字母. 配对时只需拥有其一即可配对
"[^abc]": 不包含abc
"[a-z]": 从a到z的字母 (亦可写作[a-zA-Z], 意为所有大小写字母, 也可以写为[a-z[A-Z]])
"[a-z&&[abc]]": abc三个字母
"[a-z&&[^bc]]": a到z中除了bc的所有字母 (也可写为[ad-z])
"[a-z&&[^b-x]]": a到z中除了b到x的所有字母
".": 任何字母
"\d": 任何数字
"\D": 任何非数字

还有很多有用的工具字符, 甚至可以做出在一个字符串出现多少次之后才运行的trigger. 但经本菜鸡各种实验后发现貌似不可行...如果感兴趣可以前往上方网址自行查阅.

trigger是弟弟, script才是爸爸
TOP
Anselmus
2020-10-26, 11:42
Post #2


主物质者
Group Icon
 20
   2

Group: Speaker
Posts: 56
Joined: 2015-12-01
Member No.: 65127


simple就是系统用普通文本的方式来解读你写的body
regexp就是用正则的方式来解读
你说的那些特殊字符都必须是正则方式才能解读,否则就当做普通文字去匹配

This post has been edited by Anselmus: 2020-10-26, 11:43
TOP
Ianhee
2020-10-26, 15:06
Post #3


主物质者
Group Icon
 6
   1

Group: Primer
Posts: 17
Joined: 2019-08-28
Member No.: 83043


trigger 入门玩玩挺好,后续必然要接触 script。
TOP
ratitsumy
2021-01-12, 03:27
Post #4


主物质者
Group Icon
 -1
   0

Group: Primer
Posts: 11
Joined: 2020-11-13
Member No.: 90316


java跟javascript是两个不同的东西。不过trigger一点也不好用,还是script好,还好maintain

This post has been edited by ratitsumy: 2021-01-12, 03:30
TOP
Fast ReplyReply to this topicStart new topic
 


Time is now: 2021-02-25, 22:07