[AMXX Module] Reapi, AMXModX модуль, который умеет работать с API |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
![]() |
[AMXX Module] Reapi, AMXModX модуль, который умеет работать с API |
![]() |
![]()
Сообщение
|
![]() ![]() |
Команда разработки:
• Asmodai • s1lent Ссылки: • github Описание: • Это AMX Mod X модуль, который умеет работать с API ReHLDS, ReGameDLL_CS, Reunion и VTC. Это предоставляет разработчикам AMXX-plugins больше возможностей для реализации своих целей. Требования: • ReHLDS, ReGameDLL_CS, Reunion или VTC Внимание: (Можно использовать не все перечисленные, но тогда будет доступна меньшая часть функционала) • MetaMod 1.20(p) или новее Установка: Cкрытый текст • Копируем из архива reapi_X_X_X.zip файл reapi_amxx_i386.so или reapi_amxx.dll (в зависимости от используемой ОС) в папку <gamedir>/addons/amxmodx/modules • Установка Reapi завершена Возможности форвардов: Cкрытый текст 1. Управление вызовом оригинальной функции и других хуков. Делается путем возврата из форварда одного из 4 значений: • HC_CONTINUE - продолжить вызывать хуки и оригинал • HC_OVERRIDE - продолжить вызывать оригинал, но возвращать свое значение • HC_SUPERCEDE - продолжить вызывать хуки, но прервать выполнение оригинала • (Если функция не void, перед блокировкой её вызова необходимо установить свое возвращаемое значение) • HC_BREAK - прервать выполнение хуков и оригинала 2. Установка возвращаемого значения. Выполняется нативом SetHookChainReturn с двумя аргументами, в первом требуется указать тип возвращаемого значения, а во втором значение. 3. Получение возвращаемого значения. Делается нативом GetHookChainReturn, может быть вызвано только в post. 4. Замена аргументов в функции. Делается нативом SetHookChainArg, в первом аргументе указывается номер последовательности аргументов всегда начинается с 1, во втором тип аргумента и в третьем - значение. Практические примеры: 1. SetHookChainReturn Cкрытый текст Для начала подключим include reapi. Код: #include <reapi> В plugin_init, зарегистрируем хук на DeadPlayerWeapons и повесим обработчик на CSGameRules_DeadPlayerWeapons Код: public plugin_init() Далее создадим тело обработчик-функции Код: public CSGameRules_DeadPlayerWeapons(const index) Следующим шагом для общего представления желательно заглянуть в исходник ReGameDLL_CS player.cpp#L1473, понимая что функция должна возвращать некое значение в котором не ожидает GR_PLR_DROP_GUN_NO и от этого будет зависеть далее выполняемый код, суть этой PackDeadPlayerItems функции заключается в том, что выбрасывает оружия на землю после смерти игрока, попробуем это предотвратить, для этого вернём значение GR_PLR_DROP_GUN_NO который не ожидает получить. Код: public CSGameRules_DeadPlayerWeapons(const index) Так как, в оригинальной функции, практически ничего нет, то нет надобности ее лишний раз вызывать, поэтому используем HC_SUPERCEDE Код: public CSGameRules_DeadPlayerWeapons(const index) Таким нехитрым способом, предотвратили любое появление оружия после смерти игрока, вполне себе сойдет для CSDM или GunGame модов. Код: #include <amxmodx> 2. GetHookChainReturn Cкрытый текст Поскольку CBasePlayer::TakeDamage возвращает значение 0/1, в виде • 0 - не получил урон • 1 - получил урон Если на сервере будет включен mp_friendlyfire 0, стреляя по союзникам CBasePlayer::TakeDamage все равно будет вызываться, но возвращать уже будет 0. В некоторых ситуациях, нужно точно знать получила ли жертва урон, на примере этого будет оповещение атакующему о том, сколько урона нанёс (аля Damager). GetHookChainReturn должен использоваться только в post, когда оригинальная функция уже была вызвана. Код: #include <amxmodx> Полезная информация: CBasePlayer::TakeDamage в post, аргумент flDamage уже приходит с расчетом брони и уменьшенным уроном по союзникам на 35% (иными словами в flDamage будет точный урон), чего не скажешь о такой возможности в Hamsandwich-е. 3. SetHookChainArg Cкрытый текст Используя хук ShowVGUIMenu, мы вполне cможем видоизменять/русифицировать меню выбора для всех, за исключением VGUI меню, так как функция ShowVGUIMenu, вызывается как для VGUI так и для old меню. Код: #include <amxmodx> ![]() Примечания: • ReAPI по большей части предназначен для Counter-Strike 1.6 / Condition Zero, но может использоваться и на других модах с меньшим доступным функционалом. • С каждой новой версией желательно перекомпилировать свои плагины использующие ReAPI с обновленными инклюдами. Источник: www.dedicated-server.ru Цитата Актуальная версия:
![]() ![]() --
Хайповая дива)))))))))))))))) |
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() |
![]() ![]() --
Хайповая дива)))))))))))))))) |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Что только не придумают..но смысл?)
|
|
|
![]() |
![]()
Сообщение
|
![]() |
![]() Аткажитесъ от плагенов бес исходника.
|
![]() |
|
![]() |
![]()
Сообщение
|
![]() ![]() |
![]() --
Хайповая дива)))))))))))))))) |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
![]() [CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015 [CS 1.6 DM AIM] 78.152.169.100:27017 [Half-Life DM FFA] 78.152.169.100:27016 |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Обновление:
• Текущая версия модуля 0.1.50 (Обновлена совместимость) ![]() --
Хайповая дива)))))))))))))))) |
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
В modules.ini прописывать Reapi не надо?
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Также тут Обновите шапку темы уже есть версия
Прикрепленные файлы:
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() ![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() ![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
Обновление:
Текущая версия модуля 0.1.85
Прикрепленные файлы:
|
![]() |
|
![]() |
![]()
Сообщение
|
![]() |
|
|
|
![]() |
![]()
Сообщение
|
![]() |
Цитата Обновил 1-й пост, добавив последнюю актуальную версию модуля ReAPI
|
|
|
![]() |
![]()
Сообщение
|
![]() |
А CBreakable будет добавлен?
|
|
|
![]() |
![]()
Сообщение
|
![]() |
без реапи вполне нормально и годно работает
![]() Success
|
|
|
![]() |
![]()
Сообщение
|
![]() ![]() |
без реапи вполне нормально и годно работает Без ReAPI смысла ставить reHLDS практически нет. ![]() [CS 1.6 Public] 78.152.169.100:27014
[CS 1.6 DM FFA] 78.152.169.100:27015 [CS 1.6 DM AIM] 78.152.169.100:27017 [Half-Life DM FFA] 78.152.169.100:27016 |
|
|
![]() |
![]()
Сообщение
|
![]() |
![]() Success
|
|
|
![]() |
![]()
Сообщение
|
![]() |
|
|
|
![]() ![]() |