Added a RateCompareString function to StringUtils
Created a preprocessor template (define) for DoWith* functions Exported cWorld::FindAndDoWithPlayer(), cRoot::FindAndDoWithPlayer() and cRoot::ForEachPlayer() to Lua Added a function FindAndDoWithPlayer to cRoot and cWorld. It takes a part of a player name and finds a single player based on that. Fixed Core's MOTD to contain the correct URL to the MCServer site Fixed Core /kick command Fixed Core's WebAdmin kick git-svn-id: http://mc-server.googlecode.com/svn/trunk@779 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include "cThread.h"
|
||||
#include "cFileFormatUpdater.h"
|
||||
#include "cRedstone.h"
|
||||
#include "cPlayer.h"
|
||||
#include "blocks/Block.h"
|
||||
#include "items/Item.h"
|
||||
#include "cChunk.h"
|
||||
@@ -423,6 +424,58 @@ bool cRoot::ForEachPlayer(cPlayerListCallback & a_Callback)
|
||||
|
||||
|
||||
|
||||
bool cRoot::FindAndDoWithPlayer(const AString & a_PlayerName, cPlayerListCallback & a_Callback)
|
||||
{
|
||||
class cCallback : public cPlayerListCallback
|
||||
{
|
||||
unsigned int BestRating;
|
||||
unsigned int NameLength;
|
||||
const AString PlayerName;
|
||||
|
||||
cPlayerListCallback & m_Callback;
|
||||
virtual bool Item (cPlayer * a_pPlayer)
|
||||
{
|
||||
unsigned int Rating = RateCompareString (PlayerName, a_pPlayer->GetName());
|
||||
if (Rating > 0 && Rating >= BestRating)
|
||||
{
|
||||
BestMatch = a_pPlayer;
|
||||
if( Rating > BestRating ) NumMatches = 0;
|
||||
BestRating = Rating;
|
||||
++NumMatches;
|
||||
}
|
||||
if (Rating == NameLength) // Perfect match
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public:
|
||||
cCallback (const AString & a_PlayerName, cPlayerListCallback & a_Callback)
|
||||
: m_Callback( a_Callback )
|
||||
, BestMatch( NULL )
|
||||
, BestRating( 0 )
|
||||
, NumMatches( 0 )
|
||||
, NameLength( a_PlayerName.length() )
|
||||
, PlayerName( a_PlayerName )
|
||||
{}
|
||||
|
||||
cPlayer * BestMatch;
|
||||
unsigned int NumMatches;
|
||||
} Callback (a_PlayerName, a_Callback);
|
||||
ForEachPlayer( Callback );
|
||||
|
||||
if (Callback.NumMatches == 1)
|
||||
{
|
||||
return a_Callback.Item (Callback.BestMatch);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void cRoot::LogChunkStats(void)
|
||||
{
|
||||
int SumNumValid = 0;
|
||||
|
||||
Reference in New Issue
Block a user