Agency-Phone: Smartfon stworzony specjalnie dla FiveM
Dlaczego Agency-Phone zapewnia najbardziej immersyjne wrażenia ze smartfona w FiveM, od architektury aplikacji po wydajność pod obciążeniem.
Agency Scripts
Założyciel i główny deweloper w Agency Scripts
Demo na żywo
Wypróbuj Agency Phone w przeglądarce, bez pobierania.
Po co tworzyć kolejny telefon do FiveM?
Stworzyliśmy Agency-Phone, ponieważ każdy telefon, który testowaliśmy na własnych serwerach, albo wyglądał świetnie i działał fatalnie, albo działał dobrze i wyglądał przestarzale. Rynek był pełen kompromisów. Chcieliśmy czegoś, co od momentu otwarcia naprawdę sprawia wrażenie nowoczesnego smartfona, a przy tym zachowuje zużycie zasobów na poziomie 0.00ms w spoczynku, gdy leży w kieszeni gracza.
UI, który nie przypomina FiveM
Większość telefonów FiveM zdradza swoje pochodzenie w ciągu dwóch sekund od ich otwarcia. Czcionki wyglądają nieco dziwnie, animacje szarpią, a układ ekranu głównego przypomina prowizorkę. Agency-Phone został zaprojektowany przez ludzi, którzy na co dzień korzystają z prawdziwych smartfonów. Każdy element, od zegara na ekranie blokady po fizykę sprężynowania szuflady aplikacji, był dopracowywany tak długo, aż przestał przypominać skrypt, a stał się prawdziwym telefonem.
Architektura aplikacji
Pod maską Agency-Phone korzysta z systemu aplikacji lazy-loading. Aplikacje inicjalizują swoje UI dopiero wtedy, gdy zostaną faktycznie otwarte, co utrzymuje zużycie pamięci na stałym poziomie, nawet gdy dodajemy więcej aplikacji. Event bus między klienckim Lua a warstwą NUI ma debounce, więc szybkie działania użytkownika nie zalewają gry skokami resmon. To rodzaj pracy inżynieryjnej, której nikt nie widzi, ale z której każdy czerpie korzyści, gdy na serwerze gra 128 graczy.
Domyślnie niezależny od frameworka
Agency-Phone zawiera adaptery dla QBCore i ESX, ale rdzeń jest niezależny od frameworka. Jeśli prowadzisz serwer standalone z własną warstwą danych gracza, możesz go podpiąć w jedno popołudnie, implementując cztery funkcje wyszukiwania. Nie chcemy wydawać skryptów, które uzależniają Cię od jednego frameworka, ponieważ frameworki szybko przemijają: w czasie naszej obecności w społeczności widzieliśmy już co najmniej trzy fale haseł w stylu "to jest teraz nowy standard", które pojawiały się i znikały.
Sens telefonu w RP
Telefon w FiveM to przede wszystkim narzędzie społecznościowe. Gracze używają go do umawiania spotkań, handlu narkotykami, pisania do szefa swojej postaci czy słuchania muzyki w aplikacji radiowej. Każdą rzecz, którą dodajemy lub usuwamy z Agency-Phone, oceniamy pod kątem pytania: czy ułatwia to interakcje społeczne lub sprawia, że są ciekawsze? Właśnie dlatego wypuściliśmy aplikację galerii przed przypomnieniami w kalendarzu, a domyślna aplikacja wiadomości ma wskaźniki pisania, zanim wprowadziliśmy planowane wysyłanie. Najpierw RP, potem lista funkcji.
Instalacja & konfiguracja
Agency-Phone wymaga oxmysql do zapisu kontaktów, wiadomości i rejestru połączeń. Import phone.sql do swojej bazy danych, pobierz zasób z Tebex, wrzuć go do katalogu resources i dodaj ensure agency-phone do server.cfg. Wykrywanie frameworka działa automatycznie dla QBCore i ESX. W przypadku instalacji standalone zaimplementuj cztery funkcje adaptera w config.lua, co zajmuje zazwyczaj godzinę lub dwie w zależności od Twojej niestandardowej warstwy danych gracza.
Gracze otwierają telefon za pomocą konfigurowalnego skrótu klawiszowego (domyślnie: M) lub przedmiotu w ekwipunku. Obie metody są obsługiwane jednocześnie: część serwerów używa skrótu klawiszowego, inne wolą immersyjne podejście z przedmiotem, gdzie telefon można upuścić lub ukraść.
Opcje konfiguracji
Ten config.lua obejmuje zarówno ustawienia techniczne, jak i rozgrywki:
- Klawisz telefonu, klawisz do otwierania/zamykania telefonu. Domyślnie: M.
- Telefon jako przedmiot, przełącz wymóg posiadania telefonu w eq. Domyślnie: wyłączone (tylko klawisz).
- Format numeru, jak numery telefonów są wyświetlane i automatycznie generowane dla nowych postaci.
- Zasięg połączenia, maksymalna odległość fizyczna dla połączeń w zasięgu w porównaniu z brakiem zasięgu (poczta głosowa). Domyślnie: bez limitu dla połączeń IC.
- Integracja Twitter/LifeInvader, połącz Agency-LifeInvader, jeśli jest zainstalowany, dla aplikacji społecznościowej.
- Integracja z aplikacją radia, skonfiguruj dostępne strumienie radiowe dla aplikacji odtwarzacza muzyki.
- Aplikacja bankowa, podłącz bankowość QBCore, konta ESX lub własny handler bankowości.
- Aplikacja GPS, własne kategorie punktów na mapie dla specyficznych lokalizacji na serwerze (szpitale, komisariaty policji, firmy).
- Routing powiadomień, które zewnętrzne skrypty mogą wysyłać powiadomienia push na telefon i jak się wyświetlają.
Kompatybilność z frameworkami
Agency-Phone jest dostarczany z adapterami dla QBCore i ESX. Adapter obejmuje wyświetlanie stanu gotówki, przedmiot w ekwipunku (jeśli włączona jest opcja phone-as-item), dane pracy dla widoczności aplikacji służbowych oraz wyświetlanie danych postaci. W przypadku standalone obowiązuje ten sam schemat czterech funkcji. Gdy adapter zostanie napisany dla jednego skryptu Agency, kolejne skrypty korzystają z tych samych funkcji.
Dlaczego ma to znaczenie dla roleplay
Telefon to najbardziej osobisty prop, jaki nosi postać. Gracze korzystają z niego podczas każdej sesji, dzwoniąc, wysyłając wiadomości, sprawdzając stan konta czy przeglądając mapę. Gdy ta interakcja sprawia wrażenie korzystania z prawdziwego telefonu, sesje RP z udziałem telefonu stają się również bardziej realistyczne. Transakcja narkotykowa skoordynowana przez aplikację SMS w Agency-Phone, ze statusem odczytania i wskaźnikiem pisania, to zupełnie inna (lepsza) scena niż ta sama transakcja zrealizowana za pomocą komendy na czacie.
Funkcja koordynacji społecznej to najważniejsza rola telefonu w RP. Większość znaczących wydarzeń RP zaczyna się od komunikacji: ktoś się kontaktuje, umawia spotkanie, podaje współrzędne, potwierdza godzinę. Cała ta komunikacja jest znacznie bardziej immersyjna, gdy odbywa się za pośrednictwem kanałów in-character zamiast Discorda lub czatu OOC. Aplikacje do połączeń i SMS-ów w Agency-Phone natywnie pokrywają 95% tych potrzeb koordynacji społecznej.
Zużycie zasobów w spoczynku na poziomie 0.00ms to nie tylko techniczny szczegół, to właśnie dzięki temu telefon może działać jako zasób stale otwarty w tle. Skrypty obciążające serwer na poziomie 0.02ms w spoczynku przy 128 graczach generują łącznie 2.56ms obciążenia w stanie bezczynności dla całej populacji. Udział Agency-Phone w kosztach bezczynności wynosi zero. Ma to znaczenie dla wydajności serwera tak samo jak każdy współdzielony zasób: proporcjonalnie do liczby graczy.
Aplikacja galerii w v2 oraz możliwość robienia zrzutów ekranu w grze stworzyły nieoczekiwany przypadek użycia w RP: fotografowanie dowodów in-character. Postacie policjantów robią zrzuty ekranu miejsc zbrodni za pomocą aparatu w telefonie i udostępniają je na wewnętrznym czacie swojego departamentu. Dziennikarze fotografują wydarzenia i publikują je na LifeInvader. Aparat przekształca telefon z narzędzia komunikacji w narzędzie dokumentacji z prawdziwym zastosowaniem w RP.
Często zadawane pytania
Czy numery telefonów mogą zachować się po wipe serwera?
Numery telefonów są przechowywane w oxmysql i przypisane do identyfikatora postaci. Dopóki identyfikator postaci jest zachowany po wipe, numer pozostaje bez zmian. Większość wipe'ów na serwerach czyści postępy postaci, ale zachowuje identyfikatory, więc numery zazwyczaj przetrwają. W przypadku pełnych wipe'ów obejmujących reset identyfikatorów dostępny jest export zachowywania numerów, który zapisuje i przywraca numer postaci niezależnie od głównego wipe'a.
Czy policja może śledzić połączenia i wiadomości w czasie rzeczywistym?
Tak. Włącz system namierzania w config.lua. Policja z wymaganą flagą uprawnień może otworzyć panel namierzania i wyszukiwać według numeru. Miejsca trwających połączeń pojawiają się na mapie. Metadane wiadomości (godzina, para numerów) są zapisywane w tabeli logów i dostępne przez Agency-Admin. Pełne śledzenie treści wiadomości jest domyślnie wyłączone z dbałości o prywatność, włącz je jawnie, jeśli pozwalają na to zasady RP Twojego serwera.
Jak telefon obsługuje połączenia, gdy gracz jest martwy lub w areszcie?
Skonfiguruj stan śmierci i stan zakucia w kajdanki w config.lua. Martwi gracze mogą być przekierowywani bezpośrednio na pocztę głosową, mieć wyłączony telefon lub mieć dostęp wyłącznie do połączeń alarmowych. Skuci gracze mogą mieć całkowicie zablokowany dostęp do telefonu lub ograniczony wyłącznie do widoku GPS (dzięki czemu policja widzi, że nie wzywają wsparcia). Stany te są wykrywane przez exportowane funkcje ze skryptów deathscreen i kajdanek.
Jakie stacje radiowe są dostępne w aplikacji muzycznej?
Domyślna lista stacji zawiera osiem adresów URL strumieni radiowych społeczności obejmujących popularne gatunki. Dodaj własne, dopisując adresy URL strumieni do Config.RadioStations. Serwery często dodają własną stację radiową, w której administracja nadaje wiadomości in-character. Nie ma tu DRM ani integracji z serwisami streamingowymi, działa dowolny publicznie dostępny URL strumienia audio.
Wymagania
- Serwer FiveM (QBCore, ESX lub standalone)
- oxmysql
- konto cfx.re z ważną licencją Agency-Phone
- Opcjonalnie: Agency-LifeInvader (dla integracji z aplikacją społecznościową)
- Opcjonalnie: Agency-Pad (do synchronizacji danych między urządzeniami)