Рекомендуемые скрипты
Как бесплатный скрипт попадает в раздел 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или из Luaexports['ai-core']:AddItem(source, 'bread', 2)); - топливо, двери, гаражи, телефон и вызовы полиции (
dispatch.alert) так же идут через свои слои.
- выдача и изъятие ключей от транспорта идут через слой ключей (lib
- Если у его категории есть слой, у него там есть адаптер. Скрипту инвентаря, ключей, одежды, топлива, дверных замков, гаража, телефона, диспетчерской, банка, счетов или медицины нужен адаптер в этом слое, чтобы другие скрипты до него доходили. Скрипту, который отвечает на 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 | Страница, где владелец получает скрипт. |
free | true. |
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.