ai-doorlock pour les développeurs
Les exports serveur, l’API ox_doorlock, les clés GlobalState et l’event d’ai-doorlock.
Pour verrouiller ou déverrouiller des portes depuis votre propre script, utilisez doors.setLocked(id, locked, by?) et doors.isLocked(id) de la lib (serveur). Ils passent par la couche serrures d’ai-core et fonctionnent avec le script de serrures que fait tourner le serveur, quel qu’il soit. Les exports ci-dessous sont ce qu’appelle la couche tant qu’ai-doorlock est actif.
Une porte est désignée par son id du panneau : la clé d’enregistrement dans data/doors.json (affichée dans la liste des portes du panneau). Typé AiDoorlockServerExports dans @aicore-fivem/shared.
import { resourceExport } from "@aicore-fivem/lib/server";
const doorlock = resourceExport("ai-doorlock");Exports serveur
SetDoorState
Verrouille ou déverrouille une porte pour tout le monde, sans aucune vérification d’accès ni de distance.
Côté : serveur · Attend : non
SetDoorState(id: string, locked: boolean): voidexports['ai-doorlock']:SetDoorState(id, locked)Paramètres
Prop
Type
Retour
Rien. Un id qui n’est pas une porte du panneau ne fait rien.
Exemple
import { resourceExport } from "@aicore-fivem/lib/server";
const doorlock = resourceExport("ai-doorlock");
// Un confinement : verrouiller chaque porte listée du commissariat.
const STATION_DOORS = ["mrpd_front", "mrpd_back", "mrpd_back_gate"]; // id par défaut du panneau
export function lockdown(): void {
for (const id of STATION_DOORS) doorlock.SetDoorState(id, true);
}IsLocked
Indique si une porte est verrouillée en ce moment.
Côté : serveur · Attend : non
IsLocked(id: string): booleanlocal locked = exports['ai-doorlock']:IsLocked(id)Retour
true si elle est verrouillée. false si elle est déverrouillée ou si l’id n’est pas une porte du panneau.
API ox_doorlock
ai-doorlock fait un provide de ox_doorlock et répond à deux de ses exports serveur :
| Export | Ce qu’il fait |
|---|---|
setDoorState(id, state) | Comme SetDoorState : true ou 1 verrouille, toute autre valeur déverrouille. |
getDoor(id) | { id, name, state } (state 1 verrouillée, 0 déverrouillée ; name est le nom du panneau), ou nil pour un id inconnu. |
Les autres exports d’ox_doorlock ne sont pas pris en charge.
GlobalState
L’état de verrouillage de chaque porte est la clé GlobalState door:<id> (true = verrouillée), lisible sur le serveur et sur chaque client. Elle est retirée quand la porte est supprimée.
local locked = GlobalState['door:mrpd_front'] == trueEvents
| Nom | Type | Ce qu’il fait |
|---|---|---|
ai-doorlock:toggle | callback client | (id) -> { ok, locked } : un joueur change l’état d’une porte après que le serveur a vérifié la distance et l’accès. Interne ; limité à 2 par seconde par joueur, et à 500 ms par porte. |
ai-doorlock
Serrures de portes réglées dans le panneau en choisissant la porte dans le monde, avec accès par métier et par gang et un seul état de verrouillage pour tous.
ai-smallresources
De nombreuses petites fonctionnalités de gameplay, chacune avec son propre interrupteur dans le panneau, plus des téléportations, des ascenseurs, des sièges, des amarrages et Discord Rich Presence.