ai-cityhall для разработчиков
Метаданные предметов-документов, которые пишет ai-cityhall (удостоверение личности, водительские права), как выдать документ из другого скрипта, и его приватные события.
У ai-cityhall нет экспортов. Работы, взятые в центре занятости, выставляются функциями работ ai-core, а документы являются обычными предметами инвентаря, поэтому другой скрипт работает с ними через AI Core.
Метаданные предмета-документа
Документ (id_card, driver_license или любой предмет из списка Documents) является одним уникальным предметом, метаданные которого содержат владельца. Поля такие же, как в qbx_idcard, поэтому скрипты, написанные для Qbox, читают их как есть.
Prop
Type
Как выдать документ из другого скрипта
Использование предмета показывает карточку, кто бы его ни выдал: ai-cityhall регистрирует каждый предмет-документ как используемый. Выдайте предмет с такими же метаданными, и он будет вести себя как купленный у стойки.
Сторона: сервер · Ожидание: нет
Пример
Скрипт полиции выдаёт новые водительские права после экзамена:
import { inventory, notify, online } from "@aicore-fivem/lib/server";
function giveLicense(source: number): boolean {
const c = online.character(source);
if (!c) return false;
const metadata = {
name: `${c.firstname} ${c.lastname}`,
firstname: c.firstname,
lastname: c.lastname,
birthdate: c.birthdate,
sex: c.sex,
nationality: c.nationality,
citizenid: c.citizenid,
};
if (!inventory.canCarryItem(source, "driver_license", 1, metadata)) {
notify(source, "No room in your inventory", "error");
return false;
}
return inventory.addItem(source, "driver_license", 1, metadata);
}ai-cityhall регистрирует как используемые только предметы из списка Documents в панели. Предмет, которого нет в этом списке, при использовании не показывает карточку.
Деньги
Документы оплачиваются через RemoveMoney из ai-core со счетов из панели, причина операции cityhall:<item> (например, cityhall:id_card).
Приватные события и колбэки
Собственный контракт скрипта (resource/common/hall.ts). Сервер при каждом вызове проверяет расстояние до мэрии. Они могут меняться между версиями: не вызывайте и не слушайте их из других ресурсов.
| Имя | Направление | Что передаёт |
|---|---|---|
ai-cityhall:offer | client callback | (hallId): отвечает { ok, jobs, documents }, то есть что предлагает эта мэрия. |
ai-cityhall:takeJob | client callback | (hallId, job): взять работу в центре занятости. |
ai-cityhall:buy | client callback | (hallId, item): купить документ. |
ai-cityhall:client:showCard | server -> each player near a shown document | (card): показать карточку на экране. |
ai-cityhall:client:showing | server -> the player showing | (): проиграть анимацию показа. |