Wróć do bloga
Scripts5 min czytania

Agency-Notify: Powiadomienia powinny wyglądać jak na iOS, a nie jak w FiveM z 2014 roku

Dlaczego powstało Agency-Notify: ponieważ UX powiadomień na większości serwerów FiveM wciąż wygląda jak sprzed dekady.

Agency Scripts

Założyciel i główny deweloper w Agency Scripts

Getto powiadomień

Powiadomienia na większości serwerów FiveM nadal wyglądają jak domyślny ESX z 2019 roku. Zwykły kolorowy pasek u góry, może ikona, jedna linijka tekstu. Gracze nauczyli się je ignorować. To ogromny, zmarnowany kanał do przekazywania ważnych informacji.

Jak wyglądają nowoczesne powiadomienia

Agency-Notify dostarcza powiadomienia w stylu toast, które estetycznie się układają, obsługują bogatą zawartość (ikony, grafiki, tekst wielowierszowy, przyciski akcji) oraz mają wyraźne poziomy ważności z odrębnym wyglądem. Success, warning, error, info: każdy ma własną animację, kolor i wagę typografii.

Grupowanie zapobiegające spamowi

Jeśli trzy podobne powiadomienia miałyby pojawić się w krótkim odstępie czasu, Agency-Notify zwija je w jedno powiadomienie grupowe. Koniec z trzema identycznymi powiadomieniami "You gained $500" blokującymi ekran. To zachowanie, którego gracze oczekują od każdej nowoczesnej aplikacji, i w końcu jest dostępne w FiveM.

API przyjazne dla programistów

Jedno wywołanie funkcji, aby wysłać powiadomienie z dowolnego skryptu: exports['agency-notify']:Show({title, body, icon, level, duration, actions}). Zwraca ID, którego możesz użyć do późniejszej aktualizacji lub zamknięcia powiadomienia. To wszystko. Bez powiązań z frameworkiem, bez magicznych zmiennych globalnych.

Standalone nie bez powodu

Agency-Notify to niezależny od frameworka element bazowy. Twoje skrypty QBCore, skrypty ESX i autorski kod standalone wywołują to samo API. W ten sposób zachowujesz spójny język wizualny serwera w dziesiątkach skryptów od różnych autorów.

Instalacja & konfiguracja

Uruchomienie Agency-Notify zajmuje mniej niż dziesięć minut. Pobierz zasób ze swojej biblioteki Tebex, przeciągnij agency-notify folder do katalogu resources twojego serwera i dodaj ensure agency-notify do Twojego server.cfg. Resource nie ma zależności od bazy danych, cały stan powiadomień jest obsługiwany po stronie klienta w pamięci.

Po uruchomieniu każdy skrypt na Twoim serwerze może natychmiast wywoływać API exportów. Nie jest wymagana żadna konfiguracja poinstalacyjna, aby zacząć wysyłać powiadomienia, domyślne ustawienia są sensowne od razu po instalacji.

Opcje konfiguracji

Otwórz config.lua aby dostosować domyślny wygląd i zachowanie:

  • Pozycja, zakotwiczenie w rogu: górny prawy (domyślnie), górny lewy, dolny prawy lub dolny lewy.
  • Maks. widoczne, ile powiadomień może się gromadzić, zanim starsze zostaną odrzucone. Domyślnie: 5.
  • Domyślny czas trwania, milisekundy do automatycznego odrzucenia. Poszczególne powiadomienia mogą to nadpisać.
  • Styl animacji, slide-in-right (domyślnie), fade lub scale. Dotyczy globalnie wszystkich powiadomień.
  • Okno grupy, okno czasowe w milisekundach, w którym identyczne powiadomienia są zwijane.
  • Dźwięk włączony, włącz lub wyłącz subtelny dźwięk powiadomienia w zależności od poziomu ważności.

Wszystkie ustawienia znajdują się w jednej płaskiej tabeli konfiguracyjnej, bez zagnieżdżonych struktur do przeszukiwania, bez osobnych konfiguracji klienta i serwera.

Kompatybilność z frameworkami

Agency-Notify jest w 100% standalone. Nie ma importów frameworka, nie ma zależności od QBCore ani ESX. Oznacza to:

  • Działa na każdym serwerze FiveM, niezależnie od frameworka bazowego.
  • Późniejsza zmiana frameworka nie psuje wywołań powiadomień.
  • Każdy skrypt dowolnego autora może wywoływać powiadomienia przez to samo API, nie wiedząc, z jakiego frameworka korzystasz.

Jeśli zastępujesz istniejący system powiadomień (notify z ox_lib, QBNotify z QBCore itp.), po prostu zaktualizuj wywołanie exportu w swoich skryptach. Sygnatura jest na tyle zbliżona do popularnych wzorców, że zwykłe znajdź i zamień załatwia większość migracji.

Dlaczego ma to znaczenie dla roleplay

Powiadomienia to główny kanał informacji zwrotnej między systemami serwera a graczami. Gdy transakcja narkotykowa dobiega końca, gdy wrogi gang wkracza na twoje terytorium, gdy admin musi powiadomić wszystkich o wydarzeniu, wszystko to przechodzi przez powiadomienia. Jeśli ten kanał wygląda przestarzale lub jest ignorowany, krytyczna komunikacja serwera po cichu zawodzi.

Gracze, którzy ufają swojemu systemowi powiadomień, zwracają na niego uwagę. Gracze, którzy nauczyli się ignorować brzydki i zaspamowany pasek powiadomień, przegapiają ważne informacje i tracą orientację. System grupowania w Agency-Notify bezpośrednio rozwiązuje problem spamu: jeśli twój serwer wyśle trzy szybkie powiadomienia podczas napadu, gracze zobaczą jedną zgrupowaną wiadomość zamiast trzech powiadomień toast walczących o uwagę.

Poziomy ważności (success, warning, error, info) dodają drugą warstwę sygnalizacyjną. Gracze szybko uczą się, że zielony oznacza sukces, a czerwony natychmiastowe działanie. Taka czytelność kolorów zmniejsza obciążenie poznawcze podczas dynamicznych sytuacji.

Często zadawane pytania

Czy mogę zaktualizować lub zamknąć powiadomienie po jego wyświetleniu?

Tak. Show() export zwraca ID. Przekaż to ID do exports['agency-notify']:Update(id, {body, level}) aby zmienić zawartość lub exports['agency-notify']:Dismiss(id) aby usunąć go wcześniej. Przydaje się to w przypadku powiadomień z paskiem postępu, które zmieniają stan (np. "Przetwarzanie…" → "Gotowe").

Czy to zastępuje powiadomienia ox_lib?

Może. Agency-Notify pokrywa te same zastosowania w innym stylu wizualnym. Jeśli zależy ci na estetyce glassmorphism spójnej z innymi skryptami Agency, zamiana jest prosta. Jeśli twój serwer jest mocno zintegrowany z ox_lib i ten wygląd ci odpowiada, pozostawienie ox_lib do powiadomień jest w porządku, żaden konflikt nie występuje.

Czy gracze mogą dostosować pozycję powiadomień?

Nie od razu po instalacji, pozycja to wybór konfiguracyjny na poziomie serwera. Jest to zamierzone: właściciele serwerów kontrolują język wizualny, a nie poszczególni gracze. Jeśli chcesz preferencji per gracz, musisz zapisać ich wybór w bazie danych i przekazać go w danych gracza przy dołączaniu.

Czy istnieje rate limit zapobiegający spamowaniu powiadomieniami ze skryptów?

System grupowania automatycznie obsługuje deduplikację. W przypadku twardego rate limitingu ustaw Config.RateLimit = true i Config.RateLimitWindow = 1000 (ms) w config.lua. Ogranicza to liczbę unikalnych powiadomień, które pojedynczy skrypt może wywołać w danym oknie czasowym.

Wymagania

  • Serwer FiveM (dowolny framework lub standalone)
  • konto cfx.re z ważnym kluczem licencyjnym Agency-Notify w twoim keymaster
  • Brak zależności od bazy danych
  • Brak zależności od zewnętrznych zasobów

Porównanie Agency-Notify z alternatywami

Ekosystem powiadomień FiveM oferuje kilka opcji: powiadomienia ox_lib, wbudowane powiadomienia QBCore oraz różne skrypty standalone. Oto gdzie każde z nich ma sens:

Powiadomienia ox_lib są solidne i dobrze utrzymane, ale stylistycznie powiązane z językiem wizualnym ox_lib. Jeśli twój serwer działa już w pełni na ox_lib, spójność wizualna może przeważyć nad zmianą. Jeśli jednak budujesz stack oparty na Agency, dopasowana estetyka Agency-Notify będzie lepszym wyborem.

QBNotify w QBCore jest funkcjonalny, ale minimalistyczny: brak grupowania, brak API aktualizacji, brak przycisków akcji. Sprawdza się w podstawowych zastosowaniach i nic dodatkowo nie kosztuje, jeśli korzystasz już z QBCore. Jeśli potrzebujesz czegoś więcej niż proste powiadomienia toast, to rozwiązanie już Ci nie wystarcza.

Agency-Notify powstał z myślą o serwerach, które traktują powiadomienia jako dopracowany detal, a nie dodatek na ostatnią chwilę. Jeśli kiedykolwiek pomyślałeś "nasze powiadomienia wyglądają słabo i gracze je ignorują", ten skrypt rozwiązuje właśnie ten problem.

Pasujący skrypt

Gotowe na twój serwer, aktualizacje w zestawie.

Gotowy, aby zacząć?

Kup skrypty w naszym sklepie lub dołącz do Discorda, aby uzyskać wsparcie, aktualizacje i sprawdzić nadchodzące nowości.