Todo lo que cambia el dueño de un servidor en Quasar Framework (qs-core) está en archivos de configuración Lua sencillos y en server.cfg. Esta página es la referencia completa de este framework de roleplay para FiveM: cada opción de la config principal, los colores del tema, los idiomas, los ítems, los trabajos y las bandas, los ajustes del inventario y de las armas, y la pantalla de carga. Cada sección lista la opción, su valor por defecto y lo que cambia en el juego, seguido de un breve ejemplo.
Archivo | Qué configura |
|---|---|
| Cuentas, personajes, aparición, guardado, sueldos, muerte, mundo, webhooks, baneos, backend del inventario, tema e identificadores. |
| El catálogo base de ítems. |
| Trabajos, rangos y salarios. |
| Bandas y rangos de bandas. |
| Los textos de qs-core en cada idioma (cada recurso tiene su propia carpeta |
| Slots y peso del inventario, maleteros, guanteras, almacenes, pilas, llaves e ítems iniciales. |
| Tamaños de cargador, arrojables, y los ítems de armas y munición. |
| Nombre, textos, pistas de teclas y consejos de la pantalla de carga. |
| Idioma ( |
Ajustes principales — qs-core/shared/config.lua#
Esta es la config principal del framework. Es un archivo compartido, así que el servidor y todos los clientes leen los mismos valores.
Cuentas y dinero inicial#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Las cuentas de dinero que tiene cada personaje, y el saldo con el que empieza un personaje nuevo. Una cuenta que falte en un personaje existente se añade con este saldo inicial cuando se carga el personaje. Los comandos y exports de dinero solo funcionan con las cuentas listadas aquí. |
-- A harder start: less cash, a smaller bank balance
Config.Accounts = {
cash = 250,
bank = 1500,
black_money = 0,
}Personajes, aparición y guardado#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Cuántos personajes puede crear un jugador. La creación de personajes se rechaza al alcanzar el límite. |
|
| Dónde aparece un personaje nuevo la primera vez (x, y, z, heading). Después, cada personaje aparece donde estuvo por última vez. |
|
| El trabajo que se da a cada personaje nuevo. Debe existir en |
|
| El rango de ese trabajo por defecto. |
|
| Cada cuánto (en milisegundos) se guardan todos los personajes conectados. Los personajes también se guardan cuando el jugador se desconecta, cierra sesión y cuando |
|
| Muestra líneas de depuración en la consola, con el prefijo |
Config.MaxCharacters = 3
-- New characters start at the airport
Config.DefaultSpawn = vec4(-1037.74, -2737.84, 20.17, 330.0)
-- Autosave every 10 minutes
Config.SaveInterval = 10 * 60 * 1000
Config.Debug = falseSueldo#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Activa o desactiva los sueldos. Se lee una vez cuando |
|
| Tiempo entre sueldos, en milisegundos. |
En cada intervalo, cada jugador con un personaje cargado cuyo rango de trabajo tenga un salario mayor que 0 recibe ese salario en su cuenta del banco y una notificación Paycheck received. Los salarios se definen por rango en shared/jobs.lua (consulta Trabajos y rangos más abajo).
Config.Paycheck = {
enabled = true,
interval = 15 * 60 * 1000, -- every 15 minutes
}Muerte y hospitales#
Cuando un jugador muere, queda derribado en lugar de reaparecer. Pasados respawnTime segundos puede presionar E para reaparecer en el hospital más cercano, y puede presionar G para llamar a los paramédicos.
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Segundos que un jugador derribado debe esperar antes de que E lo haga reaparecer en el hospital más cercano. |
|
| Cuando es |
|
| Tiempo de espera en milisegundos entre dos llamadas con G a los paramédicos. |
|
| La animación en la que yace un jugador derribado. |
|
| Puntos de reaparición (x, y, z, heading). Se usa el más cercano al lugar donde cayó el jugador. |
Config.Death = {
respawnTime = 60, -- one minute to wait for EMS
loseCashOnDeath = true,
emsCooldown = 60000,
anim = { dict = 'mini@cpr@char_b@cpr_def', clip = 'cpr_pumpchest_idle' },
hospitals = {
vec4(298.6, -584.6, 43.26, 65.0), -- Pillbox Hill
vec4(-247.6, 6331.4, 32.4, 200.0), -- Paleto Bay
vec4(1839.6, 3672.9, 34.28, 210.0), -- add Sandy Shores
},
}Un jugador derribado también se puede reanimar con /revive o con la acción Heal de txAdmin. El tratamiento de EMS se explica en Trabajos, policía y EMS.
Opciones del mundo#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Elimina el nivel de búsqueda de GTA: los jugadores nunca reciben estrellas de búsqueda. |
|
| Desactiva el despacho de emergencias de GTA, así que no se envían a los jugadores policías, ambulancias ni camiones de bomberos NPC. |
|
| Mantiene el fuego amigo activado, para que los jugadores puedan dañarse entre sí. |
|
| Mantiene el clima seco: cada vez que el clima va a cambiar a lluvia, tormenta o despejándose, cambia a nublado. |
|
| Elimina los peatones de ambiente de las calles. |
|
| Elimina el tráfico NPC y los vehículos estacionados, además de los camiones de basura, los barcos aleatorios y los trenes. |
-- An empty city with rain allowed
Config.DisableRain = false
Config.DisablePeds = true
Config.DisableTraffic = trueWebhooks y baneos#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| URL del webhook de Discord para los logs de dinero ( |
|
| URL del webhook de Discord para los logs de administración: |
|
| Reservado: en la versión actual no se publica nada en este canal. |
|
| Comprueba la tabla |
Config.Webhooks = {
money = 'https://discord.com/api/webhooks/XXXXXXXX/money-channel',
admin = 'https://discord.com/api/webhooks/XXXXXXXX/admin-channel',
connections = '',
}
Config.EnableBans = trueEl menú de administración (qs-admin) tiene su propio webhook en su config.lua. Consulta Administración.
Backend del inventario#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| A qué inventario |
Para usar qs-inventory, ejecútalo en lugar de qs-coreinventory en server.cfg. Quasar Framework siempre prefiere qs-coreinventory mientras está iniciado. Consulta Integraciones.
Config.Inventory = 'auto'Identificadores e idioma de respaldo#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| El tipo de identificador que vincula a un jugador con sus personajes y su paleta de colores guardada. No lo cambies en un servidor en producción: los personajes existentes se guardan con el identificador actual y ya no se encontrarían. Los baneos y los grupos siempre usan la licencia de Rockstar, |
|
| Idioma de respaldo para |
-- don't change this on a live server
Config.Identifier = 'license'
Config.Locale = 'en'Colores del tema#
Todas las interfaces de Quasar Framework — HUD, inventario, menús, notificaciones, chat — leen una paleta compartida. Config.Theme en qs-core/shared/config.lua es la paleta por defecto del servidor: cámbiala y todas las interfaces cambian de aspecto para los jugadores que no han elegido sus propios colores.
Clave | Por defecto | Qué colorea |
|---|---|---|
|
| El nombre de la paleta. |
|
| Texto principal. |
|
| Texto secundario, atenuado. |
|
| El color primario. |
|
| Un tono más oscuro del color primario. |
|
| El color de acento. |
|
| Inicio del degradado. |
|
| Fin del degradado. |
|
| Efectos de brillo. |
|
| Bordes. |
|
| Fondos de los paneles. |
|
| Barra de estado de salud. |
|
| Barra de estado de armadura. |
|
| Barra de estado de hambre. |
|
| Barra de estado de sed. |
-- A red server theme
Config.Theme = {
name = 'red',
text = '#fff1f1',
muted = '#cc8e8e',
primary = '#ef4444',
primaryDim = '#dc2626',
accent = '#f87171',
gradientFrom = 'rgba(239, 68, 68, 0.60)',
gradientTo = 'rgba(220, 38, 38, 0.30)',
glow = 'rgba(239, 68, 68, 0.45)',
border = 'rgba(248, 113, 113, 0.45)',
panel = 'rgba(78, 20, 20, 0.32)',
health = '#5cf07c',
armor = '#3b82f6',
hunger = '#f0a83a',
thirst = '#24c8d8',
}Paletas por jugador#
Los jugadores también pueden elegir sus propios colores. En su primera conexión, la introducción (qs-intro) les pide elegir una paleta, y después pueden cambiarla con /colors. La paleta de un jugador se guarda en su cuenta en la tabla player_colors y sustituye a Config.Theme solo para ese jugador.
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Registra el comando del selector de color. Con |
|
| El nombre de ese comando ( |
Config.AllowColorChange = true
Config.ColorCommand = 'theme' -- players type /theme instead of /colorsIdiomas#
Quasar Framework viene en 10 idiomas — en, es, fr, de, it, pt, pl, ru, tr y ar — y una sola convar en server.cfg cambia todos los recursos:
setr qs:locale "de"Debe ser setr (una convar replicada). Con un simple set, solo el servidor cambia de idioma y todos los textos en las pantallas de los jugadores se quedan en inglés. Reinicia el servidor después de cambiarla.
Añadir un idioma#
Cada recurso guarda sus textos en su propia carpeta locales (qs-core, qs-coreinventory, qs-clothing, qs-corechat, qs-corehud, qs-coremulticharacter, qs-coreshops, qs-corevehiclekeys, qs-coreweapons, qs-intro, qs-needs y todos los recursos de [addons]). Cada carpeta se carga automáticamente, así que un idioma nuevo es solo un archivo nuevo por recurso.
Copia el archivo en inglés
En cada recurso, copia
locales/en.luaalocales/<code>.lua— por ejemplolocales/nl.luapara neerlandés.Renombra la tabla y traduce
Cambia
Locales.enaLocales.nly traduce cada valor. Mantén las claves exactamente como están, y conserva marcadores como%sy%d: se sustituyen por nombres y cantidades.lua Locales = Locales or {} Locales.nl = { no_permission = 'Geen toestemming.', player_not_found = 'Speler niet gevonden.', invalid_amount = 'Ongeldig bedrag.', paycheck = 'Salaris ontvangen: $%d', -- ...every other key from en.lua }Cambia el servidor a ese idioma
Pon
setr qs:locale "nl"enserver.cfgy reinicia el servidor.
Ítems#
Todos los ítems del servidor están en un catálogo que pertenece a qs-core. El inventario, las tiendas, los scripts de ESX y los scripts de QBCore leen de él las etiquetas, los pesos y los ajustes de los ítems.
Ítems base#
qs-core/shared/items.lua define los ítems base. Otros recursos añaden los suyos al iniciarse (armas y munición, comida y bebida, policía, EMS, ítems de trabajos y de drogas).
Ítem | Etiqueta | Peso (g) | Usable |
|---|---|---|---|
| Water Bottle | 500 | Sí |
| Bread | 300 | Sí |
| Bandage | 100 | Sí |
| Phone | 190 | Sí |
| ID Card | 10 | No |
| Pistol | 1000 | Sí |
| Lockpick | 100 | Sí |
| Repair Kit | 2500 | Sí |
| Screwdriver | 200 | Sí |
Campos de los ítems#
Campo | Por defecto | Qué hace |
|---|---|---|
| el nombre del ítem | El nombre que ven los jugadores. |
|
| Peso de un ítem, en gramos ( |
|
| Si el ítem se puede usar. Sin |
| — | El texto que se muestra con el ítem. |
| valor por defecto del inventario ( | Cantidad máxima por slot para este ítem. |
| — |
|
| — | Un nombre de arma de GTA como |
| — | Balas cargadas la primera vez que se equipa un ítem |
Las imágenes de los ítems son archivos PNG con el nombre del ítem (por ejemplo water.png) en qs-coreinventory/web/images.
Añadir ítems#
Añade ítems a la tabla base en qs-core/shared/items.lua, o regístralos desde cualquier recurso con el export RegisterItems — así es como los recursos de Quasar Framework añaden los suyos:
-- server.lua of your own resource
local core = exports['qs-core']
core:RegisterItems({
coffee_beans = { label = 'Coffee Beans', weight = 250, useable = false, description = 'Freshly roasted.' },
energy_bar = { label = 'Energy Bar', weight = 80, useable = true, description = 'A quick snack.' },
gold_watch = { label = 'Gold Watch', weight = 150, useable = false, unique = true },
})exports['qs-core']:RegisterItem(name, data) añade un solo ítem. Registrar un nombre que ya existe reemplaza su definición. Para darle un efecto a un ítem usable, consulta Inventario, ítems y armas; los scripts de ESX y QBCore también pueden traer sus ítems mediante los puentes, consulta Compatibilidad con ESX y QBCore.
Trabajos y rangos#
Los trabajos se definen en qs-core/shared/jobs.lua. Cada trabajo tiene rangos, y cada rango tiene su propio salario, que paga el sueldo (consulta Sueldo más arriba).
Trabajos por defecto#
Trabajo | Etiqueta | Rangos (nivel: etiqueta — salario) |
|---|---|---|
| Civilian | 0: Freelancer — 200 |
| Police | 0: Recruit — 500 · 1: Officer — 750 · 2: Sergeant — 1000 · 3: Chief — 2000 (jefe) |
| EMS | 0: Trainee — 500 · 1: Paramedic — 800 · 2: Doctor — 1200 · 3: Chief — 2000 (jefe) |
| Hunter | 0: Hunter — 200 |
| Delivery Driver | 0: Driver — 200 |
| Miner | 0: Miner — 175 |
| Lumberjack | 0: Lumberjack — 175 |
| Fisherman | 0: Fisherman — 150 |
unemployed es el trabajo por defecto (Config.DefaultJob), así que cada civil también recibe el salario de Freelancer.
Campos de los trabajos#
Campo | Por defecto | Qué hace |
|---|---|---|
| el nombre del trabajo | El nombre del trabajo que ven los jugadores. |
| — | El estado de servicio de un personaje que aún no tiene un valor de servicio guardado (los personajes creados por Quasar Framework empiezan en servicio). Los scripts lo leen como |
| — | Una tabla de rangos indexada desde |
| — | El id del rango (por ejemplo |
| — | El nombre del rango que ven los jugadores. |
| — | La cantidad que se paga al banco en cada sueldo. |
|
| Marca el rango de jefe. Los scripts de ESX y QBCore lo ven como el rango de jefe. |
-- qs-core/shared/jobs.lua — add a mechanic job inside the Jobs table
['mechanic'] = {
label = 'Mechanic',
defaultDuty = true,
grades = {
[0] = { name = 'apprentice', label = 'Apprentice', salary = 300 },
[1] = { name = 'mechanic', label = 'Mechanic', salary = 550 },
[2] = { name = 'boss', label = 'Owner', salary = 1200, isBoss = true },
},
},Los trabajos también se pueden añadir desde un script de servidor con exports['qs-core']:RegisterJob(name, definition) (o varios con RegisterJobs). Un rango que no existe pasa al rango más bajo del trabajo. Asigna un trabajo en el juego con /setjob <id> <job> [grade], por ejemplo /setjob 1 mechanic 2.
Bandas#
Las bandas se definen en qs-core/shared/gangs.lua. Cada personaje empieza en la banda none (No Gang, rango Unaffiliated).
Campo | Por defecto | Qué hace |
|---|---|---|
| el nombre de la banda | El nombre de la banda que ven los jugadores. |
|
| Rangos de la banda indexados desde |
| — | El id del rango. |
| — | El nombre del rango que ven los jugadores. |
|
| Marca el rango de líder. |
-- qs-core/shared/gangs.lua — below Gangs['none']
Gangs['ballas'] = {
label = 'Ballas',
grades = {
[0] = { name = 'recruit', label = 'Recruit', isBoss = false },
[1] = { name = 'og', label = 'OG', isBoss = false },
[2] = { name = 'boss', label = 'Shot Caller', isBoss = true },
},
}Usa nombres de bandas en minúsculas. Las bandas también se pueden añadir desde un script con exports['qs-core']:RegisterGang(name, data) y asignar con exports['qs-core']:SetGang(source, name, grade). Los scripts de QBCore ven la banda mediante el puente qb-core.
¿Controlas trabajos y bandas desde tus propios scripts?
SetJob,SetGang,RegisterJob,RegisterGangy los eventos que disparan aparecen en Comandos y exports.
Inventario — qs-coreinventory/shared/config.lua#
qs-coreinventory es el inventario de FiveM que incluye Quasar Framework: slots y peso, un contenedor secundario (maletero, guantera o almacén), slots rápidos y una rueda de ítems.
Inventario del jugador#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Cuánto puede cargar un jugador, en gramos (50 kg). Añadir un ítem por encima de este límite falla con Too heavy to carry. |
|
| Número de slots del inventario del jugador. |
|
| Número de columnas de la cuadrícula del jugador. |
|
| Cantidad máxima por slot, salvo que el ítem defina su propio |
|
| Ítems que se dan a cada personaje recién creado. |
Config.MaxWeight = 80000 -- 80 kg
Config.Slots = 40
Config.Columns = 5
Config.DefaultStack = 100
Config.StartingItems = {
{ name = 'water', count = 3 },
{ name = 'bread', count = 3 },
{ name = 'phone', count = 1 },
{ name = 'id_card', count = 1 },
{ name = 'bandage', count = 2 },
}Maletero y guantera#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Slots del maletero de un vehículo. |
|
| Columnas de la cuadrícula del maletero. |
|
| Límite de peso del maletero, en gramos. |
|
| A qué distancia (en metros) debes estar de la parte trasera de un vehículo para que el inventario abra su maletero. |
|
| El maletero se cierra cuando te alejas del vehículo más de esta distancia. También es la distancia de cierre automático de las zonas de almacén sin radio propio. |
|
| Slots de una guantera. |
|
| Columnas de la cuadrícula de la guantera. |
|
| Límite de peso de la guantera, en gramos. |
El maletero se abre cuando abres el inventario detrás de un vehículo sin seguro del que tienes las llaves; la guantera se abre cuando lo abres sentado en un vehículo del que tienes las llaves. El contenido se guarda por matrícula.
Config.TrunkSlots = 20
Config.TrunkMaxWeight = 150000
Config.GloveboxMaxWeight = 10000Almacenes#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Almacenes registrados al iniciar el servidor: |
Config.Stashes = {
{ id = 'town_locker', label = 'Town Locker', slots = 50, maxWeight = 200000, columns = 5 },
}Un almacén registrado se abre desde un script, ya sea con una zona de almacén (los jugadores abren su inventario dentro de ella) o directamente. Consulta Inventario, ítems y armas.
Teclas#
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Tecla por defecto que abre y cierra el inventario (comando |
|
| Tecla por defecto que se mantiene para abrir la rueda de ítems. |
|
| Cuántos slots (desde el slot 1) muestra la rueda de ítems. |
Los slots rápidos siempre usan las teclas 1 a 5 para los slots 1–5. Las teclas son asignaciones de teclas de FiveM: el valor por defecto solo se aplica a los jugadores que aún no han asignado la acción, y cada jugador puede cambiarla en Settings → Key Bindings → FiveM.
Config.OpenKey = 'I'
Config.RadialKey = 'TAB'
Config.RadialSlots = 6Armas — qs-coreweapons/config.lua#
qs-coreweapons convierte cada arma de GTA en un ítem del inventario: 105 armas y 9 tipos de munición, registrados en el catálogo de ítems cuando se inicia el recurso.
Opción | Por defecto | Qué hace |
|---|---|---|
|
| Balas por categoría: las balas que tiene un arma la primera vez que se equipa, y las balas que carga un ítem de munición. |
|
| Tamaño de pila de las armas arrojables (granadas, molotovs...). Cada lanzamiento usa un ítem. |
| 105 armas | Ítems de armas: |
| 9 tipos de munición | Ítems de munición: |
Las categorías de armas son melee, pistol, smg, shotgun, rifle, mg, sniper, launcher, flare, taser, throwable y misc. Un ítem de munición se carga en un arma del mismo cat. Un arma nueva debe existir en tu build del juego o cargarse como add-on; reinicia qs-coreweapons y su ítem se registra automáticamente.
-- Bigger pistol magazines: 15 rounds on first equip and per pistol ammo item
WeaponsConfig.MagSize = {
pistol = 15,
smg = 30,
rifle = 30,
shotgun = 8,
sniper = 10,
mg = 100,
launcher = 1,
flare = 1,
taser = 1,
}
-- Inside WeaponsConfig.Weapons: an add-on weapon you stream yourself
weapon_mycarbine = { weapon = 'WEAPON_MYCARBINE', cat = 'rifle', label = 'Custom Carbine', weight = 3400 },
-- Inside WeaponsConfig.Ammo: ammo entries look like this
ammo_pistol = { cat = 'pistol', label = 'Pistol Ammo', weight = 200 },La lista completa de las 105 armas y los 9 ítems de munición, con pesos y categorías, está en Inventario, ítems y armas.
Pantalla de carga — loadingscreen/config.js#
La pantalla de carga es lo que ven los jugadores mientras se conectan. Sus textos se definen en [core]/loadingscreen/config.js; edita el archivo y reinicia el recurso loadingscreen, y el próximo jugador que entre verá el cambio.
Opción | Por defecto | Qué hace |
|---|---|---|
|
| El título grande — el nombre de tu servidor. |
|
| La línea bajo el título. |
|
| Una descripción de una línea bajo el subtítulo. |
| 8 entradas: | Pistas de teclas mostradas como pares |
| 5 consejos | Líneas que rotan en la parte inferior de la pantalla. |
|
| Segundos entre dos consejos. |
// loading screen branding. no build step, just restart the resource.
window.LOADING_CONFIG = {
name: 'LOS SANTOS RP',
subtitle: 'Serious Roleplay',
about: 'Whitelisted roleplay community · discord.gg/yourserver',
keys: [
{ key: 'I', label: 'Inventory' }, // matches Config.OpenKey = 'I'
{ key: 'TAB', label: 'Item wheel' },
{ key: '1-5', label: 'Quick slots' },
{ key: 'U', label: 'Lock vehicle' },
{ key: 'T', label: 'Chat' },
],
// rotating lines at the bottom
tips: [
'Read the rules on our Discord before you play.',
'Use /me and /do in the chat to roleplay your actions.',
],
tipInterval: 6, // seconds
};Páginas relacionadas#
Página | Qué cubre |
|---|---|
| |
Ítems usables, almacenes, tiendas y la lista completa de armas. | |
El centro de empleo, los trabajos civiles, y los ajustes de policía y EMS. | |
Menú de administración, grupos, baneos y webhooks. | |
Todos los comandos, exports y eventos. |



