Русское сообщество по скриптингу

Компиляция плагинов AMX Mod X

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Компиляция плагинов AMX Mod X

Сообщение DJ_WEST » 26 авг 2009, 10:55

Вместе с файлами AMX Mod X идет и компилятор. Обычно он находится в директории ..amxmodx/scripting/.

Чтобы откомпилировать .sma исходник нужно:
1. Для удобства поместить ваш .sma файл в директорию scripting.
2. Если с исходником идет файл(ы) .inc, то их нужно поместить в директорию scripting/include.
2. Мышкой переместить ваш .sma файл прямо на compile.exe.


(нажмите, чтобы увеличить)

3. Если компиляция прошла без ошибок, то скомпилированный .amxx файл будет лежать в директории scripting/compiled с тем же именем, что и у .sma файла.


(нажмите, чтобы увеличить)

Компиляцию можно сделать и через командную строку:
1. Запустить cmd и перейти в директорию scripting.
2. Использовать команду amxxpc <имя файла.sma> [опции], например, amxxpc admin.sma.
3. Если компиляция прошла без ошибок, то скомпилированный .amxx файл будет лежать в директории scripting/compiled с тем же именем, что и у .sma файла.

Список опций компилятора:
-A<число> - выделение байтов для сегментов данных и стека
-a - сохранить код ассемблера в отдельный файл
-C[+/-] - компактное кодирование выходного файла (по умолчанию=-)
-c<имя> - кодировка, к примеру, 1252 для Windows Latin-1
-Dпуть - путь к активной директории
-d0 - без символьной информации, без проверки во время выполнения
-d1 - [по умолчанию] проверки во время выполнения, без символьной информации
-d2 - полная отладочная информация и динамические проверки
-d3 - полная отладочная информация и динамические проверки, без оптимизации
-e<имя> - имя файла с ошибками
-H<hwnd> - windows окно, в которое следует отослать информацию при завершении компиляции
-i<имя> - путь к .inc файлам
-l - создать .lst файл (только предварительный процесс)
-o<имя> - установить имя выходного файла .amxx
-p<имя> - установить префикс для выходного файла
-r[имя] - написать отчет в консоль или в специальный файл


Существует также онлайн компиляция плагинов AMXX:
1. Вы должны зарегистрироваться, чтобы видеть ссылки.
2. Вы должны зарегистрироваться, чтобы видеть ссылки.
На данном компиляторе больше возможностей, например, можно откомпилить плагин от AMX Mod 0.9.9 и до AMX Mod X 1.8.1. И не мало важно, что в этом компиляторе есть дополнительные .inc файлы, в отличие от компилятора на официальном сайте, необходимые для компиляции многих плагинов, которые их используют.
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Компиляция плагинов AMX Mod X

Сообщение MustD1e » 14 июн 2010, 03:12

После компиляции на webcomp.ak-team.com, плагин весил чуть больше 1.5мб, а в amx писал invalid plugin.
Аватара пользователя
MustD1e
 
Сообщения: 108
Зарегистрирован: 12 фев 2010, 05:37
Благодарил (а): 38 раз.
Поблагодарили: 5 раз.

Re: Компиляция плагинов AMX Mod X

Сообщение Emp0wer » 22 авг 2010, 23:32

Возник такой вопросик: если плагины компилить с -d0 они будут меньше грузить серв? Вот заметил что скомпиленый zombie_plague40 с d1 занимает около 174кб, а с d0 около 93кб, тоесть уменьшаеться только занятие плагином памяти или его быстродействие?
Аватара пользователя
Emp0wer
 
Сообщения: 15
Зарегистрирован: 08 авг 2010, 14:51
Благодарил (а): 7 раз.
Поблагодарили: 5 раз.

Re: Компиляция плагинов AMX Mod X

Сообщение Lt.RAT » 28 авг 2010, 22:30

Может чуть подробней про ключи: Вы должны зарегистрироваться, чтобы видеть ссылки.

Ключем по умолчанию является d2 а не d1.
Впринципе сейчас d0 от d1 отличаются лишь проверками во время выполнения (опкоды BOUNDS, BREAK)

BOUNDS - проверка на выход индекса за границы массива (отключать иногда себе дороже - плагин может даже не падать, но работать неправильно (надо быть точно уверенным что нигде косяков с этим нет) )

BREAK - сигнализатор о том что очередная строчка кода из sma файла выполнена (так он может прокричать в какой строке кода произошла ошибка... Хотя символьной информации нет, поэтому и BREAK тут может уже и не быть - лень лезть проверять)


А еще АМХХ файл это всетаки контейнер пожатый зипом, и изменение одного байта "распакованного файла", может повлечь "сильное" (несколько кБ) изменение в размере упакованного.

ЗЫ по ключу d3 - он убирает множество мелких оптимизаций, что сильно увеличивает кол-во опкодов -> уменьшает быстродействие.
Аватара пользователя
Lt.RAT
 
Сообщения: 301
Зарегистрирован: 30 сен 2009, 01:44
Благодарил (а): 4 раз.
Поблагодарили: 151 раз.
Языки программирования: Counter-Strike 1.6

Re: Компиляция плагинов AMX Mod X

Сообщение PRoSToTeM@ » 11 авг 2011, 01:16

Как поменять директорию для скомпилированного файла?
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Компиляция плагинов AMX Mod X

Сообщение DJ_WEST » 11 авг 2011, 09:30

Как поменять директорию для скомпилированного файла?

Код: Выделить всё
amxxpc.exe "С:\test.sma" "-oC:\compiled\test.amxx"
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: Компиляция плагинов AMX Mod X

Сообщение PRoSToTeM@ » 11 авг 2011, 18:41

Я вот в Notepad++ встроил быструю компиляцию, есть такой вопрос как мне сформировать имя для выходного файла, т.е. у меня есть test.sma $(FILE_NAME), а нужно получить test.amxx.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Компиляция плагинов AMX Mod X

Сообщение PRoSToTeM@ » 11 авг 2011, 21:28

Сделал компиляцию в Notepad++ через NppExec таким скриптом:
[pawn]cd $(CURRENT_DIRECTORY)  
"Мой путь\amxxpc.exe" "$(FILE_NAME)" "-oМой путь.amxx" -; -(   [/pawn]
Но половину плагинов компилирует с ошибками:
[pawn]Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

mapsmenu
.sma(40) : error 001: expected token: ";", but found "new"
mapsmenu.sma(42) : error 001: expected token: ";", but found "new"
mapsmenu.sma(44) : error 001: expected token: ";", but found "new"
mapsmenu.sma(45) : error 001: expected token: ";", but found "new"
mapsmenu.sma(47) : error 001: expected token: ";", but found "new"
mapsmenu.sma(49) : error 001: expected token: ";", but found "new"
mapsmenu.sma(51) : error 001: expected token: ";", but found "public"
mapsmenu.sma(54) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(55) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(56) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(57) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(59) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(60) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(61) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(62) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(63) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(65) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(77) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(79) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(80) : error 001: expected token: ";", but found "}"
mapsmenu.sma(85) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(86) : error 001: expected token: ";", but found "}"
mapsmenu.sma(92) : error 001: expected token: ";", but found "switch"
mapsmenu.sma(97) : error 001: expected token: ";", but found "-identifier-"
mapsmenu.sma(99) : error 001: expected token: ";", but found "if"
mapsmenu.sma(102) : error 001: expected token: ";", but found "-identifier-"

Compilation aborted.
26 Errors.
Could not locate output file Мой путьmapsmenu.amx (compile failed). [/pawn]
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Компиляция плагинов AMX Mod X

Сообщение qsa » 16 авг 2011, 15:07

из amxx в sma как можно сделать?
Аватара пользователя
qsa
 
Сообщения: 12
Зарегистрирован: 08 авг 2011, 23:32
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Компиляция плагинов AMX Mod X

Сообщение fl0wer » 16 авг 2011, 15:42

Никак
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

След.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0