THE ORB
Uruchamiam studio

cannot resume dead coroutine

Coś próbowało kontynuować zadanie, które już się skończyło albo już się wysypało. Prawie zawsze POWYŻEJ tego jest PRAWDZIWY błąd.

groupsSamo w sobie nicpersonMożesz to naprawić

Zrób najpierw to

Przewiń w górę i napraw błąd nad tą linijką; ten zwykle znika razem z nim.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Coś próbowało wznowić korutynę, która już się skończyła albo już się wywaliła. We FiveM to niemal zawsze środowisko zgłaszające skutek uboczny: korutyna umarła przez błąd w środku, a to jest DRUGI komunikat.

Co to powoduje

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

  1. 1

    Wcześniejszy błąd zabił korutynę

    Przewiń w górę. Nad tym jest prawdziwy błąd i to jego trzeba naprawić.

  2. 2

    Callback zapamiętany i wywołany dwa razy

    Callback oxmysql albo ox_lib wywołany po raz drugi — pierwsze wznowienie go zakończyło, drugie zastaje go martwym.

  3. 3

    Oczekiwanie w handlerze, który już wrócił

    MySQL.query.await wewnątrz callbacku, którego rodzic już się zakończył.

  4. 4

    Oddawanie sterowania poza wątkiem

    Wait() w zasięgu pliku albo w zwykłej funkcji wołanej spoza kontekstu wątku. FiveM zgłasza wtedy "attempt to yield from outside a coroutine".

Jak poznać, który jest twój

Popatrz na to, co jest NAD tą linią w konsoli. Jeśli jest tam jakikolwiek inny błąd, napraw najpierw tamten, a ten zwykle zniknie razem z nim. Jeśli to jedyny komunikat, oddajesz sterowanie gdzieś, gdzie nie ma korutyny.

Gdzie szukać

Ślad pod tym komunikatem i błąd nad nim.

Jak to naprawić

Wszystko, co czeka, musi być wewnątrz wątku:

-- źle: Wait w zasięgu pliku
Wait(1000)

-- dobrze
CreateThread(function()
    Wait(1000)
end)

Callbacki odpalają się raz — zabezpiecz się przed podwójnym wywołaniem:

local done = false
someLib.request(function(result)
    if done then return end
    done = true
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 Script Optimizer czyta skrypt i naprawia kod stojący za tym.

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