__resource.lua do fxmanifest.lua: jak przekonwertować stary skrypt

Stary skrypt FiveM nadal używa __resource.lua i pokazuje ostrzeżenie o wycofaniu? Jak przekonwertować to na fxmanifest.lua z fx_version, game, lua54, ui_page i plikami.

Uruchamiasz stary skrypt i konsola ostrzega, że wciąż używa __resource.lua, które jest wycofane. Skrypt może wciąż działać, ale jest zablokowany w starym formacie manifestu i nie może użyć nowszych opcji, takich jak Lua 5.4. Ten przewodnik konwertuje to na fxmanifest.lua w kilka minut.

Co się zmieniło

Każdy zasób potrzebuje manifestu, który mówi FiveM, które pliki załadować. Stary format to __resource.lua. Obecny format to fxmanifest.lua. Dyrektywy, które znasz (client_script, server_script, ui_page, files), są takie same. To, co się zmienia, to nagłówek.

Stary manifest wygląda tak:

lua
resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937'

client_script 'client.lua'
server_script 'server.lua'

ui_page 'html/index.html'
files {
    'html/index.html',
    'html/script.js',
    'html/style.css',
}

Nowy nagłówek

Zastąp linię resource_manifest_version dwiema liniami:

lua
fx_version 'cerulean'
game 'gta5'

fx_version jest wymagane. Wybiera zachowanie manifestu, a cerulean to wersja, którą używają bieżące skrypty. game 'gta5' mówi, że zasób jest dla GTA V. Stary UUID w resource_manifest_version jest zastąpiony przez fx_version: nie musisz go tłumaczyć na konkretną starą nazwę wersji, po prostu go usuń.

Pełny przekonwertowany plik

lua
fx_version 'cerulean'
game 'gta5'

lua54 'yes'

author 'Your name'
description 'What the resource does'
version '1.0.0'

client_scripts {
    'client.lua',
}

server_scripts {
    'server.lua',
}

ui_page 'html/index.html'

files {
    'html/index.html',
    'html/script.js',
    'html/style.css',
}

Notatki o każdej części:

  • client_scripts i server_scripts przyjmują listę. Pojedyncze client_script 'file.lua' wciąż działa dla jednego pliku.
  • shared_scripts ładuje po obu stronach. Import frameworku, taki jak '@ox_lib/init.lua', tam idzie.
  • ui_page wskazuje plik HTML NUI. Każdy plik, który strona ładuje (JS, CSS, obrazy, czcionki), musi być w files, inaczej nie zostanie wysłany do gracza. Wildcardy działają: 'html/**/*'.
  • files to również miejsce, gdzie wyświetlasz dane, które klient potrzebuje, ale nie uruchamia, takie jak pliki meta.
  • author, description i version są opcjonalne i tylko informacyjne.

Lua 5.4

lua54 'yes' sprawia, że zasób działa na Lua 5.4. Wiele obecnych zasobów tego wymaga. Włączenie go dla starego skryptu jest zwykle bezpieczne, ale sprawdź dwie rzeczy: skrypt, który polega na starym zachowaniu Lua 5.3, może potrzebować małej poprawki, a skrypty, które używają ox_lib, potrzebują Lua 5.4 włączonego. Pomiń to, jeśli stary skrypt zachowuje się inaczej z nim i przetestuj to.

Mapy, pliki danych i zasoby przesyłane

Jeśli stary manifest ma linie data_file dla meta pojazdu lub broni, je zachowaj. Mają tę samą składnię w fxmanifest.lua:

lua
files {
    'data/vehicles.meta',
    'data/handling.meta',
}

data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'

Przesyłane modele i tekstury w folderze stream nie potrzebują żadnego wpisu. Dla zasobu tylko mapy dodaj również this_is_a_map 'yes'.

Usuń stary plik

Po konwersji usuń __resource.lua z folderu. Pozostawienie obu plików na miejscu jest mylące dla każdego, kto później utrzymuje serwer, i tylko jeden z nich powinien opisywać zasób.

Następnie uruchom ponownie zasób:

text
refresh
ensure my_script

refresh jest potrzebne, ponieważ manifest się zmienił. Jeśli manifest ma błąd, zasób się nie uruchomi: zobacz Couldn't start resource, aby przeczytać błąd ponad linią.

Częste błędy po konwersji

  • Brakujący fx_version lub game. Manifest jest odrzucony.
  • Brakujący przecinek wewnątrz { }. Każdy wpis na liście jest oddzielony przecinkiem.
  • Pliki brakują w files. NUI ładuje się, ale obrazy lub skrypty są puste, ponieważ strona prosiła o coś, co nie zostało wysłane. Sprawdź konsolę F8 i narzędzia deweloperskie NUI dla nieudanych żądań.
  • Zależność, która nie jest zadeklarowana. Dodaj dependency 'ox_lib', jeśli skrypt to używa, aby sprawdzać kolejność uruchamiania. Przeczytaj Could not find dependency.

Ostrzeżenie: nie ustawiaj fx_version na bardzo starą nazwę skopiowaną z poradnika z 2019 roku, aby dopasować wiek skryptu. Użyj cerulean i napraw wszystko, co się psuje.

Lista kontrolna

Objaw Naprawa
Konsola ostrzega o __resource.lua Utwórz fxmanifest.lua, usuń stary plik
Linia resource_manifest_version Zamień na fx_version 'cerulean' i game 'gta5'
NUI pusty po konwersji Wymień każdy plik NUI pod files i zachowaj ui_page
Funkcje ox_lib brakują Dodaj lua54 'yes' i skrypt dzielony @ox_lib/init.lua
Zasób nie znaleziony po zmianie Uruchom refresh, potem ensure
Zasób się nie uruchamia Przeczytaj linie nad Couldn't start resource

Szybkie odpowiedzi

Czy __resource.lua jest wciąż wspierane?

FiveM nadal je czyta dla starych zasobów, ale jest wycofane i drukuje ostrzeżenie. Nowe funkcje, takie jak lua54, istnieją tylko w fxmanifest.lua, więc je konwertuj.

Jaki fx_version powinienem użyć?

cerulean jest popularnym wyborem dzisiaj. To wersja, którą deklaruje większość bieżących skryptów i działa na bieżącym artefakcie serwera.

Czy muszę zachować resource_manifest_version?

Nie. fx_version go zastępuje. Usuń linię resource_manifest_version podczas konwersji.

Skrypty bez tego problemu

Clothing DesignerProjektuj ubrania w FiveM — pędzel, warstwy, import obrazów i AI — a potem je noś.Zobacz skrypt →Drag RopeCiągnij graczy na linie i przywiązuj ich do pojazdów, z długością liny na żywo.Zobacz skrypt →Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →

Czytaj dalej