一、脚本文件存放路径与分类
传奇脚本是纯文本文件,存放在服务端 MirServer\Mir200\Envir 目录下,不同功能对应不同子文件夹:
- NPC脚本:Market_Def\ 文件夹。每个NPC对应一个 .txt 文件,文件名必须与 MerChant.txt 中登记的NPC名称完全一致。
- 全局功能脚本:Market_Def\QFunction-0.txt。负责处理物品使用、升级触发、杀人杀怪等全局事件。
- 登陆脚本:MapQuest_def\QManage.txt。玩家上线时自动执行。
二、NPC脚本基础结构与语法
一个标准的NPC脚本由 [@标签名] 分段,@main 是默认入口。核心语法遵循“检测-执行-显示”逻辑。
基础框架示例(新手奖励NPC):
[@main]
欢迎来到新手村,等级达到10级可领取奖励。\
<领取奖励/@领取> <离开/@exit>
[@领取]
#IF
CheckLevel 10
#ACT
Give 金条 1
Give 乌木剑 1
SendMsg 5 奖励领取成功!
#ELSESAY
你的等级不足10级,无法领取。
代码解析:
• #IF:条件检测段,只能写判断命令(如 CheckLevel 检查等级)。
• #ACT:条件满足后执行的动作(如 Give 给物品)。
• #SAY / #ELSESAY:显示对话内容,#ELSESAY 是条件不满足时的提示。
• \:换行符;<文字/@标签>:可点击的按钮,点击后跳转到 [@标签] 段落。
三、全局功能脚本(QF)制作
QFunction-0.txt 用于处理非NPC交互的事件,如使用物品、升级触发。标签名由引擎固定或自定义。
1. 物品触发脚本(双击物品生效)
首先在数据库设置物品的 StdMode 和 AniCount 字段(如 AniCount=100),然后在QF中编写:
[@StdModeFunc100]
#ACT
SendMsg 5 你使用了特效物品!
MapMove 0 330 330
2. 升级触发脚本
[@PlayLevelUp]
#IF
CheckLevel 35
#ACT
SendMsg 5 恭喜你达到35级,解锁新技能!
四、常用命令速查
- 检测类:CheckLevel 等级(等级)、CheckItem 物品名 数量(背包物品)、CheckGold 金币数(金币)。
- 执行类:Give 物品名 数量(给物品)、Take 物品名 数量(扣物品)、MapMove 地图号 X Y(传送)。
- 变量操作:MOV N1 100(赋值变量N1为100)、INC N1 1(变量N1自增1),配合 CheckVar 进行条件判断。
五、脚本生效与调试流程
1. 修改脚本:用记事本或Notepad++修改脚本文件,保存为ANSI编码(避免乱码)。
2. 重载脚本:在M2Server控制台(M2→查看→列表信息)点击“重新加载NPC脚本”和“重新加载功能脚本(QF)”。
3. 查看报错:修改后若M2报错,检查命令拼写、空格、变量是否重复定义。常见错误包括将执行命令误写在 #IF 段,或标签名不匹配。
六、进阶:任务脚本逻辑
结合变量可实现复杂的任务流程(接取→杀怪→完成):
[@接任务]
#IF
CheckVar T100 = 0
#ACT
SetVar T100 = 1
SendMsg 5 任务已接取:杀死10只鸡。
[@杀鸡触发] // 此段写在QF的杀怪触发里
#IF
CheckVar T100 = 1
Random 鸡
#ACT
Inc N1 1
#IF
CheckVar T100 = 1
Large N1 9
#ACT
SetVar T100 = 2
SendMsg 5 任务完成,回去交任务吧。

