HERO引擎传奇问题汇总与对应修法

来源: 作者: 点击:
脚本不生效
M2 里“选项-功能设置-脚本设置”没勾启用 QFunction / 物品触发 / 脱装触发,脚本写得再对也不跑。
QFunction-0.txt 放错目录:HERO 里一般放 Mir200\Envir\QuestDiary\,不是 Market_Def,也不是 Envir 根目录。
编码用 UTF-8 或带 BOM,HERO 老版本只吃 ANSI/GBK,[@main] 被 BOM 头吃掉,NPC 点开空白。
Main.txt 里没 #INCLUDE QFunction-0.txt,主脚本不加载子脚本。
物品不触发:StdItems.DB 里 StdMode 错,回城卷不是 2、金条不是 18,Anicount 和 [@StdModeFuncxxx] 对不上。
改完别只点保存,QManage/QFunction 改完最稳关 M2 重启;HERO 有“刷新 NPC 脚本缓存 / 刷新功能脚本缓存”就先刷缓存。
日志看 Mir200\Log\M2Server-日期.log、ScriptError.log,格式是 文件名 Line 行号:Unknown command / Syntax error,Notepad++ 按 Ctrl+G 跳行改。

NPC 点不开
MerChant.txt 里地图号、坐标、脚本名对不上。
Market_Def 里没这个 NPC 文件,或文件里 [@main] 下面没 #ACT #SAY。
NPC 坐标在墙里/地图没加载,进了图也点不到。
文件名大小写:QFunction-0.TXT 和 QFunction-0.txt 在某些系统不是同一个。
客户端 Data/Magic.wzl/StateHead.wzl 补丁没打,NPC 形象空着,点了像没反应。

怪物不攻击 / 不追人
Monster.DB 的 Race / RaceImg 错:鸡鹿是被动,主动怪 RaceImg 填 0 就变木头人(沃玛战士类 19、祖玛卫士类 47 这种按库里同类型抄)。
M2-参数设置-怪物设置:“怪物主动攻击”没开,视野 0,反应时间写成几万毫秒。
MonGen.txt 刷怪坐标在阻挡层,怪刷出来卡墙角,像不攻击。
AIMap.txt 丢了/坏了,怪物寻路失效。
地图是安全区/禁战图,怪被地图参数压住。
自己 GM 隐身/管理员权限,怪不咬管理号,建普通号再测。

攻速不生效
!setup.txt 里 AttackSpeedLimit=5、AttackSpeedLimitLevel=33,低等级攻速被压死,改 AttackSpeedLimit=100、AttackSpeedLimitLevel=0。
LevelGrowth.DB 里 AttackSpeedMax 把某等级前攻速上限卡成 5。
QFunction-0.txt 里 CHECKLEVELEX < 34 就清/限制攻速,条件写反。
武器 DB 的 AttackSpeed 字段方向反了:数值小才快,升级加错成更大=更慢。
M2 战斗参数攻击延迟 300ms、移动延迟 200ms 正常,设成 2000 就像没攻速。
封挂/网关限速没关,服务端出了刀客户端被丢包,体感空刀。

英雄 / 合击放不出
M2 功能设置里“允许召唤英雄 / 开启合击”没勾,GameConfig.txt 里 OpenHeroHeth=0 要改 1。
英雄在“休息”状态,Ctrl+E 切攻击/跟随。
怒气没满、火龙之心没戴在英雄装备位、主号或英雄蓝不够,合击键按死也没用。
HeroDB 里 HumHero 表结构坏掉,英雄召出来属性全 0,用引擎自带数据库修复工具重建。
合击技能文件在 Mir200\Envir\Skill\ 里参数坏了(冷却 -1、蓝耗几万),技能学了也放不出。
地图禁战/安全区,合击属于攻击行为直接被拦。

任务卡流程
ISACCEPT / COMPLETEQUEST 没配对,接了没记、完了没结。
进度变量用中文名、空格名,<$HUMAN(任务 1)> 存不进去。
杀怪回调里怪物名和 MonGen/MonItems 不一致,计数永远不满。
IF 后没条件直接 #ACT,HERO 有的版本整段跳过。

任务 NPC 没 #CALL 到 QuestDiary\任务\xxx.txt,点 NPC 只说欢迎。
客户端没任务栏 UI 插件,服务端发完了左边也不弹分类页。

装备属性不显示 / 乱码
StdItems.DB 的 Looks 图标编号在客户端 Data 里没有对应 wzl 帧。
登录器和引擎不配套,属性字段新引擎有、老客户端不画。
绑定/极品字段错,发出来持久 0、重量 0、名字空。
装备升级脚本 @SuperMake 把“攻速”加成写进“防御”字段,面板当然没攻速。

登录 / 数据异常
账号库里没这号,或 HERO 配 MD5 但库里是明文密码。
DBServer 没起,LoginSrv 能进但选角色后卡死。
自动保存关了,掉线不写盘,再上物品/金币回退。
HeroDB 权限不够,引擎读不了 Accounts / Chars / HumData。

网关 / 进游戏卡顿
7000/7100/7200 端口被占用,netstat -ano 查完改网关配置。
单机填 127.0.0.1,外网填公网 IP,引擎/网关/登录器列表三处不一致就一直“服务器维护中”。
CenterServer 没起,跨服/多线数据不同步。
Redis/缓存异常、在线人数超机器负载,M2 报内存溢出、玩家瞬退。

CALL / #GOTO 跳转失效

CALL 路径写中文、双斜杠、中括号乱加;HERO 是 #CALL 路径\文件 @标签 或按自己版本手册来。

GOTO @xxx 但文件里没 [@xxx],M2 报 GOTO @xxx 不存在。
ScriptGotoCountLimit 默认小,复杂菜单多层跳转被截,死循环改 CALL 拆分。
Linux 跑 HERO 区分大小写,Market_Def 和 market_def 两回事。

HERO 专属坑
HERO 用 lua 的地方 Human:XXX() 首字母大写别抄成 human:xxx()。
HERO 物品触发看 Anicount + StdMode,不是光写 [@UseItem] 就灵。
老 HERO 不支持新 GOM 命令(MapMoveToPlayer、ChangeModeEx 等),照抄必 Unknown command。
脚本加密验证开了,没加密的 QFunction-0.txt 直接不执行,关“强制验证脚本加密”。

排错顺序(HERO 专用)
1. M2 日志先读红字:文件名+行号+命令名
2. 看文件在不在对目录:Market_Def / QuestDiary / MapQuest_def 别混
3. 编码转 ANSI,去 BOM,去全角标点,去行尾空格
4. M2 里脚本开关全勾:QFunction、QM、物品触发、脱装触发
5. 数据库对齐:StdItems / Monster / Magic / HeroDB 名字一字不差
6. 最小测试:NPC 里写 #SAY 你好,能出字=加载链通;不出=路径/编码/开关
7. 攻速/合击/英雄再查 M2 参数和 HeroDB,不全信脚本
8. 改 QManage/QFunction/MonGen/MapInfo 后,不确定就关 M2 重启,别跟缓存赌命

HERO 引擎的问题 90% 不是“命令不会写”,是开关没开、编码坏了、路径放错、数据库名对不上、合击/英雄功能在 M2 里没勾。先把 M2 参数、HeroDB、ANSI 编码、QuestDiary 路径这四件事坐实,再谈写复杂脚本。