Fechaduras de portas
Tranque, destranque e leia portas pelo script de fechaduras que o servidor roda.
As chamadas de portas passam pelo ai-core, nunca pelos exports ou eventos próprios de um script de fechaduras (ai-doorlock incluído). O ai-core encaminha cada chamada ao script de fechaduras ativo: o que a configuração Door lock script do painel escolhe, ou o primeiro que estiver rodando (ai-doorlock, ox_doorlock, tgiann-doorlock e os outros da lista de compatibilidade).
Uma porta é identificada pelo id de porta do próprio script: o id que você vê na lista de portas dele (ai-doorlock: o id da porta no painel de administração; ox_doorlock: o número dela no banco de dados).
GetDoorlockSystem
O nome do recurso do script de fechaduras para o qual o ai-core encaminha.
Lado: Servidor · Espera: não · Lib: doors.provider()
GetDoorlockSystem(): string | nulllocal system = exports['ai-core']:GetDoorlockSystem() -- string ou nilParâmetros
Nenhum.
Retorno
string | null: o nome do recurso do script de fechaduras. null quando nenhum está rodando.
Exemplo
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Os ids de porta na sua config pertencem a um script de fechaduras: avise quando outro estiver rodando.
if (core.GetDoorlockSystem() !== "ai-doorlock")
console.log("myscript: door ids are written for ai-doorlock");SetDoorLocked
Tranca ou destranca uma porta.
Lado: Servidor · Espera: não · Lib: doors.setLocked
SetDoorLocked(id: string, locked: boolean, by?: number): booleanlocal ok = exports['ai-core']:SetDoorLocked('pacific_vault', false, source)Parâmetros
Prop
Type
Retorno
boolean: true quando o script de fechaduras aceitou a mudança. false quando nenhum script de fechaduras está rodando, a porta é desconhecida, o script recusou, id está vazio ou locked não é boolean.
Exemplo
import { onClientCallback, progressFor, resourceExport, near } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
import { Locale } from "common";
const core = resourceExport("ai-core");
const VAULT = { x: 253.9, y: 225.2, z: 101.9 };
onClientCallback("myscript:hackVault", { guards: [near(VAULT, 2)], lock: true }, async (source) => {
if (!core.HasItem(source, "laptop")) return fail("NO_LAPTOP");
if (!(await progressFor(source, { label: Locale("HACKING"), duration: 15000 }))) return fail("CANCELLED");
return core.SetDoorLocked("pacific_vault", false, source) ? { ok: true } : fail("DOOR_FAILED");
});IsDoorLocked
Se uma porta está trancada.
Lado: Servidor · Espera: não · Lib: doors.isLocked
IsDoorLocked(id: string): boolean | nulllocal locked = exports['ai-core']:IsDoorLocked('pacific_vault') -- true, false ou nilParâmetros
Prop
Type
Retorno
boolean | null: true trancada, false destrancada. null quando é desconhecido: nenhum script de fechaduras está rodando, a porta não existe, o script não consegue dizer no servidor ou id está vazio.
Exemplo
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
/** The heist may start only while the vault is still closed. */
export function vaultClosed(): boolean {
return core.IsDoorLocked("pacific_vault") !== false;
}Decida o que null significa para o seu recurso. O exemplo trata "desconhecido" como fechado, então a falta de um script de fechaduras nunca abre o assalto antes da hora.