传奇登录脚本逻辑解析:CHECKDC判定与SETRANKLEVELNAME实战写法

来源: 作者: 点击:
[@wachenhao] 这段脚本属于典型的人物登录/上线触发脚本,一般挂在 QManage.txt 或 Login.txt 里,用于角色进入游戏瞬间做属性判定并自动修改称号。核心逻辑是检测角色破坏力(CHECKDC)是否大于 200,达标则通过 SETRANKLEVELNAME 强制写入【盖世战神】称号并中断后续判断。

一、脚本触发位置与执行顺序
登录脚本优先在 QManage.txt 中执行,引擎按从上到下顺序逐条读取。[@wachenhao] 作为标签,需要在 QManage 里用 #CALL 或直接在登录段引用,否则永远不会触发。部分引擎要求登录段标签固定为 [@Login] 或 [@OnLogin],自定义标签必须显式调用。

二、CHECKDC 判定机制
CHECKDC > 200 检测角色当前破坏力数值,破坏力由装备属性、内功、勋章、宝石、BUFF 叠加而成。判定符号 > 表示大于,= 表示等于,< 表示小于。数值必须为整数,带小数或文本直接报错。判定条件写在 #IF 下,#ACT 下执行通过后的动作。

三、SETRANKLEVELNAME 命令详解
SETRANKLEVELNAME %s\【盖世战神】
• %s 为变量占位符,代表当前角色名,引擎自动替换为实际名称

• \ 为分隔符,部分引擎用 | 或 #,需对照命令手册

• 【盖世战神】为称号文本,显示在角色头顶、排行榜、聊天前缀

• 命令执行后直接覆盖原有称号,不会叠加

• BREAK 用于中断后续判断,防止引擎继续向下执行其他 #IF 段

四、完整标准写法示例
[@wachenhao]
IF

CHECKDC > 200
ACT

SETRANKLEVELNAME %s\【盖世战神】
BREAK
ELSEACT

SETRANKLEVELNAME %s\【普通战士】
BREAK

五、常见错误与排查
1. 标签未调用:[@wachenhao] 写在 QManage 但无 #CALL [文件路径]@wachenhao,登录不触发
2. 分隔符错误:部分引擎 SETRANKLEVELNAME 用 | 分隔,用 \ 直接失效
3. 变量缺失:漏写 %s 导致称号显示为空或引擎报错
4. 编码问题:脚本文件非 ANSI 编码,中文标签【盖世战神】解析失败
5. BREAK 位置错误:BREAK 写在 #IF 段外,导致条件判断后继续执行后续逻辑
6. 判定数值溢出:CHECKDC 检测值超出引擎上限,判定恒为假

六、引擎差异对照
• GOM/GEE:SETRANKLEVELNAME %s|称号,支持 BREAK

• Hero:SETRANKLEVELNAME %s\称号,BREAK 有效

• LEG:SETRANKLEVELNAME %s#称号,需配合 #ENDIF

• Blue:SETRANKLEVELNAME %s-称号,不支持 BREAK,用 #EXIT 替代

七、调试方法
在 #ACT 段加入 SENDMSG 6 检测破坏力:%DC% 输出当前破坏力数值,确认 CHECKDC 判定是否生效。用记事本打开脚本,确认编码为 ANSI,行尾无隐藏空格。启动 M2 后观察 Log\ScriptError.log 是否有语法报错。

八、扩展应用
同类逻辑可用于检测魔法(CHECKMC)、道术(CHECKSC)、等级(CHECKLEVEL)、内功(CHECKINNERLEVEL)、转生(CHECKRELEVEL)。通过多层 #IF 判定实现阶梯称号:破坏力 0-200 为战士,201-500 为战将,501 以上为战神。配合 CHECKITEM 检测特定装备,实现穿戴专属装备自动获得称号。

登录脚本是服务端最基础的触发机制,CHECKDC 与 SETRANKLEVELNAME 的组合只是冰山一角,引擎说明文档里的每个命令参数都对应实际运行逻辑,对照手册逐条验证才能避免脚本错误。