Turėtų veikt. Veikimo principas toks: Kai žaidėjas atsijungia, išsaugomas jo atsijungimo laikas. Kai jis vėl bando prisijungti, tikrinama kiek laiko praėjo. Jei daugiau nei 5 min., jį išbanina (60 - praėjęs laikas nuo atsijungimo) min.
Code: Select all
#include <amxmodx> #define RECONNECT_TIME 5#define BAN_TIME 60 new Trie:DisconnectTimes;new BannedClient; public plugin_init(){ DisconnectTimes = TrieCreate();} public client_putinserver(client){ new steamId[35]; get_user_authid(client, steamId, charsmax(steamId)); new disconnectTime; if (!TrieGetCell(DisconnectTimes, steamId, disconnectTime)) return; TrieDeleteKey(DisconnectTimes, steamId); new timeSinceDisconnect = get_systime() - disconnectTime; if (timeSinceDisconnect > RECONNECT_TIME * 60) { BannedClient = client; server_cmd("amx_ban #%d %d Disconnected", get_user_userid(client), BAN_TIME - (timeSinceDisconnect / 60)); }} public client_disconnect(client){ if (client == BannedClient) { BannedClient = 0; return; } if (!is_user_connected(client)) return; new steamId[35]; get_user_authid(client, steamId, charsmax(steamId)); TrieSetCell(DisconnectTimes, steamId, get_systime());}