Локальное компилирование плагинов

Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
Введение.
Для компилирования плагина Вам нужно поместить его исходник с разрешением .sma в папку scripting ( /amxmodx/scripting )
Если с исходником идет файл с разрешением .inc - помещаем его в папку include ( /amxmodx/scripting/include )


Компилирование на Windows


Первый способ - компилирование всех плагинов в директории scripting
Данный вариант скомпилирует все ваши sma файлы, которые лежат в папке scripting
  • Запускаем программу compile.exe и ждем завершения компилирования
  • Готовые файлы будут лежать в папке compiled ( /amxmodx/scripting/compiled )
all_plugins.gif

Второй способ - компилирование конкретного плагина
Если нужно скомпилировать какой-то отдельный плагин, тогда поступаем следующим образом:
  • Переносим нужный нам файл sma на иконку compile.exe
  • Готовый файл будет лежать в папке compiled ( /amxmodx/scripting/compiled )
solo_plug.gif

Третий способ - компилирование с помощью командной строки
  1. Находясь в папке scripting, нажать SHIFT + ПКМ в свободном месте директории и выбрать "открыть окно команд".
  2. 2139pDE.png
  3. Использовать команду amxxpc <имя файла.sma> [опции], например, amxxpc admin.sma.
  4. Если компиляция прошла без ошибок, то скомпилированный .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 [имя] - написать отчет в консоль или в специальный файл
Options:
-A<num> alignment in bytes of the data segment and the stack
-a output assembler code
-C[+/-] compact encoding for output file (default=-)
-c<name> codepage name or number; e.g. 1252 for Windows Latin-1
-Dpath active directory path
-d0 no symbolic information, no run-time checks
-d1 [default] run-time checks, no symbolic information
-d2 full debug information and dynamic checking
-d3 full debug information, dynamic checking, no optimization
-e<name> set name of error file (quiet compile)
-H<hwnd> window handle to send a notification message on finish
-i<name> path for include files
-l create list file (preprocess only)
-o<name> set base name of output file
-p<name> set name of "prefix" file
-r[name] write cross reference report to console or to specified file

Четвертый способ - компилирование с помощью notepad++

  1. Скачиваем сам notepad++ с оф. сайта
  2. Нам понадобится плагин NppExec
  3. Скачиваем его через Plugin Manager ( Плагины => Plugin Manager => Show Plugin Manager )
FEW1BZ9.png g1WRpyy.png
4. После установки NppExec, подтверждаем перезапуск notepad++​
5. Настроим наш NppExec для компилирования плагинов ( Плагины => NppExec => Execute )​
mKt1OjY.png
6. В появившемся окне надо указать путь для нашего компилятора​
Код:
cd $(CURRENT_DIRECTORY)
Код:

"C:\Users\Admin\Desktop\ReAMXX\pb\compile.exe" "$(FILE_NAME)"​

C:\Users\Admin\Desktop\ReAMXX\pb\ - это ваш путь до файла compile.exe, подставьте тут свой путь
W3jdjYx.png
7. Нажимаем Save... и указываем название нашего скрипта​
pe2r1bC.png
8. Снова Save и затем OK
9. Настройка скрипта завершена. Сделаем горячую клавишу для удобства.​
10. Открываем расширенные настройки ( Плагины => NppExec => Advanced Options )​
QdAVqf4.png
11. В появившемся окне находим Associated script и выбираем название нашего скрипта, который мы создали ранее​
12. Нажимаем Add/Modify и в поле Menu items должен появится наш скрипт​
qwhsQOn.png
13. Нажимаем ОК и перезапускам notepad++​
14. Заходим Опции => Горячие клавиши и выбираем вкладку Plugins Commands
15. Находим Execute... и Direct Execute Previous и сбрасываем их настройки ( снимаем галочки и выставляем None )​
bXPFGXp.png
16. В этом же окне находим наш скрипт и задаем ему клавишу активации ( у меня F6 )​
1C6xrm2.png
17. Теперь при нажатии клавиши F6, наш скрипт будет скомпилирован.​



Компилирование на Linux


Подразумевается, что мы работаем с терминалом и не имеем GUI

Для начала нужно попасть в нашу директорию с исходниками
Путь будет немного отличаться у каждого из-за названия своей учетной записи
Команда:
cd /home/user/server_dir/cstrike/addons/amxmodx/scripting
где user - имя вашего пользователя в системе, а server_dir - название папки, где находится сервер (возможно у вас файлы извлечены в корневую директорию пользователя, тогда этот шаг в адресе не нужен)

Выставляем права на исполнение:
chmod 0754 amxxpc compile.sh

Usage: pawncc <filename> [filename...] [options]
Options:
-A<num> - alignment in bytes of the data segment and the stack
-a - output assembler code
-C[+/-] - compact encoding for output file (default=-)
-c <name> - codepage name or number; e.g. 1252 for Windows Latin-1
-d0 - no symbolic information, no run-time checks
-d1 - [default] run-time checks, no symbolic information
-d2 - full debug information and dynamic checking
-d3 - full debug information, dynamic checking, no optimization
-e <name> - set name of error file (quiet compile)
-i <name> - path for include files
-l - create list file (preprocess only)
-o<name> - set base name of (P-code) output file
-p<name> - set name of "prefix" file
-r[name] - write cross reference report to console or to specified file
-S<num> - stack/heap size in cells (default=4096)
-s<num> - skip lines from the input file
-t<num> - TAB indent size (in character positions, default=8)
-v<num> - verbosity level; 0=quiet, 1=normal, 2=verbose (default=1)
-w<num> - disable a specific warning by its number
-E - treat warnings as errors
-X<num> - abstract machine size limit in bytes
-\ - use '\' for escape characters
-^ - use '^' for escape characters
-;[+/-] - require a semicolon to end each statement (default=-)
-([+/-] - require parantheses for function invocation (default=-)
sym=val - define constant "sym" with value "val"
sym= - define constant "sym" with value 0

Первый способ - компилирование всех плагинов в директории scripting
Данный вариант скомпилирует все ваши sma файлы, которые лежат в папке scripting
  • Запускаем скрипт командой ./compile.sh и ждем завершения компилирования.
  • Получаем отчет о выполненном задании и нажимаем Q, чтобы закрыть отчет
  • Готовые файлы будут лежать в папке compiled ( /amxmodx/scripting/compiled )
xwgZhAr.gif

Второй способ - компилирование конкретного плагина
Если нужно скомпилировать какой-то отдельный плагин, тогда поступаем следующим образом:
  • Запускаем скрипт командой ./amxxpc timeleft.sma и ждем завершения компилирования.
  • Готовый файл будет лежать в этой же папке ( /amxmodx/scripting )



Онлайн компилятор я не рассматриваю, потому что он не удобен из-за отсутствия кастомных директив ( .inc), которые требуются для работы вашего плагина.


Использовался материал с форума AGHL (KORD_12.7) и SA-MP (Slice)
 

Download all Attachments

Последнее редактирование модератором:
Сообщения
82
Реакции
83
Помог
5 раз(а)
Tranquillity, находясь в папке scripting (windows), нажать SHIFT + ЛКМ в свободном месте директори -> нажать "открыть окно команд", для быстрого перехода в cmd в эту папку. Думаю стоит добавить тоже. Не все знают.
 
Сообщения
1,536
Реакции
2,324
Помог
39 раз(а)
oxoTHuk, спасибо, добавил. Только там ПКМ используется.
Так же добавил инструкцию, как компилировать плагин при помощи Notepad++ под Windows.
 
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
подставьте тут свой путь
Я давненько себе подготовил вариант с авто-подстановкой пути.
Код:

cd $(CURRENT_DIRECTORY)
"$(CURRENT_DIRECTORY)\amxxpc.exe" "$(FILE_NAME)" "-o$(CURRENT_DIRECTORY)\..\plugins\$(NAME_PART).amxx"
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
Работающий конфиг билд системы для Sublime Text под линукс
Установка:
1. Заходим в меню Tools -> Builds System -> New Builds System
2. Вставляем конфиг ниже и сохраняем с именем Amxx.sublime-build (/path/to/hlds нужно заменить не свой)
3. Для компиляции жмем Ctrl+B
4. Проверяем файл

JavaScript:
{
"cmd": ["/path/to/hlds/cstrike/addons/amxmodx/scripting/amxxpc", "$file", "-o/path/to/hlds/cstrike/addons/amxmodx/plugins//$file_base_name"],
"file_regex": "(.*?)[(]([0-9]*)[)]",
"selector": "source.sma",
"working_dir": "/path/to/hlds/cstrike/addons/amxmodx/scripting/",
}
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
Можно еще добавить что если используют compile.exe для единичной компиляции то файл с исходным кодом должен быть в папке с .ехе файлом, иначе напишет вроде что не хватает прав.
 
Сообщения
13
Реакции
3
если есть такая возможность расскажите пожалуйста как компилировать на imac
 
Сообщения
496
Реакции
621
Помог
16 раз(а)
Пробовали через виртуалку? Parallels и.т.п.
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
VaRVaR, вроде amxmodx есть под Mac OS X. Я не проверял конешно, но по идеи там должен быть компилятор
 
Сообщения
13
Реакции
3
fantom, я нашел , но к сожалению не совсем понял как .... В этом и есть вся проблема...могу скинуть если надо ...
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
VaRVaR, так же как и на линуксе. Через терминал
 
Сообщения
16
Реакции
4
На маке не хочет работать, хоть и компилятор под мак. И файлы все на месте.
Права на файлы тоже не выставляются) Директория верная.
Код:
Last login: Tue Jan 15 22:57:39 on ttys000
MacBook-Air-Vladislav:~ vladislavmuzyka$ /Applications/amxmodx/scripting/
-bash: /Applications/amxmodx/scripting/: is a directory
MacBook-Air-Vladislav:~ vladislavmuzyka$ chmod 0754 amxxpc compile.sh
chmod: amxxpc: No such file or directory
chmod: compile.sh: No such file or directory
MacBook-Air-Vladislav:~ vladislavmuzyka$
 

Download all Attachments

Сообщения
432
Реакции
410
Помог
14 раз(а)
ru9art, amxxpc.dylib есть в папке с компилятором?
 
Сообщения
432
Реакции
410
Помог
14 раз(а)
ru9art, покажите ls -la из папки scripting
 
Сообщения
16
Реакции
4
voed,
MacBook-Air-Vladislav:~ vladislavmuzyka$ ls -la /Applications/amxmodx/scripting
total 1104
drwxr-xr-x@ 29 vladislavmuzyka admin 928 15 янв 17:30 .
drwxr-xr-x@ 14 vladislavmuzyka admin 448 15 янв 17:28 ..
-rw-r--r--@ 1 vladislavmuzyka admin 10244 15 янв 17:44 .DS_Store
-rwxr-xr-x@ 1 vladislavmuzyka admin 18411 10 сен 17:09 admin.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 11248 13 сен 05:47 adminchat.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 35772 10 сен 17:09 admincmd.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 5367 10 сен 17:09 adminhelp.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 1711 10 сен 17:09 adminslots.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 15504 10 сен 17:09 adminvote.sma
-rwxrwxrwx@ 1 vladislavmuzyka admin 71368 18 дек 01:20 amxxpc
-rwxrwxrwx@ 1 vladislavmuzyka admin 198232 18 дек 01:20 amxxpc32.dylib
-rwxr-xr-x@ 1 vladislavmuzyka admin 1271 10 сен 17:09 antiflood.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 12798 10 сен 17:09 cmdmenu.sma
-rwxrwxrwx@ 1 vladislavmuzyka admin 467 10 сен 17:09 compile.sh
-rwxr-xr-x@ 1 vladislavmuzyka admin 2684 10 сен 17:09 imessage.sma
drwxr-xr-x@ 68 vladislavmuzyka admin 2176 18 дек 01:20 include
-rwxr-xr-x@ 1 vladislavmuzyka admin 6680 10 сен 17:09 mapchooser.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 14565 10 сен 17:09 mapsmenu.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 11934 10 сен 17:09 menufront.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 3637 10 сен 17:09 multilingual.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 5296 10 сен 17:09 nextmap.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 13124 10 сен 17:09 pausecfg.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 28985 10 сен 17:09 plmenu.sma
-rw-r--r--@ 1 vladislavmuzyka admin 23266 3 ноя 14:54 pluginmenu.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 2273 10 сен 17:09 scrollmsg.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 8105 10 сен 17:09 statscfg.sma
-rwxr-xr-x@ 1 vladislavmuzyka admin 6666 10 сен 17:09 telemenu.sma
drwxr-xr-x@ 30 vladislavmuzyka admin 960 10 сен 17:09 testsuite
-rwxr-xr-x@ 1 vladislavmuzyka admin 6551 10 сен 17:09 timeleft.sma
MacBook-Air-Vladislav:~ vladislavmuzyka$
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
  • Нравится
Реакции: voed
Сообщения
2,751
Реакции
3,016
Помог
61 раз(а)
Компилирование на Linux
Не повторяйте моих ошибок, не забудьте на этой машине докинуть 32lib для компилятора, который застенчиво будет молчать, словно проститутка на допросе у Сталина.
Код:
sudo apt-get install lib32stdc++6
Благодарность maxpain за напоминание.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу