Skip to content

套装暗改与加成

套装暗改是 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

常见问题

套装完全没反应

按顺序检查:

  1. config.yml 里的 Sets.enabled 是否为 true
  2. sets/ 文件是否是 .yml
  3. 根节点是否为 Sets:
  4. items 里的 ID 是否和掉落物 ID 一模一样。
  5. 物品库插件是否已加载。
  6. 改完是否执行 /gtmd reload

加成太不明显

先把测试值调大:

yaml
ownedModifier: "-100%"
missingModifier: "+100%"

确认逻辑生效后,再改回正式值,例如 -10%+10%

玩家已经拥有为什么还判定未拥有

检查两个地方:

  1. 玩家背包里的物品是否和配置中的物品 ID 一致。
  2. 掉落记录是否已经写入,可以用 /gtmd setitem 玩家名 物品ID check 看。