API
Exports, State-Bags und ein Event. Nur der Server entscheidet.
State-Bags
Ob jemand im Dienst ist, liest du ohne Export, auf dem Server und auf jedem Client. Nur der Server schreibt sie. Schreibt ein Client seine eigenen, setzt der Server sie zurück.
Player(source).state['cs_aduty:duty'] -- the group name while on duty
Player(source).state['cs_aduty:hidden'] -- flying, invisible or spectating
Player(source).state['cs_aduty:frozen'] -- frozen by staffClient
IsOnDuty
Clientexports.cs_aduty:IsOnDuty() Gibt zurückboolean
GetGroup
Clientexports.cs_aduty:GetGroup() Die Gruppe, als die der Spieler im Dienst ist.
Gibt zurückstring | nil
Server
IsOnDuty
Serverexports.cs_aduty:IsOnDuty(source) Gibt zurückboolean
GetGroup
Serverexports.cs_aduty:GetGroup(source) Die Gruppe aus Config.Groups, frisch vom Framework gefragt, im Dienst oder nicht.
Gibt zurückstring | nil nil für jemanden, der nicht zum Team gehört
HasPerm
Serverexports.cs_aduty:HasPerm(source, perm) Ob die Gruppe ein Recht hat. Der Dienst wird nicht gefragt, dafür IsOnDuty dazu nehmen.
Gibt zurückboolean
if exports.cs_aduty:IsOnDuty(src) and exports.cs_aduty:HasPerm(src, 'revive') then ... endSetDuty
Serverexports.cs_aduty:SetDuty(source, on) In oder aus dem Dienst, als hätte der Spieler den Befehl getippt. In den Dienst braucht eine Gruppe, das Recht wird nicht gefragt.
Gibt zurückboolean true, wenn der Spieler danach im gewünschten Zustand ist
GetOnDuty
Serverexports.cs_aduty:GetOnDuty() Gibt zurücktable { source, group, since, name }[], since ist os.time() des Dienstantritts
Events
cs_aduty:dutyChanged
ServerAddEventHandler('cs_aduty:dutyChanged', function(source, onDuty, group) end) Jemand ging in oder aus dem Dienst, auch durch einen Disconnect.
AddEventHandler('cs_aduty:dutyChanged', function(src, onDuty, group)
exports.my_hud:SetAdminBadge(src, onDuty and group or nil)
end)Config.OnDutyStart und Config.OnDutyStop unten in der config.lua laufen auf dem Client dessen, der in oder aus dem Dienst geht. Der Platz für ein eigenes HUD.