Antes de empezar#
Antes de instalar Safezone Creator, asegúrate de que tu servidor cumple los requisitos mínimos. Dos librerías, OneSync y un framework son obligatorios; todo lo demás es opcional y se detecta solo.
Requisito | Estado | Notas |
|---|---|---|
| Obligatorio | Acceso a la base de datos para la tabla de zonas. |
| Obligatorio | Las propias zonas, los callbacks y las funciones compartidas. |
OneSync | Obligatorio | Declarado como dependencia. Activado por defecto en los servidores con txAdmin. |
Framework | Obligatorio |
|
Inventario | Recomendado | Proporciona la lista de armas para las armas permitidas. Sin uno, esa lista queda vacía y la consola lo advierte. |
| Opcional | Bandas en ESX. QBCore y Qbox usan sus propias bandas sin instalar nada. |
| Opcional | Su HUD se oculta mientras el creador está abierto. |
Todo lo específico de un framework o inventario está detrás de un pequeño archivo puente, y el recurso elige el correcto mirando lo que ya está en ejecución:
Capa | Se detecta a partir de |
|---|---|
Framework |
|
Inventario |
|
Bandas | Las del propio framework en QBCore y Qbox · |
Ejecuta un solo framework y un solo inventario. La detección toma el recurso de la lista que encuentre iniciado, así que con dos en ejecución no hay un ganador garantizado. Integraciones tiene los detalles y cómo fijar uno a mano.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.Descargar Safezone Creator#
Tras comprar Safezone Creator, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en el CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Safezone Creator.
Tras extraer la descarga, deberías tener la siguiente carpeta:
qs-safezone-creator/
├── config/ -- main.lua, what you may edit
├── custom/ -- framework bridges and notifications (editable)
├── client/custom/ -- client-side bridges (editable)
├── server/custom/ -- inventory bridges (editable)
├── server/webhooks.lua -- Discord logs
├── database/ -- database.sql
├── locales/ -- nineteen languages
└── web/ -- the interface, ready to useMantén el nombre de carpeta
qs-safezone-creator. La comprobación de actualizaciones busca el recurso por el nombre de su carpeta, así que una copia renombrada ya no puede avisarte cuando sale una nueva versión.
Instalar el recurso#
Mueve la carpeta qs-safezone-creator al directorio de resources de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-safezone-creator/Una vez copiada, abre tu server.cfg y asegúrate de que cada dependencia — y todo lo que deba detectar — se inicie antes que Safezone Creator:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Inventory, gangs, HUD
ensure qs-inventory
# ensure qs-gangs
# ensure qs-interface
ensure qs-safezone-creatorEl orden de carga importa. La detección solo ve los recursos que ya están iniciados, así que un framework o inventario que se inicia después de Safezone Creator no se encuentra.
La base de datos#
Safezone Creator guarda todas las zonas en una sola tabla, qs_safezones. Importa database/database.sql en la base de datos de tu servidor antes de iniciar el recurso, con HeidiSQL, phpMyAdmin o cualquier cliente MySQL / MariaDB.
database.sql
DROP TABLE IF EXISTS `qs_safezones`;
CREATE TABLE IF NOT EXISTS `qs_safezones` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`creator` varchar(50) NOT NULL,
`label` varchar(255) NOT NULL,
`zone` longtext NOT NULL,
`blip` longtext NOT NULL,
`job` longtext DEFAULT NULL,
`job_grades` longtext DEFAULT NULL,
`gang` varchar(50) DEFAULT NULL,
`gang_grades` longtext DEFAULT NULL,
`bypass_items` longtext DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `creator` (`creator`),
KEY `label` (`label`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;Columna | Contiene |
|---|---|
| El número de la zona — mostrado en el creador como Zone #id — y su nombre. |
| El identificador del administrador que la guardó por última vez. |
| Las esquinas, la altura y los ajustes de la zona — curación, contorno, notificaciones, límite de velocidad. |
| Si tiene blip, y su nombre, sprite, color, escala y posición. |
| Quién conserva sus armas dentro: trabajos y rangos, y una banda con sus rangos. |
| Las armas que cualquiera puede usar dentro. |
Las zonas se leen una vez al iniciar el recurso y se guardan en memoria. Crear, editar o borrar desde el creador actualiza la tabla y a cada jugador conectado al mismo tiempo — pero una fila cambiada a mano en la base de datos solo se aplica tras reiniciar el recurso.
Dar acceso al creador#
El creador es donde se dibujan y cambian las zonas, así que /safezonecreator se comprueba en el servidor cada vez que se escribe. Cualquiera de las dos vías de abajo deja entrar a un jugador; a cualquier otro se le dice You do not have permission to do this.
Automático, nada que configurar. En ESX, los jugadores del grupo admin o superadmin. En QBCore y Qbox, los jugadores con el permiso admin o god, o a los que se permite el ace command — que es como suelen configurarse los administradores de txAdmin:
add_ace group.admin command allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.adminReinicia el servidor después de añadir las líneas.
Entrega el creador a un trabajo — o a algunos de sus rangos — en config/main.lua. grade = false deja entrar a todos los rangos; una lista deja entrar solo a esos números de rango.
Config.CreatorJobs = {
{
job = 'police',
grade = { 1, 2, 3 } -- only these grades
},
{
job = 'ambulance',
grade = false -- every grade
}
}Los rangos son los números de rango de tu framework — 0 suele ser el rango más bajo.
Configurar el recurso#
Cada zona se configura en el juego. Los archivos solo contienen lo que se aplica a todo el servidor:
Archivo | Contenido |
|---|---|
| El idioma, la detección, quién puede abrir el creador, el interruptor de curación, la cámara y las teclas del creador, la depuración. |
| El webhook de Discord para los logs del creador, y si aparecen las IP en ellos. |
| Cómo se muestran las notificaciones, y qué HUD se oculta mientras el creador está abierto. |
| Los puentes de framework: trabajos, rangos, bandas y la comprobación de administrador. |
| Un puente por inventario: de dónde salen los nombres, las etiquetas y las imágenes de los ítems. |
| Las diecinueve traducciones. |
Los valores que conviene revisar primero:
Config.Locale = 'en' -- ar, bg, da, de, en, es, fa, fr, hi, hu, it, ja, ko, nl, pt, ro, ru, tr, zh-CN
Config.Regeneration = {
health = true, -- master switch for "Heal on Enter" on every zone
}
Config.MinPointLength = 70.0 -- perimeter (metres) at which a drawn zone turns green
Config.Debug = true -- verbose console output; set to false in production
Config.Debugviene activado. Déjalo activado mientras configuras tus zonas — la consola explica cada cambio, entrada y salida — y desactívalo antes de que el servidor salga en vivo.
Verificar la instalación#
Tras completar la instalación, reinicia tu servidor y lee la consola. Estas líneas indican que el recurso encontró su framework y buscó actualizaciones:
[INFO] Successfully loaded the framework. esx
You are using the latest version of qs-safezone-creator!Si en cambio el recurso se detiene, con un error que menciona custom.none, no se encontró ningún framework — muévelo por encima de ensure qs-safezone-creator. Una advertencia repetida de Using standalone inventory significa lo mismo para tu inventario.
Después entra en tu servidor y recorre el primer ciclo:
Abre el creador
Escribe
/safezonecreatorcomo administrador. El creador se abre con la lista de zonas a la izquierda — vacía en una instalación nueva.Dibuja una zona
Pulsa +, escribe un nombre, pulsa Zone Points y haz clic izquierdo en cuatro o más esquinas a tu alrededor con la cámara libre. Pulsa
ENTERpara volver al formulario.Guarda y entra
Dale al blip un nombre y una posición dentro de la zona, pulsa Create Zone y entra con un arma en las manos: se te avisa de que entraste en la zona y el arma se guarda. Uso cubre todas las opciones del formulario.
A partir de aquí nada necesita un reinicio. Cada zona se crea, cambia y borra en el juego, y llega a todos los jugadores a la vez.



