传奇服务端常用脚本命令详解与实战用法

来源: 作者: 点击:
在传奇服务端开发中,NPC脚本是实现功能交互的核心。不同引擎(如GOM、Hero、CQ)语法存在差异,但基础命令结构相似。以下整理高频使用的脚本指令,按功能分类说明参数格式与应用场景。

一、条件判断类
IF:开启条件判断块,后接检测命令。
ACT:满足条件后执行动作。
ELSEACT:条件不成立时执行。
EQUAL A B:判断变量A是否等于B。
LARGE A B:A大于B。
SMALL A B:A小于B。
CHECKITEM 物品名 数量:检测背包是否有指定物品。
CHECKGOLD 金额:检测金币是否足够。
CHECKLEVEL 等级:检测角色等级。
CHECKJOB 职业号:0=战士,1=法师,2=道士。
HAVEWEAPONHOLE:武器是否破损。
CHECKBAG:检测背包空位数量。

二、变量操作类
MOV S0 值:将数值赋给临时变量S0(S0-S9可用)。
MOVR S1 最大值:生成0到最大值的随机数存入S1。
CALC S0 + 5:对变量做加减乘除运算(支持+ - * /)。
INC S0:S0自增1。
DEC S0:S0自减1。

三、物品与装备操作
GIVE 物品名 数量:给予玩家物品。
TAKE 物品名 数量:扣除背包内物品。
REPAIRWEAPON:修理武器,自动扣费。
REPAIRARMOR:修理所有防具。
CHANGEITEMATTR 位置 属性ID 增减值:修改指定格子装备属性(GOM专用),例如CHANGEITEMATTR 0 12 1表示背包第0格武器攻击上限+1。
CALLITEMPOS 物品名 变量:获取物品在背包的位置,存入变量供后续使用。

四、消息与界面交互
SENDMSG 颜色代码 内容:向玩家发送系统消息,颜色代码:3=白色,5=红色,6=绿色,7=黄色。
SAY:NPC对话框显示文本,支持换行符 和超链接。
CLOSE:关闭NPC对话窗口。
DELAY GOTO @标签 毫秒:延时后跳转。

五、流程控制
GOTO @标签:跳转到指定标签处继续执行。
@标签名:定义跳转目标点。
BREAK:终止当前脚本执行。
RETURN:返回上一级调用。

六、特殊功能命令
MAPMOVE 地图名 X Y:传送玩家到指定坐标。
KILLMONEXPRATE 百分比:设置打怪经验倍数(部分引擎支持)。
CHANGELEVEL 值:直接修改角色等级(慎用)。
CLEARMISSION:清空任务状态。
SAVE:强制保存角色数据。

实战示例:带成功率的强化脚本
[@main]
IF
CHECKITEM 龙纹剑 1
CHECKGOLD 50000
ACT
TAKE 龙纹剑 1
TAKEGOLD 50000
MOVR S1 100
IF
SMALL S1 40
GIVE 龙纹剑 1
CHANGEITEMATTR 0 12 1
SENDMSG 7 强化成功!攻击+1
ELSEACT
SENDMSG 5 强化失败,装备消失。

注意事项:
所有物品名称必须与StdItems.db中的ItemName完全一致;
变量S0-S9为全局临时变量,跨脚本可能被覆盖;
GOM引擎不支持UPGRADEITEM等Mir官方指令,需改用CHANGEITEMATTR;
脚本文件编码必须为ANSI,避免中文乱码;
修改后需重启GameSrv或使用@reload命令热加载。

掌握以上命令可覆盖90%的日常功能开发需求,包括合成、修理、传送、任务、商城等系统。建议结合服务端日志调试,逐步验证每条指令执行结果。