AI Core
Справочник APIAI Core: серверные экспорты

Время и погода

Читать и задавать погоду и игровое время, блэкаут и замороженное время через тот скрипт погоды, который использует сервер.

Время и погода идут через ai-core, а не через собственные экспорты или события скрипта погоды. ai-core передаёт каждый вызов первому запущенному скрипту погоды: Renewed-Weathersync, av_weather, cd_easytime, затем qb-weathersync (ai-weathersync отвечает под этим именем). Все они следуют контракту qb-weathersync. Пока ни один не работает, каждый вызов отвечает null или false.

Чтобы приостановить синхронизацию в игре одного игрока (интерьер со своим светом, катсцена), используйте клиентскую сторону (PauseWorldSync, в библиотеке world.pauseSync); см. Клиентские экспорты.

GetWeather

Текущий тип погоды.

Сторона: сервер · Ожидание: нет · Библиотека: world.getWeather

Сигнатура
GetWeather(): string | null
Lua
local weather = exports['ai-core']:GetWeather() -- 'EXTRASUNNY', 'RAIN'... или nil

Параметры

Нет.

Возвращает

string | null: тип погоды заглавными буквами (EXTRASUNNY, CLEAR, RAIN, THUNDER...). null, когда ни один скрипт погоды не работает.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";

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

/** Street races pay more in the rain. */
export function raceBonus(): number {
  const weather = core.GetWeather();
  return weather === "RAIN" || weather === "THUNDER" ? 1.25 : 1;
}

SetWeather

Задаёт погоду для всех.

Сторона: сервер · Ожидание: нет · Библиотека: world.setWeather (принимает типизированные имена Weather)

Сигнатура
SetWeather(type: string): boolean
Lua
local ok = exports['ai-core']:SetWeather('RAIN')

Параметры

Prop

Type

Возвращает

boolean: true, когда скрипт погоды его принял. false, когда type не текст, скрипт отказал (неизвестный тип) или ни один скрипт погоды не работает.

Пример

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
import { isWeather } from "@aicore-fivem/shared";

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

addCommand("weather", { help: "Sets the weather", params: [{ name: "type", type: "string" }], restricted: true }, (_source, args) => {
  const type = args.type.toUpperCase();
  if (!isWeather(type)) return console.log("unknown weather type");
  core.SetWeather(type);
});

GetTime

Игровое время (внутриигровые часы).

Сторона: сервер · Ожидание: нет · Библиотека: world.getTime

Сигнатура
GetTime(): { hour: number; minute: number } | null
Lua
local time = exports['ai-core']:GetTime() -- { hour, minute } или nil

Параметры

Нет.

Возвращает

{ hour, minute } | null: час 0-23 и минута 0-59. null, когда ни один скрипт погоды не работает.

Пример

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

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

// Наркодилер продаёт только ночью (22:00 - 05:59 игрового времени).
onClientCallback("myscript:dealer", (source) => {
  const time = core.GetTime();
  const night = time !== null && (time.hour >= 22 || time.hour < 6);
  return night ? { ok: true } : fail("COME_BACK_AT_NIGHT");
});

SetTime

Задаёт игровое время для всех.

Сторона: сервер · Ожидание: нет · Библиотека: world.setTime

Сигнатура
SetTime(hour: number, minute?: number): boolean
Lua
local ok = exports['ai-core']:SetTime(12, 0)

Параметры

Prop

Type

Возвращает

boolean: true, когда скрипт погоды его принял. false, когда hour не число, скрипт отказал или ни один скрипт погоды не работает.

Пример

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

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

addCommand("noon", { help: "Sets the time to 12:00", restricted: true }, () => {
  core.SetTime(12, 0);
});

SetBlackout

Включает или выключает блэкаут в городе (всё искусственное освещение выключено).

Сторона: сервер · Ожидание: нет · Библиотека: world.setBlackout

Сигнатура
SetBlackout(on: boolean): boolean
Lua
local ok = exports['ai-core']:SetBlackout(true)

Параметры

Prop

Type

Возвращает

boolean: true, когда скрипт погоды его принял. false, когда у скрипта нет блэкаута, он отказал или ни один скрипт погоды не работает.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";

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

/** The power plant was sabotaged: 5 minutes of darkness. */
export function sabotagePowerPlant(): void {
  if (!core.SetBlackout(true)) return;
  setTimeout(() => core.SetBlackout(false), 5 * 60_000);
}

FreezeTime

Останавливает или снова запускает игровые часы.

Сторона: сервер · Ожидание: нет · Библиотека: world.freezeTime

Сигнатура
FreezeTime(on: boolean): boolean
Lua
local ok = exports['ai-core']:FreezeTime(true)

Параметры

Prop

Type

Возвращает

boolean: true, когда скрипт погоды его принял. false, когда скрипт не умеет замораживать время, отказал или ни один скрипт погоды не работает.

Пример

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

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

// Вечер мероприятия: всегда 21:00.
addCommand("eventnight", { help: "Freezes the clock at 21:00", restricted: true }, () => {
  core.SetTime(21, 0);
  core.FreezeTime(true);
});

На этой странице