AI Core
Crime e corridasai-robberies

ai-robberies para desenvolvedores

As chaves de GlobalState dos alvos roubados, a metadata de casa, os alertas e motivos de registro do ai-robberies, e seus eventos privados.

O ai-robberies não tem exports. Lugares e alvos são dados do painel, e recompensas, ferramentas, alertas e portas passam pelo AI Core. O que outro script pode ler está listado abaixo.

GlobalState rob:<targetId>

true enquanto um alvo foi roubado e espera o tempo de espera do seu lugar, false depois do tempo de espera. O servidor escreve; todo cliente pode ler. Na inicialização do recurso, todas as chaves são zeradas. Os ids de alvo são os ids de registro da aba Targets (store_1_register_1, store_1_safe, vangelico_vitrine_1...).

Lado: Servidor e cliente (leitura) · Espera: não

Signature
GlobalState[`rob:${targetId}`]: boolean | undefined
Lua
local emptied = GlobalState['rob:' .. targetId] == true

Retorno

true enquanto esvaziado. false depois que o tempo de espera acabou, undefined / nil quando o alvo não foi roubado desde que o recurso iniciou.

Exemplo

Mostre uma marca de "roubado" no seu próprio script de loja enquanto o cofre estiver vazio:

// cliente
const SAFE = "store_1_safe";

AddStateBagChangeHandler(`rob:${SAFE}`, "global", (_bag: string, _key: string, value: unknown) => {
  const emptied = value === true;
  // ... mostre ou esconda sua marca
});

const emptiedNow = GlobalState[`rob:${SAFE}`] === true;

Leia essas chaves, nunca as escreva: o ai-robberies é dono delas e as define a partir dos próprios timers. Um valor escrito por outro script deixa as verificações do servidor e os rótulos dos clientes fora de sincronia.

Metadata de personagem robbery_house

O id do lugar de casa em que um personagem está (house_12), ou null quando está fora. O ai-robberies define quando o ladrão invade e limpa quando ele sai. Um personagem que saiu do jogo dentro de uma casa é colocado de volta na porta da casa no próximo carregamento.

Alertas da polícia

Enviados pelo dispatch.alert da lib, então chegam a qualquer script de alerta que estiver rodando:

QuandoCódigoTítuloÍconePrioridade
O primeiro roubo de uma visita (conforme a chance de alerta do lugar)10-90Texto de alerta de roubo, com o nome do lugar como mensagem e o ponto de alerta do lugar como coordssack-dollarhigh
Um trabalho de carro-forte começa10-90Texto de alerta de carro-forte, na posição do ladrão, sprite de blip 67 vermelhotruckhigh

Dinheiro

O dinheiro roubado vai para a Money account do painel com o motivo de registro robbery:<placeId> (por exemplo robbery:store_1).

Portas

Um alvo de porta com um id de Doorlock door é destrancado pela camada de portas do AI Core (doors.setLocked da lib) e trancado de novo quando o tempo de espera do lugar acaba.

Eventos e callbacks privados

O contrato próprio do script (resource/common/robbery.ts). O servidor verifica a contagem de policiais, a distância, os itens e as reservas a cada chamada. Eles podem mudar entre versões: não os dispare nem os escute a partir de outros recursos.

NomeDireçãoO que carrega
ai-robberies:startcallback do cliente(targetId): começa a roubar um alvo; responde { ok, entered? }. O servidor roda a barra de progresso e a recompensa.
ai-robberies:exitcallback do cliente(): sai da casa em que o jogador está.
ai-robberies:client:insideservidor -> jogador(placeId | null, to): o jogador agora está dentro desta casa (ou saiu); teleporta para to.
ai-robberies:truckStartcallback do cliente(): paga por um trabalho de carro-forte com quem dá o trabalho.
ai-robberies:client:truckJobservidor -> jogador(netId, x, y, z): o carro-forte a roubar e suas portas traseiras.
ai-robberies:truckPlantcallback do cliente(): planta a carga (barra de progresso rodada pelo servidor; as portas explodem depois do pavio).
ai-robberies:client:truckOpenservidor -> jogadores perto do carro-forte(netId): as portas traseiras estão abertas.
ai-robberies:truckLootcallback do cliente(): pega o dinheiro (barra de progresso rodada pelo servidor).
ai-robberies:client:truckEndservidor -> jogadores que conheciam o carro-forte(): o trabalho do carro-forte acabou.

Nesta página