传奇脚本定义与功能解析

来源: 作者: 点击:
脚本本质:服务端运行的逻辑指令集

传奇脚本是纯文本文件(.txt),由一系列条件判断与执行指令构成。它运行于服务端(Mir200\Envir目录),而非客户端。当玩家在游戏中触发特定动作(如点击NPC、使用物品、升级)时,服务端引擎(M2Server)读取并解析对应脚本,执行预设逻辑(如扣除金币、传送地图、发放装备)。

脚本分类:从NPC到全局触发

传奇脚本按功能分为四大类,均位于服务端 MirServer\Mir200\Envir 目录下:

1. NPC交互脚本(Market_Def目录)

这是最常见的脚本类型,控制游戏内所有NPC的功能。
- 文件位置:Envir\Market_Def\ 目录下,文件名与 Merchant.txt 中登记的NPC一一对应。
- 功能示例:传送NPC的坐标传送、商店NPC的物品买卖、任务NPC的对话与奖励发放。

2. 系统触发脚本(QFunction-0.txt)

处理非NPC触发的全局事件,是脚本的“总控中心”。
- 文件位置:Envir\Market_Def\QFunction-0.txt。
• 触发场景:

◦ 升级触发:[@PlayLevelUp],玩家升级时自动执行(如送装备)。

- 物品使用:[@StdModeFuncX],双击物品触发(如经验卷轴)。
◦ 死亡触发:[@PlayDie],玩家死亡时执行(如爆装备)。

3. 登录脚本(QManage.txt)

处理玩家上线时的初始化逻辑。
• 文件位置:Envir\Market_Def\QManage.txt。

- 典型应用:[@Login] 标签,玩家登录时自动检测并发放首充奖励、设置每日签到状态、初始化变量。

4. 地图与任务脚本(MapQuest_def目录)

绑定于特定地图的触发事件。
• 文件位置:Envir\MapQuest_def\。

- 应用场景:进入地图自动触发剧情、怪物死亡触发任务进度更新、区域触发陷阱(如掉血)。

脚本与插件的区别

玩家常混淆“脚本”与“插件”,二者本质不同:
• 脚本:明文文本,无需编译,通过引擎直接解析。功能限于游戏内逻辑(给物、传送、检测)。修改后热加载(Reload)即可生效。

- 插件:编译后的程序(.dll或.exe),需嵌入引擎。功能可扩展至硬件层(如封挂、多线程处理)。修改需重启服务端。

脚本基础语法结构

所有脚本均遵循 “条件→动作”(IF-ACT)结构:

[@Main] ; 标签,NPC对话入口
#IF ; 条件判断开始
CHECKLEVELEX > 35 ; 检测等级是否大于35
CHECKGOLD 10000 ; 检测金币是否够1万
#ACT ; 条件成立执行的动作
TAKE 金币 10000 ; 扣除金币
GIVE 屠龙 1 ; 给予屠龙
SENDMSG 6 兑换成功!
BREAK ; 终止脚本,防止继续执行

核心指令:
• #IF:条件分支(检测等级、物品、金币)。

• #ACT:执行动作(GIVE给物、TAKE扣物、MAPMOVE传送)。

• #SAY:显示对话文字。

• BREAK:必须添加,防止逻辑穿透。

脚本的修改与生效流程

1. 定位文件:根据功能需求找到对应目录下的 .txt 文件(如修改老兵传送,找 Market_Def\盟重省\老兵-3.txt)。
2. 编辑脚本:使用 Notepad++ 等工具修改,保存为 ANSI 编码(避免乱码)。
3. 重载生效:在 M2Server 控制台点击“重新加载NPC”或输入 @reloadnpc,无需重启服务端。

脚本是传奇版本功能的逻辑载体,本质是服务端响应玩家操作的自动化规则集。