# HG changeset patch # User unc0rr # Date 1296409120 -10800 # Node ID 0f56fa511f65a7a64f9a2f0660e277954145ef9f # Parent cc3485866b93009229412769f43e0b7c3188685d Reimplement KICK diff -r cc3485866b93 -r 0f56fa511f65 gameServer/HWProtoLobbyState.hs --- a/gameServer/HWProtoLobbyState.hs Sun Jan 30 20:36:32 2011 +0300 +++ b/gameServer/HWProtoLobbyState.hs Sun Jan 30 20:38:40 2011 +0300 @@ -130,19 +130,16 @@ else handleCmd_lobby ["JOIN_ROOM", name clRoom] -{- --------------------------- -- Administrator's stuff -- -handleCmd_lobby clID clients rooms ["KICK", kickNick] = - [KickClient kickID | isAdministrator client && (not noSuchClient) && kickID /= clID] - where - client = clients IntMap.! clID - maybeClient = Foldable.find (\cl -> kickNick == nick cl) clients - noSuchClient = isNothing maybeClient - kickID = clientUID $ fromJust maybeClient +handleCmd_lobby ["KICK", kickNick] = do + (ci, _) <- ask + cl <- thisClient + kickId <- clientByNick kickNick + return [KickClient $ fromJust kickId | isAdministrator cl && isJust kickId && fromJust kickId /= ci] - +{- handleCmd_lobby clID clients rooms ["BAN", banNick] = if not $ isAdministrator client then []