Comment ajouter un emploi sur QBCore : shared/jobs.lua, grades et /setjob
Ajouter un emploi personnalisé à QBCore ou QBox : la structure shared/jobs.lua avec defaultDuty, offDutyPay et grades, la commande /setjob, et lire Player.PlayerData.job.
Sur QBCore, un emploi est un bloc dans un fichier Lua, pas une ligne de base de données. Vous ajoutez le bloc, redémarrez le noyau, et définissez l'emploi sur un joueur. Ce guide montre la structure, la commande, et comment lire l'emploi dans le code, pour QBCore et QBox.
La structure
Ouvrez qb-core/shared/jobs.lua. Les emplois sont des entrées dans la table QBShared.Jobs, clé par le nom de l'emploi. Ajoutez le vôtre :
['mechanic'] = {
label = 'Mechanic',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Recruit', payment = 50 },
['1'] = { name = 'Mechanic', payment = 75 },
['2'] = { name = 'Boss', payment = 120, isboss = true },
},
},Ce que chaque partie signifie :
| Champ | Signification |
|---|---|
Clé (mechanic) |
Le nom de l'emploi utilisé dans le code et /setjob : minuscules, pas d'espaces |
label |
Le nom que les joueurs voient |
defaultDuty |
true si les joueurs commencent en service quand ils obtiennent l'emploi |
offDutyPay |
true si l'emploi paie même quand le joueur est en dehors des heures de service |
grades |
Les rangs, clés par leur niveau |
name |
Le nom d'affichage du rang |
payment |
La paie de ce rang à chaque paie |
isboss |
true marque le rang comme un rang de patron |
Deux règles :
- Les clés de grade sont des chaînes sur QBCore :
['0'],['1']. Commencez à'0'sans lacunes. - Regardez les emplois déjà dans le fichier, comme
police, et copiez leur forme. Certains emplois portent un champtypesupplémentaire que d'autres scripts utilisent pour les grouper, et le fichier montre ce que votre version supporte.
Attention : une virgule manquante ou une accolade manquante dans
jobs.luaempêche qb-core de charger, et tous les scripts qui en dépendent avec lui.
Redémarrer et définir l'emploi
Le noyau lit le fichier au démarrage :
restart qb-coreEnsuite, en tant qu'administrateur, dans le jeu ou la console :
/setjob <player id> mechanic 1Les valeurs sont l'ID du joueur, la clé de l'emploi et le numéro de grade. Si la commande est refusée, vous manquez de permissions d'administrateur : consultez permissions ACE pour les administrateurs.
Lire l'emploi dans les scripts
Sur le serveur :
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent('my_script:doWork', function()
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
local job = Player.PlayerData.job
if job.name ~= 'mechanic' then
return TriggerClientEvent('QBCore:Notify', src, 'You are not a mechanic', 'error')
end
if not job.onduty then
return TriggerClientEvent('QBCore:Notify', src, 'Go on duty first', 'error')
end
-- allowed
end)Player.PlayerData.job contient name, label, onduty, isboss, payment et une table grade avec le name et le level du rang. Pour le numéro de rang, utilisez job.grade.level.
Pour modifier l'emploi à partir du code :
Player.Functions.SetJob('mechanic', 1)Si QBCore est nil ici, consultez tentative d'indexer une valeur nil (global 'QBCore').
Sur le client
local QBCore = exports['qb-core']:GetCoreObject()
local PlayerData = {}
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
PlayerData = QBCore.Functions.GetPlayerData()
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate', function(job)
PlayerData.job = job
end)Lire GetPlayerData().job avant que le joueur ait chargé donne nil, alors attendez OnPlayerLoaded, et gardez l'emploi à jour avec OnJobUpdate.
Sur QBox
Le noyau de QBox est qbx_core, et le fichier des emplois est qbx_core/shared/jobs.lua. La structure est la même : une étiquette, defaultDuty, offDutyPay et grades. Ouvrez le fichier et suivez les entrées déjà en place, car le fichier de QBox peut différer dans les détails comme la façon dont les clés de grade sont écrites, et les nouvelles versions peuvent ajouter des champs.
Redémarrez qbx_core après la modification. Pour le code, la couche de compatibilité répond toujours à exports['qb-core']:GetCoreObject(), et l'export propre de QBox est :
local player = exports.qbx_core:GetPlayer(source)
if player then
print(player.PlayerData.job.name)
endMenu de patron et fonds
Un grade avec isboss = true n'est que le drapeau. Le menu qui permet au patron d'embaucher des gens et d'utiliser le compte de l'entreprise provient de votre ressource de gestion, qui a habituellement sa propre liste d'emplois à configurer. Si le menu du patron ne s'ouvre pas pour votre nouvel emploi, vérifiez le config de cette ressource pour le nom de l'emploi.
Problèmes courants
- Emploi non trouvé par
/setjob. Le noyau n'a pas été redémarré, ou la clé est mal orthographiée. - Le noyau échoue après la modification. Une erreur de syntaxe dans
jobs.lua. Lisez la première ligne rouge dans la console, et comment lire une erreur de script aide avec le fichier et la ligne. - La paie n'est pas reçue.
offDutyPay = falsesignifie que le joueur doit être en service, et l'intervalle de paie provient de la config du noyau.
Liste de contrôle
| Symptôme | Correction |
|---|---|
| Emploi non trouvé | Ajoutez-le à shared/jobs.lua et redémarrez qb-core ou qbx_core |
| Le noyau ne démarre pas | Erreur de syntaxe dans jobs.lua ; vérifiez les virgules et les accolades |
| Mauvais rang | Les clés de grade sont des chaînes commençant à '0' sur QBCore |
| Pas de paie hors service | Définissez offDutyPay = true ou allez en service |
| L'emploi est nil sur le client | Attendez QBCore:Client:OnPlayerLoaded |
| Pas de menu de patron | Définissez isboss = true et ajoutez l'emploi à la ressource de gestion |
Réponses rapides
Où les emplois QBCore sont-ils définis ?
Dans qb-core/shared/jobs.lua, comme des entrées de QBShared.Jobs. Sur QBox, le fichier est qbx_core/shared/jobs.lua.
Pourquoi /setjob dit que l'emploi n'existe pas ?
Le noyau lit le fichier quand il démarre. Redémarrez qb-core (ou qbx_core) après la modification, et vérifiez que le nom de l'emploi et le numéro de grade existent dans le fichier.
Qu'est-ce que isboss fait ?
Il marque un grade comme un grade de patron. Les menus de patron et les scripts de gestion vérifier ce drapeau pour décider qui peut embaucher, licencier et utiliser les fonds de l'entreprise.
Des scripts sans ce problème
Advanced BoostingDu boosting de véhicules piloté par tablette : contrats de classe D à S+, crews et file d’attente en direct.Voir le script →
Shop CreatorCréez un magasin en moins d’une minute — propriétaires, employés, coffres et braquages inclus.Voir le script →
Pawn Shop AppUn marché de prêt sur gage entre joueurs, directement dans lb-phone.Voir le script →