THE ORB
Uruchamiam studio

Error: CPed::SetVariation: Invalid variation (slotId, drawblId, texId)

Skrypt próbował ubrać postać w rzecz, której ona nie ma — zwykle to zapisany strój z innego modelu postaci.

groupsHałas w konsoli, złe ubraniacodePotrzebny programista

Zrób najpierw to

Samo w sobie nieszkodliwe. Jeśli czyjś strój wygląda źle, jego zapisany wygląd pochodzi z innego modelu.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Coś poprosiło peda, żeby założył komponent ubrania albo teksturę, która dla jego modelu nie istnieje. Te trzy liczby to cały komunikat:

slotId — który slot komponentu (0 twarz, 1 maska, 3 ramiona, 4 nogi, 6 buty, 8 podkoszulek, 11 góra i tak dalej)

drawblId — który drawable wewnątrz tego slotu

texId — który wariant tekstury tego drawable'a

Gra odmawia i zostawia peda w tym, co miał na sobie. Nic się nie wywala, więc zapycha to konsolę, zamiast cokolwiek psuć — ale slot, który po cichu się nie stosuje, to zwykle problem z szafą albo z pedem addonowym, który warto naprawić, a nie wyciszyć.

Co to powoduje

Uszeregowane według tego, jak często są odpowiedzią.

  1. 1

    Drawable albo tekstura nie istnieje dla tego modelu

    Każdy model peda ma inną liczbę wariantów na slot. Liczba poprawna dla mp_m_freemode_01 może być poza zakresem dla mp_f_freemode_01 albo dla peda addonowego, a liczby między nimi się nie przenoszą.

  2. 2

    Dane ubrań zapisane dla innego modelu

    Gracz zmienił model (męski na żeński, freemode na peda addonowego), a stare dane wyglądu zostały zastosowane do nowego. To zdecydowanie najczęstsza wersja i odpala kilka takich naraz przy spawnie.

  3. 3

    Ubrania addonowe, które nie są strumieniowane

    Menu szafy wymienia drawable, którego serwer w rzeczywistości nie strumieniuje, więc indeks istnieje w konfiguracji, a nie w grze.

  4. 4

    Komponent zastosowany przed dokończeniem ładowania modelu

    Ustawianie wariantów na pedzie, którego model nie został w pełni wczytany, daje peda, który nie ma jeszcze wariantów do wyboru.

  5. 5

    Liczenie od złej podstawy

    GetNumberOfPedDrawableVariations zwraca LICZBĘ; poprawne drawable to od 0 do liczba-1. Przekazanie samej liczby to pomyłka o jeden i za każdym razem produkuje dokładnie to na ostatnim slocie.

Jak poznać, który jest twój

Zapytaj grę, co jest poprawne dla tego peda, tuż przed wywołaniem:

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

Jeśli liczba, którą ustawiasz, jest równa temu, co zgłasza, albo większa, jest poza zakresem dla tego modelu. Jeśli odpala się serią przy spawnie, to zapisane dane z innego modelu.

Gdzie szukać

Cokolwiek stosuje wygląd: zasób od ubrań albo od skórek oraz zapisany wiersz wyglądu tego gracza.

Jak to naprawić

Ogranicz wartości do tego, co model naprawdę ma, i pomijaj, zamiast wymuszać:

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

I zapisuj model razem z wyglądem, żeby dane jednego peda nigdy nie trafiły na innego:

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

Wciąż utknąłeś na własnym kodzie?

Ta strona mówi, co ten błąd zwykle oznacza. Wklej swoją konsolę do Server Fixera, a uszereguje wszystko, co w niej jest, i powie, co zrobić najpierw; a jeśli wolisz tego nie ruszać, ORBIE naprawi skrypt i odda ci zasób gotowy do wrzucenia.

bug_reportOtwórz Server Fixer

Dla tego rodzaju błędu GLB to FiveM Converter buduje zasoby, które wczytują się za pierwszym razem.

Błędy, które chodzą z tym w parze