amxts - плагины AMX Mod X на TypeScript

amxts - плагины AMX Mod X на TypeScript 0.3.0

Нет прав для скачивания
Версия Дата выпуска Скачивания Рейтинг
0.3.0 0 0,00 звёзд Оценок: 0
0.2.0 5 0,00 звёзд Оценок: 0
amxts 0.3.0 — большое обновление: модуль стал один, ReAPI больше не нужен, а плагины на TypeScript работают не медленнее Pawn.

📣 Главное

🧱 amxts — теперь один модуль
В 0.2 было две части: модуль amxts_amxx и плагин-хост amxts_host.amxx в plugins.ini, через который события игры шли в TypeScript. В 0.3 хоста нет: модуль сам слушает игру — команды игроков, сообщения, квары, лог, меню и хуки ReGameDLL/ReHLDS. Между игрой и вашим кодом больше нет Pawn.
Заодно amxts стал быстрее: на каждом замере тестового набора плагин на TypeScript работает как минимум так же быстро, как его двойник на Pawn, а на большинстве — быстрее.

🚫 ReAPI не нужен
То, что делали натив ReAPI rg_*, модуль делает сам — через API ReGameDLL, а на чистом HLDS через функции игры. Выдача и отбор оружия, смена команды, возрождение, модели, HUD, текстовые меню, game.restartRound() работают одинаково на:
  • ReHLDS + ReGameDLL, с ReAPI и без;
  • обычном HLDS от Valve с metamod-p.

🖥️ Сервер только загружает, собирает ваш компьютер
Сервер больше ничего не компилирует: он загружает готовые .aot. Собираете npx amxts build и заливаете — или amxts dev / build --deploy делают это сами, как .sma компилируют дома и заливают .amxx. Комплект для сервера стал в разы меньше.

🔗 Одна линия — один ABI
Плагин, собранный под 0.3.0, загружается на любом модуле 0.3: 0.3.1, 0.3.2 и дальше. Патч ядра не заставляет ничего пересобирать.

👀 Что нового

🔐 Секреты через env() — токен или ключ не попадают в код и в .aot, а читаются на сервере из addons/amxts/.env или окружения:
JavaScript:
const token = env("MYPLUGIN_TOKEN");          // обязательный: текст
const maxRecords = env("MYPLUGIN_MAX", 100);  // число
const debug = env("MYPLUGIN_DEBUG", false);   // вкл/выкл

💬 player.print и server.print
JavaScript:
player.print(`С возвращением, ${player.name}!`);
player.print("Раунд перезапущен", "center");
server.print("Смена карты через 30 секунд");

⌨️ Команды с несколькими именами, обработчик получает игрока:
JavaScript:
server.addCommand(["/cp", "cp"], (player) => player.print("Чекпоинт сохранён"));
А каждая команда игрока доходит до события "command", где preventDefault() её останавливает.

👁️ Что видит каждый игрок — событие "entityState": меняете то, что сервер шлёт одному игроку про одну сущность, и изменение видит только он.

🧩 Плагины, управляющие плагинами — server.plugins: список всех плагинов (TypeScript и Pawn), остановка, запуск, перезагрузка, вызов публичной функции Pawn-плагина.

💾 Storage с типами — new Storage<T>(name) хранит любой интерфейс в JSON и один раз забирает nVault-файл с тем же именем, так что при переносе с Pawn ничего не теряется.

📦 Файлы, загрузки и архивы — файлы читаются и пишутся байтами, fs.extract распаковывает zip: плагин может скачать карту и положить её на место.

🏃 Движение игрока — у событий движения есть event.touchCount и event.frameTime: хватает для jump stats без get_pmove из ReAPI.

🛠️ И ещё
  • трассировки: trace.line, player.aim (куда смотрит игрок), canSee;
  • сообщения по имени: player.send и server.send;
  • игрок: player.model, player.info, player.country, player.showMotd;
  • экран: player.screen.hint и HudLine.showAll;
  • выстрелы: остановить выстрел или показать его только части игроков;
  • у amxts dev панель: карта, игроки, FPS, состояние плагинов, клавиши пересборки, смены карты и рестарта раунда; amxts rcon шлёт команду серверу.

✅ Как обновиться
Сначала обновите команду пакетным менеджером проекта:
C-подобный:
npm install -D @amxts/cli@latest
Потом:
C-подобный:
npx amxts upgrade
Он переведёт @amxts/core на 0.3.0 и модули на их версии, перепишет код под изменения API, соберёт проект и поставит модуль 0.3.0 на сервер из AMXTS_SERVER. Что нужно проверить руками, он перечислит в конце. Плагин amxts_host.amxx и папки addons/amxts/tools/ и build/ старого комплекта больше не нужны.

Полный список изменений и таблица несовместимостей: релиз v0.3.0 на GitHub
Документация: amxts.github.io/docs
  • Нравится
Реакции: wopox1337
Назад
Верх