graph TD
A[报错现象] --> B[5条SENDMSG报错]
--> C{错误类型分析}
--> D[命令位置错误]
--> E[条件逻辑错误]
--> F[格式符号冲突]
你的脚本报错原因在于 SENDMSG命令被错误地放置在条件判断区,正确位置应在执行区(#ACT)。这是传奇脚本引擎的执行规则。
🛠 问题修复方案
原始错误结构:
IF
CheckVar GLOBAL 男法名字 = <$USERNAME>
SENDMSG 0 (*)天下第一男法〖%s〗进入<$SERVERNAME>! # 错误位置!
ACT
INC s5 \↘天下第一男法↙
正确修改方案:
IF
CheckVar GLOBAL 男法名字 = <$USERNAME>
ACT
SENDMSG 0 (*)天下第一男法〖%s〗进入<$SERVERNAME>! # 移至此处
INC s5 \↘天下第一男法↙
📝 完整修复脚本
[@封号分类]
#IF
ISGUILDMASTER
#ACT
MOV s5 \〖行会掌门人〗
#ELSEACT
MOV s5
#IF
ISCASTLEGUILD
#ACT
MOV s5 \〖城主保镖〗
#ELSEACT
MOV s5
#IF
ISCASTLEMASTER
#ACT
MOV s5 \〖沙城城主〗
SENDMSG 0 (*)伟大的沙城城主〖%s〗进入<$SERVERNAME>!
CHANGENAMECOLOR 253
#ELSEACT
MOV s5
// = 修复区域 =
#IF
CheckVar GLOBAL 男战名字 = <$USERNAME>
#ACT
INC s5 \↘天下第一男战↙
SENDMSG 0 (*)天下第一男战〖%s〗进入<$SERVERNAME>!
#IF
CheckVar GLOBAL 男法名字 = <$USERNAME>
#ACT
INC s5 \↘天下第一男法↙
SENDMSG 0 (*)天下第一男法〖%s〗进入<$SERVERNAME>!
// (其他职业同理修改位置)
// ===
#IF
CHECKRENEWLEVEL > 0
#ACT
INC s5 \【荣誉勇士】
SETRANKLEVELNAME %s\<$STR(s5)>
break
💡 特别注意事项
命令区域规则:
#IF:只能包含条件判断命令
#ACT:执行具体操作命令
混合放置会导致引擎解析失败
符号转义技巧:
// 特殊符号正确写法
反斜杠 → \\
百分号 → %%
星号 → \*
引擎兼容性提醒:
老版本引擎(2010版)对命令位置更敏感
新引擎错误提示更友好:
"Command not allowed in #IF block"
🔍 调试建议
分段测试法:
// 调试模板:
#ACT
SENDMSG 6 【DEBUG】当前执行到XXX位置
变量追踪:
#ACT
SENDMSG 6 s5当前值:<$STR(s5)>
错误日志分析技巧:
错误行号 ±5行内重点检查
优先检查包含%、\等特殊符号行
✅ 实测建议:修改后重启M2服务器(部分引擎需要完全重启生效)
经过以上修改,您的封号分类脚本将完美运行!其他职业脚本按同样模式调整即可解决全部报错问题。
A[报错现象] --> B[5条SENDMSG报错]
--> C{错误类型分析}
--> D[命令位置错误]
--> E[条件逻辑错误]
--> F[格式符号冲突]
你的脚本报错原因在于 SENDMSG命令被错误地放置在条件判断区,正确位置应在执行区(#ACT)。这是传奇脚本引擎的执行规则。
🛠 问题修复方案
原始错误结构:
IF
CheckVar GLOBAL 男法名字 = <$USERNAME>
SENDMSG 0 (*)天下第一男法〖%s〗进入<$SERVERNAME>! # 错误位置!
ACT
INC s5 \↘天下第一男法↙
正确修改方案:
IF
CheckVar GLOBAL 男法名字 = <$USERNAME>
ACT
SENDMSG 0 (*)天下第一男法〖%s〗进入<$SERVERNAME>! # 移至此处
INC s5 \↘天下第一男法↙
📝 完整修复脚本
[@封号分类]
#IF
ISGUILDMASTER
#ACT
MOV s5 \〖行会掌门人〗
#ELSEACT
MOV s5
#IF
ISCASTLEGUILD
#ACT
MOV s5 \〖城主保镖〗
#ELSEACT
MOV s5
#IF
ISCASTLEMASTER
#ACT
MOV s5 \〖沙城城主〗
SENDMSG 0 (*)伟大的沙城城主〖%s〗进入<$SERVERNAME>!
CHANGENAMECOLOR 253
#ELSEACT
MOV s5
// = 修复区域 =
#IF
CheckVar GLOBAL 男战名字 = <$USERNAME>
#ACT
INC s5 \↘天下第一男战↙
SENDMSG 0 (*)天下第一男战〖%s〗进入<$SERVERNAME>!
#IF
CheckVar GLOBAL 男法名字 = <$USERNAME>
#ACT
INC s5 \↘天下第一男法↙
SENDMSG 0 (*)天下第一男法〖%s〗进入<$SERVERNAME>!
// (其他职业同理修改位置)
// ===
#IF
CHECKRENEWLEVEL > 0
#ACT
INC s5 \【荣誉勇士】
SETRANKLEVELNAME %s\<$STR(s5)>
break
💡 特别注意事项
命令区域规则:
#IF:只能包含条件判断命令
#ACT:执行具体操作命令
混合放置会导致引擎解析失败
符号转义技巧:
// 特殊符号正确写法
反斜杠 → \\
百分号 → %%
星号 → \*
引擎兼容性提醒:
老版本引擎(2010版)对命令位置更敏感
新引擎错误提示更友好:
"Command not allowed in #IF block"
🔍 调试建议
分段测试法:
// 调试模板:
#ACT
SENDMSG 6 【DEBUG】当前执行到XXX位置
变量追踪:
#ACT
SENDMSG 6 s5当前值:<$STR(s5)>
错误日志分析技巧:
错误行号 ±5行内重点检查
优先检查包含%、\等特殊符号行
✅ 实测建议:修改后重启M2服务器(部分引擎需要完全重启生效)
经过以上修改,您的封号分类脚本将完美运行!其他职业脚本按同样模式调整即可解决全部报错问题。

