传奇服务端的脚本不靠双击运行,全部由 M2Server.exe(引擎主程序)在启动和运行中按事件调用。英雄脚本位置随引擎版本不同有差异,但都钉在 Mir200\Envir 底下,普通玩家脚本和英雄脚本是两套目录,混放不生效。
一、英雄脚本在各引擎的真实存放点
GOM 引擎:英雄合击与行为脚本多在 Mir200\Envir\QuestDiary\Hero 或 Mir200\Envir\Hero 下,文件如 HeroMain.txt、HeroSkill.txt、HeroAttr.txt;英雄合击触发段也可能写在 Envir\MapQuest_def 里以 HeroHj、HeroTask 开头的文件。
GEE 引擎:独立目录 Mir200\Envir\HeroScript,核心文件 HeroControl.txt、HeroLevel.txt、HeroCall.txt;技能与控制也可能直接放 Envir 根目录如 HeroSkill.txt、HeroFollow.txt,合击机器人段在 Envir\Robot_def\HeroHjRobot.txt。
HERO 引擎:英雄 NPC 与指令脚本集中在 Mir200\Envir\Market_Def(如英雄导师-3.txt),行为触发在 QFunction-0.txt([@HeroDeath]、[@HeroLevelUp]、[@HeroAttack]、[@HeroMagTagFuncX]),登录加载在 MapQuest_def\QManage.txt 的 [@Login] 段。
部分端另立 Mir200\Envir\HeroQuestDiary、HeroMarket_def、HeroNpc_def 做完全隔离,并在 Envir\Hero.ini 或 Hero.txt 里写 HeroEnable=1 / HERO_ENABLE=1 才加载。
二、普通脚本与英雄脚本的目录边界
玩家功能脚本:Envir\QuestDiary(任务/功能)、Envir\Market_Def(NPC 对话)、Envir\MapQuest_def(地图触发 QManage/QFunction)、Envir\Robot_def(定时机器人)。
英雄脚本:必须进带 Hero 标识的平行目录(QuestDiary\Hero、HeroScript、HeroQuestDiary 等),把英雄逻辑写进普通 QuestDiary 不会被识别。
NPC 脚本本体在 Market_Def\地图名\NPC名-编号.txt,Merchant.txt 只登记 NPC 坐标与脚本名,不写逻辑。
三、脚本在哪“运行”、怎么被调用
启动加载:开引擎控制器→启动 LoginSrv/DBSrv/GameSrv/M2Server,M2Server.exe 读 Config 下的 M2Server.ini、Setup.txt,扫 Envir 各目录把 txt 编译进内存,HeroEnable 开关决定英雄脚本是否进调用表。
事件触发:玩家点英雄导师 NPC→引擎读 Market_Def 对应 txt 的 #IF/#ACT 段;英雄升级/死亡/攻击→QFunction-0.txt 里 [@HeroLevelUp] 等标签被实时调用;合击怒满按 Ctrl+S→Robot_def 或 HeroHj 段算伤害;登录建英雄→QManage.txt [@Login] 初始化。
定时脚本:Robot_def\RobotManage.txt 配执行间隔,自动喝药、自动练功、合击机器人走这块,不是独立程序。
数据库配合:英雄等级/技能/属性存 HeroDB(DBC2000 管),脚本只做逻辑跳转和变量读写,改 DB 结构要重启 M2,改 txt 逻辑热重载即可。
四、改完脚本怎么让它生效
QuestDiary 或 Hero 下功能脚本改完:M2 控制台“控制→重新加载→重新加载脚本”或命令行 .reloadscript / reloadquest。
NPC 脚本改完:控制台“重新加载所有NPC”或 reloadnpc。
QFunction/QManage 改完:reloadqf / 重新加载QF,涉及登录逻辑建议重启 M2。
Robot_def 改完:重新加载机器人脚本。
路径搬过家:在 Setup.txt 查 HeroScriptPath 字段同步新路径,否则引擎按旧路径扫不到。
编码用 ANSI/GBK,记事本别存 UTF-8 BOM,中文变乱码直接断解析。
五、找不准位置时的定位法
服务端根目录搜 “Hero” 关键词,把 Hero.ini、HeroScript 文件夹、HeroSkill.txt、QFunction-0.txt 里 [@Hero 开头标签抓出来对照。
开 M2 看启动日志,会打印“加载英雄脚本:Mir200\Envir\HeroScript\HeroControl.txt”这类行,路径直接告诉你。
引擎控制器“脚本设置”页有英雄脚本默认路径按钮,点“打开目录”跳的就是本服真实位置。
英雄脚本不在 exe 同级、不在客户端、不在 DB 文件夹,只在 Mir200\Envir 内部;脚本本身不会“自己跑”,是 M2Server 在玩家操作、战斗计算、定时节拍里按标签调它,HeroEnable 没开或放错普通 QuestDiary 目录,改一万次也不生效。

