
Pompa
Des Pompas réparties sur la map : attaque-les à des heures fixes, tiens-les un certain temps et empoche la récompense. Avec des marqueurs colorés par état, une zone, une annonce pour tous et une barre de progression. Tout passe par la config, le script enregistre lui-même les cooldowns.
- ESX Legacy (
es_extended, testé avec 1.14) - oxmysql
- OneSync (
set onesync ondans leserver.cfg)
Fonctionnalités
- Quatre états avec leur propre couleur pour le marqueur (RGB) et le blip (couleur de blip GTA) :
- Attaquable (vert) : E lance la Pompa.
- Attaquée (rouge) : une Pompa est en cours ici.
- Cooldown (orange) : après une prise ou une annulation, le temps restant s'affiche dans l'indication.
- Hors horaires (blanc) : le lancement n'est possible qu'aux heures définies.
- Zone : Chaque Pompa a son propre rayon. L'attaquant doit y rester. S'il quitte la zone, il a quelques secondes pour revenir (
returnTime, par défaut 5), sinon la Pompa est annulée. Les joueurs à proximité voient la zone comme une sphère, sur la carte il y a un blip de rayon. - Durée de prise et cooldown : En minutes, identiques pour toutes les Pompas. En bas de l'écran, une barre de progression affiche le temps restant et le pourcentage.
- Annonce pour tous au lancement, à la prise et à l'abandon, sous forme de bannière dans le design du script. Avec
banner = false, elle passe à la place par la fonctionAnnouncedansconfig/functions.lua, où tu branches ton propre script d'annonce. - Récompense identique pour toutes les Pompas : argent (liquide, banque, argent sale), items et armes, aussi en quantité aléatoire.
- Une seule Pompa à la fois. Si l'attaquant meurt ou se déconnecte, la Pompa est annulée.
- Blips activés ou désactivés, blip principal au centre de chaque Pompa dans la couleur de son état.
- Les cooldowns sont conservés après un redémarrage du serveur.
- Logs Discord pour le lancement, la prise et l'annulation.
Installation
- Place le dossier
off_pompadansresources. - Dans le
server.cfg, après oxmysql et ESX :
set onesync on
ensure oxmysql
ensure es_extended
ensure off_pompa- Ajoute tes Pompas avec leur position dans
config/settings/config.pompas.lua, la récompense dansconfig/settings/config.lua.
La table off_pompa_cooldowns est créée automatiquement. Les items et armes de la récompense doivent exister dans ESX, la console serveur signale ceux qui sont inconnus au démarrage.
Configuration
config/settings/config.lua
| Option | Par défaut | Description |
|---|---|---|
serverInfo.name | 'OFF SCRIPTS' | Nom du serveur, affiché dans l'interface à la place de « OFF SCRIPTS » |
serverInfo.locale | 'de' | Langue : de, en, pl, fr, es ou it |
serverInfo.color | { 155, 89, 255 } | Couleur de la barre de progression |
serverInfo.design | 3 | Design de l'interface : 1 = Classique, 2 = Ticket, 3 = Storefront |
times | 14:00 à 23:59 | Heures pendant lesquelles une Pompa peut être lancée (heure du serveur). Plusieurs possibles, passer minuit fonctionne aussi, vide = toujours |
duration | 20 | Minutes jusqu'à la prise, valable pour toutes les Pompas |
cooldown | 15 | Minutes de cooldown après une prise ou une annulation, valable pour toutes les Pompas |
returnTime | 5 | Secondes pour revenir après avoir quitté la zone, sinon annulation |
banner | true | Annonce au lancement, à la prise et à l'abandon : true = bannière du script, false = ta propre annonce via Announce |
rewards | Argent sale, crochets | Récompense pour chaque Pompa prise, voir ci-dessous |
ignoreWeight | false | true = donner les items même au-delà du poids transportable, sinon l'item est perdu si l'inventaire est plein |
colors | Vert, rouge, orange, blanc | Couleur RGB par état : attackable, attacking, cooldown, closed |
marker | voir fichier | Type de marqueur, taille, opacité, distance d'affichage et distance pour E |
key | 38 | Touche pour lancer, en Control-ID (E) |
blips.enabled | true | Blips activés ou désactivés |
blips.sprite / scale / shortRange | 437 / 0.8 / true | Apparence du blip principal |
blips.colors | 2, 1, 47, 0 | Couleur de blip GTA par état (les blips ne gèrent pas le RGB) |
blips.radius / radiusAlpha | true / 90 | Blip de rayon autour de la zone tant qu'une Pompa est en cours |
Récompense, valable pour chaque Pompa :
rewards = {
{ type = 'account', name = 'black_money', amount = { 20000, 30000 } }, -- aléatoire entre
{ type = 'item', name = 'lockpick', amount = 3 },
{ type = 'weapon', name = 'WEAPON_PISTOL', ammo = 60 },
},config/settings/config.pompas.lua
Chaque Pompa est une entrée avec la position et le rayon de la zone.
{
id = 'hafen', -- nom fixe, ne plus le changer
label = 'Hafen',
position = vec3(1003.6, -3108.6, 5.9),
radius = 45.0, -- zone en mètres
},config/functions.lua
C'est ici que tu connectes tes propres scripts. Les erreurs qu'elles contiennent arrivent dans la console, le script continue de tourner.
| Fonction | Utilité |
|---|---|
Notify(message, type) / HelpNotify(text) | Notification et texte d'aide · Serveur : Notify(source, message, type) |
ClientCanStart() | false = ne pas lancer de Pompa maintenant, p. ex. menotté ou en véhicule |
ClientPompaStarted(pompa) / ClientPompaEnded(pompa, result) | Ta Pompa lancée ou terminée, p. ex. un son |
Announce(message, kind, pompa) | Serveur : ta propre annonce pour tous, seulement avec banner = false. kind = 'start', 'captured' ou 'aborted'. Par défaut : notification ESX |
ServerCanStart(source, pompa) | return false, 'Text' = ne peut pas lancer, p. ex. police, trop peu de policiers en ligne, jobs |
ServerPompaStarted(source, pompa) | Pompa lancée |
ServerPompaCaptured(source, pompa, rewards) | Pompa prise, p. ex. points de faction |
ServerPompaAborted(source, pompa, reason) | Annulée, reason = 'zone', 'death', 'drop' ou 'admin' |
Exemple : lancement seulement avec au moins 2 policiers en service et pas pour la police elle-même.
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;
endExemple : ton propre script d'annonce au lieu de la notification, sans annonce lors d'une annulation.
Exemple : ton propre script d'annonce à la place de la bannière (banner = false), sans annonce à l'abandon.
function Announce(message, kind, pompa)
if kind == 'aborted' then
return;
end
TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
endconfig/settings/config.server.lua et langues
Webhook Discord pompa pour le lancement, la prise et l'annulation, url = '' désactive le log. Tous les textes se trouvent dans config/locales/ (un fichier par langue).
En jeu
- Marqueur : Chaque Pompa a un marqueur dans la couleur de son état. Au marqueur, tu vois ce qui est possible : lancer, cooldown avec le temps restant ou les horaires.
- Lancer : Appuie sur E au marqueur vert. Tout le monde reçoit l'annonce, tu vois la barre de progression en bas.
- Zone : Une sphère apparaît autour de la Pompa (pour tous ceux à proximité) et un blip de rayon sur la carte. Si tu sors, la barre de progression affiche un compte à rebours. Si tu n'es pas revenu après
returnTimesecondes, la Pompa est annulée. - Prise : Quand le temps est écoulé, tu reçois la récompense et la Pompa passe en cooldown. Ensuite, elle est de nouveau attaquable.
- Annulation : Zone quittée, mort ou déconnexion. Là aussi, la Pompa passe en cooldown.
- Une seule Pompa tourne à la fois. L'heure est celle du serveur. Une Pompa lancée peu avant la fin des horaires va jusqu'au bout.
Pour les développeurs
-- Serveur
local active = exports.off_pompa:GetActive() -- nil si aucune n'est en cours
local state = exports.off_pompa:GetState('hafen') -- 'attackable', 'attacking', 'cooldown' ou 'closed'
local attacking = exports.off_pompa:IsAttacking(source)
exports.off_pompa:Abort() -- annuler la Pompa en cours
exports.off_pompa:ResetCooldown('hafen') -- terminer le cooldown immédiatement
-- Client
local state = exports.off_pompa:GetState('hafen')
local attacking = exports.off_pompa:IsAttacking()Problèmes fréquents
Au démarrage, le script signale les erreurs et remarques dans la console serveur.
| Problème | Solution |
|---|---|
| Tous les marqueurs sont blancs | En dehors de times. Vérifie l'heure du serveur. |
| Le marqueur flotte ou est enfoncé dans le sol | Reprends position en te tenant directement au sol. |
| La Pompa s'annule alors qu'on est tout près | La zone est une sphère, la hauteur compte aussi. Zone trop petite pour le terrain, augmente radius. |
| La récompense en items n'arrive pas | Inventaire plein, voir ignoreWeight. La console signale les items inconnus au démarrage. |
| « OneSync est désactivé » | Ajoute set onesync on dans le server.cfg et redémarre. |
| Le lancement doit être réservé à certains jobs | Adapte ServerCanStart dans config/functions.lua, exemple ci-dessus. |
Pas encore acheté ?
Voir Pompa dans la boutique