Exception reported: Client index 160 is invalid

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Подскажите люди добрые:
C-подобный:
public Action OnTakeDamage(int iVictim, int &iAttacker, int &iInflictor, float &fDamage, int &iDamageType, int &Weapon, float fDamageForce[3], float fDamagePosition[3], int iDamageCustom)
{
    if(iAttacker && iVictim && GetClientTeam(iAttacker) != GetClientTeam(iVictim))
    {
        //код
    }
}

Выдаёт ошибку третей строки хоть ты тресни, какие я проверки только не пробовал

C-подобный:
L 07/04/2021 - 18:36:31: [SM] Exception reported: Client index 160 is invalid
L 07/04/2021 - 18:36:31: [SM] Blaming: plugin.smx
L 07/04/2021 - 18:36:31: [SM] Call stack trace:
L 07/04/2021 - 18:36:31: [SM]   [0] GetClientTeam
L 07/04/2021 - 18:36:31: [SM]   [1] Line 3, plugin.sp::OnTakeDamage
 

DENFER

Пишу плагины за два биг тести и картошку фри..
Сообщения
260
Реакции
289
Условия iAttacker && iVictim гарантируют только то, что индексы клиентов не будут равны 0, советую добавить после них IsClientInGame() или client > 0 && client <= MaxClients
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
if(iAttacker > 0 && iAttacker <= MaxClients && iVictim <= MaxClients && IsClientInGame(iAttacker) && GetClientTeam(iAttacker) != GetClientTeam(iVictim))

индекс 0 не может получить урон, то есть для iVictim нужно одно условие < 65.
тот кто получил урон не может быть вне игры, что означает нужно проверка только на атакующего(кинул бомбу и вышел например)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
@Madness aka null138, тут скорее достаточно проверки на <65 только для аттакера. Поскольку это сдкхук OnTakeDamage, я сильно сомневаюсь, что ТС его навешивает на обычные энтити, так просто никто не делает.
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
Спасибо, работает
 
Сверху Снизу