Timeban
#1

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;
} 
Reply
#2

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;
}
Reply
#3

Thanks bro thanks
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)