Contenido generado con IA — puede contener errores.

Configurar

La caja

Rarezas, los dos tipos de llave, los rodillos que caen, comprar una skin con moneda y los bloques que abren la caja.

La caja es cómo las skins se ganan en vez de regalarse. Se gasta una llave, cae un rodillo y lo que sale queda desbloqueado en la cuenta del jugador: la skin entera, todas las piezas en las que encaja, suya para siempre pase lo que pase con su rango. La caja es la de ExyliaLib; este plugin le pasa las skins de skins.yml y lee sus ajustes de config.yml y sus líneas de messages.yml.

Funciona en cualquier behaviour.mode. En un servidor item no hay vestidor donde llevar un desbloqueo, así que pon ahí crate.reward en ITEM o BOTH y la caja entrega el objeto de skin.

Rarezas

Cada skin declara un tier en skins.yml, y crate.tiers en config.yml declara cuáles existen:

config.yml
crate:
  tiers:
    common:
      name: "Common"
      color: "{muted}"
      chance: 60.0
      priority: 1
    rare:
      name: "Rare"
      color: "{info}"
      chance: 25.0
      priority: 2
    epic:
      name: "Epic"
      color: "{accent}"
      chance: 12.0
      priority: 3
    legendary:
      name: "Legendary"
      color: "{highlight}"
      chance: 3.0
      priority: 4
ClaveQué hace
nameCómo la llaman los menús y los mensajes.
colorEl color de su nombre y de sus skins.
chanceCon qué frecuencia cae en ella una caja, relativa a las demás rarezas.
priorityDónde se coloca en los menús; menor va antes.

Las cuarenta skins incluidas son 14 common, 12 rare, 9 epic y 5 legendary: un color con un trim se queda en common, y cuanto más se mueve una skin más rara es. La lista completa está en Skins.

Nada está fijado en el código. Borra legendary, inventa mythic, renombra las cuatro: la clave es el id que skins.yml escribe como tier, y una skin que nombra una rareza que ya no existe cuenta como la primera. Una skin sin tier es common.

chance es un peso, no un porcentaje

Las probabilidades se calculan a partir de los pesos, así que cuatro rarezas con 60/25/12/3 y cuatro con 6/2.5/1.2/0.3 se comportan igual. Borrar una rareza reparte sus probabilidades entre las demás en vez de dejar un hueco del tres por ciento.

Llaves

Dos tipos, y la caja acepta los dos.

En la cuenta

Un número en la fila de caja del jugador. No se puede tirar, duplicar ni perder por tener el inventario lleno:

/armorskinsadmin keys give <jugador> <cantidad>
/armorskinsadmin keys take <jugador> <cantidad>
/armorskinsadmin keys set <jugador> <cantidad>
/armorskinsadmin keys check <jugador>

Seguro desde consola y con jugadores desconectados: una tienda, un listener de votos o un plugin de recompensas entrega llaves igual:

[console] armorskinsadmin keys give %player% 1

Cada jugador recibe crate.start-keys llaves (ninguna por defecto) la primera vez que se le ve.

En la mano

Un objeto, para venderlo, meterlo en un kit, tirarlo y regalarlo:

/armorskinsadmin item key <jugador> [1-64]

Haz clic derecho en un bloque de caja enlazado con una en la mano y se abre al momento: una llave, un rodillo, sin pantalla de pregunta. El clic izquierdo nunca gasta una; así pregunta un jugador qué es un bloque. Cómo se dibuja la llave es crate.key-item en config.yml (material y brillo) y key-item en messages.yml (nombre y lore); se reconoce por lo que lleva en sus datos, no por su nombre ni su material. Las llaves que no caben en el inventario esperan y se entregan en la siguiente entrada del jugador, con rewards-claimed.

Abrirla

/wardrobe crate, el botón SKIN CRATE en la esquina del vestidor, o un bloque enlazado pulsado sin llave en la mano. La primera pantalla pregunta una sola cosa: cuántas a la vez.

Cuántas

menus/crate.yml. Las opciones se dibujan hasta crate.max-at-once, con un tope de siete por el ancho de la pantalla, y repartidas como lo estarán los rodillos: donde haces clic es donde cae ese rodillo. Una opción que el jugador no puede pagar se dibuja con empty_template y las llaves que le faltan.

Caen los rodillos

menus/crate_open.yml. Un rodillo por caja, cada uno de toda la altura del cofre y con su propia línea de llegada crate.stagger-seconds después del anterior. Cada cara es la skin tal como se lleva, en su peto, y conserva su nombre y las piezas en las que encaja durante toda la caída.

Lo que pasó se queda

Nada se borra cuando un rodillo para. Lo que quedó a una casilla sigue en pantalla, porque la mitad de lo que vale una caja es la legendaria que pasó de largo.

Se paga al caer cada rodillo

Las llaves se gastan y los premios se deciden antes del primer fotograma. Cada rodillo paga al parar, con crate.on-win o crate.on-duplicate y su propia línea en el chat. Cerrar la ventana a mitad de caída no cuesta nada.

Ponérsela en un clic

Hacer clic en una skin que ha salido la pone en cada pieza en la que el jugador puede llevarla, directamente en el vestidor. En un servidor item el clic solo cierra la ventana.

RechazoMensaje
crate.enabled está apagadocrate.disabled
No le alcanzan las llavescrate.no-keys — %amount% es el coste, %keys% las que tiene.
Su apertura anterior sigue cayendocrate.busy
No hay ninguna skin declaradacrate.empty
Su rango no tiene exyliaarmorskin.cratefeature-locked

La apertura 3D

config.yml
crate:
  opening: SPATIAL   # INVENTORY (por defecto): los rodillos de menus/crate_open.yml

Con SPATIAL la pantalla de la pregunta sigue igual, pero la elección abre la caja en el mundo en vez de en menus/crate_open.yml: una caja aparece delante del jugador, un rodillo de skins frena sobre el premio, la tapa se abre, el premio crece en el centro con su nombre, su rareza y si era nuevo o repetido, y el propio cuerpo del jugador aparece llevándolo en cada pieza en la que encaja. Tras la última caja, OPEN ANOTHER (mientras pueda pagar otra) y DONE.

El premio se sortea y las llaves se gastan exactamente igual que con los rodillos; solo cambia lo que se ve. Agacharse salta al final y entrega todos los premios de golpe, igual que morir, cambiar de mundo o salir. Mientras se reproduce, el jugador queda quieto y no ve a nadie. Su aspecto es spatial/crate.yml, que ExyliaLib escribe la primera vez.

Un cliente anterior a 1.21.4 recibe siempre los rodillos del inventario, diga lo que diga opening.

Qué sale

Lo decide crate.reward:

ValorQué recibe el jugador
UNLOCKLa skin queda desbloqueada en la cuenta, todas las piezas en las que encaja. No se puede intercambiar. Por defecto.
ITEMSolo su objeto de skin. No se desbloquea nada, así que ninguna apertura es nunca un duplicado.
BOTHDesbloqueada en la cuenta, y entregada además como objeto de skin.

crate.won nombra lo que salió (%reward%) y su rareza (%tier%).

Duplicados

Caer en una skin que el jugador ya desbloqueó le devuelve llaves, tantas como dice crate.duplicate-refund, con crate.duplicate (%refund% es cuántas). Con el valor por defecto de 1 un duplicado es una tirada gratis en vez de una pérdida.

Una skin que el jugador solo tiene por un permiso no es un duplicado: queda desbloqueada para siempre, así que sobrevive al rango que la daba.

Comprar con moneda

Una skin que el jugador no tiene también se puede comprar desde el vestidor. Mientras shop.enabled está encendido y la skin tiene precio, su fila bloqueada se dibuja con purchasable_template en lugar de no_permissions_template, con el precio en el lore; al hacer clic pide confirmar, cobra el precio y desbloquea la skin exactamente como lo haría una caja: la skin entera, para siempre.

config.yml
shop:
  enabled: true
  tier-prices:
    common: 500
    rare: 1500
    epic: 4000
    legendary: 10000
ClavePor defectoQué hace
enabledtrueApagado, las skins bloqueadas se ven bloqueadas como antes y no hay nada a la venta.
tier-pricesarribaEl precio de cada skin de una rareza que no define el suyo. Una rareza que no aparece deja sus skins fuera de la tienda.

El price propio de una skin en skins.yml gana al de su rareza:

skins.yml
skins:
  galaxy:
    tier: epic
    price: 2500                              # la moneda por defecto
  eclipse:
    tier: legendary
    price: {amount: 50, currency: gems}      # una moneda con nombre

El dinero pasa por la economía de ExyliaLib, así que es la que tenga el servidor de ExyliaEconomy o Vault; sin ninguna, todos los precios quedan no disponibles y no se ofrece nada. Una compra por jugador a la vez, y un desbloqueo que falla después del cobro devuelve el dinero. Lo que se le dice al jugador (la confirmación, el éxito, dinero insuficiente, ya la tiene) es el texto propio de ExyliaLib, bajo purchase en el messages.yml de ExyliaLib.

Una skin se ofrece mientras el jugador no pueda llevarla en la pieza que está vistiendo, así que quien tiene una pieza por un nodo por pieza puede comprar el resto: la compra solo se rechaza como ya comprada cuando puede llevar todas las piezas en las que encaja.

Ajustes

config.yml
crate:
  enabled: true
  start-keys: 0
  duplicate-refund: 1
  reward: UNLOCK
  blocks: []
  max-at-once: 4
  spin-frames: 34
  stagger-seconds: 2.0
  opening: INVENTORY
  key-item:
    material: TRIPWIRE_HOOK
    glow: true
ClavePor defectoQué hace
enabledtrueApagada, la caja lo dice en vez de abrirse.
start-keys0Llaves que recibe un jugador la primera vez que se le ve.
duplicate-refund1Llaves devueltas por una skin ya desbloqueada.
rewardUNLOCKUNLOCK, ITEM o BOTH, como arriba.
blocks[]Los bloques que abren la caja. Enlázalos en el juego, no a mano.
max-at-once4Cuántas cajas puede abrir un jugador de una vez. La pantalla admite siete. Un jugador con exyliaarmorskin.crate.multi.<n> recibe <n> en su lugar: el más alto que tenga, siete como mucho.
spin-frames34Cuántas caras recorre el primer rodillo antes de parar. Tope de 200, unos once segundos.
stagger-seconds2.0Cuánto después de parar un rodillo para el siguiente. 0 los para a la vez.
openingINVENTORYINVENTORY o SPATIAL. Ver La apertura 3D.
key-itemTRIPWIRE_HOOK, con brilloCómo se dibuja la llave que se puede llevar en la mano. Su nombre y lore están en messages.yml.

on-spin, on-win y on-duplicate son bloques de efecto completos de ExyliaLib (título, action bar, boss bar, sonido, partícula y fuego artificial) que suenan en cada paso de la caída y una vez por rodillo al caer. Vienen como un hi-hat, un level-up y una nota de bajo.

Bloques de caja

Un bloque físico, en cualquier parte del mundo, que abre la caja al pulsarlo:

/armorskinsadmin crate block add      # el bloque que miras, hasta seis bloques de distancia
/armorskinsadmin crate block remove
/armorskinsadmin crate block list
/armorskinsadmin crate block clear

Se guardan en config.yml, no en el mundo, así que un bloque enlazado sobrevive a pegar un schematic, a una edición del mundo y a un rollback. Mientras está enlazado no se puede romper, volar ni empujar, y pulsarlo ya no hace lo que hace su material: una caja dibujada sobre un barril no debe abrir un barril.

Entregar skins sin caja

/armorskinsadmin unlocks grant <jugador> <skin>
/armorskinsadmin unlocks revoke <jugador> <skin>

El mismo desbloqueo que escribe una caja, para un plugin de recompensas o un ticket de soporte. Sobrevive a que caduque un rango y no necesita plugin de permisos. Quitarle a un jugador todo lo que desbloqueó, o empezar una temporada nueva, es cosa de ExyliaLib: /exylialib resetplayer <jugador> ExyliaArmorSkin o /exylialib wipe. Ver Comandos de ExyliaLib.

Permisos y desbloqueos son dos puertas distintas

Un jugador puede llevar una skin que desbloqueó o una que le da su rango. Venderla como rango sigue siendo un nodo, exyliaarmorskin.skin.<id>, independiente de lo que haya sacado de cajas o comprado.

¿Falta algo en esta página? Dínoslo en Discord