Hitmarker
#include maps\mp\_utility;
#include common_scripts\utility;
#include maps\mp\gametypes_zm\_hud_util;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm;
init()
{
level thread onPlayerConnect();
}
onPlayerConnect()
{
self endon("disconnect");
precacheshader("damage_feedback");
self maps\mp\zombies\_zm_spawner::register_zombie_damage_callback(::do_hitmarker);
self maps\mp\zombies\_zm_spawner::register_zombie_death_event_callback(::do_hitmarker_death);
for (;;)
{
level waittill("connected", player);
player thread onPlayerSpawned();
// Añadimos un flag para indicar si la barra está activa (inicialmente desactivada)
player.healthbarzombie_active = false;
player.hud_damagefeedback = newdamageindicatorhudelem( player );
player.hud_damagefeedback.horzalign = "center";
player.hud_damagefeedback.vertalign = "middle";
player.hud_damagefeedback.x = -12;
player.hud_damagefeedback.y = -12;
player.hud_damagefeedback.alpha = 0;
player.hud_damagefeedback.archived = 1;
player.hud_damagefeedback.color = ( 1, 1, 1 );
player.hud_damagefeedback setshader( "damage_feedback", 24, 48 );
player.hud_damagefeedback_red = newdamageindicatorhudelem( player );
player.hud_damagefeedback_red.horzalign = "center";
player.hud_damagefeedback_red.vertalign = "middle";
player.hud_damagefeedback_red.x = -12;
player.hud_damagefeedback_red.y = -12;
player.hud_damagefeedback_red.alpha = 0;
player.hud_damagefeedback_red.archived = 1;
player.hud_damagefeedback_red.color = ( 1, 0, 0 );
player.hud_damagefeedback_red setshader( "damage_feedback", 24, 48 );
}
}
updatedamagefeedback( mod, inflictor, death )
{
if( IsDefined( self.disable_hitmarkers ) || !(isplayer( self )) )
{
return;
}
if( mod != "MOD_HIT_BY_OBJECT" && mod != "MOD_GRENADE_SPLASH" && mod != "MOD_CRUSH" && IsDefined( mod ) )
{
if( IsDefined( inflictor ) )
{
self playlocalsound( "mpl_hit_alert" );
}
if( getdvarintdefault( "redhitmarkers", 1 ) && death )
{
self.hud_damagefeedback_red setshader( "damage_feedback", 24, 48 );
self.hud_damagefeedback_red.alpha = 1;
self.hud_damagefeedback_red fadeovertime( 1 );
self.hud_damagefeedback_red.alpha = 0;
//self.zombieDeathCounter++;
}
else
{
self.hud_damagefeedback setshader( "damage_feedback", 24, 48 );
self.hud_damagefeedback.alpha = 1;
self.hud_damagefeedback fadeovertime( 1 );
self.hud_damagefeedback.alpha = 0;
}
}
return 0;
}
do_hitmarker_death()
{
if( self.attacker != self && isplayer( self.attacker ) && IsDefined( self.attacker ) )
{
self.attacker thread updatedamagefeedback( self.damagemod, self.attacker, 1 );
}
return 0;
}
do_hitmarker( mod, hitloc, hitorig, player, damage )
{
if( player != self && isplayer( player ) && IsDefined( player ) )
{
player.targetZombie = self;
player thread updatedamagefeedback( mod, player, 0 );
}
return 0;
}
[image: 1761496676570-a6ab096a-a099-44ee-bc82-19d32cc5e432-image.png]
[image: 1761496699277-371e09f2-17d0-4be4-a6c7-49d60dca413b-image.png]