Agency Docs
Standalone

Agency-Doorlock Exports & API

Der einfachste Weg, deine Stadt abzuschließen.

v1.1.7Kostenlos6 Seiten

01Client-Exports

ExportBeschreibung
ToggleNearestDoor()Schließt die Tür auf oder zu, an der der Spieler steht. Der Server prüft den Zugang genau wie bei der Taste E.
GetNearbyDoorId()Liefert die Nummer der Tür, an der der Spieler steht, oder nil.
GetAllDoors()Liefert alle Türen als { id, label, locked, static, leaves, access }. Die PIN ist nie dabei.
GetDoorCoords(doorId: number)Liefert die Position des ersten Türflügels als { x, y, z }, oder nil.

02Server-Exports

ExportBeschreibung
AddPlayerAccess(doorId: number, player: number|string)Gibt einem Spieler Zugang zu einer Tür. Wird in der Datenbank gespeichert und sofort an alle Spieler übertragen. Liefert true, sonst false und einen Grund. true, "unchanged", wenn der Spieler schon Zugang hatte.
RemovePlayerAccess(doorId: number, player: number|string)Nimmt den Zugang wieder weg. Wird sofort gespeichert und übertragen. Liefert true, sonst false und einen Grund. true, "unchanged", wenn es nichts zu entfernen gab.
HasPlayerAccess(doorId: number, player: number|string)true, wenn der Spieler auf der Spielerliste der Tür steht. Zugang über Job, Gang oder "everyone" zählt hier nicht.
GetPlayerAccess(doorId: number)Liefert eine Kopie der Spielerliste der Tür, oder nil, wenn es die Tür nicht gibt.
IsReady()false, solange die Türen nach einem Start noch aus der Datenbank laden, danach true.

03Events

NameSeiteBeschreibung
agency-doorlock:accessChangedServerWird auf dem Server ausgelöst, nachdem AddPlayerAccess oder RemovePlayerAccess eine Tür geändert hat. Argumente: doorId, identifier, granted (true / false). Mit AddEventHandler abhören.

+Gut zu wissen

Seit Version 1.1.7 hat Agency-Doorlock Server-Exports, mit denen deine eigene Resource einem Spieler Zugang zu einer bestehenden Tür geben und wieder nehmen kann, zum Beispiel ein Housing-Script, das Hausschlüssel vergibt. Jede Änderung wird in der Datenbank gespeichert und sofort an alle Spieler übertragen. Aufrufen kann die Exports nur Server-Code, der Spieler bekommt also nie Setup- oder Admin-Rechte: dein Script entscheidet, wer einen Schlüssel vergeben darf.

Beispiel aus einem Housing-Script
Prüfe in deinem eigenen Server-Code, ob der Spieler den Schlüssel vergeben darf, etwa ob ihm das Haus gehört. Dann rufst du exports['Agency-Doorlock']:AddPlayerAccess(doorId, zielServerId) auf. Zum Wegnehmen exports['Agency-Doorlock']:RemovePlayerAccess(doorId, 'ABC12345'). Beide liefern true bei Erfolg, sonst false und einen Grund.
Welchen Spielerwert du übergibst
Übergib die Server-ID eines Spielers, der online ist, als Zahl. Agency-Doorlock sucht die Kennung dann selbst. Für Spieler, die offline sind, übergibst du die gespeicherte Kennung als Text: die citizenid bei QBCore und QBox, den identifier bei ESX, die license bei Standalone.
Woher die Tür-ID kommt
doorId ist die Nummer aus der Türliste in /adoorlock. Türen aus Config.StaticDoors stehen in der config.lua und lassen sich zur Laufzeit nicht ändern, die Exports antworten dort mit false, "static_door".
Gründe für false
not_loaded (die Türen laden nach einem Start noch, vorher IsReady() prüfen), door_not_found, static_door, invalid_player, player_offline, player_not_loaded (online, aber noch kein Charakter geladen) und limit_reached (250 Spieler pro Tür). true, "unchanged" heißt, es gab nichts zu tun.

?Häufige Fragen

Braucht der Spieler, der Schlüssel vergibt, Admin-Rechte?

Nein. Die Exports kann nur ein Server-Script aufrufen. Dein Script prüft, wer einen Schlüssel vergeben darf, zum Beispiel der Hausbesitzer, und Agency-Doorlock speichert und überträgt ihn. /adoorlock bleibt auf das Recht aus Config.SetupPermission beschränkt.

Bleiben die Schlüssel nach einem Neustart erhalten?

Ja. Sie stehen in der Tabelle agency_doorlock, in derselben Spielerliste, die das Feld Players in /adoorlock bearbeitet. Admins sehen sie dort auch.

Muss ein Spieler mit Schlüssel noch die PIN eingeben?

Nein. Wer auf der Spielerliste der Tür steht, öffnet sie direkt, genau wie ein im Editor eingetragener Spieler.

Wie bemerkt mein Script eine Änderung?

Auf dem Server mit AddEventHandler('agency-doorlock:accessChanged', function(doorId, identifier, granted) end). Das Event kommt nach jedem erfolgreichen AddPlayerAccess oder RemovePlayerAccess.

Kommst du nach dieser Seite nicht weiter? Dann übernimmt unser Support.