传奇服务端脚本核心命令与逻辑控制详解

来源: 作者: 点击:
传奇服务端的脚本编写是构建游戏内NPC交互、任务系统、装备回收及各类自动化玩法的核心。掌握基础的脚本命令与逻辑控制,是进行服务端功能开发的前提。

基础逻辑控制指令

脚本的执行依赖于标准的逻辑判断与执行框架,通常由以下几个核心指令构成:

#IF:条件判断的起始标记。在此标记下方编写的条件,必须全部满足,脚本才会继续向下执行。
#ACT:动作执行标记。当上方的#IF条件全部成立时,系统会执行#ACT下方的具体命令(如给予物品、扣除金币等)。
#SAY:对话输出标记。用于向玩家弹出NPC对话框,显示文本内容或提供可点击的跳转选项。
#ELSEACT:条件否定执行标记。当#IF下方的条件不成立时,系统将执行该标记下方的命令。
break:结束当前脚本段落的执行,通常用于条件判断后直接中断后续代码的读取。
close:关闭当前NPC的对话窗口。

常用条件检测命令

在#IF标记下,需要编写各类检测命令来限制玩家的触发条件。常用的检测指令包括:

CHECKITEM 物品名 数量:检测玩家背包中是否拥有指定名称及数量的物品。
CHECKGOLD 数值:检测玩家当前携带的金币数量是否大于或等于指定数值。
CHECKLEVELEX > 数值:检测玩家等级是否大于指定数值(支持<、=等比较符号)。
CHECKJOB Warr:检测玩家当前职业是否为战士(法师为Wizard,道士为Taos)。
GENDERMAN:检测玩家性别是否为男性。
CHECKPKPOINT 数值:检测玩家的PK值是否大于指定数值。

常用动作执行命令

在#ACT标记下,通常编写对玩家数据产生实际影响的指令:

GIVE 物品名 数量:向玩家背包中发放指定名称和数量的物品。
TAKE 物品名 数量:从玩家背包中扣除指定名称和数量的物品。
GIVE gold 数值:给予玩家指定数量的金币。
TAKE gold 数值:扣除玩家指定数量的金币。
CHANGELEVEL 数值:直接调整玩家的角色等级。
CHANGEEXP 数值:直接增加或扣除玩家的经验值。

变量与标识控制

变量和标识是记录玩家任务进度、功能状态的核心工具。

标识(Flag)控制:
标识主要用于记录布尔值(真/假,即1或0),常用于判断任务是否完成。
SET [n] 1:将指定的标识(如[100])设置为真(1)。
CHECK [n] 1:检测指定的标识是否为真。
RESET [n] 数量:批量重置标识。例如 RESET [100] 5 会将[100]到[104]这5个标识全部归零。

变量(Variable)操作:
变量用于记录具体的数值或字符串,分为个人变量(如P、D、M、U系列)和全局变量(如G、A、I系列)。
MOV 变量 数值:给变量赋值。例如 MOV P0 10 表示将私人变量P0的值设为10。
INC 变量 数值:让变量自动加上指定数值。例如 INC P0 5 相当于 P0 = P0 + 5。
DEC 变量 数值:让变量自动减去指定数值。
SMALL 变量 数值:判断变量是否小于指定数值。
LARGE 变量 数值:判断变量是否大于指定数值。
EQUAL 变量 数值:判断变量是否等于指定数值。
MOVR 变量 数值:定义随机变量,变量的值将在0到指定数值之间随机生成。

系统级管理命令

除了NPC交互,服务端还提供了一系列用于管理游戏环境的命令:

MonGen 怪物名称 数量 时间:在指定地图和坐标生成指定数量的怪物。
Monclear 地图名:清理指定地图内的所有怪物。
TimeRecall 时间:设置地图或事件的时间限制。
@ReloadNpc:GM指令,用于在不重启服务端的情况下刷新所有NPC脚本信息。
@Kick 人物名称:GM指令,将指定玩家踢下线。