Inicio › Documentación › Personalización · origen_admin

Personalización · origen_admin

La carpeta custom/ te permite integrar cualquier sistema de framework, inventario, ambulancia, ropa, baneos o vehículos sin tocar el núcleo. Todos los ficheros son escrow_ignore, así que se conservan al actualizar.

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()

Revive al admin local. Delega en el Config.AmbulanceSystem configurado.

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

ModifySkin()

Abre el menú de ropa para el admin local. Delega en 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 el menú de tuning del vehículo actual. Delega en 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)

Reposta el vehículo indicado al 100 %. Delega en Config.FuelSystem.

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

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

Acciones de vehículo integradas. BoostVehicle aplica los máximos de motor, frenos, tracción y manejo.


custom/client/inventory.lua

ClearInv(source)

Vacía el inventario de un jugador ejecutando el comando adecuado para Config.Inventory.

Compatibles: origen_inventory, qs-inventory, codem-inventory, ox_inventory, qb-inventory.


SeeInv(source)

Abre el inventario de un jugador. Recurre a origen_admin:server:open_otherinv si el inventario no tiene comando en el cliente.

Compatibles en el cliente: origen_inventory, qs-inventory, codem-inventory, ox_inventory. Alternativa en el servidor: qb-inventory (mediante OpenInventoryById).


custom/client/notifications.lua

ShowNotification(text)

Muestra una notificación al admin local. Delega en Config.Framework.

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

custom/client/weather.lua

Gestiona la sincronización del clima y la hora. Detecta automáticamente qb-weathersync si está presente.

SetWeather(weather, isSynced)

Establece el tipo de clima. Si isSynced = true y qb-weathersync está en ejecución, lo sincroniza con todos los jugadores.

SetWeatherTime(hour, minute)

Fuerza el reloj del juego a una hora concreta.

SetWeatherSync(state) → activa/desactiva la sincronización de qb-weathersync

IsTimeFreezed() / IsWeatherFreezed() → boolean


custom/server/actions.lua

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

Se llama cuando Config.CustomBanSystem = true. Implementa aquí tu lógica de baneo personalizada.

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

UnbanPlayerHandler(license)

Se llama al desbanear con Config.CustomBanSystem = true.

lua
function UnbanPlayerHandler(license)
end

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

Se llama cuando un jugador se conecta con Config.CustomBanSystem = true. Devuelve false si no está baneado, o una tabla con los detalles del baneo.

lua
function IsbannedHandler(license)
    return false
end

custom/server/ck.lua

OnCK(identifier)

Hook que se ejecuta después de borrar a un jugador (CK). Añade aquí lógica de limpieza propia: consultas extra a la base de datos, 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[]

Obtiene de la base de datos los vehículos registrados de un jugador. Resuelve la consulta automáticamente según Config.GarageSystem y Config.Framework. Devuelve { label, subData (plate), garage } por cada vehículo.

AddPlayerVehicle(citizenid, model) no tiene implementación por defecto: tienes que escribir la consulta INSERT para la tabla de vehículos concreta de tu servidor.


custom/server/apartments.lua

GetPlayerApartments(citizenid) → table[]

Obtiene las propiedades de un jugador. Se resuelve automáticamente según Config.HousingSystem.

AddPlayerApartment(citizenid, type) no tiene implementación por defecto: tienes que escribir la consulta INSERT para tu sistema de viviendas.


custom/server/player.lua

Sobrescribe estas funciones para leer los metadatos del jugador con la estructura de tu framework:

Función Devuelve Lee por defecto de
GetPlayerHealth(player) number PlayerData.metadata.health (por defecto 200)
GetPlayerHunger(player) number PlayerData.metadata.hunger (por defecto 100)
GetPlayerThirst(player) number PlayerData.metadata.thirst (por defecto 100)
GetPlayerArmor(player) number PlayerData.metadata.armor (por defecto 0)

custom/server/chat.lua

SendChatMessage(src, header, color, message)

Envía un mensaje de chat con formato a un jugador.

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