esx:getSharedObject nigdy się nie odpala
Skrypt używa starego sposobu łączenia się z ESX, który współczesny ESX usunął. Nie ma błędu — po prostu po cichu nigdy nie działa.
Zrób najpierw to
W skrypcie trzeba zmienić jedną linijkę. Poproś sprzedawcę o wersję pod ESX Legacy.
Co to znaczy
TriggerEvent('esx:getSharedObject', cb) było przez lata sposobem, w jaki każdy skrypt ESX zdobywał obiekt rdzenia. ESX Legacy usunął to zdarzenie. Wywołanie nie zgłasza błędu — nikt nie nasłuchuje, więc callback po prostu nigdy się nie wykonuje, a ESX zostaje nil na zawsze.
Funkcja, która po cichu nigdy się nie inicjuje, jest gorsza niż błąd, i to najczęstsza przyczyna "skrypt nic nie robi i nic nie ma w konsoli".
Co to powoduje
Uszeregowane według tego, jak często są odpowiedzią.
- 1
Skrypt pisany pod ESX 1.1 uruchamiany na ESX Legacy
Zdecydowanie najczęstsze. Tysiące opublikowanych skryptów wciąż tego używa.
- 2
Wzorzec skopiowany ze starego poradnika
Większość poradników FiveM w sieci jest starsza niż Legacy.
- 3
Zasób zmigrowany w połowie
Jeden plik zaktualizowany do eksportu, drugi wciąż używa zdarzenia.
Jak poznać, który jest twój
grep -rn "getSharedObject" moj-skrypt/
Jeśli pojawia się jako TriggerEvent, to stary wzorzec. Jeśli ESX jest nil I w konsoli nie ma żadnego błędu, to niemal na pewno to.
Gdzie szukać
Początek każdego pliku klienckiego i serwerowego w zasobie.
Jak to naprawić
-- stare, na ESX Legacy nic nie robi
ESX = nil
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
-- aktualne
ESX = exports['es_extended']:getSharedObject()Eksport jest synchroniczny, więc linia pod nim może od razu używać ESX.
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 Konwerter skryptów przenosi zasób między ESX, QBCore i Qbox.