
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.
- ESX Legacy (
es_extended, probado con 1.14) - oxmysql
- OneSync (
set onesync onen elserver.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 = falsepasa en su lugar por la funciónAnnouncedeconfig/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
- Pon la carpeta
off_pompaenresources. - En el
server.cfg, después de oxmysql y ESX:
set onesync on
ensure oxmysql
ensure es_extended
ensure off_pompa- Añade tus Pompas con su posición en
config/settings/config.pompas.luay la recompensa enconfig/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ón | Predeterminado | Descripció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.design | 3 | Diseño de la interfaz: 1 = Clásico, 2 = Ticket, 3 = Storefront |
times | 14:00 a 23:59 | Horas en las que se puede iniciar una Pompa (hora del servidor). Puede haber varias, pasar la medianoche también funciona, vacío = siempre |
duration | 20 | Minutos hasta la captura, vale para todas las Pompas |
cooldown | 15 | Minutos de cooldown tras la captura o la cancelación, vale para todas las Pompas |
returnTime | 5 | Segundos para volver tras salir de la zona, si no, se cancela |
banner | true | Anuncio al iniciar, tomar y cancelar: true = banner del script, false = tu propio anuncio con Announce |
rewards | Dinero negro, ganzúas | Recompensa por cada Pompa capturada, ver abajo |
ignoreWeight | false | true = dar items aunque se supere el peso que puedes llevar, si no, el item se pierde con el inventario lleno |
colors | Verde, rojo, naranja, blanco | Color RGB por estado: attackable, attacking, cooldown, closed |
marker | ver archivo | Tipo de marcador, tamaño, opacidad, distancia de visión y distancia para E |
key | 38 | Tecla para iniciar como Control-ID (E) |
blips.enabled | true | Blips activados o desactivados |
blips.sprite / scale / shortRange | 437 / 0.8 / true | Aspecto del blip principal |
blips.colors | 2, 1, 47, 0 | Color de blip de GTA por estado (los blips no admiten RGB) |
blips.radius / radiusAlpha | true / 90 | Blip de radio alrededor de la zona mientras hay una Pompa en curso |
Recompensa, vale para cada Pompa:
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.
{
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ón | Para 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.
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;
endEjemplo: 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.
function Announce(message, kind, pompa)
if kind == 'aborted' then
return;
end
TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
endconfig/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
returnTimesegundos, 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
-- 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.
| Problema | Solución |
|---|---|
| Todos los marcadores son blancos | Fuera de times. Revisa la hora del servidor. |
| El marcador flota o está metido en el suelo | Vuelve a tomar position, de pie directamente sobre el suelo. |
| La Pompa se cancela aunque estés cerca | La zona es una esfera, la altura también cuenta. Zona demasiado pequeña para el terreno, aumenta radius. |
| La recompensa de items no llega | Inventario 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 trabajos | Ajusta ServerCanStart en config/functions.lua, ejemplo arriba. |
¿Aún no lo has comprado?
Ver Pompa en la tienda