传奇服务端脚本通过QFunction-0.txt、QManage.txt等文件控制NPC对话、任务触发和玩家交互。核心结构为#IF(条件判断)搭配#ACT(执行动作),以下列出高频使用的脚本代码及实际应用示例。
一、基础结构语法
[@main]
IF
CheckGameGold > 99
ACT
Give Gold 100
Close
说明:当玩家元宝大于99时,给予100金币并关闭对话框。所有条件必须在#IF下,执行动作必须在#ACT下,不可混写。
二、常用条件判断指令
CheckGameGold > 数值:检测元宝是否大于指定值。
CheckGameGold 数值:检测角色等级是否高于某级。
CheckPkPoint > 数值:检测PK值是否超过设定值。
CheckHumWear 武器名:检测是否穿戴指定装备(如“屠龙”)。
CheckBagSize:检测背包剩余格子数(需配合>或 分钟数:检测在线时长是否超过设定值。
Random 数值:随机概率触发(如Random 30 表示30%几率成立)。
三、常用执行动作指令
Give 物品名 数量:给予物品(如Give 太阳神水 5)。
Take 物品名 数量:扣除背包内物品。
TakeGameGold 数值:扣除元宝。
ChangeLevel 数值:直接设置角色等级。
RecallMob 怪物名 数量 等级:召唤怪物(如RecallMob 骷髅 3 5)。
MapMove 地图编号 X Y:传送至指定坐标。
SendMsg 0 文本内容:向玩家发送系统提示(0为黄色文字)。
DelayGoto @标签名 时间(毫秒):延时跳转到指定标签。
Break:中断当前脚本流程。
Close:关闭NPC对话窗口。
Set [变量名] 数值:设置自定义变量(如Set A1 1)。
四、复合条件写法
多条件需分行书写,逻辑为“与”关系:
IF
CheckLevel > 30
CheckGameGold > 500
CheckHumWear 龙之戒指
ACT
SendMsg 0 符合全部条件!
若需“或”逻辑,需用多个独立#IF块实现。
五、变量与标签跳转
[@start]
IF
CheckGameGold > 100
ACT
Set GIVEFLAG 1
Goto @giveitem
[@giveitem]
IF
EQUAL GIVEFLAG 1
ACT
Give 金条 1
TakeGameGold 100
EQUAL用于判断自定义变量值,Goto实现流程跳转。
六、注意事项
物品名称必须与ItemDB.txt完全一致,含空格或特殊符号需原样输入。
所有数值比较仅支持整数,不支持小数。
脚本文件编码需为ANSI,UTF-8会导致乱码失效。
修改后需在M2控制台输入@ReloadNpc或重启服务端生效。
条件与动作之间不可插入注释或空行,否则可能中断解析。
以上代码适用于主流Mir2引擎服务端,包括Hero、GOM等版本。实际编写时应先备份原始脚本,逐段测试避免逻辑冲突。新人玩家可从简单兑换NPC入手,逐步掌握复杂任务链设计。

