Antes de empezar#
Antes de instalar Drugs Creator, asegúrate de que tu servidor cumple estos requisitos. Iniciar el script sin ellos provoca errores.
Requisito | Estado | Notas |
|---|---|---|
OneSync | Obligatorio | Los laboratorios usan routing buckets y props en red. |
oxmysql | Obligatorio | Acceso a la base de datos. |
ox_lib | Obligatorio | Callbacks, menús, skill checks y barras de progreso. |
screenshot-basic | Obligatorio | Figura como dependencia. Se usa para las miniaturas del creador de muebles. |
Framework | Obligatorio | es_extended (ESX), qb-core (QBCore) o qbx_core (Qbox). |
Inventario | Obligatorio | Para los stashes de los laboratorios. Consulta Integraciones para ver la lista de compatibles. |
K4MB1-QuasarDrugs | Incluido | El resource de mapa que carga los shells de los laboratorios. Viene incluido en la descarga. |
Target, dispatch, ropa, sonido | Opcional | Se detectan automáticamente cuando están iniciados. |
Descargar Drugs Creator#
Después de comprar Drugs Creator, el resource se vincula automáticamente a tu cuenta del CFX Portal. Inicia sesión en el CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga la última versión.
Después de extraer la descarga, deberías tener las siguientes carpetas:
[drugscreator]/
├── qs-drugs-creator/ -- the script
│ ├── config/ -- main.lua, furniture.lua, scenes.lua
│ ├── custom/ -- framework bridges, notifications, progress bar, /selldrug
│ ├── client/custom/ -- inventory, wardrobe, dispatch, target, weather
│ ├── server/custom/ -- qs-inventory quests
│ ├── locales/ -- 41 languages
│ └── music/ -- lab music tracks
├── [shells]/K4MB1-QuasarDrugs/ -- the lab shells (map resource)
├── [sql]/esx.sql · qb.sql -- database
└── [img]/ -- inventory item imagesLa carpeta debe llamarse exactamente
qs-drugs-creator. El script comprueba su propio nombre al iniciar y apaga el servidor si se renombró, y las rutas de la interfaz dependen de él.
Instalar el resource#
Mueve qs-drugs-creator y K4MB1-QuasarDrugs al directorio de resources de tu servidor. Pueden estar en cualquier carpeta de categoría:
resources/
└── [qs]/
├── K4MB1-QuasarDrugs/
└── qs-drugs-creator/Luego abre tu server.cfg e inicia todo en este orden:
setr game_enableDynamicDoorCreation "true" # needed for MLO lab doors
ensure oxmysql
ensure ox_lib
ensure screenshot-basic
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Your inventory, target, clothing and dispatch
ensure ox_inventory
# ensure ox_target
# ensure illenium-appearance
# ensure qs-dispatch
ensure K4MB1-QuasarDrugs
ensure qs-drugs-creatorEl orden de carga importa. La detección solo ve los resources que ya están iniciados, así que un inventario o un dispatch que inicie después de Drugs Creator no se encuentra.
La base de datos#
Importa el archivo SQL que corresponde a tu framework desde la carpeta [sql] con HeidiSQL, phpMyAdmin o cualquier cliente MySQL. Las tablas no se crean automáticamente.
Framework | Archivo | También modifica |
|---|---|---|
ESX |
| Añade |
QBCore / Qbox |
| Añade |
Tabla | Contiene |
|---|---|
| Zonas de cultivo y los puntos de aparición de sus plantas. |
| Laboratorios: dueño, poseedores de llaves, precio, nivel, experiencia, cerradura, acceso público, códigos de la caja fuerte y los datos del shell o MLO. |
| Cada mueble colocado dentro de un laboratorio. |
| Dealers NPC y puntos de tocar la puerta. |
| Muebles y categorías añadidos en el juego con el creador de muebles. |
En ESX, las dos últimas líneas de
esx.sqlinsertan enaddon_inventoryydatastore. Si tu servidor no tiene esx_addoninventory o esx_datastore, elimina esas dos líneas antes de importar.
Ítems de inventario#
Drugs Creator no crea ítems. Añade estos a tu inventario y copia las imágenes de la carpeta [img] en la carpeta de imágenes de tu inventario.
Ítem | Se usa para |
|---|---|
| Se cosecha en las zonas de cultivo. |
| Se obtiene en el primer paso de procesado. |
| El producto final, que se vende a dealers y en las esquinas. |
| La línea de lavado de dinero. |
| Forzar la entrada a un laboratorio cerrado. |
| Redadas policiales en laboratorios. |
| Solo Qbox: el dinero negro es un ítem. ESX usa su cuenta |
Añade a qs-inventory/shared/items.lua:
['weed'] = { ['name'] = 'weed', ['label'] = 'Marijuana', ['weight'] = 10, ['type'] = 'item', ['image'] = 'weed.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Freshly harvested cannabis.' },
['weed_packaged'] = { ['name'] = 'weed_packaged', ['label'] = 'Packaged Marijuana', ['weight'] = 10, ['type'] = 'item', ['image'] = 'weed_packaged.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Bagged and ready to sell.' },
['cocaine'] = { ['name'] = 'cocaine', ['label'] = 'Cocaine', ['weight'] = 10, ['type'] = 'item', ['image'] = 'cocaine.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Raw coca.' },
['cocaine_cut'] = { ['name'] = 'cocaine_cut', ['label'] = 'Cut Cocaine', ['weight'] = 10, ['type'] = 'item', ['image'] = 'cocaine_cut.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Cut and ready to press.' },
['cocaine_packaged'] = { ['name'] = 'cocaine_packaged', ['label'] = 'Packaged Cocaine', ['weight'] = 10, ['type'] = 'item', ['image'] = 'cocaine_packaged.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Pressed and wrapped.' },
['chemicals'] = { ['name'] = 'chemicals', ['label'] = 'Chemicals', ['weight'] = 10, ['type'] = 'item', ['image'] = 'chemicals.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Precursors for cooking.' },
['meth'] = { ['name'] = 'meth', ['label'] = 'Methamphetamine', ['weight'] = 10, ['type'] = 'item', ['image'] = 'meth.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Freshly cooked.' },
['meth_packaged'] = { ['name'] = 'meth_packaged', ['label'] = 'Packaged Methamphetamine', ['weight'] = 10, ['type'] = 'item', ['image'] = 'meth_packaged.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Bagged and ready to sell.' },
['sorted_money'] = { ['name'] = 'sorted_money', ['label'] = 'Sorted Money', ['weight'] = 10, ['type'] = 'item', ['image'] = 'sorted_money.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Cut bills.' },
['package_money'] = { ['name'] = 'package_money', ['label'] = 'Packaged Money', ['weight'] = 10, ['type'] = 'item', ['image'] = 'package_money.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Counted and banded.' },
['lockpick'] = { ['name'] = 'lockpick', ['label'] = 'Lockpick', ['weight'] = 300, ['type'] = 'item', ['image'] = 'lockpick.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Opens locked doors.' },
['police_stormram'] = { ['name'] = 'police_stormram', ['label'] = 'Stormram', ['weight'] = 18000, ['type'] = 'item', ['image'] = 'police_stormram.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['description'] = 'Breaks doors open.' },Para el inventario por defecto de ESX, ejecuta este SQL:
INSERT INTO `items` (`name`, `label`, `weight`) VALUES
('weed', 'Marijuana', 10),
('weed_packaged', 'Packaged Marijuana', 10),
('cocaine', 'Cocaine', 10),
('cocaine_cut', 'Cut Cocaine', 10),
('cocaine_packaged', 'Packaged Cocaine', 10),
('chemicals', 'Chemicals', 10),
('meth', 'Methamphetamine', 10),
('meth_packaged', 'Packaged Methamphetamine', 10),
('sorted_money', 'Sorted Money', 10),
('package_money', 'Packaged Money', 10),
('lockpick', 'Lockpick', 300),
('police_stormram', 'Stormram', 18000);Añade a qb-core/shared/items.lua (también ps-inventory y la mayoría de inventarios basados en qb):
weed = { name = 'weed', label = 'Marijuana', weight = 10, type = 'item', image = 'weed.png', unique = false, useable = true, shouldClose = true, description = 'Freshly harvested cannabis.' },
weed_packaged = { name = 'weed_packaged', label = 'Packaged Marijuana', weight = 10, type = 'item', image = 'weed_packaged.png', unique = false, useable = true, shouldClose = true, description = 'Bagged and ready to sell.' },
cocaine = { name = 'cocaine', label = 'Cocaine', weight = 10, type = 'item', image = 'cocaine.png', unique = false, useable = true, shouldClose = true, description = 'Raw coca.' },
cocaine_cut = { name = 'cocaine_cut', label = 'Cut Cocaine', weight = 10, type = 'item', image = 'cocaine_cut.png', unique = false, useable = true, shouldClose = true, description = 'Cut and ready to press.' },
cocaine_packaged = { name = 'cocaine_packaged', label = 'Packaged Cocaine', weight = 10, type = 'item', image = 'cocaine_packaged.png', unique = false, useable = true, shouldClose = true, description = 'Pressed and wrapped.' },
chemicals = { name = 'chemicals', label = 'Chemicals', weight = 10, type = 'item', image = 'chemicals.png', unique = false, useable = true, shouldClose = true, description = 'Precursors for cooking.' },
meth = { name = 'meth', label = 'Methamphetamine', weight = 10, type = 'item', image = 'meth.png', unique = false, useable = true, shouldClose = true, description = 'Freshly cooked.' },
meth_packaged = { name = 'meth_packaged', label = 'Packaged Methamphetamine', weight = 10, type = 'item', image = 'meth_packaged.png', unique = false, useable = true, shouldClose = true, description = 'Bagged and ready to sell.' },
sorted_money = { name = 'sorted_money', label = 'Sorted Money', weight = 10, type = 'item', image = 'sorted_money.png', unique = false, useable = true, shouldClose = true, description = 'Cut bills.' },
package_money = { name = 'package_money', label = 'Packaged Money', weight = 10, type = 'item', image = 'package_money.png', unique = false, useable = true, shouldClose = true, description = 'Counted and banded.' },
lockpick = { name = 'lockpick', label = 'Lockpick', weight = 300, type = 'item', image = 'lockpick.png', unique = false, useable = true, shouldClose = true, description = 'Opens locked doors.' },
police_stormram = { name = 'police_stormram', label = 'Stormram', weight = 18000, type = 'item', image = 'police_stormram.png', unique = false, useable = true, shouldClose = true, description = 'Breaks doors open.' },Añade a ox_inventory/data/items.lua. En Qbox, añade también black_money si aún no está.
['weed'] = { label = 'Marijuana', weight = 10, stack = true },
['weed_packaged'] = { label = 'Packaged Marijuana', weight = 10, stack = true },
['cocaine'] = { label = 'Cocaine', weight = 10, stack = true },
['cocaine_cut'] = { label = 'Cut Cocaine', weight = 10, stack = true },
['cocaine_packaged'] = { label = 'Packaged Cocaine', weight = 10, stack = true },
['chemicals'] = { label = 'Chemicals', weight = 10, stack = true },
['meth'] = { label = 'Methamphetamine', weight = 10, stack = true },
['meth_packaged'] = { label = 'Packaged Methamphetamine', weight = 10, stack = true },
['sorted_money'] = { label = 'Sorted Money', weight = 10, stack = true },
['package_money'] = { label = 'Packaged Money', weight = 10, stack = true },
['lockpick'] = { label = 'Lockpick', weight = 300, stack = true },
['police_stormram'] = { label = 'Stormram', weight = 18000, stack = true },
['black_money'] = { label = 'Black Money', weight = 0, stack = true }, -- QboxLos ítems usables (weed, meth, lockpick, police_stormram) los registra el propio script a través de tu framework. No necesitas registrarlos en ningún otro lugar.
Acceso de administrador#
El creador (/drugcreator), el creador de muebles (/drugfurniture) y /set_lab_level son solo para administradores. La comprobación la hace tu framework:
El grupo del jugador debe ser admin o superadmin. Desde la consola del servidor:
setgroup <server id> adminEl jugador necesita el permiso god o admin, o el ace command. En server.cfg:
add_principal identifier.license:xxxxxxxx group.admin
add_ace group.admin command allowQuién cuenta como administrador se decide en custom/esx/server.lua o custom/qb/server.lua, en la función playerIsAdmin. Cámbialo ahí si tu servidor usa otro sistema de permisos.
Configurar el resource#
Las granjas, los laboratorios y los dealers se crean en el juego. Lo que hacen se define en los archivos de configuración:
Archivo | Contenido |
|---|---|
| Idioma, dinero, shells, ítems de cosecha, recetas de procesado, catálogos de dealers, venta en esquinas, drogas usables, policía, llaves y detección. |
| La tienda de decoración: pestañas, categorías, cada prop y su precio, y qué props son mesas de procesado. |
| Las animaciones y props de cada escena de procesado. Avanzado. |
| Puentes abiertos a tu framework, inventario, dispatch, ropa, target y notificaciones. |
| Todos los textos, en 41 idiomas. |
Los valores que conviene revisar primero:
Config.Locale = 'en' -- language file in locales/
Config.MoneyType = 'bank' -- pays for labs and furniture: 'money' | 'bank' | 'black_money'
Config.UseTarget = false -- true to use ox_target / qb-target instead of [E] prompts
Config.RequiredCops = 0 -- police online needed for corner selling
Config.PoliceJobs = { 'realestate', 'police', 'realestatejob' } -- leave only your police jobs
Config.Debug = true -- set to false on a live server
Config.ZoneDebug = true -- set to false on a live serverCada opción se explica en Uso → La configuración.
Verificar la instalación#
Reinicia el servidor y revisa la consola en busca de errores de qs-drugs-creator. Luego entra y recorre el primer ciclo:
Abre el creador
Como administrador, escribe
/drugcreator. Si no se abre nada, consulta Errores comunes.Crea una granja de marihuana
Create Drug → Collection → Weed. Dibuja la zona, coloca las plantas, guarda y cosecha una con E.
Crea un laboratorio y procesa
Crea un laboratorio de tipo shell, cómpralo firmando el contrato, abre
/labDecoy compra una mesa de marihuana. Acércate a la mesa y pulsa E para clasificar tu marihuana.



