关于Triggernometry处理职业量谱
-
参考cactbot文档:https://github.com/quisquous/cactbot/blob/main/docs/LogGuide.md#1f-networkgauge
使用正则
^.{14} 1F:(\d{8}):([^:]+):([0-9A-F]{1,8}):([0-9A-F]{1,8}):([0-9A-F]{1,8}):([0-9A-F]{1,8})$
捕获句子后想不到办法处理数据
目前遇到的问题:
1.对字串的处理使它变为正确顺序(对字串每补0并每byte分割,并且每4byte倒转顺序)
2.将十六进制的字串转为可以计算的数字(尝试过提供的${numeric:xxx}方法,或是前方加0x但并不成功)在查阅Triggernometry的文档下找到“${func:xxx(yyy):zzz}”的方法,希望可以自己写处理函数,但对于它的描述(以及act的结构)不太了解,请问是需要怎么操作呢?
-
^.{14} 1F:.{8}:(?<name>[^:]+?):\w+?:(?<gauge>\w+?):(?<ch>\w+?):
以上面的正则表达式为例,将量谱的第一组部分内容捕获至<gauge>
组中- 左侧补0:方法为padleft,例如 ${func:padleft(48,8):${gauge}}。其中48为字符’0’的ASCII码,这个function的意思是对捕获到的gauge向左用字符’0’补至8位。
- 处理为正确顺序: 当对量谱内容进行补0后,处理过的量谱字符串实际长度已经固定了,可以直接根据位置去提取需要的数据。
从指定位置提取指定长度的方法为substring,例如${func:substring(4,2):${func:padleft(48,8):${gauge}}},意即从${func:padleft(48,8):${gauge}}的第四位开始提取长度为2的字符串。提取出来的为十六进制形式,例如0A - 将16进制字符串转化为10进制数值的方法为hex2dec。
以上方法可以嵌套使用,例如以下为库啵机工中的能量获取方法实例。
最后的问题:${func:xxx(yyy):zzz}这个仅限于用于调用Triggernometry自己的方法,写在这里只是告诉你嵌套调用时的格式。就像上面给出的例子中,红色部分即为xxx(yyy),蓝色部分即为zzz。并不意味着可以自己自定义函数。