находишь команду !ping
- Код: Выделить всё
//
// !PING
// !P
//
else if( Command == "ping" || Command == "p" )
{
// kick players with ping higher than payload if payload isn't empty
// we only do this if the game hasn't started since we don't want to kick players from a game in progress
uint32_t Kicked = 0;
uint32_t KickPing = 0;
string Pings;
string CN = string();
if (!Payload.empty())
{
CGamePlayer *LastMatch = NULL;
uint32_t Matches = GetPlayerFromNamePartial( Payload , &LastMatch );
if( Matches == 0 )
CONSOLE_Print("No matches");
else if( Matches == 1 )
{
Pings = LastMatch->GetName( );
Pings +=": ";
if( LastMatch->GetNumPings( ) > 0 )
{
Pings += UTIL_ToString( LastMatch->GetPing( m_GHost->m_LCPings ) );
Pings += " "+m_GHost->m_Language->GetLang("lang_1017"); //" ms";
} else
Pings += " "+m_GHost->m_Language->GetLang("lang_1018"); // N/A";
Pings += " (";
CN = LastMatch->GetCountry();
Pings += CN;
Pings += ")";
SendAllChat(Pings);
return HideCommand;
}
else
CONSOLE_Print("Found more than one match");
}
if( !m_GameLoading && !m_GameLoaded && !Payload.empty( ) )
KickPing = UTIL_ToUInt32( Payload );
// copy the m_Players vector so we can sort by descending ping so it's easier to find players with high pings
vector<CGamePlayer *> SortedPlayers = m_Players;
sort( SortedPlayers.begin( ), SortedPlayers.end( ), CGamePlayerSortDescByPing( ) );
for( vector<CGamePlayer *> :: iterator i = SortedPlayers.begin( ); i != SortedPlayers.end( ); i++ )
{
Pings += (*i)->GetNameTerminated( );
Pings += ": ";
if( (*i)->GetNumPings( ) > 0 )
{
Pings += UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) );
if( !m_GameLoading && !m_GameLoaded && !(*i)->GetReserved( ) && KickPing > 0 && (*i)->GetPing( m_GHost->m_LCPings ) > KickPing )
{
(*i)->SetDeleteMe( true );
(*i)->SetLeftReason( m_GHost->m_Language->GetLang("lang_1189", "$PING$", UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) ), "$PINGMAX$", UTIL_ToString( KickPing ) )); // "was kicked for excessive ping " + UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) ) + " > " + UTIL_ToString( KickPing )
(*i)->SetLeftCode( PLAYERLEAVE_LOBBY );
OpenSlot( GetSIDFromPID( (*i)->GetPID( ) ), false );
Kicked++;
}
Pings += m_GHost->m_Language->GetLang("lang_1017"); // "ms"
}
else
Pings += m_GHost->m_Language->GetLang("lang_1018"); // "N/A";
if( i != SortedPlayers.end( ) - 1 )
Pings += ", ";
}
SendAllChat( Pings );
m_GHost->UDPChatSend("|lobbyupdate");
if( Kicked > 0 )
SendAllChat( m_GHost->m_Language->GetLang("lang_0060", "$TOTAL$", UTIL_ToString( Kicked ), "$PING$", UTIL_ToString( KickPing ) ) ); // KickingPlayersWithPingsGreaterThan
return HideCommand;
}