一、 优先确认:是完全不掉还是仅不掉好装备
动手修改前,先做基础测试。击杀怪物后,观察地面是否出现金币、药水或垃圾物品。
- 完全空白:怪物死亡后地面无任何物品,甚至连金币都没有。属于爆率文件缺失或未加载。
- 只掉垃圾:掉落金币、药水、回城卷,但不出武器、衣服、首饰。属于装备爆率参数过高或物品名称不匹配。
- 客户端看不见:服务器日志显示掉落,但游戏画面不显示。属于补丁缺失或内挂过滤问题。
二、 核心检查:爆率文件路径与命名规则
服务端爆率文件位于 MirServer\Mir200\Envir\MonItems 文件夹,每个怪物对应一个 .txt 文件。
1. 文件名必须严格匹配:文件名称必须与怪物数据库(Monster.DB)中的名称完全一致。例如,数据库怪物名为“白野猪”,爆率文件必须是 白野猪.txt。多一个空格或少一个字(如“白野猪 .txt”)都会导致不爆。
2. 文件编码与格式:用记事本或 Notepad++ 打开文件,检查编码格式。必须为 ANSI 编码。若为 UTF-8,引擎无法识别,会导致爆率失效。修改后保存。
3. 内容语法:标准格式为 1/1 金币 1000(1/1 为概率,金币为物品名,1000 为数量)。检查行尾是否有非法字符或多余的空格。
三、 数据库与引擎设置:怪物属性与爆率开关
爆率文件正常但依然不掉,需检查怪物底层属性。
1. 怪物数据库(Monster.DB):使用 DBC2000 或数据库工具打开 Monster.DB。找到对应怪物,检查以下字段:
- RACE 字段:部分版本需设置为 81 才具备掉落物品的AI行为。
◦ 爆率开关字段:查找是否有 NoDropItem 或 DropDisabled 字段,值必须为 0(关闭)或 FALSE。
2. M2 引擎全局控制:打开 M2Server → 选项 → 参数设置 → 怪物控制。检查“怪物掉落物品”是否被勾选。部分版本有“全局爆率倍数”设置,若设为 0 则全服无掉落。
3. 地图禁爆参数:检查 Mir200\Envir\MapInfo.txt。地图配置行若包含 NODROPITEM 或 DROP=0 参数,该地图内所有怪物均不会掉落物品。
四、 脚本级拦截:QFunction 与机器人脚本
高级版本通常使用脚本控制爆率,会覆盖文件设置。
1. 死亡触发脚本:打开 Mir200\Envir\Market_Def\QFunction-0.txt。搜索 [@KillMonster] 或 [@OnKillMob] 段。若脚本中包含 NODROP 命令或清空爆物变量的操作,会阻止自然掉落。
2. 机器人脚本:检查 Mir200\Envir\Robot.txt 及其加载的脚本。部分版本通过定时任务重置爆率变量,导致特定时间段不掉装备。
3. 爆率重载:修改完任何配置后,必须在 M2Server 的“控制”菜单中点击“重新加载 → 怪物爆率”。若修改了数据库,则需重启整个服务端。
五、 客户端显示问题:补丁与过滤
若服务器日志显示掉落,但客户端看不见,属于显示层问题。
1. 内挂物品过滤:按 F12 打开内挂,检查“物品”页签。确认“隐藏垃圾物品”或“自定义过滤”未勾选,导致装备被屏蔽显示。
2. 补丁完整性:客户端缺少 Data 目录下的 .wil 或 .wzl 文件,会导致物品贴图无法加载,看起来像没掉(实际已掉落,拾取后背包可见)。
3. 地面显示时间:检查 M2 的“游戏参数 → 地面物品显示时间”,若时间过短(如 1 秒),物品一闪即逝。
六、 快速测试与修复步骤
1. 强制测试:在爆率文件中添加一行 1/1 金条,重载爆率后击杀怪物。若掉金条,说明爆率系统正常,问题出在原装备名称错误或概率过低。
2. 日志排查:查看 Mir200\Log\M2Log.txt,搜索“爆率加载失败”或“MonItems Error”,定位具体报错文件。
3. 权限测试:使用 GM 账号(权限 10)测试。部分版本对普通玩家有爆率惩罚脚本,GM 账号可绕过脚本限制。
总结:90% 的“不掉装备”问题源于 MonItems 文件夹下的文件名错误或编码格式。优先检查文件名与怪物数据库名称是否逐字匹配,并确保文件编码为 ANSI。

