基础命令结构解析
传奇脚本由标签、命令、条件三部分组成。标签用方括号包围如[@main],命令以#开头如#ACT,条件判断用#IF引导。每行命令独立执行,顺序从上到下。
脚本文件存放在Envir目录下的子文件夹中。Market_Def存放NPC脚本,Script存放系统脚本,QuestDiary存放任务脚本。文件扩展名为.txt,编码使用ANSI格式。
命令参数用空格分隔,字符串参数不需要引号。变量使用格式为G#、N#、D#分别代表全局、个人、临时变量。数值直接书写,不需要特殊符号。
NPC对话命令体系
SAY命令用于显示对话内容。格式为#SAY 后面跟随要显示的文本,支持换行用控制文字颜色。颜色代码范围0-255,常用7为白色,2为红色。
LINK命令创建可点击链接。格式为,玩家点击后跳转到指定标签。链接可以嵌套在#SAY命令中,实现分支对话。
CLOSE命令关闭对话窗口。执行后NPC对话界面消失,玩家需要重新点击NPC才能再次对话。通常放在脚本末尾或分支结束处。
CALL命令调用其他脚本文件。格式为#CALL 文件路径文件名.txt[@标签],可以实现脚本模块化,方便复用代码。
条件判断命令详解
IF引导条件判断块,后面跟随一个或多个条件。条件成立则执行#ACT块,不成立则执行#ELSE块。#IF和#ACT必须成对出现。
CHECKLEVEL命令检查玩家等级。格式为CHECKLEVEL 比较符号 数值,如CHECKLEVEL > 50检查玩家等级是否大于50。比较符号支持>、=、= 1000 AND CHECKITEM 金币券 10,#ACT TAKE 金币券 10 CHANGEGOLD + 1000,#ELSE #SAY 金币券不足。
传送脚本需要检查条件和执行传送。#IF CHECKLEVEL >= 30 AND CHECKFLAG 1001,#ACT MOVE 5 150 150 SENDMSG 7 已传送到秘境,#ELSE #SAY 等级或任务未达标。
调试与错误处理
M2控制台输出脚本错误信息。启动时或运行时如有语法错误,会在控制台显示文件名和行号。根据提示定位修复。
日志文件记录脚本执行过程。Envir/Logs目录下的日志包含脚本调用记录,可以追踪脚本执行路径和变量变化。
测试账号用于脚本验证。创建GM等级测试账号,使用@命令直接调用脚本标签,快速测试无需通过NPC对话。
分段测试复杂脚本。将长脚本拆分为多个标签分别测试,确认每个部分正常后再整合。便于定位问题所在。
变量值打印调试。使用SENDMSG命令将变量值发送到聊天框,如SENDMSG 7 当前进度:N#任务进度,实时查看变量状态。
性能与规范建议
避免无限循环脚本。DELAY命令配合GOTO使用时注意设置退出条件,防止脚本卡死占用服务器资源。
减少频繁数据库操作。CHECKITEM、GIVE等命令会访问数据库,短时间内大量调用会影响性能。必要时使用变量缓存。
脚本注释提高可维护性。在脚本中添加//注释说明功能,方便后续修改和他人理解。注释不影响脚本执行。
统一命名规范。变量名、标签名使用统一风格,如任务变量用N#Quest_前缀,标签用@Quest_前缀,便于识别和管理。
备份脚本文件。修改前复制原文件,出现问题可以快速恢复。版本变更时保留历史版本便于对比。
传奇服务端脚本命令数量众多,掌握核心命令后可以根据需求组合使用。实际开发中多参考现有脚本,理解命令用法后逐步扩展功能。命令熟练度需要通过大量实践积累,建议从简单NPC脚本开始,逐步尝试复杂任务和功能脚本。

