Jobs¶
Verwaltet Jobzugehörigkeit, Dienstbereitschaft und Gehalts-Auszahlungen. Parallel zum Factions-System, jedoch für zivilberufliche Jobs.
Konfiguration¶
Jobs werden in Config.Jobs definiert:
Config.Jobs = {
mechanic = {
useDuty = true,
defaultDuty = true,
ranks = {
[0] = { name = 'Azubi', paycheck = 300 },
[1] = { name = 'Mechaniker',paycheck = 600 },
[2] = { name = 'Meister', paycheck = 900 },
}
},
unemployed = {
paycheck = 0,
useDuty = false,
}
}
API (Server)¶
Duty¶
cv.jobs.getDutyState(source) -- → boolean | nil
cv.jobs.setDuty(source, isOnDuty) -- → true | false, error
cv.jobs.toggleDuty(source) -- → true | false, error
Job-Wechsel¶
Rang¶
Gehalt & Rang-Info¶
cv.jobs.getPaycheckByRank(jobName, rank) -- → number
cv.jobs.getRankName(jobName, rank) -- → string
cv.jobs.getAllRanks(jobName)
-- → { [rankNum] = { rank, name, paycheck } }
Job-Config¶
Exports¶
exports['cv_framework']:SetDuty(source, true)
exports['cv_framework']:GetPaycheckByRank('mechanic', 1)
exports['cv_framework']:HandleJobChange(player, 'mechanic')
Paycheck-System¶
Identisch mit dem Factions-System: 60 Minuten akkumulieren → Gehalt auf Bankkonto buchen. Mit useDuty = true wird nur im Dienst gezählt.
Integrierter Command¶
Konflikt mit Factions
Sowohl jobs als auch factions registrieren /duty. Wird beides gleichzeitig genutzt, kann es zu Konflikten kommen — hier sollte eine einheitliche Lösung gewählt werden.
Events¶
AddEventHandler('cv_framework:player:characterLoaded', function(player)
-- Job-State wird automatisch initialisiert
end)
Unterschied zu Factions¶
| Jobs | Factions | |
|---|---|---|
| Config-Key | Config.Jobs |
Config.Factions |
| Player-Feld | player.job / player.job_rank |
player.faction / player.factionRank |
| State-Key | jobDuty |
factionDuty |
| Metadaten-Key | cv_jobs |
cv_faction |