传奇脚本报错大解密:SENDMSG错误提示背后的真相

来源: 作者: 点击:
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服务器(部分引擎需要完全重启生效)

经过以上修改,您的封号分类脚本将完美运行!其他职业脚本按同样模式调整即可解决全部报错问题。