传奇脚本入门基础语法与实战编写指南

来源: 作者: 点击:
传奇脚本用于控制NPC对话、任务触发、物品发放等核心功能,文件存放于服务端“QuestDiary”目录,以纯文本格式编写。以下从结构、标签、条件、动作四方面详解入门要点。

一、脚本文件结构
每个脚本由多个“标签(Label)”组成,标签以中括号定义,如[@main]、[@buy]。系统通过调用标签执行对应逻辑。常见文件包括:
QFunction-0.txt:全局功能主文件;
Npc_def1001.txt:NPC编号1001的专属对话脚本;
!Setup.txt:脚本全局变量初始化。

二、基本标签类型
主对话入口:[@main] 为NPC默认打开界面;
自定义分支:[@heal]、[@reward] 等可自由命名,通过/goto @heal跳转;
系统事件标签:[@Login](上线)、[@Death](死亡)、[@LevelUp](升级)等自动触发。

三、条件判断指令(#IF)
条件决定是否执行后续动作,常用指令:
CHECKLEVEL X:检测角色等级≥X;
CHECKGAMEGOLD X:元宝≥X;
CHECKITEM 物品名 数量:背包含指定物品;
EQUAL 变量 值:变量等于某值(如EQUAL "3");
CHECK [X] Y:临时变量[X]等于Y(X范围0-99)。
多条件组合使用#OR(或)和#AND(与),例如:

IF
CHECKLEVEL 30
AND
CHECKGAMEGOLD 100


四、执行动作指令(#ACT)
满足条件后执行操作,核心指令包括:
GIVE 物品名 数量:给予物品;
TAKE 物品名 数量:扣除物品;
GAMEGOLD + X / - X:增加或减少元宝;
MAPMOVE 地图号 X Y:传送玩家;
GuildNoticeMsg 类型 颜色 文本:全服公告;
CLOSE:关闭当前对话框;
SET [X] Y:设置临时变量值;
SAVEVAR HUMAN 变量名 值:永久保存变量(重启不丢失)。

五、对话显示(#SAY)
向玩家显示文本,支持换行()和颜色代码(如红色文字)。示例:

SAY
欢迎来到药店!



点击链接自动跳转至对应标签。

六、完整入门示例:新手礼包NPC
在Npc_def1001.txt中编写:

[@main]
IF
CHECK [10] 0
ACT
GIVE 新手礼包 1
SET [10] 1
SAVEVAR HUMAN GOT_BAG 1
SAY
礼包已发放,请查收背包。

ELSESAY
你已领取过礼包。


说明:
[10]为临时变量,首次进入时为0,领取后设为1;
SAVEVAR确保下次登录仍记录已领取状态。

七、调试与常见错误
脚本不生效:检查文件编码是否为ANSI,标签名是否拼写错误;
物品名不符:必须与StdItems.txt中的Name字段完全一致;
条件失效:确认CHECKLEVEL等指令数值无多余空格;
无限循环:避免在[@main]中直接goto @main,需加退出选项。

八、进阶提示
使用D0-D99存储计算中间值(如MOV D0 );
在QFunction-0.txt中统一管理复杂逻辑,NPC脚本仅作跳转;
全服公告颜色值参考RGB(如255=红,65280=绿,16711680=蓝)。

掌握以上基础即可实现90%的日常功能开发,重点在于理解条件-动作-显示的三段式结构,并通过小步测试验证逻辑。