Иконка ресурса

ReHLDS ReAPI 5.12.0.192

Нет прав для скачивания

Mmonster

Пользователь
Регистрация
9 Июн 2017
Сообщения
527
Симпатии
255
Пол
Мужской
Авторы: Asmodai, s1lent

Ссылки:
Требования:
  • ReHLDS, ReGameDLL_CS, Reunion или VTC Внимание: (Можно использовать не все перечисленные, но тогда будут доступна меньшая часть функционала)
  • MetaMod 1.20(p) или новее
Описание:

Это AMX Mod X модуль, который умеет работать с API ReHLDS, ReGameDLL_CS, Reunion и VTC.
Это предоставляет разработчикам AMXX-plugins больше возможностей для реализации своих целей.

Установка:
  • Копируем из архива reapi_X_X_X.zip файл reapi_amxx_i386.so или reapi_amxx.dll (в зависимости от используемой ОС)
    в папку <gamedir>/addons/amxmodx/modules
  • Установка Reapi завершена
Возможности форвардов:
Форматирование (BB-код):
Управление вызовом оригинальной функции и других хуков. Делается путем возврата из форварда одного из 4 значений:
HC_CONTINUE- продолжить вызывать хуки и оригинал
HC_SUPERCEDE - продолжить вызывать хуки, но прервать выполнение оригинала
(Если функция не void, перед блокировкой её вызова необходимо установить свое возвращаемое значение)

HC_BREAK - прервать выполнение хуков и оригинала
Установка возвращаемого значения. Выполняется нативом SetHookChainReturn с двумя аргументами, в первом требуется указать тип возвращаемого значения, а во втором значение.
Получение возвращаемого значения. Делается нативом GetHookChainReturn, может быть вызвано только в post.
Замена аргументов в функции. Делается нативом SetHookChainArg, в первом аргументе указывается номер последовательности аргументов всегда начинается с 1, во втором тип аргумента и в третьем - значение.
Практические примеры:
Для начала подключим include reapi.
PHP:
#include <reapi>
В plugin_init, зарегистрируем хук на DeadPlayerWeapons и повесим обработчик на CSGameRules_DeadPlayerWeapons
PHP:
public plugin_init()
{
    RegisterHookChain(RG_CSGameRules_DeadPlayerWeapons, "CSGameRules_DeadPlayerWeapons")
}
Далее создадим тело обработчик-функции

PHP:
public CSGameRules_DeadPlayerWeapons(const index)
{

}
Следующим шагом для общего представления желательно заглянуть в исходник ReGameDLL_CS player.cpp#L1473,
понимая что функция должна возвращать некое значение в котором не ожидает GR_PLR_DROP_GUN_NO
и от этого будет зависеть далее выполняемый код, суть этой PackDeadPlayerItems функции заключается в том,
что выбрасывает оружия на землю после смерти игрока, попробуем это предотвратить,
для этого вернём значение GR_PLR_DROP_GUN_NO который не ожидает получить.

PHP:
public CSGameRules_DeadPlayerWeapons(const index)
{
    SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
}
Так как, в оригинальной функции, практически ничего нет, то нет надобности ее лишний раз вызывать, поэтому используем HC_SUPERCEDE
PHP:
public CSGameRules_DeadPlayerWeapons(const index)
{
    SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
    return HC_SUPERCEDE;
}
Таким нехитрым способом, предотвратили любое появление оружия после смерти игрока, вполне себе сойдет для CSDM или GunGame модов.
PHP:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    RegisterHookChain(RG_CSGameRules_DeadPlayerWeapons, "CSGameRules_DeadPlayerWeapons")
}

public CSGameRules_DeadPlayerWeapons(const index)
{
    SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
    return HC_SUPERCEDE;
}
Поскольку CBasePlayer::TakeDamage возвращает значение 0/1, в виде
  • 0 - не получил урон
  • 1 - получил урон
Если на сервере будет включен mp_friendlyfire 0, стреляя по союзникам CBasePlayer::TakeDamage все равно будет вызываться, но возвращать уже будет 0.
В некоторых ситуациях, нужно точно знать получила ли жертва урон, на примере этого будет оповещение атакующему о том,
сколько урона нанёс (аля Damager).
GetHookChainReturn должен использоваться только в post, когда оригинальная функция уже была вызвана.
PHP:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", 1);
}

public CBasePlayer_TakeDamage(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
{
    if (GetHookChainReturn() == 1) {
        client_print(0, print_chat, "Жертва получила урон: %f", flDamage);
    } else {
        client_print(0, print_chat, "Жертва не получила урон: %f", flDamage);
    }

    return HC_CONTINUE;
}
Полезная информация: CBasePlayer::TakeDamage в post, аргумент flDamage уже приходит с расчетом брони и заниженным уроном
по союзникам на 35% (иными словами в flDamage будет точный урон), чего не скажешь о такой возможности в Hamsandwich-е.
Используя хук ShowVGUIMenu, мы вполне cможем видоизменять/русифицировать меню выбора для всех, за исключением VGUI меню,
так как функция ShowVGUIMenu, вызывается как для VGUI так и для old меню.
PHP:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    RegisterHookChain(RG_ShowVGUIMenu, "ShowVGUIMenu");
}

public ShowVGUIMenu(const index, VGUIMenu:menuType, const bitsSlots, szOldMenu[], bool:bForceOldMenu)
{
    if (menuType == VGUI_Menu_Team) {
        new szMenu[256];
        formatex(szMenu, charsmax(szMenu), "\yЗа кого будем играть?^n^n\w1. Террористы^n2. Контр-Террористы^n^n5. Не знаю");

        if (bitsSlots & MENU_KEY_6) {
            add(szMenu, charsmax(szMenu), "^n6. Зритель");
        }

        SetHookChainArg(4, ATYPE_STRING, szMenu);
    }

    return HC_CONTINUE;
}

Примечания:

  • ReAPI по большей части предназначен для Counter-Strike 1.6 / Condition Zero, но может использоваться и на других модах с меньшим доступным функционалом.
  • С каждой новой версией рекомендуется перекомпилировать свои плагины использующие ReAPI с обновленными инклюдами.
Скачать: Архив с последней версией
 
Последнее редактирование модератором:

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
610
Симпатии
319
Пол
Мужской
ВКонтакте
id109544387
Telegram
@dmitry_isakow
Mmonster, этого уже нет.
PHP:
HC_OVERRIDE - продолжить вызывать оригинал, но возвращать свое значение
 

iOS

Команда форума
Модератор
Регистрация
9 Июн 2017
Сообщения
472
Симпатии
113
Пол
Мужской
Telegram
@pogorelov_ios
После обновы на реапи, стало в консоле сервера спамить этим:
-> KILL: (weapon_deagle)

Смысл этого?
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
I installed the latest version of reapi and I get this, why?

L 11/23/2017 - 18:56:35: [ReAPI] RegisterHookChain: function (CSGameRules_RestartRound) is not available, ReGameDLL required.
L 11/23/2017 - 18:56:35: [AMXX] Run time error 10 (plugin "lite_balancer_2.amxx" (native "RegisterHookChain" - debug not enabled!
L 11/23/2017 - 18:56:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/23/2017 - 18:56:35: [ReAPI] RegisterHookChain: function (PlayerBlind) is not available, ReGameDLL required.
L 11/23/2017 - 18:56:35: [AMXX] Run time error 10 (plugin "no_teamflash.amxx" (native "RegisterHookChain" - debug not enabled!
L 11/23/2017 - 18:56:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/23/2017 - 18:56:35: [AMXX] Plugin ("adminfreelook.amxx" is setting itself as failed.
L 11/23/2017 - 18:56:35: [AMXX] Plugin says: ReGameDLL is
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.174
Симпатии
748
I installed the latest version of reapi and I get this, why?

L 11/23/2017 - 18:56:35: [ReAPI] RegisterHookChain: function (CSGameRules_RestartRound) is not available, ReGameDLL required.
L 11/23/2017 - 18:56:35: [AMXX] Run time error 10 (plugin "lite_balancer_2.amxx" (native "RegisterHookChain" - debug not enabled!
L 11/23/2017 - 18:56:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/23/2017 - 18:56:35: [ReAPI] RegisterHookChain: function (PlayerBlind) is not available, ReGameDLL required.
L 11/23/2017 - 18:56:35: [AMXX] Run time error 10 (plugin "no_teamflash.amxx" (native "RegisterHookChain" - debug not enabled!
L 11/23/2017 - 18:56:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/23/2017 - 18:56:35: [AMXX] Plugin ("adminfreelook.amxx" is setting itself as failed.
L 11/23/2017 - 18:56:35: [AMXX] Plugin says: ReGameDLL is
try recompile plugin with updated include[DOUBLEPOST=1511470729][/DOUBLEPOST]
I installed the latest version of reapi and I get this, why?

L 11/23/2017 - 18:56:35: [ReAPI] RegisterHookChain: function (CSGameRules_RestartRound) is not available, ReGameDLL required.
L 11/23/2017 - 18:56:35: [AMXX] Run time error 10 (plugin "lite_balancer_2.amxx" (native "RegisterHookChain" - debug not enabled!
L 11/23/2017 - 18:56:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/23/2017 - 18:56:35: [ReAPI] RegisterHookChain: function (PlayerBlind) is not available, ReGameDLL required.
L 11/23/2017 - 18:56:35: [AMXX] Run time error 10 (plugin "no_teamflash.amxx" (native "RegisterHookChain" - debug not enabled!
L 11/23/2017 - 18:56:35: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 11/23/2017 - 18:56:35: [AMXX] Plugin ("adminfreelook.amxx" is setting itself as failed.
L 11/23/2017 - 18:56:35: [AMXX] Plugin says: ReGameDLL is
oh, no i made a mistake
"game version" in console and write here
it seems you didn't install ReGameDll
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
I had an old version of reapi, and when I put a new one, that looks like that, and I installed regamedll.[DOUBLEPOST=1511501824][/DOUBLEPOST][ReAPI]: ReGameDLL API minor version mismatch; expected at least 4, real 3
[ReAPI]: Please update the ReGameDLL up to a minor version API >= 4
[HACKD] Found compatible ReHLDS engine.
[ReAimDetector] Version: 0.1.7 Linux 'Counter-Strike 1.6'
[ReAimDetector] Success: Build ReHLDS version defined Linux '1201'.
[ReAuthCheck] Version: 0.1.6 Linux 'Counter-Strike 1.6'
[ReAuthCheck] Success: Configuration executed.
[ReAuthCheck] Success: Build ReHLDS version defined Linux '1201'
[WHB] Version: 1.5.692 Linux (Usage SSE 4.1)
[WHB] Success: Build ReHLDS version defined Linux '1201'
[WHB] Success: Configuration executed.
[ReSRDetector] Version: 0.1.0 Linux 'Counter-Strike 1.6'
[ReSRDetector] Success: Configuration executed.
[ReSRDetector] Success: Build ReHLDS version defined Linux '1201'
ReGameDLL version: 5.3.0.218-dev

I'm not going to update to regamedll.
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
It does not work to update to regamedll, it's still that version, why?
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.174
Симпатии
748

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
Simply put everything from bug fixed in dlls to update regamedll and do not go to another version.
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
[DOUBLEPOST=1511506325][/DOUBLEPOST]Please look

https://www.youtube.com/watch?v=pnA7_SE1P-o
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.174
Симпатии
748

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
It's the same, it's not up to date.
 

perfectblood0

Команда форума
Администратор
Регистрация
29 Окт 2017
Сообщения
2.174
Симпатии
748
are you sure that cs.so loading from dlls? contact your support and give him archive to update your server
 

SeeR

Пользователь
Регистрация
6 Окт 2017
Сообщения
37
Симпатии
0
I have no idea. Thank you very much for trying to help me.
 

San

Пользователь
Регистрация
4 Фев 2018
Сообщения
58
Симпатии
0
Не знаю сюда пишу или нет. Что за ошибка и как исправить?
L 03/08/2018 - 03:08:21: [ReAPI] You need ReHlds or ReGameDll for use hookchains
L 03/08/2018 - 03:08:21: [AMXX] Run time error 10 (plugin "admin_loader.amxx") (native "RegisterHookChain") - debug not enabled!
билд 6153
 

Vaqtincha

Разработчик
Регистрация
28 Янв 2018
Сообщения
589
Симпатии
370
San, установить ReHlds и ReGameDll
 

San

Пользователь
Регистрация
4 Фев 2018
Сообщения
58
Симпатии
0
Vaqtincha, То есть обновить билд?
Можно подробнее
 
Последнее редактирование:
Сверху Снизу