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 ;)