senglit 发表于 2020-12-26 12:46:04

Mudlet陆乘风破阵机器人基础版

本帖最后由 senglit 于 2020-12-28 12:25 PM 编辑

发个自制Mudlet破阵简陋版机器人,请高人指点。感谢Vingi,叶云在调试过程中给的帮助。
说明:
1. 这个机器人只做了最简单最基本的动作,主要包括接任务和走方位。其它的高级功能自动找地图什么的都没有。
2. 为了方便大家根据自己的需求来修改,我没有导出包,而是把trigger一个个都拷贝出来,也给用其它客户端的同学做个思路参考。
3. 大家可以自己做个alias,把wirld weapon,jiali max, exert powerup,zhanbu -maze等破阵前的准备工作做了
4. “可以开始”、“陆乘风CD”两个Trigger初始状态为关闭,其它为开启
5. 所有的Pattern类型都是perl正则

以下为Trigger

Triger Name:
        接任务
Pattern:
        ^(> )?你对陆乘风道:“听闻近来有人冒名桃花岛弟子在(\S+)的(\S+)布下迷阵行恶,我愿代劳除去此獠。”$
        ^(> )?你对(\S+)道:“听闻近来有人冒名(\S+)子布下迷阵行恶,我愿代劳除去此獠。$
Script:
        job_pozhen_possible_dir = {1,1,1,1,1,1,1,1}
        job_pozhen_possible_dir_ptr = 1
        job_pozhen_dae_cname = "未确定"
        enableTrigger("可以开始")
        enableTrigger("陆乘风CD")
        if matches ~= "陆乘风" then
          JobInfoConsole:echo("陆乘风: "..matches.." "..matches.."\n")
        end
备注:
        JobInfoConsole是我定义的小窗口,用来记录job信息的,大家可以根据自己的喜好改成自己的记录方法,要是记性好,那么不用记录也行。下同。

Triger Name:
        可以开始
Pattern:
        ^(> )?陆乘风对着你点了点头。
        ^(http)(.*)
Script:
        disableTrigger("可以开始")
        disableTrigger("陆乘风CD")
        if matches == "http" then
          JobInfoConsole:echo("陆乘风: "..matches.."\n")
        end
备注:
        该Trigger初始状态为关闭

Triger Name:
        陆乘风CD
Pattern:
        ^(> )?陆乘风说道:「你请稍等片刻再来吧。」
Script:
        disableTrigger("可以开始")
        disableTrigger("陆乘风CD")
        JobInfoConsole:echo("陆乘风 -- CD\n")
备注:
        该Trigger初始状态为关闭
        这个机器人在CD期间什么也不干,大家可以根据自己情况把这里改成吃饭喝水泡妞大保健等操作

Triger Name:
        方位分析
Pattern:
        ^(树|竹|石)(\S+)(树|竹|石)$
Script:
        local str=matches
        local nomeanword={"树","竹","石"}
        local dir={"nw","n","ne","w","e","sw","s","se"}
        local fmt
        for i = 1, utf8.len(str) do
          if not table.contains(nomeanword,utf8.sub(str,i,i)) then
          moveCursor(0,getLineNumber())
          selectSection(i-1, 1)
          fmt = getTextFormat()
          if not fmt["italic"] then
              job_pozhen_possible_dir = 0
          end
          job_pozhen_possible_dir_ptr = job_pozhen_possible_dir_ptr + 1
          end
        end
        if job_pozhen_possible_dir_ptr > 8 then
          echo("\n"..table.concat(job_pozhen_possible_dir,", ").."\n")
          for j = 1, 8 do
          if job_pozhen_possible_dir == 1 then
              job_pozhen_try_dir = j
              send(dir)
              break
          end
          end
        end

Triger Name:
        破了一层迷宫
Pattern:
        ^(> )?这里的迷阵在你眼中如同儿戏一般。$
Script:
        job_pozhen_possible_dir = {1,1,1,1,1,1,1,1}
        job_pozhen_possible_dir_ptr = 1

Triger Name:
        走错方向
Pattern:
        ^(> )?你尝试破阵,可惜选择了错误的方向,损失了一些气血和内力。$
Script:
        job_pozhen_possible_dir = 0
        job_pozhen_possible_dir_ptr = 1

Triger Name:
        见到大恶
Pattern:
        ^    大 恶 (\S+)\((.*)\)
Script:
        job_pozhen_dae_cname = matches
        local enemy = string.lower(matches)
        send("kill "..enemy)

Triger Name:
        杀死大恶
Pattern:
        ^(\S+)道:想不到我最终还是失败了!哎!$
Script:
        if matches == job_pozhen_dae_cname then
          send("e")
        end

richardgong 发表于 2022-4-4 16:02:12

大牛

kaiyaaa 发表于 2022-9-10 18:18:48

mark

sister 发表于 2022-9-27 11:50:42

fmt = getTextFormat()
if not fmt["italic"] then
全篇精华处

kumarajivar 发表于 2023-8-25 15:20:56

我好像用不起来,有人试过吗?

kumarajivar 发表于 2023-9-9 22:59:52

可以用了是我自己没弄好
页: [1]
查看完整版本: Mudlet陆乘风破阵机器人基础版