Что такое ReAPI?
ReAPI — это модуль AMX Mod X, открывающий внутреннее устройство ReHLDS и ReGameDLL_CS для плагинов на Pawn в виде обычных нативных функций, вместо того чтобы вынуждать авторов плагинов патчить смещения в памяти или самостоятельно восстанавливать структуры. Он даёт коду на Pawn безопасный и версионированный доступ к поведению движка и GameDLL, недостижимому для обычных AMX Mod X и Metamod.
Что он даёт
- Цепочки перехватов — перехват функций движка (ReHLDS) и GameDLL (ReGameDLL_CS) в режимах
preиpostс точным управлением возвращаемым значением и даже аргументами исходной функции. - Доступ к полям структур — чтение и запись внутренних полей структур движка и GameDLL (игрок, оружие, граната, правила игры и другие) по имени, а не по вычисленному вручную смещению.
- Проверки возможностей во время работы — нативные функции вроде
is_rehlds(),is_regamedll(),has_reunion(),has_vtc()иhas_rechecker()позволяют плагину подстроиться под то окружение, в котором он действительно запущен. - Дополнительные заголовочные файлы интеграции —
reapi_reunion.inc,reapi_vtc.incиreapi_rechecker.incоткрывают перехваты для ReUnion, античита VTC и ReChecker, если те установлены.
Требования вкратце
- AMX Mod X, работающий поверх Metamod-R (или Metamod) и ReHLDS. Перехваты и поля уровня движка требуют ReHLDS.
- ReGameDLL_CS, если ваш плагин использует перехваты или поля уровня GameDLL (
reapi_gamedll.inc). Плагины, работающие только на уровне движка, обходятся без него.
Точный порядок действий описан в разделе Установка.
Минимальный пример
#include <amxmodx>
#include <reapi>
public plugin_init()
{
register_plugin("ReAPI Test", "1.0", "s1lent");
RegisterHookChain(RG_CBasePlayer_GiveAmmo, "CBasePlayer_GiveAmmo");
}
public CBasePlayer_GiveAmmo(const this, iAmount, szName[], iMax)
{
server_print("-> CBasePlayer_GiveAmmo: index:(%d), amount:(%d), name:(%s), max:(%d)", this, iAmount, szName, iMax);
return HC_CONTINUE;
}
Этот код перехватывает CBasePlayer::GiveAmmo на стороне GameDLL и записывает в журнал каждый вызов, не меняя поведения (HC_CONTINUE). Полное описание API цепочек перехватов и доступных типов значений и аргументов — в разделе Настройки.
Что дальше
- Установка — установка модуля и его подключение в ваших плагинах.
- Настройки — API цепочек перехватов и доступа к полям структур с нативными функциями, которые вы действительно будете вызывать.
- Инструкция по сборке — сборка ReAPI из исходного кода.
- Авторы — лицензия и ссылки проекта.