Timeban -
EmpireSk - 14.01.2015
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
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;
}
Re: Timeban -
xVIP3Rx - 14.01.2015
You'll need another command processor though, In here I used
zcmd
pawn Код:
CMD:tempban(playerid, params[]) //Credits to LuxAdmin
{
if(Account[playerid][Level] < 5) return SendClientMessage(playerid,Red,"ERROR: You are not a high enough level to use this command");
new giveplayerid, days, reason[50];
if(sscanf(params, "uds[50]", giveplayerid, days, reason)) return SendClientMesage SendClientMessage(playerid,COLOR_ERROR, "{6EF83C}Usage: {FFFFFF}/tempban [PlayerID] [Day(s)] [Reason]");
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid,Red,"ERROR: Player is not connected");
if(days <= 0 || days > 1000) return SendClientMessage(playerid, Red, "ERROR: Invalid Day! (1-1000)");
new name[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME],
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);
return 1;
}
Re: Timeban -
EmpireSk - 14.01.2015
Thanks bro thanks