while(IsDefined(self.current_powerups[powerup])) // Check because from testing if the player is fast enough (Though very rare for it to happen), 2 elements can spawn for same HUD. wait 0.05;
self.current_powerups[powerup] = create_simple_hud( self ); // Made Client HUD so we modify per player for things like Minigun, etc. self.current_powerups[powerup].powerup_name = powerup; self.current_powerups[powerup].foreground = true; self.current_powerups[powerup].sort = 2; self.current_powerups[powerup].hidewheninmenu = false; self.current_powerups[powerup].alignX = "center"; self.current_powerups[powerup].alignY = "bottom"; self.current_powerups[powerup].horzAlign = "center"; self.current_powerups[powerup].vertAlign = "bottom"; self.current_powerups[powerup].x = self.current_powerups[powerup].x; self.current_powerups[powerup].y = self.current_powerups[powerup].y - 35; self.current_powerups[powerup].alpha = 0; self.current_powerups[powerup] setshader(level.zombie_powerups[powerup].shader, 48, 48); self.current_powerups[powerup] scaleOverTime( .3, 32, 32 ); self.current_powerups[powerup] FadeOverTime(0.3); self.current_powerups[powerup].alpha = 1; self.current_powerups[powerup] thread LowTimeFade();
// check to see if this is on or not if ( level.zombie_vars["zombie_powerup_insta_kill_on"] ) { // reset the time and keep going level.zombie_vars["zombie_powerup_insta_kill_time"] = 30; return; }
for( i = 0; i < GetPlayers().size; i ++ ) GetPlayers()[i] thread CreatePowerUpHud( power_up_name );
// set time remaining for insta kill level thread time_remaning_on_insta_kill_powerup( drop_item, power_up_name );
// offset in case we get another powerup //level.zombie_timer_offset -= level.zombie_timer_offset_interval; }
You can see here were are calling it on ALL players, as you may have guessed the 2 functions above and all the stuff is player specific allowing use to have different shaders like Death Machine, etc. while other players don't, and allowing it to scale depending on what player has what for example a player has Insta, Death, and x2 but other will only have the 2 global ones it will show up fine specific to player and move specific to player, this has been tested in co-op and works. :)
Now find the function "time_remaning_on_insta_kill_powerup()" and replace with this:
Code Snippet
Plaintext
time_remaning_on_insta_kill_powerup( drop_item, power_up_name ) // Must pass on power_up_name from above for some reason or it won't work. { //self setvalue( level.zombie_vars["zombie_powerup_insta_kill_time"] ); level thread play_devil_dialog("insta_vox"); temp_enta = spawn("script_origin", (0,0,0)); temp_enta playloopsound("insta_kill_loop");
/* players = get_players(); for (i = 0; i < players.size; i++) { players[i] playloopsound ("insta_kill_loop"); } */
// time it down! while ( level.zombie_vars["zombie_powerup_insta_kill_time"] >= 0) { wait 0.1; level.zombie_vars["zombie_powerup_insta_kill_time"] = level.zombie_vars["zombie_powerup_insta_kill_time"] - 0.1; // self setvalue( level.zombie_vars["zombie_powerup_insta_kill_time"] ); }
players = get_players(); for (i = 0; i < players.size; i++) { //players[i] stoploopsound (2);
players[i] playsound("insta_kill");
}
temp_enta stoploopsound(2); for( i = 0; i < GetPlayers().size; i ++ ) GetPlayers()[i] thread RemovePowerUpHud( power_up_name ); // turn off the timer level.zombie_vars["zombie_powerup_insta_kill_on"] = false;
// remove the offset to make room for new powerups, reset timer for next time level.zombie_vars["zombie_powerup_insta_kill_time"] = 30;
// check to see if this is on or not if ( level.zombie_vars["zombie_powerup_point_doubler_on"] ) { // reset the time and keep going level.zombie_vars["zombie_powerup_point_doubler_time"] = 30; return; }
for( i = 0; i < GetPlayers().size; i ++ ) GetPlayers()[i] thread CreatePowerUpHud( power_up_name );
// time it down! while ( level.zombie_vars["zombie_powerup_point_doubler_time"] >= 0) { wait 0.1; level.zombie_vars["zombie_powerup_point_doubler_time"] = level.zombie_vars["zombie_powerup_point_doubler_time"] - 0.1; //self setvalue( level.zombie_vars["zombie_powerup_point_doubler_time"] ); }
for( i = 0; i < GetPlayers().size; i ++ ) GetPlayers()[i] thread RemovePowerUpHud( power_up_name );
// turn off the timer level.zombie_vars["zombie_powerup_point_doubler_on"] = false; players = get_players(); for (i = 0; i < players.size; i++) { //players[i] stoploopsound("double_point_loop", 2); players[i] playsound("points_loop_off"); } temp_ent stoploopsound(2);
// remove the offset to make room for new powerups, reset timer for next time level.zombie_vars["zombie_powerup_point_doubler_time"] = 30; //level.zombie_timer_offset += level.zombie_timer_offset_interval; //self destroy(); temp_ent delete(); }