
Pompa
Pompe distribuite sulla mappa: attaccale a orari fissi, tienile per un po' e intasca la ricompensa. Con marker colorati per stato, zona, annuncio per tutti e barra di avanzamento. Tutto passa dalla config, i cooldown li salva lo script da solo.
- ESX Legacy (
es_extended, testato con 1.14) - oxmysql
- OneSync (
set onesync onnelserver.cfg)
Funzionalità
- Quattro stati con un colore proprio per marker (RGB) e blip (colore blip di GTA):
- Attaccabile (verde): E avvia la Pompa.
- Sotto attacco (rosso): qui è in corso una Pompa.
- Cooldown (arancione): dopo la conquista o l'annullamento, il tempo rimanente compare nel suggerimento.
- Fuori orario (bianco): si può avviare solo negli orari impostati.
- Zona: Ogni Pompa ha un proprio raggio. L'attaccante deve restarci dentro. Se lascia la zona, ha qualche secondo per tornare (
returnTime, predefinito 5), altrimenti la Pompa viene annullata. I giocatori vicini vedono la zona come una sfera, sulla mappa c'è un blip del raggio. - Tempo di conquista e cooldown: In minuti, uguali per tutte le Pompe. In basso sullo schermo scorre una barra di avanzamento con tempo rimanente e percentuale.
- Annuncio per tutti all'avvio, alla conquista e all'interruzione, come banner nel design dello script. Con
banner = falsepassa invece dalla funzioneAnnounceinconfig/functions.lua, dove colleghi il tuo script di annunci. - Ricompensa uguale per tutte le Pompe: soldi (contanti, banca, soldi sporchi), item e armi, anche in quantità casuale.
- Solo una Pompa alla volta. Se l'attaccante muore o va offline, la Pompa viene annullata.
- Blip attivi o disattivati, blip principale al centro di ogni Pompa nel colore del suo stato.
- I cooldown restano dopo un riavvio del server.
- Log Discord per avvio, conquista e annullamento.
Installazione
- Metti la cartella
off_pompainresources. - Nel
server.cfg, dopo oxmysql ed ESX:
set onesync on
ensure oxmysql
ensure es_extended
ensure off_pompa- Inserisci le tue Pompe con la posizione in
config/settings/config.pompas.lua, la ricompensa inconfig/settings/config.lua.
La tabella off_pompa_cooldowns viene creata automaticamente. Item e armi della ricompensa devono esistere in ESX, quelli sconosciuti li segnala la console del server all'avvio.
Configurazione
config/settings/config.lua
| Opzione | Predefinito | Descrizione |
|---|---|---|
serverInfo.name | 'OFF SCRIPTS' | Nome del server, mostrato nell'interfaccia al posto di «OFF SCRIPTS» |
serverInfo.locale | 'de' | Lingua: de, en, pl, fr, es o it |
serverInfo.color | { 155, 89, 255 } | Colore della barra di avanzamento |
serverInfo.design | 3 | Design dell'interfaccia: 1 = Classico, 2 = Scontrino, 3 = Storefront |
times | dalle 14:00 alle 23:59 | Orari in cui si può avviare una Pompa (ora del server). Se ne possono mettere più, anche oltre la mezzanotte, vuoto = sempre |
duration | 20 | Minuti fino alla conquista, vale per tutte le Pompe |
cooldown | 15 | Minuti di cooldown dopo la conquista o l'annullamento, vale per tutte le Pompe |
returnTime | 5 | Secondi per tornare dopo aver lasciato la zona, altrimenti annullamento |
banner | true | Annuncio all'avvio, alla conquista e all'interruzione: true = banner dello script, false = un tuo annuncio tramite Announce |
rewards | Soldi sporchi, grimaldelli | Ricompensa per ogni Pompa conquistata, vedi sotto |
ignoreWeight | false | true = dare gli item anche oltre il peso trasportabile, altrimenti l'item va perso con l'inventario pieno |
colors | Verde, rosso, arancione, bianco | Colore RGB per stato: attackable, attacking, cooldown, closed |
marker | vedi file | Tipo di marker, dimensione, opacità, distanza di visibilità e distanza per E |
key | 38 | Tasto per avviare come Control-ID (E) |
blips.enabled | true | Blip attivi o disattivati |
blips.sprite / scale / shortRange | 437 / 0.8 / true | Aspetto del blip principale |
blips.colors | 2, 1, 47, 0 | Colore blip di GTA per stato (i blip non supportano RGB) |
blips.radius / radiusAlpha | true / 90 | Blip del raggio intorno alla zona mentre è in corso una Pompa |
Ricompensa, vale per ogni Pompa:
rewards = {
{ type = 'account', name = 'black_money', amount = { 20000, 30000 } }, -- casuale tra
{ type = 'item', name = 'lockpick', amount = 3 },
{ type = 'weapon', name = 'WEAPON_PISTOL', ammo = 60 },
},config/settings/config.pompas.lua
Ogni Pompa è una voce con posizione e raggio della zona.
{
id = 'hafen', -- nome fisso, non cambiarlo più
label = 'Hafen',
position = vec3(1003.6, -3108.6, 5.9),
radius = 45.0, -- zona in metri
},config/functions.lua
Qui colleghi i tuoi script. Gli errori al loro interno finiscono nella console, lo script continua a funzionare.
| Funzione | A cosa serve |
|---|---|
Notify(message, type) / HelpNotify(text) | Notify e testo di aiuto · Server: Notify(source, message, type) |
ClientCanStart() | false = non avviare una Pompa adesso, ad es. ammanettato o in un veicolo |
ClientPompaStarted(pompa) / ClientPompaEnded(pompa, result) | La tua Pompa avviata o finita, ad es. un suono |
Announce(message, kind, pompa) | Server: un tuo annuncio per tutti, solo con banner = false. kind = 'start', 'captured' o 'aborted'. Predefinito: notifica ESX |
ServerCanStart(source, pompa) | return false, 'Text' = non può avviare, ad es. polizia, troppo pochi poliziotti online, lavori |
ServerPompaStarted(source, pompa) | Pompa avviata |
ServerPompaCaptured(source, pompa, rewards) | Pompa conquistata, ad es. punti fazione |
ServerPompaAborted(source, pompa, reason) | Annullata, reason = 'zone', 'death', 'drop' o 'admin' |
Esempio: avvio solo con almeno 2 poliziotti in servizio e non per la polizia stessa.
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;
endEsempio: il tuo script di annunci al posto del notify, senza annuncio in caso di annullamento.
Esempio: un tuo script di annunci al posto del banner (banner = false), senza annuncio all'interruzione.
function Announce(message, kind, pompa)
if kind == 'aborted' then
return;
end
TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
endconfig/settings/config.server.lua e lingue
Webhook Discord pompa per avvio, conquista e annullamento, url = '' disattiva il log. Tutti i testi si trovano in config/locales/ (un file per lingua).
In gioco
- Marker: Ogni Pompa ha un marker nel colore del suo stato. Sul marker c'è scritto cosa si può fare: avviare, cooldown con il tempo rimanente o gli orari.
- Avvio: Premi E al marker verde. Tutti ricevono l'annuncio, tu vedi in basso la barra di avanzamento.
- Zona: Intorno alla Pompa compare una sfera (per tutti quelli vicini) e sulla mappa un blip del raggio. Se esci, la barra di avanzamento mostra un conto alla rovescia. Se non torni entro
returnTimesecondi, la Pompa viene annullata. - Conquista: Quando il tempo è scaduto, ricevi la ricompensa e la Pompa va in cooldown. Dopo è di nuovo attaccabile.
- Annullamento: Zona lasciata, morte o disconnessione. Anche in quel caso la Pompa va in cooldown.
- È sempre in corso una sola Pompa. L'ora è quella del server. Una Pompa avviata poco prima della fine degli orari arriva fino in fondo.
Per sviluppatori
-- Server
local active = exports.off_pompa:GetActive() -- nil se non ce n'è nessuna in corso
local state = exports.off_pompa:GetState('hafen') -- 'attackable', 'attacking', 'cooldown' o 'closed'
local attacking = exports.off_pompa:IsAttacking(source)
exports.off_pompa:Abort() -- annulla la Pompa in corso
exports.off_pompa:ResetCooldown('hafen') -- termina subito il cooldown
-- Client
local state = exports.off_pompa:GetState('hafen')
local attacking = exports.off_pompa:IsAttacking()Problemi comuni
All'avvio lo script segnala errori e avvisi nella console del server.
| Problema | Soluzione |
|---|---|
| Tutti i marker sono bianchi | Fuori da times. Controlla l'ora del server. |
| Il marker fluttua o è incastrato nel terreno | Riprendi la position stando direttamente a terra. |
| La Pompa si annulla anche se sei vicino | La zona è una sfera, conta anche l'altezza. Zona troppo piccola per il terreno, aumenta radius. |
| La ricompensa in item non arriva | Inventario pieno, vedi ignoreWeight. La console segnala gli item sconosciuti all'avvio. |
| «OneSync è disattivato» | Aggiungi set onesync on al server.cfg e riavvia. |
| L'avvio deve funzionare solo per certi lavori | Adatta ServerCanStart in config/functions.lua, esempio sopra. |
Non l’hai ancora acquistato?
Vedi Pompa nel negozio