Fokus NUI się zaciął — gracz nie może się ruszyć
Menu się zamknęło, ale zatrzymało kontrolę nad myszą i klawiaturą, więc gracz nie może się ruszać ani pisać.
Zrób najpierw to
Gracz może się uwolnić, wchodząc ponownie. Skrypt trzeba naprawić, żeby przestało się to dziać.
Co to znaczy
SetNUIFocus(true, true) oddaje klawiaturę i mysz przeglądarce. Dopóki nie zostaną oddane z powrotem, gracz nie może się ruszać, pisać na czacie ani otworzyć czegokolwiek innego. Interfejs, który ukrył się wizualnie, ale nigdy nie zwolnił fokusu, zostawia grę niegrywalną, z niczym na ekranie.
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Ścieżka zamknięcia nie zwalnia fokusu
Interfejs jest ukrywany CSS-em albo zmianą stanu, a
SetNUIFocus(false, false)nigdy nie zostaje wywołane. - 2
Błąd przed zwolnieniem
Handler zamknięcia wywala się w połowie, a linia zwalniająca nigdy się nie wykonuje.
- 3
Dwa interfejsy otwarte naraz
Jeden się zamyka i zwalnia, drugi wciąż jest otwarty i przejmuje fokus z powrotem — albo odwrotnie, a ten wciąż otwarty fokusu nie ma.
- 4
Zasób zatrzymał się przy otwartym interfejsie
Restart zasobu sam z siebie nie przywraca fokusu.
- 5
Fokus przejęty, a strona nigdy się nie pojawiła
Fokus ustawiono przed wczytaniem strony, a strona potem padła. W połączeniu z pustym ekranem to najgorsza wersja: niewidzialne i niereagujące.
Jak poznać, który jest twój
Czy nadal może obracać kamerą? Fokus przejęty przez SetNUIFocus(true, true) blokuje jedno i drugie. Jeśli czat otwiera się na T, fokus nie jest trzymany i chodzi o coś innego.
Gdzie szukać
Każde wywołanie SetNUIFocus i to, czy każde true ma odpowiadające false na każdej ścieżce wyjścia.
Jak to naprawić
Zwalniaj w jednym miejscu i zrób to niemożliwym do pominięcia:
local function closeUi()
SetNUIFocus(false, false)
SendNUIMessage({ action = 'close' })
end
RegisterNUICallback('close', function(_, cb)
closeUi()
cb({})
end)
-- i siatka bezpieczeństwa
AddEventHandler('onResourceStop', function(res)
if res == GetCurrentResourceName() then SetNUIFocus(false, false) 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 FixerDla tego rodzaju błędu Loading Screen Creator buduje NUI działające bez ręcznie pisanego HTML-a.