summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Plugins/Core/teleport.lua25
-rw-r--r--source/Globals.h12
-rw-r--r--source/cWorld.cpp2
3 files changed, 28 insertions, 11 deletions
diff --git a/Plugins/Core/teleport.lua b/Plugins/Core/teleport.lua
index 4dd13c64d..90eb3529a 100644
--- a/Plugins/Core/teleport.lua
+++ b/Plugins/Core/teleport.lua
@@ -3,16 +3,21 @@ function HandleTPCommand( Split, Player )
Player:SendMessage( cChatColor.Green .. "Usage: /tp [PlayerName]" )
return true
end
- local World = Player:GetWorld()
- local OtherPlayer = World:GetPlayer( Split[2] )
- if( OtherPlayer == nil ) then
+
+ World = Player:GetWorld()
+
+ 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] )
- elseif( 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
return true
end \ No newline at end of file
diff --git a/source/Globals.h b/source/Globals.h
index 65db1b436..9b057d262 100644
--- a/source/Globals.h
+++ b/source/Globals.h
@@ -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;
+}
diff --git a/source/cWorld.cpp b/source/cWorld.cpp
index c2a943493..f904d8ceb 100644
--- a/source/cWorld.cpp
+++ b/source/cWorld.cpp
@@ -1534,7 +1534,7 @@ bool cWorld::DoWithPlayer(const AString & a_PlayerName, cPlayerListCallback & a_
cCSLock Lock(m_CSPlayers);
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);
return true;