Zum Inhalt

Factions

Verwaltet Fraktionszugehörigkeit, Dienstbereitschaft und Gehalts-Auszahlungen. Basiert auf Config.Factions und speichert den State in character.metadata.


Konfiguration

Fraktionen werden in Config.Factions definiert:

Config.Factions = {
    lspd = {
        paycheck = 0,        -- globales Gehalt (überschrieben durch ranks)
        useDuty = true,      -- Dienststatus-System aktiv?
        defaultDuty = false, -- Standard-Dienststatus beim Login
        ranks = {
            [0]  = { name = 'Cadet',  paycheck = 500  },
            [1]  = { name = 'Rookie', paycheck = 800  },
            [3]  = { name = 'Officer',paycheck = 1200 },
            [12] = { name = 'Chief',  paycheck = 5000 },
        }
    },
    unemployed = {
        paycheck = 0,
        useDuty = false,
    }
}

Rang-Bereich

Gültige Ränge: 0–12. Rang 0 ist Standard.


API (Server)

Duty

-- Dienststatus lesen
cv.factions.getDutyState(source)       -- → boolean | nil

-- Dienststatus setzen
cv.factions.setDuty(source, isOnDuty) -- → true | false, error

-- Dienststatus umschalten
cv.factions.toggleDuty(source)        -- → true | false, error

Rang & Fraktion

-- Rang in DB setzen und live aktualisieren
cv.factions.setFactionRank(charId, rank)   -- → boolean

-- Fraktion wechseln (setzt auf Rang 0, resettet Minuten)
cv.factions.handleFactionChange(player, factionName)

Gehalt

-- Gehalt für Rang abfragen
cv.factions.getPaycheckForRank(factionName, rank)   -- → number

-- Rangnamen abfragen
cv.factions.getRankName(factionName, rank)           -- → string

-- Alle Ränge einer Fraktion
cv.factions.getAllRanks(factionName)
-- → { [rankNum] = { rank, name, paycheck } }

Fraktions-Config

cv.factions.getFactionConfig(factionName)   -- → config table | nil

Fraktions-Budget (experimental)

cv.factions.addFunds(factionName, amount)   -- → boolean
cv.factions.removeFunds(factionName, amount)-- → boolean
cv.factions.getFunds(factionName)           -- → number

Exports

Alle Funktionen sind auch als exports['cv_framework'] verfügbar:

local ok = exports['cv_framework']:SetDuty(source, true)
local pay = exports['cv_framework']:GetPaycheckForRank('lspd', 3)

Paycheck-System

Gehalts-Auszahlung läuft serverseitig im 1-Minuten-Takt. Nach 60 angesammelten Minuten wird das Gehalt auf das Bankkonto gebucht und eine Notification gesendet.

  • Fraktionen mit useDuty = true: Minuten werden nur gezählt, wenn duty = true
  • unemployed und Fraktionen ohne Rang-Config: kein Gehalt

Events

-- Wird ausgelöst wenn ein Charakter geladen wird
AddEventHandler('cv_framework:player:characterLoaded', function(player)
    -- Fraktions-State wird automatisch initialisiert
end)

Integrierter Command

/duty [on|off]

Schaltet den Dienststatus um. Nur für Fraktionen mit useDuty = true aktiv.


Fehler-Strings

Fehler Bedeutung
no_character Kein Charakter geladen
not_duty_faction Fraktion hat kein Duty-System