Jak dodać pracę na ESX Legacy: jobs i job_grades SQL, setjob

Dodaj niestandardową pracę do ESX Legacy z dwoma wstawkami SQL do jobs i job_grades, ustaw ją za pomocą /setjob, przeczytaj w skryptach z xPlayer.job i powiąż ją z kontem spółdzielni.

ESX nie ma pliku prac. Praca to wiersze w twojej bazie danych: jeden w jobs i jeden na rangę w job_grades. Ten przewodnik dodaje pracę, przyznaje ją graczowi, czyta ją w kodzie i powiązuje ją z kontem spółdzielni.

1. Wstaw pracę

Tabela jobs zawiera samą pracę, a job_grades zawiera jej rangi. Uruchom to w HeidiSQL, phpMyAdmin lub mysql CLI na bazie danych, którą używa twój serwer:

sql
INSERT INTO `jobs` (`name`, `label`) VALUES
  ('mechanic2', 'Mechanic');

INSERT INTO `job_grades` (`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`) VALUES
  ('mechanic2', 0, 'recruit',  'Recruit',  200, '{}', '{}'),
  ('mechanic2', 1, 'novice',   'Novice',   300, '{}', '{}'),
  ('mechanic2', 2, 'boss',     'Boss',     500, '{}', '{}');

Zasady, które mają znaczenie:

  • name to nazwa kodu: małe litery, bez spacji i takie same wszędzie. label to to, co widzą gracze.
  • job_name w job_grades musi równać się name pracy.
  • Stopień 0 musi istnieć, ponieważ nowi gracze pracy zaczynają od niego. Numeruj stopnie bez przerw.
  • salary jest wypłacana w każdym przedziale wypłaty, jeśli działają czeki.
  • Praca, która brakuje w job_grades, psuje /setjob i może wyrzucić błędy, gdy gracz się ładuje.

Kolumny mogą się nieco różnić między wersjami ESX, więc otwórz job_grades w swoim narzędziu i dopasuj listę kolumn do tabeli, którą widzisz. Jeśli wstawienie nie powiedzie się, błędy importu są omówione w Unknown column and table errors.

2. Uruchom ponownie, aby ESX wznowił prace

ESX czyta prace z bazy danych, gdy uruchamia się es_extended, dlatego nowy wiersz jest niewidoczny aż do tego czasu:

text
restart es_extended

Na żywym serwerze ponowne uruchomienie rdzenia może złamać skrypty, które od niego zależą, dlatego uruchom ponownie cały serwer w spokojnym czasie, jeśli nie masz pewności.

3. Przyznaj pracę graczowi

W grze lub z konsoli, jako admin:

text
/setjob <player id> mechanic2 0

Trzy wartości to identyfikator gracza, name pracy i numer stopnia. Jeśli się nie powiedzie, sprawdź pisownię w stosunku do tabeli jobs i czy stopień istnieje, a następnie patrz ACE permissions for admins, jeśli polecenie jest odrzucone.

4. Przeczytaj pracę w swoich skryptach

Na serwerze pobierz gracza i przeczytaj pracę:

lua
local ESX = exports['es_extended']:getSharedObject()

RegisterNetEvent('my_script:doWork', function()
    local xPlayer = ESX.GetPlayerFromId(source)
    if not xPlayer then return end

    local job = xPlayer.getJob()
    if job.name ~= 'mechanic2' then
        return xPlayer.showNotification('You are not a mechanic')
    end

    if job.grade < 1 then
        return xPlayer.showNotification('You need a higher rank')
    end

    -- allowed
end)

xPlayer.getJob() zwraca tabelę, a xPlayer.job zawiera te same dane. Pola, które będziesz używać najczęściej, to name, label, grade, grade_name i grade_label.

Aby zmienić pracę gracza z kodu:

lua
xPlayer.setJob('mechanic2', 1)

Jeśli ESX jest nil w twoim skrypcie, napraw to najpierw za pomocą ESX is nil: fixing esx:getSharedObject.

Na kliencie

lua
local ESX = exports['es_extended']:getSharedObject()

local function isMechanic()
    local data = ESX.GetPlayerData()
    return data.job and data.job.name == 'mechanic2'
end

RegisterNetEvent('esx:setJob', function(job)
    -- job changed while the player is online
    print(job.name, job.grade)
end)

Zdarzenie esx:setJob uruchamia się, gdy zmienia się praca, więc trzymaj własną kopię na bieżąco zamiast pytać każdą klatkę.

5. Konta spółdzielni z esx_society

Jeśli praca potrzebuje wspólnego konta bankowego, menu bossa lub magazynu, polega na esx_society. Praca ze spółdzielnią potrzebuje:

  • Stopnia bossa. Najwyższy stopień nosi nazwę boss, jak w wstawieniu powyżej. Menu bossa szuka tej nazwy.
  • Konta spółdzielni. Pieniądze spółdzielni mieszkają w tabeli addon_account na koncie zwanym society_ plus nazwa pracy, na przykład society_mechanic2. Dodaj dla niego wiersz i dla jego ekwipunku i datastore, jeśli twoja praca ich używa.
  • Rejestracja. Własny skrypt pracy rejestruje spółdzielnię z esx_society na serwerze, gdy się uruchamia, używając tej samej nazwy pracy.

To, gdzie rejestracja mieszka, zależy od skryptu, który uruchamia pracę. Sprawdź, jak robią to istniejące prace na twoim serwerze, takie jak policja lub praca mechanika, i dubluj je dla swojej.

Porada: jeśli menu bossa otwiera się puste lub pieniądze się nie przesuwają, nazwa konta spółdzielni nie pasuje do society_ plus dokładnie nazwa pracy.

Lista kontrolna

Objaw Naprawa
Praca nie znaleziona przez /setjob Uruchom ponownie es_extended po wstawieniu
Błędy, gdy gracz się ładuje Praca nie ma stopnia 0 w job_grades
Niezgodność nazwy job_name musi równać się name pracy, małe litery
Zła ranga opłacana Sprawdź salary tego grade
Brak menu bossa Nazwij najwyższy stopień boss i zarejestruj spółdzielnię
Pieniądze spółdzielni brakuje Utwórz society_<job> w addon_account z dokładną nazwą pracy

Szybkie odpowiedzi

Gdzie są przechowywane prace ESX?

W bazie danych: tabela jobs zawiera pracę, a tabela job_grades zawiera jej rangi z pensją dla każdej. Na ESX Legacy nie ma pliku prac do edycji.

Dlaczego /setjob mówi, że praca nie istnieje?

ESX ładuje prace, gdy uruchamia się es_extended. Uruchom ją ponownie po wstawieniu i sprawdź, czy nazwa pracy i numer stopnia istnieją w job_grades.

Jak uzyskać menu bossa dla mojej pracy?

Nazwij najwyższy stopień boss. esx_society sprawdza tę nazwę stopnia dla menu bossa, a także potrzebuje konta spółdzielni dla pracy.

Skrypty bez tego problemu

Advanced BoostingBoosting pojazdów z tabletu: kontrakty od klasy D do S+, ekipy i kolejka na żywo.Zobacz skrypt →Shop CreatorZbuduj sklep w niecałą minutę — właściciele, pracownicy, sejfy i napady w zestawie.Zobacz skrypt →Pawn Shop AppLombard między graczami wewnątrz lb-phone.Zobacz skrypt →

Czytaj dalej