传奇脚本引擎(以GOM、GEE、HERO、V8主流引擎为例)采用类C语言的条件分支结构,依托#IF、#ACT、#ELSEACT三大关键字组织逻辑,命令由大写字母与下划线构成,参数间严格区分空格与分隔符,以下分类详列常用命令的标准语法格式。
条件判断命令#IF段语法
IF段用于检测条件是否成立,支持单个或多个条件并用AND、OR、NOT连接,条件必须写在#IF与#ACT/#ELSEACT之间,每个条件独占一行。格式:
#IF
CHECKLEVEL > 50
CHECKGOLD 100000
#ACT
常用条件命令格式包括:
• CHECKLEVEL > 数值 / = 数值 / < 数值:检测人物等级
• CHECKGOLD 数值:检测金币是否大于等于指定值
• CHECKITEM 物品名 数量:检测背包指定物品数量
• CHECKBAGSIZE 数值:检测背包空位是否大于等于数值
• CHECKJOB 职业名:检测职业,职业名填Warrior/Wizard/Taoist或Warr/Wizard/Taoist
• CHECKGENDER 性别:性别填MAN或WOMAN
• CHECKSLAVECOUNT 数值:检测当前召唤物数量
• CHECKMAPNAME 地图名:检测当前所在地图
• CHECK [数值] 0/1:检测人物标识位,0为未开启,1为开启
• EQUAL 变量名 值:检测变量是否等于指定值
• LARGE 变量名 值:检测变量大于指定值
• SMALL 变量名 值:检测变量小于指定值
执行命令#ACT段语法
ACT段在#IF条件成立时执行,支持多条命令逐行写入,每条命令占一行。格式:
#ACT
GAMEGOLD + 500
GIVE 裁决之杖 1
SENDMSG 6 恭喜获得奖励!
BREAK
常用执行命令格式包括:
• GAMEGOLD +/-/= 数值:操作元宝数量
• GOLD +/-/= 数值:操作金币数量
• GIVE 物品名 数量 品质:给予物品,品质参数可选
• TAKE 物品名 数量:扣除物品
• MAPMOVE 地图编号 X坐标 Y坐标:传送至指定地图坐标
• ADDSKILL 技能名 等级:学习技能,等级0-3
• DELSKILL 技能名:删除技能
• SET [数值] 0/1:设置人物标识位
• MOV 变量名 值:给变量赋值
• INC 变量名 值:变量增加
• DEC 变量名 值:变量减少
• CLEARMAPMON 地图编号:清除指定地图怪物
• RECALLMOB 怪物名 数量 等级 叛变时间(秒):召唤怪物为宝宝
• SENDMSG 消息类型 消息内容:发送屏幕消息,类型0-7颜色不同
• CLOSE:关闭NPC对话框
条件不成立#ELSEACT段语法
IF条件不成立时执行#ELSEACT段,必须与#IF配对使用,中间不能插入其他段。格式:
#IF
CHECKLEVEL > 40
#ACT
GAMEGOLD + 1000
#ELSEACT
SENDMSG 6 等级不足40级,无法领取!
CLOSE
NPC对话与菜单跳转语法
NPC脚本以[@Main]为主入口标签,[@标签名]定义子菜单,通过goto跳转。格式:
[@Main]
欢迎来到土城药店!\
<购买药品/@BuyDrug>\
<离开/@Exit>
[@BuyDrug]
#IF
CHECKGOLD 5000
#ACT
TAKE 金币 5000
GIVE 太阳水 1
SENDMSG 6 购买成功!
goto @Main
#ELSEACT
SENDMSG 6 金币不足!
goto @Main
常用NPC交互命令包括:
• <显示文字/@跳转标签>:创建可点击按钮
• {显示文字|颜色代码}:彩色文字
• \:换行符
• CLOSE:关闭对话框
• EXIT:退出脚本执行
变量系统与运算语法
变量分为人物变量、全局变量、临时变量,支持数值与字符串操作。格式:
• VAR Integer/String HUMAN/Global 变量名:声明变量
• LOADVAR 变量名 文件名.txt:加载变量值
• SAVEVAR 变量名 文件名.txt:保存变量值
• CALCVAR 变量名 +/-/*// 数值:变量运算
• MOV 变量名 值:赋值
• INC 变量名 值:累加
• DEC 变量名 值:递减
• EQUAL 变量名 值:判断相等
• LARGE 变量名 值:判断大于
• SMALL 变量名 值:判断小于
物品触发与装备镶嵌语法
装备穿戴、取下、使用可触发QFunction-0.txt中对应标签。格式:
• [@TakeOnX]:X为装备物品IDX,穿戴触发
• [@TakeOffX]:取下触发
• [@UseItemX]:使用触发
• [@StdModeFuncX]:X为物品数据库AniCount值,双击触发
定时器与全局事件语法
• SetOnTimer 定时器编号 间隔毫秒:启动定时器
• CloseOnTimer 定时器编号:关闭定时器
• [@OnTimerX]:X为定时器编号,触发执行段
• [@Login]:人物登录触发,写在QManage.txt
• [@PlayDie]:人物死亡触发
• [@KillMonster]:杀死怪物触发
• [@GetExp]:获得经验触发
脚本文件编码与命名规范
所有脚本文件必须存为ANSI(GBK)编码,禁止UTF-8或带BOM格式,换行符为Windows CRLF。文件路径区分大小写,Market_def文件夹内NPC脚本命名规则为NPC名字-地图编号.txt,全局脚本位于Envir根目录,任务脚本位于QuestDiary文件夹。变量名、标签名、物品名、地图名均区分大小写,书写时保持一致。命令与参数之间必须保留一个空格,禁止全角符号、中文标点混入代码,注释用;开头分行书写。

