Come aggiungere ped addon a FiveM: file stream, peds.meta, nome spawn

Aggiungi ped addon a un server FiveM: i file stream (ydd, yft, ytd, ymt), peds.meta con PED_METADATA_FILE, spawning per nome del modello e impostazione di un ped come modello del giocatore.

Hai un pacchetto ped, con file come .ydd, .yft, .ytd e un peds.meta, e vuoi spawnare il ped o giocare come tale. Questa guida mostra dove va ogni file, cosa ha bisogno il manifest, come spawnare il ped e come impostarlo come modello del giocatore.

Cosa contiene un pacchetto ped

Un ped è composto da diversi file che condividono il nome del ped:

  • .yft: il modello principale del ped.
  • .ydd: i vestiti e le parti del corpo (testa, capelli, busto, gambe). Spesso posizionato in una sottocartella con il nome del ped.
  • .ytd: le texture.
  • .ymt: il file "ped variation", che dice al gioco quali componenti e texture ha il ped.
  • peds.meta: la voce di dati che definisce il ped (nome, tipo, animazioni e così via).

I file del modello vanno in stream. Il peds.meta va accanto al manifest e viene caricato come file di dati.

Struttura della cartella

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
      ...

I nomi dei file interni esatti dipendono dal pacchetto. Non rinominarli: il .ymt vi fa riferimento. Mantieni la struttura che l'autore ti ha dato.

Il fxmanifest.lua

lua
fx_version 'cerulean'
game 'gta5'

files {
    'peds.meta',
}

data_file 'PED_METADATA_FILE' 'peds.meta'

La voce files rende il file disponibile al client di gioco, e data_file 'PED_METADATA_FILE' dice al gioco che contiene definizioni di ped. Hai bisogno di entrambi. Per diversi ped in una risorsa, puoi usare un peds.meta con diversi elementi, o un pattern come '**/peds.meta' in entrambe le righe.

Il nome di un ped è nel peds.meta:

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

Qui il nome del modello è mycop. Deve corrispondere ai nomi dei file .yft, .ymt e .ytd.

Avvialo e spawnalo

cfg
ensure mycop

Per spawnare il ped in uno script, richiedi il modello per primo:

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)

Se il tuo server usa ox_lib, lib.requestModel(model) fa la richiesta e l'attesa. Se il nome del modello non esiste, HasModelLoaded non diventa mai true e il loop sopra si blocca, quindi un timeout è una buona pratica per i nomi che vengono da una config.

Molti menu admin possono anche spawnare un ped per nome: digita mycop e appare.

Imposta il ped come modello del giocatore

Per giocare come il ped, cambia il modello del giocatore:

lua
local model = joaat('mycop')

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

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

Ricorda che cambiare il modello del giocatore ti dà un nuovo ped. Le armi, la salute e alcuni stati vengono reimpostati, quindi ridateli dopo il cambio se il tuo server ne ha bisogno.

Gli script skin e personaggio sono il problema principale. Applicano un ped freemode (mp_m_freemode_01 o mp_f_freemode_01) quando spawni, e il tuo modello viene sostituito un momento dopo. Opzioni:

  • Usa l'opzione nel tuo script skin. Molti script di aspetto hanno un modo per impostare un ped personalizzato o un elenco di ped consentiti. Controlla la config dello script.
  • Imposta il modello dopo che lo skin carica. Su ESX, aspetta esx:playerLoaded e che lo script skin finisca. Su QBCore, aspetta QBCore:Client:OnPlayerLoaded. Quindi chiama SetPlayerModel.
  • Non salvare il ped addon come lo skin. I dati di aspetto per un ped freemode non si adattano a un altro modello, e uno skin salvato del tipo sbagliato può far caricare il personaggio in modo errato. Mantieni la scelta del ped in un campo o script separato.

Su QBox lo stesso vale: lo script di aspetto decide quale modello ottiene il giocatore, quindi imposta il ped dopo, o usa la sua opzione ped personalizzata se ce n'è una.

Problemi comuni

  • Il ped è invisibile o un modello predefinito. Il peds.meta non è caricato o i nomi differiscono. Controlla la riga data_file e il nome in <Name>.
  • Il ped non ha viso o texture bianche. I file .ytd o .ydd sono mancanti, nella cartella sbagliata o rinominati. Il .ymt ha bisogno dei nomi originali.
  • La risorsa si avvia ma il ped non può essere spawnato. Un errore di battitura nel nome spawn. Deve essere uguale alla voce <Name> in peds.meta.
  • Il gioco si blocca o lo streaming avvisa. File grandi e molti ped usano la memoria di streaming. Vedi oversized assets.
  • La risorsa non si avvia. Un percorso in files non esiste. Vedi couldn't start resource.

Le auto seguono la stessa idea di file di dati: vedi come aggiungere auto addon.

Checklist

Sintomo Soluzione
Il ped non può essere spawnato Usa il <Name> da peds.meta; ensure la risorsa
Il ped è invisibile o predefinito Aggiungi files e data_file 'PED_METADATA_FILE'; fai corrispondere i nomi
Texture bianche o mancanti Mantieni i nomi .ydd e .ytd come nel pacchetto
Il modello si reimposta dopo lo spawn Chiama SetPlayerModel dopo che lo script skin o personaggio finisce
Le armi sparite dopo il cambio Ridatele dopo SetPlayerModel
La risorsa non si avvia Controlla che ogni percorso in files esista

Risposte rapide

Quale nome uso per spawnare un ped addon?

Il nome del ped in peds.meta, che è anche il nome dei suoi file .ydd, .yft, .ytd e .ymt. Se i file si chiamano mycop, usi mycop con joaat('mycop').

Perché il mio ped addon appare come un ped predefinito o è invisibile?

Di solito il peds.meta non è caricato, o il nome in esso non corrisponde ai nomi dei file. Controlla la riga data_file 'PED_METADATA_FILE' e che i nomi concordino.

Posso usare un ped addon come il mio personaggio?

Sì, con SetPlayerModel, ma gli script di skin o personaggio ESX e QBCore spesso reimpostano il modello al ped freemode. Devi impostarlo dopo che vengono eseguiti, o usare un'opzione nello script skin.

Script senza questo problema

Parrots as PetsQuattordici uccelli che stanno sulla tua spalla, volano con te e tornano quando li chiami.Vedi script →Drug Dealer AppSpaccio di strada come app per lb-phone: zone, acquirenti NPC, livelli e allerte alla polizia.Vedi script →Quest CreatorUn editor visuale di missioni e dialoghi con gli NPC, costruito nodo per nodo in gioco.Vedi script →

Continua a leggere