Agency-Seatbelt: Dlaczego skrypt ważący 20kb ma największy wpływ na wrażenia z jazdy
Agency-Seatbelt ma niewiele kodu, ale ogromny wpływ na wrażenia z gameplay'u. Oto dlaczego realistyczna mechanika pasów ma większe znaczenie, niż myślisz.
Agency Scripts
Założyciel i główny deweloper w Agency Scripts
Małe skrypty, duży wpływ
Agency-Seatbelt to jeden z najmniejszych skryptów, jakie wydajemy, ale opinie niezmiennie stawiają go wśród najbardziej docenianych. Płynie z tego wniosek: RP buduje się na drobnych detalach mechaniki, które sprawiają, że świat jest spójny, a nie na monolitycznych pakietach funkcji.
Korzyści z realizmu
Gdy gracze muszą fizycznie zapiąć pasy przed jazdą, zmieniają się trzy rzeczy. Pościgi stają się bardziej niebezpieczne, ponieważ zapinanie pasów w trakcie ucieczki kosztuje cenny czas. Funkcjonariusze policji zyskują nowy powód do wystawienia mandatu. Pasażerowie ponoszą realne konsekwencje zaniedbania kierowcy. Każda z tych rzeczy to mały punkt zaczepienia dla RP, który dodaje głębi bez zbędnego obciążania graczy.
Szczegóły animacji i audio
Spędziliśmy więcej czasu nad animacją zapinania i odpinania pasów niż nad główną logiką. Dwusekundowa animacja, subtelny dźwięk kliknięcia i wyraźny wskaźnik pasów na HUD: to właśnie takie dopracowane detale dają graczom sygnał: "ten serwer podchodzi do sprawy poważnie". Kiedy wszystko inne działa bezgłośnie w tle, te drobne momenty robią największe wrażenie.
Integracja ze skryptami pojazdów
Agency-Seatbelt bez problemu integruje się z dowolnym skryptem uszkodzeń pojazdów, ponieważ udostępniamy proste zdarzenie client, `agency-seatbelt:isBuckled`, o które mogą pytać inne skrypty. Twój skrypt holownika może odrzucać wezwania od graczy, którzy właśnie wypadli przez przednią szybę. Twój skrypt szpitala może dodawać realistyczne modyfikatory obrażeń. Skrypt jest na tyle lekki, że nie obciąża serwera, ale wystarczająco elastyczny, by współpracować z innymi.
Za darmo, bo tak powinno być
Agency-Seatbelt jest na zawsze dostępny za €0. Podstawowa mechanika bezpieczeństwa nie powinna być ukryta za paywallem. Używaj go, forkuj, modyfikuj, nie mamy nic przeciwko. Każdy serwer korzystający z naszych darmowych skryptów to serwer, który może kiedyś kupić nasze skrypty premium, a my gramy długoterminowo.
Instalacja & konfiguracja
Agency-Seatbelt jest darmowy i nie ma żadnych zależności. Pobierz go z GitHuba lub darmowego pakietu Tebex, wrzuć folder do katalogu resources i dodaj ensure agency-seatbelt do server.cfg. Resource zaczyna działać natychmiast po kolejnym restarcie serwera. Bez bazy danych, bez frameworka, bez konieczności konfiguracji.
Jeśli chcesz dostosować przypisanie klawisza, integrację z ticketami lub zachowanie wskaźnika HUD, otwórz config.lua. Wartości domyślne są rozsądne dla większości serwerów, wielu właścicieli serwerów korzysta z Agency-Seatbelt przez miesiące bez dotykania configu.
Opcje konfiguracji
Ten config.lua obejmuje ustawienia interakcji oraz konsekwencji:
- Klawisz zapinania pasów, klawisz, który gracze naciskają, aby zapiąć i odpiąć pasy. Domyślnie: B (tak samo jak w wielu starszych skryptach na pasy, dla znajomej pamięci mięśniowej).
- Próg wyrzutu, prędkość pojazdu, przy której niezapięty gracz wypada podczas kolizji. Domyślnie: 50 km/h.
- Siła wyrzutu, jak daleko gracz jest wyrzucany przy wypadnięciu. Wyższe wartości dają bardziej dramatyczny efekt; niższe wartości są bardziej realistyczne.
- Obrażenia przy wypadnięciu z pojazdu, zdrowie i pancerz odbierane, gdy gracz wyleci z pojazdu bez pasów bezpieczeństwa. Konfigurowalne oddzielnie od siły wyrzutu.
- Wskaźnik HUD, czy na HUD pojawia się mała ikona pasów, gdy gracz w pojeździe nie jest zapięty. Wymaga Agency-Hud lub eksportuje event pozycji dla niestandardowych HUD-ów.
- Komenda policji, włącz
/checkbeltdla policji do sprawdzania stanu pasów bezpieczeństwa pasażerów pobliskiego pojazdu. - Wymuszanie pasów u pasażerów, czy pasażerowie, jak i kierowcy wypadają z pojazdu przy braku zapiętych pasów. Domyślnie: włączone.
Kompatybilność z frameworkami
Agency-Seatbelt nie ma żadnych zależności od frameworka. Logika wypadania i uszkodzeń korzysta z natywnych funkcji FiveM do manipulacji pojazdami i pedami, które działają identycznie na każdym serwerze. Opcjonalna komenda policyjna używa prostego sprawdzania uprawnień, zaimplementuj Config.IsPolice(src) dla dowolnego niestandardowego systemu prac lub całkowicie wyłącz tę komendę, jeśli nie jest potrzebna.
Dlaczego ma to znaczenie dla roleplay
Filozofia stojąca za Agency-Seatbelt opiera się na założeniu, że najdrobniejsze detale mechaniki składają się na unikalny charakter serwera. Serwer z pasami bezpieczeństwa, siadaniem, własnymi powiadomieniami i dopracowanym HUD-em sprawia zupełnie inne wrażenie niż serwer bez nich, nawet jeśli gracz nie potrafi dokładnie wyjaśnić dlaczego. Pasy bezpieczeństwa to jeden z tych dyskretnych sygnałów mówiących: „ten serwer dba o szczegóły”.
Perspektywa służb mundurowych to obszar, w którym ten skrypt generuje największą wartość RP. Postacie policjantów na serwerach z Agency-Seatbelt otrzymują nowe, łagodne narzędzie do kontroli ruchu drogowego. Kontrola drogowa rozpoczynająca się od "Zauważyłem, że pasażer nie miał zapiętych pasów" to znacznie lepszy początek RP niż pretekst, o którym wszyscy wiedzą, że jest zmyślony. Ten drobny szczegół daje funkcjonariuszom realistyczny powód do interakcji z cywilami, co otwiera scenariusze, które inaczej by się nie wydarzyły.
Sceny pościgów zmieniają się znacząco, gdy kierowcy wiedzą, że kolizje przy dużej prędkości niosą ze sobą realne konsekwencje. Kalkulacja wokół pytania: "czy ryzykuję wypadek, aby ich zgubić?" staje się ciekawsza, gdy jednym ze skutków może być wylecenie przez przednią szybę. To właśnie to napięcie sprawia, że pościgi to coś więcej niż zwykłe porównanie prędkości dwóch pojazdów.
Pasażerowie pojazdu zaczynają zwracać uwagę na zachowanie kierowcy. Pasażer, który wie, że poniesie konsekwencje brawurowej jazdy kierowcy, poprosi o zwolnienie, pokłóci się o trasę lub wysiądzie, zamiast ryzykować. To drobne momenty RP, które po prostu nie istnieją bez systemu konsekwencji tworzonego przez pasy bezpieczeństwa.
Często zadawane pytania
Czy wypadnięcie z pojazdu działa we wszystkich typach pojazdów?
Wypadanie z pojazdu działa w autach, ciężarówkach i vanach. Motocykle i rowery korzystają z osobnej (zmniejszonej) siły wyrzutu, ponieważ fizyka zachowuje się inaczej. Helikoptery i samoloty domyślnie wyłączają sprawdzanie pasów: wypadanie ze statków powietrznych stwarza więcej okazji do trollowania niż wartości dla RP. Możesz włączyć sprawdzanie statków powietrznych w config.lua, jeśli twój serwer wymaga specyficznego RP lotniczego.
Czy możemy wystawiać mandaty za brak zapiętych pasów?
Tak. Agency-Seatbelt wywołuje event po stronie serwera agency-seatbelt:violation z ID gracza i net ID pojazdu, gdy kontrola policyjna wykaże niezapięte pasy u pasażera. Twój skrypt policji lub mandatów nasłuchuje tego zdarzenia i nalicza karę zgodnie z systemem na twoim serwerze. Skrypt pasów odpowiada za wykrywanie, a twój skrypt mandatów za konsekwencje finansowe.
Czy mechanika wypadnięcia z pojazdu wchodzi w interakcję ze skryptami ekranu śmierci?
Agency-Seatbelt wywołuje agency-seatbelt:onEjection przed zadaniem obrażeń. Skrypty deathscreen, które nasłuchują zdarzeń zmiany zdrowia, naturalnie rejestrują te obrażenia. W celu ściślejszej integracji (własne typy obrażeń, dane miejsca zdarzenia), nasłuchuj bezpośrednio zdarzenia wyrzucenia z pojazdu i tam dodaj swoją logikę.
Czy można wyłączyć wypadanie z pojazdu w określonych strefach (jak tory wyścigowe)?
Tak. Użyj exports['agency-seatbelt']:DisableInZone(coords, radius) z dowolnego skryptu serwerowego. Wypadnięcie z pojazdu jest blokowane dla wszystkich graczy w tym promieniu. Wywołaj to podczas konfiguracji wydarzenia i usuń strefę po jego zakończeniu. Zapobiega to kolidowaniu mechaniki pasów bezpieczeństwa z wyścigami lub innymi scenariuszami, w których kolizje pojazdów są oczekiwane i bez konsekwencji.
Wymagania
- Serwer FiveM (dowolny framework lub standalone)
- Darmowe, bez wymaganej licencji Tebex
- Brak zależności od bazy danych
- Brak zależności od zewnętrznych zasobów