跳到主要内容

商店系统

EliteMobs 内置一套商店系统,让玩家可以花费和赚取**精英币(Elite Coins,EliteMobs 货币)**来购买 EliteMobs 装备和箭矢。商店通常通过冒险者公会中的铁匠和商人 NPC 访问,但也可以通过命令打开。

经济设置

正常使用商店时,请保持 EconomySettings.yml 中的 enableEconomy: true。动态商店和自定义商店的入口菜单会检查此设置,但管理员直接打开菜单的命令以及出售和箭矢 NPC 的路径没有相同的检查。它不是通用的访问控制开关。Vault 集成正常工作时,余额使用 Vault 经济提供者,而非 EliteMobs 货币数据库。

货币​

默认货币称为精英币(Elite Coins)(EconomySettings.yml 中的 currencyName)。玩家主要通过击杀精英(货币掉落)以及出售 EliteMobs 战利品来赚取它。余额可以使用标准的货币命令进行查询和支付:

  • /em money check —— 查询你的余额(并不存在 /em wallet 命令;有些配置注释仍然用那个旧名称来称呼它)
  • /em pay <player> <amount> —— 向另一名玩家付款(受 playerToPlayerPaymentTaxes 影响)

管理员可以用 /em money add|remove|set 等命令管理余额。

各类商店​

动态商店(程序生成装备)​

使用 /em shop dynamic 或与铁匠NPC(elitemobs.shop.dynamic.npc)对话。若 agTeleport 已启用、公会已安装且玩家具有 elitemobs.adventurersguild.teleport 权限,玩家命令会转到公会;否则打开买卖菜单。NPC 会直接打开该菜单。

动态商店在 54 格菜单中配置的商品槽位里提供程序生成的 EliteMobs 武器和护甲。商品等级根据你对该物品类型的技能等级,在 (skillLevel - 5) 到 skillLevel 之间抽取,并限制在 1–100。技能等级达到 105 后,该技能的所有商品均为 100 级。没有对应技能的材料使用根据所有技能类型的平均 XP计算出的等级。

  • 点击物品可以按其计算价值购买。购买需要足够的资金、一个空的储物槽位,并通过适用的装备技能要求检查。检查遵循装备限制设置及其例外,包括 20 级及以下的物品。
  • 使用**重抽(reroll)**按钮刷新所提供的库存(短暂的 2 秒冷却)。
  • 购买物品也会刷新库存。

自定义商店(特殊物品)​

使用 /em shop custom 或与特殊铁匠NPC(elitemobs.shop.custom.npc)对话。玩家命令遵循与动态商店相同的公会跳转规则;NPC 直接打开买卖菜单。

自定义商店从符合条件的自定义物品中随机抽取商品。itemType: CUSTOM 可以上架;UNIQUE、DROPPABLE 和 CLASS_LOOT 被排除。启用灵魂绑定时,商品副本会灵魂绑定给买家。请至少保留一个符合条件的物品:当前的商品选择器无法处理空候选池。

购买需要足够的资金和一个空的储物槽位。此菜单不执行动态商店的技能检查,因此能购买不代表能装备。重抽按钮有 2 秒冷却,购买也会刷新库存。

出售物品​

出售通过买卖菜单中的**出售(Sell)**选项进入(在打开动态商店或自定义商店之后),或者由管理员直接使用 /em shop sell <player>(elitemobs.shop.sell.other)。出售物品铁匠 NPC 使用 elitemobs.shop.sell.npc 权限。

在出售菜单中:

  • 点击背包中的 EliteMobs 物品,将整叠移到出售栏位。未绑定物品和绑定于你的物品均可出售。原版物品及绑定于其他玩家的物品会被拒绝;禁用灵魂绑定检查或拥有绕过权限时,绑定限制不适用。
  • 确认按钮会显示累计总额。点击它即可出售一切并获得精英币。
  • 售价是物品已存储价值的一定比例;没有存储值时使用计算价值。比例由 EconomySettings.yml 中的 itemResaleValue 设置(默认 5%),支付金额还要乘以堆叠数量。
  • 出售收入会先偿还未结清的赌博债务,只有剩余部分才增加可用余额。
  • 每一叠物品分别入账。如果经济提供方拒绝某次入账,该叠物品会退还给你,出售随即停止,并显示 shopTransactionFailedMessage。在此之前已入账的物品仍视为已售出。

箭矢商店​

通过与箭矢商店NPC(elitemobs.shop.arrow.npc)对话来打开。

箭矢商店用精英币出售弹药。默认库存包括:

  • 普通箭矢(一小叠和一大叠)
  • 光灵箭
  • 中毒、缓慢、虚弱、伤害和治疗的药箭

每个商品的数量和价格在 menus/arrow_shop_menu.yml 中设置。点击箭矢购买需要足够的资金和一个空背包槽位,即使箭矢可以堆叠到别处也需要空位。商品槽位在实现中固定。修改价格、数量或商品名后请重启:商品目录在菜单类首次加载时会被缓存。

命令与权限​

命令权限默认说明
/em shop dynamicelitemobs.shop.dynamictrue打开动态商店入口菜单或请求传送到公会
/em shop procedural <player>elitemobs.*op为另一名玩家打开动态(程序化)商店
/em shop customelitemobs.shop.command仅在代码中使用打开自定义商店入口菜单或请求传送到公会;需要时授予这个实际的命令权限,而非已声明但未使用的 elitemobs.shop.custom
/em shop custom <player>elitemobs.shop.custom.otherop为另一名玩家打开自定义商店
/em shop sell <player>elitemobs.shop.sell.otherop为另一名玩家打开出售菜单

NPC 交互权限(默认通过 elitemobs.user 捆绑授予玩家):

权限NPC
elitemobs.shop.dynamic.npc铁匠(动态商店)
elitemobs.shop.custom.npc特殊铁匠(自定义商店)
elitemobs.shop.sell.npc出售物品
elitemobs.shop.arrow.npc箭矢商店

配置​

商店经济在 EconomySettings.yml 中配置。值得注意的键:

键默认作用
enableEconomytrue启用常规经济入口;不会阻止所有直接进入商店的路径
currencyNameElite Coins货币的显示名称
useVaultfalse通过 Vault 而非 EliteMobs 数据库来处理余额
itemResaleValue5出售时按物品完整价值支付的百分比
playerToPlayerPaymentTaxes0.2应用于 /em pay 转账的税率(0.0–1.0)(0.2 = 20%)
enableCurrencyShowertrue精英死亡时是否掉落金币
currencyShowerTierMultiplier1.0掉落货币的倍率(2.0 = 两倍)
materialWorth.defaultMaterialWorth1没有自身 materialWorth.<MATERIAL> 条目的材料所使用的价值

materialWorth.<MATERIAL> 使用插件材料档位的固定默认值:下界合金为 18,钻石和三叉戟为 17,铁为 16,石与锁链甲为 15,金、木和皮革为 13。这些档位是代码常量,不是配置选项。要设置商店价格,请修改 EconomySettings.yml 中各项 materialWorth 值。

每个商店的菜单布局(槽位、物品图标、名称和消息)位于 EliteMobs 菜单配置文件中(例如买卖、自定义商店、程序化商店、出售和箭矢商店菜单配置)。

购买价值的计算合并材料、附魔和药水效果的价值,并加上基础值 1。因此,修改价格设置后,已存储的转售价值可能不同于新计算出的购买价格。

每次购买都会先扣除价格,只有在经济提供方接受付款后才交付物品。如果提供方拒绝付款,玩家会收到资金不足的消息,且不会交付任何物品。如果交易中途失败,玩家会看到 shopTransactionFailedMessage,服务器日志会记录价格、扣款是否被接受以及物品,以便管理员处理。