Mundo
Hora e clima pelo script de clima que estiver rodando, routing buckets do alocador do ai-core, trancas de portas e pontos de spawn de personagens salvos.
import { world, buckets, doors, characters } from "@aicore-fivem/lib/server";world
Hora e clima pelo ai-core, qualquer que seja o script de clima rodando (Renewed-Weathersync, av_weather, cd_easytime, qb-weathersync). Enquanto nenhum está rodando, as leituras respondem null e as mudanças respondem false.
world.getWeather
Lado: Servidor · Espera: não
world.getWeather(): string | nulllocal weather = aiLib.world.getWeather()Retorno o tipo de clima atual como o script de clima o informa (CLEAR, RAIN...), ou null enquanto nenhum está rodando.
const raining = ["RAIN", "THUNDER"].includes(world.getWeather() ?? "");world.setWeather
Define o clima.
Lado: Servidor · Espera: não
world.setWeather(type: Weather): booleanlocal ok = aiLib.world.setWeather(weather)Prop
Type
Retorno true quando definido, false enquanto nenhum script de clima está rodando ou o valor não é uma string.
import { addCommand, world } from "@aicore-fivem/lib/server";
import { isWeather } from "@aicore-fivem/shared";
addCommand("weather", { restricted: true, params: [{ name: "type", type: "string" }] }, (_source, { type }) => {
const upper = type.toUpperCase();
if (isWeather(upper)) world.setWeather(upper);
});world.getTime
Lado: Servidor · Espera: não
world.getTime(): { hour: number; minute: number } | nulllocal time = aiLib.world.getTime() -- { hour, minute } ou nilRetorno a hora do jogo, ou null enquanto nenhum script de clima está rodando.
const time = world.getTime();
const night = time !== null && (time.hour >= 22 || time.hour < 6);world.setTime
Define a hora do jogo.
Lado: Servidor · Espera: não
world.setTime(hour: number, minute?: number): booleanlocal ok = aiLib.world.setTime(hour, minute)Prop
Type
Retorno true quando definida, false enquanto nenhum script de clima está rodando.
world.setTime(12, 30);world.setBlackout
Liga ou desliga o apagão da cidade.
Lado: Servidor · Espera: não
world.setBlackout(on: boolean): booleanlocal ok = aiLib.world.setBlackout(on)Retorno true quando aplicado, false enquanto nenhum script de clima está rodando ou ele não tem apagão.
world.setBlackout(true); // a usina foi sabotadaworld.freezeTime
Para ou reinicia o relógio do jogo.
Lado: Servidor · Espera: não
world.freezeTime(on: boolean): booleanlocal ok = aiLib.world.freezeTime(on)Retorno true quando aplicado, false enquanto nenhum script de clima está rodando ou ele não consegue congelar o tempo.
world.setTime(20, 0);
world.freezeTime(true);buckets
Routing buckets (mundos separados: o interior de um apartamento, uma instância) do alocador do ai-core, para que dois scripts nunca compartilhem um. Nunca escolha números de bucket você mesmo (1000 + n). Sem equivalente em Lua: chame os exports do ai-core AcquireBucket(tag) / ReleaseBucket(id).
buckets.acquire
Pega um bucket livre para este recurso. Ele não tem população (sem peds e carros ambientes) e tem lockdown estrito de entidades.
Lado: Servidor · Espera: não
buckets.acquire(tag: string): numberProp
Type
Retorno o id do bucket.
import { buckets } from "@aicore-fivem/lib/server";
const bucket = buckets.acquire(`property:${propertyId}`);
SetPlayerRoutingBucket(String(source), bucket);buckets.release
Devolve um bucket quando os jogadores dele já saíram.
Lado: Servidor · Espera: não
buckets.release(id: number): booleanRetorno true quando liberado. Todo bucket de um recurso parado volta sozinho.
SetPlayerRoutingBucket(String(source), 0);
buckets.release(bucket);doors
Trancas de portas pela camada de trancas do ai-core, pelo id de porta do próprio script de trancas. Sem equivalente em Lua: chame os exports do ai-core SetDoorLocked, IsDoorLocked.
doors.setLocked
Tranca ou destranca uma porta.
Lado: Servidor · Espera: não
doors.setLocked(id: string, locked: boolean, by?: number): booleanProp
Type
Retorno true quando um script de portas a aceitou, false caso contrário.
if (outcome === "won") doors.setLocked("bank_vault", false, source);doors.isLocked
Lado: Servidor · Espera: não
doors.isLocked(id: string): boolean | nullRetorno true ou false, ou null quando desconhecido (sem tranca de portas, porta inexistente, ou o script não consegue informar no servidor).
if (doors.isLocked("bank_vault") === false) return fail("ALREADY_OPEN");doors.provider
Lado: Servidor · Espera: não
doors.provider(): string | nullRetorno o script de trancas que responde, ou null quando nenhum está rodando.
console.log(`doors through ${doors.provider() ?? "nothing"}`);characters
Personagens salvos pelo ai-core. Personagens carregados passam por online e pelos exports de jogador do ai-core.
characters.setOfflinePosition
Move o ponto de spawn de um personagem salvo (não carregado), por exemplo um corpo dormindo que foi carregado para longe. O ai-core o escreve assim que nenhum salvamento de carga ou descarga segura o personagem.
Lado: Servidor · Espera: não
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): booleanSem equivalente em Lua: chame o export do ai-core SetOfflinePosition(charId, position).
Prop
Type
Retorno true quando aceito. false quando o personagem está carregado ou os valores estão errados.
characters.setOfflinePosition(sleeperCharId, { x: 340.2, y: -1396.7, z: 32.5, heading: 50 });Empregos e serviços
Alertas da polícia, prisão, registros do MDT, médicos, reviver e curar, estresse, fome e sede, definições de empregos e gangues, horário nobre.
Celular e aparência
O celular do jogador pelo ai-core (números, e-mails, mensagens, notificações) e o visual salvo dos personagens pelo script de roupas que estiver rodando.