ai-robberies для разработчиков
Ключи GlobalState ограбленных целей, метаданные дома, вызовы полиции и причины операций ai-robberies, а также его приватные события.
У ai-robberies нет экспортов. Места и цели являются данными панели, а награды, инструменты, вызовы и двери идут через AI Core. Ниже перечислено то, что может читать другой скрипт.
GlobalState rob:<targetId>
true, пока цель ограблена и ждёт задержки своего места, false после задержки. Пишет его сервер; читать может каждый клиент. При старте ресурса каждый ключ сбрасывается. Id целей являются id записей вкладки Targets (store_1_register_1, store_1_safe, vangelico_vitrine_1...).
Сторона: сервер и клиент (чтение) · Ожидание: нет
GlobalState[`rob:${targetId}`]: boolean | undefinedlocal emptied = GlobalState['rob:' .. targetId] == trueВозвращает
true, пока цель опустошена. false после окончания задержки, undefined / nil, если цель не грабили с момента старта ресурса.
Пример
Показать отметку «ограблено» в вашем собственном скрипте магазина, пока сейф пуст:
// клиент
const SAFE = "store_1_safe";
AddStateBagChangeHandler(`rob:${SAFE}`, "global", (_bag: string, _key: string, value: unknown) => {
const emptied = value === true;
// ... показать или скрыть вашу отметку
});
const emptiedNow = GlobalState[`rob:${SAFE}`] === true;Читайте эти ключи, но никогда не пишите в них: ими владеет ai-robberies и выставляет их по своим таймерам. Значение, записанное другим скриптом, рассинхронизирует проверки сервера и надписи у клиентов.
Метаданные персонажа robbery_house
Id места-дома, в котором находится персонаж (house_12), или null, когда он снаружи. ai-robberies выставляет его, когда грабитель вламывается, и очищает, когда тот уходит. Персонаж, который вышел из игры внутри дома, при следующей загрузке появляется у двери этого дома.
Вызовы полиции
Отправляются через dispatch.alert из lib, поэтому попадают в тот скрипт оповещений, который запущен:
| Когда | Код | Заголовок | Иконка | Приоритет |
|---|---|---|---|---|
| Первое ограбление за визит (по шансу вызова места) | 10-90 | Текст вызова об ограблении, с названием места в качестве сообщения и точкой вызова места в качестве координат | sack-dollar | high |
| Начинается работа с инкассаторской машиной | 10-90 | Текст вызова об инкассаторской машине, в позиции грабителя, спрайт блипа 67 красного цвета | truck | high |
Деньги
Украденные деньги идут на счёт из настройки панели Money account с причиной операции robbery:<placeId> (например, robbery:store_1).
Двери
Цель-дверь с id Doorlock door открывается через слой дверей AI Core (doors.setLocked из lib) и снова запирается, когда заканчивается задержка места.
Приватные события и колбэки
Собственный контракт скрипта (resource/common/robbery.ts). Сервер при каждом вызове проверяет число полицейских, расстояние, предметы и занятость цели. Они могут меняться между версиями: не вызывайте и не слушайте их из других ресурсов.
| Имя | Направление | Что передаёт |
|---|---|---|
ai-robberies:start | client callback | (targetId): начать грабить цель; отвечает { ok, entered? }. Сервер запускает полосу прогресса и выдаёт награду. |
ai-robberies:exit | client callback | (): выйти из дома, в котором находится игрок. |
ai-robberies:client:inside | server -> player | (placeId | null, to): игрок теперь внутри этого дома (или вышел); телепорт в to. |
ai-robberies:truckStart | client callback | (): оплатить работу с инкассаторской машиной у заказчика. |
ai-robberies:client:truckJob | server -> player | (netId, x, y, z): машина, которую нужно ограбить, и её задние двери. |
ai-robberies:truckPlant | client callback | (): заложить заряд (полоса прогресса запускает сервер; двери взрываются после запала). |
ai-robberies:client:truckOpen | server -> players near the truck | (netId): задние двери открыты. |
ai-robberies:truckLoot | client callback | (): забрать наличные (полосу прогресса запускает сервер). |
ai-robberies:client:truckEnd | server -> players who knew the truck | (): работа с инкассаторской машиной закончена. |
ai-robberies
Ограбления магазинов, банков, ювелирного магазина и домов плюс работа с инкассаторской машиной, всё настраивается в админ-панели и проверяется на сервере.
ai-drugs
Уличная продажа наркотиков незнакомцам, которая включается из радиального меню, и кусты марихуаны, которые растут со временем и сохраняются в базе данных.