Senior Member
Join Date: Jul 2010
Location: Spain
|
![Old](images/statusicon/post_old.svg)
06-28-2021
, 11:11
Re: Get 'Owner' of other third entity
|
#7
|
Quote:
Originally Posted by sursista
It seems silly but it makes sense, now I understand it, thank you very much for everything, now work! ![Smile](images/smilies/smile.gif)
|
I have removed the [SOLVED] prefix because I have found one last error and that is:
-If the victim is damaged with damage greater than her life, the bug reoccurs, even if other attackers damage the victim and obtain a flag. If the first / third attacker kills the victim with a single hit (only one), the bug occurs, and does not call the other functions.
My Code (Sweet Revenge)
PHP Code:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
//if (flag_get(g_IsSweetRevenge, victim) && !zp_core_is_zombie(attacker))
//{
if (victim == attacker || !is_user_alive(attacker))
return HAM_IGNORED;
if(is_user_alive(victim) && !zp_core_is_zombie(attacker))
{
g_fDamageToSweetRevenge[attacker] += damage;
set_hudmessage(255, 255, 0, 0.03, 0.88, 0, 6.0, 4.0, 0.1, 0.2, 4)
ShowSyncHudMsg(attacker, g_hudmsg1, "[ESSA] Zombie Hurt Limit: %.2fHP/%iHP.", g_fDamageToSweetRevenge[attacker], get_pcvar_num(g_sr_damage_hp))
if (g_fDamageToSweetRevenge[attacker] >= get_pcvar_float(g_sr_damage_hp))
{
flag_set(g_IsAttacker, attacker)
if (flag_get(g_IsAttacker, attacker))
{
if (get_pcvar_num(g_sr_glow_victim) > 0)
set_user_rendering(attacker, kRenderFxGlowShell, get_pcvar_num(g_sr_glow_victim_R), get_pcvar_num(g_sr_glow_victim_G), get_pcvar_num(g_sr_glow_victim_B), kRenderNormal , 15)
else
set_user_rendering(attacker)
}
}
}
//}
return HAM_IGNORED;
}
public fw_Killed(victim, attacker, shouldgib)
{
//if (flag_get(g_IsSweetRevenge, victim))
//{
if (get_pcvar_num(g_sr_aura))
remove_task(victim+TASK_AURA)
if (is_user_alive(victim) || !zp_core_is_zombie(victim))
return;
flag_set(g_IsAttacker, attacker)
for( new id = 1; id <= 32; id++ )
{
if (flag_get(g_IsAttacker, id))
{
sr_damage(victim, id, "sweetrevenge");
set_user_rendering(id)
g_fDamageToSweetRevenge[id] = 0.0;
}
}
static victim_name[33]
get_user_name(victim, victim_name, sizeof victim_name -1)
set_hudmessage(0, 150, 0, 0.35, 0.50, 0, 6.0, 4.0, 0.1, 0.2, 4)
ShowSyncHudMsg(0, g_hudmsg2, "[ESSA] Zombie %s bought 'Sweet Revenge' and everyone who Hurt Zombie: %iHP also Died!", victim_name, get_pcvar_num(g_sr_damage_hp))
ChatColor(0, "!g[ESSA] Zombie %s !tbought '!gSweet Revenge!t' and everyone who !gHurt Zombie!t: !g%iHP !talso !gDied!t!", victim_name, get_pcvar_num(g_sr_damage_hp))
if(get_pcvar_num(g_sr_done_sound))
{
new sound[SOUND_MAX_LENGTH]
ArrayGetString(g_sound_sweetrevenge_done, random_num(0, ArraySize(g_sound_sweetrevenge_done) - 1), sound, charsmax(sound))
emit_sound(0, CHAN_VOICE, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
//}
}
Code Bazooka (Example)
PHP Code:
baz_damage(id, attacker, damage, weaponDescription[])
{
if ( zp_core_is_zombie(attacker) || !is_user_alive(attacker) || zp_class_nemesis_get(attacker) )
{
ChatColor(attacker, "!g[ESSA] !tThe '!gbug bazooka!t' is !gFixed!")
return;
}
if ( pev(id, pev_takedamage) == DAMAGE_NO )
return;
if ( damage <= 0 )
return;
new userHealth = get_user_health(id);
if (userHealth - damage <= 0 )
{
dmgcount[attacker] += userHealth - damage;
set_msg_block(gmsg_death, BLOCK_SET);
ExecuteHamB(Ham_Killed, id, attacker, 2);
set_msg_block(gmsg_death, BLOCK_NOT);
message_begin(MSG_BROADCAST, gmsg_death);
write_byte(attacker);
write_byte(id);
write_byte(0);
write_string(weaponDescription);
message_end();
//set_pev(attacker, pev_frags, float(get_user_frags(attacker) + 1));
new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
get_user_name(attacker, kname, 31);
get_user_team(attacker, kteam, 9);
get_user_authid(attacker, kauthid, 31);
get_user_name(id, vname, 31);
get_user_team(id, vteam, 9);
get_user_authid(id, vauthid, 31);
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
kname, get_user_userid(attacker), kauthid, kteam,
vname, get_user_userid(id), vauthid, vteam, weaponDescription);
}
else
{
dmgcount[attacker] += damage;
new origin[3];
get_user_origin(id, origin);
message_begin(MSG_ONE,gmsg_damage,{0,0,0},id);
write_byte(21);
write_byte(20);
write_long(DMG_BLAST);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
message_end();
ExecuteHamB(Ham_TakeDamage, id, 2, attacker, float(damage), DMG_GENERIC);
//set_pev(id, pev_health, pev(id, pev_health) - float(damage));
}
}
I insist, if the attacker damages the victim and the first hit is not definitive, everything works fine, but if the attacker or other attackers kill the victim with a single hit of damage, the bug happens.
|
|