Skip to main content

🛠️ Utilitários & Locale

Esta página documenta as funções utilitárias compartilhadas e o sistema de localização (traduções).

📦 Utilitários (utils.lua)

Funções compartilhadas entre client e server. Localizadas em config/shared/utils.lua.

Notification

Exibe uma notificação para o jogador.
function Notification(...)
    DkNotify(...)
end
Uso Client:
Notification("red", "Você não tem permissão!")
Notification("green", "Corrida iniciada!", 5000)
Uso Server:
Notification(source, "red", "Você não tem permissão!")
Notification(source, "yellow", "Alerta!", 7000)
Parâmetros:
#ParâmetroTipoDescrição
1color/sourcestring/numberCor (client) ou source (server)
2message/colorstringMensagem (client) ou cor (server)
3duration/messagenumber/stringDuração (client) ou mensagem (server)
4- / duration- / number- / Duração (server)
Cores disponíveis:
  • "red" - Erro
  • "green" - Sucesso
  • "yellow" - Alerta
  • "blue" - Informação

Request

Exibe uma caixa de confirmação para o jogador.
function Request(...)
    return DkRequest(...)
end
Retorno: boolean - Resposta do jogador Exemplo:
local accepted = Request(source, "Deseja iniciar a corrida?")
if accepted then
    -- Iniciar corrida
end

Hint

Exibe uma dica temporária na tela.
function Hint(...)
    DkHint(...)
end

TimestampConvert

Converte timestamp de milissegundos para segundos.
function TimestampConvert(time)
    return ParseInt(time / 1000)
end
Uso:
local seconds = TimestampConvert(10000) -- Retorna 10

GetItemByIndex

Obtém um item coletável pelo seu identificador.
function GetItemByIndex(index)
    for _, item in pairs(Config.CollectableItems.List) do
        if item.index == index then
            return item
        end
    end
    return nil
end
Exemplo:
local nitro = GetItemByIndex("nitro")
if nitro then
    print(nitro.name) -- Nome do item
    print(nitro.duration) -- Duração em ms
end

🌐 Sistema de Localização

O sistema de traduções está em config/shared/locale/.

Estrutura de Arquivos

locale/
├── !locale.lua    # Carregador principal
├── en.lua         # Inglês
└── ptbr.lua       # Português Brasil

Usando Traduções

local text = Locale("chave_da_traducao")

-- Com parâmetros
local text = Locale("in_cooldown", {30}) -- "Aguarde 30 segundos..."

🇧🇷 Traduções Disponíveis (ptbr)

Categoria: game

Textos relacionados ao gameplay.
["in_cooldown"] = "Aguarde <strong>%s segundos</strong> antes de fazer isto novamente."
Uso: Locale("in_cooldown", {30})

Categoria: ui

Textos da interface do usuário.

Botões e Ações

["add"] = "Adicionar"
["delete"] = "Excluir"
["save"] = "Salvar"
["discart"] = "Descartar"
["yes"] = "Sim"
["no"] = "Não"
["none"] = "Nenhuma"
["go"] = "JÁ"
["enter"] = "ENTRAR"
["notify_me"] = "AVISE-ME"
["close"] = "Fechar"
["configure"] = "Configurar"
["admin_panel_title"] = "Painel de Administração"
["race_panel_title"] = "Painel da Corrida %s"

["panel_aside_general"] = "GERAL"
["panel_aside_management"] = "GERENCIAMENTO"
["panel_aside_options"] = "OPÇÕES"
["panel_option_race_management"] = "Gerenciar corridas"
["panel_option_settings"] = "Configurações"
["panel_option_race_main"] = "Corrida"
["panel_option_race_rankings"] = "Ranking"
["panel_option_routes_creation"] = "Criação de Rotas"
["panel_option_routes_management"] = "Gerenciamento de Rotas"
["panel_option_routes_statistics"] = "Estatísticas"
["description_race_management"] = "Crie novas corridas ou gerencie as existentes."
["description_settings"] = "Ajuste suas configurações gerais ou de corrida."
["description_race_main"] = "Entre na fila, veja detalhes ou inicie uma corrida."
["description_race_rankings"] = "Os recordes de cada rota aparecem aqui..."
["description_routes_creation"] = "Crie e visualize rotas de corrida..."
["description_routes_management"] = "Gerencie as rotas de corrida existentes..."
["description_routes_statistics"] = "Veja estatísticas detalhadas..."
["race_queue_blips"] = "Pontos da fila"
["race_prize_bonus"] = "Bônus de premiação"
["race_start_blip"] = "Blip de início"
["race_needed_item_name"] = "Item necessário (vazio p/ sem item)"
["race_needed_item_quantity"] = "Quantidade necessária"
["race_cooldown"] = "Cooldown (segundos)"
["race_collectable_items"] = "Itens coletáveis"
["race_min_racers"] = "Mínimo de corredores"
["race_active"] = "Ativada"
["race_allowed_vehicles"] = "Veículos"
["race_allowed_vehicles_option_cars"] = "Carros"
["race_allowed_vehicles_option_trucks"] = "Caminhões"
["race_allowed_vehicles_option_motorcycles"] = "Motos"

➕ Adicionando Novo Idioma

Para adicionar um novo idioma:
1

Crie o arquivo

Crie um novo arquivo em config/shared/locale/, por exemplo es.lua para espanhol.
2

Copie a estrutura

Copie todo o conteúdo de ptbr.lua ou en.lua.
3

Traduza

Traduza todas as strings mantendo as chaves originais.
4

Configure

Altere o idioma padrão no arquivo de configuração do script.
Exemplo:
-- config/shared/locale/es.lua
Locales["es"] = {
    ["game"] = {
        ["in_cooldown"] = "Espera <strong>%s segundos</strong> antes de hacer esto de nuevo.",
        ["race_no_vehicle"] = "Necesitas estar en un vehículo para participar en la carrera.",
        -- ... outras traduções
    },
    ["ui"] = {
        ["add"] = "Agregar",
        ["delete"] = "Eliminar",
        -- ... outras traduções
    }
}

🔤 Formatação de Strings

Parâmetros Posicionais

Use %s para inserir valores:
["message"] = "Olá, %s!"
-- Uso: Locale("message", {"Mundo"}) -> "Olá, Mundo!"

Múltiplos Parâmetros

["race_info"] = "Corrida %s iniciada com %s jogadores"
-- Uso: Locale("race_info", {"Sprint", 5}) -> "Corrida Sprint iniciada com 5 jogadores"

HTML/Formatação

O sistema suporta tags HTML para estilização:
["important"] = "Isto é <strong>muito importante</strong>!"
["colored"] = "Texto em <span class='font-blue'>azul</span>"
Use <strong> para destacar partes importantes da mensagem. A interface renderiza HTML automaticamente.