Наказание за тимкилл

Сообщения
702
Реакции
54
Приветствую, в движке есть квар mp_autokick, но он работает ещё и как "афк кикер".
Может кто-то написать плагином кик за n тимкиллов?
 
Сообщения
258
Реакции
262
Помог
5 раз(а)
Tranquillity,
Used when enabled mp_autokick.
3 Апр 2017
C++:
#pragma semicolon 1

#include <amxmodx>
#include <reapi>

const MAX_WARNINGS = 2;

new g_warnings[MAX_CLIENTS + 1];

public plugin_init() {
register_plugin("Punisher of teammate killer", "0.1", "Subb98");
RegisterHookChain(RG_CBasePlayer_Killed, "FwdKilledPost", 1);
}

public client_putinserver(id) {
g_warnings[id] = 0;
}

public FwdKilledPost(const Victim, const Attacker) {
if(Attacker && Attacker != Victim && is_user_connected(Attacker) && get_member(Attacker, m_iTeam) == get_member(Victim, m_iTeam)) {
if(++g_warnings[Attacker] > MAX_WARNINGS) {
server_cmd("kick #%d ^"Teammates killings^"", get_user_userid(Attacker));
}
}
}
 
Сообщения
2,751
Реакции
3,014
Помог
61 раз(а)
А вот тебе ещё один вариант.
mp_autokick, но он работает ещё и как "афк кикер".
Настрой вот этот квар:
Код:
mp_autokick_timeout


И инфа для знающих:
multiplay_gamerules.cpp#L1831 >>> player.cpp#L4330




И сразу же предостережение и несколько фактов из ReGameDLL, на всякий случай.
1) Значение из квара mp_autokick_timeout берётся лишь при старте карты, а значит на горячую кваром менять значение не получится. Но есть вариант менять через ReAPI.
Но, есть вариант управлять значениями через ReAPI.

Код:
/*
* Description: For the idle kick functionality. This is tha max amount of time that the player has to be idle before being kicked
* Member type: float
* Get params: Float:get_member_game(member);
* Set params: set_member_game(member, Float:value);
*/
m_fMaxIdlePeriod,

/*
* Description: -
* Member type: float
* Get params: Float:get_member(index, member);
* Set params: set_member(index, member, Float:value);
*/
m_flIdleCheckTime,


2) Стандартный AFK-Kicker (idle-kicker) проверяет каждые 5 секунд игрока, если последние движения игрока были более чем "mp_autokick_timeout" секунд назад - тогда kick.

3) Проверка идёт на нажатие любой из перечисленных (hlsdk_const.inc) кнопок у игрока.
4) Если mp_autokick_timeout <= 0, тогда игрок будет кикнут спустя 2 раунда.
5) Стандартные боты (zBot) не будут кикнуты.
6) При кике AFK-Kicker'ом в лог игроков и сервера отправляется запись: "@Name has been idle for too long and has been kicked", а игроку жертве выводится причина кика.

Поздравляю! Теперь вы знаете, что в GameDLL есть встроенный AFK-Kicker, который в принципе работает как нужно, за исключением формальностей (Приоритеты, перенос в Spectator и прочее).

 
Последнее редактирование:
Сообщения
702
Реакции
54
wopox1337, Морочь же, буду использовать плагин выше, да и всё.
Ибо квар выполняет не совсем нужные действия. Мне нужна была конкретика, я её получил, спасибо!
 

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

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