void RadarHackBlocker::RT_ProcessEntity ( SourceSdk::edict_t const * const pent )
{
	ClientRadarData * pData ( GetPlayerDataStructByIndex ( Helpers::IndexOfEdict ( pent ) ) );

	static MRecipientFilter filter;
	filter.RemoveAll ();

	filter.SetReliable ( false );

	if( pData->m_last_spotted_status == true )
	{
		/*
			Entity is spotted -> send approximative data to all players
		*/

		filter.AddAllPlayers ( NczPlayerManager::GetInstance ()->GetMaxIndex () );

		RT_SendApproximativeRadarUpdate ( filter, pData );
	}
	else
	{
		/*
			Entity is not spotted -> send approximative data to teammates and spectators, random for others.
		*/


		filter.AddTeam ( pData->m_team );
		filter.AddTeam ( TEAM_SPECTATOR );
		filter.AddTeam ( TEAM_NONE );

		filter.RemoveRecipient ( pData->m_origin_index );

		RT_SendApproximativeRadarUpdate ( filter, pData );

		filter.RemoveAll ();

		if( pData->m_team == TEAM_1 )
		{
			filter.AddTeam ( TEAM_2 );
		}
		else if( pData->m_team == TEAM_2 )
		{
			filter.AddTeam ( TEAM_1 );
		}
		else
		{
			return;
		}

		RT_SendRandomRadarUpdate ( filter, pData );
	}
}
//---------------------------------------------------------------------------------
// Purpose: Say string to all players in center of screen
//---------------------------------------------------------------------------------
void CSayToAll
(
const char	*fmt, 
...
)
{
	va_list		argptr;
	char		tempString[1024];

	va_start ( argptr, fmt );
	vsnprintf( tempString, sizeof(tempString), fmt, argptr );
	va_end   ( argptr );

	MRecipientFilter mrf;
	mrf.MakeReliable();
	mrf.AddAllPlayers(max_players);

#if defined ( GAME_CSGO )
	CCSUsrMsg_TextMsg *msg = (CCSUsrMsg_TextMsg *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_TextMsg)->New(); // Show TextMsg type user message
	msg->set_msg_dst(4); // Center area
	// Client tries to read all 5 'params' and will crash if less
	msg->add_params(tempString);
	msg->add_params("");
	msg->add_params("");
	msg->add_params("");
	msg->add_params("");
	engine->SendUserMessage(mrf, CS_UM_TextMsg, *msg);
	delete msg;
#else
	msg_buffer = engine->UserMessageBegin( &mrf, text_message_index ); // Show TextMsg type user message

	msg_buffer->WriteByte(4); // Center area
	msg_buffer->WriteString(tempString);
	engine->MessageEnd();
#endif	
}
//---------------------------------------------------------------------------------
// Purpose: Say admin string to all
//---------------------------------------------------------------------------------
void AdminHSayToAll
(
player_t	*player,
int			anonymous,
const char	*fmt, 
...
)
{
	va_list		argptr;
	char		tempString[1024];
	char	admin_final_string[1024];
	char	non_admin_final_string[1024];
	bool	found_player = false;
	bool	found_admin = false;

	va_start ( argptr, fmt );
	vsnprintf( tempString, sizeof(tempString), fmt, argptr );
	va_end   ( argptr );

	player_t	server_player;

	if (!player)
	{
		snprintf(admin_final_string, sizeof (admin_final_string), "(CONSOLE) : %s", tempString);
		snprintf(non_admin_final_string, sizeof (non_admin_final_string), "(CONSOLE) %s", tempString);
	}
	else
	{
		snprintf(admin_final_string, sizeof (admin_final_string), "(ADMIN) %s: %s", player->name, tempString);
		snprintf(non_admin_final_string, sizeof (non_admin_final_string), "(ADMIN) %s", tempString);
	}

	OutputToConsole(NULL, "%s\n", admin_final_string);

	SplitHintString(admin_final_string, 34);
	SplitHintString(non_admin_final_string, 34);

	if (anonymous == 1)
	{
		MRecipientFilter mrfadmin;
		MRecipientFilter mrf;
		mrf.MakeReliable();
		mrfadmin.MakeReliable();

		for (int i = 1; i <= max_players; i++)
		{
			bool is_admin;

			is_admin = false;
			server_player.index = i;
			if (!FindPlayerByIndex(&server_player))
			{
				continue;
			}

			if (server_player.is_bot)
			{
				continue;
			}

			is_admin = gpManiClient->HasAccess(server_player.index, ADMIN, ADMIN_BASIC_ADMIN);
			if (is_admin)
			{
				found_admin = true;
				mrfadmin.AddPlayer(i);
//				OutputToConsole(server_player.entity, "%s\n", admin_final_string);
			}
			else
			{
				found_player = true;
				mrf.AddPlayer(i);
//				OutputToConsole(server_player.entity, "%s\n", non_admin_final_string);
			}
		}

		if (found_player)
		{
			UTIL_SayHint(&mrf, non_admin_final_string);
		}

		if (found_admin)
		{
			UTIL_SayHint(&mrfadmin, admin_final_string);
		}
	}
	else
	{
		for (int i = 1; i <= max_players; i++)
		{
			server_player.index = i;
			if (!FindPlayerByIndex(&server_player))
			{
				continue;
			}

			if (server_player.is_bot)
			{
				continue;
			}

			found_player = true;
//			OutputToConsole(server_player.entity, "%s\n", admin_final_string);
		}

		if (found_player)
		{
			MRecipientFilter mrf;
			mrf.MakeReliable();
			mrf.AddAllPlayers(max_players);

			UTIL_SayHint(&mrf, admin_final_string);
		}
	}
}
//---------------------------------------------------------------------------------
// Purpose: Say admin string to all
//---------------------------------------------------------------------------------
void AdminCSayToAll
(
player_t	*player,
int			anonymous,
const char	*fmt, 
...
)
{
	va_list		argptr;
	char		tempString[1024];
	char	admin_final_string[2048];
	char	non_admin_final_string[2048];
	bool	found_player = false;
	bool	found_admin = false;

	va_start ( argptr, fmt );
	vsnprintf( tempString, sizeof(tempString), fmt, argptr );
	va_end   ( argptr );

	player_t	server_player;

	if (!player)
	{
		snprintf(admin_final_string, sizeof (admin_final_string), "(CONSOLE) : %s", tempString);
		snprintf(non_admin_final_string, sizeof (non_admin_final_string), "(CONSOLE) %s", tempString);
	}
	else
	{
		snprintf(admin_final_string, sizeof (admin_final_string), "(ADMIN) %s: %s", player->name, tempString);
		snprintf(non_admin_final_string, sizeof (non_admin_final_string), "(ADMIN) %s", tempString);
	}

	OutputToConsole(NULL, "%s\n", admin_final_string);

	if (anonymous == 1)
	{
		MRecipientFilter mrfadmin;
		MRecipientFilter mrf;
		mrf.MakeReliable();
		mrfadmin.MakeReliable();

		for (int i = 1; i <= max_players; i++)
		{
			bool is_admin;

			is_admin = false;
			server_player.index = i;
			if (!FindPlayerByIndex(&server_player))
			{
				continue;
			}

			if (server_player.is_bot)
			{
				continue;
			}

			is_admin = gpManiClient->HasAccess(server_player.index, ADMIN, ADMIN_BASIC_ADMIN);
			if (is_admin)
			{
				found_admin = true;
				mrfadmin.AddPlayer(i);
				if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) ||
					  gpManiGameType->IsGameType(MANI_GAME_CSGO)))
				{
					OutputToConsole(&server_player, "%s\n", admin_final_string);
				}
			}
			else
			{
				found_player = true;
				mrf.AddPlayer(i);
				if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) ||
					gpManiGameType->IsGameType(MANI_GAME_CSGO)))
				{
					OutputToConsole(&server_player, "%s\n", non_admin_final_string);
				}
			}
		}

		if (found_player)
		{
#if defined ( GAME_CSGO )
			CCSUsrMsg_TextMsg *msg = (CCSUsrMsg_TextMsg *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_TextMsg)->New(); // Show TextMsg type user message
			msg->set_msg_dst(4); // Center area
			// Client tries to read all 5 'params' and will crash if less
			msg->add_params(non_admin_final_string);
			msg->add_params("");
			msg->add_params("");
			msg->add_params("");
			msg->add_params("");
			engine->SendUserMessage(mrf, CS_UM_TextMsg, *msg);
			delete msg;
#else
			msg_buffer = engine->UserMessageBegin( &mrf, text_message_index ); // Show TextMsg type user message

			msg_buffer->WriteByte(4); // Center area
			msg_buffer->WriteString(non_admin_final_string);
			engine->MessageEnd();
#endif			
		}

		if (found_admin)
		{
#if defined ( GAME_CSGO )
			CCSUsrMsg_TextMsg *msg = (CCSUsrMsg_TextMsg *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_TextMsg)->New(); // Show TextMsg type user message
			msg->set_msg_dst(4); // Center area
			// Client tries to read all 5 'params' and will crash if less
			msg->add_params(admin_final_string);
			msg->add_params("");
			msg->add_params("");
			msg->add_params("");
			msg->add_params("");
			engine->SendUserMessage(mrfadmin, CS_UM_TextMsg, *msg);
			delete msg;
#else
			msg_buffer = engine->UserMessageBegin( &mrfadmin, text_message_index ); // Show TextMsg type user message

			msg_buffer->WriteByte(4); // Center area
			msg_buffer->WriteString(admin_final_string);
			engine->MessageEnd();
#endif			
		}
	}
	else
	{
		for (int i = 1; i <= max_players; i++)
		{
			server_player.index = i;
			if (!FindPlayerByIndex(&server_player))
			{
				continue;
			}

			if (server_player.is_bot)
			{
				continue;
			}

			found_player = true;
			if (!(gpManiGameType->IsGameType(MANI_GAME_CSS) ||
				gpManiGameType->IsGameType(MANI_GAME_CSGO)))
			{
				OutputToConsole(&server_player, "%s\n", admin_final_string);
			}
		}

		if (found_player)
		{
			MRecipientFilter mrf;
			mrf.MakeReliable();
			mrf.AddAllPlayers(max_players);

#if defined ( GAME_CSGO )
			CCSUsrMsg_TextMsg *msg = (CCSUsrMsg_TextMsg *)g_Cstrike15UsermessageHelpers.GetPrototype(CS_UM_TextMsg)->New(); // Show TextMsg type user message
			msg->set_msg_dst(4); // Center area
			// Client tries to read all 5 'params' and will crash if less
			msg->add_params(admin_final_string);
			msg->add_params("");
			msg->add_params("");
			msg->add_params("");
			msg->add_params("");
			engine->SendUserMessage(mrf, CS_UM_TextMsg, *msg);
			delete msg;
#else
			msg_buffer = engine->UserMessageBegin( &mrf, text_message_index ); // Show TextMsg type user message

			msg_buffer->WriteByte(4); // Center area
			msg_buffer->WriteString(admin_final_string);
			engine->MessageEnd();
#endif			
		}
	}
}