
Pompa
Pompy rozmieszczone na mapie: atakuj o stałych godzinach, utrzymaj je przez jakiś czas i zgarnij nagrodę. Z kolorowymi markerami dla każdego stanu, strefą, ogłoszeniem dla wszystkich i paskiem postępu. Wszystko ustawiasz w configu, cooldowny skrypt zapisuje sam.
- ESX Legacy (
es_extended, testowane z 1.14) - oxmysql
- OneSync (
set onesync onwserver.cfg)
Funkcje
- Cztery stany z własnym kolorem markera (RGB) i blipa (kolor blipa GTA):
- Do ataku (zielony): E uruchamia Pompę.
- Atakowana (czerwony): właśnie trwa tu Pompa.
- Cooldown (pomarańczowy): po przejęciu lub przerwaniu, pozostały czas widać w podpowiedzi.
- Poza godzinami (biały): uruchomić można tylko w ustawionych godzinach.
- Strefa: Każda Pompa ma własny promień. Atakujący musi w niej zostać. Jeśli opuści strefę, ma kilka sekund na powrót (
returnTime, domyślnie 5), inaczej Pompa zostaje przerwana. Gracze w pobliżu widzą strefę jako kulę, na mapie jest blip promienia. - Czas przejęcia i cooldown: W minutach, taki sam dla wszystkich Pomp. Na dole ekranu widać pasek postępu z pozostałym czasem i procentami.
- Ogłoszenie dla wszystkich przy starcie, przejęciu i przerwaniu jako baner w designie skryptu. Przy
banner = falseidzie zamiast tego przez funkcjęAnnouncewconfig/functions.lua, gdzie podpinasz własny skrypt ogłoszeń. - Nagroda taka sama dla wszystkich Pomp: pieniądze (gotówka, bank, brudne pieniądze), itemy i bronie, także w losowej ilości.
- Tylko jedna Pompa naraz. Jeśli atakujący zginie lub wyjdzie z serwera, Pompa zostaje przerwana.
- Blipy włączone lub wyłączone, główny blip na środku każdej Pompy w kolorze jej stanu.
- Cooldowny zostają po restarcie serwera.
- Logi Discord dla startu, przejęcia i przerwania.
Instalacja
- Wrzuć folder
off_pompadoresources. - Dodaj do
server.cfgpo oxmysql i ESX:
set onesync on
ensure oxmysql
ensure es_extended
ensure off_pompa- Wpisz swoje Pompy z pozycją w
config/settings/config.pompas.lua, nagrodę wconfig/settings/config.lua.
Tabela off_pompa_cooldowns tworzy się automatycznie. Itemy i bronie z nagrody muszą istnieć w ESX, nieznane zgłasza konsola serwera przy starcie.
Konfiguracja
config/settings/config.lua
| Opcja | Domyślnie | Opis |
|---|---|---|
serverInfo.name | 'OFF SCRIPTS' | Nazwa serwera, widoczna w interfejsie zamiast „OFF SCRIPTS” |
serverInfo.locale | 'de' | Język: de, en, pl, fr, es lub it |
serverInfo.color | { 155, 89, 255 } | Kolor paska postępu |
serverInfo.design | 3 | Wygląd interfejsu: 1 = Klasyczny, 2 = Paragon, 3 = Storefront |
times | 14:00 do 23:59 | Godziny, w których można uruchomić Pompę (czas serwera). Możliwych jest kilka, przez północ też działa, puste = zawsze |
duration | 20 | Minuty do przejęcia, dotyczy wszystkich Pomp |
cooldown | 15 | Minuty cooldownu po przejęciu lub przerwaniu, dotyczy wszystkich Pomp |
returnTime | 5 | Sekundy na powrót po opuszczeniu strefy, inaczej przerwanie |
banner | true | Ogłoszenie przy starcie, przejęciu i przerwaniu: true = baner skryptu, false = własne ogłoszenie przez Announce |
rewards | Brudne pieniądze, wytrychy | Nagroda za każdą przejętą Pompę, patrz niżej |
ignoreWeight | false | true = dawaj itemy także ponad udźwig, inaczej item przepada przy pełnym ekwipunku |
colors | Zielony, czerwony, pomarańczowy, biały | Kolor RGB dla każdego stanu: attackable, attacking, cooldown, closed |
marker | patrz plik | Typ markera, rozmiar, krycie, zasięg widoczności i odległość dla E |
key | 38 | Klawisz do uruchamiania jako Control-ID (E) |
blips.enabled | true | Blipy włączone lub wyłączone |
blips.sprite / scale / shortRange | 437 / 0.8 / true | Wygląd głównego blipa |
blips.colors | 2, 1, 47, 0 | Kolor blipa GTA dla każdego stanu (blipy nie obsługują RGB) |
blips.radius / radiusAlpha | true / 90 | Blip promienia wokół strefy, dopóki trwa Pompa |
Nagroda, dotyczy każdej Pompy:
rewards = {
{ type = 'account', name = 'black_money', amount = { 20000, 30000 } }, -- losowo pomiędzy
{ type = 'item', name = 'lockpick', amount = 3 },
{ type = 'weapon', name = 'WEAPON_PISTOL', ammo = 60 },
},config/settings/config.pompas.lua
Każda Pompa to wpis z pozycją i promieniem strefy.
{
id = 'hafen', -- stała nazwa, nie zmieniaj jej później
label = 'Hafen',
position = vec3(1003.6, -3108.6, 5.9),
radius = 45.0, -- strefa w metrach
},config/functions.lua
Tutaj podłączasz własne skrypty. Błędy w nich trafiają do konsoli, skrypt działa dalej.
| Funkcja | Do czego |
|---|---|
Notify(message, type) / HelpNotify(text) | Notify i tekst podpowiedzi · Serwer: Notify(source, message, type) |
ClientCanStart() | false = teraz nie uruchamiaj Pompy, np. gdy skuty lub w pojeździe |
ClientPompaStarted(pompa) / ClientPompaEnded(pompa, result) | Twoja Pompa uruchomiona lub zakończona, np. dźwięk |
Announce(message, kind, pompa) | Serwer: własne ogłoszenie dla wszystkich, tylko przy banner = false. kind = 'start', 'captured' lub 'aborted'. Domyślnie: powiadomienie ESX |
ServerCanStart(source, pompa) | return false, 'Text' = nie może uruchomić, np. policja, za mało policjantów online, joby |
ServerPompaStarted(source, pompa) | Pompa uruchomiona |
ServerPompaCaptured(source, pompa, rewards) | Pompa przejęta, np. punkty frakcji |
ServerPompaAborted(source, pompa, reason) | Przerwana, reason = 'zone', 'death', 'drop' lub 'admin' |
Przykład: uruchamianie tylko przy co najmniej 2 policjantach na służbie i nie dla samej policji.
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;
endPrzykład: własny skrypt ogłoszeń zamiast notify, bez ogłoszenia przy przerwaniu.
Przykład: własny skrypt ogłoszeń zamiast banera (banner = false), bez ogłoszenia przy przerwaniu.
function Announce(message, kind, pompa)
if kind == 'aborted' then
return;
end
TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
endconfig/settings/config.server.lua i języki
Webhook Discord pompa dla startu, przejęcia i przerwania, url = '' wyłącza log. Wszystkie teksty są w config/locales/ (jeden plik na język).
W grze
- Marker: Każda Pompa ma marker w kolorze swojego stanu. Przy markerze widać, co jest teraz możliwe: start, cooldown z pozostałym czasem lub godziny.
- Start: Naciśnij E przy zielonym markerze. Wszyscy dostają ogłoszenie, a ty widzisz na dole pasek postępu.
- Strefa: Wokół Pompy pojawia się kula (dla wszystkich w pobliżu), a na mapie blip promienia. Jeśli wyjdziesz, pasek postępu pokaże odliczanie. Jeśli nie wrócisz po
returnTimesekundach, Pompa zostanie przerwana. - Przejęcie: Gdy czas minie, dostajesz nagrodę, a Pompa przechodzi w cooldown. Potem znowu można ją atakować.
- Przerwanie: Opuszczenie strefy, śmierć lub wyjście z serwera. Także wtedy Pompa przechodzi w cooldown.
- Zawsze trwa tylko jedna Pompa. Liczy się godzina serwera. Pompa uruchomiona tuż przed końcem godzin trwa do końca.
Dla deweloperów
-- Serwer
local active = exports.off_pompa:GetActive() -- nil, gdy żadna nie trwa
local state = exports.off_pompa:GetState('hafen') -- 'attackable', 'attacking', 'cooldown' lub 'closed'
local attacking = exports.off_pompa:IsAttacking(source)
exports.off_pompa:Abort() -- przerwij trwającą Pompę
exports.off_pompa:ResetCooldown('hafen') -- natychmiast zakończ cooldown
-- Klient
local state = exports.off_pompa:GetState('hafen')
local attacking = exports.off_pompa:IsAttacking()Częste problemy
Przy starcie skrypt zgłasza błędy i wskazówki w konsoli serwera.
| Problem | Rozwiązanie |
|---|---|
| Wszystkie markery są białe | Poza times. Sprawdź godzinę serwera. |
| Marker unosi się lub tkwi w ziemi | Pobierz position na nowo, stojąc bezpośrednio na ziemi. |
| Pompa się przerywa, choć jesteś blisko | Strefa jest kulą, wysokość też się liczy. Strefa jest za mała dla terenu, zwiększ radius. |
| Nagroda w itemach nie dociera | Pełny ekwipunek, patrz ignoreWeight. Nieznane itemy konsola zgłasza przy starcie. |
| „OneSync jest wyłączony” | Dodaj set onesync on do server.cfg i zrestartuj. |
| Uruchamianie ma działać tylko dla określonych jobów | Dostosuj ServerCanStart w config/functions.lua, przykład powyżej. |
Jeszcze nie kupiony?
Zobacz Pompa w sklepie