Форум Pawn.Wiki - Воплоти мечту в реальность!: MTA AMX - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

MTA AMX SA-MP скрипты на MTA:SA сервере Оценка: ***** 1 Голосов

#1
Пользователь офлайн   Nexius 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Изображение

MTA AMX - это слой совместимости, который позволяет запускать моды, фильтрскрипты и плагины для SA-MP 0.3.7 на серверах MTA:SA 1.6.
Этот проект можно представить как две составные части: MTA модуль на C/C++, который добавляет поддержку Pawn, и MTA ресурс на Lua, который реализует функции самп сервера.

<...>: Зачем это нужно?

  • Ради развлечения, само собой. Запустить полностью самповский мод с самповскими плагинами на том, что себя всегда противопоставляло сампу - это, как минимум, забавно.
  • Для проверки отказоустойчивости своих скриптов в необычных условиях. Поиск неопределённого поведения систем в новой среде, но при этом в очень лайтовых и не рутинных тестах, где просто играешь и постепенно исследуешь свой мод или фильтрскрипт заново.
  • Для большего погружения в текущие популярные GTA SA мультиплееры и поведение игры вне конкретного МП, при этом не вылезая за пределы павн скриптинга. Какие-то вещи, конечно, намеренно не различаются с сампом (и к этому приложены усилия), где важно обеспечить совместимость, но часть более мелких и не сильно влияющих штук ведёт себя всё ещё "по-мташному" (или не "по-самповски", если угодно).
  • Вдохновиться функционалом, который даёт этот слой совместимости в качестве дополнительных функций, которых у нас нет из коробки (в основном это какие-то клиентские возможности и системы из оригинальной игры, к которым самп не давал доступа). Причём это не просто что-то на бумаге, а вот прямо рабочие павн нативки, которые подключаются дополнительным инклудом в мод и сразу же готовы к использованию (легко визуализировать в игре, как именно оно бы работало, будь такое в сампе).


<...>: Что реализовано?

Большинство нативных и автовызываемых функций сампа. Легче перечислить то, что остаётся не сделанным, чем то, что уже есть.
Если всё-таки какая-то функция, которая нужна в вашем павн скрипте, отсутствует и не реализована - скрипт запустится, но эта функция не даст никакого эффекта при её вызове.

Как уже было замечено, помимо павн скриптов здесь поддерживаются и самповские плагины. Конечно при условии, что они не хакают память. То есть CrashDetect, MySQL, Streamer и прочие всеми используемые вещи прекрасно встают и работают.

Из бонусов, количество фильтрскриптов не ограничено, а плагины можно подгружать и во время работы сервера, а не только при его запуске.

Просто ради информации также стоит упомянуть, что есть возможность вызывать функции из Lua скриптов и наоборот (для большей интеграции между AMX и другими MTA ресурсами). Подробнее об этом можно почитать в официальном README.md файле.

<...>: Чего здесь нет?

  • Статуса "Production Ready". Это точно НЕ то, что можно назвать законченным продуктом, достаточно протестированным, стабильным и готовым к серьёзному использованию.
  • Исчерпывающей документации по всем новым добавленным функциям, помимо стандартных самповских. Да, они полностью копируют мташные функции, которые задокументированы на их wiki, но оригинальная документация имеет свою терминологию и примеры с lua кодом. Хотя всё старается быть интуитивным: большинство новых функций понятны просто по своему названию, а возвращаемые значения там тоже в общем стиле обычных самп нативов.
  • Некоторых аналогичных сампу функций и систем, добавление которых не зависит от слоя совместимости, а может быть сделано только в самой MTA, когда-нибудь. Такие случаи помечены как "depends on blue" в списке известных проблем в разделе Issues, в официальном репозитории.


<...>: Что здесь есть ещё, помимо основного функционала сампа?

Много чего интересного! Вы когда-нибудь хотели поменять уровень воды или оживить светофоры? А может добавить полноценную прокачку игрока со всеми навыками из одиночной игры? Так вот, MTA позволяет всё это делать своим встроенным функционалом, а потому помимо основных самп нативов также доступно и множество новых функций, которые вы просто используете в своём павн скрипте, будто бы кто-то добавил их в самп.

Список всех новых функций и пабликов довольно большой, его лучше сразу смотреть в a_amx.inc, но самые интересные категории перечислены здесь:

  • Изменение игровой скорости, уровня воды и волн
  • Детальное управление погодой (изменение уровня дождя, тумана, облаков)
  • Установка лимита FPS игрокам со стороны сервера
  • Изменение сигналов стандартных светофоров
  • Изменение состояния дверей стандартных гаражей
  • Отключение гличей (багов) игры вроде +C, перезарядки при скролле и т.д.
  • Включение отображения названий зон, эффекта размытия при скорости
  • Изменение размера любых объектов, отключение "разбиваемости" у некоторых из них
  • Изменение непрозрачности для игроков, транспорта и прочего
  • Изменение одежды CJ'я, его мускулатуры и массы
  • Изменение всех остальных характеристик персонажа для любого скина
  • Изменение стиля походки, наличия головы, состояния горения и кашля от удушья
  • Изменение ID'ов оружия, из которых можно стрелять, летая на джетпаке
  • Изменение вариантов модели транспорта, если модель транспорта имеет их несколько
  • Изменение направления движения поезда, его скорости и отсоединямости от рельсов
  • Эмуляция нажатия игроком кнопок стандартного управления
  • Показ или скрытие курсора, чата, таблиста, игровой карты
  • Отслеживание кликов курсором по игрокам, транспорту и т.д.
  • Отслеживание нажатия любой клавиши
  • Боты, в качестве альтернативы NPC и актёрам
  • Нативные маркеры, как альтернатива чекпоинтам


<...>: А чего точно не стоит ждать в будущем из того, что отсутствует сейчас?

  • В первую очередь NPC такими, какие они есть в сампе. Да, для кого-то мечта об "актёрах на максималках" (реализованных здесь ботами) сбывается и устраняет нужду в чём-то ином кроме них, но NPC всё-таки имеют ряд характерных фич: от записи и воспроизведения маршрутов со своей логикой в отдельных скриптах до реальной синхронизации с сервером не через других игроков.
  • Нативной реализации некоторых пабликов, которые вызываются напрямую от регулярной синхры игрока. Именно поэтому сейчас OnPlayerUpdate (под капотом этого проекта) сделан тупо как таймер и вызывается, если у игрока одно из нужных состояний. В MTA нет нужды нагружать сервер столь часто вызываемыми событиями, когда у них есть клиентский скриптинг, поэтому аналогов нашему OnPlayerUpdate, OnUnoccupiedVehicleUpdate или OnTrailerUpdate там нет.
  • Адаптации самповских мемхак плагинов, специфичных для самп сервера. Если ваш павн скрипт сильно завязан на использовании какого-то из этих мемхак плагинов, можете попробовать поискать альтернативы их функционалу в новых функциях, которые добавляет этот слой совместимости.


<...>: Стоп, но этот проект существует давно, разве нет?

До 2020 года он был в очень сыром состоянии. Далее были попытки его доработать, которые, судя по истории коммитов, продолжались до 2022 года. 1 апреля я решил по приколу затестить сие чудо, и после нескольких тестов словил мотивацию доработать его ещё более серьёзно. В данный момент он в СИЛЬНО лучшем состоянии, чем был когда-либо до этого. Можно сказать, что сейчас у этого всего второе дыхание.

<...>: Так стоит ли тратить на это время, если я не собираюсь никуда переходить?

Лично я воспринимаю этот проект как очень легкий доступ самп скриптеру к большой базе непривычных для нашего мультиплеера ситуаций, которые просто по кайфу тестить и открывать для себя саму игру немного с другой стороны (не с той, с которой открывает её самп все эти годы). Мне например было интересно вспомнить, что вообще-то газовые гранаты могут заставлять игроков кашлять и терять хп, или что транспорт с идом 590 это тоже валидный вагон поезда, который должен спавниться на рельсах и вести себя как поезд.

В общем, если вы тот разработчик, которому интересно изучать такие штуки и вы давно хотели попробовать что-то концептуально новое в знакомой среде своего мода - это точно стоит попробовать. Если же вы не заинтересованы в чём-либо, что напрямую не касается сампа, а своё время вы готовы тратить лишь на решение насущных практических задач, то как минимум приятно, что вы вообще дочитали до этого момента и ознакомились с MTA AMX хотя бы издалека.

Инструкцию по установке, настройке, интеграции с другими ресурсами, а также список изначальных авторов и всех, кто помогал в разработке этого проекта, можно посмотреть в его официальном репозитории.

И наконец, ссылка на официальный репозиторий, который здесь постоянно упоминается: https://github.com/multitheftauto/amx

Для быстрого сравнения пары скриншотов можете открыть каждый из них в новой вкладке (на одном из них SA-MP, на другом MTA).
Для более детального обзора можете посмотреть это видео (ссылка), в нём тестируется TDM мод GangWar.

mta-screen_2025-07-01_15-53-10.jpg [442,61К] sa-mp-000.jpg [464,03К]

amx emulator, mta amx, compatibility layer, samp to mta

Сообщение отредактировал Nexius: 25 декабря 2025 - 15:20

12

#2
Пользователь офлайн   M I S T E V 

  • Вставить ник
  • Раскрыть информацию
Сильно :yes: Попробую в ближайшее время
0

#3
Пользователь офлайн   Nexius 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
В данный момент модуль, который обеспечивает поддержку Pawn, распространяется только в виде 32-битного .dll для MTA сервера на Windows. Таким образом остаётся совместимость со всеми самповскими плагинами. И хотя 64-битный MTA сервер давно является стандартом, именно 32-битный сервер идёт предустановленным вместе с MTA клиентом, так что тестировать это довольно удобно уже сейчас.

Чтобы установить актуальный MTA AMX (модуль + ресурс):
1. Для начала скачайте клиент MTA SA с официального сайта. При стандартной установке у вас также появится сервер (по пути "C:\Program Files (x86)\MTA San Andreas 1.6\server")
2. В папке "server" должен находиться MTA Server.exe и подпапки "mods\deathmatch". Если вы их видите, качайте архив amx.zip из раздела релизов в репозитории MTA AMX, а затем распакуйте содержимое в текущую папку "server", в которой вы всё ещё находитесь. Таким образом вы устанавливаете amx модуль
3. Затем перейдя в "mods\deathmatch\resources\amx" вы должны увидеть, что папка пустая. Скачайте содержимое этой папки (она также называется "amx", так что это именно то, что нам нужно) и добавьте все её файлы и подпапки в свою пустую папку "amx". Таким образом вы устанавливаете актуальную версию amx ресурса
4. Теперь можно перейти обратно в "mods\deathmatch", где видно несколько xml файлов вроде основного конфига (mtaserver.conf) и других
5. Откройте mtaserver.conf в блокноте и добавьте ко всем модулям:

<module src="king.dll"/>

А также добавьте ко всем ресурсам, в самый конец:

<resource src="amx" startup="1" protected="0"/>

6. Теперь можно запустить MTA Server.exe. Если вы сделали всё правильно, то модуль и ресурс загрузятся при старте сервера и вы увидите сообщение, в котором будет говориться, что нашему ресурсу amx нужны некоторые права для работы. Выдаём их через консольную команду "aclrequest allow amx all" и на этом базовая установка завершена

Сообщение отредактировал Nexius: 01 января 2026 - 16:05

0

#4
Пользователь офлайн   Nexius 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
На днях была проделана некоторая работа над улучшением стабильности AMX ресурса при горячих перезагрузках без рестарта MTA сервера, множество мелких доработок после тестов с несколькими игроками и добавление парочки полезных возможностей для аналога самповских NPC - ботов, которые реализуют все эти новые функции:

native SetBotLookAt(botid, Float:X, Float:Y, Float:Z, time = 3000, blend = 1000);
native SetBotAmmo(botid, weaponid, ammo);
native GiveBotWeapon(botid, weaponid, ammo);
native ResetBotWeapons(botid);
native RemoveBotWeapon(botid, weaponid);


С полным списком текущих нативов и пабликов можно ознакомиться здесь.




Также некоторые скриншоты с примерами кода, которые выглядели интересно в процессе тестов:

1. Тестирование полупрозрачности ботов вместе с их неймтегами
Как выглядит в игре [Показать]

Pawn код [Показать]


2. Тестирование поездов с прицепкой разных типов вагонов
Как выглядит в игре [Показать]

Pawn код [Показать]

Сообщение отредактировал Nexius: 03 декабря 2025 - 23:30

6

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика