diff -r 44283a1cdf0b src/server/game/Scripting/ScriptLoader.cpp
--- a/src/server/game/Scripting/ScriptLoader.cpp	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/game/Scripting/ScriptLoader.cpp	Sat Aug 11 00:12:25 2012 +0300
@@ -23,6 +23,7 @@
 void AddSC_example_gossip_codebox();
 void AddSC_example_misc();
 void AddSC_example_commandscript();
+void AddSC_custom_misc();
 
 // spells
 void AddSC_deathknight_spell_scripts();
@@ -1232,6 +1233,7 @@
 void AddCustomScripts()
 {
 #ifdef SCRIPTS
+    AddSC_custom_misc();
     /* This is where custom scripts should be added. */
 
 #endif
diff -r 44283a1cdf0b src/server/game/World/World.cpp
--- a/src/server/game/World/World.cpp	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/game/World/World.cpp	Sat Aug 11 00:12:25 2012 +0300
@@ -1200,6 +1200,9 @@
     m_bool_configs[CONFIG_PDUMP_NO_PATHS] = ConfigMgr::GetBoolDefault("PlayerDump.DisallowPaths", true);
     m_bool_configs[CONFIG_PDUMP_NO_OVERWRITE] = ConfigMgr::GetBoolDefault("PlayerDump.DisallowOverwrite", true);
 
+    //Multiboxing checking system
+    m_bool_configs[CONFIG_MULTIBOXING_KICK_ENABLE] = ConfigMgr::GetBoolDefault("Multiboxing.Kick.Enable", false);
+
     // call ScriptMgr if we're reloading the configuration
     if (reload)
         sScriptMgr->OnConfigLoad(reload);
diff -r 44283a1cdf0b src/server/game/World/World.h
--- a/src/server/game/World/World.h	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/game/World/World.h	Sat Aug 11 00:12:25 2012 +0300
@@ -164,6 +164,7 @@
     CONFIG_QUEST_IGNORE_AUTO_ACCEPT,
     CONFIG_QUEST_IGNORE_AUTO_COMPLETE,
     CONFIG_WARDEN_ENABLED,
+    CONFIG_MULTIBOXING_KICK_ENABLE,
     BOOL_CONFIG_VALUE_COUNT
 };
 
diff -r 44283a1cdf0b src/server/scripts/Custom/CMakeLists.txt
--- a/src/server/scripts/Custom/CMakeLists.txt	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/scripts/Custom/CMakeLists.txt	Sat Aug 11 00:12:25 2012 +0300
@@ -10,6 +10,7 @@
 
 set(scripts_STAT_SRCS
   ${scripts_STAT_SRCS}
+  Custom/custom_misc.cpp
 )
 
 message("  -> Prepared: Custom")
diff -r 44283a1cdf0b src/server/scripts/Custom/custom_misc.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/server/scripts/Custom/custom_misc.cpp	Sat Aug 11 00:12:25 2012 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (C) 2008 - 2011 Trinity <http://www.trinitycore.org/>
+*
+* Copyright (C) 2006 - 2011 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
+*
+* Copyright (C) 2011 Arcanum Core Private <https://bitbucket.org/Dimitro/arcanum-core-private/>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+*/
+
+#include "ScriptPCH.h"
+#include "Config.h"
+
+class ip_check : public PlayerScript
+{
+public:
+    ip_check() : PlayerScript("ip_check") {}
+
+    void OnLogin(Player* player)
+    {
+        if (sWorld->getBoolConfig(CONFIG_MULTIBOXING_KICK_ENABLE))
+        {
+            if (player->GetSession()->GetSecurity() > SEC_PLAYER)
+                return;
+
+            PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_COUNT);
+            stmt->setUInt32(0, player->GetSession()->GetAccountId());
+            PreparedQueryResult result = LoginDatabase.Query(stmt);
+
+            if(!result)
+                return;
+
+            Field* fields = result->Fetch();
+            uint16 count = fields[0].GetUInt16();
+
+            if (!count)
+                return;
+
+            if (count > 1)
+                player->GetSession()->KickPlayer();
+        }
+        return;
+    }
+};
+
+void AddSC_custom_misc()
+{
+    new ip_check();
+}
diff -r 44283a1cdf0b src/server/shared/Database/Implementation/LoginDatabase.cpp
--- a/src/server/shared/Database/Implementation/LoginDatabase.cpp	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp	Sat Aug 11 00:12:25 2012 +0300
@@ -86,5 +86,6 @@
     PREPARE_STATEMENT(LOGIN_SEL_ACCOUNT_WHOIS, "SELECT username, email, last_ip FROM account WHERE id = ?", CONNECTION_SYNCH);
     PREPARE_STATEMENT(LOGIN_SEL_REALMLIST_SECURITY_LEVEL, "SELECT allowedSecurityLevel from realmlist WHERE id = ?", CONNECTION_SYNCH);
     PREPARE_STATEMENT(LOGIN_DEL_ACCOUNT, "DELETE FROM account WHERE id = ?", CONNECTION_ASYNC);
+    PREPARE_STATEMENT(LOGIN_SEL_IP_COUNT, "SELECT COUNT(last_ip) FROM account WHERE last_ip IN (SELECT last_ip FROM account WHERE id = ?) AND online = 1", CONNECTION_SYNCH);
 
 }
diff -r 44283a1cdf0b src/server/shared/Database/Implementation/LoginDatabase.h
--- a/src/server/shared/Database/Implementation/LoginDatabase.h	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/shared/Database/Implementation/LoginDatabase.h	Sat Aug 11 00:12:25 2012 +0300
@@ -106,6 +106,7 @@
     LOGIN_SEL_ACCOUNT_WHOIS,
     LOGIN_SEL_REALMLIST_SECURITY_LEVEL,
     LOGIN_DEL_ACCOUNT,
+    LOGIN_SEL_IP_COUNT,
 
     MAX_LOGINDATABASE_STATEMENTS,
 };
diff -r 44283a1cdf0b src/server/worldserver/worldserver.conf.dist
--- a/src/server/worldserver/worldserver.conf.dist	Sat Apr 07 21:09:31 2012 +0100
+++ b/src/server/worldserver/worldserver.conf.dist	Sat Aug 11 00:12:25 2012 +0300
@@ -25,6 +25,7 @@
 #    CONSOLE AND REMOTE ACCESS
 #    CHARACTER DELETE OPTIONS
 #    CUSTOM SERVER OPTIONS
+#    MULTIBOXING SYSTEM CONFIG
 #
 ###################################################################################################
 
@@ -2880,3 +2881,17 @@
 
 #
 ###################################################################################################
+
+###################################################################################################
+# MULTIBOXING SYSTEM CONFIG
+#
+#    Multiboxing.Kick.Enable
+#        Kick player, who enters the game, running two copies of wow client.
+#        Default: 0 (disabled)
+#                 1 (enabled)
+#
+
+Multiboxing.Kick.Enable = 0
+
+#
+###################################################################################################
