|  | 
 
| 本帖最后由 teleck 于 2024-6-3 01:34 PM 编辑 
 # 前言
 
 BotStep 是一个API,它允许你插入一个机器人行走步骤。具体在使用Paotin++进入xkx MUD后中输入:
 即可看到如下解释信息:
 复制代码## 别名 path.BotStep <机器人名称> [<机器人参数> ...] 
    插入一个机器人行走步骤。 
    接到本指令时,PaoTin++ 会进行如下处理: 
      - 1: 暂停路径录制; 
      - 2: 在路径中插入一个机器人步骤; 
      - 3: 自动调用机器人行走; 
      - 4: 机器人行走完成后,自动恢复录制。 
    按照约定,符合本规范的机器人必须发射以下事件之一: 
      - map/walk/continue: 代表机器人成功结束运行,通过该区域 
      - map/walk/failed:   代表机器人遇到了无法逾越的障碍,放弃行走 
    本命令会监听以上事件并做相应处理。
 # 应用示例
 下方代码,是具体在北侠mud里,主要依赖BotStep实现的华山巡山任务的一个机器片段:
 复制代码#var job-xunshan {true};
#alias {map.XunShan} { 
    #local cmd {%1}; 
    $cmd;
    #if { @isTrue{$job-xunshan} } {
        #action {^你在%*巡弋,尚未发现敌踪。}{
            
            #delay {2} {event.Emit map/walk/continue map.XunShan;
            okLog 该继续了。;};
        };
        #action {^你的动作还没有完成,不能移动。}{
            okLog %1 没动。;
            #delay {5} {busy.Wait {okLog %1 没走成,再来。;%1}};  
        };
    };
    #else {
        event.Emit map/walk/continue map.XunShan;
    };
};
#alias {bs} {path.BotStep XunShan};
 这段代码,定义了两个别名bs和map.XunShan。
 就这个两个别名分别说明如下:
 1. bs 是为了在录制路径时候使用方便而使用的,根据上文“解释”,XunShan是机器人的名称。
 2. map.XunShan 是BotStep需要的别名,必须以“map.”开头,并在其中通过:
 
 复制代码   event.Emit map/walk/continue map.XunShan
或者:
 
 复制代码   event.Emit map/walk/failed map.XunShan
 来实现具体机器人的完成动作。
 
 假设,代码是按照paotin的玩家自定义模块要求,在一个var/plugins/XunShan.tin的文件里。
 使用这个机器的时候,按如下步奏:
 1. LM XunShan
 2. 在华山你想要的位置开始,点击屏幕录制路径或者用“path.Trace"指令开始路径录制;
 3. 在命令行中输入”bs“,会出现如下交互信息:
 
 复制代码   已经暂停路径录制,将会在机器人运行结束后自动继续。 取消录制请使用 {path.Cancel},完成录制请使用 {path.Finish}。
 4. 游戏里出现“你在xxx巡弋,尚未发现敌踪”这样的信息后,触发机器人行走完成事件“map/walk/continue”,并出现相应的提示。
 5. 在不需要机器人行走的时候,输入正常的"n s e w"方向即可,路径会正常录制。
 6. 第3步、第5步循环使用,直至路径录制完成(path.Finsih,或者点击屏幕上的相应位置)。
 
 录制完的路径,会保存在“var/data/map-path.tin"文件中,内容如:
 
 复制代码   {华山的客厅-华山的华山脚下} {XunShan/n;XunShan/n;略...}
 7. 使用的话,执行:
 
 8. 补充说明:具体做机器的时候还需要再加入泼皮拦路之类的因素和相关处理,这里就不展开写了。
 
 
 
 | 
 |