ai-properties для разработчиков
Флаги GlobalState, метаданные, имена тайников, таблицы и внутренние события ai-properties.
У ai-properties нет экспортов. Другие скрипты могут читать три вещи, которые он хранит.
Флаг владения (GlobalState)
У каждого жилья с владельцем ключ GlobalState prop:<id> выставлен в true (например, prop:grove_1). Когда жильё продают, ключ удаляется (а не выставляется в false). Читается на сервере и на каждом клиенте.
// Клиент или сервер: владеет ли кто-нибудь Grove Street 1?
const owned = GlobalState["prop:grove_1"] === true;Жильё, в котором находится персонаж (метаданные)
Метаданные ai-core property содержат id жилья, в котором находится персонаж, или ничего, когда он снаружи. Каждый интерьер жилья работает в своём routing bucket, который берётся из распределителя bucket’ов ai-core, пока кто-то внутри.
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
export function isInsideProperty(source: number): boolean {
const data = core.GetPlayerData(source);
return typeof data?.metadata.property === "string";
}Тайники
Тайник жилья называется property_<id>_<owner charId> (например, property_grove_1_12). Он отдельный для каждого владельца: после продажи следующий владелец получает новое, пустое имя тайника. Размер берётся из слотов и веса тайника в панели.
Таблицы
| Таблица | Что хранит |
|---|---|
ai_properties_owned | Одна строка на жильё с владельцем: id персонажа-владельца и имя владельца. |
ai_properties_keys | Владельцы ключей для каждого жилья, с их именем на момент выдачи ключа. |
События
События ai-properties внутренние (его клиент и его сервер); не вызывайте их из других скриптов.
| Имя | Тип | Что делает |
|---|---|---|
ai-properties:mine | client callback | Жильё, которым игрок владеет или от которого у него есть ключ (снимок на сессию). Не больше 2 за 10 секунд. |
ai-properties:client:access | сервер к клиенту | (id, access): доступ игрока изменился ("owner", "key" или false). |
ai-properties:buy / enter | client callback | (id): купить у двери или войти. |
ai-properties:exit / stash / keys / giveKey / sell | client callback | Действия внутри жилья, в котором находится игрок. |
ai-properties:takeKey | client callback | (charId): забрать ключ обратно. |
ai-properties:client:inside | сервер к клиенту | (id | null, to): игрок теперь внутри этого жилья (или вышел из него); телепорт в to. |