传奇脚本语法与命令格式全解

来源: 作者: 点击:
脚本基础结构与注释

传奇脚本以文本文件(.txt)编写,由标签、条件、动作、跳转四大核心组成。标准脚本文件存放在 Mir200\Envir\Market_Def\ 或 QuestDiary\ 目录下。

注释:以 ; 或 // 开头,引擎不执行,用于说明。

[@main]
#SAY
你好,勇士! ; 这是对玩家说的话


核心命令与标准格式

1. 标签与对话

脚本执行起点,NPC对话框由此触发。

[@main] ; 主标签,NPC对话入口
#SAY ; 声明开始显示对话
你好,欢迎来到比奇城。\ ; “\”是换行符
<买东西/@buy> ; “<>”内是超链接,@buy是点击后跳转的标签
<离开/@exit>


2. 条件判断 (#IF)

所有动作执行前,必须通过的条件检测。格式为 #IF 后紧跟一个或多个条件命令。

#IF
CHECKGOLD 1000 ; 检测金币是否 ≥ 1000
CHECKLEVEL 35 ; 检测等级是否 ≥ 35
#ACT ; 条件满足,则执行此处动作
GIVE 金币 -1000
GIVE 裁决之杖 1
#SAY
交易完成!
#ELSESAY ; 条件不满足,则执行此处
你的金币或等级不足。


3. 常用条件命令列表

命令格式 功能说明

CHECKLEVEL 数字 检测人物等级

CHECKGOLD 数字 检测持有金币

CHECKITEM 物品名 数量 检测背包物品

CHECKJOB Warrior 检测职业(Warrior/Wizard/Taoist)

ISONMAP 地图编号 检测是否在指定地图

RANDOM 数字 随机数判定(如 RANDOM 3 表示1/3几率)

4. 动作执行 (#ACT)

条件满足后执行的具体操作,如给物品、传送、改变属性。

#ACT
TAKE 金币 1000 ; 拿走金币
GIVE 回城卷 1 ; 给予物品
MAPMOVE 0 330 268 ; 传送:MAPMOVE 地图编号 X坐标 Y坐标
CHANGELEVEL +1 ; 升级


5. 变量与跳转

脚本通过变量存储临时数据,并通过跳转构建复杂逻辑。

; 设置变量
MOV U0 100 ; 将变量U0的值设为100
INC U0 1 ; 变量U0的值+1

; 跳转应用
[@start]
#IF
LARGE U0 100 ; 判断U0是否大于100
#ACT
GOTO @success ; 满足,跳转到@success标签
#ELSESAY
条件不满足。
[@success]
#SAY
你成功了!


进阶:任务脚本实例解析

以下是一个标准的循环杀怪任务脚本:

[@杀怪任务]
#IF
CHECK [310] 1 ; 检测任务标志[310]是否为1(表示已接任务)
CHECKKILLCOUNT 白野猪 0 10 ; 检测是否已杀10只白野猪
#ACT
SET [311] 1 ; 设置任务完成标志[311]为1
GIVE 金条 1
SENDMSG 7 任务完成,获得金条。
BREAK
#ELSESAY
你还需要杀死 <$OUTPUT(KILLCOUNT(白野猪))>/10 只白野猪。


语法要点与常见错误

1. 格式严格:#IF、#ACT 等关键词必须大写,参数用空格分隔,末尾无符号。
2. 标签唯一:同一个脚本文件内,标签名(如 @main)不能重复。
3. 路径正确:涉及文件调用(如 #CALL)时,路径需用双反斜杠 \\ 或正斜杠 /。
4. 引擎差异:GOM、GEE、BLUE 等引擎命令有细微差别,需查阅对应引擎的帮助文档。

掌握“标签触发 → 条件判断 → 执行动作 → 结果反馈”这一基本流程,是编写一切功能脚本的基础。实际应用中,多参考服务端自带的原始脚本是最高效的学习方法。