THE ORB
Uruchamiam studio

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.

groupsSkrypt po cichu nic nie robicodePotrzebny programista

Zrób najpierw to

W skrypcie trzeba zmienić jedną linijkę. Poproś sprzedawcę o wersję pod ESX Legacy.

bug_reportWklej zamiast tego całą konsolę

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. 1

    Skrypt pisany pod ESX 1.1 uruchamiany na ESX Legacy

    Zdecydowanie najczęstsze. Tysiące opublikowanych skryptów wciąż tego używa.

  2. 2

    Wzorzec skopiowany ze starego poradnika

    Większość poradników FiveM w sieci jest starsza niż Legacy.

  3. 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 Fixer

Dla tego rodzaju błędu Konwerter skryptów przenosi zasób między ESX, QBCore i Qbox.

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