北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 45|回复: 3

北大侠客行Vscode版-js机器人示例讲解-自动记录路径

[复制链接]
发表于 前天 10:17 PM | 显示全部楼层 |阅读模式
本帖最后由 wendaokoujin 于 2025-5-4 10:18 PM 编辑

提一个场景,比如慕容任务,比如去 泉州-山路 找慕容贼人
1. 逍遥游从苏州-泉州中心
2. 查看地图 lm 山路
3. 手动走到山路和山路附近找到贼人,然后开打
4. 打完收工手动走路到泉州中心
5. 逍遥游从泉州中心-苏州交任务

现在实现一个机器人脚本,在第3步实现启动录制路径,也就从泉州中心去找贼人的所有路径都记录下来,然后杀完后再通过反转路径自动返回到泉州中心,
这样是可以实现4,5步骤的全自动。当然要实现自动还需要一些辅助的代码。
以下分享的只是记录路径的一个类。
这个机器人可以用于很多地方。
  1. class Recordmap {
  2.     //动态记录地图机器人
  3.     constructor(api, sys) {
  4.         this.api = api;
  5.         this.sys = sys;
  6.         this.init();
  7.     }
  8.     allDirections = [
  9.         's', 'south', 'n', 'north', 'w', 'west', 'e', 'east',
  10.         'sw', 'southwest', 'se', 'southeast', 'nw', 'northwest',
  11.         'ne', 'northeast', 'sd', 'southdown', 'su', 'southup',
  12.         'nd', 'northdown', 'nu', 'northup', 'wd', 'westdown',
  13.         'wu', 'westup', 'ed', 'eastdown', 'eu', 'eastup',
  14.         'd', 'down', 'u', 'up', 'out', 'enter'
  15.     ]
  16.     init() {
  17.         let self = this;
  18.         //假如其它地方已经定义了,那就需要把一个回调函数赋值给onSend
  19.         this.api.onSend = function (cmd) {
  20.             self.api.echo('记录地图路径:' + cmd);
  21.             if (self.vars.start) {
  22.                 if (self.allDirections.includes(cmd)) {
  23.                     self.vars.path.push(cmd);
  24.                     self.api.echo('记录地图路径:' + self.getPath());
  25.                 }
  26.             }
  27.         }
  28.     }
  29.     vars = {
  30.         start: false,
  31.         path: []
  32.     }
  33.     start() {
  34.         this.vars.path = [];
  35.         this.vars.start = true;
  36.         this.api.echo('开始记录地图路径');
  37.     }
  38.     end() {
  39.         this.vars.start = false;
  40.         this.api.echo('结束记录地图路径');
  41.     }
  42.     getPath() {
  43.         return this.vars.path.join(';');
  44.     }
  45.     getPathReverse() {
  46.         return this.sys.reversePath(this.getPath());
  47.     }
  48. }

  49. module.exports = Recordmap;
复制代码
实现的基本原理是:
1. 通过onSend 监控所有输入的指令
2. 有一个方向的指令数组,里面包含了东南西北等全指令
3. 如果输入的指令是在这个方向数组里的一个指令,就把指令记录到一个path数组
4. 到了特定的地方后利用 reversePath 函数把路径反转,再走一遍就回到起点了


北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 前天 10:19 PM | 显示全部楼层
强悍,支持
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 昨天 08:53 AM | 显示全部楼层
那返程不是会多走很多路?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 昨天 09:31 AM | 显示全部楼层
kumarajivar 发表于 2025-5-5 08:53 AM
那返程不是会多走很多路?

会,但是不影响,从中心出发到找到再多也多不了多少
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2025-5-6 02:57 AM , Processed in 0.010004 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表