传奇脚本技术入门与HeroM2命令速查

来源: 作者: 点击:
传奇脚本是控制NPC对话、任务流程、物品使用等游戏逻辑的文本指令集,基于HeroM2(Sky)引擎的语法规范。学习脚本需掌握“条件判断-执行动作”的核心结构及文件存放规则。

一、脚本基础结构与执行逻辑

传奇脚本采用标签化分段结构,核心指令为 #IF(条件判断)、#ACT(执行动作)、#SAY(显示文本)。

1. 基础框架示例(NPC对话)
[@main] ; NPC主入口标签
#SAY
欢迎来到比奇城。\ \
<领取新手武器/@getweapon> <离开/@exit> ; \为换行,< >为可点击按钮

[@getweapon] ; 点击“领取新手武器”触发的标签
#IF
CheckLevel > 10 ; 条件:等级大于10级
CheckBagSize 1 ; 条件:背包至少有1个空位
#ACT
Give 乌木剑 1 ; 动作:给予1把乌木剑
SendMsg 5 领取成功!
#ELSESAY ; 条件不满足时显示
等级不足10级或背包已满,无法领取。

关键点:@ 开头的标签是功能入口,#IF 和 #ACT 必须成对出现,Break 用于结束当前脚本段。

2. 文件存放与编码规范
• 路径:NPC脚本存放在服务端 MirServer\Mir200\Envir\Market_Def 目录。

• 文件名:通常对应 Merchant.txt 中NPC的编号(如“盟重老兵-3.txt”)。

• 编码:必须使用 ANSI 格式保存,否则游戏内显示乱码。修改脚本后,在M2控制台点击“重新加载NPC”即可生效,无需重启服务器。

二、HeroM2引擎常用命令大全

以下命令适用于HeroM2及衍生引擎(Sky、3KM2等),按功能分类列出高频指令。

1. 人物属性检测命令(#IF后使用)

命令格式 作用说明 示例

CheckLevel 检测人物等级 CheckLevel > 34 (等级大于34)

CheckJob 检测职业 CheckJob Warrior (战士)/Wizard(法师)/Taoist(道士)

CheckGold 检测金币数量 CheckGold 1000000 (金币≥100万)

CheckGameGold 检测元宝数量 CheckGameGold 500 (元宝≥500)

CheckItem 检测背包物品 CheckItem 金条 1 (是否有1个金条)

CheckBagSize 检测背包空位 CheckBagSize 5 (空位≥5)

CheckSlaveCount 检测宝宝数量 CheckSlaveCount < 1 (宝宝数小于1,用于限制宠物)

Random 随机概率 Random 3 (1/3概率触发)
2. 物品与货币操作命令(#ACT后使用)
命令格式 作用说明 示例

Give 给予物品 Give 裁决之杖 1

Take 扣除物品 Take 沃玛号角 1

AddGold 增加金币 AddGold 1000000

TakeGold 扣除金币 TakeGold 500000

GameGold + 增加元宝 GameGold + 50

TakeGameGold 扣除元宝 TakeGameGold 200
3. 地图传送与移动命令
命令格式 作用说明 示例

MapMove 传送到指定地图坐标 MapMove 3 330 330 (传送到盟重坐标)

Map 传送到地图随机点 Map 0150 (传送到石墓阵)

MonClear 清理当前地图怪物 MonClear
4. 变量与计算命令
命令格式 作用说明 示例

MOV / MOVR 赋值/随机赋值 MOV N$数量 10 (N$数量=10)<br>MOVR P1 100 (P1=0-99随机数)

INC / DEC 变量自增/自减 INC N$计数 1 (N$计数+1)

SMALL / LARGE 变量比较 SMALL N$计数 5 (判断N$计数<5)

三、脚本实战:编写一个“装备回收”功能

利用上述命令,编写一个包含条件检测、概率奖励的NPC脚本。
[@main]
欢迎使用装备回收系统。\ \
回收 **祖玛装备 x3** 可获得 **100元宝**,并有 **20%几率** 额外获得 **祝福油**。\ \
<开始回收/@recycle>

[@recycle]
#IF
CheckItem 绿色项链 3
CheckItem 紫碧螺 3
CheckItem 泰坦戒指 3
#ACT
Take 绿色项链 3
Take 紫碧螺 3
Take 泰坦戒指 3
GameGold + 100
MOVR N$随机数 100 ; 生成0-99随机数
#IF
Small N$随机数 20 ; 20%概率
#ACT
Give 祝福油 1
SendMsg 5 “回收成功!额外获得祝福油。”
#ELSESAY
回收成功,获得100元宝。\ \
\<返回/@main>
#ELSESAY
祖玛装备数量不足,每种都需要3个。\ \
\<返回/@main>


四、学习路径与调试技巧

1. 从模仿开始:不要直接写复杂脚本,先修改服务端自带的“新手向导”、“仓库管理员”等现有NPC,理解其逻辑。
2. 善用M2报错:脚本错误时,M2引擎控制台的“脚本错误”标签页会显示具体行号和错误原因(如命令拼写错误、参数数量不对)。
3. 变量选择:
◦ 临时变量(P0-P9):仅在当前NPC对话中有效,适合做临时计数。

◦ 个人变量(N$开头):人物在线期间有效,适合做任务进度记录。

◦ 全局变量(G$开头):全服玩家共享,适合做全服活动计数。

避坑提示:脚本中的物品名称、怪物名称必须与数据库(StdItems.DB、Monster.DB)中的 Name 字段完全一致,包括空格和符号,否则命令会失效。