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:
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:
nameto nazwa kodu: małe litery, bez spacji i takie same wszędzie.labelto to, co widzą gracze.job_namewjob_gradesmusi równać sięnamepracy.- Stopień
0musi istnieć, ponieważ nowi gracze pracy zaczynają od niego. Numeruj stopnie bez przerw. salaryjest wypłacana w każdym przedziale wypłaty, jeśli działają czeki.- Praca, która brakuje w
job_grades, psuje/setjobi 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:
restart es_extendedNa ż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:
/setjob <player id> mechanic2 0Trzy 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ę:
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:
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
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_accountna koncie zwanymsociety_plus nazwa pracy, na przykładsociety_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.


