Reapi 5.24.0.300
Сеня Лобанов

Создатель


Рейтинг: 417


Сообщений: 32


Спасибок: 77

Reapi 5.24.0.300
 
Автор:
Asmodai, s1lent
Требования:
  • ReHLDSReGameDLL_CSReunion или VTC 
    Внимание: (Можно использовать не все перечисленные, но тогда будут доступна меньшая часть функционала)
  • MetaMod 1.20(p) или новее
Это AMX Mod X модуль, который умеет работать с API ReHLDS, ReGameDLL_CS, Reunion и VTC.
Это предоставляет разработчикам AMXX-plugins больше возможностей для реализации своих целей.

Ссылки:

Возможности форвардов:


Практические примеры:
 
SetHookChainReturn
Для начала подключим include reapi.
Код:
 #include 
C++

В plugin_init, зарегистрируем хук на DeadPlayerWeapons и повесим обработчик на CSGameRules_DeadPlayerWeapons
Код:
 public plugin_init()
{
    RegisterHookChain(RG_CSGameRules_DeadPlayerWeapons, "CSGameRules_DeadPlayerWeapons")
}
C++

Далее создадим тело обработчик-функции
Код:
 public CSGameRules_DeadPlayerWeapons(const index)
{

}
C++

Следующим шагом для общего представления желательно заглянуть в исходник ReGameDLL_CS player.cpp#L1473,
понимая что функция должна возвращать некое значение в котором не ожидает GR_PLR_DROP_GUN_NO
и от этого будет зависеть далее выполняемый код, суть этой PackDeadPlayerItems функции заключается в том,
что выбрасывает оружия на землю после смерти игрока, попробуем это предотвратить,
для этого вернём значение GR_PLR_DROP_GUN_NO который не ожидает получить.
Код:
 public CSGameRules_DeadPlayerWeapons(const index)
{
    SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
}
C++

Так как, в оригинальной функции, практически ничего нет, то нет надобности ее лишний раз вызывать, поэтому используем HC_SUPERCEDE
Код:
 public CSGameRules_DeadPlayerWeapons(const index)
{
    SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
    return HC_SUPERCEDE;
}
C++

Таким нехитрым способом, предотвратили любое появление оружия после смерти игрока, вполне себе сойдет для CSDM или GunGame модов.
Код:
 #include 
#include 

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;
}
 
 
GetHookChainReturn
Поскольку CBasePlayer::TakeDamage возвращает значение 0/1, в виде
  • 0 - не получил урон
  • 1 - получил урон
Если на сервере будет включен mp_friendlyfire 0, стреляя по союзникам CBasePlayer::TakeDamage все равно будет вызываться, но возвращать уже будет 0.
В некоторых ситуациях, нужно точно знать получила ли жертва урон, на примере этого будет оповещение атакующему о том,
сколько урона нанёс (аля Damager).
GetHookChainReturn должен использоваться только в post, когда оригинальная функция уже была вызвана.
Код:
#include 
#include 

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;
}
C++
Полезная информация: CBasePlayer::TakeDamage в post, аргумент flDamage уже приходит с расчетом брони и заниженным уроном
по союзникам на 35% (иными словами в flDamage будет точный урон), чего не скажешь о такой возможности в Hamsandwich-е.
 
 
SetHookChainArg
Используя хук ShowVGUIMenu, мы вполне cможем видоизменять/русифицировать меню выбора для всех, за исключением VGUI меню,
так как функция ShowVGUIMenu, вызывается как для VGUI так и для old меню.
Код:
#include 
#include 

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;
}
C++
 
kiss_16kb.1464987719.jpg
 
 
Примечания:
  • ReAPI по большей части предназначен для Counter-Strike 1.6 / Condition Zero, но может использоваться и на других модах с меньшим доступным функционалом.
  • С каждой новой версией рекомендуется перекомпилировать свои плагины использующие ReAPI с обновленными инклюдами
ВНИМАНИЕ!!! ATTENTION!!! WARNING!!!
эта версия совместима с версией ReGameDLL 5.26.0.668 и выше. Старые версии не поддерживаются. Обновляйтесь только в связке с ReGameDLL

What's Changed
  • Implement RH_SV_AllowPhysent hook by @justgo97 in #265
  • Add ITEM_FLAG_NOFIREUNDERWATER to cssdk_const.inc by @fl0werD in #267
  • Improved description for rg_get_weapon_info by @Nord1cWarr1or in #269
  • API: Implement RH_ExecuteServerStringCmd hook by @ShadowsAdi in #263
  • Improve include descriptions rg_fire_bullets, rg_fire_buckshots and rg_fire_bullets3 by @RauliTop in #245
  • rg_give_defusekit(): Add player team check by @Giferns in #234
  • Implement rh_get_client_connect_time() native by @FEDERICOMB96 in #259
  • Fix TimeBasedDamage enum typo at cssdk_const.inc by @RauliTop in #256
  • Add new trace flags to cssdk_const.inc by @justgo97 in #278
  • Add m_flEjectBrass description by @RauliTop in #274
  • API: Implement RG_CreateWeaponBox hook by @dystopm in #275
  • API: Implement RG_PM_LadderMove hook by @ShadowsAdi in #254
  • API: CSPlayer and CKnife additions + headers refactory by @dystopm in #277
  • API: Added rg_set/get_global_iteminfo natives by @dystopm in #279
  • Added a new argument removeAmmo to the rg_remove_items_by_slot native by @Javekson in #283
  • API: New gamedll hookchains by @dystopm in #280
  • Fix error 029: invalid expression for IsRoundExpireEvent by @Javekson in #286
  • Refactored rg_remove_items_by_slot and updated the return logic by @Javekson in #288
  • Updated the return logic of rg_drop_item and rg_drop_items_by_slot by @Javekson in #289
  • Added GetBodygroup, SetBodygroup, GetSequenceInfo natives by @dystopm in #294
  • fix(rg_transfer_c4): prevent C4 destruction on arg receiver = 0 by @Javekson in #291
  • Headers update, rename m_bHasSecondaryAttack, CSPlayer member additions by @dystopm in #293
  • Implemented CCSEntity members to export in AMXX headers by @dystopm in #296
  • Fix GiveC4 hook callback return type by @dystopm in #295
  • API upgrade: 15 new natives by @dystopm in #297

Full Changelog5.22.0.253...5.24.0.300



Скачать Reapi 5.24.0.300

Отредактировал: Сеня Лобанов, 9 октября 2024 г, 22:48

1nap0h0pan1

Спасибо сказали: ITSHNICK, VENA, VOIN
JustGhostY

Пользователь


Рейтинг: 64


Сообщений: 4


Спасибок: 12

С гитхаба не качается нифига

Спасибо сказали: ITSHNICK, VENA, VOIN
Сеня Лобанов

Создатель


Рейтинг: 417


Сообщений: 32


Спасибок: 77

JustGhostY писал:

С гитхаба не качается нифига

Качайте с нашего сайта. Для его мы скопировали материал? что бы качать проще.

1nap0h0pan1

Спасибо сказали: ITSHNICK, VENA, VOIN
Авторизация
  Войти через ВК
Последнее на форуме

[2.7] Resources Checker

Дата: 2 октября 2024 г, 23:56

Автор: Сеня Лобанов

КЛАНЫ СЕРВЕРА

Дата: 4 июня 2024 г, 10:59

Автор: VENA

Правила Easy | Classic Server

Дата: 8 декабря 2023 г, 23:08

Автор: Сеня Лобанов

Hitbox Fixer 1.1.5

Дата: 31 августа 2023 г, 23:17

Автор: Сеня Лобанов

cs-megaboost.ru

Дата: 31 августа 2023 г, 22:30

Автор: Сеня Лобанов