|
楼主 |
发表于 2024-4-4 13:00:54
|
显示全部楼层
本帖最后由 protectqiqi 于 2024-4-4 01:04 PM 编辑
刚才有人QQ上问我为什么他的hpbrief匹配不行。。。然后我看了下他的设置(图1),他把要匹配的三个不同格式的内容放在同一个Trigger里面了。看来还要再拿这个例子讲一下匹配的细节。
正确的思路应该是这样的:
1. hpbrief的行首是一个#,这样很好,匹配的时候把#放在最前,可以防止被别的内容误触发。
2. 它的第一行和第二行只有两个细微的差别,第一行的第一个数字一般会带有小数点,并且后面会有字母K或者M。这两个小差别很重要,是在匹配时区分第一行和第二行的关键。
3. 那么第一行就用下面这个表达式来匹配。其中[0-9.]+就表示第一个数字除了0-9之外,还会有小数点。[MK]表示第一个数字后面会有字母M或者K。fig1到fig都是我起的变量名字。(哎呀。。。这里的字符又被自动过滤掉了,你看的是表达式是错的,正确的请看附件里的第三张图吧。)
- #(?[0-9.]+)[MK],(?\d+),(?\d+),(?\d+),(?\d+),(?\d+)
复制代码
4. 第二行的匹配需要新建一个Trigger,不能和第一行混在一起。第二行的表达式更简单,就是行首的#,加上六个数字,中间有逗号间隔。(哎呀。。。这里的字符又被自动过滤掉了,你看的是表达式是错的,正确的请看附件里的第三张图吧。)
- #(?\d+),(?\d+),(?\d+),(?\d+),(?\d+),(?\d+)
复制代码
5. 这样两个Trigger就能把hpbrief里面的12个数字都提取出来了。
顺带就能讲一下怎么用提取出来的变量了。如果变量不需要做数学计算,那么直接用
matches.变量名
就可以把它用在Trigger窗口下方的Lua code里。
比如我在这里用的Lua code是:
send("\nsay exp = " ..matches.fig1)
send("\nsay pot = " ..matches.fig2)
send("\nsay 内力 = " ..matches.fig3)
send的作用是向游戏发送指令。\n是换行,双引号“”里面的内容是会直接发送的,所以 matches.变量名 不能放在“”里面,这里的matches.fig1 matches.fig2 matches.fig3就会把在Trigger里匹配到的内容代入到里面。两个小点..表示把前后两个字符连接起来。最后的效果可以看图2。
还有一点要注意的是,用这种方法提取出来的变量只能在单个Trigger里面使用,而不能跨Trigger。所以上面的两个Trigger里我都用的fig1 - fig6,它们并不会互相干扰。如果要跨Trigger使用变量,就需要到Variable模块里面去创建变量,等以后再慢慢讲。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|