Zum Inhalt

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

-- Job wechseln (setzt auf Rang 0, resettet Minuten)
cv.jobs.handleJobChange(player, jobName)

Rang

cv.jobs.getJobRank(charId)            -- → number | nil
cv.jobs.setJobRank(charId, rank)      -- → boolean

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

cv.jobs.getJobConfig(jobName)    -- → config table | nil

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

/duty [on|off]

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