传奇服务端通过文本脚本控制角色行为、地图事件、物品交互及战斗逻辑。主流引擎(Hero、GOM等)使用QFunction-0.txt、QManage.txt、UserCmd.txt等文件,依赖一套固定命令语法实现功能。以下按类别列出常用脚本命令,附带参数说明与使用示例。
角色属性与状态命令
CheckLevelN
判断角色等级是否≥N。
示例:#IFCheckLevel25
CheckHumLevelN
判断目标玩家等级是否≥N(用于PK或组队判断)。
CheckGoldN
判断背包金币是否≥N。
配合DelGoldN扣除金币。
CheckManaN/CheckHPN
判断当前MP/HP是否≥N。
ChangeModeN
切换攻击模式:0=和平,1=全体,2=行会,3=编组,4=师徒。
SetHumanName新名字
修改角色名称(慎用,部分版本不支持)。
RecallHero
召唤英雄(需已开启英雄系统)。
物品操作命令
CheckItem物品名数量
判断背包是否存在指定数量的物品。
示例:#IFCheckItem裁决之杖1
GiveItem物品名数量
给予物品到背包。若背包满,物品掉落地面。
支持特殊属性:GiveItem裁决之杖1500000(依次为持久、攻击下限、上限、魔法、道术、防御)
DelItem物品名数量
从背包扣除物品,不足则不执行。
MakeItem物品名XY
在指定坐标生成物品(用于地图宝箱或任务奖励)。
示例:MakeItem金创药1020
CheckBagSizeN
判断背包空位是否≥N。
地图与传送命令
InMap地图编号或名称
判断当前是否在指定地图。
示例:#IFInMap3000
ChangeMap地图名XY
将角色传送到目标地图坐标。
示例:ChangeMapD5000100100
MapMove地图名XY
同ChangeMap,部分引擎别名。
CheckMapMob地图名怪物名数量
判断某地图是否存在指定数量怪物(用于副本清怪检测)。
消息与交互命令
SendMsg颜色代码"内容"
向玩家发送消息。颜色代码:0=白,1=红,2=绿,3=蓝,4=黄,5=紫。
示例:SendMsg2"任务完成!"
SendHintMsg"内容"
在屏幕中央显示提示(类似系统公告)。
SendAsk"问题文本"
弹出对话框供玩家选择。
示例:SendAsk"选择职业?"
Close
关闭NPC对话窗口。
变量与流程控制命令
Set[变量名]值
设置自定义变量。推荐命名格式:HUMAN(任务1)=1。
示例:Set[HUMAN(已接任务)]1
Check[变量名]
判断变量是否存在且非零。
示例:#IF!Check[HUMAN(已交任务)]
Goto@标签名
跳转至同一文件内指定标签。
示例:Goto@Reward
DelayGoto@标签名毫秒
延迟指定毫秒后跳转。常用于定时任务或冷却。
RandomN
N%概率返回真。
示例:#IFRandom30表示30%几率触发。
怪物与战斗命令
RecallMob怪物名数量持续时间
召唤怪物,持续时间单位为毫秒。
示例:RecallMob狂暴野猪560000
KillMonExpN
给予相当于击杀N级怪物的经验。
GiveExpN
直接增加经验。
StrikeMonExp
清除当前地图所有怪物并给予经验(用于副本结算)。
系统与管理命令
IsAdmin
判断是否为管理员账号。
UserCmd命令名
绑定自定义命令,如@giveitem,需在UserCmd.txt中定义。
ReloadGuildFile
重新加载行会数据(用于脚本修改后同步)。
ClearRobot
清除所有机器人(适用于测试环境)。
实战组合示例:装备鉴定脚本
[@Main]
ACT
SendAsk"放入装备后点击鉴定"
[@DoIdentify]
IF
CheckItem未知的武器1
CheckGold10000
ACT
DelItem未知的武器1
DelGold10000
GiveItem修罗战斧1503040000
SendMsg2"鉴定成功!获得修罗战斧。"
ELSEACT
SendMsg1"缺少未知武器或金币不足。"
该脚本要求玩家拥有“未知的武器”和1万金币,满足则扣除并给予鉴定结果。
注意事项
所有命令区分大小写,建议统一小写;
物品名必须与StdItems.db或ItemName.txt中完全一致;
脚本文件编码应为ANSI或UTF-8无BOM,避免乱码;
修改后需重启M2Server主程序生效;
高频事件(如[@Move])中避免复杂命令,防止卡顿。
掌握上述命令及其组合方式,可构建任务、商城、副本、活动等完整游戏系统。脚本逻辑本质是条件驱动的动作序列,重点在于准确匹配事件与合理调用指令。
角色属性与状态命令
CheckLevelN
判断角色等级是否≥N。
示例:#IFCheckLevel25
CheckHumLevelN
判断目标玩家等级是否≥N(用于PK或组队判断)。
CheckGoldN
判断背包金币是否≥N。
配合DelGoldN扣除金币。
CheckManaN/CheckHPN
判断当前MP/HP是否≥N。
ChangeModeN
切换攻击模式:0=和平,1=全体,2=行会,3=编组,4=师徒。
SetHumanName新名字
修改角色名称(慎用,部分版本不支持)。
RecallHero
召唤英雄(需已开启英雄系统)。
物品操作命令
CheckItem物品名数量
判断背包是否存在指定数量的物品。
示例:#IFCheckItem裁决之杖1
GiveItem物品名数量
给予物品到背包。若背包满,物品掉落地面。
支持特殊属性:GiveItem裁决之杖1500000(依次为持久、攻击下限、上限、魔法、道术、防御)
DelItem物品名数量
从背包扣除物品,不足则不执行。
MakeItem物品名XY
在指定坐标生成物品(用于地图宝箱或任务奖励)。
示例:MakeItem金创药1020
CheckBagSizeN
判断背包空位是否≥N。
地图与传送命令
InMap地图编号或名称
判断当前是否在指定地图。
示例:#IFInMap3000
ChangeMap地图名XY
将角色传送到目标地图坐标。
示例:ChangeMapD5000100100
MapMove地图名XY
同ChangeMap,部分引擎别名。
CheckMapMob地图名怪物名数量
判断某地图是否存在指定数量怪物(用于副本清怪检测)。
消息与交互命令
SendMsg颜色代码"内容"
向玩家发送消息。颜色代码:0=白,1=红,2=绿,3=蓝,4=黄,5=紫。
示例:SendMsg2"任务完成!"
SendHintMsg"内容"
在屏幕中央显示提示(类似系统公告)。
SendAsk"问题文本"
弹出对话框供玩家选择。
示例:SendAsk"选择职业?"
Close
关闭NPC对话窗口。
变量与流程控制命令
Set[变量名]值
设置自定义变量。推荐命名格式:HUMAN(任务1)=1。
示例:Set[HUMAN(已接任务)]1
Check[变量名]
判断变量是否存在且非零。
示例:#IF!Check[HUMAN(已交任务)]
Goto@标签名
跳转至同一文件内指定标签。
示例:Goto@Reward
DelayGoto@标签名毫秒
延迟指定毫秒后跳转。常用于定时任务或冷却。
RandomN
N%概率返回真。
示例:#IFRandom30表示30%几率触发。
怪物与战斗命令
RecallMob怪物名数量持续时间
召唤怪物,持续时间单位为毫秒。
示例:RecallMob狂暴野猪560000
KillMonExpN
给予相当于击杀N级怪物的经验。
GiveExpN
直接增加经验。
StrikeMonExp
清除当前地图所有怪物并给予经验(用于副本结算)。
系统与管理命令
IsAdmin
判断是否为管理员账号。
UserCmd命令名
绑定自定义命令,如@giveitem,需在UserCmd.txt中定义。
ReloadGuildFile
重新加载行会数据(用于脚本修改后同步)。
ClearRobot
清除所有机器人(适用于测试环境)。
实战组合示例:装备鉴定脚本
[@Main]
ACT
SendAsk"放入装备后点击鉴定"
[@DoIdentify]
IF
CheckItem未知的武器1
CheckGold10000
ACT
DelItem未知的武器1
DelGold10000
GiveItem修罗战斧1503040000
SendMsg2"鉴定成功!获得修罗战斧。"
ELSEACT
SendMsg1"缺少未知武器或金币不足。"
该脚本要求玩家拥有“未知的武器”和1万金币,满足则扣除并给予鉴定结果。
注意事项
所有命令区分大小写,建议统一小写;
物品名必须与StdItems.db或ItemName.txt中完全一致;
脚本文件编码应为ANSI或UTF-8无BOM,避免乱码;
修改后需重启M2Server主程序生效;
高频事件(如[@Move])中避免复杂命令,防止卡顿。
掌握上述命令及其组合方式,可构建任务、商城、副本、活动等完整游戏系统。脚本逻辑本质是条件驱动的动作序列,重点在于准确匹配事件与合理调用指令。

