Przejdź do treści
Cała dokumentacja

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.

Wymagania
  • ESX Legacy (es_extended, testowane z 1.14)
  • oxmysql
  • OneSync (set onesync on w server.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 = false idzie zamiast tego przez funkcję Announce w config/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

  1. Wrzuć folder off_pompa do resources.
  2. Dodaj do server.cfg po oxmysql i ESX:
cfg
set onesync on

ensure oxmysql
ensure es_extended
ensure off_pompa
  1. Wpisz swoje Pompy z pozycją w config/settings/config.pompas.lua, nagrodę w config/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

OpcjaDomyślnieOpis
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.design3Wygląd interfejsu: 1 = Klasyczny, 2 = Paragon, 3 = Storefront
times14:00 do 23:59Godziny, w których można uruchomić Pompę (czas serwera). Możliwych jest kilka, przez północ też działa, puste = zawsze
duration20Minuty do przejęcia, dotyczy wszystkich Pomp
cooldown15Minuty cooldownu po przejęciu lub przerwaniu, dotyczy wszystkich Pomp
returnTime5Sekundy na powrót po opuszczeniu strefy, inaczej przerwanie
bannertrueOgłoszenie przy starcie, przejęciu i przerwaniu: true = baner skryptu, false = własne ogłoszenie przez Announce
rewardsBrudne pieniądze, wytrychyNagroda za każdą przejętą Pompę, patrz niżej
ignoreWeightfalsetrue = dawaj itemy także ponad udźwig, inaczej item przepada przy pełnym ekwipunku
colorsZielony, czerwony, pomarańczowy, białyKolor RGB dla każdego stanu: attackable, attacking, cooldown, closed
markerpatrz plikTyp markera, rozmiar, krycie, zasięg widoczności i odległość dla E
key38Klawisz do uruchamiania jako Control-ID (E)
blips.enabledtrueBlipy włączone lub wyłączone
blips.sprite / scale / shortRange437 / 0.8 / trueWygląd głównego blipa
blips.colors2, 1, 47, 0Kolor blipa GTA dla każdego stanu (blipy nie obsługują RGB)
blips.radius / radiusAlphatrue / 90Blip promienia wokół strefy, dopóki trwa Pompa

Nagroda, dotyczy każdej Pompy:

lua
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.

lua
{
  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.

FunkcjaDo 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.

lua
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;
end

Przykł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.

lua
function Announce(message, kind, pompa)
  if kind == 'aborted' then
    return;
  end

  TriggerClientEvent('dein_announce:show', -1, 'Pompa', message);
end

config/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 returnTime sekundach, 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

lua
-- 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.

ProblemRozwiązanie
Wszystkie markery są białePoza times. Sprawdź godzinę serwera.
Marker unosi się lub tkwi w ziemiPobierz position na nowo, stojąc bezpośrednio na ziemi.
Pompa się przerywa, choć jesteś bliskoStrefa jest kulą, wysokość też się liczy. Strefa jest za mała dla terenu, zwiększ radius.
Nagroda w itemach nie docieraPeł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ówDostosuj ServerCanStart w config/functions.lua, przykład powyżej.

Jeszcze nie kupiony?

Zobacz Pompa w sklepie