14.01.2015, 20:07
hi,
how to properly timeban through sscanf and that there was no tmp strtok and so on
for example, I'm putting code from one system admin
and that if this could be to sscanf
how to properly timeban through sscanf and that there was no tmp strtok and so on
for example, I'm putting code from one system admin
and that if this could be to sscanf
PHP код:
if(strcmp(cmd, "/tempban", true) == 0) //Credits to LuxAdmin
{
new name[MAX_PLAYER_NAME];
new giveplayer[MAX_PLAYER_NAME];
new giveplayerid;
if(Account[playerid][Level] < 5) return SendClientMessage(playerid,Red,"ERROR: You are not a high enough level to use this command");
tmp = strtok(cmdtext,idx);
if(!strlen(tmp))
{
SendClientMessage(playerid,COLOR_ERROR, "{6EF83C}Usage: {FFFFFF}/tempban [PlayerID] [Day(s)] [Reason]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
tmp = strtok(cmdtext, idx);
if (!strlen(tmp))
{
SendClientMessage(playerid, COLOR_ERROR, "{6EF83C}Usage: {FFFFFF}/tempban [PlayerID] [Day(s)] [Reason]");
return 1;
}
new days = strval(tmp);
if(!IsNumeric(tmp))
return SendClientMessage(playerid, Red, "ERROR: Invalid Day! Only Numbers!");
if(strval(tmp) <= 0 || strval(tmp) > 1000)
return SendClientMessage(playerid, Red, "ERROR: Invalid Day! (1-1000)");
new reason[128];
reason = strtok2(cmdtext,idx);
if (!strlen(reason))
return SendClientMessage(playerid, Red, "ERROR: Reason not Specified!");
if (strlen(reason) <= 0 || strlen(reason) > 100)
return SendClientMessage(playerid, Red, "ERROR: Invalid Reason length!");
new ip[15];
GetPlayerIp(giveplayerid,ip,15);
GetPlayerName(playerid, name, sizeof name);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
new File:tempban = fopen("ZeroAdmin/Logs/TempBans.ban", io_append);
if (tempban)
{
new year,month,day;
getdate(year, month, day);
day += days;
if (IsMonth31(month))
{
if (day > 31)
{
month += 1;
if (month > 12)
{
year += 1;
while(day > 31) day -= 31;
}
else while(day > 31) day -= 31;
}
}
else if (!IsMonth31(month))
{
if (day > 30)
{
month += 1;
if (month > 12)
{
year += 1;
while(day > 30) day -= 30;
}
else while(day > 30) day -= 30;
}
}
else if (!IsMonth31(month) && IsMonth29(year) && month == 2)
{
if (day > 29)
{
month += 1;
if (month > 12)
{
year += 1;
while(day > 29) day -= 29;
}
else while(day > 29) day -= 29;
}
}
else if (!IsMonth31(month) && !IsMonth29(year) && month == 2)
{
if (day > 28)
{
month += 1;
if (month > 12)
{
year += 1;
while(day > 28) day -= 28;
}
else while(day > 28) day -= 28;
}
}
format(string, sizeof string, "%d|%d|%d|%s\n", day, month, year, ip);
fwrite(tempban, string);
fclose(tempban);
}
format(string,128,"Administrator %s Temporarily Banned %s for %d Day(s) Reason: %s",name,giveplayer,days,reason);
SendClientMessageToAll(Red,string);
Kick(giveplayerid);
format(string, sizeof string, "Admin %s Temporarily Banned %s for %d Day(s) Reason: %s",name,giveplayer,days,reason);
SaveLogs("TempBansLog",string);
}
else
{
SendClientMessage(playerid,Red,"ERROR: Player is not connected");
}
}
return 0;
}