From e1ccf30afc11571302310d4b9cfa357a9c4dce80 Mon Sep 17 00:00:00 2001 From: SylvaniaCore deploy Date: Mon, 31 Aug 2026 10:32:05 +0200 Subject: [PATCH] Sessions : les comptes au-dessus du niveau 0 ne sont plus coupes pour inactivite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Demande : « j aimerai que les comptes au-dessus du numero 0, c est a dire les comptes GM/testeur/admin, ne soient pas soumis en jeu a la deconnexion automatique en cas d absence prolongee ». La coupure vient de WorldSession::Update : if (!IsBotSession() && IsConnectionIdle()) m_Socket[CONNECTION_TYPE_REALM]->CloseSocket(); IsConnectionIdle() s appuie sur m_timeOutTime, initialise depuis SocketTimeOutTime (900 000 ms, soit 15 minutes) et decremente a chaque tick sans paquet entrant. On ajoute GetSecurity() <= SEC_PLAYER a la condition. Les comptes de niveau superieur restent connectes indefiniment ; les joueurs ordinaires demeurent soumis au delai, la protection contre les sessions fantomes gardant tout son interet pour eux. Motif concret : ces comptes restent volontairement inactifs de longues minutes pour observer une zone, suivre un evenement scripte ou attendre le resultat d un test -- et se faisaient couper en plein travail, parfois au milieu d une instance. Portee actuelle : 5 comptes concernes (3 de niveau 1, 2 de niveau 4). Co-Authored-By: Claude Opus 5 --- src/server/game/Server/WorldSession.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index d658124..f64fabc 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -350,7 +350,20 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) ///- Before we process anything: /// If necessary, kick the player from the character select screen - if (!IsBotSession() && IsConnectionIdle()) + // + // SylvaniaCore : les comptes de niveau superieur a SEC_PLAYER -- + // maitres de jeu, testeurs, administration -- ne sont plus coupes + // pour inactivite. + // + // Motif : ces comptes restent volontairement connectes de longues + // minutes sans emettre de paquet, le temps d'observer une zone, de + // suivre un evenement scripte ou d'attendre le resultat d'un test. + // Le delai de SocketTimeOutTime (900 s) les deconnectait en plein + // travail, parfois au milieu d'une instance. + // + // Les joueurs ordinaires restent soumis au delai : la protection + // contre les sessions fantomes conserve tout son interet pour eux. + if (!IsBotSession() && GetSecurity() <= SEC_PLAYER && IsConnectionIdle()) m_Socket[CONNECTION_TYPE_REALM]->CloseSocket(); ///- Retrieve packets from the receive queue and call the appropriate handlers