
TBan System by:Sramm
By: a guest on
Jun 17th, 2012 | syntax:
PAWN | size: 2.58 KB | hits: 22 | expires: Never
#if defined _tban_included
#endinput
#endif
#define _tban_included
#include <dini>
// By: GameStar
stock second(time)
{
time = time*1000;
return time;
}
stock minute(time)
{
time = second(time)*60;
return time;
}
stock hour(time)
{
time = minute(time)*60;
return time;
}
stock day(time)
{
time = hour(time)*24;
return time;
}
#define MAX_BANN 100
new BannTime[MAX_BANN];
forward b_OnGameModeInit();
forward Banntimers();
public b_OnGameModeInit()
{
new bf[128];
for(new b; b<=MAX_BANN; b++)
{
format(bf,128,"/BannTime/%d.ini",b);
if(dini_Exists(bf))
{
BannTime[b] = dini_Int(bf,"time");
SetTimer("Banntimers",60000,1);
}
}
return 1;
}
stock TBan(playerid,type,time)
{
new ip[128],b[128];
new nextb = NextBan();
format(b,128,"/BannTime/%d.ini",nextb);
dini_Create(b);
dini_Set(b,"Name",GetName(playerid));
GetPlayerIp(playerid,ip,sizeof(ip));
dini_Set(b,"IP",ip);
if(type == 1)
{
minute(time);
}
if(type == 2)
{
hour(time);
}
if(type == 3)
{
day(time);
}
dini_IntSet(b,"time",time);
BannTime[nextb] = time;
SetTimer("Banntimers",60000,1);
Ban(playerid);
return 1;
}
stock TBanEx(playerid,reason,type,time)
{
new b[128],ip[128];
new nextb = NextBan();
format(b,128,"/BannTime/%d",nextb);
dini_Create(b);
dini_Set(b,"Name",GetName(playerid));
GetPlayerIp(playerid,ip,sizeof(ip));
dini_Set(b,"IP",ip);
if(type == 1)
{
minute(time);
}
if(type == 2)
{
hour(time);
}
if(type == 3)
{
day(time);
}
dini_IntSet(b,"time",time);
BannTime[nextb] = time;
SetTimer("Banntimers",60000,1);
BanEx(playerid,reason);
return 1;
}
stock GetName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
public Banntimers()
{
new b[128];
for(new bc; bc<=MAX_BANN; bc++)
{
format(b,128,"/BannTime/%d.ini",bc);
if(dini_Exists(b))
{
BannTime[bc] -= 1;
dini_IntSet(b,"time",BannTime[bc]);
if(dini_Int(b,"time") == 0) return UnBan(b);
}
}
return 1;
}
stock UnBan(file[])
{
new ub[128];
if(dini_Exists(file))
{
format(ub,128,"unbanip %s",dini_Get(file,"IP"));
SendRconCommand(ub);
dini_Remove(file);
}
return 1;
}
stock NextBan()
{
new b[128];
for(new bc; bc<=MAX_BANN; bc++)
{
format(b,128,"/BannTime/%d.ini",bc);
if(!dini_Exists(b)) return bc;
}
return 1;
}