Поиск Блокировка команды kill [ReAPI]

Сообщения
102
Реакции
77
День добрый :)
Собственно сабж, никто не подскажет как реализовать?
Спасибо.
 
Сообщения
2,751
Реакции
3,014
Помог
61 раз(а)
можно, но будет это весьма извращенье.
Легче использовать сторонний модуль.
 
Сообщения
187
Реакции
319
Помог
1 раз(а)
От себя добавлю, что стоит заблокировать еще команду direct 0 тк она тоже убивает. Баг? хз.
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
Реализовать-то можно, только будет слегка костыльно:
C++:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
    register_clcmd("kill", "Kill_func");
    register_concmd("kill", "Kill_func");
}

public Kill_func(id)
{
    set_member(id, m_fNextSuicideTime, get_gametime() + 0.1); // https://github.com/s1lentq/ReGameDLL_CS/blob/master/regamedll/dlls/client.cpp#L378
}
На работоспособность не проверял, но с учетом кода регейма должно сработать. Это если принципиально на реапи. Можно и на фейкмете заблокировать, и на енджине
 
Последнее редактирование:

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
fantom, увы, кода, отвечающего за эту команду, нет в регейме. Придется просить, чтобы в GSClient'e пофиксили, хотя бы
 
Сообщения
2,491
Реакции
2,794
Помог
61 раз(а)
shadow, это квар на клиенте
11 Авг 2020
Странно, но я нашел только такое
Код:
// these two added to shut up CS 1.5 about 'unknown' commands
Cvar_Get( "lightgamma", "1", 0, "ambient lighting level (legacy, unused)" );
Cvar_Get( "direct", "1", 0, "direct lighting level (legacy, unused)" );
Cvar_Get( "voice_serverdebug", "0", 0, "debug voice (legacy, unused)" );
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
shadow, спасибо. Да, принципиально) Поставил себе цель, которая может показаться странной. Собрать Biohazard сервер без использования фм, хама, фана и т. п., только средствами amxmodx и ReAPI. Пока успехи неплохие, но kill стал первой загвоздкой)
11 Авг 2020
shadow, протестил, не работает вообще) Пробовал прибавлять 10 секунд, не блокируется ничего.
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
shadow, проблема в том, что при введении kill в консоль не вызывалась функция. Мембер сам рабочий. Можно при каждом путинсервере выставлять большую задержку, как вариант (тогда сломается user_kill(), user_silentkill() и т. п.)
 
Последнее редактирование:

Garey

ninjaCow
Сообщения
421
Реакции
1,056
Помог
10 раз(а)
shadow, kill так не хукнуть.
fantom, при смене команды и т.д. используются другие функции.

Лучше использовать fakemeta хук:
Код:
#include <amxmodx>
#include <fakemeta>

public plugin_init( ) register_plugin("Blue Whale Breaker", "", ""), register_forward( FM_ClientKill, "Fwd_ClientKill" );
public Fwd_ClientKill( const id ) return FMRES_SUPERCEDE;
 

Garey

ninjaCow
Сообщения
421
Реакции
1,056
Помог
10 раз(а)
fantom, И да и нет. Дело в том что мы хукаем вызов функции из интерфейса а внутри regamedll он используется напрямую. Т.е. в примере хукается вызовы через gEntityInterface, в ReHLDS и ReGamedll только один вызов через интерфейс и он в функции по ссылке: https://github.com/dreamstalker/reh...b429d0d797b0/rehlds/engine/host_cmd.cpp#L2692 которая нам и нужна.
 
Сообщения
499
Реакции
271
Помог
6 раз(а)
shadow, я проверил перед тем, как зачеркнуть. У меня при переходе в спектра сайленткилл как раз. Я в спектра перешёл, но не умер.
 

hajimura

Е777КХ05
Сообщения
290
Реакции
228
Помог
6 раз(а)
CHEL74, да. Я не в те исходники заглянул по запаре, заглянул вообще в ns-мод...
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу