在传奇服务端开发中,NPC脚本是实现功能交互的核心。不同引擎(如GOM、Hero、CQ)语法存在差异,但基础命令结构相似。以下整理高频使用的脚本指令,按功能分类说明参数格式与应用场景。
一、条件判断类
IF:开启条件判断块,后接检测命令。
ACT:满足条件后执行动作。
ELSEACT:条件不成立时执行。
EQUALAB:判断变量A是否等于B。
LARGEAB:A大于B。
SMALLAB:A小于B。
CHECKITEM物品名数量:检测背包是否有指定物品。
CHECKGOLD金额:检测金币是否足够。
CHECKLEVEL等级:检测角色等级。
CHECKJOB职业号:0=战士,1=法师,2=道士。
HAVEWEAPONHOLE:武器是否破损。
CHECKBAG:检测背包空位数量。
二、变量操作类
MOVS0值:将数值赋给临时变量S0(S0-S9可用)。
MOVRS1最大值:生成0到最大值的随机数存入S1。
CALCS0+5:对变量做加减乘除运算(支持+-*/)。
INCS0:S0自增1。
DECS0:S0自减1。
三、物品与装备操作
GIVE物品名数量:给予玩家物品。
TAKE物品名数量:扣除背包内物品。
REPAIRWEAPON:修理武器,自动扣费。
REPAIRARMOR:修理所有防具。
CHANGEITEMATTR位置属性ID增减值:修改指定格子装备属性(GOM专用),例如CHANGEITEMATTR0121表示背包第0格武器攻击上限+1。
CALLITEMPOS物品名变量:获取物品在背包的位置,存入变量供后续使用。
四、消息与界面交互
SENDMSG颜色代码内容:向玩家发送系统消息,颜色代码:3=白色,5=红色,6=绿色,7=黄色。
SAY:NPC对话框显示文本,支持换行符和超链接。
CLOSE:关闭NPC对话窗口。
DELAYGOTO@标签毫秒:延时后跳转。
五、流程控制
GOTO@标签:跳转到指定标签处继续执行。
@标签名:定义跳转目标点。
BREAK:终止当前脚本执行。
RETURN:返回上一级调用。
六、特殊功能命令
MAPMOVE地图名XY:传送玩家到指定坐标。
KILLMONEXPRATE百分比:设置打怪经验倍数(部分引擎支持)。
CHANGELEVEL值:直接修改角色等级(慎用)。
CLEARMISSION:清空任务状态。
SAVE:强制保存角色数据。
实战示例:带成功率的强化脚本
[@main]
IF
CHECKITEM龙纹剑1
CHECKGOLD50000
ACT
TAKE龙纹剑1
TAKEGOLD50000
MOVRS1100
IF
SMALLS140
GIVE龙纹剑1
CHANGEITEMATTR0121
SENDMSG7强化成功!攻击+1
ELSEACT
SENDMSG5强化失败,装备消失。
注意事项:
所有物品名称必须与StdItems.db中的ItemName完全一致;
变量S0-S9为全局临时变量,跨脚本可能被覆盖;
GOM引擎不支持UPGRADEITEM等Mir官方指令,需改用CHANGEITEMATTR;
脚本文件编码必须为ANSI,避免中文乱码;
修改后需重启GameSrv或使用@reload命令热加载。
掌握以上命令可覆盖90%的日常功能开发需求,包括合成、修理、传送、任务、商城等系统。建议结合服务端日志调试,逐步验证每条指令执行结果。
一、条件判断类
IF:开启条件判断块,后接检测命令。
ACT:满足条件后执行动作。
ELSEACT:条件不成立时执行。
EQUALAB:判断变量A是否等于B。
LARGEAB:A大于B。
SMALLAB:A小于B。
CHECKITEM物品名数量:检测背包是否有指定物品。
CHECKGOLD金额:检测金币是否足够。
CHECKLEVEL等级:检测角色等级。
CHECKJOB职业号:0=战士,1=法师,2=道士。
HAVEWEAPONHOLE:武器是否破损。
CHECKBAG:检测背包空位数量。
二、变量操作类
MOVS0值:将数值赋给临时变量S0(S0-S9可用)。
MOVRS1最大值:生成0到最大值的随机数存入S1。
CALCS0+5:对变量做加减乘除运算(支持+-*/)。
INCS0:S0自增1。
DECS0:S0自减1。
三、物品与装备操作
GIVE物品名数量:给予玩家物品。
TAKE物品名数量:扣除背包内物品。
REPAIRWEAPON:修理武器,自动扣费。
REPAIRARMOR:修理所有防具。
CHANGEITEMATTR位置属性ID增减值:修改指定格子装备属性(GOM专用),例如CHANGEITEMATTR0121表示背包第0格武器攻击上限+1。
CALLITEMPOS物品名变量:获取物品在背包的位置,存入变量供后续使用。
四、消息与界面交互
SENDMSG颜色代码内容:向玩家发送系统消息,颜色代码:3=白色,5=红色,6=绿色,7=黄色。
SAY:NPC对话框显示文本,支持换行符和超链接。
CLOSE:关闭NPC对话窗口。
DELAYGOTO@标签毫秒:延时后跳转。
五、流程控制
GOTO@标签:跳转到指定标签处继续执行。
@标签名:定义跳转目标点。
BREAK:终止当前脚本执行。
RETURN:返回上一级调用。
六、特殊功能命令
MAPMOVE地图名XY:传送玩家到指定坐标。
KILLMONEXPRATE百分比:设置打怪经验倍数(部分引擎支持)。
CHANGELEVEL值:直接修改角色等级(慎用)。
CLEARMISSION:清空任务状态。
SAVE:强制保存角色数据。
实战示例:带成功率的强化脚本
[@main]
IF
CHECKITEM龙纹剑1
CHECKGOLD50000
ACT
TAKE龙纹剑1
TAKEGOLD50000
MOVRS1100
IF
SMALLS140
GIVE龙纹剑1
CHANGEITEMATTR0121
SENDMSG7强化成功!攻击+1
ELSEACT
SENDMSG5强化失败,装备消失。
注意事项:
所有物品名称必须与StdItems.db中的ItemName完全一致;
变量S0-S9为全局临时变量,跨脚本可能被覆盖;
GOM引擎不支持UPGRADEITEM等Mir官方指令,需改用CHANGEITEMATTR;
脚本文件编码必须为ANSI,避免中文乱码;
修改后需重启GameSrv或使用@reload命令热加载。
掌握以上命令可覆盖90%的日常功能开发需求,包括合成、修理、传送、任务、商城等系统。建议结合服务端日志调试,逐步验证每条指令执行结果。

