Главная Новости Услуги Форум | База знаний

Вверх

Меню
Пользователей онлайн
Онлайн игроков: 60

Как написать первый плагин 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;
}

Что дальше?

  1. Сохраните файл и переходите к статье "Компиляция плагина AMX Mod X".
  2. Попробуйте изменить: вывести сообщение всем игрокам (client_print(0, ...)), добавить звук emit_sound, показать HUD set_hudmessage + show_hudmessage.
  3. Изучите форварды: plugin_precache, client_putinserver, client_death, Ham_Killed (через HamSandwich).
Подробные инструкции и обсуждения ждём вас на нашем форуме — в разделе CS 1.6. Если код не работает или есть вопросы по Pawn — создавайте тему, обязательно поможем.
Назад