Jak dodać postaci addon do FiveM: pliki stream, peds.meta, nazwa spawnu

Dodaj postaci addon do serwera FiveM: pliki stream (ydd, yft, ytd, ymt), peds.meta z PED_METADATA_FILE, spawowanie według nazwy modelu i ustawienie postaci jako modelu gracza.

Masz paczę postaci, z plikami takimi jak .ydd, .yft, .ytd i peds.meta, i chcesz spawować postać lub grać nią. Ten poradnik pokazuje, gdzie trafia każdy plik, co manifest potrzebuje, jak spawować postać i jak ją ustawić jako model gracza.

Co zawiera packa postaci

Postać składa się z kilku plików, które mają nazwę postaci:

  • .yft: główny model postaci.
  • .ydd: ubranie i części ciała (głowa, włosy, tułów, nogi). Często umieszczone w podfolderze z nazwą postaci.
  • .ytd: tekstury.
  • .ymt: plik „postaci variation", który mówi grze, jakie komponenty i tekstury ma postać.
  • peds.meta: wpis danych, który definiuje postać (nazwa, typ, animacje i tak dalej).

Pliki modelu trafiają do stream. peds.meta trafia obok manifestu i jest ładowany jako plik danych.

Struktura foldera

text
resources/[peds]/mycop/
  fxmanifest.lua
  peds.meta
  stream/
    mycop.yft
    mycop.ymt
    mycop.ytd
    mycop/
      head_000_r.ydd
      uppr_000_u.ydd
      lowr_000_u.ydd
      ...

Dokładne wewnętrzne nazwy plików zależą od paczki. Nie zmieniaj ich: .ymt się na nich odwołuje. Zachowaj strukturę, którą dał ci autor.

fxmanifest.lua

lua
fx_version 'cerulean'
game 'gta5'

files {
    'peds.meta',
}

data_file 'PED_METADATA_FILE' 'peds.meta'

Wpis files udostępnia plik klientowi gry, a data_file 'PED_METADATA_FILE' mówi grze, że zawiera definicje postaci. Potrzebujesz obu. Dla kilku postaci w jednym zasobie, możesz użyć jednego peds.meta z kilkoma wpisami lub wzorca, takiego jak '**/peds.meta' w obu liniach.

Nazwa postaci jest w peds.meta:

xml
<CPedModelInfo__InitDataList>
  <InitDatas>
    <Item>
      <Name>mycop</Name>
      <PropsName>NULL</PropsName>
      ...
    </Item>
  </InitDatas>
</CPedModelInfo__InitDataList>

Tutaj nazwa modelu to mycop. Musi pasować do nazw plików .yft, .ymt i .ytd.

Uruchom to i spawuj to

cfg
ensure mycop

Aby spawować postać w skrypcie, najpierw poproś o model:

lua
local model = joaat('mycop')

RequestModel(model)
while not HasModelLoaded(model) do
    Wait(0)
end

local ped = CreatePed(4, model, coords.x, coords.y, coords.z, heading, true, false)
SetModelAsNoLongerNeeded(model)

Jeśli twój serwer używa ox_lib, lib.requestModel(model) dokonuje żądania i czekania. Jeśli nazwa modelu nie istnieje, HasModelLoaded nigdy nie staje się true i pętla powyżej zawiesza się, dlatego timeout to dobra praktyka dla nazw z konfigu.

Wiele menu administratora również potrafi spawować postać według nazwy: wpisz mycop i pojawia się.

Ustaw postać jako model gracza

Aby grać jako postać, zmień model gracza:

lua
local model = joaat('mycop')

RequestModel(model)
while not HasModelLoaded(model) do
    Wait(0)
end

SetPlayerModel(PlayerId(), model)
SetModelAsNoLongerNeeded(model)
SetPedDefaultComponentVariation(PlayerPedId())

Pamiętaj, że zmiana modelu gracza daje ci nową postać. Broń, zdrowie i jakiś stan są resetowane, więc oddaj je po zmianie, jeśli twój serwer tego potrzebuje.

Skrypty aparatu i postaci to główny problem. Stosują postać freemode (mp_m_freemode_01 lub mp_f_freemode_01) gdy się spawniasz, a twój model zostaje zastąpiony chwilę później. Opcje:

  • Użyj opcji w swoim skrypcie aparatu. Wiele skryptów wyglądu ma sposób, aby ustawić niestandardową postać lub listę dozwolonych postaci. Sprawdź config skryptu.
  • Ustaw model po załadowaniu aparatu. Na ESX, czekaj na esx:playerLoaded i aby skrypt aparatu się zakończył. Na QBCore, czekaj na QBCore:Client:OnPlayerLoaded. Potem wołaj SetPlayerModel.
  • Nie zapisuj postaci addon jako aparatu. Dane wyglądu dla postaci freemode nie pasują do innego modelu, a zapisany aparat złego typu może sprawić, że postać załaduje się źle. Zachowaj wybór postaci w osobnym polu lub skrypcie.

Na QBox to samo się stosuje: skrypt aparatu decyduje, jaki model otrzymuje gracz, więc ustaw postać po nim lub użyj jego własnej opcji niestandardowej postaci, jeśli jest.

Częste problemy

  • Postać jest niewidoczna lub modelem domyślnym. peds.meta nie jest załadowany lub nazwy się różnią. Sprawdź linię data_file i nazwę w <Name>.
  • Postać nie ma twarzy lub białych tekstur. Pliki .ytd lub .ydd brakuje, znajduje się w złym folderze lub został zmieniony. .ymt potrzebuje oryginalnych nazw.
  • Zasób się uruchamia, ale postać nie może być spawowana. Literówka w nazwie spawnu. Musi być równa wpisowi <Name> w peds.meta.
  • Gra się zawiesza lub streaming ostrzega. Duże pliki i wiele postaci używa pamięci strumieniowania. Zobacz oversized assets.
  • Zasób się nie uruchamia. Ścieżka w files nie istnieje. Zobacz couldn't start resource.

Samochody postępują zgodnie z tą samą ideą pliku danych: zobacz how to add addon cars.

Lista kontrolna

Symptom Naprawa
Postać nie może być spawowana Użyj <Name> z peds.meta; ensure zasobu
Postać jest niewidoczna lub domyślna Dodaj files i data_file 'PED_METADATA_FILE'; dopasuj nazwy
Białe lub brakujące tekstury Zachowaj nazwy .ydd i .ytd jak w paczce
Model resetuje się po spawnie Wołaj SetPlayerModel po skończeniu aparatu lub skryptu postaci
Broń znika po zmianie Oddaj ją po SetPlayerModel
Zasób się nie uruchamia Sprawdź, czy każda ścieżka w files istnieje

Szybkie odpowiedzi

Jaką nazwę używam do spawnu postaci addon?

Nazwę postaci w peds.meta, która jest też nazwą jej plików .ydd, .yft, .ytd i .ymt. Jeśli pliki mają nazwę mycop, używasz mycop z joaat('mycop').

Dlaczego moja postać addon pokazuje się jako domyślna postać lub jest niewidoczna?

Zwykle peds.meta nie jest załadowana lub nazwa w niej nie pasuje do nazw plików. Sprawdź linię data_file 'PED_METADATA_FILE' i czy nazwy się zgadzają.

Czy mogę użyć postaci addon jako mojego własnego postaci?

Tak, z SetPlayerModel, ale skrypty aparatu lub postaci ESX i QBCore często resetują model do postaci freemode. Musisz to ustawić po ich uruchomieniu lub użyć opcji w skrypcie aparatu.

Skrypty bez tego problemu

Parrots as PetsCzternaście ptaków, które siedzą ci na ramieniu, latają z tobą i wracają na zawołanie.Zobacz skrypt →Drug Dealer AppUliczna sprzedaż jako aplikacja lb-phone: strefy, kupcy NPC, poziomy i alerty dla policji.Zobacz skrypt →Quest CreatorWizualny edytor questów i dialogów z NPC, budowanych węzeł po węźle w grze.Zobacz skrypt →

Czytaj dalej