你这段脚本的问题集中在几个点上:NPC交互前没有走到有效对话距离、物品检测语法用错、跨地图移动被拆成普通坐标移动、以及对话触发到选项选择之间的延迟不够。下面按你遇到的四个报错逐一拆解。
找不到传送石的根本原因是对交互距离的判断缺失。脚本里先执行了随机移动[3,336,336],紧接着就找到NPC[传送石,3,339,339]并对话。随机移动的落点不一定在336,336,可能偏出一到两格,而NPC对话触发通常要求角色站在NPC相邻格内,超出距离引擎就会报找不到。更稳妥的做法是在随机移动之后补一条走到附近[3,339,339],确保角色实际站到传送石的可交互范围内再执行对话。找到NPC这条命令本身只做坐标检索,不负责把角色拉过去,角色不到位它就会失败。
找不到元宝牧场的核心在于你把它当成了同一张地图内的坐标来走。元宝牧场虽然视觉上在土城范围内,但它是一张独立地图,需要通过349,385这个门点触发地图切换,而不是在土城地图内直接边打边走到349,385就算进去了。你脚本里走到349,385之后直接执行开启全局脚本并进入战斗循环,跳过了地图切换这一步。正确的逻辑应该是走到门点[3,349,385],让引擎自动触发地图切换,切换完成后再在新的地图编号下执行边打边走到。传奇脚本里的移动命令区分走到和走到门点,跨图必须用门点触发,用普通走到只会停在门坐标上不切图。
选择传送内容不存在和你等待时间长短没有直接关系,加了3000毫秒一样报错,说明问题不在延迟。你脚本里的选择[元宝牧场]是在对话[传送石]之后直接执行的,但传送石的对话脚本里是否真的有“元宝牧场”这个选项,需要去服务端的NPC脚本文件里核对。如果传送石的对话菜单里选项名称叫“元宝之地”或者别的名字,你脚本里写元宝牧场就匹配不上。另外,部分引擎的选择命令要求选项名称与服务端脚本里的文字完全一致,多一个字少一个字都会报不存在。去D:\MirServer\Mir200\Envir\Market_Def目录下找到传送石对应的脚本文档,确认对话菜单里选项的确切文字,把选择后面的名称改成完全一致的版本。
明明背包里有修复神水却提示找不到,问题出在你用的检测语法上。你脚本里写的是如果[修复神水][数量]<1,这种写法在部分引擎里不被识别,或者只能检测身上佩戴的物品而不能检测背包里的消耗品。传奇脚本里检测背包物品的标准命令是CHECKITEM 物品名称 数量,比如CHECKITEM 修复神水 1就是检测背包里是否有至少一个修复神水。如果引擎支持,可以用CHECKITEM 修复神水 <1来判断数量是否小于1。还有一个容易忽略的点:物品名称必须与服务端物品数据库里的名称完全一致,包括括号和空格。你脚本里写的“修复神水”如果数据库里实际名称是“修复神水(小)”或者带别的后缀,检测也会失败。先去物品数据库里确认修复神水的准确名称。
执行战斗命令一直提示计算路径错误,原因是你把跨地图的长距离移动全部用边打边走到来处理。边打边走到这个命令的寻路能力有限,它适合在同一张地图内做短距离的点到点移动,跨地图或者目标坐标在障碍物另一侧时,寻路算法算不出有效路线就会报错。你战斗模块里的六个边打边走到全部是在土城坐标下写的,如果角色当时不在土城,或者这些坐标点之间存在不可通行的障碍物,每一条都会报路径计算错误。更稳定的做法是先把跨地图移动拆开:用走到门点完成地图切换,进入目标地图后再用边打边走到在有限范围内循环。战斗路线也不建议写六个固定点机械循环,改成小范围巡逻模式,比如在目标区域设置三到四个点做三角形或矩形巡逻,每个点之间距离控制在五到八格以内,寻路成功率会高很多。
回城模块有一个隐藏问题需要一并改掉。你写的是如果[3,330,330][距离]>200那么使用[回城卷]。这个距离判断本身没问题,但回城卷使用之后如果没有等待足够时间,脚本会立刻执行下面的总控逻辑,此时角色还在传送动画中,物品检测和坐标判断都会出错。回城卷使用后加一条等待[3000]毫秒,确保角色实际回到安全区再继续执行。另外,总控里检测修复神水数量的语句同样需要改成CHECKITEM格式,否则回城后依然会误判数量不足然后跳去购买,形成循环。
商铺购买[修复神水]这条命令也存在隐患。部分引擎的商铺购买命令要求指定数量,不写数量默认只买一个,而你总控里的判断是小于1就跳过来买,买完一个回到挂机流程,下一次全局脚本触发时如果修复神水已经用掉,又会跳回来。建议在购买命令后面加一条买够[修复神水]5个,一次性补到安全数量,减少来回跳转的频率。
全局脚本的触发频率也需要检查。全局脚本如果设置成每几百毫秒执行一次,修复神水的检测会高频率重复运行,频繁触发物品检测和跳转指令,容易造成脚本卡顿甚至卡死。把全局脚本的触发间隔调到合理范围,修复神水检测不需要每秒跑好几次,一两秒检测一次足够。
把上面几点改完,脚本的稳定性会有明显提升。核心逻辑不变,调整的是坐标验证、物品检测语法、跨图方式、路径拆分和等待时间。NPC对话前确保角色到位,跨图用门点触发,物品检测用标准命令,长路径拆短,回城后加等待,这几个环节做到位,报错基本能消掉。

