Funções
Criar blocos de código reutilizáveis
Sintaxe
function NOME(PARÂMETROS):
# código
function NOME(PARÂMETROS) returns TIPO:
return VALORFunção Básica
function hello_world():
broadcast "&aHello, World!"
# Uso
on join:
hello_world()Função com Parâmetros
function greet(player: player):
send "&aWelcome, %{player}%!" to {player}
function greet_message(player: player, message: text):
send "&a%{message}%, %{player}%!" to {player}
# Uso
on join:
greet(player)
greet_message(player, "Hello")Tipos de Parâmetros
| Tipo | Descrição |
|---|---|
player | Jogador |
number | Número (inteiro ou decimal) |
text | Texto/String |
boolean | True/False |
location | Localização no mundo |
item | Item do Minecraft |
Função com Retorno
function double(n: number) returns number:
return {n} * 2
function get_prefix(player: player) returns text:
if player has permission "admin":
return "&c[Admin]"
else if player has permission "vip":
return "&6[VIP]"
else:
return "&7[Player]"
# Uso
on join:
set {_doubled} to double(5) # 10
set {_prefix} to get_prefix(player)
broadcast "%{_prefix}% %player% joined!"Parâmetros Padrão
Defina valores padrão para parâmetros opcionais:
function give_coins(player: player, amount: number = 100):
add {amount} to {coins::%{player}'s uuid%}
send "&a+%{amount}% coins!" to {player}
# Uso
give_coins(player) # Dá 100 coins (padrão)
give_coins(player, 500) # Dá 500 coinsFunções Utilitárias
lib/utils.lzl
# Biblioteca de funções úteis
function format_number(n: number) returns text:
if {n} >= 1000000:
return "%{n} / 1000000%M"
else if {n} >= 1000:
return "%{n} / 1000%K"
else:
return "%{n}%"
function is_staff(player: player) returns boolean:
if player has permission "staff":
return true
return false
function random_between(min: number, max: number) returns number:
return random integer between {min} and {max}
function teleport_safe(player: player, loc: location):
# Teleporta para cima até encontrar espaço
teleport {player} to {loc}
send "&aTeleported!" to {player}Exemplo Prático
rank-system.lzl
# Sistema de ranks com funções
function get_rank(player: player) returns text:
if {rank::%{player}'s uuid%} is set:
return {rank::%{player}'s uuid%}
return "member"
function get_rank_prefix(rank: text) returns text:
switch {rank}:
case "owner":
return "&4[OWNER]"
case "admin":
return "&c[ADMIN]"
case "mod":
return "&e[MOD]"
case "vip":
return "&6[VIP]"
default:
return "&7[MEMBER]"
function get_rank_color(rank: text) returns text:
switch {rank}:
case "owner":
return "&4"
case "admin":
return "&c"
case "mod":
return "&e"
case "vip":
return "&6"
default:
return "&7"
function format_player_name(player: player) returns text:
set {_rank} to get_rank({player})
set {_prefix} to get_rank_prefix({_rank})
set {_color} to get_rank_color({_rank})
return "%{_prefix}% %{_color}%%{player}%"
# Uso
on chat:
cancel event
set {_formatted} to format_player_name(player)
broadcast "%{_formatted}%&r: %message%"
on join:
set {_formatted} to format_player_name(player)
broadcast "%{_formatted}% &7joined the server!"Organização
Coloque funções utilitárias em arquivos separados na pasta
scripts/lib/para reutilizá-las em múltiplos scripts.