Подправьте код [showdamage]

pokypka20

Участник
Сообщения
244
Реакции
31
Написал мини-плагин, изредка лупит ошибку в логи.

PHP:
#include <sourcemod> 
#include <zombiereloaded>

public OnPluginStart() 
{
	HookEvent("player_hurt", Event_OnPlayerHurt);
}	

public Event_OnPlayerHurt(Handle:event, const String:name[], bool:silent) 
{ 
    new attacker = GetClientOfUserId(GetEventInt(event, "attacker")); 
	
	if (ZR_IsClientHuman(attacker) && attacker > 0) 
	{ 
		PrintHintText(attacker, "Осталось хп: %d", GetEventInt(event, "health")); 
	}
}

Ошибка
PHP:
L 10/12/2014 - 13:59:47: [SM] Native "ZR_IsClientHuman" reported: Invalid client index. (0)
L 10/12/2014 - 13:59:47: [SM] Displaying call stack trace for plugin "showdamage.smx":
L 10/12/2014 - 13:59:47: [SM]   [0]  Line 13, D:\scripting\showdamage.sp::Event_OnPlayerHurt()

Как исправить?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #3
Оффтоп
pokypka20, в первую очередь нужно проверять валидность индекса, затем уже клиента. И сначала ставь проверки на которых выше вероятность возврата false.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
AlmazON, ты меня не так понял, имел ввиду что проверки где больше вероятность того, что проверка не будет пройдена (возврат false) нужно ставить первыми.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Понял, поэтому в кавычках false, а спрашиваю о своём. Есть на этот счёт соображения?
где больше вероятность того, что проверка не будет пройдена (возврат false) нужно ставить первыми
Если &&, а в случае || - наоборот!
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
а спрашиваю о своём. Есть на этот счёт соображения?
Я думаю это одно и то же.
Вот смотри:
PHP:
if (!peremennaya) // Если (peremennaya == 0)
{ 
//Выполняется код. 
} // Иначе выполнение переходит сразу на конец тела.

if (peremennaya) return; // Если (peremennaya != 0) переходим на конец ф-и
//Код.

Вот только я не знаю что быстрее == или !=
 

Vit_ amin

Добрая душа
Сообщения
1,525
Реакции
688
Я думаю это одно и то же.
Вот смотри:
PHP:
if (!peremennaya) // Если (peremennaya == 0)
{ 
//Выполняется код. 
} // Иначе выполнение переходит сразу на конец тела.

if (peremennaya) return; // Если (peremennaya != 0) переходим на конец ф-и
//Код.

Вот только я не знаю что быстрее == или !=
Profile возьми да и посмотри, что быстрее ...
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
Vit_ amin, AlmazON, я читал о нем, но не пробывал юзать.
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #9
Сверху Снизу