AI Core

Рекомендуемые скрипты

Как бесплатный скрипт попадает в раздел Recommended scripts админ-панели.

На главной странице админ-панели есть раздел Recommended scripts: бесплатные скрипты, которые стоит поставить на сервер AI Core. Каждый показывается, только пока подходит серверу (не работает ни один скрипт телефона: рекомендуется телефон; скрипт уже работает: его карточка исчезает), а показанные ещё и один раз выводятся в консоль сервера через 15 секунд после старта. Владелец скрывает карточку её кнопкой X и возвращает её на вкладке General, карточка Recommendations.

Требования

  • Он бесплатный. На карточке есть метка Free.
  • Он работает через AI Core, а не через один фреймворк или один скрипт. Всё, что скрипт делит с другими скриптами, идёт через слои и экспорты AI Core, чтобы с ним работали все скрипты ai-*, мост ESX / QB / Qbox и остальные скрипты владельца. Например:
    • выдача и изъятие ключей от транспорта идут через слой ключей (lib vehicleKeys.give / vehicleKeys.remove, экспорты GiveVehicleKeys / RemoveVehicleKeys), никогда не через экспорты скрипта ключей;
    • применение внешности и перезагрузка скина идут через слой внешности (appearance.apply, appearance.reloadSkin);
    • предметы идут через слой инвентаря (inventory.addItem или из Lua exports['ai-core']:AddItem(source, 'bread', 2));
    • топливо, двери, гаражи, телефон и вызовы полиции (dispatch.alert) так же идут через свои слои.
  • Если у его категории есть слой, у него там есть адаптер. Скрипту инвентаря, ключей, одежды, топлива, дверных замков, гаража, телефона, диспетчерской, банка, счетов или медицины нужен адаптер в этом слое, чтобы другие скрипты до него доходили. Скрипту, который отвечает на API, уже читаемое слоем, нужно меньше: скрипт топлива с клиентскими экспортами в стиле LegacyFuel GetFuel(vehicle) / SetFuel(vehicle, level) — это одна строка в списке слоя топлива.

Слои и скрипты, которые они поддерживают: Слои и мост, Совместимость и по одной заметке на слой в docs/compat/ репозитория сервера.

Как попасть в список

Добавьте запись

Сделайте форк aifivem/ai-core и добавьте одну запись в список RECOMMENDATIONS в resource/server/recommendations/index.ts:

{
  id: "my-garbagejob",
  title: "ADMIN_REC_MY_GARBAGEJOB",
  desc: "ADMIN_REC_MY_GARBAGEJOB_DESC",
  url: "https://example.com/my-garbagejob",
  free: true,
  // показывается, пока скрипт не работает
  shows: (runs) => !runs("my-garbagejob"),
},
ПолеЧто в нём
idИмя ресурса скрипта. Скрытая карточка сохраняет его, поэтому это от 2 до 64 строчных букв, цифр, _ или -.
title, descЯзыковые ключи ai-core: название скрипта и одна строка о том, зачем он серверу.
urlСтраница, где владелец получает скрипт.
freetrue.
showsКогда показывается карточка. runs(resource) равно true, пока этот ресурс запущен и не останавливается. Условие может спросить и слой, как запись телефона: shows: () => phones.active === null (не работает ни один телефон).

AI Core заново проверяет условия, когда ресурс запускается или останавливается, когда переключается слой телефона и когда меняются настройки. Условие на другом слое также подключает переключение этого слоя к recommendations.refresh(), как конец файла делает для телефона (phones.onSwitch).

Добавьте два текста

В locales/en.json, рядом с остальными ключами ADMIN_REC_*:

"ADMIN_REC_MY_GARBAGEJOB": "My Garbage Job",
"ADMIN_REC_MY_GARBAGEJOB_DESC": "Garbage routes with pay per stop; items and vehicle keys go through ai-core's layers."

Только на английском: другие языки добавляются поверх en.json.

Добавьте адаптер, если у вашей категории есть слой

В том же pull request:

  • файл адаптера в папке adapters/ слоя: resource/server/<layer>/adapters/<resource>.ts, плюс resource/client/<layer>/adapters/<resource>.ts, если у скрипта есть только клиентский API. Скопируйте адаптер похожего скрипта;
  • его строку в списке адаптеров слоя: resource/server/<layer>/registry.ts или index.ts слоя, если у него нет registry.ts (phone, medical, prison, world).

Затем откройте второй pull request в aifivem/aicore-server, который добавляет скрипт в заметку слоя docs/compat/<layer>.md (например, vehicle-keys.md, phone.md): проверенная версия, статус и известные ограничения.

Откройте pull request

В ai-core выполните bun install, затем bun run typecheck, bun run lint и bun run build; все три должны пройти. Дайте pull request заголовок Conventional Commit на английском, например feat(recommendations): recommend my-garbagejob. Мейнтейнеры его проверяют: убеждаются, что скрипт бесплатный и работает через слои, затем сливают; карточка появится со следующим релизом ai-core.

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