传奇脚本人物来回跑死循环:坐标/条件/GOTO三种修法

来源: 作者: 点击:
人物在两个点之间反复折返、原地转圈、卡墙后乱窜,分两端:一端是服务端 NPC/机器人脚本里 GOTO 跳不出去,一端是电脑/手机按键脚本寻路逻辑坏了。先停脚本再查,别让号在怪堆里空跑一晚上。

先判现象
• A 点传 B 点、B 点又传 A 点,永不停:脚本互跳没终止条件。

• 卡墙角左右横跳:坐标不可走、障碍物没避开、寻路模式抽风。

• 上线就被传回安全区再跑出去再传回:MapInfo 或上线触发(QManage/QFunction)里写了强制定点/归城。

• M2 弹“脚本死循环 / ScriptGotoCountLimit exceeded / GOTO 超过上限”:服务端脚本逻辑闭环。

服务端脚本(QuestDiary / Market_Def / Robot / QFunction)修法
1. 看 M2 日志:Log\ScriptLog.txt 或 M2 弹窗会写“NPC:XXX 文件:QuestDiary\某目录\某.txt 行号:XX”,直接进那个文件。
2. 删无条件跳自己:
错:[@Main] #ACT SENDMSG5 跑 GOTO @Main
对:加条件、加计数器、到次数 BREAK。
3. A 跳 B、B 跳 A 的互锁,用人物变量做一次性开关:
进过一次置 Human 变量=1,下次 #IF EQUAL 人类变量 1 就走 #ELSEACT BREAK,不再互跳。
4. 来回跑点别用裸 GOTO,用 DELAYGOTO 加延迟:
MAPMOVE 3 320 330
DELAYGOTO 1000 @去B点
[@去B点]
MAPMOVE 3 330 320
DELAYGOTO 1000 @Main
再配计数器:H$跑次数 大于 500 就 BREAK。
5. 坐标别写错:A/B 两点不能相同,不能超出地图宽高,不能落在墙里。两点间距建议 >5 格,用 MapInfo.txt 核对地图尺寸。
6. 装备回收/经验发放类最容易死循环:背包没东西还一直 TAKE 再 GOTO 自己。入口先 #IF CHECKITEM 某物 1,没有就 #ELSEACT BREAK。
7. 临时压报错(治标):Mir200\!Setup.txt 里 ScriptGotoCountLimit=10 改 10000~50000,M2 选项里“脚本循环次数”从 20 提到 50~100,重启 M2。但逻辑不修,调再大也会把 CPU 吃满。

电脑按键/脱机/云手机挂机脚本修法
• 角色乱跑:挂机范围画太大、打怪半径太长、找怪条件太严,怪不在范围里就一直移动找怪。把挂机范围缩到 8~15 格,选怪密、路宽、没拐角的点。

• 卡墙转圈:关“智能寻路”,开普通寻路;脚本里加障碍物检测,移动失败 3 次切备用坐标或直接回城。

• 两点太近乱晃:A/B 节点距离 <10 格,脚本会像抽风一样折返,重新录点,节点间留空地。

• 速度太快:移动延迟设 800~1500ms,别 100ms 点一次,跑得比人快就被判定异常、也被自己寻路搞死。

• 分辨率/缩放不对:窗口模式、DPI 缩放、刘海屏、悬浮窗遮挡,都会让“点 NPC/点地面”点空,角色瞎跑。固定分辨率、游戏前台、别最小化。

• 多脚本冲突:自动捡物、自动买药、自动回城、自动跑图同时开,条件打架。先只开“自动打怪+自动喝药”,稳了再加别的。

上线就被传回/转圈传送
查 MapInfo.txt 里土城/盟重是不是加了强制定点、坐标锁定、边界回传;查 QManage [@Login]、Robot 里的“假人归城/全员归集/上线回安全区”。把“每次上线都归位”改成“仅首次创建角色/死亡回城才归位”,用变量记一次,别每帧检测。

最快排错顺序
1. 停脚本/小退角色,别让号继续空跑。
2. 看 M2 红错 → 定位文件行号。
3. 查 GOTO / DELAYGOTO / CALL 有没有跳自己、互跳、没 BREAK。
4. 查 MAPMOVE 坐标是不是相同/出界/在墙里。
5. 查变量有没有初始化、有没有重置。
6. 改完备份原文件,重载 NPC / 重载 QFunction / 重启 M2。
7. 客户端脚本先关智能寻路、缩范围、加延迟、单功能测试。

最小可用“来回跑”模板思路
• 用计数器:跑 1 次 INC,跑够 N 次 BREAK。

• 用延迟:别瞬跳,DELAYGOTO 1000~2000。

• 用条件退出:血量低/蓝量低/背包满/到点停止/按某热键停止。

• 用不同可走坐标:A 点 (330,320) B 点 (360,340),中间没墙没 NPC。

• 别在 [@Login] 里再触发上线事件,别在经验事件里再发经验事件,别在回收里再调回收。

改参数只是让引擎不弹窗,真死循环会把服拖卡。坐标错、条件漏、GOTO 无出口,这三样改掉,来回跑脚本就稳了;客户端挂机脚本则是范围、寻路、延迟、分辨率四样没调好才会原地发疯。