Как написать первый плагин AMX Mod X с нуля на Pawn
Как написать первый плагин AMX Mod X с нуля на Pawn
В этом руководстве мы создадим простейший плагин: при вводе команды /hello в чат игроку будет показано приветствие и его текущее здоровье. Разберём каждую строчку максимально подробно.
Шаг 1. Создайте файл plugin_hello.sma
В любом текстовом редакторе (VS Code, Notepad++, Sublime) создайте файл plugin_hello.sma. Расширение .sma — это стандарт AMXX для исходников.
Шаг 2. Подключите ядро AMXX
#include <amxmodx>
#include <fun>
amxmodx.inc — главный инклуд, даёт доступ к функциям движка AMX Mod X. fun.inc — модуль с полезными функциями: get_user_health, set_user_health, give_item и другими.
Шаг 3. Объявите информацию о плагине
public plugin_init()
{
register_plugin("Hello Plugin", "1.0", "YourName");
register_clcmd("say /hello", "cmd_hello");
}
Здесь:
plugin_init— это форвард, который AMXX вызывает после загрузки плагина. Здесь регистрируется всё: название, команды, события, квары.register_plugin— указывает имя плагина, версию и автора (показывается вamxx plugins).register_clcmd— связывает команду чатаsay /helloс нашей функциейcmd_hello. Когда игрок напишет/helloв чат — AMXX вызовет функцию.
Шаг 4. Напишите обработчик команды
public cmd_hello(id)
{
new name[32];
get_user_name(id, name, 31);
new hp = get_user_health(id);
client_print(id, print_chat, "[Hello] Привет, %s! У тебя %d HP.", name, hp);
return PLUGIN_HANDLED;
}
Разбор каждой строки:
public cmd_hello(id)— функция-обработчик.id— это номер игрока (от 1 до 32), который ввёл команду.new name[32]— создаём массив из 32 символов для хранения имени игрока.get_user_name(id, name, 31)— получает имя игрока.31— макс. индекс (строка должна заканчиваться нулём).new hp = get_user_health(id)— получает текущее здоровье игрока как целое число.client_print(id, print_chat, ...)— отправляет сообщение в чат конкретному игроку.print_chat— тип вывода (бываетprint_center,print_console).%sи%d— формат подстановки (как в printf).%s— строка,%d— целое число.return PLUGIN_HANDLED— обязательно! Означает, что мы обработали команду и движок не должен показывать её в чат как обычное сообщение.
Шаг 5. Полный код плагина
#include <amxmodx>
#include <fun>
public plugin_init()
{
register_plugin("Hello Plugin", "1.0", "YourName");
register_clcmd("say /hello", "cmd_hello");
}
public cmd_hello(id)
{
new name[32];
get_user_name(id, name, 31);
new hp = get_user_health(id);
client_print(id, print_chat, "[Hello] Привет, %s! У тебя %d HP.", name, hp);
return PLUGIN_HANDLED;
}
Что дальше?
- Сохраните файл и переходите к статье "Компиляция плагина AMX Mod X".
- Попробуйте изменить: вывести сообщение всем игрокам (
client_print(0, ...)), добавить звукemit_sound, показать HUDset_hudmessage+show_hudmessage. - Изучите форварды:
plugin_precache,client_putinserver,client_death,Ham_Killed(через HamSandwich).
Подробные инструкции и обсуждения ждём вас на нашем форуме — в разделе CS 1.6. Если код не работает или есть вопросы по Pawn — создавайте тему, обязательно поможем.