Page 1 of 1
ban with delay
Posted: 2013 Feb 04 19:40
by xedga
Sveiki,
Tarkim yra kodas, baninantis išėjusį žaidėją, kaip reiktu padaryti delay, kad ji banintu tik po 5min ir tik jei jis negrįžo į serverį.
Code: Select all
public client_disconnect(id) { new Name[32], Sid[32] get_user_name(id, Name, 31) get_user_authid(id, Sid, 31) server_cmd( "amx_ban ^"%s^" ^"%s^" 60 ^"Disconnected^"", Name, Sid) }
Ačiū už pagalbą

Re: ban with delay
Posted: 2013 Feb 04 20:48
by hleV
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());}
Re: ban with delay
Posted: 2013 Feb 05 16:18
by xedga
Ačiū, atrodo viskas veikia ;)