Создатель
Рейтинг: 417
Сообщений: 32
Спасибок: 77
- ReHLDS, ReGameDLL_CS, Reunion или VTC
Внимание: (Можно использовать не все перечисленные, но тогда будут доступна меньшая часть функционала) - MetaMod 1.20(p) или новее
Это предоставляет разработчикам AMXX-plugins больше возможностей для реализации своих целей.
Ссылки:
Возможности форвардов:
Практические примеры:
#include
В plugin_init, зарегистрируем хук на DeadPlayerWeapons и повесим обработчик на CSGameRules_DeadPlayerWeapons
public plugin_init()
{
RegisterHookChain(RG_CSGameRules_DeadPlayerWeapons, "CSGameRules_DeadPlayerWeapons")
}
Далее создадим тело обработчик-функции
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)
{
SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
}
Так как, в оригинальной функции, практически ничего нет, то нет надобности ее лишний раз вызывать, поэтому используем HC_SUPERCEDE
public CSGameRules_DeadPlayerWeapons(const index)
{
SetHookChainReturn(ATYPE_INTEGER, GR_PLR_DROP_GUN_NO);
return HC_SUPERCEDE;
}
Таким нехитрым способом, предотвратили любое появление оружия после смерти игрока, вполне себе сойдет для 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;
}
- 0 - не получил урон
- 1 - получил урон
В некоторых ситуациях, нужно точно знать получила ли жертва урон, на примере этого будет оповещение атакующему о том,
сколько урона нанёс (аля 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;
}
по союзникам на 35% (иными словами в flDamage будет точный урон), чего не скажешь о такой возможности в Hamsandwich-е.
так как функция 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;
}
- ReAPI по большей части предназначен для Counter-Strike 1.6 / Condition Zero, но может использоваться и на других модах с меньшим доступным функционалом.
- С каждой новой версией рекомендуется перекомпилировать свои плагины использующие ReAPI с обновленными инклюдами
1nap0h0pan1
Пользователь
Рейтинг: 64
Сообщений: 4
Спасибок: 12
С гитхаба не качается нифига
Создатель
Рейтинг: 417
Сообщений: 32
Спасибок: 77
JustGhostY писал:
С гитхаба не качается нифига
Качайте с нашего сайта. Для его мы скопировали материал? что бы качать проще.
1nap0h0pan1
Дата: 2 октября 2024 г, 23:56
Автор: Сеня Лобанов
Дата: 4 июня 2024 г, 10:59
Автор: VENA
Дата: 8 декабря 2023 г, 23:08
Автор: Сеня Лобанов
Дата: 31 августа 2023 г, 23:17
Автор: Сеня Лобанов
Дата: 31 августа 2023 г, 22:30
Автор: Сеня Лобанов