ai-exitsleeping para desenvolvedores
Exports do servidor e do cliente, eventos de hook e o formato do corpo dormindo do ai-exitsleeping.
O ai-exitsleeping tem um export do servidor, três exports do cliente e quatro eventos de hook locais (os hooks editáveis do script original). Nenhum é tipado em @aicore-fivem/shared: em TypeScript chame-os com callExport.
Exports do servidor
AddCreateCheck
Adiciona uma verificação que roda quando um jogador sai do jogo. Retorne false para não deixar corpo dormindo (um apartamento, uma zona de evento, uma prisão). Use quando seu script conhece lugares onde um corpo não deve ficar.
Lado: Servidor · Espera: não
AddCreateCheck(id: string, check: (source: number, charId: number, coords: { x: number; y: number; z: number; heading: number }) => boolean): voidexports['ai-exitsleeping']:AddCreateCheck(id, function(source, charId, coords) return true end)Parâmetros
Prop
Type
Retorno
Nada. A verificação é removida sozinha quando seu recurso para.
Exemplo
import { callExport } from "@aicore-fivem/lib/server";
// Sem corpos dormindo dentro da arena do evento (200 m ao redor do centro dela).
const ARENA = { x: -324.0, y: -1968.0, z: 21.6 };
callExport("ai-exitsleeping", "AddCreateCheck", "arena",
(_source: number, _charId: number, c: { x: number; y: number; z: number }) =>
Math.hypot(c.x - ARENA.x, c.y - ARENA.y) > 200,
);Para um lugar fixo, uma Hidden area no painel faz o mesmo sem código.
Exports do cliente
PlayerLoaded
Acorda o corpo do jogador local e começa a mostrar os corpos ao redor. Chame-o a partir de um script de spawn depois do spawn final dele, e só quando o Wake up on do painel for PlayerLoaded export (spawn script).
Lado: Cliente · Espera: não
PlayerLoaded(): voidexports['ai-exitsleeping']:PlayerLoaded()Retorno
Nada. Uma segunda chamada antes da próxima troca de personagem não faz nada.
SetHidden
Esconde todos os corpos dormindo neste cliente enquanto houver algum motivo ativo. Use enquanto o jogador está em um lugar onde os corpos ficariam estranhos (um interior shell, uma cutscene).
Lado: Cliente · Espera: não
SetHidden(reason: string, hidden: boolean): voidexports['ai-exitsleeping']:SetHidden('myshell', true)Parâmetros
Prop
Type
Retorno
Nada. Seus motivos são removidos quando seu recurso para.
Exemplo
import { callExport } from "@aicore-fivem/lib/client";
export function enterShell(): void {
callExport("ai-exitsleeping", "SetHidden", "shell", true);
}
export function leaveShell(): void {
callExport("ai-exitsleeping", "SetHidden", "shell", false);
}SetCarryBlocked
Esconde a opção de carregar neste cliente enquanto houver algum motivo ativo (suas próprias regras: um minigame, uma prisão).
Lado: Cliente · Espera: não
SetCarryBlocked(reason: string, blocked: boolean): voidexports['ai-exitsleeping']:SetCarryBlocked('minigame', true)Retorno
Nada. Mesmas regras de motivos que SetHidden. Carregar já é bloqueado em um veículo, enquanto caído e enquanto algemado.
Eventos de hook
Eventos locais (não enviados pela rede) que você pode escutar.
ai-exitsleeping:created
Um corpo dormindo foi criado para um personagem que saiu do jogo. Lado: Servidor.
Prop
Type
ai-exitsleeping:removed
Um corpo dormindo sumiu (acordou, expirou, foi desligado). Lado: Servidor. Argumento: charId: number.
ai-exitsleeping:positionChanged
A posição de um corpo mudou (carregado, levado em um veículo, colocado no chão). Lado: Servidor. Argumentos: charId: number, coords: { x, y, z, heading }.
ai-exitsleeping:client:pedSpawned
Um ped dormindo foi criado neste cliente. Lado: Cliente. Argumentos: ped: number (um ped local, não em rede), view: SleeperView.
// Servidor: registra no log todo corpo que aparece e desaparece.
on("ai-exitsleeping:created", (charId: number, view: { x: number; y: number; z: number }) => {
console.log(`character ${charId} fell asleep at ${view.x}, ${view.y}, ${view.z}`);
});
on("ai-exitsleeping:removed", (charId: number) => {
console.log(`character ${charId} woke up`);
});SleeperView
Prop
Type
Eventos internos
ai-exitsleeping:wake, area, client:area, look, startCarry, stopCarry, putInVehicle, takeOut ficam entre o cliente e o servidor dele; não os chame.