Início › Documentação › 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.
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 exportsSelfRevive()Reanima o admin local. Delega no Config.AmbulanceSystem configurado.
-- qb-ambulancejob → hospital:client:Revive
-- wasabi_ambulance → wasabi_ambulance:revive
-- default → /revive commandModifySkin()Abre o menu de roupa para o admin local. Delega em Config.ClothingSystem.
-- 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.
-- qb-mechanicjob → exports qb-mechanicjob:PaintCategories()
-- vms_tunning → exports vms_tuning:openTuning()
-- esx_tunning → exports esx_tuning:OpenMenu()
-- okokTunning → TriggerServerEvent okokTuning:openFreeMenuSetMaxVehicleFuel(vehicle)Abastece o veículo indicado a 100 %. Delega em Config.FuelSystem.
-- 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.
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).
ShowNotification(text)Mostra uma notificação ao admin local. Delega em Config.Framework.
function ShowNotification(text)
-- 'qbcore' → TriggerEvent("QBCore:Notify", text)
-- 'esx' → Framework.ShowNotification(text)
endGere 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-weathersyncIsTimeFreezed() / IsWeatherFreezed() → booleanBanPlayerHandler(license, targetId, time, staffName, reason)Chamada quando Config.CustomBanSystem = true. Implementa aqui a tua lógica de banimento personalizada.
function BanPlayerHandler(license, targetId, time, staffName, reason)
-- implement custom ban
endUnbanPlayerHandler(license)Chamada ao desbanir com Config.CustomBanSystem = true.
function UnbanPlayerHandler(license)
endIsbannedHandler(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.
function IsbannedHandler(license)
return false
endOnCK(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.
function OnCK(identifier)
-- Example: delete player properties
-- MySQL.query.await("DELETE FROM player_properties WHERE citizenid = ?", { identifier })
endGetPlayerVehicles(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.
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.
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) |
SendChatMessage(src, header, color, message)Envia uma mensagem de chat formatada a um jogador.
function SendChatMessage(src, header, color, message)
TriggerClientEvent('chatMessage', src, header, color, message)
end