fixed /tp command
made cWorld::DoWithPlayer case insensitive git-svn-id: http://mc-server.googlecode.com/svn/trunk@662 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
abf9e3f6dd
commit
f4b66cbbdb
@ -3,16 +3,21 @@ function HandleTPCommand( Split, Player )
|
|||||||
Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" )
|
Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" )
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
local World = Player:GetWorld()
|
|
||||||
local OtherPlayer = World:GetPlayer( Split[2] )
|
World = Player:GetWorld()
|
||||||
if( OtherPlayer == nil ) then
|
|
||||||
|
local TeleportDestination = function(OtherPlayer)
|
||||||
|
if( OtherPlayer == Player ) then
|
||||||
|
Player:SendMessage( cChatColor.Green .. "Already there :)" )
|
||||||
|
else
|
||||||
|
Player:TeleportToEntity( OtherPlayer )
|
||||||
|
Player:SendMessage( cChatColor.Green .. "You teleported to "..OtherPlayer:GetName().."!" )
|
||||||
|
OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (not(World:DoWithPlayer(Split[2], TeleportDestination))) then
|
||||||
Player:SendMessage( cChatColor.Green .. "Can't find player " .. Split[2] )
|
Player:SendMessage( cChatColor.Green .. "Can't find player " .. Split[2] )
|
||||||
elseif( OtherPlayer == Player ) then
|
end
|
||||||
Player:SendMessage( cChatColor.Green .. "Already there :)" )
|
|
||||||
else
|
|
||||||
Player:TeleportToEntity( OtherPlayer )
|
|
||||||
Player:SendMessage( cChatColor.Green .. "You teleported to "..OtherPlayer:GetName().."!" )
|
|
||||||
OtherPlayer:SendMessage( cChatColor.Green .. Player:GetName().." teleported to you!" )
|
|
||||||
end
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
@ -200,3 +200,15 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Common functions
|
||||||
|
//Taken from http://stackoverflow.com/questions/11635/case-insensitive-string-comparison-in-c
|
||||||
|
inline bool iequals(const std::string& a, const std::string& b)
|
||||||
|
{
|
||||||
|
unsigned int sz = a.size();
|
||||||
|
if (b.size() != sz)
|
||||||
|
return false;
|
||||||
|
for (unsigned int i = 0; i < sz; ++i)
|
||||||
|
if (tolower(a[i]) != tolower(b[i]))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@ -1534,7 +1534,7 @@ bool cWorld::DoWithPlayer(const AString & a_PlayerName, cPlayerListCallback & a_
|
|||||||
cCSLock Lock(m_CSPlayers);
|
cCSLock Lock(m_CSPlayers);
|
||||||
for (cPlayerList::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
|
for (cPlayerList::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
|
||||||
{
|
{
|
||||||
if ((*itr)->GetName() == a_PlayerName)
|
if (iequals((*itr)->GetName(), a_PlayerName))
|
||||||
{
|
{
|
||||||
a_Callback.Item(*itr);
|
a_Callback.Item(*itr);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user