Temporary ban help [updated]
#1

Hello. I need help with this script:

pawn Код:
dcmd_ban(playerid, params[]){
new reason[128];
new giveplayerid;
new day;
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
if(dini_Int(accountfile(playerid),"Admin") == 0){
SendClientMessage(playerid, COLOR_WHITE, "*[INFO]: Tik Administratoriams!");
return 1;
}
if(sscanf(params, "dds",giveplayerid,day,reason)){
return BanUsage(playerid);
}
//if(giveplayerid == playerid) return NoBanYourself(playerid);
if(!IsPlayerConnected(giveplayerid)) return WrongPlayerID(playerid);
//if(dini_Int(accountfile(giveplayerid),"Admin") == 1){
//SendClientMessage(playerid, COLOR_GRAD1, "*[INFO]: Negalite iрbaninti Administratoriaus!");
//return 1;
//}
//if(IsPlayerAdmin(giveplayerid)) return NoRCONBan(playerid);
if(day < 1){
SendClientMessage(playerid, COLOR_GRAD1, "*[INFO]: Negalima uюbaninti maюiau nei vienа dienа!");
return 1;
}
GetPlayerIp(giveplayerid,playerip,256);
format(bstring2,256,"/Bans/%s.txt",playerip);
if(!dini_Exists(bstring2))
{dini_Create(bstring2);}
dini_Set(bstring2,"banned","1");
gettime(h,m,s);
getdate(ayear,amonth,aday);
h+=2;
if(h == 24){
h=0;
aday++;
}
else if(h > 24){
h-=23;
aday++;
}
aday += day;
if((aday + 1) > 31){
aday-=31;
amonth++;
if(amonth > 12){
ayear++;
amonth-=12;
}
}
if (IsMonth31(amonth)){
if (aday > 31){
amonth += 1;
if (amonth > 12){
ayear += 1;
while(aday > 31) aday -= 31;
}
else while(aday > 31) aday -= 31;
}
}
else if (!IsMonth31(amonth)){
if (aday > 30){
amonth += 1;
if (amonth > 12){
ayear += 1;
while(aday > 30) aday -= 30;
}
else while(aday > 30) aday -= 30;
}
}
else if (!IsMonth31(amonth) && IsMonth29(ayear) && amonth == 2){
if (aday > 29){
amonth += 1;
if (amonth > 12){
ayear += 1;
while(aday > 29) aday -= 29;
}
else while(aday > 29) aday -= 29;
}
}
else if (!IsMonth31(amonth) && !IsMonth29(ayear) && amonth == 2){
if (aday > 28){
amonth += 1;
if (amonth > 12){
ayear += 1;
while(aday > 28) aday -= 28;
}
else while(aday > 28) aday -= 28;
}
}
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(bstring3,256,"%d",h);
format(bstring4,256,"%d",m);
format(bstring5,256,"%d",s);
format(bstring6,256,"%d",aday);
format(bstring7,256,"%d",amonth);
format(bstring8,256,"%d",ayear);
dini_Set(bstring2,"hour",bstring3);
dini_Set(bstring2,"minute",bstring4);
dini_Set(bstring2,"second",bstring5);
dini_Set(bstring2,"day",bstring6);
dini_Set(bstring2,"month",bstring7);
dini_Set(bstring2,"year",bstring8);
dini_Set(bstring2,"reason",reason);
dini_Set(bstring2,"name",giveplayer);
GetPlayerName(playerid, sendername, sizeof(sendername));
for(new i=0;i<MAX_SLOTS;i++){
new string[256]; format(string, sizeof(string), "*[INFO]: %s uюblokuotas iki %d-%02d-%02d %02d:%02d. (Prieюastis: (%s)) ", giveplayer,dini_Int(bstring2,"year"),dini_Int(bstring2,"month"),dini_Int(bstring2,"day"),dini_Int(bstring2,"hour"),dini_Int(bstring2,"minute"),reason);
SendClientMessage(i,COLOR_WHITE, string);
}
Kick(giveplayerid);
return 1;
}
stock IsMonth31(month){
switch (month){
case 1: return 1;
case 3: return 1;
case 5: return 1;
case 7: return 1;
case 8: return 1;
case 10: return 1;
case 12: return 1;
default: return 0;
}
return 0;
}

stock IsMonth29(year){
new y = 2000;
for(new i = 4; i < 3000; i += 4) if ((y+i) == year) return 1;
return 0;
}
How to fix if month has 30 days not to set unban on 31st day. Eg.:
Think that today is 1st of april. I set ban for 30 days. Unban will be set on the 31st of april. But april doesn't have 31 day..
And a problem with january month. It has 28 days and 29...
Reply
#2

Maybe someone can help? :S
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)