Я бы делал так:
При создании ENT
Код
//-----------------------------------------------------
public OnEntityCreated(entity, const String:classname[]) {
if(StrEqual(classname, "weapon_hegrenade")) {
SDKHook(entity, SDKHook_StartTouchPost, Touch); // возможно не SDKHook_StartTouchPost, я наскоро пишу.
}
//------------------------------------------------------
Touch(entity, other) { // entity - сама граната | other - что то, с чем произошло взаимодействие гранаты.
char classname[32];
GetEdictClassname(entity, classname, sizeof(classname));
if (StrEqual(classname, "weapon_hegrenade", true)){
int id_HE = StringToInt(classname); // строковая id гранаты в число (лишнее, но уже написал.)
if (other != игрок в радиусе взрыва){
SetEntProp(id_HE , Prop_Data, "m_iMagnitude", 150); // сила взрыва
SetEntProp(id_HE , Prop_Data, "m_iRadiusOverride", 100); // радиус взрыва
Можно задать жизнь гранате, появится возможность взрывать гранаты стреляя по ним.
типа такого:
SetEntProp(id_HE , Prop_Data, "m_iMaxHealth", iHealch);
SetEntProp(id_HE , Prop_Data, "m_iHealth", iHealch);
DispatchKeyValue (id_HE , "ExplodeRadius", "16");
DispatchKeyValue (id_HE , "ExplodeDamage", "10");
SetEntProp(id_HE , Prop_Data, "m_takedamage", 2);
и т.д. Фантазируй.
} else if (if (other == игрок в радиусе взрыва){
игрок улетел на... 3 буквы.
...........................
.......................
.................
............
......
}
}
//-----------------------------------------------------
Я прошу прощения. Здесь ошибка и все молчат. Определение радиуса взрыва делается в цикле.