脚本基础结构与逻辑
传奇服务端脚本采用标签触发 + 条件判断 + 动作执行的逻辑结构。所有NPC脚本、任务脚本均基于此框架编写。
标准脚本段落格式
[@标签名]
#IF ;条件判断开始
CHECKLEVEL 40 ;检测等级是否≥40
CHECKITEM 金条 1 ;检测是否拥有1个金条
#ACT ;条件满足执行动作
TAKE 金条 1 ;扣除金条
GIVE 屠龙 1 ;给予屠龙
SENDMSG 0 恭喜领取屠龙! ;发送公告
#ELSEACT ;条件不满足执行
MESSAGEBOX 需要40级且持有金条! ;弹窗提示
核心标签说明
• @main:NPC默认对话入口,玩家点击NPC首先执行此段。
• @Login:位于QFunction-0.txt,玩家登录时自动触发,用于发放上线奖励或检测。
• @KillMon:杀怪触发标签,配合MapQuest配置实现杀怪任务。
常用检测与动作命令
条件检测命令(#IF段)
• CHECKLEVEL 数字:检测玩家等级。
• CHECKITEM 物品名 数量:检测背包物品。
• CHECKGAMEGOLD > 数字:检测元宝数量。
• CHECKJOB Warrior/Wizard/Taoist:检测职业。
动作执行命令(#ACT段)
• GIVE 物品名 数量:给玩家物品。
• TAKE 物品名 数量:扣除玩家物品。
• MAPMOVE 地图编号 X Y:传送玩家至指定坐标。
• CHANGEEXP + 数字:增加玩家经验值。
• SENDMSG 0/1/5 内容:发送全服/行会/个人提示。
NPC功能脚本实战案例
新手礼包发放NPC
在Merchant.txt注册NPC后,于Market_Def目录创建对应.txt文件,写入以下逻辑:
[@main]
欢迎领取新手礼包,请选择职业:\
<战士/@warrior> <法师/@wizard> <道士/@taoist>\
[@warrior]
#IF
CHECKLEVEL 1
#ACT
GIVE 青铜斧 1
GIVE 布衣(男) 1
GIVE 金创药(小量) 5
SENDMSG 0 玩家【<$USERNAME>】领取了战士新手包!
CLOSE
#ELSEACT
MESSAGEBOX 等级不足!
此脚本实现职业判断与对应装备发放,CLOSE用于关闭对话框。
装备一键回收脚本
利用循环检测背包物品并兑换资源,是版本必备功能:
[@一键回收]
#ACT
GetListString ..\QuestDiary\回收列表\沃玛装备.txt S0 ;读取回收列表
#IF
CHECKITEMLIST $STR(S0) ;检测列表内物品
#ACT
TAKE $STR(S0) 1 ;扣除物品
GAMEGOLD + 100 ;增加元宝
GOTO @一键回收 ;循环执行
#ELSEACT
MESSAGEBOX 回收完成!
此脚本依赖外部列表文件管理可回收装备,便于批量维护。
杀怪触发与地图事件代码
杀怪触发任务配置
实现击杀指定怪物后触发奖励或传送,需修改MapQuest.txt并编写触发脚本。
MapQuest.txt配置行
3 [001] 0 白野猪 * Q001
- 3:地图编号(盟重)。
- [001]:触发标识符,不可重复。
- 白野猪:怪物名称。
- Q001:对应的脚本文件名(位于MapQuest_def目录)。
触发脚本内容 (Q001.txt)
[@main]
#ACT
GIVE 沃玛号角 1
SENDMSG 1 玩家【<$USERNAME>】击杀了白野猪,获得沃玛号角!
当玩家在盟重击杀白野猪后,自动执行该脚本发放奖励。
地图自动刷怪配置
地图刷怪不属于NPC脚本,需在MonGen.txt中配置,格式如下:
地图编号 怪物名 范围 数量 间隔(分) 名字颜色
实例:比奇城刷鹿
0 鹿 10 20 30 0
表示在比奇城(0)坐标10范围内,每30分钟刷20只鹿。
变量与自定义功能
个人与全局变量操作
变量用于记录任务进度或临时数据,避免重复领取奖励。
个人字符变量(S变量)
#ACT
SET S10 已领取 ;设置变量
#IF
EQUAL S10 已领取 ;检测变量
#ACT
MESSAGEBOX 你已经领过了!
全局数字变量(G变量)
#ACT
INC G100 1 ;全局变量G100自增1
SENDMSG 0 全服累计击杀BOSS:<$STR(G100)>只
<$STR(变量名)>用于在对话框中显示变量值。
自定义按钮与技能触发
QFunction-0.txt中的穿戴触发
[@TakeOnX]
#ACT
SENDMSG 0 你穿上了装备!
X为装备位置编号(如5代表左手镯),此脚本在玩家穿戴对应位置装备时触发。
自定义按钮触发
在客户端界面添加按钮,命令指向脚本标签:
[@UserCmdXX]
#ACT
MAPMOVE 0 330 268
当玩家点击按钮或输入对应命令时,执行传送逻辑。
引擎差异与常见报错
• GOM/GEE引擎:支持#IF多条件并列,脚本语法较为宽松。
- HGE/翎风引擎:部分命令格式不同,如检测命令可能需使用CHECK前缀。
• 常见报错:脚本逻辑错误通常导致M2引擎加载失败,需检查括号匹配与命令拼写;物品名称必须与数据库严格一致,否则无法发放。

