Участник
Пользователь
- Сообщения
- 702
- Реакции
- 54
Приветствую. Есть плагин динамита, который устанавливается на пол на Е, так же на второе нажатие Е он взрывается, но почему-то не наносит урон..
Динамит должен наносить урон только противнику, не цепляя владельца (тот, который поставил динамит) и его тиммейтов. Т.е дамажить должен только врагов! Но он не дамажит никого, просто взрывается.
Код:
public bool:UseAbility(id)
{
new Float:origin[3];
get_entvar(id, var_origin, origin);
new ent = rg_create_entity("info_target");
set_entvar(ent, var_classname, "dynamite");
set_entvar(ent, var_owner, id);
set_entvar(ent, var_origin, origin);
entity_set_model(ent, MODEL_NAME);
drop_to_floor(ent);
dynamite_num[id]++;
dynamite_ent[id] = ent;
dynamite_activated[id] = true;
return true;
}
public bool:Explosion(ent)
{
new attacker = get_entvar(ent, var_owner);
if(!is_user_connected(attacker))
{
set_entvar(ent, var_flags, get_entvar(ent, var_flags) | FL_KILLME);
return false;
}
new Float:origin[3];
get_entvar(ent, var_origin, origin);
message_begin_f(MSG_BROADCAST, SVC_TEMPENTITY, origin);
write_byte(TE_EXPLOSION);
write_coord_f(origin[0]);
write_coord_f(origin[1]);
write_coord_f(origin[2]);
write_short(sprite_id);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
new TeamName:attacker_team = get_member(attacker, m_iTeam);
new victim = -1;
while((victim = find_ent_in_sphere(victim, origin, DYNAMITE_RADIUS)))
{
if(!is_user_alive(victim))
continue;
if(attacker_team == get_member(victim, m_iTeam))
continue;
new ret;
ExecuteForward(forward_id, ret, ent, attacker, victim, DYNAMITE_DAMAGE);
if(!ret)
{
rg_multidmg_clear();
rg_multidmg_add(ent, victim, DYNAMITE_DAMAGE, DMG_GRENADE);
rg_multidmg_apply(ent, attacker);
}
}
set_entvar(ent, var_flags, get_entvar(ent, var_flags) | FL_KILLME);
dynamite_ent[attacker] = -1;
dynamite_activated[attacker] = false;
return true;
}