Agency-Shops Instalación
Cada 24/7, LTD, Rob's Liquor, ferretería, Ammu-Nation y gasolinera del mapa en un solo script para FiveM.

01Instalación
- 1Extract Agency-Shops into your resources folder
- 2Asegúrate de que OneSync esté activado en tu servidor
- 3Add ensure Agency-Shops to server.cfg, after your framework, your inventory and oxmysql
- 4Inicia el servidor: las tablas de la base de datos se crean en el primer inicio (install/agency_shop.sql solo se necesita si tu usuario de base de datos no tiene permisos para crear tablas)
- 5Añade add_ace group.admin agency.shop allow para dar a los administradores acceso al panel /ashops
- 6¿Usas qb-shops, esx_shops o las tiendas de ox_inventory? Elimina sus entradas de 24/7, o aparecerán dos cajeros detrás del mismo mostrador
- 7¿Usas qb-storerobbery o un script similar? Desactiva uno de ellos, o establece Config.Robbery.Enabled = false
- 8¿Usas un script de combustible con sus propios surtidores? Desactiva su interacción en surtidores, o establece Config.GasStations.Enabled = false
- 9Standalone: completa Config.Standalone para el dinero y los ítems (mira la página de configuración)
- 10Opcional: introduce tus direcciones de webhook de Discord en config_server.lua, archivo que nunca se envía a los jugadores
02Dependencias
oxmysql (requerido)OneSync (obligatorio)QBCore, QBox o ESX (opcional, sin ninguno funciona en modo standalone)Un inventario (opcional: ox_inventory, qs-inventory o el de tu framework, detectado automáticamente)Agency Phone (opcional, añade Agency Pay como método de pago)Agency-Notify (opcional, de lo contrario la tienda muestra sus propios mensajes)ox_target o qb-target (opcional, de lo contrario se usa la tecla de interacción)ps-dispatch o cd_dispatch (opcional, para alertas de robo y hurto, de lo contrario se usa una alerta integrada)Un script de combustible (opcional: LegacyFuel, ox_fuel, cdn-fuel, ps-fuel, lc_fuel, Renewed-Fuel, okokGasStation o qs-fuelstations, de lo contrario se ejecuta el sistema integrado)
03Archivo SQL
Opcional: el recurso crea estas tablas por sí mismo al iniciarse. Importa este archivo solo si preparas la base de datos a mano:
-- =============================================================================
-- AGENCY SHOP - database tables
-- Created automatically on start (Config.AutoApplySql = true). Run this file by
-- hand only if your database user may not create tables.
-- =============================================================================
CREATE TABLE IF NOT EXISTS `agency_shop_owned` (
`id` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL DEFAULT 'store',
`owner` VARCHAR(80) NOT NULL,
`owner_name` VARCHAR(120) NOT NULL DEFAULT '',
`name` VARCHAR(60) NULL DEFAULT NULL,
`balance` INT NOT NULL DEFAULT 0,
`prices` LONGTEXT NULL,
`stock` LONGTEXT NULL,
`staff` LONGTEXT NULL,
`fuel` INT NOT NULL DEFAULT 0,
`fuel_prices` LONGTEXT NULL,
`sales_total` INT NOT NULL DEFAULT 0,
`revenue_total` BIGINT NOT NULL DEFAULT 0,
`last_sale` TIMESTAMP NULL DEFAULT NULL,
`bought_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `owner` (`owner`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_orders` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL DEFAULT 'goods',
`items` LONGTEXT NULL,
`crates` INT NOT NULL DEFAULT 0,
`litres` INT NOT NULL DEFAULT 0,
`cost` INT NOT NULL DEFAULT 0,
`fee` INT NOT NULL DEFAULT 0,
`status` VARCHAR(16) NOT NULL DEFAULT 'open',
`courier` VARCHAR(80) NULL DEFAULT NULL,
`courier_name` VARCHAR(120) NULL DEFAULT NULL,
`eta` INT NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop` (`shop`),
KEY `status` (`status`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_points` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(16) NOT NULL,
`x` DOUBLE NOT NULL,
`y` DOUBLE NOT NULL,
`z` DOUBLE NOT NULL,
`h` DOUBLE NOT NULL DEFAULT 0,
`category` VARCHAR(40) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `shop` (`shop`)
);
CREATE TABLE IF NOT EXISTS `agency_shop_ledger` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`kind` VARCHAR(24) NOT NULL,
`amount` INT NOT NULL DEFAULT 0,
`note` VARCHAR(160) NULL DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop` (`shop`)
);
-- What admins change with /ashops: catalogs and store settings, laid over config.lua.
CREATE TABLE IF NOT EXISTS `agency_shop_overrides` (
`kind` VARCHAR(16) NOT NULL,
`id` VARCHAR(64) NOT NULL,
`data` LONGTEXT NULL,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`kind`, `id`)
);
-- Every sale of an owned store or station, line by line: the owner's analytics.
CREATE TABLE IF NOT EXISTS `agency_shop_sales` (
`id` INT NOT NULL AUTO_INCREMENT,
`shop` VARCHAR(64) NOT NULL,
`sale` VARCHAR(24) NOT NULL,
`item` VARCHAR(64) NOT NULL,
`qty` INT NOT NULL DEFAULT 0,
`amount` INT NOT NULL DEFAULT 0,
`account` VARCHAR(16) NOT NULL DEFAULT 'cash',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `shop_time` (`shop`, `created_at`)
);
+Conviene saber
Agency-Shops funciona justo después de la línea ensure. Conviene revisar cuatro puntos antes del primer inicio: el orden de carga, la base de datos, el acceso de administrador y otros scripts de tiendas, atracos o combustible.
- Orden de inicio y OneSync
- Coloca ensure Agency-Shops después de tu framework, tu inventario y oxmysql en server.cfg. OneSync debe estar activado, y oxmysql es obligatorio.
- Base de datos
- Las tablas agency_shop_owned, agency_shop_orders, agency_shop_points, agency_shop_ledger, agency_shop_overrides y agency_shop_sales se crean en el primer inicio. install/agency_shop.sql solo se necesita si tu usuario de base de datos no puede crear tablas, y Config.AutoApplySql = false desactiva el paso automático.
- Acceso de administrador
- Los administradores son jugadores con el ACE agency.shop, group.admin o group.superadmin, o un grupo de Config.Admin.Groups. add_ace group.admin agency.shop allow otorga el panel /ashops a tu grupo de administradores. En servidores standalone, Config.Standalone.admins lista las licencias.
- Otros scripts de tiendas
- Elimina las entradas 24/7 de qb-shops, esx_shops o las tiendas de ox_inventory, o dos cajeros aparecerán detrás del mismo mostrador. Desactiva qb-storerobbery y scripts similares, o establece Config.Robbery.Enabled = false. Para un script de combustible con surtidores propios, desactiva la interacción con sus surtidores o establece Config.GasStations.Enabled = false.
?Preguntas frecuentes
¿A dónde van los webhooks de Discord?
En config_server.lua, para Ownership, Register, Deliveries, Shoplift y Robbery. Ese archivo nunca se envía a los jugadores.
¿Necesito Agency Phone?
No. Cuando agency-phone está activo, Agency Pay se ofrece en la caja y en el surtidor automáticamente. Sin él, los jugadores pagan en efectivo o con tarjeta.