Antes de empezar#
Antes de instalar Advanced Garages, asegúrate de que tu servidor cumple los requisitos siguientes. El recurso declara la mayoría en su manifiesto, así que FiveM se niega a iniciarlo mientras falte alguno.
Requisito | Estado | Notas |
|---|---|---|
ESX, QBCore o Qbox | Obligatorio | Se detecta automáticamente a partir de |
oxmysql | Obligatorio | Acceso a la base de datos. También proporciona el archivo |
ox_lib | Obligatorio | Zonas, callbacks y menús contextuales. |
bob74_ipl | Obligatorio | Carga los interiores IPL usados como showrooms de los garajes. |
VehicleDeformation | Obligatorio | Guarda cada abolladura y arañazo con el vehículo. Se incluye en la descarga, junto al recurso de garajes. |
screenshot-basic | Obligatorio | Fotografía los muebles nuevos en el Furniture Creator. |
OneSync y game build 2802+ | Obligatorio | Artifact del servidor 5895 o posterior. Los vehículos persistentes y los routing buckets privados dependen de OneSync. |
Target o menú radial | Opcional | ox_target, qb-target, qb-radialmenu o qs-radialmenu. Sin ninguno, los garajes usan avisos en pantalla [E] y [G]. |
Llaves y combustible del vehículo | Opcional | Las llaves se entregan cuando un coche sale del garaje, y el nivel de combustible se guarda con él. |
Inventario y ropa | Opcional | Solo para muebles de almacén y armario colocados dentro de un garaje decorado. |
Cada llamada específica de un framework o de terceros está detrás de un pequeño archivo bridge abierto, y la mayoría de capas se detectan solas. La lista completa está en Integraciones.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.github.comReleases · Bob74/bob74_iplFix holes and customize the map.github.comReleases · Kiminaze/VehicleDeformationGetting and setting deformation on vehicles.github.comcitizenfx/screenshot-basicScreenshot resource for FiveM.Descargar Advanced Garages#
Tras comprar Advanced Garages, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Garages. Con otra cuenta el recurso no aparece.
Tras extraer la descarga, deberías tener las siguientes carpetas:
[garages]/
├── qs-advancedgarages/
│ ├── config/ -- what you may edit
│ ├── client/custom/ -- open bridges to other resources (client)
│ ├── server/custom/ -- open bridges, webhooks, insurance prices (server)
│ ├── locales/ -- 42 languages
│ ├── sql/ -- esx.sql, qb.sql, default_garages.sql
│ └── stream/ -- props and textures
├── VehicleDeformation/ -- required dependency
└── [shells]/ -- optional garage shellsLa carpeta debe llamarse
qs-advancedgarages. Los exports, las rutas NUI y la base de datos usan ese nombre, y el recurso detiene la consola del servidor a propósito si detecta que se ha renombrado.
Instalar el recurso#
Mueve toda la carpeta [garages] al directorio de recursos de tu servidor. Una carpeta entre corchetes es solo una categoría, así que puede estar en cualquier lugar dentro de resources/.
resources/
└── [qs]/
└── [garages]/
├── qs-advancedgarages/
└── VehicleDeformation/Después abre tu server.cfg e inicia todas las dependencias antes de los garajes:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
ensure bob74_ipl
ensure screenshot-basic
# Optional: target, keys, fuel, inventory, clothing...
ensure ox_target
ensure qs-vehiclekeys
ensure VehicleDeformation
ensure qs-advancedgarages
# Housing goes after the garages
ensure qs-housingEl orden de carga importa. Los sistemas de combustible, llaves, inventario, ropa y clima solo se detectan si ya están iniciados cuando se inician los garajes, así que un recurso colocado después de qs-advancedgarages se ignora sin avisar. Un script de housing que añade sus propios garajes, como qs-housing, debe iniciarse después de los garajes.
La base de datos#
Importa el archivo que corresponde a tu framework desde la carpeta sql/ con HeidiSQL, phpMyAdmin o el panel de tu hosting. Evita XAMPP y servidores locales similares sin optimizar, que provocan errores de conexión.
Servidor nuevo: importa sql/esx.sql tal cual.
Servidor con vehículos existentes: abre esx.sql y elimina la línea DROP TABLE IF EXISTS `owned_vehicles` y el bloque CREATE TABLE `owned_vehicles` que hay debajo. Pon esto en su lugar y luego importa el resto del archivo:
ALTER TABLE `owned_vehicles`
ADD COLUMN IF NOT EXISTS `type` VARCHAR(20) NOT NULL DEFAULT 'vehicle',
ADD COLUMN IF NOT EXISTS `garage` VARCHAR(200) NULL DEFAULT 'OUT';Después el archivo añade tag, impound_data, favorite, stored, jobVehicle, jobGarage y hash a la tabla, y shell_garage a users. Si hash ya existe, esa línea falla y se puede omitir.
Importa sql/qb.sql. Nunca elimina player_vehicles: solo añade las columnas que necesita (tag, impound_data, favorite, garage, type, jobVehicle, jobGarage) y shell_garage a players.
Las columnas estándar de QBCore state, mods, depotprice y hash se usan tal cual.
Lo que crea el SQL, y lo que crea el recurso por su cuenta al iniciarse:
Tabla | Creada por | Contenido |
|---|---|---|
| SQL | Cada garaje: ubicación, zona, tipo, acceso, precio, interior, cámara de vista previa, propietario y poseedores de llaves. |
| SQL | Los muebles colocados en los garajes y los muebles personalizados creados en el juego. |
| SQL y al iniciar | Qué plaza de aparcamiento ocupa cada coche en un garaje MLO. |
| SQL y al iniciar (cuando el seguro está activado) | Pólizas, el nivel de bonificación de cada propietario y reclamaciones. |
Los garajes predeterminados se importan solos. En el primer inicio el recurso lee
sql/default_garages.sqly añade 39 garajes listos para usar: aparcamientos públicos por todo el mapa, muelles, un hangar de aeropuerto y un depósito para coches, barcos y aeronaves. Nunca sobrescribe un garaje que ya existe, así que no hay nada que importar a mano. ¿Borraste uno por error? Ejecutaimportdefaultgaragesen la consola del servidor.
Quién puede usar el creador#
Los garajes se crean y editan en el juego con /garagecreator, y los muebles personalizados con /garagefurniture. Ambos se abren para dos tipos de jugador:
Automático, nada que configurar. En ESX, los grupos admin y superadmin. En QBCore y Qbox, los permisos god y admin, o el ACE command. La misma comprobación protege los comandos de administración como /givecar y /mdvall.
Trabajos que pueden construir garajes sin ser administradores, en config/config.lua. Omite grade para permitir todos los rangos de ese trabajo.
Config.CreatorJobs = {
{ job = 'mechanic', grade = { 1, 2 } },
-- { job = 'realestate' },
}Configurar el recurso#
Los garajes en sí no se configuran en archivos: viven en la base de datos y se colocan en el juego. Los archivos contienen el comportamiento, los precios y las integraciones. Cada valor está etiquetado como [EDIT] (seguro de cambiar), [ADV] (avanzado), [CORE] o [AUTO] (no tocar).
Archivo | Contenido |
|---|---|
| Idioma, menú y target, blips, precios y tarifas, botones del menú, seguro, garajes MLO, puntos de recuperación, depósitos predeterminados, cámaras de vista previa, formato de moneda, controles del creador. |
| Garajes de trabajo y de banda con sus flotas, liveries, tuning y extras. |
| Los showrooms IPL que un garaje puede usar como interior, y sus plazas de aparcamiento. |
| Distancias de decoración, quién puede decorar, puertas dinámicas. |
| El catálogo de muebles: categorías, props, colores y precios. |
| Nombres para vehículos addon, clases de vehículos y logotipos de marcas. |
| Tu token de FiveManage, usado para subir las imágenes de los muebles. |
| Webhooks de Discord, una URL por tipo de log. |
Los valores que conviene revisar primero:
Config.Locale = GetConvar('qs:locale', 'en') -- or: setr qs:locale "es" in server.cfg
Config.Menu = 'ox_lib' -- context menus for management, keys and recovery
Config.UseTarget = 'none' -- 'ox_target' | 'qb-target' | 'qb-radialmenu' | 'qs-radialmenu'
Config.ImpoundPrice = 500 -- default release fee at the impound
Config.ImpoundJobs = { 'police' }
Config.Impound = { Enabled = true } -- false: lost cars go to the recovery point, not the impound
Config.DefaultImpounds = { vehicle = false, boat = false, plane = false } -- false = nearest impound
Config.VehicleKeysGarageAccess = false -- true: key holders can use the car in garages (qs-vehiclekeys)
Config.MenuBlur = true -- false: no background blur in the garage menu
Config.Intl = { locales = 'en-US', options = { style = 'currency', currency = 'USD', minimumFractionDigits = 0 } }
Config.Debug = true -- set to false on a live server
Config.Debugviene activado para que una primera instalación se explique sola en la consola. Desactívalo antes de abrir el servidor a los jugadores: imprime mucho y registra un comando de prueba.
Verificar la instalación#
Reinicia el servidor y lee la consola. Un primer inicio correcto se ve así:
[GARAGES] Imported the default garages (<n> rows). Edit them with /garagecreator.
GARAGES INFO: Furniture Creator initialized: 0 custom items loaded
[INFO]: qs-advancedgarages initiated successfully.Si una URL de webhook está vacía, verás Missing webhooks: ... en lugar de la última línea. Es solo un recordatorio; los garajes funcionan sin logs. Después entra en el servidor y recorre el primer ciclo:
Guarda un coche
Date un coche con
/givecar <your id> sultan. Se entrega en el depósito, así que recógelo en Hayes Autos, luego conduce hasta Legion Square, detente en el marcador y pulsa E.Abre el garaje
Camina hasta el punto del garaje y pulsa E. La cámara se mueve al showroom, tu coche se expone con sus estadísticas, y Drive lo saca con su combustible, daños y llaves.
Abre el creador
/garagecreatorlista todos los garajes del servidor, con filtros, búsqueda y un botón de teletransporte. Continúa con Uso.
Los garajes creados, editados o eliminados en el creador se aplican a todos los jugadores al instante, sin reiniciar.



