diff -r 95f5f8a4b7dc -r c3bb13e8760b core/PlayerManager.cpp --- a/core/PlayerManager.cpp Tue Apr 27 21:07:59 2010 -0700 +++ b/core/PlayerManager.cpp Tue Apr 27 23:40:04 2010 -0700 @@ -1619,8 +1619,22 @@ { MarkAsBeingKicked(); INetChannel *pNetChan = static_cast(engine->GetPlayerNetInfo(m_iIndex)); - IClient *pClient = static_cast(pNetChan->GetMsgHandler()); - pClient->Disconnect("%s", str); + if (pNetChan == NULL) + { + /* What does this even mean? Hell if I know. */ + int userid = GetUserId(); + if (userid > 0) + { + char buffer[255]; + UTIL_Format(buffer, sizeof(buffer), "kickid %d %s\n", userid, str); + engine->ServerCommand(buffer); + } + } + else + { + IClient *pClient = static_cast(pNetChan->GetMsgHandler()); + pClient->Disconnect("%s", str); + } } void CPlayer::Authorize_Post()