Todo lo que puedes ajustar está en la carpeta data. Reinicia el recurso después de cualquier cambio.
| Archivo | Qué contiene |
|---|---|
data/config.lua | Comportamiento general, comandos, límites, integraciones |
data/settings.lua | Cantidad de chaleco y las horas de día y noche |
data/modes.lua | Qué modalidades están abiertas y su mínimo de jugadores |
data/maps.lua | Arenas de duelo |
data/weapons.lua | Armas de duelo |
data/gungame.lua | Escalera y tiempos de Gun Game |
data/gungame_zones.lua | Zonas de Gun Game, escritas por la herramienta de zonas |
General
return {
debug = false,
weatherSystem = 'av',
exitCoords = vector4(0.0, 0.0, 72.0, 0.0),
-- ...
}| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | true imprime trazas en la consola. |
weatherSystem | string | 'av' | Script con el que se congela la hora del día durante la partida. 'av' = av_weather, 'cd' = cd_easytime. |
exitCoords | vector4 | ejemplo | Adónde van los jugadores al acabar una partida. Cámbialo por un lugar de tu mapa. |
zoneToolAce | string | 'cuxialpvp.zones' | Permiso ACE necesario para guardar una zona dibujada con la herramienta de zonas. |
Comandos · commands
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
openMenu | string | 'Cuxiall' | Comando que abre el menú. Es también la entrada a la que los jugadores asignan una tecla. |
exitDuel | string | 'exitduel' | Comando para salir de la partida actual. |
createZone | string | 'pvpzone' | Comando que abre la herramienta de zonas. |
Pared de la zona · boundary
La pared que marca el borde de una zona de Gun Game.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
near | number | 15.0 | Distancia en metros al borde a partir de la cual se ve la pared. |
rise | number | 9.0 | Altura de la pared por encima del jugador, en metros, en zonas guardadas sin techo. |
drop | number | 2.5 | Profundidad de la pared por debajo del jugador, en metros, en zonas guardadas sin suelo. |
Valores de respaldo · defaults
Los aplica el servidor cuando un duelo se crea sin un valor válido.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
gameType | string | 'rounds' | Tipo de juego. 'rounds' (rondas) o 'time' (tiempo). |
rounds | number | 3 | Rondas necesarias para ganar. |
timeMinutes | number | 5 | Duración de un duelo por tiempo, en minutos. |
dayTime | string | 'day' | Hora del día. 'day' (día) o 'night' (noche). |
Límites · limits
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxTeamSize | number | 30 | Máximo de jugadores por equipo en un duelo. |
maxRounds | number | 99 | Máximo de rondas que puede pedir un anfitrión. |
maxTimeMinutes | number | 60 | Duración máxima de un duelo por tiempo, en minutos. |
maxLobbies | number | 50 | Máximo de salas abiertas en todo el servidor. |
maxLobbiesPerHost | number | 1 | Salas que puede tener abiertas un mismo jugador. |
createCooldownMs | number | 3000 | Milisegundos que espera un jugador antes de crear otra sala. |
Fotos de Discord · discord
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
botToken | string | '' | Token de bot de Discord con el que se cargan la foto real, el banner y el color de acento de cada jugador. Vacío = se muestra el avatar por defecto de Discord. |
El bot no necesita permisos ni estar en ningún servidor de Discord.
Un token de bot es una contraseña. No compartas nunca data/config.lua con el token dentro, y regenera el token en el portal de desarrolladores de Discord si el archivo sale de tus manos.
Revivir · revive
Cómo devuelve el script la vida a un jugador entre rondas y al acabar una partida.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | true lanza los eventos de abajo. false no lanza ninguno. |
events | string[] | dos ejemplos | Eventos de cliente de tu script de ambulancia que reviven al jugador. Deja solo el que use tu servidor. |
delay | number | 500 | Milisegundos de espera antes de revivir al acabar una partida. |
Clasificación · leaderboard
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
clearOnRestart | boolean | false | true borra la clasificación cada vez que arranca el recurso. |
maxEntries | number | 30 | Jugadores que muestra cada clasificación. |
Ajustes de partida · data/settings.lua
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
armor.armorValue | number | 100 | Chaleco que se da cuando la partida se juega con chaleco. De 0 a 100. |
dayTime.hours.day | number | 12 | Hora del reloj en una partida de día. |
dayTime.hours.night | number | 0 | Hora del reloj en una partida de noche. |
Modalidades · data/modes.lua
Un bloque por modalidad: duel y gungame.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
available | boolean | true | false rechaza la creación de salas de esa modalidad. |
minPerTeam | number | 1 | Duelos. Jugadores necesarios en cada equipo para empezar. |
minPlayers | number | 2 | Gun Game. Jugadores necesarios para empezar. |
lateJoin | boolean | true | Gun Game. true permite entrar en una partida ya empezada. |
spectate | boolean | true | true lista las partidas de la modalidad como partidas en vivo y permite verlas como espectador. |
Mapas de duelo · data/maps.lua
Cada entrada es una arena. Las incluidas son ejemplos: sustitúyelas por arenas de tu servidor.
{
value = 'warehouse',
label = 'Almacén',
spectatorSpawn = vector4(0.0, 0.0, 80.0, 0.0),
coords = {
team1 = {
vector4(10.0, 0.0, 72.0, 90.0),
vector4(10.0, 2.0, 72.0, 90.0),
},
team2 = {
vector4(-10.0, 0.0, 72.0, 270.0),
vector4(-10.0, 2.0, 72.0, 270.0),
},
},
},| Campo | Tipo | Qué hace |
|---|---|---|
value | string | Identificador único del mapa. También es el nombre de su imagen. |
label | string | Nombre que se muestra en el menú. |
spectatorSpawn | vector4 | Dónde se coloca a los espectadores. Sin él se usa el primer punto del equipo 1. |
coords.team1, coords.team2 | vector4[] | Puntos de aparición de cada equipo. Con más jugadores que puntos, los puntos se reutilizan en orden. |
La imagen de un mapa es web/build/maps/<value>.png.
Armas de duelo · data/weapons.lua
return {
{ value = 'WEAPON_PISTOL', label = 'Pistola', roll = false },
{ value = 'WEAPON_COMBATPISTOL', label = 'Pistola de combate', roll = false },
}| Campo | Tipo | Qué hace |
|---|---|---|
value | string | Nombre del arma. Debe existir en tu servidor. |
label | string | Nombre que se muestra en el menú. |
roll | boolean | true hace que el arma solo se pueda elegir cuando el anfitrión activa la opción de rola de la sala. |
La imagen de un arma es web/build/weapons/<value>.png.
Gun Game · data/gungame.lua
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
killsPerWeapon | number | 3 | Bajas necesarias para subir un peldaño. |
ladder | string[] | 12 armas | Armas en orden, de la primera a la última, sin el remate. El anfitrión elige cuántas se juegan; la lista se recorta por el final. |
finisher | string | 'WEAPON_MACHETE' | Última arma de todas las partidas, sea cual sea la longitud de la escalera. |
respawnSeconds | number | 5 | Segundos que espera un jugador muerto antes de reaparecer. |
spawnProtectSeconds | number | 3 | Segundos de invulnerabilidad al aparecer. Disparar la termina. |
outOfBoundsSeconds | number | 6 | Segundos que un jugador puede estar fuera de la zona antes de que se le devuelva dentro. |
boundsCheckMs | number | 1000 | Milisegundos entre comprobaciones de quién está fuera de la zona. Más bajo es más preciso y cuesta más. |
Con ox_inventory en marcha, las armas de la escalera toman de él su nombre y su icono.
Zonas de Gun Game · data/gungame_zones.lua
Este archivo lo escribe la herramienta de zonas. Dibuja las zonas dentro del juego con /pvpzone gungame <nombre>; consulta Comandos y permisos.
La herramienta de zonas reescribe el archivo entero cada vez que se guarda una zona. Edítalo a mano solo para quitar o renombrar una zona, y respeta el formato.
| Campo | Tipo | Qué hace |
|---|---|---|
value | string | Identificador, creado a partir del nombre: gg_ más el nombre en minúsculas. También es el nombre de su imagen. |
label | string | Nombre que se muestra en el menú. |
points | vector2[] | Esquinas de la zona, tres o más. |
minZ, maxZ | number | Suelo y techo de la zona. |
La imagen de una zona es web/build/zones/<value>.webp. Una zona sin imagen muestra su nombre y un icono.
Banners de jugador
La ficha de reaparición de Gun Game muestra un banner detrás del nombre de quien te mató. Para dar uno propio a un jugador, añade una imagen con su ID de Discord como nombre:
web/build/banners/123456789012345678.webpCon un token de bot configurado, el banner de Discord del jugador tiene prioridad.
Cambios habituales
Abrir solo los duelos
gungame = {
id = 'gungame',
available = false,
-- ...
},Gun Game más corto y rápido
killsPerWeapon = 2,
respawnSeconds = 3,Renombrar los comandos
commands = {
openMenu = 'pvp',
exitDuel = 'salirpvp',
createZone = 'pvpzone',
},Usar cd_easytime y tu propio evento de revivir
weatherSystem = 'cd',
revive = {
enabled = true,
events = { 'esx_ambulancejob:revive' },
delay = 500,
},