track_players_intersection_tracker()
{
self endon( "disconnect" );
self endon( "death" );
level endon( "end_game" );
wait( 5 );
while ( 1 )
{
killed_players = false;
players = GET_PLAYERS();
for ( i = 0; i < players.size; i++ )
{
if ( players[i] maps\mp\zombies\_zm_laststand::player_is_in_laststand() || "playing" != players[i].sessionstate )
{
continue;
}
for ( j = 0; j < players.size; j++ )
{
if ( i == j || players[j] maps\mp\zombies\_zm_laststand::player_is_in_laststand() || "playing" != players[j].sessionstate )
{
continue;
}
if ( isDefined( level.player_intersection_tracker_override ) )
{
if ( players[i] [[level.player_intersection_tracker_override]]( players[j] ) )
{
continue;
}
}
playerI_origin = players[i].origin;
playerJ_origin = players[j].origin;
//Check height first
if ( abs(playerI_origin[2] - playerJ_origin[2] ) > 60 )
continue;
//Check 2d distance
distance_apart = distance2d( playerI_origin, playerJ_origin );
//IPrintLnBold( "player=", i, ",", j, "distance_apart=", distance_apart );
if ( abs(distance_apart) > 18 )
continue;
/#
IPrintLnBold( "PLAYERS ARE TOO FRIENDLY!!!!!" );
#/
players[i] dodamage( 1000, (0, 0, 0) );
players[j] dodamage( 1000, (0, 0, 0) );
if ( !killed_players )
{
players[i] playlocalsound( level.zmb_laugh_alias );
}
players[i] maps\mp\zombies\_zm_stats::increment_map_cheat_stat( "cheat_too_friendly" );
players[i] maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_too_friendly",false );
players[i] maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_total",false );
players[j] maps\mp\zombies\_zm_stats::increment_map_cheat_stat( "cheat_too_friendly" );
players[j] maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_too_friendly",false );
players[j] maps\mp\zombies\_zm_stats::increment_client_stat( "cheat_total",false );
killed_players = true;
}
}
wait( .5 );
}
}
level.player_intersection_tracker_override = ::arbitraryfunctionofdoom;
arbitraryfunctionofdoom( player )
{
wait .05; //Prevent a crazy continue loop. You could also say wait 999 or waittill("eternity") i think.
return true;
}

disablePlayerIntersectionTracker()
{
level.player_intersection_tracker_override = ::playerIntersectionTrackerOverride;
}
playerIntersectionTrackerOverride(player)
{
self waittill("forever");
return true;
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.