THE ORB
Iniciando o studio

Erro: CPed::SetVariation: variação inválida (slotId, drawblId, texId)

Um script tentou colocar num personagem uma roupa que ele não tem, normalmente dados de um traje salvo de outro modelo de personagem.

groupsBarulho no console, roupa erradacodePrecisa de um desenvolvedor

Faça isto primeiro

Sozinho é inofensivo. Se o traje de alguém está errado, a aparência salva dele é de outro modelo.

bug_reportMelhor colar o console inteiro

O que significa

Alguma coisa pediu a um ped para vestir um componente de roupa ou uma textura que não existe para o modelo dele. Os três números são a mensagem inteira:

slotId — qual slot de componente (0 rosto, 1 máscara, 3 braços, 4 pernas, 6 sapatos, 8 camiseta interna, 11 torso, e assim por diante)

drawblId — qual drawable dentro daquele slot

texId — qual variante de textura daquele drawable

O jogo se recusa e deixa o ped com o que já estava vestindo. Nada cai, então isso enche o console em vez de quebrar algo; mas um slot que não se aplica em silêncio costuma ser um problema do guarda-roupa ou de um ped adicionado que vale a pena consertar em vez de silenciar.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    O drawable ou a textura não existem para aquele modelo

    Cada modelo de ped tem uma quantidade diferente por slot. Um número válido para mp_m_freemode_01 pode estar fora do intervalo para um mp_f_freemode_01 ou para um ped adicionado, e os números não se transferem entre eles.

  2. 2

    Dados de roupa salvos para outro modelo

    O jogador trocou de modelo (de homem para mulher, de freemode para um ped adicionado) e dados de aparência antigos foram aplicados no novo. Essa é de longe a versão mais comum, e dispara vários destes de uma vez no spawn.

  3. 3

    Roupa adicionada que não é transmitida

    O menu de guarda-roupa lista um drawable que o servidor não transmite de verdade, então o índice existe na configuração e não no jogo.

  4. 4

    O componente foi aplicado antes de o modelo terminar de carregar

    Colocar variações num ped cujo modelo não tinha carregado por completo dá um ped que ainda não tem variações para escolher.

  5. 5

    Contar a partir da base errada

    GetNumberOfPedDrawableVariations devolve uma QUANTIDADE; os drawables válidos vão de 0 a quantidade-1. Passar a quantidade em si é um erro de um, e produz exatamente isso no último slot sempre.

Como saber qual é o seu

Pergunte ao jogo o que é válido para aquele ped, logo antes da chamada:

local ped = PlayerPedId()
print(GetEntityModel(ped),
      GetNumberOfPedDrawableVariations(ped, 11),
      GetNumberOfPedTextureVariations(ped, 11, drawable))

Se o número que você está colocando é igual ou maior do que o que ele informa, está fora do intervalo para este modelo. Se dispara em rajada no spawn, são dados salvos de outro modelo.

Onde olhar

O que aplica a aparência: o resource de roupa ou de skin, e a linha de aparência salva daquele jogador.

Como consertar

Ajuste contra o que o modelo tem de verdade, e pule em vez de forçar:

local function setComponent(ped, slot, drawable, texture)
    local maxDrawable = GetNumberOfPedDrawableVariations(ped, slot)
    if drawable >= maxDrawable then return end            -- 0..max-1
    local maxTexture = GetNumberOfPedTextureVariations(ped, slot, drawable)
    if texture >= maxTexture then texture = 0 end
    SetPedComponentVariation(ped, slot, drawable, texture, 0)
end

E guarde o modelo junto com a aparência, para que os dados de um ped nunca sejam aplicados em outro:

if saved.model ~= GetEntityModel(ped) then
    return applyDefaultAppearance(ped)
end

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o GLB to FiveM Converter constrói assets para streaming que carregam de primeira.

Erros que andam junto com este