传奇脚本命令大全与实战学习手册

来源: 作者: 点击:
一、脚本基础结构与语法规则

1. 文件路径与格式
脚本文件均为纯文本格式(.txt),存放于服务端 Mir200\Envir 目录下。NPC脚本通常在 Market_Def 或 QuestDiary 文件夹。严禁使用Word等富文本编辑器,必须使用Notepad++或系统自带的记事本,保存时编码选ANSI,否则将导致乱码或M2报错。

2. 核心语法前缀
• #IF:条件判断,必须与 #ACT(执行动作)配对使用。格式为 #IF [条件] 换行 #ACT。

- [@]:标签跳转,用于标记脚本段落,如 [@Main] 为NPC默认对话入口。
• ;:注释符,该行分号后的内容会被引擎忽略,用于备注说明。

3. 基础执行逻辑
脚本严格遵循“条件-动作-反馈”结构。示例:检测等级并给予物品。

[@Main]
#IF
CHECKLEVEL 40 ; 检测等级是否≥40
#ACT
GIVE 屠龙 1 ; 执行:给予屠龙
SENDMSG 6 奖励已发放 ; 提示:绿色消息
#ELSEACT
MESSAGEBOX 等级不足 ; 条件不满足时弹窗


二、常用脚本命令分类速查

1. 条件检测命令(#IF段使用)

- CHECKLEVEL 数值:检测人物等级。
- CHECKITEM 物品名 数量:检测背包物品数量。
- CHECKGOLD 数值 / CHECKGAMEGOLD 数值:检测金币/元宝。
- CHECKJOB Warrior:检测职业(Warrior/Wizard/Taoist)。
- CHECKBAGGAGE:检测背包是否已满(满则条件成立)。

2. 物品与货币操作(#ACT段使用)

- GIVE 物品名 数量:给予物品(如 GIVE 金币 100000)。
- TAKE 物品名 数量:扣除物品。
- GAMEGOLD + 数值:增加元宝(GOM/GEE引擎)。
- GOLDCOUNT + 数值:增加金币。

3. 地图传送与移动

- MAPMOVE 地图编号 X Y:定点传送(如 MAPMOVE 3 330 330 传送到盟重)。
- MAP 地图名:随机传送至该地图某坐标。
- MonGen 怪物名 数量 时间:在当前地图刷怪(时间单位为分钟)。

4. 消息提示与界面

- SENDMSG 类型 内容:发送系统消息。类型0为全局公告,6为个人绿色提示。
- MESSAGEBOX 内容:弹出确认对话框。
- #SAY 文本:在NPC对话框显示文字。
- CLOSE:关闭NPC对话框。

5. 变量与跳转

- MOV 变量名 数值:赋值(如 MOV S10 已领取)。
- INC 变量名 数值:变量自增。
- GOTO @标签:跳转到指定标签段(如 GOTO @Reward)。

三、NPC脚本实战编写示例

1. 新手礼包NPC脚本
在 Market_Def 目录新建 新手礼包-3.txt(文件名对应地图NPC配置),写入以下内容:

[@Main]
#if
CHECKLEVELEX < 10 ; 检测等级小于10级
#act
GIVE 木剑 1
GIVE 布衣(男) 1
GIVE 金创药(小量) 5
GAMEGOLD + 100
SENDMSG 6 新手礼包领取成功!
#elseact
MESSAGEBOX 你的等级已超过10级,无法领取。


2. 副本传送NPC脚本
实现收费传送与等级检测:

[@Main]
#if
CHECKLEVEL 35
CHECKGAMEGOLD > 99
#act
GAMEGOLD - 100
MAPMOVE D001 50 50
SENDMSG 0 玩家[%s]进入了魔龙副本!
#elseact
MESSAGEBOX 等级不足35级或元宝不足100。


四、机器人脚本与定时任务(Robot.txt)

1. 自动公告脚本
编辑 Mir200\Envir\Robot.txt,添加定时任务:

#AutoRun NPC MIN 10 @AutoMsg

在 Robot_def 文件夹下的脚本中写入:

[@AutoMsg]
#act
SENDMSG 0 【系统】服务器运行正常,祝大家游戏愉快!


2. 定时清理地面垃圾
在Robot.txt中添加:

#AutoRun NPC MIN 30 @ClearItems

对应脚本:

[@ClearItems]
#act
CLEARMAPITEMS ; 清理全服地面物品


五、脚本调试与常见错误

• M2启动报错:检查脚本中是否缺少 #END(部分引擎要求)、括号不匹配或使用了全角符号(必须英文半角)。

- NPC点击无反应:确认 Merchant.txt 中的NPC坐标与脚本文件名是否对应。
• 变量不保存:个人变量(如S0-S99)需配合 SAVE 命令或特定引擎设置才能持久化。

- 刷怪不显示:MonGen.txt 中的地图编号错误,或怪物名称与 Monster.DB 数据库不一致。

关键点:修改脚本后,在M2Server控制台输入 @ReloadNpc 重载NPC,输入 @ReloadRobot 重载机器人脚本,无需重启服务端即可生效。