[Решено] Как отловить flash-assisted

Tretlenz

Участник
Сообщения
37
Реакции
0
Операционная система
Windows
Всем привет! Пишу плагин для отлова нужных мне событий на сервере. Встал вопрос: как отловить был ли флеш ассист в момент убийства? Если да, то от кого?
 

Tretlenz

Участник
Сообщения
37
Реакции
0
Там единственное упоминание про флеш ассист в player_death. Но там булевское значение, которое показывает был ли флеш ассист от того, кто ассистировал в убийстве. А мне надо узнать кто является флеш-ассистентом
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403
Там единственное упоминание про флеш ассист в player_death. Но там булевское значение, которое показывает был ли флеш ассист от того, кто ассистировал в убийстве. А мне надо узнать кто является флеш-ассистентом
ксго научилась передавать 3+ ассистентов?
assistedflash - является ли ассистент ослепителем
assister - userid ассистента

пожалуйста, читайте описание внимательно. да и подумоть было бы неплохо
 

Tretlenz

Участник
Сообщения
37
Реакции
0
ксго научилась передавать 3+ ассистентов?
assistedflash - является ли ассистент ослепителем
assister - userid ассистента

пожалуйста, читайте описание внимательно. да и подумоть было бы неплохо

Так я и написал 1 в 1 то, что и Вы про ослепителя.
Про 3+ ассистента - откуда 3+? Я говорил про максимум 2: по дамагу и по ослеплению.
Я имею ввиду как мне отловить и обычный ассист(по урону), и флеш-ассист?
1683987401207.png
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403
3 ассиста. ору

можно сохранять недавние ослепления в глобальный массив используя blind hook
 

Tretlenz

Участник
Сообщения
37
Реакции
0
3 ассиста. ору

можно сохранять недавние ослепления в глобальный массив используя blind hook
Я тоже думал над тем, чтоб хранить все ослепления в массиве. Но убить игрока могут и спустя долгое время после того, как он был ослеплен - это ведь уже не считается ассистом

Ну и по поводу этого - я не понимаю чего-то? Откуда 3 то? На скрине же убийца + ассистент по урону + ассистент по флешке
 
Последнее редактирование:

xstage

🏹
Сообщения
726
Реакции
754
Я тоже думал над тем, чтоб хранить все ослепления в массиве. Но убить игрока могут и спустя долгое время после того, как он был ослеплен - это ведь уже не считается ассистом


Ну и по поводу этого - я не понимаю чего-то? Откуда 3 то? На скрине же убийца + ассистент по урону + ассистент по флешке
C-подобный:
float g_fFlashDuration[MAXPLAYERS+1];
int g_iFlashAttacker[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("player_blind", Event_PlayerBlind);
    HookEvent("player_death", Event_DeathPlayer);
}

void Event_DeathPlayer(Event hEvent, const char[] szEvent, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    
    if (g_fFlashDuration[iClient] - GetGameTime() > 0 && (g_iFlashAttacker[iClient] = GetClientOfUserId(g_iFlashAttacker[iClient])))
    {
        // g_iFlashAttacker[iClient]
    }
}

void Event_PlayerBlind(Event hEvent, const char[] szEvent, bool dontBroadcast)
{
    int iTarget = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    int iAttacker = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
    float fDuration = GetEventFloat(hEvent, "blind_duration");
    
    g_fFlashDuration[iTarget] = GetGameTime() + fDuration;
    g_iFlashAttacker[iTarget] = GetClientUserId(iAttacker);
}
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403
Но убить игрока могут и спустя долгое время после того, как он был ослеплен - это ведь уже не считается ассистом
а зачем обрабатывать ассиста по ослеплению, если ивент показывает false?
 

Tretlenz

Участник
Сообщения
37
Реакции
0
C-подобный:
float g_fFlashDuration[MAXPLAYERS+1];
int g_iFlashAttacker[MAXPLAYERS+1];

public void OnPluginStart()
{
    HookEvent("player_blind", Event_PlayerBlind);
    HookEvent("player_death", Event_DeathPlayer);
}

void Event_DeathPlayer(Event hEvent, const char[] szEvent, bool dontBroadcast)
{
    int iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
   
    if (g_fFlashDuration[iClient] - GetGameTime() > 0 && (g_iFlashAttacker[iClient] = GetClientOfUserId(g_iFlashAttacker[iClient])))
    {
        // g_iFlashAttacker[iClient]
    }
}

void Event_PlayerBlind(Event hEvent, const char[] szEvent, bool dontBroadcast)
{
    int iTarget = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    int iAttacker = GetClientOfUserId(GetEventInt(hEvent, "attacker"));
    float fDuration = GetEventFloat(hEvent, "blind_duration");
   
    g_fFlashDuration[iTarget] = GetGameTime() + fDuration;
    g_iFlashAttacker[iTarget] = GetClientUserId(iAttacker);
}
Спасибо большое!
 
Сверху Снизу