Форум 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 (под капотом этого проекта) сделан тупо как таймер на 100 миллисекунд и вызывается, если у игрока одно из нужных состояний. В 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: 07 июля 2025 - 19:17

11

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

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

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

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Если кто-то наткнулся на эту тему с достаточными навыками в плюсах и компетентен в том, какие правки нужно вносить, чтобы собрать Pawn VM в 64-бит (не меняя pawn cell size, чтобы все текущие amx скрипты работали без изменений; 64-бит только для самого бинарника), то вы можете помочь проекту, предложив изменения для MTA модуля. Пока что он доступен только как 32-битный dll, и поэтому весь проект MTA AMX сейчас можно поднимать только на 32-битном MTA сервере, что по тамошним меркам не современно (64-битный сервер там давно уже стандарт).

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

Сообщение отредактировал Nexius: 10 июля 2025 - 21:33

0

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


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

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


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