Як створити плагін! Make-amxserv - ігровий портал

Статейка про те як створити свій плагін
читаємо:
Почнемо з простого: виведення повідомлень на екран. Придумаємо команду, яка це буде робити: amx_ helloworld, amx_ hello або навіть hello. Треба що б зміг, коли захоче, вписати відповідну команду і на екран виводилося відповідний напис: hello world, hello або навіть "Privet, 4 itaki" ().
Все перевірили? Поїхали!
Будь-плагін повинен мати функцію plugin_ init (). Все те, що вставлено в цю дану функцію буде реєструватися в AMX, що б він міг використовувати ваш плагін: public plugin_init () register_plugin ( "Hello world", "0.1", "jghg")
>
Але цього не достатньо, для нашої мети. Повинна бути команда яку зможе використовувати і для цього ми повинні її зареєструвати в plugin_ init () функції. Команди, які вводяться в консолі сервера або від клієнта повинні бути в нутрії plugin_ init () для того, що б нею могли користуватися. plugin_ init () важливий з багатьох інших причин, про які ви дізнаєтеся з більш пізніх уроках. Функція plugin_ init () це як повідомлення для AMXMod, що существкет ваш плагін, і в разі чого (введення команди) юзати его.register_clcmd ( "amx_helloworld", "myfunction", A DMIN_VOTE, ". Prints Hello world. To everyone")
Таким чином функція plugin_ init () виглядає так: public plugin_init () register_plugin ( "Hello world", "0.1", "jghg")
register_clcmd ( "amx_helloworld", "myfunction", ADMIN _VOTE, ". says Hello world. to game screen")
Тримайте відступи, тобто використовуйте "tab" або, наприклад, прогалини в написанні функцій. Відкрийте будь-хто. sma файл, що поставляється разом з AMX, і ви зрозумієте, про що я говорю. Це спростить компіляцію і плагін буде откомпилирован більш якісно. Так само це спростить вивчення вашого плагіна інших розробників. Куди простіше розбиратися в структурованому коді, ніж в бардаку. Є ще серйозні підстави, але зараз я не буду в них вдаватися.
Додайте дані рядка. Вони повинні обов'язково бути присутнім в плагіні: #include
#include
Ми вже досить багато написали. Повинно бути, схоже ось на це: / *
Hello world, v0.1
By JGHG
* /
public plugin_init () register_plugin ( "Hello world", "0.1", "jghg")
register_clcmd ( "amx_helloworld", "myfunction", ADMIN _VOTE, ". says Hello world. to game screen")
Завжди зберігайте написане. Хто знає коли відключать електрику. Спробуйте відкомпілювати даний плагін. Якщо є помилки, то їх простіше знайти зараз, ніж потім колупати купу коду. Це значно спрощує пошук помилок.
Збережіть плагін і запустіть sc. bat. sc. bat - це командний файл, який здійснює пошук усіх sma-файлів в директорії source. Компілює і складає в директорії compiled з розширенням. amx. Якщо ви хочете скомпілювати тільки свій плагін, то потрібно запустити sc. exe з параметром рівний назві файлу в якому збережений плагін (sc. exe helloworld. sma). Файл з розширенням .amx буде збережений в поточному каталозі.
Якщо щось не так при компіляції перевірте правильність написання плагіна.
Нам залишилося написати останню функцію - виведення повідомлення на екран. Ми зареєстрували команду яка буде виконуватися в консолі, повідомлення виводиться на екран теж зареєстрували. Тепер залишилося створити функцію яка буде все це робити: public myfunction (id, level, cid) if (! Cmd_access (id, level, cid, 1)) return PLUGIN_HANDLED
>
>
Я не буду розписувати як працює функція cmd_ access (). Скажу тільки, що вона перевіряє чи може клієнт використовувати дану команду.
Id використовується по різному. У cmd_ access () через id перевіряється рівень доступу цього текучого користувача, і нікого іншого. Сподіваюся це зрозуміло.
Наступна лінія коду: client_print (0, print_center, "Hello world.")
Це та рядок коду, яка відповідає за друкування повідомлення у клієнта. з lient_ print є назвою функції, яка бере три параметра (може вимагатися більше, але про це в інших уроках). Перший параметр (0) відповідає за те кому буде виведена дана команда. Якщо поставити id номер гравця, то повідомлення буде виведено йому і вам. В даному випадку виведено буде для всіх присутніх на сервері (живим або мертвим). Тобто коли вам треба зробити з усіма щось або повідомити всім щось треба використовувати 0. Другий параметр вказує де слід виводити повідомлення. Можна помістити повідомлення в районі чату - print_ chat або print_ notify - відображає тільки в консолі. І третій параметр - саме повідомлення. Те, що в межах лапок то і є повідомлення, яке буде друкуватися на екран. Не втрачайте лапок.
Ми майже написали наш перший плагін. Залишилося тільки дописати наступну сходинку в функцію myfunction (): return PLUGIN_HANDLED
Це важлива рядок. Її втрачати не можна. Пам'ятайте, це останнє що ви повинні додати у всіх ваших функціях, які викликаються командами, надруковані в консолі сервера або в консолі клієнта. Якщо ви цього не зробите, то AMX не знатиме, що команда виконана, виведе повідомлення на екран, а в консолі з'явиться наступна помилка: Unknown command: amx_helloworld
Тому завжди закінчуйте функцію return PLUGIN_HANDLED.
Повністю наш плагін виглядає так: / *
Hello world, v0.1
By JGHG
* /
public myfunction (id, level, cid) if (! cmd_access (id, level, cid, 1)) return PLUGIN_HANDLED
>
public plugin_init () register_plugin ( "Hello world", "0.1", "jghg")
register_clcmd ( "amx_helloworld", "myfunction", ADMIN _VOTE, ". prints Hello world. to everyone")