Início › Documentação › Personalização · origen_admin

Personalização · origen_admin

A pasta custom/ permite-te integrar qualquer sistema de framework, inventário, ambulância, roupa, banimentos ou veículos sem mexer no núcleo. Todos os ficheiros são escrow_ignore, pelo que se mantêm nas atualizações.

text
custom/
├── client/
│   ├── actions.lua        — revive, skin, tuning, fuel, vehicle actions
│   ├── inventory.lua      — clear/view inventory
│   ├── notifications.lua  — notifications
│   └── weather.lua        — weather/time sync
├── server/
│   ├── actions.lua        — revive, kill, ban system hooks, gang setter
│   ├── apartments.lua     — fetch/add player apartments
│   ├── business.lua       — fetch business list
│   ├── chat.lua           — admin chat messages
│   ├── ck.lua             — post-CK hook
│   ├── debug.lua          — permission tester command (debug only)
│   ├── gangs.lua          — fetch gang list, assign gang
│   ├── inventory.lua      — view inventory server-side
│   ├── player.lua         — read player metadata (health, hunger, thirst, armor)
│   ├── vehicles.lua       — fetch/add/delete player vehicles
│   └── weather.lua        — weather/time freeze via qb-weathersync
└── framework/
    ├── client/
    │   ├── qb.lua          — QBCore/QBX client bridge exports
    │   └── esx.lua         — ESX client bridge exports
    └── server/
        ├── qb.lua          — QBCore/QBX server bridge exports
        └── esx.lua         — ESX server bridge exports

custom/client/actions.lua

SelfRevive()

Reanima o admin local. Delega no Config.AmbulanceSystem configurado.

lua
-- qb-ambulancejob → hospital:client:Revive
-- wasabi_ambulance → wasabi_ambulance:revive
-- default          → /revive command

ModifySkin()

Abre o menu de roupa para o admin local. Delega em Config.ClothingSystem.

lua
-- origen_clothing     → origen_clothing:openClothingMenu
-- qb-clothing         → qb-clothing:client:openMenu
-- illenium-appearance → illenium-appearance:client:openClothingShop
-- vms_clothestore     → exports vms_clothestore:OpenWardrobe()

ModifyVehicle()

Abre o menu de tuning do veículo atual. Delega em Config.TunningSystem.

lua
-- qb-mechanicjob → exports qb-mechanicjob:PaintCategories()
-- vms_tunning    → exports vms_tuning:openTuning()
-- esx_tunning    → exports esx_tuning:OpenMenu()
-- okokTunning    → TriggerServerEvent okokTuning:openFreeMenu

SetMaxVehicleFuel(vehicle)

Abastece o veículo indicado a 100 %. Delega em Config.FuelSystem.

lua
-- default    → SetVehicleFuelLevel(vehicle, 100.0)
-- legacyfuel → exports LegacyFuel:SetFuel(vehicle, 100)

FixVehicle(vehicle) / UnlockVehicle(vehicle) / BoostVehicle(vehicle)

Ações de veículo integradas. BoostVehicle aplica os máximos de motor, travões, tração e comportamento.


custom/client/inventory.lua

ClearInv(source)

Esvazia o inventário de um jogador executando o comando adequado para Config.Inventory.

Compatíveis: origen_inventory, qs-inventory, codem-inventory, ox_inventory, qb-inventory.


SeeInv(source)

Abre o inventário de um jogador. Recorre a origen_admin:server:open_otherinv se o inventário não tiver comando no cliente.

Compatíveis no cliente: origen_inventory, qs-inventory, codem-inventory, ox_inventory. Alternativa no servidor: qb-inventory (através de OpenInventoryById).


custom/client/notifications.lua

ShowNotification(text)

Mostra uma notificação ao admin local. Delega em Config.Framework.

lua
function ShowNotification(text)
    -- 'qbcore' → TriggerEvent("QBCore:Notify", text)
    -- 'esx'    → Framework.ShowNotification(text)
end

custom/client/weather.lua

Gere a sincronização do clima e da hora. Deteta automaticamente o qb-weathersync se estiver presente.

SetWeather(weather, isSynced)

Define o tipo de clima. Se isSynced = true e o qb-weathersync estiver em execução, sincroniza-o com todos os jogadores.

SetWeatherTime(hour, minute)

Força o relógio do jogo para uma hora específica.

SetWeatherSync(state) → ativa/desativa a sincronização do qb-weathersync

IsTimeFreezed() / IsWeatherFreezed() → boolean


custom/server/actions.lua

BanPlayerHandler(license, targetId, time, staffName, reason)

Chamada quando Config.CustomBanSystem = true. Implementa aqui a tua lógica de banimento personalizada.

lua
function BanPlayerHandler(license, targetId, time, staffName, reason)
    -- implement custom ban
end

UnbanPlayerHandler(license)

Chamada ao desbanir com Config.CustomBanSystem = true.

lua
function UnbanPlayerHandler(license)
end

IsbannedHandler(license) → false | { banTime, expireTime, reason, staff }

Chamada quando um jogador se liga com Config.CustomBanSystem = true. Devolve false se não estiver banido, ou uma tabela com os detalhes do banimento.

lua
function IsbannedHandler(license)
    return false
end

custom/server/ck.lua

OnCK(identifier)

Hook executado depois de um jogador ser apagado (CK). Adiciona aqui lógica de limpeza própria: consultas extra à base de dados, eventos, etc.

lua
function OnCK(identifier)
    -- Example: delete player properties
    -- MySQL.query.await("DELETE FROM player_properties WHERE citizenid = ?", { identifier })
end

custom/server/vehicles.lua

GetPlayerVehicles(citizenid) → table[]

Obtém da base de dados os veículos registados de um jogador. Resolve a consulta automaticamente consoante Config.GarageSystem e Config.Framework. Devolve { label, subData (plate), garage } por cada veículo.

AddPlayerVehicle(citizenid, model) não tem implementação por omissão: tens de escrever a consulta INSERT para a tabela de veículos específica do teu servidor.


custom/server/apartments.lua

GetPlayerApartments(citizenid) → table[]

Obtém as propriedades de um jogador. Resolve-se automaticamente consoante Config.HousingSystem.

AddPlayerApartment(citizenid, type) não tem implementação por omissão: tens de escrever a consulta INSERT para o teu sistema de habitação.


custom/server/player.lua

Substitui estas funções para leres os metadados do jogador com a estrutura da tua framework:

Função Devolve Lê por omissão de
GetPlayerHealth(player) number PlayerData.metadata.health (por omissão 200)
GetPlayerHunger(player) number PlayerData.metadata.hunger (por omissão 100)
GetPlayerThirst(player) number PlayerData.metadata.thirst (por omissão 100)
GetPlayerArmor(player) number PlayerData.metadata.armor (por omissão 0)

custom/server/chat.lua

SendChatMessage(src, header, color, message)

Envia uma mensagem de chat formatada a um jogador.

lua
function SendChatMessage(src, header, color, message)
    TriggerClientEvent('chatMessage', src, header, color, message)
end