传奇脚本用于控制NPC对话、任务触发、物品发放等逻辑,主要通过Q语言或LUA实现,具体取决于服务端引擎类型。常见引擎包括Hero、Mir2、HGE,本文以广泛使用的Hero引擎为例说明。
脚本存放于服务端目录的Mir200EnvirQuestDiary下,按功能分文件夹管理,如“登录脚本”、“杀怪奖励”、“NPC对话”。每个脚本文件为纯文本格式(.txt),编码必须为ANSI,否则中文会乱码。
基础结构包含触发条件与执行动作。例如玩家点击NPC时触发对话:
[@main]
IF
ACT
SENDMSG0你好,冒险者!
其中[@main]是默认入口标签,#IF后可加判断条件(如CHECKITEM金币100),#ACT后为执行命令。
常用命令包括:
CHECKITEM物品名数量:检测背包是否有指定物品;
TAKE物品名数量:扣除玩家物品;
GIVE物品名数量:给予玩家物品;
MOVEMAP地图编号XY:传送玩家到指定坐标;
SET[变量名]值:设置自定义变量,用于任务进度记录。
任务脚本示例(收集10个鹿角):
[@main]
IF
EQUALQ_鹿角任务0
ACT
SETQ_鹿角任务1
SENDMSG0请帮我收集10个鹿角。
IF
EQUALQ_鹿角任务1
CHECKITEM鹿角10
ACT
TAKE鹿角10
GIVE金创药50
SETQ_鹿角任务2
SENDMSG0谢谢你,这是给你的奖励!
变量Q_鹿角任务存储在玩家数据中,重启服务端不会丢失。
地图怪物死亡触发奖励需在MonItems.txt或MonsterDrop.txt配置掉落,但精确控制(如首杀奖励)需用杀怪日志脚本。在QuestDiaryKillMon下创建对应怪物编号文件,例如:
[@KillMon_1001]
IF
CHECKMONMAP3
ACT
GIVE祝福油1
表示在地图3击杀编号1001的怪物时给予祝福油。
脚本调试方法:启动M2Server后,在控制台输入“!reloadquest”重载脚本,避免频繁重启。若NPC无反应,检查Npc_defNpc.txt是否正确关联脚本文件名,格式为“NPC名称脚本路径”。
高级功能包括定时任务、跨服交互、装备合成。例如每日签到:
[@main]
IF
CHECKLEVELEX>0
ACT
INCQ_签到天数1
GIVE金币10000
配合LoginQuest脚本,在玩家登录时自动执行。
脚本生效依赖服务端版本兼容性。Hero引擎不支持LUA,而部分新引擎仅支持LUA。编写前需确认命令手册,避免使用未实现的指令。所有脚本修改后必须保存为无BOM的ANSI编码,否则服务端读取失败。
脚本存放于服务端目录的Mir200EnvirQuestDiary下,按功能分文件夹管理,如“登录脚本”、“杀怪奖励”、“NPC对话”。每个脚本文件为纯文本格式(.txt),编码必须为ANSI,否则中文会乱码。
基础结构包含触发条件与执行动作。例如玩家点击NPC时触发对话:
[@main]
IF
ACT
SENDMSG0你好,冒险者!
其中[@main]是默认入口标签,#IF后可加判断条件(如CHECKITEM金币100),#ACT后为执行命令。
常用命令包括:
CHECKITEM物品名数量:检测背包是否有指定物品;
TAKE物品名数量:扣除玩家物品;
GIVE物品名数量:给予玩家物品;
MOVEMAP地图编号XY:传送玩家到指定坐标;
SET[变量名]值:设置自定义变量,用于任务进度记录。
任务脚本示例(收集10个鹿角):
[@main]
IF
EQUALQ_鹿角任务0
ACT
SETQ_鹿角任务1
SENDMSG0请帮我收集10个鹿角。
IF
EQUALQ_鹿角任务1
CHECKITEM鹿角10
ACT
TAKE鹿角10
GIVE金创药50
SETQ_鹿角任务2
SENDMSG0谢谢你,这是给你的奖励!
变量Q_鹿角任务存储在玩家数据中,重启服务端不会丢失。
地图怪物死亡触发奖励需在MonItems.txt或MonsterDrop.txt配置掉落,但精确控制(如首杀奖励)需用杀怪日志脚本。在QuestDiaryKillMon下创建对应怪物编号文件,例如:
[@KillMon_1001]
IF
CHECKMONMAP3
ACT
GIVE祝福油1
表示在地图3击杀编号1001的怪物时给予祝福油。
脚本调试方法:启动M2Server后,在控制台输入“!reloadquest”重载脚本,避免频繁重启。若NPC无反应,检查Npc_defNpc.txt是否正确关联脚本文件名,格式为“NPC名称脚本路径”。
高级功能包括定时任务、跨服交互、装备合成。例如每日签到:
[@main]
IF
CHECKLEVELEX>0
ACT
INCQ_签到天数1
GIVE金币10000
配合LoginQuest脚本,在玩家登录时自动执行。
脚本生效依赖服务端版本兼容性。Hero引擎不支持LUA,而部分新引擎仅支持LUA。编写前需确认命令手册,避免使用未实现的指令。所有脚本修改后必须保存为无BOM的ANSI编码,否则服务端读取失败。

