From: terencehill Date: Mon, 20 Jun 2011 22:41:09 +0000 (+0200) Subject: Client side countdown for kicking when idle X-Git-Tag: xonotic-v0.5.0~200 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=7f4a84a23e88abbcdd215b0d0e95799c65a644b3;p=xonotic%2Fxonotic-data.pk3dir.git Client side countdown for kicking when idle --- diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index bcc5b6617..01f7459e7 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -3032,7 +3032,21 @@ void PlayerPostThink (void) { // WORKAROUND: only use dropclient in server frames (frametime set). Never use it in cl_movement frames (frametime zero). float timeleft; + if (time - self.parm_idlesince < 1) // instead of (time == self.parm_idlesince) to support sv_maxidle <= 10 + { + if(self.idlekick_lasttimeleft) + { + Send_CSQC_Centerprint_Generic_Expire(self, CPID_DISCONNECT_IDLING); + self.idlekick_lasttimeleft = 0; + } + return; + } timeleft = ceil(sv_maxidle - (time - self.parm_idlesince)); + if(timeleft == min(10, sv_maxidle - 1)) // - 1 to support sv_maxidle <= 10 + { + if(!self.idlekick_lasttimeleft) + Send_CSQC_Centerprint_Generic(self, CPID_DISCONNECT_IDLING, "^3Stop idling!\n^3Disconnecting in %d seconds...", 1, timeleft); + } if(timeleft <= 0) { bprint("^3", self.netname, "^3 was kicked for idling.\n"); @@ -3043,17 +3057,9 @@ void PlayerPostThink (void) else if(timeleft <= 10) { if(timeleft != self.idlekick_lasttimeleft) - { - // TODO: send this msg only once - Send_CSQC_Centerprint_Generic(self, CPID_DISCONNECT_IDLING, "^3Stop idling!\n^3Disconnecting in %d seconds...", 1, timeleft); - AnnounceTo(self, strcat(ftos(timeleft), "")); - } - } - else - { - Send_CSQC_Centerprint_Generic(self, CPID_DISCONNECT_IDLING, "", 1, timeleft); + AnnounceTo(self, ftos(timeleft)); + self.idlekick_lasttimeleft = timeleft; } - self.idlekick_lasttimeleft = timeleft; } #ifdef TETRIS