Saltar al contenido principal

Sistema de tiendas

EliteMobs incluye un sistema de tiendas integrado que permite a los jugadores gastar y ganar Monedas Élite (la moneda de EliteMobs) en equipo y flechas de EliteMobs. A las tiendas se accede normalmente a través de los NPC Herrero y mercaderes del Gremio de Aventureros, pero también se pueden abrir con comandos.

Ajustes de economía

Mantén enableEconomy: true en EconomySettings.yml para el uso normal de las tiendas. Los menús de entrada de las tiendas Dinámica y Personalizada comprueban este ajuste, pero los comandos administrativos directos y los NPC de Venta y Flechas no aplican la misma comprobación. No es un control de acceso universal. Con una integración con Vault funcional, los saldos usan el proveedor de Vault en lugar de la base de datos de EliteMobs.

Moneda​

La moneda por defecto se llama Monedas Élite (currencyName en EconomySettings.yml). Los jugadores la ganan principalmente matando élites (lluvias de moneda) y vendiendo botín de EliteMobs. Los saldos se pueden consultar y pagar usando los comandos de dinero estándar:

  • /em money check – comprueba tu saldo (no existe el comando /em wallet; algunos comentarios de la configuración todavía lo mencionan con ese nombre antiguo)
  • /em pay <player> <amount> – paga a otro jugador (sujeto a playerToPlayerPaymentTaxes)

Los administradores pueden gestionar los saldos con /em money add|remove|set y derivados.

Las tiendas​

Tienda dinámica (equipo generado procedimentalmente)​

Usa /em shop dynamic o habla con el NPC Herrero (elitemobs.shop.dynamic.npc). El comando del jugador redirige al Gremio cuando agTeleport está activo, el Gremio está instalado y el jugador tiene elitemobs.adventurersguild.teleport; en caso contrario abre el menú de comprar o vender. El NPC abre ese menú directamente.

La Tienda Dinámica usa las ranuras de stock configuradas de un menú de 54 ranuras para armas y armaduras procedimentales de EliteMobs. Los niveles siguen tu nivel de habilidad para ese tipo de objeto: cada objeto se genera entre (skillLevel - 5) y skillLevel, dentro de 1–100. A partir del nivel de habilidad 105, todas las ofertas de esa habilidad son de nivel 100. Los materiales sin una habilidad asociada usan el nivel derivado de tu XP media entre todos los tipos de habilidad.

  • Haz clic en un objeto para comprarlo por su valor calculado. Necesitas fondos suficientes, una ranura de almacenamiento vacía y cumplir el requisito de habilidad para equiparlo que corresponda. La comprobación respeta el ajuste de restricciones de equipo y sus excepciones, incluidos los objetos de nivel 20 o inferior.
  • Usa el botón de volver a sortear para refrescar el stock ofrecido (enfriamiento corto de 2 segundos).
  • Comprar un objeto también renueva el stock.

Tienda personalizada (objetos especiales)​

Usa /em shop custom o habla con el NPC Herrero Especial (elitemobs.shop.custom.npc). El comando del jugador sigue la misma regla de redirección al Gremio que la Tienda Dinámica; el NPC abre directamente el menú de comprar o vender.

La Tienda Personalizada elige entradas aleatorias de su conjunto de Objetos Personalizados válidos. itemType: CUSTOM es admisible; UNIQUE, DROPPABLE y CLASS_LOOT quedan excluidos. Las copias ofrecidas se vinculan al alma del comprador si el vínculo está habilitado. Mantén al menos un objeto válido: el selector actual no puede llenar la tienda desde un conjunto vacío.

Las compras requieren fondos suficientes y una ranura de almacenamiento vacía. Este menú no aplica la comprobación de habilidad de la Tienda Dinámica, por lo que comprar un objeto no demuestra que puedas equiparlo. El botón de volver a sortear tiene un enfriamiento de 2 segundos; las compras también renuevan el stock.

Vender objetos​

A la venta se accede a través de la opción Vender del menú de comprar o vender (después de abrir la Tienda Dinámica o Personalizada), o directamente por un administrador con /em shop sell <player> (elitemobs.shop.sell.other). El NPC Herrero de Venta de objetos usa el permiso elitemobs.shop.sell.npc.

En el menú de venta:

  • Haz clic en objetos EliteMobs de tu inventario para mover sus pilas a las ranuras de venta. Los objetos vanilla se rechazan. Se aceptan los objetos EliteMobs no vinculados y los vinculados a ti. Los vinculados a otra persona se rechazan, salvo que la comprobación de vínculo esté desactivada o tengas permiso para omitirla.
  • El botón de confirmar muestra el total acumulado. Haz clic en él para venderlo todo y recibir Monedas Élite.
  • El valor de reventa es una fracción del valor almacenado del objeto, o de su valor calculado si no tiene uno almacenado. Se define con itemResaleValue en EconomySettings.yml (por defecto 5%). La cantidad de la pila multiplica el pago.
  • Los ingresos de venta pagan primero las deudas de juego pendientes; solo el resto aumenta el saldo disponible.
  • Cada pila se abona por separado. Si el proveedor de economía rechaza un abono, esa pila te vuelve, la venta se detiene y se muestra shopTransactionFailedMessage. Las pilas abonadas antes de ese momento siguen vendidas.

Tienda de flechas​

Se abre hablando con el NPC de la Tienda de Flechas (elitemobs.shop.arrow.npc).

La Tienda de Flechas vende munición por Monedas Élite. El stock por defecto incluye:

  • Flechas normales (un montón pequeño y un montón grande)
  • Flechas espectrales
  • Flechas con punta de Veneno, Lentitud, Debilidad, Daño y Curación

La cantidad y el precio se configuran en menus/arrow_shop_menu.yml. Haz clic en una flecha para comprarla; necesitas fondos suficientes y una ranura vacía, aunque las flechas pudieran apilarse en otra ranura. Las posiciones del stock están fijadas en la implementación. Reinicia después de cambiar precios, cantidades o nombres de artículos: el catálogo se guarda en caché al cargar por primera vez la clase del menú.

Comandos y permisos​

ComandoPermisoPor defectoDescripción
/em shop dynamicelitemobs.shop.dynamictrueAbre el menú de entrada de la tienda dinámica o solicita el teletransporte al Gremio
/em shop procedural <player>elitemobs.*opAbre la tienda dinámica (procedimental) para otro jugador
/em shop customelitemobs.shop.commandSolo en el códigoAbre el menú de entrada de la tienda personalizada o solicita el teletransporte al Gremio; concede este nodo real cuando sea necesario, en lugar del permiso declarado pero sin uso elitemobs.shop.custom
/em shop custom <player>elitemobs.shop.custom.otheropAbre la tienda personalizada para otro jugador
/em shop sell <player>elitemobs.shop.sell.otheropAbre el menú de venta para otro jugador

Permisos de interacción con NPC (concedidos a los jugadores por defecto mediante el paquete elitemobs.user):

PermisoNPC
elitemobs.shop.dynamic.npcHerrero (tienda dinámica)
elitemobs.shop.custom.npcHerrero Especial (tienda personalizada)
elitemobs.shop.sell.npcVenta de objetos
elitemobs.shop.arrow.npcTienda de Flechas

Configuración​

La economía de la tienda se configura en EconomySettings.yml. Claves destacadas:

ClavePor defectoEfecto
enableEconomytrueHabilita las entradas normales de la economía; no bloquea todas las rutas directas a tiendas
currencyNameElite CoinsNombre visible de la moneda
useVaultfalseEnrutar los saldos a través de Vault en lugar de la base de datos de EliteMobs
itemResaleValue5Porcentaje del valor total del objeto que se paga al vender
playerToPlayerPaymentTaxes0.2Tasa de impuesto (0.0–1.0) aplicada a las transferencias de /em pay (0.2 = 20%)
enableCurrencyShowertrueDetermina si los élites sueltan monedas al morir
currencyShowerTierMultiplier1.0Multiplicador de la moneda soltada (2.0 = el doble)
materialWorth.defaultMaterialWorth1Valor usado para cualquier material sin su propia entrada materialWorth.<MATERIAL>

Las entradas materialWorth.<MATERIAL> usan valores predeterminados fijos según los materiales del plugin: netherita 18, diamante y tridente 17, hierro 16, piedra y cota de malla 15, y oro, madera y cuero 13. Estos niveles son constantes del código, no opciones de configuración. Modifica las entradas individuales de materialWorth en EconomySettings.yml para establecer los precios de la tienda.

Los diseños de los menús (ranuras, iconos de objetos, nombres y mensajes) de cada tienda viven en los archivos de configuración de menús de EliteMobs (por ejemplo, las configuraciones de los menús de comprar o vender, tienda personalizada, tienda procedimental, venta y tienda de flechas).

El valor calculado de compra combina material, encantamientos y efectos de poción, con un valor base de 1. Por tanto, los valores de reventa ya almacenados pueden diferir de los nuevos precios calculados después de cambiar los ajustes de precios.

Cada compra retira primero el precio y solo entrega el objeto después de que el proveedor de economía acepte el pago. Si el proveedor rechaza el pago, el jugador recibe el mensaje de fondos insuficientes y no se entrega nada. Si la transacción falla a mitad, el jugador ve shopTransactionFailedMessage y el registro del servidor anota el precio, si se aceptó el cargo y el objeto, para que un administrador pueda resolverlo.