feat(core): allow to debug KickPlayer() (#1549)
This commit is contained in:
@@ -42,6 +42,7 @@ enum DebugLogFilters
|
|||||||
LOG_FILTER_WARDEN = 0x00800000, // Warden related
|
LOG_FILTER_WARDEN = 0x00800000, // Warden related
|
||||||
LOG_FILTER_BATTLEFIELD = 0x01000000, // Battlefield related
|
LOG_FILTER_BATTLEFIELD = 0x01000000, // Battlefield related
|
||||||
LOG_FILTER_MODULES = 0x02000000, // Modules debug
|
LOG_FILTER_MODULES = 0x02000000, // Modules debug
|
||||||
|
LOG_FILTER_CLOSE_SOCKET = 0x04000000, // Whenever KickPlayer() or CloseSocket() are called
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LogTypes
|
enum LogTypes
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ namespace AccountMgr
|
|||||||
if (Player* p = ObjectAccessor::FindPlayer(guid))
|
if (Player* p = ObjectAccessor::FindPlayer(guid))
|
||||||
{
|
{
|
||||||
WorldSession* s = p->GetSession();
|
WorldSession* s = p->GetSession();
|
||||||
s->KickPlayer(); // mark session to remove at next session list update
|
s->KickPlayer("Delete account"); // mark session to remove at next session list update
|
||||||
s->LogoutPlayer(false); // logout player without waiting next session list update
|
s->LogoutPlayer(false); // logout player without waiting next session list update
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1737,7 +1737,7 @@ void Player::Update(uint32 p_time)
|
|||||||
if (!IsPositionValid()) // pussywizard: will crash below at eg. GetZoneAndAreaId
|
if (!IsPositionValid()) // pussywizard: will crash below at eg. GetZoneAndAreaId
|
||||||
{
|
{
|
||||||
sLog->outMisc("Player::Update - invalid position (%.1f, %.1f, %.1f)! Map: %u, MapId: %u, GUID: %u", GetPositionX(), GetPositionY(), GetPositionZ(), (FindMap() ? FindMap()->GetId() : 0), GetMapId(), GetGUIDLow());
|
sLog->outMisc("Player::Update - invalid position (%.1f, %.1f, %.1f)! Map: %u, MapId: %u, GUID: %u", GetPositionX(), GetPositionY(), GetPositionZ(), (FindMap() ? FindMap()->GetId() : 0), GetMapId(), GetGUIDLow());
|
||||||
GetSession()->KickPlayer();
|
GetSession()->KickPlayer("Invalid position");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3709,7 +3709,7 @@ void SafeUnitPointer::UnitDeleted()
|
|||||||
if (ptr)
|
if (ptr)
|
||||||
sLog->outMisc("SafeUnitPointer::UnitDeleted (A2)");
|
sLog->outMisc("SafeUnitPointer::UnitDeleted (A2)");
|
||||||
|
|
||||||
p->GetSession()->KickPlayer();
|
p->GetSession()->KickPlayer("Unit deleted");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ptr)
|
else if (ptr)
|
||||||
|
|||||||
@@ -758,7 +758,7 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recvData)
|
|||||||
if (PlayerLoading() || GetPlayer() != NULL)
|
if (PlayerLoading() || GetPlayer() != NULL)
|
||||||
{
|
{
|
||||||
sLog->outError("Player tries to login again, AccountId = %d", GetAccountId());
|
sLog->outError("Player tries to login again, AccountId = %d", GetAccountId());
|
||||||
KickPlayer();
|
KickPlayer("Player tries to login again");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -768,7 +768,7 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recvData)
|
|||||||
if (!IsLegitCharacterForAccount(GUID_LOPART(playerGuid)))
|
if (!IsLegitCharacterForAccount(GUID_LOPART(playerGuid)))
|
||||||
{
|
{
|
||||||
sLog->outError("Account (%u) can't login with that character (%u).", GetAccountId(), GUID_LOPART(playerGuid));
|
sLog->outError("Account (%u) can't login with that character (%u).", GetAccountId(), GUID_LOPART(playerGuid));
|
||||||
KickPlayer();
|
KickPlayer("Account can't login with this character");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -794,7 +794,7 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recvData)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (p->GetGUID() != playerGuid)
|
if (p->GetGUID() != playerGuid)
|
||||||
sess->KickPlayer(); // no return, go to normal loading
|
sess->KickPlayer("No return, go to normal loading"); // no return, go to normal loading
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// pussywizard: players stay ingame no matter what (prevent abuse), but allow to turn it off to stop crashing
|
// pussywizard: players stay ingame no matter what (prevent abuse), but allow to turn it off to stop crashing
|
||||||
@@ -883,7 +883,7 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder* holder)
|
|||||||
if (!pCurrChar->LoadFromDB(GUID_LOPART(playerGuid), holder))
|
if (!pCurrChar->LoadFromDB(GUID_LOPART(playerGuid), holder))
|
||||||
{
|
{
|
||||||
SetPlayer(NULL);
|
SetPlayer(NULL);
|
||||||
KickPlayer(); // disconnect client, player no set to session and it will not deleted or saved at kick
|
KickPlayer("HandlePlayerLoginFromDB"); // disconnect client, player no set to session and it will not deleted or saved at kick
|
||||||
delete pCurrChar; // delete it manually
|
delete pCurrChar; // delete it manually
|
||||||
delete holder; // delete all unprocessed queries
|
delete holder; // delete all unprocessed queries
|
||||||
m_playerLoading = false;
|
m_playerLoading = false;
|
||||||
@@ -1744,7 +1744,7 @@ void WorldSession::HandleCharCustomize(WorldPacket& recvData)
|
|||||||
sLog->outError("Account %u, IP: %s tried to customise character %u, but it does not belong to their account!",
|
sLog->outError("Account %u, IP: %s tried to customise character %u, but it does not belong to their account!",
|
||||||
GetAccountId(), GetRemoteAddress().c_str(), GUID_LOPART(guid));
|
GetAccountId(), GetRemoteAddress().c_str(), GUID_LOPART(guid));
|
||||||
recvData.rfinish();
|
recvData.rfinish();
|
||||||
KickPlayer();
|
KickPlayer("HandleCharCustomize");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2043,7 +2043,7 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData)
|
|||||||
sLog->outError("Account %u, IP: %s tried to factionchange character %u, but it does not belong to their account!",
|
sLog->outError("Account %u, IP: %s tried to factionchange character %u, but it does not belong to their account!",
|
||||||
GetAccountId(), GetRemoteAddress().c_str(), GUID_LOPART(guid));
|
GetAccountId(), GetRemoteAddress().c_str(), GUID_LOPART(guid));
|
||||||
recvData.rfinish();
|
recvData.rfinish();
|
||||||
KickPlayer();
|
KickPlayer("HandleCharFactionOrRaceChange");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket & recvData)
|
|||||||
// GetPlayer()->GetGUIDLow(), msg.c_str());
|
// GetPlayer()->GetGUIDLow(), msg.c_str());
|
||||||
|
|
||||||
if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK))
|
if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK))
|
||||||
KickPlayer();
|
KickPlayer("CONFIG_CHAT_STRICT_LINK_CHECKING_KICK");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1699,7 +1699,7 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPacket & recv_data)
|
|||||||
p->SetMap(homeMap0);
|
p->SetMap(homeMap0);
|
||||||
p->Relocate(0.0f, 0.0f, 0.0f, 0.0f);
|
p->Relocate(0.0f, 0.0f, 0.0f, 0.0f);
|
||||||
if (!p->TeleportTo(571, 5790.20f, 2071.36f, 636.07f, 3.60f))
|
if (!p->TeleportTo(571, 5790.20f, 2071.36f, 636.07f, 3.60f))
|
||||||
p->GetSession()->KickPlayer();
|
p->GetSession()->KickPlayer("HandleSetRaidDifficultyOpcode 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool anyoneInside = false;
|
bool anyoneInside = false;
|
||||||
@@ -1736,7 +1736,7 @@ void WorldSession::HandleSetRaidDifficultyOpcode(WorldPacket & recv_data)
|
|||||||
{
|
{
|
||||||
itr->first->SetRaidDifficulty(Difficulty(mode)); // needed for teleport not to fail
|
itr->first->SetRaidDifficulty(Difficulty(mode)); // needed for teleport not to fail
|
||||||
if (!itr->first->TeleportTo(*(foundMaps.begin()), itr->second.GetPositionX(), itr->second.GetPositionY(), itr->second.GetPositionZ(), itr->second.GetOrientation()))
|
if (!itr->first->TeleportTo(*(foundMaps.begin()), itr->second.GetPositionX(), itr->second.GetPositionY(), itr->second.GetPositionZ(), itr->second.GetOrientation()))
|
||||||
itr->first->GetSession()->KickPlayer();
|
itr->first->GetSession()->KickPlayer("HandleSetRaidDifficultyOpcode 2");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
|
|||||||
// possible errors in the coordinate validity check
|
// possible errors in the coordinate validity check
|
||||||
if (!MapManager::IsValidMapCoord(loc))
|
if (!MapManager::IsValidMapCoord(loc))
|
||||||
{
|
{
|
||||||
KickPlayer();
|
KickPlayer("!MapManager::IsValidMapCoord(loc)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,7 +119,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
|
|||||||
Cell cell(pair);
|
Cell cell(pair);
|
||||||
if (!GridCoord(cell.GridX(), cell.GridY()).IsCoordValid())
|
if (!GridCoord(cell.GridX(), cell.GridY()).IsCoordValid())
|
||||||
{
|
{
|
||||||
KickPlayer();
|
KickPlayer("!GridCoord(cell.GridX(), cell.GridY()).IsCoordValid()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newMap->LoadGrid(GetPlayer()->GetPositionX(), GetPlayer()->GetPositionY());
|
newMap->LoadGrid(GetPlayer()->GetPositionX(), GetPlayer()->GetPositionY());
|
||||||
@@ -167,7 +167,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
|
|||||||
Cell cell2(pair2);
|
Cell cell2(pair2);
|
||||||
if (!GridCoord(cell2.GridX(), cell2.GridY()).IsCoordValid())
|
if (!GridCoord(cell2.GridX(), cell2.GridY()).IsCoordValid())
|
||||||
{
|
{
|
||||||
KickPlayer();
|
KickPlayer("!GridCoord(cell2.GridX(), cell2.GridY()).IsCoordValid()");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newMap->LoadGrid(GetPlayer()->GetPositionX(), GetPlayer()->GetPositionY());
|
newMap->LoadGrid(GetPlayer()->GetPositionX(), GetPlayer()->GetPositionY());
|
||||||
@@ -577,7 +577,7 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData)
|
|||||||
{
|
{
|
||||||
sLog->outBasic("Player %s from account id %u kicked for incorrect speed (must be %f instead %f)",
|
sLog->outBasic("Player %s from account id %u kicked for incorrect speed (must be %f instead %f)",
|
||||||
_player->GetName().c_str(), GetAccountId(), _player->GetSpeed(move_type), newspeed);
|
_player->GetName().c_str(), GetAccountId(), _player->GetSpeed(move_type), newspeed);
|
||||||
KickPlayer();
|
KickPlayer("Incorrect speed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ WorldSession::~WorldSession()
|
|||||||
/// - If have unclosed socket, close it
|
/// - If have unclosed socket, close it
|
||||||
if (m_Socket)
|
if (m_Socket)
|
||||||
{
|
{
|
||||||
m_Socket->CloseSocket();
|
m_Socket->CloseSocket("WorldSession destructor");
|
||||||
m_Socket->RemoveReference();
|
m_Socket->RemoveReference();
|
||||||
m_Socket = NULL;
|
m_Socket = NULL;
|
||||||
}
|
}
|
||||||
@@ -236,7 +236,7 @@ void WorldSession::SendPacket(WorldPacket const* packet)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (m_Socket->SendPacket(*packet) == -1)
|
if (m_Socket->SendPacket(*packet) == -1)
|
||||||
m_Socket->CloseSocket();
|
m_Socket->CloseSocket("m_Socket->SendPacket(*packet) == -1");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Add an incoming packet to the queue
|
/// Add an incoming packet to the queue
|
||||||
@@ -255,7 +255,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
|
|||||||
/// If necessary, kick the player because the client didn't send anything for too long
|
/// If necessary, kick the player because the client didn't send anything for too long
|
||||||
/// (or they've been idling in character select)
|
/// (or they've been idling in character select)
|
||||||
if (sWorld->getBoolConfig(CONFIG_CLOSE_IDLE_CONNECTIONS) && IsConnectionIdle())
|
if (sWorld->getBoolConfig(CONFIG_CLOSE_IDLE_CONNECTIONS) && IsConnectionIdle())
|
||||||
m_Socket->CloseSocket();
|
m_Socket->CloseSocket("Client didn't send anything for too long");
|
||||||
}
|
}
|
||||||
|
|
||||||
HandleTeleportTimeout(updater.ProcessLogout());
|
HandleTeleportTimeout(updater.ProcessLogout());
|
||||||
@@ -611,10 +611,10 @@ void WorldSession::LogoutPlayer(bool save)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Kick a player out of the World
|
/// Kick a player out of the World
|
||||||
void WorldSession::KickPlayer(bool setKicked)
|
void WorldSession::KickPlayer(std::string const& reason, bool setKicked)
|
||||||
{
|
{
|
||||||
if (m_Socket)
|
if (m_Socket)
|
||||||
m_Socket->CloseSocket();
|
m_Socket->CloseSocket(reason);
|
||||||
|
|
||||||
if (setKicked)
|
if (setKicked)
|
||||||
SetKicked(true); // pussywizard: the session won't be left ingame for 60 seconds and to also kick offline session
|
SetKicked(true); // pussywizard: the session won't be left ingame for 60 seconds and to also kick offline session
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ class WorldSession
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LogoutPlayer(bool save);
|
void LogoutPlayer(bool save);
|
||||||
void KickPlayer(bool setKicked = true);
|
void KickPlayer(std::string const& reason, bool setKicked = true);
|
||||||
|
|
||||||
void QueuePacket(WorldPacket* new_packet);
|
void QueuePacket(WorldPacket* new_packet);
|
||||||
bool Update(uint32 diff, PacketFilter& updater);
|
bool Update(uint32 diff, PacketFilter& updater);
|
||||||
|
|||||||
@@ -119,8 +119,11 @@ bool WorldSocket::IsClosed(void) const
|
|||||||
return closing_;
|
return closing_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSocket::CloseSocket(void)
|
void WorldSocket::CloseSocket(std::string const& reason)
|
||||||
{
|
{
|
||||||
|
if (!reason.empty())
|
||||||
|
sLog->outDebug(LOG_FILTER_CLOSE_SOCKET, "Socket closed because of: %s", reason.c_str());
|
||||||
|
|
||||||
{
|
{
|
||||||
ACE_GUARD (LockType, Guard, m_OutBufferLock);
|
ACE_GUARD (LockType, Guard, m_OutBufferLock);
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ class WorldSocket : public WorldHandler
|
|||||||
bool IsClosed (void) const;
|
bool IsClosed (void) const;
|
||||||
|
|
||||||
/// Close the socket.
|
/// Close the socket.
|
||||||
void CloseSocket (void);
|
void CloseSocket(std::string const& reason);
|
||||||
|
|
||||||
/// Get address of connected peer.
|
/// Get address of connected peer.
|
||||||
const std::string& GetRemoteAddress (void) const;
|
const std::string& GetRemoteAddress (void) const;
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ class ReactorRunnable : protected ACE_Task_Base
|
|||||||
t = i;
|
t = i;
|
||||||
++i;
|
++i;
|
||||||
|
|
||||||
(*t)->CloseSocket();
|
(*t)->CloseSocket("svc()");
|
||||||
|
|
||||||
sScriptMgr->OnSocketClose((*t), false);
|
sScriptMgr->OnSocketClose((*t), false);
|
||||||
|
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ void Warden::Update()
|
|||||||
if (maxClientResponseDelay > 0)
|
if (maxClientResponseDelay > 0)
|
||||||
{
|
{
|
||||||
if (_clientResponseTimer > maxClientResponseDelay * IN_MILLISECONDS)
|
if (_clientResponseTimer > maxClientResponseDelay * IN_MILLISECONDS)
|
||||||
_session->KickPlayer();
|
_session->KickPlayer("clientResponseTimer > maxClientResponseDelay");
|
||||||
else
|
else
|
||||||
_clientResponseTimer += diff;
|
_clientResponseTimer += diff;
|
||||||
}
|
}
|
||||||
@@ -218,7 +218,7 @@ std::string Warden::Penalty(WardenCheck* check /*= NULL*/, uint16 checkFailed /*
|
|||||||
return "None";
|
return "None";
|
||||||
break;
|
break;
|
||||||
case WARDEN_ACTION_KICK:
|
case WARDEN_ACTION_KICK:
|
||||||
_session->KickPlayer();
|
_session->KickPlayer("WARDEN_ACTION_KICK");
|
||||||
return "Kick";
|
return "Kick";
|
||||||
break;
|
break;
|
||||||
case WARDEN_ACTION_BAN:
|
case WARDEN_ACTION_BAN:
|
||||||
|
|||||||
@@ -278,5 +278,5 @@ void WardenMac::HandleData(ByteBuffer &buff)
|
|||||||
//found = true;
|
//found = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_session->KickPlayer();
|
_session->KickPlayer("WardenMac");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ bool World::KickSession(uint32 id)
|
|||||||
if (itr->second->PlayerLoading())
|
if (itr->second->PlayerLoading())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
itr->second->KickPlayer(false);
|
itr->second->KickPlayer("KickSession", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -248,9 +248,9 @@ void World::AddSession_(WorldSession* s)
|
|||||||
|
|
||||||
// kick existing session with same account (if any)
|
// kick existing session with same account (if any)
|
||||||
// if character on old session is being loaded, then return
|
// if character on old session is being loaded, then return
|
||||||
if (!KickSession (s->GetAccountId()))
|
if (!KickSession(s->GetAccountId()))
|
||||||
{
|
{
|
||||||
s->KickPlayer();
|
s->KickPlayer("kick existing session with same account");
|
||||||
delete s; // session not added yet in session list, so not listed in queue
|
delete s; // session not added yet in session list, so not listed in queue
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2418,11 +2418,11 @@ void World::KickAll()
|
|||||||
|
|
||||||
// session not removed at kick and will removed in next update tick
|
// session not removed at kick and will removed in next update tick
|
||||||
for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
|
for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
|
||||||
itr->second->KickPlayer();
|
itr->second->KickPlayer("KickAll sessions");
|
||||||
|
|
||||||
// pussywizard: kick offline sessions
|
// pussywizard: kick offline sessions
|
||||||
for (SessionMap::const_iterator itr = m_offlineSessions.begin(); itr != m_offlineSessions.end(); ++itr)
|
for (SessionMap::const_iterator itr = m_offlineSessions.begin(); itr != m_offlineSessions.end(); ++itr)
|
||||||
itr->second->KickPlayer();
|
itr->second->KickPlayer("KickAll offline sessions");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Kick (and save) all players with security level less `sec`
|
/// Kick (and save) all players with security level less `sec`
|
||||||
@@ -2431,7 +2431,7 @@ void World::KickAllLess(AccountTypes sec)
|
|||||||
// session not removed at kick and will removed in next update tick
|
// session not removed at kick and will removed in next update tick
|
||||||
for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
|
for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
|
||||||
if (itr->second->GetSecurity() < sec)
|
if (itr->second->GetSecurity() < sec)
|
||||||
itr->second->KickPlayer();
|
itr->second->KickPlayer("KickAllLess");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Ban an account or ban an IP address, duration will be parsed using TimeStringToSecs if it is positive, otherwise permban
|
/// Ban an account or ban an IP address, duration will be parsed using TimeStringToSecs if it is positive, otherwise permban
|
||||||
@@ -2511,10 +2511,10 @@ BanReturn World::BanAccount(BanMode mode, std::string const& nameOrIP, std::stri
|
|||||||
|
|
||||||
if (WorldSession* sess = FindSession(account))
|
if (WorldSession* sess = FindSession(account))
|
||||||
if (sess->GetPlayerName() != author)
|
if (sess->GetPlayerName() != author)
|
||||||
sess->KickPlayer();
|
sess->KickPlayer("FindSession(account)->GetPlayerName() != author");
|
||||||
if (WorldSession* sess = FindOfflineSession(account))
|
if (WorldSession* sess = FindOfflineSession(account))
|
||||||
if (sess->GetPlayerName() != author)
|
if (sess->GetPlayerName() != author)
|
||||||
sess->KickPlayer();
|
sess->KickPlayer("FindOfflineSession(account)->GetPlayerName() != author");
|
||||||
} while (resultAccounts->NextRow());
|
} while (resultAccounts->NextRow());
|
||||||
|
|
||||||
LoginDatabase.CommitTransaction(trans);
|
LoginDatabase.CommitTransaction(trans);
|
||||||
@@ -2582,7 +2582,7 @@ BanReturn World::BanCharacter(std::string const& name, std::string const& durati
|
|||||||
CharacterDatabase.Execute(stmt);
|
CharacterDatabase.Execute(stmt);
|
||||||
|
|
||||||
if (pBanned)
|
if (pBanned)
|
||||||
pBanned->GetSession()->KickPlayer();
|
pBanned->GetSession()->KickPlayer("Ban");
|
||||||
|
|
||||||
return BAN_SUCCESS;
|
return BAN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -687,7 +687,7 @@ public:
|
|||||||
{
|
{
|
||||||
characterGuid = player->GetGUID();
|
characterGuid = player->GetGUID();
|
||||||
accountId = player->GetSession()->GetAccountId();
|
accountId = player->GetSession()->GetAccountId();
|
||||||
player->GetSession()->KickPlayer();
|
player->GetSession()->KickPlayer("HandleCharacterEraseCommand");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1134,7 +1134,7 @@ public:
|
|||||||
else
|
else
|
||||||
handler->PSendSysMessage(LANG_COMMAND_KICKMESSAGE, playerName.c_str());
|
handler->PSendSysMessage(LANG_COMMAND_KICKMESSAGE, playerName.c_str());
|
||||||
|
|
||||||
target->GetSession()->KickPlayer();
|
target->GetSession()->KickPlayer("HandleKickPlayerCommand");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -500,6 +500,7 @@ LogFileLevel = 0
|
|||||||
# 2097152 - Anything related to guilds
|
# 2097152 - Anything related to guilds
|
||||||
# 4194304 - Anything related to transports
|
# 4194304 - Anything related to transports
|
||||||
# 8388608 - Anything related to Warden anti cheat
|
# 8388608 - Anything related to Warden anti cheat
|
||||||
|
# 67108864 - Whenever KickPlayer() or CloseSocket() are called
|
||||||
#
|
#
|
||||||
# Simply add the values together to create a bitmask.
|
# Simply add the values together to create a bitmask.
|
||||||
# For more info see enum DebugLogFilters in Log.h
|
# For more info see enum DebugLogFilters in Log.h
|
||||||
|
|||||||
Reference in New Issue
Block a user