Версия: Beta 3
Перевод: DJ_WEST
Описание:
Данный модуль был создан с целью обхода ограничений модуля Orpheu, предоставляя неограниченные возможности по взаимодействию с движком игры.
К примеру, вы хотите использовать функцию, которую вы не можете использовать с помощью обычного AMXX. Для этого нам необходимо создать компонент, называемым handler'ом в C++, который чем-то похож на модуль, но его цель прежде всего - это управление хуками и вызовами функций плагинов и rage модулей. Другими словами, он связывает функции плагинов и rage модулей. Handler достаточно легко создать, потому что мы можем использовать уже созданный скелет для создания другого. К примеру:
[pawn]
- int CBasePlayerWeapon::AddPrimaryAmmo( int iCount, char *szName, int iMaxClip, int iMaxCarry )
Функция возвращает целое число (int) и она является членом класса CBasePlayerWeapon, а также имеет аргументы следующих типов: int, char*, int, int.
[pawn]
- int CBasePlayerWeapon::AddSecondaryAmmo( int iCount, char *szName, int iMaxClip, int iMaxCarry )
Данная функция имеет такой же заголовок и ей не обязательно быть членом класса CBasePlayerWeapon, поскольку все объекты должны быть обработаны таким же способом.
Данная реализация более сложна, чем в модуле Orpheu, но она необходима для модуля Rage, потому что не имеет ограничений.
Теперь представим, что у нас есть handler функции, которую мы хотим хукнуть. Для этого нам необходимо создать файл, подобно тому, как мы это делали в модуле Orpheu. После того, как мы создали файл, мы можем вызвать и хукнуть функцию в AMXX плагинах через использования функций, которые предоставляет нам Rage.
Схема работы модуля Rage:
[align=center] [/align]
Примечание:
- Разработчики выпустили beta версию, потому что хотят удостовериться, что API модуля достаточно для создания обработчиков функций.
- Rage не имеет ограничений, которые имеет Orpheu, поэтому он может быть свободно интегрирован в AMXX.
- Rage не имеет функций для патчинга памяти, но это легко сделать путем создания суб-модуля для Rage на основе модуля MemHack.