Variáveis
Armazenar dados para uso posterior
Tipos de Variáveis
| Tipo | Sintaxe | Persistência |
|---|---|---|
{_variavel} | Local | Apenas durante execução |
{variavel} | Global | Persiste entre restarts |
Variáveis Locais
Variáveis locais começam com _ e existem apenas durante a execução do bloco:
on join:
set {_name} to player's name
set {_level} to 1
send "Hello %{_name}%, level %{_level}%!" to player
# {_name} e {_level} não existem mais aquiVariáveis Globais
Variáveis globais são salvas automaticamente e persistem entre restarts:
# Armazenar dados de player
set {coins::%player's uuid%} to 500
set {home::%player's uuid%} to player's location
# Dados globais do servidor
set {total_joins} to {total_joins} + 1UUID vs Nome
Sempre use
player's uuid ao invés de player's name para indexar dados de player. Nomes podem mudar, UUIDs são permanentes.Operações
Definir Valores
set {_score} to 100
set {_name} to "Steve"
set {_location} to player's locationMatemática
set {_a} to 10
set {_b} to 5
set {_sum} to {_a} + {_b} # 15
set {_diff} to {_a} - {_b} # 5
set {_product} to {_a} * {_b} # 50
set {_quotient} to {_a} / {_b} # 2
add 10 to {_a} # {_a} = 20
remove 3 from {_a} # {_a} = 17Listas
Use ::* para trabalhar com listas:
# Adicionar à lista
add "apple" to {fruits::*}
add "banana" to {fruits::*}
add "orange" to {fruits::*}
# Acessar por índice
set {_first} to {fruits::1} # "apple"
# Loop pela lista
loop {fruits::*}:
send "%loop-value%" to player
# Tamanho da lista
set {_count} to size of {fruits::*}
# Remover da lista
remove "banana" from {fruits::*}
# Limpar lista
clear {fruits::*}
delete {fruits::*}Variáveis Aninhadas
Organize dados complexos com aninhamento:
# Dados de player
set {player::%player's uuid%::coins} to 100
set {player::%player's uuid%::kills} to 0
set {player::%player's uuid%::deaths} to 0
# Acessar
send "Coins: %{player::%player's uuid%::coins}%" to player
# Deletar todos os dados de um player
delete {player::%player's uuid%::*}Verificações
# Verificar se definida
if {home::%player%} is set:
teleport player to {home::%player%}
else:
send "No home set!" to player
# Verificar se vazia
if {list::*} is empty:
send "List is empty!"
# Deletar variável
delete {variable}
delete {player::%player%::*} # Deleta todos aninhadosValores Padrão
Use ? para definir um valor padrão se a variável não existir:
set {_coins} to {coins::%player%} ? 0
# Se não definida, usa 0
send "Balance: %{coins::%player%} ? 0%" to playerExemplo Prático
sistema-de-economia.lzl
# Sistema de economia simples
on first join:
set {balance::%player's uuid%} to 100
send "&aYou received 100 coins as a welcome bonus!" to player
command /balance:
aliases: /bal, /money
trigger:
set {_bal} to {balance::%player's uuid%} ? 0
send "&eYour balance: &f%{_bal}% coins" to player
command /pay <player> <number>:
trigger:
set {_target} to arg-1 parsed as player
set {_amount} to arg-2
# Validações
if {_amount} <= 0:
send "&cAmount must be positive!" to player
stop
set {_balance} to {balance::%player's uuid%} ? 0
if {_balance} < {_amount}:
send "&cInsufficient funds!" to player
stop
# Transferir
remove {_amount} from {balance::%player's uuid%}
add {_amount} to {balance::%{_target}'s uuid%}
send "&aSent %{_amount}% coins to %{_target}%!" to player
send "&a%player% sent you %{_amount}% coins!" to {_target}