El furgón policial: sirena, cuatro asientos para presos y la API para police jobs.
El RCO Enforcer es un furgón policial negro con una caja para presos detrás. Se vende en el concesionario de RCO Vehicles como todo vehículo RCO (ver Resumen).
Seis asientos: el conductor, un pasajero delante y cuatro presos en la caja, en dos bancos enfrentados.Detrás del furgón hay un solo prompt para la caja. Cada jugador que lo pulsa recibe el siguiente asiento libre, de la cabina hacia las puertas, y sube por las dos puertas traseras. Un asiento ocupado nunca se ofrece.
El conductor pulsa G para encender la sirena y G otra vez para apagarla. Usa la tecla de la bocina: el Enforcer no tiene bocina. El rotor gira, la lámpara roja se enciende y todos cerca la oyen. La sirena se apaga cuando el conductor baja.En el config/config.lua del Enforcer:
Tu police job puede meter a un jugador en la caja: esposado no puede caminar, así que la propia animación del furgón lo lleva desde detrás hasta su asiento. Los exports se ejecutan en el cliente del preso. Tu job decide en su servidor quién puede arrestar a quién (trabajo, distancia, esposas); el Enforcer confía en esa comprobación.
Export (client)
Qué hace
Devuelve
PutInBack(vehicle, held)
Mete a este jugador en el siguiente asiento de preso libre. vehicle es la entidad o el network id del furgón; sin él, vale el Enforcer cuya parte trasera está a menos de 6 m. held (por defecto true): no puede salir solo.
El asiento (1 a 4), o false si está lleno, lejos o volcado
TakeOutOfBack()
Suelta a este jugador; baja por las puertas traseras.
true si estaba en un asiento de preso
IsHeldInBack()
Si este jugador está retenido en la caja.
true / false
-- cliente del policía: el Enforcer que eligióTriggerServerEvent('myjob:server:putInEnforcer', targetId, NetworkGetNetworkIdFromEntity(enforcer))-- servidor (tu police job): comprueba al policía, la distancia y las esposas, luegoRegisterNetEvent('myjob:server:putInEnforcer', function(targetId, netId) TriggerClientEvent('myjob:client:putInEnforcer', targetId, netId)end)-- cliente del presoRegisterNetEvent('myjob:client:putInEnforcer', function(netId) local seat = exports['rco-enforcer']:PutInBack(netId) -- sin network id: el Enforcer cuya parte trasera está a menos de 6 m if not seat then -- sin asiento: el Enforcer está lleno o lejos endend)RegisterNetEvent('myjob:client:takeOutOfEnforcer', function() exports['rco-enforcer']:TakeOutOfBack()end)
PutInBack detiene la animación actual del jugador (la pose de esposado) para que suene la de subir. Vuelve a poner la pose de esposado después si tu job usa una. El cierre del furgón no impide el export. El preso sigue saliendo de la caja si muere o si el furgón se guarda.
En el paquete RCO Cars todos los coches están en un solo recurso: llama a exports['rco-cars']:PutInBack(...).