Code:
#include <amxmodx>
#include <fakemeta>
new forward_PreThink
new bool:g_prethink[32]
public client_authorized(id) {
g_prethink[id] = false;
if ( /* check here: steamid, admin flags, etcetera */ ) {
g_prethink[id] = true;
forward_PreThink = register_forward(FM_PlayerPreThink, "FM_Prethink")
}
}
public FM_Prethink(id) {
if ( ! g_prethink[id] )
return
// your code here
}
public client_disconnect(id) {
if ( ! g_prethink[id] )
return
if ( none_left() )
unregister_forward(FM_PlayerPreThink, forward_PreThink, 1)
}
stock none_left() {
for ( new i = 0 ; i < 32 ; i++ ) {
if ( g_prethink[i] )
return 0
}
return 1
}
I win.