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(cmdtextidx);
                if (!
strlen(tmp))
                {
                
SendClientMessage(playeridCOLOR_ERROR"{6EF83C}Usage: {FFFFFF}/tempban [PlayerID] [Day(s)] [Reason]");
                return 
1;
                }
                new 
days strval(tmp);
                if(!
IsNumeric(tmp))
                return 
SendClientMessage(playeridRed"ERROR: Invalid Day! Only Numbers!");
                if(
strval(tmp) <= || strval(tmp) > 1000)
                return 
SendClientMessage(playeridRed"ERROR: Invalid Day! (1-1000)");
                new 
reason[128];
                
reason strtok2(cmdtext,idx);
                if (!
strlen(reason))
                return 
SendClientMessage(playeridRed"ERROR: Reason not Specified!");
                if (
strlen(reason) <= || strlen(reason) > 100)
                return 
SendClientMessage(playeridRed"ERROR: Invalid Reason length!");
                new 
ip[15];
                
GetPlayerIp(giveplayerid,ip,15);
                
GetPlayerName(playeridnamesizeof name);
                
GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                new 
File:tempban fopen("ZeroAdmin/Logs/TempBans.ban"io_append);
                if (
tempban)
                {
                    new 
year,month,day;
                    
getdate(yearmonthday);
                    
day += days;
                    if (
IsMonth31(month))
                    {
                        if (
day 31)
                        {
                            
month += 1;
                            if (
month 12)
                            {
                                
year += 1;
                                while(
day 31day -= 31;
                            }
                            else while(
day 31day -= 31;
                        }
                    }
                    else if (!
IsMonth31(month))
                    {
                        if (
day 30)
                        {
                            
month += 1;
                            if (
month 12)
                            {
                                
year += 1;
                                while(
day 30day -= 30;
                            }
                            else while(
day 30day -= 30;
                        }
                    }
                    else if (!
IsMonth31(month) && IsMonth29(year) && month == 2)
                    {
                        if (
day 29)
                        {
                            
month += 1;
                            if (
month 12)
                            {
                                
year += 1;
                                while(
day 29day -= 29;
                            }
                            else while(
day 29day -= 29;
                        }
                    }
                    else if (!
IsMonth31(month) && !IsMonth29(year) && month == 2)
                    {
                        if (
day 28)
                        {
                            
month += 1;
                            if (
month 12)
                            {
                                
year += 1;
                                while(
day 28day -= 28;
                            }
                            else while(
day 28day -= 28;
                        }
                    }
                    
format(stringsizeof string"%d|%d|%d|%s\n"daymonthyearip);
                    
fwrite(tempbanstring);
                    
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(stringsizeof 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)