GameHosting.pl

Notatki operatora

Jak dodać skrypty do serwera FiveM (resources, ensure)

Dodawanie skryptów to codzienność każdego admina FiveM, a jednocześnie źródło połowy problemów ze startem serwera. Ten poradnik przechodzi przez cały proces: folder resources, plik fxmanifest.lua, wpis ensure w server.cfg, kolejność zależności, restart pojedynczego zasobu bez restartu serwera i najczęstsze błędy.

Opublikowano · ~8 min czytania

W skrócie: Skrypt (zasób) to folder z plikiem fxmanifest.lua. Wgrywasz go do katalogu resources, dodajesz w server.cfg linię ensure nazwa_folderu i restartujesz serwer albo wykonujesz w konsoli refresh + ensure nazwa. Nazwa w ensure musi zgadzać się co do znaku z nazwą folderu: bez spacji, bez polskich znaków. Zależności startują przed skryptami, które z nich korzystają.

Jak FiveM widzi skrypty: zasób, manifest, ensure

W nomenklaturze FiveM skrypt to zasób (resource). Zasób to po prostu folder, który zawiera plik fxmanifest.lua, czyli manifest opisujący, co serwer ma załadować: pliki Lua lub JavaScript po stronie serwera i klienta, interfejs, zależności. Bez manifestu folder jest dla serwera niewidzialny.

Serwer nie uruchamia niczego sam z siebie. O tym, które zasoby wystartują, decyduje lista w server.cfg: każda linia ensure nazwa_zasobu to jeden uruchamiany zasób. Ta trójka, folder w resources, manifest w środku i linia ensure, to cały mechanizm.

Krok 1: wgraj folder do resources

Pobrany skrypt (z forum Cfx, GitHuba czy sklepu) rozpakuj i wgraj cały folder do katalogu resources na serwerze, przez SFTP, panel hostingu albo menedżer plików. Dwie pułapki, które załatwiają większość zgłoszeń na Discordach pomocowych:

Z doświadczenia: od razu po pobraniu zajrzyj do środka folderu i sprawdź, czy widzisz fxmanifest.lua (w bardzo starych skryptach: __resource.lua). Jeśli go nie ma na pierwszym poziomie, masz albo zagnieżdżony folder, albo paczkę, która w środku zawiera kilka osobnych zasobów do wgrania osobno.

Krok 2: foldery kategorii w nawiasach kwadratowych

Przy kilkudziesięciu zasobach płaska lista robi się nieczytelna, więc FiveM pozwala grupować zasoby w folderach ujętych w nawiasy kwadratowe, na przykład [mapy], [pojazdy], [framework]. Serwer nie traktuje takiego folderu jako zasobu, tylko zagląda do środka i szuka tam właściwych zasobów.

Uwaga na częsty błąd: zasób może leżeć w folderze kategorii, ale nie w zwykłym folderze bez nawiasów. Ścieżka resources/[pojazdy]/moj_samochod/fxmanifest.lua zadziała, a resources/pojazdy/moj_samochod/... już nie.

Krok 3: dodaj ensure w server.cfg

Otwórz server.cfg i dodaj linię z nazwą folderu zasobu:

# framework i biblioteki najpierw
ensure ox_lib
ensure es_extended

# potem skrypty, które z nich korzystają
ensure moj_hud
ensure moj_samochod

Do wpisu ensure podajesz samą nazwę zasobu, bez nazwy folderu kategorii. Serwer sam znajdzie zasób wewnątrz [pojazdy] czy [mapy].

Różnica między start a ensure: obie komendy uruchamiają zasób, ale ensure restartuje go, jeśli już działa. Dzięki temu ta sama linia działa przy starcie serwera i przy ręcznym przeładowaniu, dlatego w praktyce używa się dziś niemal wyłącznie ensure.

Krok 4: kolejność ma znaczenie

Duża część skryptów zależy od innych zasobów: frameworka (ESX, QBCore), biblioteki interfejsu, systemu baz danych. Zasób zależny musi wystartować po tym, od którego zależy, inaczej wysypie się przy starcie z błędami w konsoli.

Kolejność w server.cfgCo tu trafia
1. Biblioteki bazoweŁącznik z bazą danych, biblioteki pomocnicze (na przykład ox_lib)
2. Frameworkes_extended (ESX) albo qb-core (QBCore) i jego moduły
3. Skrypty rozgrywkiPrace, HUD-y, sklepy, garaże, wszystko co korzysta z frameworka
4. Mapy i pojazdyDodatkowe mapy (MLO) i paczki pojazdów, zwykle niezależne

Autorzy skryptów podają zależności w opisie lub pliku README. Jeśli konsola przy starcie wypisuje, że jakiś obiekt frameworka nie istnieje, w dziewięciu przypadkach na dziesięć zasób wystartował przed swoją zależnością.

Krok 5: uruchom bez restartu całego serwera

Nowo wgrany zasób możesz uruchomić na działającym serwerze, z konsoli (bezpośrednio albo przez txAdmin):

refresh          # przeskanuj katalog resources na nowo
ensure moj_hud   # uruchom (lub zrestartuj) zasób

refresh jest potrzebny tylko wtedy, gdy folder pojawił się w resources już po starcie serwera. Do samego przeładowania działającego zasobu po zmianie configu wystarczy restart nazwa_zasobu. Pamiętaj przy tym, że linia ensure w server.cfg i tak musi istnieć, inaczej zasób nie wstanie po kolejnym restarcie serwera.

Jeśli zarządzasz serwerem przez panel, wygodnie zrobisz to samo z zakładki zasobów w txAdmin. Cały panel opisaliśmy w osobnym wpisie o txAdmin na serwerze FiveM.

Skrypty płatne i assety escrow

Skrypty kupione w sklepach (w tym oficjalnym systemem asset escrow Cfx) wgrywa się identycznie: folder do resources, linia ensure. Różnica polega na tym, że część plików jest zaszyfrowana i weryfikowana licencyjnie po kluczu serwera, więc taki zasób zadziała tylko na serwerze z kluczem przypisanym do konta, na którym dokonano zakupu. Jeśli po wgraniu płatnego skryptu konsola zgłasza błąd uprawnień do assetu, sprawdź, czy klucz licencyjny w server.cfg pochodzi z tego samego konta Cfx co zakup.

Najczęstsze błędy

ObjawPrzyczyna i ratunek
couldn't find resourceNazwa w ensure różni się od nazwy folderu, folder jest zagnieżdżony o poziom za głęboko albo brakuje fxmanifest.lua. Popraw i wykonaj refresh.
Zasób startuje, ale sypie błędami frameworkaZła kolejność: zasób wystartował przed swoją zależnością. Przenieś ensure zależności wyżej w server.cfg.
Folder wgrany, serwer go nie widziFolder dodany po starcie serwera bez refresh, albo leży w zwykłym (nienawiasowym) podfolderze.
Po restarcie serwera skrypt znikaZasób uruchomiony ręcznie komendą, ale bez linii ensure w server.cfg. Dopisz linię.
Błąd licencji przy płatnym zasobieKlucz serwera z innego konta Cfx niż zakup skryptu. Wygeneruj klucz na właściwym koncie.

Z doświadczenia: dodawaj skrypty pojedynczo albo małymi partiami i patrz w konsolę po każdym ensure. Wgranie dwudziestu zasobów naraz i restart to przepis na wieczór spędzony na zgadywaniu, który z nich położył serwer. Po jednym na raz diagnoza trwa sekundy.

Najczęstsze pytania

Jak dodać skrypt do serwera FiveM?

Wgraj folder skryptu (z plikiem fxmanifest.lua w środku) do katalogu resources, dodaj w server.cfg linię ensure nazwa_folderu i zrestartuj serwer albo wykonaj refresh + ensure z konsoli.

Czym różni się ensure od start?

Obie uruchamiają zasób, ale ensure restartuje go, jeśli już działa. W praktyce w server.cfg używa się dziś prawie wyłącznie ensure.

Dlaczego widzę couldn't find resource?

Nazwa w ensure nie zgadza się z nazwą folderu, folder jest zagnieżdżony o poziom za głęboko, brakuje manifestu albo kategoria nie jest w nawiasach kwadratowych.

Czy mogę zrestartować jeden skrypt bez restartu serwera?

Tak: restart nazwa_zasobu w konsoli lub w txAdmin. Nowy folder wymaga wcześniej komendy refresh.

Po co foldery w nawiasach kwadratowych?

To katalogi grupujące, na przykład [mapy] czy [pojazdy]. Serwer nie traktuje ich jako zasobów, tylko szuka zasobów w ich wnętrzu.

Powiązane