Skip to content

dev skript

Trae Upload Bot edited this page Sep 3, 2026 · 3 revisions

title: Skript description: Compatibilidad con Skript: hooks para pay, add, take y manejo de balances via Vault API v2.1.0.

Skript Compatibilidad

Vault 2.1.0 incluye hooks nativos con Skript (>= 2.7.0) para manejar dinero en tus scripts.

Requisitos

Skript >= 2.7.0
Vault  2.1.0

Expresiones Disponibles

Sintaxis Skript Descripción
balance of %player% Balance actual del jugador (moneda default)
balance of %player% in %string% Balance en moneda específica
`(format formatted) balance of %player%`
default currency id ID de la moneda por defecto

Efectos Disponibles

Sintaxis Skript Alias
pay %player% %number% add %number% money to %player%
take %number% money from %player% withdraw %number% from %player%
set balance of %player% to %number% /eco set
reset balance of %player% /eco reset
transfer %number% money from %player% to %player% Transferencia

Condiciones

Sintaxis
%player% has %number% money
%player% can afford %number%
`%player%'s balance is (greater

Ejemplos Prácticos

Dar recompensa por matar

on death of player:
    attacker is a player
    set {_reward} to 250
    pay attacker {_reward}
    send "&6+%formatted balance of attacker%" to attacker

Sistema de Casas / Precio por Bloque

on place:
    player doesn't have permission "vault.bypass"
    set {_price} to 15.5

    if player has {_price} money:
        take {_price} money from player
        send "&aPagaste &f%formatted {_price}% &apor colocar el bloque."
    else:
        cancel event
        send "&cNo tienes dinero suficiente (necesitas %formatted {_price}%)"

Tienda Simple (Comando /shop)

command /shop:
    trigger:
        send "&8=========== &6TIENDA &8==========="
        send "  &f1) &aDiamante x1  &7: &f$250"
        send "  &f2) &aManzana x32  &7: &f$150"
        send "  &f3) &aXP 30 lvls  &7: &f$1000"
        send "&8==============================="
        send "&eUsa: /buy <numero>"

command /buy <integer>:
    trigger:
        set {_n} to arg 1
        if {_n} is 1:
            set {_precio} to 250
            if player has {_precio} money:
                take {_precio} money from player
                give 1 diamond to player
                send "&aCompraste diamante"
            else:
                send "&cNecesitas %formatted {_precio}%"
        else if {_n} is 2:
            set {_precio} to 150
            if player has {_precio} money:
                take {_precio} money from player
                give 32 apple to player
            else:
                send "&cNo tienes suficiente dinero"
        else if {_n} is 3:
            set {_precio} to 1000
            if player has {_precio} money:
                take {_precio} money from player
                give 30 levels of xp to player
            else:
                send "&cSaldo insuficiente"

Sistema de Salario Diario

every day at "09:00":
    loop all players:
        set {_salario} to 500
        if loop-player has permission "vip":
            set {_salario} to 1500
        pay loop-player {_salario}
        send "&aSalario diario: &f+%formatted {_salario}%" to loop-player

Kit Pago

command /kit pvp:
    cooldown: 1 day
    trigger:
        set {_costo} to 750
        if player has {_costo} money:
            take {_costo} money from player
            give 1 diamond sword of sharpness 5 to player
            give 1 diamond helmet of protection 4 to player
            give 1 diamond chestplate of protection 4 to player
            give 1 diamond leggings of protection 4 to player
            give 1 diamond boots of protection 4 to player
            give 16 golden apple to player
            send "&aKit PVP comprado!"
        else:
            cancel the cooldown
            send "&cTe falta: %formatted (750 - (balance of player))%"

Multi-moneda en Skript

# Moneda "gems" (definida en balances.yml currencies.gems)
command /gems:
    trigger:
        set {_gems} to balance of player in "gems"
        send "&fTienes &b%{_gems}% 💎 gemas"

command /buygems <number>:
    trigger:
        set {_cant} to arg 1
        set {_precio} to {_cant} * 100   # 100 coins = 1 gema

        if player has {_precio} money:
            take {_precio} money from player
            set balance of player in "gems" to (balance of player in "gems") + {_cant}
            send "&a+%{_cant}% 💎"

Scoreboard vía Skript

every 20 ticks:
    loop all players:
        set line 1 of scoreboard of loop-player to "&6Tu dinero"
        set line 2 of scoreboard of loop-player to "&f  %formatted balance of loop-player%"
        set line 4 of scoreboard of loop-player to "&7/shop para comprar"

Hook Interno

Vault 2.1.0 registra los hooks vía SkriptHook:

// Clase interna Vault 2.1.0:
public class SkriptHook {

    public void register() {
        // Registrar expresiones
        ExprBalance.register();
        ExprFormattedBalance.register();

        // Registrar efectos
        EffPay.register();
        EffTake.register();
        EffSetBalance.register();
        EffTransfer.register();

        // Registrar condiciones
        CondHasMoney.register();
    }
}

Softdepend

# plugin.yml de Vault:
softdepend:
  - Skript

Si Skript no está presente, los hooks no se cargan y Vault funciona normalmente sin penalización.

Ejemplo Transferencia

command /payp <player> <number>:
    trigger:
        if arg 2 <= 0:
            send "&cMonto inválido"
            stop
        if player has (arg 2) money:
            transfer (arg 2) money from player to arg 1
            send "&aPagaste %formatted arg 2% a %arg 1%"
            send "&a%player% te envió %formatted arg 2%" to arg 1
        else:
            send "&cNo tienes %formatted arg 2%"

Clone this wiki locally