Inicio › Documentación › Personalización · origen_races
La carpeta custom/ te permite integrar tu framework, el sistema de combustible, el sistema de llaves y los eventos del juego sin tocar el núcleo. Ambos ficheros son escrow_ignore, así que sobreviven a las actualizaciones.
custom/
├── client.lua — notifications, fuel, keys, revive, weather
└── server.lua — notifications, admin check, race join/leave hooksHelpNotify(msg)Se llama cuando el jugador se acerca a un punto de acceso al arcade. Solo se usa cuando Config.CustomHelpNotify = true.
function HelpNotify(msg)
-- Default uses qb-core DrawText
-- Replace with your own:
-- lib.showTextUI('[E] - ' .. msg)
endShowNotify(msg)Muestra una notificación al jugador local. Usa el framework definido en Config.Framework.
function ShowNotify(msg)
-- 'qb' → QBCore.Functions.Notify(msg, 'success')
-- 'esx' → ESX.ShowNotification(msg)
-- custom: implement here
endSetFuel(vehicle, fuel)Establece el nivel de combustible de un vehículo de carrera. Se llama después de generar el vehículo de carrera del jugador.
function SetFuel(vehicle, fuel)
if Config.Fuel == 'LegacyFuel' then
exports['LegacyFuel']:SetFuel(vehicle, fuel)
end
-- Add your fuel system here:
-- exports['ox_fuel']:SetFuel(vehicle, fuel)
endgiveCarKey(plate)Entrega al jugador las llaves de su vehículo de carrera. Implementa aquí tu sistema de llaves.
function giveCarKey(plate)
TriggerEvent("vehiclekeys:client:SetOwner", plate)
-- Replace with your key system:
-- exports['qbx_vehiclekeys']:GiveKeys(vehicle, true)
endleaveRace()Se llama cuando el jugador local abandona una carrera. Comportamiento por defecto: elimina el vehículo de carrera.
function leaveRace()
SetEntityInvincible(PlayerPedId(), false)
local vehicle = GetVehiclePedIsIn(PlayerPedId(), true)
if vehicle ~= 0 then
DeleteVehicle(vehicle)
end
endrevivePlayer()Se llama cuando hay que reanimar a un jugador a mitad de carrera (p. ej. tras un choque). Implementa aquí tu lógica de ambulancia/reanimación.
function revivePlayer()
-- Example:
-- TriggerEvent('hospital:client:Revive')
enddisableWeather() / enableWeather()Se llaman al entrar y al salir de una carrera para pausar/reanudar tu recurso de sincronización del clima.
function disableWeather()
-- TriggerEvent('your_weather:pause')
end
function enableWeather()
-- TriggerEvent('your_weather:resume')
endutils.Notify(src, msg)Envía una notificación a un jugador desde el servidor.
utils.Notify = function(src, msg)
-- 'qb' → TriggerClientEvent("QBCore:Notify", src, msg)
-- 'esx' → TriggerClientEvent("esx:showNotification", src, msg)
-- custom: implement here
endIsPlayerAdmin(source) → booleanComprueba si un jugador tiene acceso de administrador según Config.GroupPermissions. Se valida mediante los grupos del framework y los permisos ACE de FiveM.
function IsPlayerAdmin(source)
-- Default: validates Config.GroupPermissions
-- via IsPlayerAceAllowed and framework group checks
return false
endjoinRace(src)Hook que se llama cuando un jugador se une correctamente a una sesión de carrera. Implementa aquí tu lógica personalizada (p. ej. registro de logs, seguimiento de estadísticas).
function joinRace(src)
-- src = server ID of the player who joined
endleaveRace(src)Hook que se llama cuando un jugador abandona una sesión de carrera.
function leaveRace(src)
-- src = server ID of the player who left
end