Come aggiungere un lavoro su ESX Legacy: SQL jobs e job_grades, setjob
Aggiungi un lavoro personalizzato a ESX Legacy con due inserimenti SQL in jobs e job_grades, impostalo con /setjob, leggilo negli script con xPlayer.job e collegalo a un account society.
ESX non ha un file di lavori. Un lavoro è righe nel tuo database: una in jobs, e una per grado in job_grades. Questa guida aggiunge un lavoro, lo assegna a un giocatore, lo legge nel codice e lo collega a un account society.
1. Inserisci il lavoro
La tabella jobs contiene il lavoro stesso, e job_grades contiene i suoi gradi. Esegui questo in HeidiSQL, phpMyAdmin o nella CLI mysql, sul database che il tuo server utilizza:
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, '{}', '{}');Le regole che contano:
nameè il nome del codice: minuscolo, nessuno spazio, e uguale ovunque.labelè ciò che i giocatori vedono.job_nameinjob_gradesdeve essere uguale alnamedel lavoro.- Il grado
0deve esistere, perché i nuovi giocatori del lavoro iniziano da esso. Numera i gradi senza spazi. salaryviene pagato a ogni intervallo di stipendio, se i tuoi pagamenti vengono eseguiti.- Un lavoro mancante da
job_gradesinterrompe/setjobe può lanciare errori quando un giocatore si carica.
Le colonne possono differire leggermente tra le versioni di ESX, quindi apri job_grades nel tuo strumento e abbina l'elenco delle colonne alla tabella che vedi. Se un inserimento fallisce, gli errori di importazione sono coperti in Errori di colonna sconosciuta e tabella.
2. Riavvia affinché ESX ricarichi i lavori
ESX legge i lavori dal database quando es_extended si avvia, quindi una nuova riga è invisibile fino ad allora:
restart es_extendedSu un server live, riavviare il core può rompere gli script che dipendono da esso, quindi riavvia l'intero server in un momento tranquillo se non sei sicuro.
3. Dai il lavoro a un giocatore
Nel gioco o dalla console, come amministratore:
/setjob <player id> mechanic2 0I tre valori sono l'id del giocatore, il name del lavoro e il numero del grado. Se fallisce, controlla l'ortografia rispetto alla tabella jobs e che il grado esista, quindi vedi Permessi ACE per amministratori se il comando viene rifiutato.
4. Leggi il lavoro nei tuoi script
Sul server, ottieni il giocatore e leggi il lavoro:
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() restituisce una tabella, e xPlayer.job contiene gli stessi dati. I campi che utilizzerai di più sono name, label, grade, grade_name e grade_label.
Per cambiare il lavoro di un giocatore dal codice:
xPlayer.setJob('mechanic2', 1)Se ESX è nil nel tuo script, correggi prima questo con ESX è nil: correzione di esx:getSharedObject.
Sul client
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)L'evento esx:setJob si attiva quando il lavoro cambia, quindi mantieni la tua copia aggiornata invece di chiedere ad ogni frame.
5. Account society con esx_society
Se il lavoro ha bisogno di un account bancario condiviso, un menu del boss o una stanza di stock, si basa su esx_society. Un lavoro con una society ha bisogno di:
- Un grado di boss. Il grado superiore è denominato
boss, come nell'inserimento sopra. Il menu del boss cerca quel nome. - Un account society. Il denaro della society vive nella tabella
addon_account, in un account chiamatosociety_più il nome del lavoro, ad esempiosociety_mechanic2. Aggiungi una riga per esso, e per il suo inventario e datastore se il tuo lavoro li utilizza. - La registrazione. Lo script del lavoro stesso registra la society con esx_society sul server quando si avvia, utilizzando lo stesso nome del lavoro.
Dove vive la registrazione dipende dallo script che gestisce il lavoro. Controlla come fa un lavoro esistente sul tuo server, come il lavoro di polizia o meccanico, e duplicalo per il tuo.
Suggerimento: se il menu del boss si apre vuoto o il denaro non si muove, il nome dell'account society non corrisponde a
society_più il nome del lavoro esattamente.
Lista di controllo
| Sintomo | Soluzione |
|---|---|
Lavoro non trovato da /setjob |
Riavvia es_extended dopo l'inserimento |
| Errori quando il giocatore si carica | Il lavoro non ha grado 0 in job_grades |
| Mancata corrispondenza del nome | job_name deve essere uguale al name del lavoro, minuscolo |
| Grado pagato errato | Controlla la salary di quel grade |
| Nessun menu del boss | Nomina il grado superiore boss e registra la society |
| Denaro society mancante | Crea society_<job> in addon_account con il nome esatto del lavoro |
Risposte rapide
Dove sono archiviati i lavori di ESX?
Nel database: la tabella jobs contiene il lavoro e la tabella job_grades contiene i suoi gradi con uno stipendio ciascuno. Non c'è un file di lavori da modificare su ESX Legacy.
Perché /setjob dice che il lavoro non esiste?
ESX carica i lavori quando es_extended si avvia. Riavvialo dopo l'inserimento e controlla che il nome del lavoro e il numero di grado esistano in job_grades.
Come ottengo il menu del boss per il mio lavoro?
Nomina il grado superiore boss. esx_society controlla quel nome di grado per il menu del boss, e ha anche bisogno di un account society per il lavoro.
Script senza questo problema
Advanced BoostingBoosting di veicoli dal tablet: contratti dalla classe D alla S+, crew e coda in tempo reale.Vedi script →
Shop CreatorCrea un negozio in meno di un minuto — proprietari, dipendenti, casseforti e rapine inclusi.Vedi script →
Pawn Shop AppUn banco dei pegni tra giocatori dentro lb-phone.Vedi script →