public void OnClientPostAdminCheck(int client)
{
g_bKickedByPlugin[client] = false;
if (IsFakeClient(client) || !IsClientConnected(client))
{
return;
}
if (isLAN == 0 && z_AntiReconnect_Time > 0)
{
decl String:steamId[32];
GetClientAuthString(client, steamId, 30, true);
decl Disconnect_Time;
Disconnect_Time = KvGetNum(g_kvDB, steamId, -1);
if (Disconnect_Time == -1)
{
SendConVarValue(client, cvarDU, svz_down);
PrintWelcomeMsg(client, GetArrayCell(g_hAdtWelcomeMsgPacks, 0, 0, false));
return;
}
decl Wait_Time;
Wait_Time = Disconnect_Time + z_AntiReconnect_Time - GetTime(_);
if (Wait_Time <= 0)
{
KvDeleteKey(g_kvDB, steamId);
}
else
{
g_bKickedByPlugin[client] = true;
KickClient(client, "%t", "You are not allowed to reconnect for X seconds", Wait_Time);
LogAction(-1, client, "Kicked \"%L\". Player is not allowed to reconnect for %d seconds.", client, Wait_Time);
return;
}
}
SendConVarValue(client, cvarDU, svz_down);
PrintWelcomeMsg(client, GetArrayCell(g_hAdtWelcomeMsgPacks, 0, 0, false));
}
public Action:Event_PlayerDisconnect(Handle:event, String:name[], bool:dontBroadcast)
{
if (isLAN > 0 || z_AntiReconnect_Time == 0)
{
return;
}
decl client;
client = GetClientOfUserId(GetEventInt(event, "userid"));
if (g_bKickedByPlugin[client] || !client || IsFakeClient(client))
{
return;
}
if (z_AntiReconnect_Immunity > 0)
{
decl flags;
if (((flags = GetUserFlagBits(client))) & 16384 || flags & 4)
{
return;
}
}
decl String:reason[128];
GetEventString(event, "reason", reason, 128);
if (StrEqual(reason, "Disconnect by user.", true) || z_AntiReconnect_Mode == 0)
{
decl String:steamId[32];
GetClientAuthString(client, steamId, 30, true);
KvSetNum(g_kvDB, steamId, GetTime(_));
}
}