X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fclient.qc;h=804025ace1e5efab8a88d140ff2db5808a72b2eb;hb=350dd64390082f01f29e0d4e4ef70390ba700219;hp=69e416826174e1bd04397cfac2b4c1d8033e2f52;hpb=5dc828e3b59c65f75c870d4a57e34c023cdbdb86;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/client.qc b/qcsrc/server/client.qc index 69e416826..804025ace 100644 --- a/qcsrc/server/client.qc +++ b/qcsrc/server/client.qc @@ -2642,14 +2642,30 @@ void PlayerPostThink (entity this) int totalClients = 0; if(autocvar_sv_maxidle > 0 && autocvar_sv_maxidle_slots > 0) { - FOREACH_CLIENT(IS_REAL_CLIENT(it) || autocvar_sv_maxidle_slots_countbots, + // maxidle disabled in local matches by not counting clients (totalClients 0) + if (server_is_dedicated) + { + FOREACH_CLIENT(IS_REAL_CLIENT(it) || autocvar_sv_maxidle_slots_countbots, + { + ++totalClients; + }); + if (maxclients - totalClients > autocvar_sv_maxidle_slots) + totalClients = 0; + } + } + else if (IS_PLAYER(this) && autocvar_sv_maxidle_playertospectator > 0) + { + FOREACH_CLIENT(IS_REAL_CLIENT(it), { ++totalClients; }); } - if (autocvar_sv_maxidle > 0 && autocvar_sv_maxidle_slots > 0 && (maxclients - totalClients) > autocvar_sv_maxidle_slots) - { /* do nothing */ } + if (totalClients < autocvar_sv_maxidle_minplayers) + { + // idle kick disabled + CS(this).parm_idlesince = time; + } else if (time - CS(this).parm_idlesince < 1) // instead of (time == this.parm_idlesince) to support sv_maxidle <= 10 { if (CS(this).idlekick_lasttimeleft)