THE ORB
Uruchamiam studio

Problemy z routing bucketami

Gracze albo obiekty są w osobnych kopiach świata, więc się nawzajem nie widzą.

groupsGracze niewidoczni dla siebiecodePotrzebny programista

Zrób najpierw to

Zwykle skrypt pracy, mieszkania albo minigry, który wsadził kogoś do instancji i nigdy go nie wyciągnął.

bug_reportWklej zamiast tego całą konsolę

Co to znaczy

Routing buckety to osobne instancje świata. Gracz w buckecie 1 nie widzi encji w buckecie 0 i na odwrót. Rzadko produkuje to linię błędu; objawem są encje, które "się nie spawnują", gracze niewidzialni dla siebie nawzajem albo pojazd, który istnieje na serwerze, a nie na kliencie.

Co to powoduje

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

  1. 1

    Encja została utworzona w innym buckecie niż gracz

    Encje tworzone przez serwer lądują w buckecie 0, chyba że powiesz inaczej. Gracz przeniesiony do bucketu na potrzeby instancjonowanej pracy albo mieszkania ich nie widzi.

  2. 2

    Gracz został przeniesiony i nigdy nie wrócił

    Crash, rozłączenie w środku instancji albo ścieżka skryptu, która ustawia bucket i nie ma przywrócenia. Gracz po respawnie zostaje w pustym świecie.

  3. 3

    Dwa skrypty zarządzają bucketami

    Skrypt mieszkań i skrypt minigry oba przydzielają numery bucketów, bez wspólnego rejestru, i w końcu się zderzają.

  4. 4

    Tryb lockdown encji

    SetRoutingBucketEntityLockdownMode ustawiony na strict w ogóle uniemożliwia klientom tworzenie encji w tym buckecie, co psuje spawn po stronie klienta w jego środku.

Jak poznać, który jest twój

-- server
print(GetPlayerRoutingBucket(src), GetEntityRoutingBucket(entity))

Różne liczby to cała diagnoza.

Gdzie szukać

Każde wywołanie SetPlayerRoutingBucket i SetEntityRoutingBucket oraz to, czy każde ma odpowiadające mu przywrócenie.

Jak to naprawić

Umieszczaj encje w buckecie gracza i zawsze przywracaj stan przy wyjściu:

local bucket = GetPlayerRoutingBucket(src)
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, h, true, false)
SetEntityRoutingBucket(veh, bucket)

AddEventHandler('playerDropped', function()
    SetPlayerRoutingBucket(source, 0)
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