Personalización
Todo lo que puedes cambiar está en config.lua y locales/. El resto del recurso tiene escrow, salvo las pantallas de la app.
Qué archivo decide qué
Sección titulada «Qué archivo decide qué»| Archivo | Qué decide | Editable |
|---|---|---|
config.lua | Framework, dinero, probabilidad de fallo, policía, la ficha de la App Store, drogas, niveles, zonas | Sí |
locales/*.lua | Las notificaciones del móvil, un archivo por idioma | Sí |
locales/locales.lua | La tabla de idiomas que rellenan los archivos de idioma | Sí |
ui/img/ | Las imágenes de la app: una por droga, el logo de la pantalla de inicio y el icono de la app (icon.png) | Sí |
ui/index.html, ui/styles.css, ui/script.js | Las pantallas de la app, su diseño y los textos de los botones | — |
player_data.json | Las ventas, el nivel y la bonificación de cada camello. Lo escribe el recurso | Sí |
client/, server/ | La lógica | Con escrow |
No hay carpeta de bridge aparte: el framework se elige con Config.Framework, más abajo.
Framework y dinero
Sección titulada «Framework y dinero»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Framework | "ESX" o "QB", en mayúsculas. En QBox, usa "QB": QBox ejecuta los recursos de QBCore mediante su capa de compatibilidad | "ESX" |
Config.esxResourceName | El nombre del recurso de ESX, si el tuyo no es el estándar | "es_extended" |
Config.qbResourceName | El nombre del recurso de QBCore, si el tuyo no es el estándar. Déjalo en "qb-core" en QBox | "qb-core" |
Config.BlackMoney | Paga en dinero negro en lugar de efectivo limpio | true |
Config.MoneyAsItem | Paga como ítem del inventario en lugar de en una cuenta | true |
Config.MoneyItem | El ítem que se paga cuando MoneyAsItem está activado y BlackMoney desactivado | "money" |
Lo que recibe realmente el jugador:
| ESX | QBCore / QBox | |
|---|---|---|
| Dinero negro, como ítem | Ítem black_money | Ítem blackmoney |
| Dinero negro, en cuenta | Cuenta black_money | Ítem blackmoney |
| Dinero limpio, como ítem | Ítem de Config.MoneyItem | Ítem de Config.MoneyItem |
| Dinero limpio, en cuenta | Efectivo | Efectivo |
El trato
Sección titulada «El trato»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.Failure | La probabilidad, de 0 a 100, de que el comprador rechace al jugador después de llamar. Las drogas se quedan con el jugador | 55 |
Config.DealTimeout | Segundos para llegar a la puerta antes de que caduque la oferta | 300 |
Config.MinimumPolice | Agentes conectados antes de que nadie compre. 0 desactiva la comprobación | 1 |
La cantidad vendida se elige al azar entre el minAmount y el maxAmount de la droga cuando el jugador toca SELL; la puerta se elige al azar entre las zonas de la droga.
Policía
Sección titulada «Policía»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.PoliceJobs | Los trabajos que cuentan como policía, y los que reciben las alertas | police, sheriff |
Config.PoliceAlertChance | La probabilidad, de 0 a 100, de que una venta con éxito se denuncie | 20 |
Config.PoliceNotifyAppName | El título de la alerta en el lb-phone del agente | "Police Dispatch" |
Config.PoliceBlipSprite | El blip que se coloca donde ocurrió la venta | 161 |
Config.PoliceBlipColor | Su color | 38 |
Config.PoliceBlipScale | Su tamaño | 1.0 |
Config.PoliceBlipDuration | Segundos antes de que desaparezca el blip | 120 |
Config.PriceMultipliers | Tramos de precio según el número de agentes conectados, cada uno con minPolice, maxPolice y multiplier | Mira más abajo |
Tramos de serie: 1–2 agentes ×1.0, 3–4 ×1.2, 5–6 ×1.4, 7–9 ×1.6, 10 o más ×2.0. Con un número de agentes que no cubre ningún tramo, los precios se quedan en ×1.0.
Cómo se calcula el precio. La bonificación de nivel y la de policía se suman, no se multiplican: un camello de nivel 5 (×1.5) que vende con seis agentes conectados (×1.4) obtiene 1 + 0.5 + 0.4 = ×1.9 el precio base.
Todos los agentes con un trabajo de PoliceJobs reciben la alerta; no se comprueba si están de servicio.
Quién ve la app
Sección titulada «Quién ve la app»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.BlockedAppJobs | Trabajos que no pueden ver ni instalar la app. Se comprueba cuando carga el jugador y cada vez que cambia de trabajo | police, sheriff, ambulance, mechanic |
La ficha de la App Store
Sección titulada «La ficha de la App Store»| Opción | Qué hace | Por defecto |
|---|---|---|
Config.name | El nombre de la app en el móvil | "Drug Dealer" |
Config.description | La línea que aparece debajo en la App Store | "Deal dope, dodge the cops" |
Config.defaultApp | true la pone ya instalada en todos los móviles; false significa que se descarga desde la App Store | false |
Config.size | El tamaño que se muestra en la tienda, en KB | 25400 |
Config.price | Lo que cuesta instalarla | 0 |
El icono de la app es ui/img/icon.png. Sustituye el archivo para cambiarlo.
Config.drugs es una lista; cada entrada es un botón en la app.
| Campo | Qué hace |
|---|---|
item | El ítem del inventario que se vende |
label | El nombre que se muestra en la app y en las notificaciones |
price | Precio por unidad, antes de bonificaciones |
minAmount, maxAmount | El rango del que sale la cantidad de cada trato |
zones | En qué zonas de Config.NPCLocations puede estar un comprador |
image | Un nombre de archivo dentro de ui/img/ |
minLevel | El nivel de camello necesario para venderla |
Para añadir una droga, añade una entrada, pon su imagen en ui/img/ y asegúrate de que el ítem existe en tu inventario. Imágenes que ya están ahí y que usa la lista de serie: baggy_weed.png, baggy_cocaine.png, lsd.png, baggy_meth.png, mushroom.png, opium.png, crack.png, drug_heroin.png, xtc_baggy.png, oxy.png, drug_lean.png, drug_hash.png.
Niveles
Sección titulada «Niveles»Config.levels enumera los rangos en orden. Cada uno tiene un número level, un name, salesRequired (el número total de tratos, no de unidades) y bonusMultiplier.
| Nivel | Nombre | Ventas | Bonificación |
|---|---|---|---|
| 1 | Newbie | 0 | ×1.0 |
| 2 | Rookie | 25 | ×1.1 |
| 3 | Hustler | 75 | ×1.2 |
| 4 | Dealer | 150 | ×1.35 |
| 5 | Trader | 300 | ×1.5 |
| 6 | Boss | 600 | ×1.75 |
| 7 | Kingpin | 1200 | ×2.0 |
| 8 | Overlord | 2000 | ×2.25 |
| 9 | Tycoon | 3500 | ×2.5 |
| 10 | Legend | 5000 | ×3.0 |
Mantenlos en orden creciente de salesRequired; el nivel se calcula recorriendo la lista hacia abajo.
| Opción | Qué hace | Por defecto |
|---|---|---|
Config.dataFile | El archivo de la carpeta del recurso que guarda el progreso de cada camello | "player_data.json" |
El progreso se guarda por personaje: el identificador de ESX o el citizen ID de QBCore.
Config.NPCLocations está numerada; los números son a lo que se refiere el campo zones de una droga. Cada zona tiene:
| Campo | Qué hace |
|---|---|
peds | Modelos de ped; se elige uno al azar para abrir la puerta |
locations | Posiciones de las puertas (x, y, z y heading) |
| Zona | Área | Puertas de serie |
|---|---|---|
| 1 | Grove | 1 |
| 2 | Muelle y playa | 10 |
| 3 | Casas de Vinewood | 10 |
| 4 | Sandy Shores | 8 |
| 5 | Paleto Bay | 9 |
Puedes añadir zonas y puertas libremente. Algo que conviene saber: el nombre de la zona en la alerta policial lo pone el propio recurso y solo conoce las zonas 1 a 5; cualquier zona que añadas aparece como “Unknown Zone”.
Idiomas
Sección titulada «Idiomas»Vienen nueve en locales/: en, es, fr, de, it, pt, pl, ru y tr. Pon uno de ellos en Config.Locale.
Para añadir uno:
- Copia
locales/en.luaa un archivo nuevo, por ejemplolocales/nl.lua. - Cambia el código de arriba a
nly traduce el texto. - Añade
locales/nl.luaa la listashared_scriptsdefxmanifest.lua, junto a los demás y por encima deconfig.lua. - Pon
Config.Locale = "nl", luego hazrefreshy reinicia el recurso.
Los idiomas cubren las notificaciones del móvil. Los botones de la propia app (DRUGS, PROFILE, SELL, CANCEL y la pantalla de perfil) están escritos en ui/script.js y ui/index.html.