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).
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
HasKeys(source: number, vehicle: number | string): booleanlocal 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
GiveKeys(source: number, vehicle: number | string): voidexports['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
RemoveKeys(source: number, vehicle: number | string): voidexports['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
SetLockState(vehicle: number, state: "lock" | "unlock" | boolean | number): voidexports['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
IsPlayerNearVehicle(source: number, vehicle: number): booleanlocal 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.
| Nome | Tipo | O que faz |
|---|---|---|
ai-vehiclekeys:check | callback do cliente | (netId) -> boolean: se o jogador tem uma chave, perguntado quando ele senta. |
ai-vehiclekeys:toggleLock | callback do cliente | (netId) -> { ok, locked? }: a tecla de trancar. |
ai-vehiclekeys:giveNearest | callback do cliente | (netId) -> { ok }: entrega as chaves ao jogador mais próximo. |
ai-vehiclekeys:client:granted | servidor 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.