THE ORB
Uruchamiam studio

Osiągnięty limit encji albo puli

W grze skończyło się miejsce na pojazdy, ludzi albo obiekty. Coś je tworzy i nigdy nie sprząta.

groupsNic nowego się nie zespawnujecodePotrzebny programista

Zrób najpierw to

Restart czyści to tymczasowo. Prawdziwym rozwiązaniem jest znalezienie skryptu, który przecieka.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

GTA ma twarde pule na pojazdy, pedy i obiekty. Kiedy jedna się zapełni, każde kolejne tworzenie tego typu zwraca 0, dopóki czegoś nie usuniesz. Typowa postać w konsoli to Ran out of object slots albo ostrzeżenie o pełnej puli.

W praktyce najciaśniej jest z pojazdami, a serwer, który stoi od kilku dni, zwykle trafia na to wcześniej niż taki, który dopiero został zrestartowany — i to jest wskazówka.

Co to powoduje

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

  1. 1

    Encje tworzone i nigdy nieusuwane

    Zdecydowanie najczęstsza przyczyna. Skrypt pracy spawnuje pojazd przy każdym użyciu i usuwa go tylko na ścieżce, na której wszystko poszło dobrze.

  2. 2

    Propsy spawnowane przy każdej interakcji

    Props przyczepiony podczas animacji, potem animacja zostaje anulowana, a props osierocony.

  3. 3

    Osierocone encje po wyjściu gracza

    Wszystko, co utworzył, zostaje, dopóki coś tego nie usunie.

  4. 4

    Wyciek w pętli

    Wątek, który tworzy, zanim sprawdzi, czy już czegoś nie ma.

Jak poznać, który jest twój

-- server
print(#GetAllVehicles(), #GetAllPeds(), #GetAllObjects())

Obserwuj przez godzinę. Liczba, która tylko rośnie, to wyciek, a typ, który rośnie, mówi ci, któremu skryptowi się przyjrzeć.

Gdzie szukać

Każde wywołanie Create* i to, czy każde ma odpowiadające DeleteEntity na każdej ścieżce, również tych błędnych.

Jak to naprawić

Usuwaj na każdej ścieżce wyjścia i sprzątaj to, co wyciekło:

local veh = spawnVehicle(...)
local ok = pcall(doTheJob, veh)
if DoesEntityExist(veh) then DeleteEntity(veh) end

-- i posprzątaj po wyjściu gracza
AddEventHandler('playerDropped', function()
    local src = source
    for _, veh in ipairs(GetAllVehicles()) do
        if NetworkGetEntityOwner(veh) == src then DeleteEntity(veh) end
    end
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 Skaner bezpieczeństwa oznacza obsługę zdarzeń, która do tego prowadzi.

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