Sistema de garajes para FiveM
Garajes y depósito con interfaz NUI propia, compatible con ESX y QBCore y validado en servidor.
// el problema
Muchos scripts de garaje confían en lo que envía el cliente, lo que permite a los tramposos duplicar coches, sacar vehículos ajenos o guardarlos desde cualquier punto del mapa. Además, cada uno funciona solo con un framework.
// la solución
Recurso con una capa de compatibilidad que detecta ESX o QBCore y una arquitectura en la que el servidor valida todo: distancia real del jugador, propiedad del vehículo, matrícula y modelo leídos de la entidad y límite de peticiones. La interfaz NUI muestra el estado de cada vehículo y tiene buscador.
// lo más destacado
- Validación anti-exploit completa en servidor
- Compatible con ESX y QBCore (detección automática)
- Depósito que recupera coches destruidos o perdidos
- Export para scripts de policía y grúa
// un vistazo al código
lib.callback.register('aj_garage:store', function(src, id, netId, props)
local location = Config.Garages[id]
if not location or not isNear(src, location) then return false end
local entity = NetworkGetEntityFromNetworkId(netId)
if GetPedInVehicleSeat(entity, -1) ~= GetPlayerPed(src) then
return false, L.not_driver
end
-- la matrícula se lee del servidor, no de lo que mande el cliente
local plate = trim(GetVehicleNumberPlateText(entity))
local vehicle = findVehicle(Bridge.getIdentifier(src), plate)
if not vehicle then return false, L.not_owner end
-- …
end)// más proyectos
Web de servidor de GTA - FiveM
Web y panel de jugadores de un servidor de rol: login con Discord, sugerencias con votos, postulaciones y estado en vivo.
- HTML
- CSS
- JavaScript
- FiveM API
Web de restaurante con reservas
Carta dinámica, estado «abierto ahora» y reservas online con control de aforo real.
- HTML
- CSS
- JavaScript
- PHP