1
0

Moved the check into a new function and just calls that function and a blank FindAndDoWithPlayer added.

This commit is contained in:
Vincent
2014-12-08 00:12:48 -08:00
parent 83c728fce4
commit d8d3b9aec5
4 changed files with 52 additions and 23 deletions

View File

@@ -1788,6 +1788,41 @@ void cClientHandle::HandleKeepAlive(int a_KeepAliveID)
bool cClientHandle::CheckMultiLogin(void)
{
std::list<AString> usernamesServer = cRoot::Get()->GetServer()->GetUsernames();
for (auto item : usernamesServer)
{
if ((item).compare(a_Username) == 0)
{
Kick("A player of the username is already logged in");
return false;
}
}
class cCallback :
public cPlayerListCallback
{
virtual bool Item(cPlayer * a_Player) override
{
return true;
}
} Callback;
if (cRoot::Get()->GetDefaultWorld()->DoWithPlayer(a_Username, Callback))
{
Kick("A player of the username is already logged in");
return false;
}
return true;
}
bool cClientHandle::HandleHandshake(const AString & a_Username)
{
if (!cRoot::Get()->GetPluginManager()->CallHookHandshake(*this, a_Username))
@@ -1798,31 +1833,12 @@ bool cClientHandle::HandleHandshake(const AString & a_Username)
return false;
}
}
if (!(cRoot::Get()->GetServer()->IsAllowMultiLogin()))
{
std::list<AString> usernamesServer = cRoot::Get()->GetServer()->GetUsernames();
for (auto item : usernamesServer)
{
if ((item).compare(a_Username) == 0)
{
Kick("A player of the username is already logged in");
return false;
}
}
class cCallback :
public cPlayerListCallback
{
virtual bool Item(cPlayer * a_Player) override
{
return true;
}
} Callback;
if (cRoot::Get()->GetDefaultWorld()->DoWithPlayer(a_Username, Callback))
{
Kick("A player of the username is already logged in");
}
return CheckMultiLogin();
}
return true;
}