Как компилировать файлы sma

Обновлено: 06.07.2024

Сама компиляция sma файлов или как ещё называют компиляция sma плагинов / скриптов проходит в директории cstrike/addons/amxmodx/scripting , файл компилирующий sma(скрипты) называется compile.exe.

Процесс компиляции довольно прост.

Для того что бы скомпилировать нужным нам образом плагин Timeprojector (русифицировать, поменять координаты вывыда на экран) открываем его блокнотом Akelpad'ом изменяем его так, как нам нужно, сохраняемся (кодировку оставляем как есть, если русифицируем, то выбираем кодировку UTF-8 (65001) снимаем отметку BOM),

Так теперь мы изменили исходный sma файл (сохранили в нужной нам кодировке), далее перетаскиваем файл timeprojector.sma удерживая левую кнопку мыши на иконку файла compile.exe, происходит сама компиляция нашего уже изменённого timeprojector.sma, по окончании (Завершению) компиляции (Закрываем окно программы) скомпилированный готовый продукт помещается в директорию cstrike/addons/amxmodx/scripting/compiled с таким же именем (timeprojector), но с другим расширением (уже amxx) . В итоге у нас был только один timeprojector.sma, а теперь ещё и timeprojector.amxx (который далее закидывается в директорию cstrike/addons/amxmodx/plugins).

А теперь на примере:
Вот как выглядит стандартный плагин timeprojector:
CODE:
set_hudmessage(255,255,255,0.75,0.05,0, 1.0, 1.0, 0.1, 0.2, 13)
show_hudmessage(0,"Time remaining: %d:%02d^nNext map: %s",timeleft / 60, timeleft % 60,nextmap)
В игре он у нас отображается так:
Выводится в левом верхнем углу экрана
(Цвет шрифта: белый)
Так выглядит стандартный плагин

А вот тот же timeprojector после компиляции(с необходимыми нам изменениями):
CODE:
set_hudmessage(32,79,147,0.15,0.03,0, 1.0, 1.0, 0.1, 0.2, 13)
show_hudmessage(0,"Время до смены карты: %d:%02d^nСледующая карта: %s",timeleft / 60, timeleft % 60,nextmap)
В игре он у нас отображается так:
Выводится в правом верхним углу экрана
рядом с радаром, под надписью кол-во админов
(Цвет шрифта: небесного цвета)
Так выглядит перекомпилированный плагин

Именно amxx-файлы используются на сервере, без компиляции простой sma-файл не запустится.

Как выглядит код плагина в sma:


Такой код понятен человеку, даже с минимальными знаниями программирования можно вносить какие-то корректировки, настройки. В плагинах без кваров (конфигов) все настройки проводятся в исходном коде - На скриншоте видно некоторые настройки.

После компиляции содержимое выглядит так:


Это уже машинный язык, который даже не читается текстовым редактором и выглядит как рандомный набор букв, цифр, символов.

Но данный файл без проблем прочитает сам сервер и будет работать в игре.

Обратим внимание на версии компиляротов, т.к. amxmodx (сокр. amx) создан давно, он несколько раз обновлялся, на сегодняшний день чаще используют версию 1.8.2 или 1.9.0. Но имеются еще 1.8.1, 1.8.3 и разные его модификации.

Если на сервере стоит amx 1.9.0 - то старые плагины будут работать на нем, могут быть скомпилированы под новым компилятором, хоть и нередко бывают исключения.

Если же на сервере стоит amx ниже версии 1.9.0 -то плагины предназначенные под 1.9.0 уже не запустятся, т.к. нет поддержки новых функций.

Узнать на какой версии amx написан плагин можно из описания плагина. Либо пробовать компилировать на разных компиляторах.

Для удобства владельцам серверов лучше иметь 2 версии компилятора и использовать при необходимости.

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


  • В downloads версия amx 1.8.2
  • В dev builds - amx 1.9.0

2. Открываем архивы, переходим в папку \addons\amxmodx , вытаскиваем папку scripting на рабочий стол или свою диск



Архивы одинаковые, путь одинаковый, главное переименовать компиляроты по версиям, чтоб не путаться.

3. Заходим в распакованную папку


Видим исходники .sma стандартных плагинов amx. На них и покажем как компилировать.

4. Берем любой sma-файл и переносим его на compile.exe


5. Откроется cmd окно с информацией по компиляции


Done. - значит компиляция прошла успешно. Ошибок нет.

6. В папке компилятора появится папка compiled . В ней лежит наш amxx файл который уже можно установить на сервер, но это тема для другой статьи.


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

Читайте также: