萨雷安の迦巴勒幻想大图书馆

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组

    关于Triggernometry处理职业量谱

    永远少女亭
    2
    2
    1498
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • N
      nyouo 最后由 编辑

      参考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的结构)不太了解,请问是需要怎么操作呢?

      1 条回复 最后回复 回复 引用 0
      • 夏影
        夏影 最后由 编辑

        ^.{14} 1F:.{8}:(?<name>[^:]+?):\w+?:(?<gauge>\w+?):(?<ch>\w+?):
        以上面的正则表达式为例,将量谱的第一组部分内容捕获至<gauge>组中

        1. 左侧补0:方法为padleft,例如 ${func:padleft(48,8):${gauge}}。其中48为字符’0’的ASCII码,这个function的意思是对捕获到的gauge向左用字符’0’补至8位。
        2. 处理为正确顺序: 当对量谱内容进行补0后,处理过的量谱字符串实际长度已经固定了,可以直接根据位置去提取需要的数据。
          从指定位置提取指定长度的方法为substring,例如${func:substring(4,2):${func:padleft(48,8):${gauge}}},意即从${func:padleft(48,8):${gauge}}的第四位开始提取长度为2的字符串。提取出来的为十六进制形式,例如0A
        3. 将16进制字符串转化为10进制数值的方法为hex2dec。

        以上方法可以嵌套使用,例如以下为库啵机工中的能量获取方法实例。
        库啵机工

        最后的问题:${func:xxx(yyy):zzz}这个仅限于用于调用Triggernometry自己的方法,写在这里只是告诉你嵌套调用时的格式。就像上面给出的例子中,红色部分即为xxx(yyy),蓝色部分即为zzz。并不意味着可以自己自定义函数。

        1 条回复 最后回复 回复 引用 0
        • First post
          Last post
        Powered by N(ode).B.B | Contributors
        粤ICP备20037988号