Cómo añadir peds addon a FiveM: ficheros stream, peds.meta, nombre de invocación

Añade peds addon a un servidor FiveM: los ficheros stream (ydd, yft, ytd, ymt), peds.meta con PED_METADATA_FILE, invocación por nombre de modelo y establecer un ped como modelo del jugador.

Tienes un pack de peds, con ficheros como .ydd, .yft, .ytd y un peds.meta, y quieres invocar el ped o jugar como él. Esta guía te muestra dónde va cada fichero, qué necesita el manifest, cómo invocar el ped y cómo establecerlo como modelo del jugador.

Qué contiene un pack de peds

Un ped está hecho de varios ficheros que comparten el nombre del ped:

  • .yft: el modelo principal del ped.
  • .ydd: la ropa y partes del cuerpo (cabeza, cabello, torso, piernas). A menudo colocado en una subcarpeta con el nombre del ped.
  • .ytd: las texturas.
  • .ymt: el fichero de «variación de ped», que le dice al juego qué componentes y texturas tiene el ped.
  • peds.meta: la entrada de datos que define el ped (nombre, tipo, animaciones y más).

Los ficheros de modelo van en stream. El peds.meta va junto al manifest y se carga como fichero de datos.

Estructura de carpetas

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

Los nombres exactos de los ficheros internos dependen del pack. No los renombres: el .ymt se refiere a ellos. Mantén la estructura que te dio el autor.

El fxmanifest.lua

lua
fx_version 'cerulean'
game 'gta5'

files {
    'peds.meta',
}

data_file 'PED_METADATA_FILE' 'peds.meta'

La entrada files hace que el fichero esté disponible para el cliente del juego, y data_file 'PED_METADATA_FILE' le dice al juego que contiene definiciones de peds. Necesitas ambas. Para varios peds en un recurso, puedes usar un peds.meta con varias entradas, o un patrón como '**/peds.meta' en ambas líneas.

El nombre de un ped está en el peds.meta:

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

Aquí el nombre del modelo es mycop. Debe coincidir con los nombres de fichero del .yft, .ymt y .ytd.

Inicia e invoca

cfg
ensure mycop

Para invocar el ped en un script, solicita el modelo primero:

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)

Si tu servidor usa ox_lib, lib.requestModel(model) hace la solicitud y la espera. Si el nombre del modelo no existe, HasModelLoaded nunca se vuelve verdadero y el bucle anterior se cuelga, así que un tiempo de espera es buena práctica para nombres que vienen de una configuración.

Muchos menús de administrador también pueden invocar un ped por nombre: escribe mycop y aparece.

Establecer el ped como modelo del jugador

Para jugar como el ped, cambia el modelo del jugador:

lua
local model = joaat('mycop')

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

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

Recuerda que cambiar el modelo del jugador te da un nuevo ped. Las armas, la salud y algunos estados se reinician, así que devuélvelos después del cambio si tu servidor los necesita.

Los scripts de aspecto y personaje son el principal problema. Aplican un ped freemode (mp_m_freemode_01 o mp_f_freemode_01) cuando apareces, y tu modelo se reemplaza un momento después. Opciones:

  • Usa la opción en tu script de aspecto. Muchos scripts de apariencia tienen una forma de establecer un ped personalizado o una lista de peds permitidos. Comprueba la configuración del script.
  • Establece el modelo después de que el aspecto cargue. En ESX, espera esx:playerLoaded y a que el script de aspecto termine. En QBCore, espera QBCore:Client:OnPlayerLoaded. Luego llama a SetPlayerModel.
  • No guardes el ped addon como el aspecto. Los datos de apariencia para un ped freemode no caben en otro modelo, y un aspecto guardado del tipo incorrecto puede hacer que el personaje cargue mal. Mantén la elección del ped en un campo o script separado.

En QBox lo mismo aplica: el script de apariencia decide qué modelo obtiene el jugador, así que establece el ped después de él, o usa su propia opción de ped personalizado si la hay.

Problemas comunes

  • El ped es invisible o un modelo por defecto. El peds.meta no se carga o los nombres difieren. Comprueba la línea data_file y el nombre en <Name>.
  • El ped no tiene cara o texturas blancas. Los ficheros .ytd o .ydd faltan, están en la carpeta incorrecta o renombrados. El .ymt necesita los nombres originales.
  • El recurso inicia pero el ped no puede invocarse. Un error tipográfico en el nombre de invocación. Debe ser igual a la entrada <Name> en peds.meta.
  • El juego falla o el streaming advierte. Los ficheros grandes y muchos peds usan memoria de streaming. Ver oversized assets.
  • El recurso no inicia. Una ruta en files no existe. Ver couldn't start resource.

Los coches siguen la misma idea del fichero de datos: ver cómo añadir coches addon.

Lista de verificación

Síntoma Solución
El ped no puede invocarse Usa el <Name> de peds.meta; ensure el recurso
El ped es invisible o por defecto Añade files y data_file 'PED_METADATA_FILE'; coincide nombres
Texturas blancas o faltantes Mantén los nombres de .ydd y .ytd como en el pack
El modelo se reinicia después de invocar Llama a SetPlayerModel después de que el script de aspecto o personaje termine
Las armas desaparecen después del cambio Devuélvelas después de SetPlayerModel
El recurso no inicia Comprueba que cada ruta en files existe

Respuestas rápidas

¿Qué nombre uso para invocar un ped addon?

El nombre del ped en peds.meta, que es también el nombre de sus ficheros .ydd, .yft, .ytd y .ymt. Si los ficheros se llaman mycop, usas mycop con joaat('mycop').

¿Por qué mi ped addon aparece como un ped por defecto o es invisible?

Normalmente el peds.meta no se carga, o el nombre en él no coincide con los nombres de ficheros. Comprueba la línea data_file 'PED_METADATA_FILE' y que los nombres coincidan.

¿Puedo usar un ped addon como mi propio personaje?

Sí, con SetPlayerModel, pero los scripts de aspecto o personaje de ESX y QBCore a menudo reinician el modelo al ped freemode. Necesitas establecerlo después de que se ejecuten, o usar una opción en el script de aspecto.

Scripts que evitan este problema

Parrots as PetsCatorce pájaros que van en tu hombro, vuelan contigo y vuelven cuando los llamas.Ver script →Drug Dealer AppVenta callejera como app de lb-phone: zonas, compradores NPC, niveles y avisos a la policía.Ver script →Quest CreatorUn editor visual de misiones y diálogos con NPC, nodo a nodo dentro del juego.Ver script →

Sigue leyendo