用户反馈脚本出现死循环错误,触发点为NPC:RobotManage的@开始登录标签。错误日志如下:
[2018-11-28 下午 01:01:29] [脚本死循环] NPC:RobotManage 位置:0(0:0) 命令:GOTO @开始登录
死循环原因分析
跳转逻辑闭环:
[@假人登录]中若条件满足(假人开关开启且未达上限),会执行GOTO @开始登录。
@开始登录标签内无论执行哪个分支,最终都会触发DUMMYLOGON(假人登录)并BREAK(跳出当前段)。
问题在于: 执行完@开始登录后没有更新假人计数或状态,导致下次触发@假人登录时条件再次满足,形成循环跳转。
触发机制漏洞:
假设@假人登录被定时器(如每分钟1次)调用,每次触发都会尝试登录假人。
若脚本未更新全局假人计数(如递增计数变量),CHECKDUMMYCOUNT < <$GLOBAL(JRDLL)>会永远成立,循环永不停止。
脚本冗余问题:
@开始登录中有重复的#ACT标签(如RANDOM 100分支),可能引发解析错误。
最后一个分支无#IF条件,成为“兜底执行项”,容易失控。
解决方案(修复死循环)
修改后的安全脚本:
[@假人登录]
IF
CHECKVAR GLOBAL JRKG = 开
CHECKDUMMYCOUNT < <$GLOBAL(JRDLL)>
ACT
CALCVAR GLOBAL JRDLL_COUNT + 1 ; 递增假人计数
SAVEVAR GLOBAL JRDLL_COUNT ; 保存变量
CALL @开始登录 ; 调用登录逻辑(非跳转!)
BREAK
[@开始登录]
...(原有登录逻辑,但修正以下问题)...
IF
RANDOM 100
ACT ; 删除多余的#ACT
MOVR P0 20
INC P0 640
MOVR P9 20
INC P9 621
DUMMYLOGON <GLOBAL(VBQC)> <STR(P0)> <$STR(P9)> 1
BREAK
IF
ACT
此处添加#ELSEACT更安全,避免无条件执行
MOVR P0 20
INC P0 320
MOVR P9 20
INC P9 320
DUMMYLOGON <GLOBAL(VMZC)> <STR(P0)> <$STR(P9)> 1
BREAK
关键修改点:
用CALCVAR更新计数:
每次登录后递增JRDLL_COUNT变量,确保下次检查CHECKDUMMYCOUNT时可能条件不成立。
CALL替代GOTO:
CALL调用后会返回原位置继续执行,避免形成闭环。
清理语法错误:
删除重复的#ACT标签,最后一个分支改为#ELSEACT明确逻辑。
HERO引擎添加假人全流程
若需从头添加假人系统,按以下步骤操作:
配置假人开关和数量
在QManage.txt(全局脚本)中初始化变量:
[@Login]
IF
ACT
VAR GLOBAL JRKG 开 ; 假人开关
VAR GLOBAL JRDLL 50 ; 假人总数上限
VAR GLOBAL JRDLL_COUNT 0 ; 当前假人数
SAVEVAR GLOBAL JRDLL JRDLL_COUNT
创建假人登录脚本
在RobotManage.txt(机器人管理)中部署:
定时器触发(示例:每30秒登录一批)
[@DummyLoginTimer]
IF
ACT
GOTO @假人登录
[@假人登录]
IF
CHECKVAR GLOBAL JRKG = 开
CHECKDUMMYCOUNT < <$GLOBAL(JRDLL)>
ACT
CALCVAR GLOBAL JRDLL_COUNT + 1
SAVEVAR GLOBAL JRDLL_COUNT
GOTO @开始登录
BREAK
[@开始登录]
...(参考前文修正后的登录逻辑)...
假人行为控制(移动/说话)
在AutoRunRobot.txt中设置假人活动:
AutoRun NPC T5 30 @DummyAction ; 每30秒触发
[@DummyAction]
IF
IsDummy ; 检查是否为假人
RANDOM 3 ; 随机概率
ACT
MOVR P0 100 ; 随机移动
MOVR P1 100
MAPMOVE <Map> <STR(P0)> <$STR(P1)>
BREAK
IF
IsDummy
RANDOM 5 ; 20%概率说话
ACT
SENDMSG 0 假人[<$USERNAME>]:兄弟们一起攻沙啊!
BREAK
避坑指南
死循环预防:
所有跳转(GOTO/CALL)后必须更新状态变量。
用#ELSEACT替代无条件的#ACT分支。
假人数量控制:
通过CHECKDUMMYCOUNT和全局变量双重验证,避免超限。
引擎兼容性:
HERO引擎需确认DUMMYLOGON命令支持的地图编号格式(如3开头的数字)。
传奇脚本死循环详解与假人添加指南,HERO引擎必看
来源:
作者:
点击:

