Jobs Docs
Présentation
Kairo Jobs gère les métiers : leurs grades, les salaires, la prise de service et les zones de travail. Tout se déclare dans un seul fichier de configuration.
Les salaires sont versés par Kairo Core à intervalle régulier, uniquement aux joueurs en service. Les zones (vestiaire, coffre, garage de service) sont créées automatiquement avec leurs points d'interaction.
Installation
- Télécharge l'archive depuis « Mes achats » et décompresse-la.
- Place le dossier kairo-jobs dans resources/[kairo]/ de ton serveur.
- Vérifie que kairo-core est démarré avant kairo-jobs dans ton server.cfg.
- Ajoute la ligne ensure kairo-jobs, puis redémarre le serveur. Les tables sont créées automatiquement au premier lancement.
# server.cfgensure kairo-coreensure kairo-jobs
Configuration
Chaque métier a un nom technique, un libellé, une liste de grades et un salaire par grade. Les zones utilisent des coordonnées vector3.
Le grade le plus élevé est considéré comme patron : il peut recruter, promouvoir et renvoyer depuis le menu du métier.
-- config/jobs.luaConfig.PayInterval = 15 -- minutesJobs.mechanic = { label = 'Mécanicien', grades = { 'Apprenti', 'Ouvrier', 'Chef' }, salary = { 120, 180, 260 }, zones = { duty = vector3(-347.3, -133.6, 39.0), stash = vector3(-339.8, -125.4, 39.0), },}
API
Les exports s'appellent avec exports['kairo-jobs']:Nom(...). Les fonctions serveur ne sont jamais accessibles depuis le client.
GetJob
serveurexports['kairo-jobs']:GetJob(source)
Renvoie le métier et le grade d'un joueur.
| Paramètre | Type | Description |
|---|---|---|
source | number | ID serveur |
Retour table { name, label, grade, gradeLabel, onDuty }
local job = exports['kairo-jobs']:GetJob(source)if job.name == 'mechanic' and job.onDuty then -- …end
SetJob
serveurexports['kairo-jobs']:SetJob(source, name, grade)
Attribue un métier et un grade à un joueur.
| Paramètre | Type | Description |
|---|---|---|
source | number | ID serveur |
name | string | Nom technique du métier |
grade | number | Index du grade (1 = le plus bas) |
Retour boolean
exports['kairo-jobs']:SetJob(source, 'mechanic', 1)SetDuty
serveurexports['kairo-jobs']:SetDuty(source, onDuty)
Met un joueur en service ou hors service.
| Paramètre | Type | Description |
|---|---|---|
source | number | ID serveur |
onDuty | boolean | true pour prendre son service |
Retour rien
exports['kairo-jobs']:SetDuty(source, true)CountOnDuty
serveurexports['kairo-jobs']:CountOnDuty(name)
Nombre de joueurs en service pour un métier. Pratique pour exiger un minimum de policiers avant un braquage.
| Paramètre | Type | Description |
|---|---|---|
name | string | Nom technique du métier |
Retour number
if exports['kairo-jobs']:CountOnDuty('police') < 2 then return player:notify('Pas assez de policiers', 'error')end
Événements
kairo-jobs:jobChanged
serveurLe métier ou le grade d'un joueur a changé.
AddEventHandler('kairo-jobs:jobChanged', function(source, job, previous)end)
kairo-jobs:dutyChanged
serveurUn joueur prend ou quitte son service.
AddEventHandler('kairo-jobs:dutyChanged', function(source, job, onDuty)end)
kairo-jobs:paid
serveurUn salaire vient d'être versé.
AddEventHandler('kairo-jobs:paid', function(source, job, amount)end)
Commandes
| Commande | Description |
|---|---|
/job | Affiche ton métier et ton grade. |
/setjob <id> <métier> <grade> | Change le métier d'un joueur (administration). |
FAQ
Peut-on avoir plusieurs métiers ?
Un joueur a un métier principal à la fois. Pour un second emploi, déclare un métier de type secondaire (option secondary = true) : il n'est pas payé mais donne accès à ses zones.
Le salaire est-il versé hors service ?
Non. Seuls les joueurs en service reçoivent leur paie.