AI Core
Referência da APIExports de cliente do ai-core

Jogador

Leia o personagem, o dinheiro, os empregos, o serviço e as gangues do jogador local, verifique se um personagem está carregado e leia as definições de empregos e gangues.

Estes exports leem o que o ai-core sabe sobre o jogador sentado neste jogo: o personagem, o dinheiro, os empregos e as gangues dele. O servidor envia esses dados ao próprio cliente do jogador uma vez quando o personagem carrega, e depois só os valores que mudam. Os dados de nenhum outro jogador chegam a este cliente.

Em TypeScript, use getPlayerData(key) e onPlayerData(key, handler) da lib em vez de chamar GetPlayerData repetidamente. Em Lua, use aiLib.playerData.get(key) e aiLib.playerData.onChange(key, handler). Eles leem o export uma vez e depois seguem cada mudança que o ai-core envia.

GetPlayerData

Retorna tudo o que o ai-core sabe sobre o personagem carregado do jogador local numa só tabela: personagem, dinheiro, empregos, serviço, o emprego principal, gangues, a gangue ativa e metadata. Use para ler os dados uma vez quando seu recurso inicia; siga as mudanças com onPlayerData (TS) ou aiLib.playerData.onChange (Lua).

Lado: Cliente · Espera: não

Assinatura
GetPlayerData(): AiPlayerData | null
Lua
local data = exports['ai-core']:GetPlayerData() -- table ou nil

Parâmetros

Nenhum.

Retorno

AiPlayerData enquanto um personagem está no mundo, null (nil em Lua) na tela de personagens, antes do primeiro personagem carregar e depois que o jogador voltou para a tela de personagens.

Prop

Type

Exemplo

resource/client/index.ts
import { getPlayerData, onPlayerData } from "@aicore-fivem/lib/client";

// Mostra um blip só da polícia enquanto o jogador está em serviço como policial.
let blip = 0;

function updateBlip(duty: string | null): void {
  if (duty === "police" && blip === 0) {
    blip = AddBlipForCoord(441.8, -982.0, 30.7); // Delegacia de Mission Row
    SetBlipSprite(blip, 60);
  } else if (duty !== "police" && blip !== 0) {
    RemoveBlip(blip);
    blip = 0;
  }
}

// Lê uma vez (a lib pede o GetPlayerData do ai-core por você) e depois segue cada mudança.
updateBlip(getPlayerData("duty") ?? null);
onPlayerData("duty", (duty) => updateBlip(duty));

Esta é a cópia do próprio jogador, para mostrar coisas na tela. Nunca decida nada em que o servidor precisa confiar (um pagamento, um item, acesso a um baú) a partir dela: o servidor verifica de novo com os próprios exports.

IsPlayerLoaded

Diz se um personagem está no mundo neste cliente. Use antes de iniciar qualquer coisa que precise de um personagem (um HUD, um loop de emprego) quando seu recurso pode iniciar depois que o jogador já carregou.

Lado: Cliente · Espera: não

Assinatura
IsPlayerLoaded(): boolean
Lua
local loaded = exports['ai-core']:IsPlayerLoaded() -- boolean

Parâmetros

Nenhum.

Retorno

boolean: true depois que o personagem foi colocado no mundo, false na tela de personagens, enquanto o jogador escolhe um ponto de spawn e depois que ele voltou para a tela de personagens.

Exemplo

resource/client/index.ts
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE } from "@aicore-fivem/shared";

const core = resourceExport("ai-core");

function start(): void {
  console.log("character ready, starting the job loop");
}

// O jogador pode ter carregado antes de este recurso iniciar (um restart): verifique primeiro, depois escute.
if (core.IsPlayerLoaded()) start();
on(CORE.clientPlayerLoadedEvent, start);

GetDefinitions

Retorna todos os empregos ou todas as gangues como o painel de administração os grava (rótulos, cargos e os outros campos que o painel edita). As pontes de framework usam isto para montar as tabelas de empregos de ESX / QB. Leia uma vez e depois siga o evento de cliente ai-core:client:definitions, que dispara para cada emprego ou gangue que o painel muda.

Lado: Cliente · Espera: não

Assinatura
GetDefinitions(file: "jobs" | "gangs"): Record<string, unknown> | null
Lua
local jobs = exports['ai-core']:GetDefinitions('jobs') -- table indexada pelo nome do emprego, ou nil

Parâmetros

Prop

Type

Retorno

Record<string, unknown>: um registro por emprego ou gangue, indexado pelo nome (police, ambulance). Os registros são os próprios dados do painel e não são verificados. null quando file não é nem "jobs" nem "gangs".

Exemplo

resource/client/index.ts
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE } from "@aicore-fivem/shared";

const core = resourceExport("ai-core");

// Uma cópia local de todos os empregos, sempre atualizada.
const jobs: Record<string, unknown> = { ...(core.GetDefinitions("jobs") ?? {}) };

on(CORE.clientDefinitionsEvent, (file: string, name: string, definition: unknown) => {
  if (file !== "jobs") return;
  if (definition === null) delete jobs[name];
  else jobs[name] = definition;
});

Para os nomes e rótulos dos cargos de um emprego ou gangue no servidor, use os exports de servidor do ai-core ou a lib do servidor; o servidor é o lado que verifica cargos.

Nesta página