Page 1 of 1

Reliable player disconnect check

Posted: Tue Jun 26, 2018 6:10 pm
by Doldol
I'm trying to find some way to reliably listen for a player disconnecting from the server, and get either their SteamID or (base)client pointer. Every single way I've found so far has at least one issue, I'll list the ones I remember:
    OnClientDisconnect listener: Fires when the client deactivates (on map changes)
    OnClientDisconnect listener and checking CBaseClient::IsConnected: IsConnected is always True, also tried delaying by one tick, same result.
    player_disconnect event: Doesn't fire when the client disconnects early before a certain point, for example due to not having the current map.
(This is mainly for CSS but something as compatible as possible would be nice.)

To be clear I would like to capture every time a user is no longer connected to the server in any way after passing CBaseServer::CheckChallengeType and then capture either SteamID or (base)client object/pointer.

Re: Reliable player disconnect check

Posted: Wed Jun 27, 2018 9:45 pm
by Doldol
I'm going to try a hook on CBaseClient::Clear, it seems like that will work for my purposes