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()) {