套装暗改与加成
套装暗改是 GTMobDrops 的核心功能之一。它会根据玩家已经拥有和还缺少的套装部件,动态调整对应部件掉率。
常见用途:
- 玩家一直重复出同一件时,降低已拥有部件掉率。
- 玩家缺最后一件时,提高未拥有部件掉率。
- 让套装产出更接近 RPG 服务器需要,促进玩家交易和市场流通。
套装配置放在哪里
推荐放在:
text
plugins/GTMobDrops/sets/可以继续分文件夹:
text
plugins/GTMobDrops/sets/
newbie.yml
dragon/dragon_set.yml
dungeon/ice/ice_set.yml旧版 sets.yml 仍兼容。新服建议用 sets/ 文件夹。
物品 ID 格式
套装里的 items 必须和掉落配置里的物品 ID 对得上。
text
DIAMOND_SWORD 原版物品
ni:dragon_sword NeigeItems
mm:dragon_sword MythicMobs 物品
ia:namespace:item_id ItemsAdder
oa:item_id Oraxen
sx:item_id SX-Item / SXItem / VirtuaItem原版物品直接写 ID,不需要写 vanilla:。
最基础套装
创建:
text
plugins/GTMobDrops/sets/dragon/dragon_set.yml写入:
yaml
Sets:
dragon_set:
name: "&6龙魂套装"
items:
- "ni:dragon_sword"
- "ni:dragon_helmet"
- "ni:dragon_chestplate"
- "ni:dragon_leggings"
- "ni:dragon_boots"
darkDrop:
enabled: true
ownedModifier: "-10%"
missingModifier: "+10%"
bonusRate: "0%"效果:
- 玩家已经拥有的部件,掉率降低 10%。
- 玩家还没有的部件,掉率提高 10%。
- 让玩家更容易凑齐套装,减少同一部件重复产出。
inverse 写法
如果未拥有部件的调整想和已拥有部件相反,可以写 inverse。
yaml
Sets:
dragon_set:
name: "&6龙魂套装"
items:
- "ni:dragon_sword"
- "ni:dragon_helmet"
- "ni:dragon_chestplate"
- "ni:dragon_leggings"
- "ni:dragon_boots"
darkDrop:
enabled: true
ownedModifier: "-15%"
missingModifier: "inverse"效果:
- 已拥有部件:降低 15%。
- 未拥有部件:提高 15%。
公式模式
公式模式适合更精细的服务器。
你可以让已拥有数量、缺失数量直接参与计算。
yaml
Sets:
dragon_set:
name: "&6龙魂套装"
items:
- "ni:dragon_sword"
- "ni:dragon_helmet"
- "ni:dragon_chestplate"
- "ni:dragon_leggings"
- "ni:dragon_boots"
darkDrop:
enabled: true
formula:
enabled: true
owned: "{drop_rate} * (1 - 0.02 * {owned_count})"
missing: "{drop_rate} * (1 + 0.01 * {missing_count})"含义:
{drop_rate}:当前物品原本掉率。{owned_count}:玩家已拥有本套装部件数量。{missing_count}:玩家还缺少的本套装部件数量。
效果:
- 已拥有越多,重复掉落越低。
- 缺失越多,缺失部件越容易出。
bonusRate 独立加成
bonusRate 是套装独立掉率加成,可以增加,也可以减少。
yaml
Sets:
dragon_set:
name: "&6龙魂套装"
items:
- "ni:dragon_sword"
- "ni:dragon_helmet"
darkDrop:
enabled: true
ownedModifier: "-10%"
missingModifier: "+10%"
bonusRate: "5%"效果:
- 这套装相关物品额外获得 5% 加成。
- 暗改仍然按
darkDrop处理。
如果你只想做暗改,不想给额外加成:
yaml
bonusRate: "0%"提示消息
可以让玩家看到套装加成提示。
yaml
Sets:
dragon_set:
name: "&6龙魂套装"
items:
- "ni:dragon_sword"
- "ni:dragon_helmet"
darkDrop:
enabled: true
ownedModifier: "-10%"
missingModifier: "+10%"
bonusRate: "5%"
showTip: true
tipMessage: "&e[套装] &7{set_name}: &a+{bonus}%"如果服务器刷屏,就把 showTip 关掉。
原版物品套装
yaml
Sets:
diamond_set:
name: "&b钻石套装"
items:
- "DIAMOND_SWORD"
- "DIAMOND_HELMET"
- "DIAMOND_CHESTPLATE"
- "DIAMOND_LEGGINGS"
- "DIAMOND_BOOTS"
darkDrop:
enabled: true
ownedModifier: "-10%"
missingModifier: "inverse"
bonusRate: "10%"效果:
- 玩家凑钻石套装时,缺哪件更容易出哪件。
- 已有部件重复掉落概率下降。
和怪物掉落怎么关联
套装 items 里写的物品,需要在怪物掉落或掉落池里真实出现。
怪物掉落:
yaml
DragonKing:
enabled: true
drops:
- "ni:dragon_sword 1 0.02"
- "ni:dragon_helmet 1 0.03"
- "ni:dragon_chestplate 1 0.03"
- "ni:dragon_leggings 1 0.03"
- "ni:dragon_boots 1 0.03"套装:
yaml
Sets:
dragon_set:
name: "&6龙魂套装"
items:
- "ni:dragon_sword"
- "ni:dragon_helmet"
- "ni:dragon_chestplate"
- "ni:dragon_leggings"
- "ni:dragon_boots"
darkDrop:
enabled: true
ownedModifier: "-10%"
missingModifier: "+10%"这样 GTMobDrops 才知道这些掉落物属于同一套装。
rateBoost 独立物品加成
rateBoost/ 用来给某个物品绑定独立加成属性。
创建:
text
plugins/GTMobDrops/rateBoost/dragon/dragon_sword.yml写入:
yaml
singleItemBoost:
dragon_sword:
itemId: "ni:dragon_sword"
caAttribute: "龙剑掉率"效果:
- 玩家身上如果有 CraneAttribute 属性
龙剑掉率,会影响ni:dragon_sword。 - 其他物品不受这个属性影响。
也可以写 AP 属性:
yaml
singleItemBoost:
dragon_sword:
itemId: "ni:dragon_sword"
apAttribute: "龙剑掉率"什么时候用 rateBoost,什么时候用掉落池 attributeSource
| 需求 | 推荐 |
|---|---|
| 整个池子都吃一个属性 | 掉落池 attributeSource |
| 只有某个物品吃一个属性 | rateBoost/ |
| 某个物品不吃任何加成 | 物品 bonus.ignoreAll: true |
| 某个物品只吃部分加成 | 物品 bonus.allowedSources |
测试套装
重载:
text
/gtmd reload查看套装:
text
/gtmd sets
/gtmd sets dragon_set查看玩家记录:
text
/gtmd sets list 玩家名手动添加一件记录测试:
text
/gtmd setitem 玩家名 ni:dragon_sword add检查记录:
text
/gtmd setitem 玩家名 ni:dragon_sword check移除记录:
text
/gtmd setitem 玩家名 ni:dragon_sword remove常见问题
套装完全没反应
按顺序检查:
config.yml里的Sets.enabled是否为true。sets/文件是否是.yml。- 根节点是否为
Sets:。 items里的 ID 是否和掉落物 ID 一模一样。- 物品库插件是否已加载。
- 改完是否执行
/gtmd reload。
加成太不明显
先把测试值调大:
yaml
ownedModifier: "-100%"
missingModifier: "+100%"确认逻辑生效后,再改回正式值,例如 -10%、+10%。
玩家已经拥有为什么还判定未拥有
检查两个地方:
- 玩家背包里的物品是否和配置中的物品 ID 一致。
- 掉落记录是否已经写入,可以用
/gtmd setitem 玩家名 物品ID check看。
