Mirserver

MonItems

怪物掉落配置目录,用于按怪物维护普通掉落、可挖物品和相关掉落内容。

目录作用

MonItems 是 Mir200\Envir 下的怪物掉落配置目录。

分组爆率编辑器:https://mon.bluem2.cn

文件命名

  • 默认使用怪物名称作为爆率文件名。
  • 怪物名称中如果带有 \,爆率文件名要改成用 - 连接。

例如,数据库怪物名为 魔龙教主\终极 时,对应爆率文件应写成 魔龙教主-终极.txt。

基础条目格式

语法

1/概率分母 物品名 数量

参数说明

字段说明
1/概率分母掉落概率。1/5 表示本条目有五分之一概率成立。
物品名掉落物品名称。
数量掉落数量。

结算规则

  • 每一行掉落条目单独结算。
  • 条目成立后,掉出该行指定的物品和数量。
  • 多行同时存在时,各行是否生效互不影响。

示例

1/5 金币 200
1/2 强效魔法药 1
1/5 强效太阳水 1

条件条目格式

语法

1/概率分母 物品名 数量 变量 检测符 检测值 变化值 [扣减时机]

参数说明

字段说明
1/概率分母基础掉落概率。
物品名掉落物品名称。
数量掉落数量。
变量用于条件判断的变量。
检测符变量与检测值的比较方式。
检测值参与比较的目标值。
变化值条件满足后执行的变量增减值。
[扣减时机]可选。控制变量变化是在爆出时生效,还是未爆出也生效。

检测符说明

检测符说明
>大于指定值时成立。
<小于指定值时成立。
=等于指定值时成立。
?大于或等于指定值时成立。
!小于或等于指定值时成立。
^以指定内容开头时成立。
`以指定内容结尾时成立。

结算规则

  • 先判断变量条件是否成立。
  • 条件成立后,再继续处理本条目的掉落概率。
  • 条目爆出后,可按设置增减对应变量。

示例

1/3 强效太阳水 1 $GAMEGOLD ? 100 -100
1/8 某区物品 1 $SERVERNAME = XX传奇1区
1/8 某物品 1 $USERID ^ head

同行权重掉落

语法

1/概率分母 物品1|权重1,物品2|权重2,物品3|权重3 数量

参数说明

字段说明
1/概率分母本条目的进入概率。
物品|权重同一条目中的候选物品及其权重。
数量实际掉落数量。通常写 1。

结算规则

  • 先判断本条目的进入概率。
  • 条目成立后,只会从当前条目列出的物品中随机产出一件。
  • 权重只在当前条目内部比较,数值越大,被选中的占比越高。

示例

1/5 屠龙|10,开天|5 1

强制权重模式

语法

1/99999998 物品名1|权重1,物品名2|权重2,物品名3|权重3 1 $GAMEGOLD ? 1 -1

参数说明

字段说明
1/99999998表示使用强制权重模式。
物品|权重当前奖励池内的候选物品及其权重。
数量实际掉落数量。通常写 1。
变量 检测符 检测值 变化值可选的条件判断与变量增减部分。

结算规则

  • 这类条目进入后,必定只产出一件物品。
  • 产出结果完全按当前条目中的权重决定。
  • 权重应使用非 0 数值。
  • 不适合用于金币这类直接数值掉落。

随机进入权重模式

语法

1/3 物品名1|权重1,物品名2|权重2,物品名3|权重3

参数说明

字段说明
1/3当前权重池的进入概率。
物品|权重当前条目中的候选物品及其权重。

结算规则

  • 先判断本条目是否进入结算。
  • 条目成立后,再从当前权重池中随机选出一件物品。
  • 权重只在当前条目内部生效。

随机必出组

语法

;GETITEMFLAG(3)
1/5 金币 200
1/2 强效魔法药 1
1/99999999 上古神甲 1
1/99999999 上古宝甲 1
1/99999999 上古披风 1
1/99999999 上古羽衣 1
1/99999999 上古道袍 1
1/99999999 上古长袍 1

参数说明

字段说明
;GETITEMFLAG(3)表示从随机必出组中抽取 3 件物品。
1/99999999表示该条目参与随机必出组。
其他普通条目仍按各自原有规则单独结算。

结算规则

  • 文件中的普通掉落条目仍按各自行处理。
  • 标记为 1/99999999 的条目可参与随机必出组。
  • GETITEMFLAG(3) 会从这组候选中随机取出指定数量的物品。

拆分文件与 #CALL

当一只怪物的掉落很多时,可以拆到多个子文件,再从主文件调用:

#CALL [MonDropItems\药品爆率.txt]
#CALL [MonDropItems\衣服爆率.txt]
  • 把药品、装备、材料分开维护。
  • 多只怪物共用同一组掉落模板。
  • 降低单文件过长带来的排查成本。

用 #CALL 控制掉落条件与结果

如果某条掉落需要先跑脚本判断,再决定是否允许掉出,可以在条目中挂 #CALL:

这里触发的检测标签和结果标签,写在 QMapEvent-0.txt 中。

1/1 金条|22,祝福油|33,力量戒指|44,麻痹戒指|55,复活戒指|66 1 #CALL @爆出条件检测 @爆出物品执行
[@爆出条件检测]
#IF
CheckGameGold < 10
#ACT
Approve 0

[@爆出物品执行]
#ACT
GameGold - 10
  • 先进入检测标签。
  • 如果检测阶段执行 Approve 0,当前条目不再继续结算;Approve 1 则允许继续。
  • 如果检测通过,再继续判断这一行本身的掉落概率。
  • 只有本行真正爆出物品后,结果标签才会执行。

结果标签里可直接读取本次掉落上下文:

  • <$PARAM(1)>:物品名
  • <$PARAM(2)>:Looks
  • <$PARAM(3)>:怪物名
  • <$PARAM(4)>:地图名
  • <$PARAM(5)>:X 坐标
  • <$PARAM(6)>:Y 坐标

排查顺序

爆率写法已经正确,但实际结果不符合预期时,建议按下面顺序检查:

  1. 先确认爆率文件编码是否为 ANSI。
  2. 再确认怪物名和爆率文件名是否一一对应,带换行的怪物名是否已改成 - 文件名。
  3. 再检查是否叠加了其他限爆脚本、引擎限爆或物品掉落限制。
  4. 如果使用了 #CALL,再检查检测标签是否提前执行了 Approve 0。
  5. 如果使用了个人爆率调整命令,再确认当前个人爆率是否被调低。

测试时,优先使用普通账号和正常击杀流程,避免 GM 权限、秒杀脚本或异常死亡流程干扰结果。

与个人爆率命令的关系

MonItems 决定掉落条目本身的配置;个人爆率命令会继续影响实际结果。

相关阅读