AI Core
Monde et outilsai-doorlock

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.

TypeScript
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

Signature
SetDoorState(id: string, locked: boolean): void
Lua
exports['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

Signature
IsLocked(id: string): boolean
Lua
local 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 :

ExportCe 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.

Lua (client ou serveur)
local locked = GlobalState['door:mrpd_front'] == true

Events

NomTypeCe qu’il fait
ai-doorlock:togglecallback 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.

Sur cette page