AI Core
Veículosai-vehiclekeys

ai-vehiclekeys para desenvolvedores

Exports do servidor do ai-vehiclekeys, a API do qbx_vehiclekeys que ele responde, e seus eventos.

Para dar, tirar ou verificar chaves a partir do seu próprio script, use vehicleKeys.give(source, vehicle, purpose), vehicleKeys.remove e vehicleKeys.has da lib (servidor). Eles passam pela camada de chaves do ai-core e funcionam com qualquer script de chaves que o servidor rode. Os exports abaixo são o que essa camada chama enquanto o ai-vehiclekeys é o sistema de chaves ativo.

Todos os exports ficam no servidor, são síncronos e respondem tanto em ai-vehiclekeys quanto em qbx_vehiclekeys. Um veículo é um handle de entidade do servidor (número) ou uma placa (texto). As placas são comparadas normalizadas (espaços e maiúsculas não importam).

TypeScript
import { resourceExport, callExport } from "@aicore-fivem/lib/server";
const keys = resourceExport("ai-vehiclekeys"); // tipados: HasKeys, GiveKeys, RemoveKeys
// SetLockState e IsPlayerNearVehicle não são tipados: callExport("ai-vehiclekeys", "SetLockState", vehicle, "lock")

Exports do servidor

HasKeys

Se um jogador tem a chave de um veículo: como dono, como membro do emprego ou gangue dono, ou por uma chave dada nesta sessão.

Lado: Servidor · Espera: não

Signature
HasKeys(source: number, vehicle: number | string): boolean
Lua
local has = exports['ai-vehiclekeys']:HasKeys(source, vehicle)

Parâmetros

Prop

Type

Retorno

true quando o jogador tem a chave. false caso contrário, também para uma entidade que não existe.

Exemplo

import { resourceExport } from "@aicore-fivem/lib/server";

const keys = resourceExport("ai-vehiclekeys");

onNet("myscript:openTrunk", (netId: number) => {
  const source = globalThis.source;
  const vehicle = NetworkGetEntityFromNetworkId(netId);
  if (!keys.HasKeys(source, vehicle)) return;
  // ... abre o porta-malas
});

GiveKeys

Dá ao jogador uma chave para esta sessão. O jogador a mantém até sair do servidor ou trocar de personagem. Dar uma chave que o jogador já tem não faz nada.

Lado: Servidor · Espera: não

Signature
GiveKeys(source: number, vehicle: number | string): void
Lua
exports['ai-vehiclekeys']:GiveKeys(source, vehicle)

Parâmetros

Prop

Type

Retorno

Nada. Se o jogador estiver sentado naquele veículo neste momento, o cliente dele é avisado (ai-vehiclekeys:client:granted): o bloqueio do motor acaba e o motor liga.

RemoveKeys

Tira uma chave de sessão de um jogador. Chaves de posse (dono, frota de emprego ou gangue) não podem ser removidas: elas seguem o dono do veículo.

Lado: Servidor · Espera: não

Signature
RemoveKeys(source: number, vehicle: number | string): void
Lua
exports['ai-vehiclekeys']:RemoveKeys(source, vehicle)

Retorno

Nada.

SetLockState

Tranca ou destranca um veículo no servidor, sem nenhuma verificação de chave.

Lado: Servidor · Espera: não

Signature
SetLockState(vehicle: number, state: "lock" | "unlock" | boolean | number): void
Lua
exports['ai-vehiclekeys']:SetLockState(vehicle, 'lock')

Parâmetros

Prop

Type

Retorno

Nada. Uma entidade que não existe não faz nada.

IsPlayerNearVehicle

Se um jogador está a até 5 m de um veículo.

Lado: Servidor · Espera: não

Signature
IsPlayerNearVehicle(source: number, vehicle: number): boolean
Lua
local near = exports['ai-vehiclekeys']:IsPlayerNearVehicle(source, vehicle)

Retorno

true a até 5 m. false quando mais longe, ou quando algum dos argumentos não é um número.

Eventos

Os eventos próprios do ai-vehiclekeys são internos (callbacks de cliente entre o cliente e o servidor dele). Não os chame a partir de outros scripts.

NomeTipoO que faz
ai-vehiclekeys:checkcallback do cliente(netId) -> boolean: se o jogador tem uma chave, perguntado quando ele senta.
ai-vehiclekeys:toggleLockcallback do cliente(netId) -> { ok, locked? }: a tecla de trancar.
ai-vehiclekeys:giveNearestcallback do cliente(netId) -> { ok }: entrega as chaves ao jogador mais próximo.
ai-vehiclekeys:client:grantedservidor para cliente(netId): uma chave chegou enquanto ele estava sentado naquele veículo; o motor pode ligar.

Item usável

lockpick é registrado como item usável pela camada de inventário do ai-core. O item só é gasto quando quebra.

Nesta página