传奇脱机脚本编写完整教程,脱机登录打怪捡物挂机脚本制作方法

来源: 作者: 点击:
脱机脚本和服务端NPC脚本完全不同,脱机脚本是在客户端外部运行,用来控制角色自动登录、寻路、打怪、捡取物品、吃药回城的自动化指令,多用于挂机采集、刷怪练级,不同脱机工具语法存在差别,但基础逻辑是一致的。编写前要先分清脱机脚本和Mir2服务端脚本,服务端脚本是写在服务器里控制NPC怪物,脱机脚本是本地执行,操控游戏人物行为,二者不要混淆。

编写脱机脚本之前,需要准备对应的编辑器,普通记事本就可以写代码,推荐带行号显示的文本工具,方便查找错误行。每一款脱机工具都有专属指令集,指令不能跨工具混用,同一条指令在不同脱机软件里面写法不一样,拿到别人写好的脚本,先要确认脚本适配的工具,直接复制其他工具的代码大概率无法运行。保存文件编码一般使用ANSI,部分工具支持UTF8,编码错误会出现脚本读取失败、指令不识别。

脱机脚本整体结构分为多个模块,依次是登录模块、设置模块、寻路模块、战斗模块、捡物模块、药品保护模块、回城判断模块。整套脚本按照顺序循环执行,角色上线之后不断循环检测状态,根据条件执行对应的动作。

登录模块放在脚本最开头,作用填写账号、密码、选择服务器、选择角色。基础指令包含连接服务器、输入账号密码、选择角色。可以增加断线重连判断,检测掉线之后自动重新登录,是挂机稳定运行的基础。这部分可以加上延时指令,登录每一步增加等待时间,防止游戏界面加载还没完成就执行下一步操作,出现点击失效。延时单位大多是毫秒,页面切换速度慢就把延时调高,网络流畅可以适当降低延时。

基础设置模块,用来定义全局参数。设置血量低于多少使用红药,蓝量低于多少使用蓝药,设置药品名称,设置需要捡取的物品列表,过滤不需要捡的垃圾道具。这里可以设置捡物范围,设置打怪攻击距离,设置怪物优先击杀顺序,优先打BOSS,其次打普通小怪。物品过滤列表要严格填写物品完整名称,名称和游戏内不一致,会出现捡不到装备或者乱捡垃圾的情况。

寻路模块是脱机脚本难点,需要地图编号、目标坐标。寻路指令分为定点移动、地图跳转。定点移动就是填写地图代码X,Y坐标,角色自动跑到目标点位。跨地图需要先走到地图入口坐标,执行进入地图指令。编写寻路的时候,要增加障碍物判断,遇到墙体无法通行时停止前进,避免人物卡在原地反复移动。可以分段写路径,分成多个坐标点,一段一段移动,不要一次性写远距离坐标,远距离寻路容易迷路卡图。

战斗模块,核心逻辑是检测周围怪物,如果范围内存在怪物,移动到攻击距离,执行攻击指令,怪物死亡之后停止攻击,继续寻找下一只怪物。可以设置怪物过滤,避开不想打的怪,比如不攻击高伤害BOSS,防止角色被秒杀。战斗循环里面要持续检测自身血量,一旦血量低于回城线,立刻跳出打怪循环,执行回城流程。战斗指令里面可以设置技能,战士自动使用刺杀、烈火,法师自动释放雷电,道士自动施毒和召唤宝宝,技能释放可以增加冷却判断,没有到技能冷却时间不重复释放。

捡物模块,怪物死亡之后等待短暂延时,扫描地面物品,遍历物品列表,匹配预设捡取清单,符合清单的物品执行捡取指令。需要设置捡取距离,超过范围不去拾取,防止为捡一件装备跑太远引来大量怪物。增加背包检测,背包满了不再捡物,直接触发回城。捡物环节要增加过滤,关闭不需要的道具,不然背包很快被杂物占满。

药品保护模块,持续循环读取角色血量和蓝量,设置两级保护,低血量使用普通药水,危急血量使用强效药品。当血量达到回城阈值,停止打怪,停止捡物,执行回城逻辑。保护指令要持续循环检测,不能只检测一次。同时增加药品数量判断,背包药品数量不足,直接回城补给,避免药耗尽被怪物击杀。

回城补给模块,角色回到安全地图,找到NPC购买药品,清理背包垃圾物品,仓库存储装备。补给完成之后,再次执行寻路指令,回到挂机刷怪点位,重新开启打怪循环。这部分需要写清楚NPC对话指令,点击NPC,打开商店,购买指定数量药品,关闭对话窗口。

条件判断语句是脱机脚本的核心,常用判断有血量判断、蓝量判断、背包物品检测、地图坐标检测、怪物数量检测。满足条件执行A动作,不满足就执行B动作。判断语句一定要搭配跳转或者结束指令,不然会出现死循环,脚本卡死。

简单示例脚本基础逻辑,先登录,移动到挂机坐标,循环开始,检测周围怪物,有怪就攻击,没有怪物继续扫描。打怪过程持续检测血量,血量低于警戒值回城。怪物死亡后扫描地面物品,符合捡物列表就拾取。检测背包是否满,背包满回城存装备买药,补给完成回到挂机点继续循环。

编写脚本的步骤,第一步确定挂机地图,记录地图编号,记录挂机坐标、回城点坐标、NPC坐标。第二步整理捡物清单,确定要捡和过滤的物品。第三步规划药品消耗和保护血线。第四步分段写代码,先写登录和寻路,单独测试,确认人物可以正常跑到挂机点,再写战斗模块,单独测试打怪。接着写捡物、药品保护、回城补给。每写完一个模块就单独测试,全部模块调试成功之后合并成完整脚本。不要一次性写完整套脚本再测试,大量错误堆在一起很难排查。

调试脚本的时候,优先关闭自动循环,分步执行,观察每一条指令是否正常运行。常见问题,人物原地不动,大概率坐标错误、地图编号不对或者延时太短界面没加载完成。不捡装备,物品名称写错或者捡物范围设置过小。不会吃药,血量判断条件写错。反复卡在地图入口,寻路路径存在障碍物,坐标点位不对。掉线不会重连,缺少掉线状态检测指令。

编写脚本注意事项,不同工具指令写法不一样,不要直接复制其他工具的代码。坐标一定要在游戏内手动记录,不要估算坐标。设置合理延时,网络波动大的时候,延时设置过低,会出现指令执行错乱。脚本里面物品名称、地图名称,必须和游戏内显示完全一致,多一个空格都会失效。编写的时候增加日志输出,打开日志查看每一步执行情况,快速定位出错指令。挂机点位尽量选择怪物刷新分散、没有远程怪的区域,减少角色猝死概率。脚本加入异常处理,角色卡住不动,等待一段时间之后执行回城,防止长时间卡在地图里面。

长期挂机的脚本,需要增加日志记录,记录捡取装备数量、药品消耗,方便后续调整捡物清单和药品购买数量。可以增加防卡检测,持续检测坐标,一段时间坐标没有变动,判定角色卡住,自动回城重新跑图。不要在脚本里面加入复杂多层嵌套判断,嵌套过多容易逻辑混乱,出现异常跳转。修改脚本前备份原有脚本,调试出错可以直接恢复。

脱机脚本开发由简单到复杂,新手从定点挂机刷怪开始写,熟练基础指令,再增加跨地图、仓库存取、自动买卖、断线重连等高级功能。先学会单地图简单循环挂机脚本,掌握条件判断、延时、坐标移动、物品检测之后,再尝试写多地图轮换挂机脚本。