TA TK уведомления админов

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
268
Раньше, в мани админ плагин вроде была встроена функция, при ТА (TeamAttack) и ТК(TeamKill) игрокам в чат были сообщения что Такой то игрок аттакует Напарника. Эти сообщения были независимо от команды, то есть например Террористы видели сообщения о ТА в команде Спецназа.
На сорсмоде видно только когда ТА происходит в своей команде.
Как сделать, чтобы админы видели ТА\ТК независимо от команды?

Полезно знать, когда нужно вычислить провокатора.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
видели ТА\ТК независимо от команды
PHP:
#pragma newdecls required

public void OnPluginStart()
{
    HookEvent("player_hurt", Event_TA_TK);
    HookEvent("player_death", Event_TA_TK);
}

public void Event_TA_TK(Event event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    if (attacker)
    {
        int victim = GetClientOfUserId(event.GetInt("userid")), teammate = GetClientTeam(victim);
        if (attacker != victim && GetClientTeam(attacker) == teammate)
        {
            for (int i = 1; i <= MaxClients; ++i)
            {
                if (IsClientInGame(i) && GetClientTeam(i) != teammate)
                    PrintToChat(i, "\x01Игрок \x03%N \x04%s \x01товарища по команде \x05%N", attacker, name[7] == 'h' ? "атакует":"убил", victim);
            }
        }
    }
}
 
Последнее редактирование:

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
268
PHP:
#pragma newdecls required

public void OnPluginStart()
{
    HookEvent("player_hurt", Event_TA_TK);
    HookEvent("player_death", Event_TA_TK);
}

public void Event_TA_TK(Event event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    if (attacker)
    {
        int victim = GetClientOfUserId(event.GetInt("userid")), teammate = GetClientTeam(victim);
        if (GetClientTeam(attacker) == teammate)
        {
            for (int i = 1; i <= MaxClients; ++i)
            {
                if (IsClientInGame(i) && GetClientTeam(i) != teammate)
                    PrintToChat(i, "\x01Игрок \x03%N \x04%s \x01товарища по команде \x05%N", attacker, name[7] == 'h' ? "атакует":"убил", victim);
            }
        }
    }
}
Забыл указать, игра CS:S. Сработает ?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
PHP:
#pragma newdecls required

bool IsAdmin_TA_TK[MAXPLAYERS + 1];

public void OnPluginStart()
{
    HookEvent("player_hurt", Event_TA_TK);
    HookEvent("player_death", Event_TA_TK);
}

public void OnClientPostAdminCheck(int client)
{
    IsAdmin_TA_TK[client] = GetAdminFlag(GetUserAdmin(client), Admin_Generic);
}

public void Event_TA_TK(Event event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    if (attacker)
    {
        int victim = GetClientOfUserId(event.GetInt("userid")), teammate = GetClientTeam(victim);
        if (attacker != victim && GetClientTeam(attacker) == teammate)
        {
            for (int i = 1; i <= MaxClients; ++i)
            {
                if (IsAdmin_TA_TK[i] && IsClientInGame(i) && GetClientTeam(i) != teammate)
                    PrintToChat(i, "\x01Игрок \x03%N \x04%s \x01товарища по команде \x05%N", attacker, name[7] == 'h' ? "атаковал":"убил", victim);
            }
        }
    }
}
 
Последнее редактирование:

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
268
PHP:
#pragma newdecls required

bool IsAdmin_TA_TK[MAXPLAYERS + 1];

public void OnPluginStart()
{
    HookEvent("player_hurt", Event_TA_TK);
    HookEvent("player_death", Event_TA_TK);
}

public void OnClientPostAdminCheck(int client)
{
    IsAdmin_TA_TK[client] = GetAdminFlag(GetUserAdmin(client), Admin_Generic);
}

public void Event_TA_TK(Event event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    if (attacker)
    {
        int victim = GetClientOfUserId(event.GetInt("userid")), teammate = GetClientTeam(victim);
        if (GetClientTeam(attacker) == teammate)
        {
            for (int i = 1; i <= MaxClients; ++i)
            {
                if (IsAdmin_TA_TK[i] && IsClientInGame(i) && GetClientTeam(i) != teammate)
                    PrintToChat(i, "\x01Игрок \x03%N \x04%s \x01товарища по команде \x05%N", attacker, name[7] == 'h' ? "атаковал":"убил", victim);
            }
        }
    }
}
А как исключить суициды не подскажешь?
 

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
268
@AlmazON, Привет, а можешь добавить в плагин, чтобы показывалось, сколько хп сняли при атаке
Например
Игрок ... атакавал товарища по команде ... (-19hp)
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756

HooLIGUN

MatchMaking CS:S / RGMIX.ru
Сообщения
1,069
Реакции
268
Сейчас кину кости и узнаю, какой плагин имеется ввиду.
В смысле? Я же процитировал тебя конкретной теме, где постом выше есть твой код. Какие кости то??
Спама мало в чате? Тогда придётся делить общий код на 2 части.
Спама нет.
Ладно, я тебя понял.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
выше есть твой код
Стоит всегда указывать, какой конкретно код. Зачастую, вы его вообще сами изменяете - обязательно прилагать свой.
PHP:
#pragma newdecls required

bool IsAdmin_TA_TK[MAXPLAYERS + 1];

public void OnPluginStart()
{
    HookEvent("player_hurt", Event_TA_TK);
    HookEvent("player_death", Event_TA_TK);
}

public void OnClientPostAdminCheck(int client)
{
    IsAdmin_TA_TK[client] = GetAdminFlag(GetUserAdmin(client), Admin_Generic);
}

public void Event_TA_TK(Event event, const char[] name, bool dontBroadcast)
{
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    if (attacker)
    {
        int victim = GetClientOfUserId(event.GetInt("userid"));
        if (attacker != victim)
        {
            int teammate = GetClientTeam(victim);
            if (GetClientTeam(attacker) == teammate)
            {
                int i = MaxClients;
                if (name[7] == 'h')
                {
                    int damage = event.GetInt("dmg_health");
                    while (0 < i)
                    {
                        if (IsAdmin_TA_TK[i] && IsClientInGame(i) && GetClientTeam(i) != teammate)
                            PrintToChat(i, "\x01Игрок \x03%N \x04атаковал \x01товарища по команде \x05%N \x01(-%i)", attacker, victim, damage);
                        --i;
                    }
                }
                else
                {
                    while (0 < i)
                    {
                        if (IsAdmin_TA_TK[i] && IsClientInGame(i) && GetClientTeam(i) != teammate)
                            PrintToChat(i, "\x01Игрок \x03%N \x04убил \x01товарища по команде \x05%N", attacker, victim);
                        --i;
                    }
                }
            }
        }
    }
}
 
Сверху Снизу