diff --git a/Zombies Mods/Hitmarkers/README.md b/Zombies Mods/Hitmarkers/README.md new file mode 100644 index 0000000..282ae40 --- /dev/null +++ b/Zombies Mods/Hitmarkers/README.md @@ -0,0 +1,4 @@ +# ZOMBIES HITMARKERS + +## NOTES +- Take the precompiled version and place it inside %localappdata%/Plutonium/storage/t6/scripts/zm/ or use the source code for your own GSC diff --git a/Zombies Mods/Hitmarkers/zm_hitmarkers-compiled.gsc b/Zombies Mods/Hitmarkers/zm_hitmarkers-compiled.gsc new file mode 100644 index 0000000..2887a59 Binary files /dev/null and b/Zombies Mods/Hitmarkers/zm_hitmarkers-compiled.gsc differ diff --git a/Zombies Mods/Hitmarkers/zm_hitmarkers-source.gsc b/Zombies Mods/Hitmarkers/zm_hitmarkers-source.gsc new file mode 100644 index 0000000..767a2a6 --- /dev/null +++ b/Zombies Mods/Hitmarkers/zm_hitmarkers-source.gsc @@ -0,0 +1,88 @@ +#include maps\mp\_utility; +#include common_scripts\utility; +#include maps\mp\gametypes_zm\_hud_util; +#include maps\mp\gametypes_zm\_hud_message; + +init() +{ + level thread init_hitmarkers(); +} + +init_hitmarkers() +{ + precacheshader( "damage_feedback" ); + + maps/mp/zombies/_zm_spawner::register_zombie_damage_callback(::do_hitmarker); + maps/mp/zombies/_zm_spawner::register_zombie_death_event_callback(::do_hitmarker_death); + + for( ;; ) + { + level waittill( "connected", player ); + 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 ) //checked matches cerberus output +{ + if ( !isplayer( self ) || isDefined( self.disable_hitmarkers )) + { + return; + } + if ( isDefined( mod ) && mod != "MOD_CRUSH" && mod != "MOD_GRENADE_SPLASH" && mod != "MOD_HIT_BY_OBJECT" ) + { + if ( isDefined( inflictor )) + { + self playlocalsound( "mpl_hit_alert" ); + } + if( death && getdvarintdefault( "redhitmarkers", 1 )) + { + 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; + } + 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( isDefined( self.attacker ) && isplayer( self.attacker ) && self.attacker != self ) + { + self.attacker thread updatedamagefeedback( self.damagemod, self.attacker, 1 ); + } + return 0; +} + +do_hitmarker(mod, hitloc, hitorig, player, damage) +{ + if( isDefined( player ) && isplayer( player ) && player != self ) + { + player thread updatedamagefeedback( mod, player, 0 ); + } + return 0; +}