Saltar al contenido
Toda la documentación

Pompa

Pompas repartidas por el mapa: atácalas a horas fijas, mantenlas un rato y llévate la recompensa. Con marcadores de colores según el estado, zona, anuncio para todos y barra de progreso. Todo se maneja desde la config, el script guarda los cooldowns por sí mismo.

Requisitos
  • ESX Legacy (es_extended, probado con 1.14)
  • oxmysql
  • OneSync (set onesync on en el server.cfg)

Funciones

  • Cuatro estados con color propio para el marcador (RGB) y el blip (color de blip de GTA):
  • Atacable (verde): E inicia la Pompa.
  • Bajo ataque (rojo): aquí hay una Pompa en curso.
  • Cooldown (naranja): tras la captura o la cancelación, el tiempo restante aparece en el aviso.
  • Fuera de horario (blanco): solo se puede iniciar en las horas configuradas.
  • Zona: Cada Pompa tiene su propio radio. El atacante tiene que quedarse dentro. Si sale de la zona, tiene unos segundos para volver (returnTime, por defecto 5), si no, la Pompa se cancela. Los jugadores cercanos ven la zona como una esfera, en el mapa hay un blip de radio.
  • Tiempo de captura y cooldown: En minutos, iguales para todas las Pompas. Abajo en la pantalla corre una barra de progreso con el tiempo restante y el porcentaje.
  • Anuncio para todos al iniciar, al tomar y al cancelar, como banner con el diseño del script. Con banner = false pasa en su lugar por la función Announce de config/functions.lua, donde conectas tu propio script de anuncios.
  • Recompensa igual para todas las Pompas: dinero (efectivo, banco, dinero negro), items y armas, también en cantidad aleatoria.
  • Solo una Pompa a la vez. Si el atacante muere o se desconecta, la Pompa se cancela.
  • Blips activados o desactivados, blip principal en el centro de cada Pompa con el color de su estado.
  • Los cooldowns se mantienen tras un reinicio del servidor.
  • Logs de Discord para inicio, captura y cancelación.

Instalación

  1. Pon la carpeta off_pompa en resources.
  2. En el server.cfg, después de oxmysql y ESX:
cfg
set onesync on

ensure oxmysql
ensure es_extended
ensure off_pompa
  1. Añade tus Pompas con su posición en config/settings/config.pompas.lua y la recompensa en config/settings/config.lua.

La tabla off_pompa_cooldowns se crea automáticamente. Los items y armas de la recompensa tienen que existir en ESX, la consola del servidor avisa de los desconocidos al iniciar.

Configuración

config/settings/config.lua

OpciónPredeterminadoDescripción
serverInfo.name'OFF SCRIPTS'Nombre del servidor, se muestra en la interfaz en lugar de «OFF SCRIPTS»
serverInfo.locale'de'Idioma: de, en, pl, fr, es o it
serverInfo.color{ 155, 89, 255 }Color de la barra de progreso
serverInfo.design3Diseño de la interfaz: 1 = Clásico, 2 = Ticket, 3 = Storefront
times14:00 a 23:59Horas en las que se puede iniciar una Pompa (hora del servidor). Puede haber varias, pasar la medianoche también funciona, vacío = siempre
duration20Minutos hasta la captura, vale para todas las Pompas
cooldown15Minutos de cooldown tras la captura o la cancelación, vale para todas las Pompas
returnTime5Segundos para volver tras salir de la zona, si no, se cancela
bannertrueAnuncio al iniciar, tomar y cancelar: true = banner del script, false = tu propio anuncio con Announce
rewardsDinero negro, ganzúasRecompensa por cada Pompa capturada, ver abajo
ignoreWeightfalsetrue = dar items aunque se supere el peso que puedes llevar, si no, el item se pierde con el inventario lleno
colorsVerde, rojo, naranja, blancoColor RGB por estado: attackable, attacking, cooldown, closed
markerver archivoTipo de marcador, tamaño, opacidad, distancia de visión y distancia para E
key38Tecla para iniciar como Control-ID (E)
blips.enabledtrueBlips activados o desactivados
blips.sprite / scale / shortRange437 / 0.8 / trueAspecto del blip principal
blips.colors2, 1, 47, 0Color de blip de GTA por estado (los blips no admiten RGB)
blips.radius / radiusAlphatrue / 90Blip de radio alrededor de la zona mientras hay una Pompa en curso

Recompensa, vale para cada Pompa:

lua
rewards = {
  { type = 'account', name = 'black_money', amount = { 20000, 30000 } },  -- aleatorio entre
  { type = 'item',    name = 'lockpick',    amount = 3 },
  { type = 'weapon',  name = 'WEAPON_PISTOL', ammo = 60 },
},

config/settings/config.pompas.lua

Cada Pompa es una entrada con la posición y el radio de la zona.

lua
{
  id = 'hafen',                           -- nombre fijo, no lo cambies después
  label = 'Hafen',
  position = vec3(1003.6, -3108.6, 5.9),
  radius = 45.0,                          -- zona en metros
},

config/functions.lua

Aquí conectas tus propios scripts. Los errores dentro acaban en la consola, el script sigue funcionando.

FunciónPara qué
Notify(message, type) / HelpNotify(text)Notify y texto de ayuda · Servidor: Notify(source, message, type)
ClientCanStart()false = no iniciar una Pompa ahora, p. ej. esposado o en un vehículo
ClientPompaStarted(pompa) / ClientPompaEnded(pompa, result)Tu Pompa iniciada o terminada, p. ej. un sonido
Announce(message, kind, pompa)Servidor: tu propio anuncio para todos, solo con banner = false. kind = 'start', 'captured' o 'aborted'. Predeterminado: notificación de ESX
ServerCanStart(source, pompa)return false, 'Text' = no puede iniciar, p. ej. policía, pocos policías conectados, trabajos
ServerPompaStarted(source, pompa)Pompa iniciada
ServerPompaCaptured(source, pompa, rewards)Pompa capturada, p. ej. puntos de facción
ServerPompaAborted(source, pompa, reason)Cancelada, reason = 'zone', 'death', 'drop' o 'admin'

Ejemplo: iniciar solo con al menos 2 policías de servicio y no para la propia policía.

lua
function ServerCanStart(source, pompa)
  local xPlayer = ESX.GetPlayerFromId(source);

  if xPlayer.getJob().name == 'police' then
    return false, 'Als Polizist kannst du kein Pompa starten.';
  end

  if #ESX.GetExtendedPlayers('job', 'police') < 2 then
    return false, 'Es sind zu wenige Polizisten im Dienst.';
  end

  return true;
end

Ejemplo: tu propio script de anuncios en lugar del notify, sin anuncio al cancelar.
Ejemplo: tu propio script de anuncios en lugar del banner (banner = false), sin anuncio al cancelar.

lua
function Announce(message, kind, pompa)
  if kind == 'aborted' then
    return;
  end

  TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
end

config/settings/config.server.lua e idiomas

Webhook de Discord pompa para inicio, captura y cancelación, url = '' desactiva el log. Todos los textos están en config/locales/ (un archivo por idioma).

En el juego

  • Marcador: Cada Pompa tiene un marcador con el color de su estado. En el marcador pone lo que se puede hacer ahora: iniciar, cooldown con el tiempo restante o el horario.
  • Iniciar: Pulsa E en el marcador verde. Todos reciben el anuncio, tú ves abajo la barra de progreso.
  • Zona: Alrededor de la Pompa aparece una esfera (para todos los que están cerca) y en el mapa un blip de radio. Si sales, la barra de progreso muestra una cuenta atrás. Si no has vuelto tras returnTime segundos, la Pompa se cancela.
  • Captura: Cuando se acaba el tiempo, recibes la recompensa y la Pompa pasa a cooldown. Después vuelve a ser atacable.
  • Cancelación: Salir de la zona, morir o desconectarse. También entonces la Pompa pasa a cooldown.
  • Siempre hay solo una Pompa en curso. La hora es la del servidor. Una Pompa iniciada poco antes de que acabe el horario sigue hasta el final.

Para desarrolladores

lua
-- Servidor
local active = exports.off_pompa:GetActive()          -- nil si no hay ninguna en curso
local state = exports.off_pompa:GetState('hafen')      -- 'attackable', 'attacking', 'cooldown' o 'closed'
local attacking = exports.off_pompa:IsAttacking(source)
exports.off_pompa:Abort()                              -- cancelar la Pompa en curso
exports.off_pompa:ResetCooldown('hafen')               -- terminar el cooldown al instante

-- Cliente
local state = exports.off_pompa:GetState('hafen')
local attacking = exports.off_pompa:IsAttacking()

Problemas frecuentes

Al iniciar, el script informa de errores y avisos en la consola del servidor.

ProblemaSolución
Todos los marcadores son blancosFuera de times. Revisa la hora del servidor.
El marcador flota o está metido en el sueloVuelve a tomar position, de pie directamente sobre el suelo.
La Pompa se cancela aunque estés cercaLa zona es una esfera, la altura también cuenta. Zona demasiado pequeña para el terreno, aumenta radius.
La recompensa de items no llegaInventario lleno, ver ignoreWeight. La consola avisa de los items desconocidos al iniciar.
«OneSync está desactivado»Añade set onesync on al server.cfg y reinicia.
Iniciar solo debe ser posible para ciertos trabajosAjusta ServerCanStart en config/functions.lua, ejemplo arriba.

¿Aún no lo has comprado?

Ver Pompa en la tienda