强效太阳水在Hero引擎里改source和DuraMax不生效,是因为方向错了。Hero引擎的物品堆叠不用source控制,也不靠DuraMax决定堆叠数量。
Hero引擎的堆叠字段
Hero引擎物品堆叠主要看Reserved字段,最大支持255个。
DuraMax在Hero引擎里通常表示持久、次数或耐久,不是堆叠数量。source一般用于物品来源或特殊标记,也不是堆叠开关。
Hero引擎堆叠限制
Hero引擎的堆叠支持范围比较窄,通常只支持StdMod为40、41的常规物品,以及英雄模式下分类17、18的金针和幸运符。
强效太阳水属于药品类,标准物品类型通常不在这个范围内。所以即使把Reserved改成6、10、50,游戏里买出来仍然不会堆叠。
为什么重新加载后没变化
除了字段本身不对,还要看是否真正重载了物品数据库。只点重新加载有时不会刷新StdItem.DB,必须完全重启M2Server。
如果DBC2000数据库没有保存,或者保存后没有关闭再重新打开,M2Server可能仍然读取旧数据。
另外,已经刷出来的物品不会自动更新。修改数据库后,背包里原有的强效太阳水仍然是旧状态,只有重新刷出的物品才会按新配置生成。
排查步骤
先用DBC2000打开StdItem.DB,找到强效太阳水。
确认它的StdMod值。如果不是40或41,Hero引擎原生不支持它堆叠。
如果StdMod是40或41,把Reserved改成目标堆叠数量,例如6。
保存数据库后关闭DBC2000。
完全停止M2Server,再重新启动,不要用重新加载。
用@make或NPC重新刷一个强效太阳水测试。
如果仍然不堆叠,说明该物品类型不在Hero引擎堆叠支持范围内。
替代方案
如果版本必须让药品堆叠,可以考虑换支持物品堆叠的引擎,例如GOM、LEGEND、HGE等。GOM和LEGEND通过OverLap字段控制堆叠,DuraMax设置堆叠数量。
也可以不改动引擎,用脚本实现假堆叠。例如背包内相同药品达到一定数量时,通过脚本回收多余物品,或发放一个带数量的特殊道具。这种方式不依赖数据库堆叠字段,但需要脚本配合。
如果当前版本已经支持部分物品堆叠,可以先拿金针或幸运符测试Reserved字段。确认Reserved生效后,再判断强效太阳水是否真的被引擎限制。

