Disallow kicking from within a game.

This commit is contained in:
lotodore
2008-11-10 23:06:24 +00:00
parent 66a7afee3d
commit 4ba76e60dd
+14 -2
View File
@@ -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())
{