From 4ba76e60dd8fa837479767d7f0a39e9c88f79072 Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 10 Nov 2008 23:06:24 +0000 Subject: [PATCH] Disallow kicking from within a game. --- src/net/common/servergamestate.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index be5eb280..ed7d8331 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -186,8 +186,9 @@ AbstractServerGameStateReceiving::Process(ServerGameThread &server) } else if (packet->ToNetPacketKickPlayer()) { - // Only admins are allowed to kick. - if (session.playerData->GetRights() == PLAYER_RIGHTS_ADMIN) + // Only admins are allowed to kick, and only in the lobby. + // After leaving the lobby, a vote needs to be initiated to kick. + if (session.playerData->GetRights() == PLAYER_RIGHTS_ADMIN && !server.IsRunning()) { NetPacketKickPlayer::Data kickPlayerData; packet->ToNetPacketKickPlayer()->GetData(kickPlayerData); @@ -195,6 +196,17 @@ AbstractServerGameStateReceiving::Process(ServerGameThread &server) server.InternalKickPlayer(kickPlayerData.playerId); } } + else if (packet->ToNetPacketAskKickPlayer()) + { + if (server.IsRunning()) + { + NetPacketAskKickPlayer::Data askKickData; + packet->ToNetPacketAskKickPlayer()->GetData(askKickData); + + // TODO start vote kick. + //askKickData.playerId + } + } // Chat text is always allowed. else if (packet->ToNetPacketSendChatText()) {