|
本帖最后由 wendaokoujin 于 2025-5-4 10:18 PM 编辑
提一个场景,比如慕容任务,比如去 泉州-山路 找慕容贼人
1. 逍遥游从苏州-泉州中心
2. 查看地图 lm 山路
3. 手动走到山路和山路附近找到贼人,然后开打
4. 打完收工手动走路到泉州中心
5. 逍遥游从泉州中心-苏州交任务
现在实现一个机器人脚本,在第3步实现启动录制路径,也就从泉州中心去找贼人的所有路径都记录下来,然后杀完后再通过反转路径自动返回到泉州中心,
这样是可以实现4,5步骤的全自动。当然要实现自动还需要一些辅助的代码。
以下分享的只是记录路径的一个类。
这个机器人可以用于很多地方。
- class Recordmap {
- //动态记录地图机器人
- constructor(api, sys) {
- this.api = api;
- this.sys = sys;
- this.init();
- }
- allDirections = [
- 's', 'south', 'n', 'north', 'w', 'west', 'e', 'east',
- 'sw', 'southwest', 'se', 'southeast', 'nw', 'northwest',
- 'ne', 'northeast', 'sd', 'southdown', 'su', 'southup',
- 'nd', 'northdown', 'nu', 'northup', 'wd', 'westdown',
- 'wu', 'westup', 'ed', 'eastdown', 'eu', 'eastup',
- 'd', 'down', 'u', 'up', 'out', 'enter'
- ]
- init() {
- let self = this;
- //假如其它地方已经定义了,那就需要把一个回调函数赋值给onSend
- this.api.onSend = function (cmd) {
- self.api.echo('记录地图路径:' + cmd);
- if (self.vars.start) {
- if (self.allDirections.includes(cmd)) {
- self.vars.path.push(cmd);
- self.api.echo('记录地图路径:' + self.getPath());
- }
- }
- }
- }
- vars = {
- start: false,
- path: []
- }
- start() {
- this.vars.path = [];
- this.vars.start = true;
- this.api.echo('开始记录地图路径');
- }
- end() {
- this.vars.start = false;
- this.api.echo('结束记录地图路径');
- }
- getPath() {
- return this.vars.path.join(';');
- }
- getPathReverse() {
- return this.sys.reversePath(this.getPath());
- }
- }
- module.exports = Recordmap;
复制代码 实现的基本原理是:
1. 通过onSend 监控所有输入的指令
2. 有一个方向的指令数组,里面包含了东南西北等全指令
3. 如果输入的指令是在这个方向数组里的一个指令,就把指令记录到一个path数组
4. 到了特定的地方后利用 reversePath 函数把路径反转,再走一遍就回到起点了
|
|