Comandos#
Safezone Creator registra un solo comando. Todo lo demás se hace en el creador que abre.
Comando | Dónde | Descripción |
|---|---|---|
| En el juego | Abre el creador. Solo administradores del framework y los trabajos de |
No hay comando de consola ni tecla asignada por defecto: las zonas se dibujan en el mundo, así que el creador necesita un jugador en el juego. Quién puede abrirlo se explica en Instalación.
Eventos de cliente#
Safezone Creator no necesita exports para manejarse desde tus scripts: les cuenta lo que ocurre. Dos eventos de cliente se disparan en la propia máquina del jugador cuando cruza el borde de una zona, y cada uno lleva la zone — sus datos completos, descritos abajo. Úsalos para ocultar un HUD, pausar un trabajo, impedir que empiece un robo o rechazar cualquier acción propia dentro de una zona segura.
safezone:enteredZone
Se dispara una vez cuando el jugador entra caminando, conduciendo o cayendo en una zona segura.
AddEventHandler('safezone:enteredZone', function(zone)
print(('Entered safe zone %s (#%s)'):format(zone.label, zone.id))
end)safezone:leftZone
Se dispara una vez cuando el jugador sale de ella.
AddEventHandler('safezone:leftZone', function(zone)
print(('Left safe zone %s'):format(zone.label))
end)Ejemplo: ¿está el jugador en una zona segura?
Las zonas pueden solaparse, así que cuenta las entradas en lugar de guardar un solo true/false — si no, salir de una zona estando aún en otra se interpreta como estar fuera.
local zonesInside = 0
AddEventHandler('safezone:enteredZone', function()
zonesInside = zonesInside + 1
end)
AddEventHandler('safezone:leftZone', function()
zonesInside = math.max(zonesInside - 1, 0)
end)
function IsInSafeZone()
return zonesInside > 0
end
-- in your own action
if IsInSafeZone() then
return lib.notify({ type = 'error', description = 'You cannot do that in a safe zone.' })
endEl objeto de zona#
Lo que reciben ambos eventos — la zona tal como se guardó en el creador:
Campo | Tipo | Contiene |
|---|---|---|
| number | El número de la zona en la base de datos. |
| string | Su nombre. |
| table | Las esquinas, cada una con |
| number | La altura de la zona, en metros. |
| table |
|
| boolean | Si la zona cura. |
| boolean | Si su contorno se dibuja en el mundo. |
| boolean | Si se avisa a los jugadores al entrar y salir. |
| number | El límite de velocidad; |
| table · table | Los trabajos exentos, y sus rangos exentos indexados por nombre de trabajo. |
| string · table | La banda exenta y sus rangos exentos. |
| table | Los nombres de las armas que cualquiera puede usar dentro. |
Eventos de red#
El servidor mantiene actualizada la copia de las zonas de cada cliente con estos eventos. Se listan para que los reconozcas en un log — no para dispararlos a mano.
Evento | Dirección | Se envía cuando |
|---|---|---|
| Cliente → servidor | La interfaz del jugador se ha cargado; pide las zonas. |
| Servidor → cliente | La respuesta: todas las zonas del servidor. |
| Servidor → todos los clientes | Se creó una zona. |
| Servidor → todos los clientes | Se editó una zona. |
| Servidor → todos los clientes | Se borró una zona. Lleva el id de la zona. |
| Servidor → cliente | El servidor muestra un mensaje a un jugador. |
Un script de cliente tuyo también puede escuchar
safezone:setZones,safezone:addZone,safezone:updateZoneysafezone:removeZoneconRegisterNetEventpara mantener su propia lista de dónde están las zonas seguras — para dibujarlas en un mapa personalizado, por ejemplo.



