
Pompa
Pompas auf der Map verteilt: Zu festen Uhrzeiten angreifen, eine Zeit lang halten und die Belohnung einsacken. Mit farbigen Markern je Zustand, Zone, Ansage für alle und Progressbar. Alles läuft über die Config, die Cooldowns speichert das Script selbst.
- ESX Legacy (
es_extended, getestet mit 1.14) - oxmysql
- OneSync (
set onesync onin derserver.cfg)
Funktionen
- Vier Zustände mit eigener Farbe für Marker (RGB) und Blip (GTA-Blipfarbe):
- Angreifbar (Grün): E startet das Pompa.
- Im Angriff (Rot): Gerade läuft hier ein Pompa.
- Cooldown (Orange): Nach Einnahme oder Abbruch, die Restzeit steht im Hinweis.
- Außerhalb der Zeiten (Weiß): Starten geht nur zu den eingestellten Uhrzeiten.
- Zone: Jedes Pompa hat einen eigenen Radius. Der Angreifer muss drin bleiben, verlässt er die Zone, hat er ein paar Sekunden zum Zurückkommen (
returnTime, Standard 5), sonst bricht das Pompa ab. Spieler in der Nähe sehen die Zone als Kugel, auf der Map gibt es einen Radius-Blip. - Einnahme-Zeit und Cooldown: In Minuten, für alle Pompas gleich. Unten im Bild läuft eine Progressbar mit Restzeit und Prozent.
- Ansage für alle beim Start, bei Einnahme und bei Abbruch als Banner im Design des Scripts. Mit
banner = falseläuft sie stattdessen über die FunktionAnnounceinconfig/functions.lua, dort bindest du dein eigenes Announce-Script ein. - Belohnung für alle Pompas gleich: Geld (Bargeld, Bank, Schwarzgeld), Items und Waffen, auch als zufällige Menge.
- Nur ein Pompa gleichzeitig. Stirbt der Angreifer oder geht er offline, bricht das Pompa ab.
- Blips an oder aus, Hauptblip in der Mitte jedes Pompas in der Farbe des Zustands.
- Cooldowns bleiben nach einem Server-Neustart erhalten.
- Discord-Logs für Start, Einnahme und Abbruch.
Installation
- Ordner
off_pompainresourceslegen. - In die
server.cfgnach oxmysql und ESX:
set onesync on
ensure oxmysql
ensure es_extended
ensure off_pompa- Deine Pompas mit Position in
config/settings/config.pompas.luaeintragen, die Belohnung inconfig/settings/config.lua.
Die Tabelle off_pompa_cooldowns wird automatisch angelegt. Items und Waffen aus der Belohnung müssen in ESX existieren, unbekannte meldet die Server-Konsole beim Start.
Konfiguration
config/settings/config.lua
| Option | Standard | Beschreibung |
|---|---|---|
serverInfo.name | 'OFF SCRIPTS' | Servername, steht in der Oberfläche statt „OFF SCRIPTS“ |
serverInfo.locale | 'de' | Sprache: de, en, pl, fr, es oder it |
serverInfo.color | { 155, 89, 255 } | Farbe der Progressbar |
serverInfo.design | 3 | Design der Oberfläche: 1 = Klassisch, 2 = Kassenbon, 3 = Storefront |
times | 14:00 bis 23:59 | Uhrzeiten, in denen ein Pompa startet (Server-Zeit). Mehrere möglich, über Mitternacht geht auch, leer = immer |
duration | 20 | Minuten bis zur Einnahme, gilt für alle Pompas |
cooldown | 15 | Minuten Cooldown nach Einnahme oder Abbruch, gilt für alle Pompas |
returnTime | 5 | Sekunden, um nach dem Verlassen der Zone zurückzukommen, sonst Abbruch |
banner | true | Ansage bei Start, Einnahme und Abbruch: true = Banner vom Script, false = eigene Ansage über Announce |
rewards | Schwarzgeld, Lockpicks | Belohnung für jedes eingenommene Pompa, siehe unten |
ignoreWeight | false | true = Items auch über das Tragegewicht geben, sonst verfällt das Item bei vollem Inventar |
colors | Grün, Rot, Orange, Weiß | RGB-Farbe je Zustand: attackable, attacking, cooldown, closed |
marker | siehe Datei | Marker-Typ, Größe, Deckkraft, Sichtweite und Abstand für E |
key | 38 | Taste zum Starten als Control-ID (E) |
blips.enabled | true | Blips an oder aus |
blips.sprite / scale / shortRange | 437 / 0.8 / true | Aussehen des Hauptblips |
blips.colors | 2, 1, 47, 0 | GTA-Blipfarbe je Zustand (Blips können kein RGB) |
blips.radius / radiusAlpha | true / 90 | Radius-Blip um die Zone, solange ein Pompa läuft |
Belohnung, gilt für jedes Pompa:
rewards = {
{ type = 'account', name = 'black_money', amount = { 20000, 30000 } }, -- zufällig zwischen
{ type = 'item', name = 'lockpick', amount = 3 },
{ type = 'weapon', name = 'WEAPON_PISTOL', ammo = 60 },
},config/settings/config.pompas.lua
Jedes Pompa ist ein Eintrag mit Position und Radius der Zone.
{
id = 'hafen', -- fester Name, nicht mehr ändern
label = 'Hafen',
position = vec3(1003.6, -3108.6, 5.9),
radius = 45.0, -- Zone in Metern
},config/functions.lua
Hier bindest du eigene Scripts an. Fehler darin landen in der Konsole, das Script läuft weiter.
| Funktion | Wofür |
|---|---|
Notify(message, type) / HelpNotify(text) | Notify und Hinweistext · Server: Notify(source, message, type) |
ClientCanStart() | false = gerade kein Pompa starten, z. B. gefesselt oder im Fahrzeug |
ClientPompaStarted(pompa) / ClientPompaEnded(pompa, result) | Eigenes Pompa gestartet oder vorbei, z. B. Sound |
Announce(message, kind, pompa) | Server: eigene Ansage für alle, nur bei banner = false. kind = 'start', 'captured' oder 'aborted'. Standard: ESX-Notify |
ServerCanStart(source, pompa) | return false, 'Text' = darf nicht starten, z. B. Polizei, zu wenige Cops online, Jobs |
ServerPompaStarted(source, pompa) | Pompa gestartet |
ServerPompaCaptured(source, pompa, rewards) | Pompa eingenommen, z. B. Fraktionspunkte |
ServerPompaAborted(source, pompa, reason) | Abgebrochen, reason = 'zone', 'death', 'drop' oder 'admin' |
Beispiel: Starten nur mit mindestens 2 Polizisten im Dienst und nicht für die Polizei selbst.
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;
endBeispiel: Eigenes Announce-Script statt Notify, ohne Ansage beim Abbruch.
Beispiel: Eigenes Announce-Script statt Banner (banner = false), ohne Ansage beim Abbruch.
function Announce(message, kind, pompa)
if kind == 'aborted' then
return;
end
TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
endconfig/settings/config.server.lua und Sprachen
Discord-Webhook pompa für Start, Einnahme und Abbruch, url = '' schaltet den Log aus. Alle Texte stehen in config/locales/ (eine Datei pro Sprache).
Im Spiel
- Marker: Jedes Pompa hat einen Marker in der Farbe seines Zustands. Am Marker steht, was gerade geht: starten, Cooldown mit Restzeit oder die Uhrzeiten.
- Starten: Am grünen Marker E drücken. Alle bekommen die Ansage, du siehst unten die Progressbar.
- Zone: Um das Pompa erscheint eine Kugel (für alle in der Nähe) und auf der Map ein Radius-Blip. Läufst du raus, zeigt die Progressbar einen Countdown. Bist du nach
returnTimeSekunden nicht zurück, bricht das Pompa ab. - Einnahme: Ist die Zeit um, bekommst du die Belohnung und das Pompa geht in den Cooldown. Danach ist es wieder angreifbar.
- Abbruch: Zone verlassen, gestorben oder offline gegangen. Auch dann geht das Pompa in den Cooldown.
- Es läuft immer nur ein Pompa. Die Uhrzeit ist die des Servers. Ein Pompa, das kurz vor Ende der Zeiten gestartet wurde, läuft zu Ende.
Für Entwickler
-- Server
local active = exports.off_pompa:GetActive() -- nil, wenn keins läuft
local state = exports.off_pompa:GetState('hafen') -- 'attackable', 'attacking', 'cooldown' oder 'closed'
local attacking = exports.off_pompa:IsAttacking(source)
exports.off_pompa:Abort() -- laufendes Pompa abbrechen
exports.off_pompa:ResetCooldown('hafen') -- Cooldown sofort beenden
-- Client
local state = exports.off_pompa:GetState('hafen')
local attacking = exports.off_pompa:IsAttacking()Häufige Fehler
Beim Start meldet das Script Fehler und Hinweise in der Server-Konsole.
| Problem | Lösung |
|---|---|
| Alle Marker sind weiß | Außerhalb von times. Uhrzeit des Servers prüfen. |
| Marker schwebt oder steckt im Boden | position neu holen, dabei direkt am Boden stehen. |
| Pompa bricht ab, obwohl man nah dran ist | Die Zone ist eine Kugel, die Höhe zählt mit. Zone zu klein für das Gelände, radius erhöhen. |
| Item-Belohnung kommt nicht an | Inventar voll, siehe ignoreWeight. Unbekannte Items meldet die Konsole beim Start. |
| „OneSync ist aus“ | set onesync on in die server.cfg und neu starten. |
| Starten soll nur für bestimmte Jobs gehen | ServerCanStart in config/functions.lua anpassen, Beispiel oben. |
Noch nicht gekauft?
Pompa im Shop ansehen