SA-MP Forums Archive
tempban probl - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: tempban probl (/showthread.php?tid=431116)



tempban probl - Face9000 - 16.04.2013

Hello, i have a tempban system and it works, but there is a problem: When someone joins with a temp banned account, the message saying "account banned for more" is wrong. It shows random numbers. It should show day/month/year - hour/min/sec.

This is the tempban check:

pawn Код:
public CheckTempBan(playerid)
{
    if(pInfo[playerid][TempBan] >= gettime())
    {
        new Jstring[128];
        new echo[128];
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        new minu, hour ,day, sec = pInfo[playerid][TempBan] - gettime();
        format(Jstring, sizeof(Jstring),"** (KICK) %s (%d) (Account banned for more %s)", pName,playerid,ConvertTime(sec,minu,hour,day));
        format(echo,sizeof echo,"0,4** (KICK) %s (%d) (Account banned for more %s).",pName,playerid,ConvertTime(sec,minu,hour,day));
        IRC_GroupSay(gGroupID, IRC_CHANNEL, echo);
        IRC_GroupSay(gGroupID, IRC_ACHANNEL, echo);
        SCMTA(pink,Jstring);
        KickTimer[playerid] = SetTimerEx("KickPlayer",200,false,"d",playerid);
    }
    else if(pInfo[playerid][TempBan] > 0)
    {
        new year,month,day;
        getdate(year,month,day);
        new Jstring[128];
        SendClientMessage(playerid,pink,"** Your tempban period has expired, welcome back!");
        format(Jstring,sizeof(Jstring),"Expired on: %d/%d/%d",year,month,day);
        pInfo[playerid][TempBan] = 0;
    }
    return 1;
}
And this is tempban:

pawn Код:
CMD:tempban(playerid, params[])
{
    if(pInfo[playerid][Admin] >= 5)
    {
        new id, reason[128], aName[MAX_PLAYER_NAME], pName[MAX_PLAYER_NAME];
        new days, year, month, day, hour, minute;

        if(sscanf(params, "uis[250]", id, days, reason)) return SendClientMessage(playerid, -1, "{F70505}Usage: {FFFFFF}/tempban <playerid> <days> <reason>");
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, red, "Invalid player ID.");

        GetPlayerName(playerid, aName, sizeof(aName));
        GetPlayerName(id, pName, sizeof(pName));
        pInfo[id][TempBan] = (gettime() + (86400*days));
        getdate(year, month, day);
        gettime(hour, minute);

        new tBans[256], echo[256], banmsg[128];
        format(tBans, sizeof(tBans), "** %s (%d) has been temporarily banned by Admin %s (%d) for %d days | Reason: %s (%02d/%02d/%04d | %02d:%02d)", pName, id, aName, playerid, days, reason, day, month, year, hour, minute);
        format(echo, sizeof(echo), "0,4** %s (%d) has been temporarily banned by Admin %s (%d) for %d days | Reason: %s (%02d/%02d/%04d | %02d:%02d)", pName, id, aName, playerid, days, reason, day, month, year, hour, minute);
        format(banmsg, sizeof(banmsg), "Admin %s (%d) has temp banned you for %d days | Reason: %s", aName, playerid, days, reason);

        SendClientMessageToAll(pink, tBans);
        IRC_Say(gGroupID, IRC_CHANNEL, echo);
        IRC_Say(gGroupID, IRC_ACHANNEL, echo);
        SendClientMessage(id, pink, banmsg);

        KickTimer[id] = SetTimerEx("KickPlayer", 100, false, "d", id);
    }
    return 1;
}
What could be wrong?


Re: tempban probl - Face9000 - 16.04.2013

EDIT: I made it work by editing in this way:

pawn Код:
public CheckTempBan(playerid)
{
    if(pInfo[playerid][TempBan] >= gettime())
    {
        new Jstring[128];
        new echo[128];
        new pName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, pName, sizeof(pName));
        new minu, hour ,day, sec = pInfo[playerid][TempBan] - gettime();
        format(Jstring, sizeof(Jstring),"** (KICK) %s (%d) (Account banned for more %s)", pName,playerid,ConvertTime(sec,minu,hour,day));
        format(echo,sizeof echo,"0,4** (KICK) %s (%d) (Account banned for more %s).",pName,playerid,ConvertTime(sec,minu,hour,day));
        IRC_GroupSay(gGroupID, IRC_CHANNEL, echo);
        IRC_GroupSay(gGroupID, IRC_ACHANNEL, echo);
        SCMTA(pink,Jstring);
        KickTimer[playerid] = SetTimerEx("KickPlayer",200,false,"d",playerid);
    }
    else if(pInfo[playerid][TempBan] > 0)
    {
        new year,month,day;
        getdate(year,month,day);
        new Jstring[128];
        SendClientMessage(playerid,pink,"** Your tempban period has expired, welcome back!");
        format(Jstring,sizeof(Jstring),"Expired on: %d/%d/%d",year,month,day);
        pInfo[playerid][TempBan] = 0;
    }
    return 1;
}
In-game the time left is correct, but in echo no, it shows "22 seconds", why? I use the same variables. This is the ConvertTime:

pawn Код:
stock ConvertTime(&cts, &ctm=-1,&cth=-1,&ctd=-1,&ctw=-1,&ctmo=-1,&cty=-1)
{
    #define PLUR(%0,%1,%2) (%0),((%0) == 1)?((#%1)):((#%2))

    #define CTM_cty 31536000
    #define CTM_ctmo 2628000
    #define CTM_ctw 604800
    #define CTM_ctd 86400
    #define CTM_cth 3600
    #define CTM_ctm 60

    #define CT(%0) %0 = cts / CTM_%0; cts %= CTM_%0

    new strii[128];

    if(cty != -1 && (cts/CTM_cty))
    {
        CT(cty); CT(ctmo); CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(strii, sizeof(strii), "%d %s, %d %s, %d %s, %d %s, %d %s, %d %s, and %d %s",PLUR(cty,"year","years"),PLUR(ctmo,"month","months"),PLUR(ctw,"week","weeks"),PLUR(ctd,"day","days"),PLUR(cth,"hour","hours"),PLUR(ctm,"minute","minutes"),PLUR(cts,"second","seconds"));
        return strii;
    }
    if(ctmo != -1 && (cts/CTM_ctmo))
    {
        cty = 0; CT(ctmo); CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(strii, sizeof(strii), "%d %s, %d %s, %d %s, %d %s, %d %s, and %d %s",PLUR(ctmo,"month","months"),PLUR(ctw,"week","weeks"),PLUR(ctd,"day","days"),PLUR(cth,"hour","hours"),PLUR(ctm,"minute","minutes"),PLUR(cts,"second","seconds"));
        return strii;
    }
    if(ctw != -1 && (cts/CTM_ctw))
    {
        cty = 0; ctmo = 0; CT(ctw); CT(ctd); CT(cth); CT(ctm);
        format(strii, sizeof(strii), "%d %s, %d %s, %d %s, %d %s, and %d %s",PLUR(ctw,"week","weeks"),PLUR(ctd,"day","days"),PLUR(cth,"hour","hours"),PLUR(ctm,"minute","minutes"),PLUR(cts,"second","seconds"));
        return strii;
    }
    if(ctd != -1 && (cts/CTM_ctd))
    {
        cty = 0; ctmo = 0; ctw = 0; CT(ctd); CT(cth); CT(ctm);
        format(strii, sizeof(strii), "%d %s, %d %s, %d %s, and %d %s",PLUR(ctd,"day","days"),PLUR(cth,"hour","hours"),PLUR(ctm,"minute","minutes"),PLUR(cts,"second","seconds"));
        return strii;
    }
    if(cth != -1 && (cts/CTM_cth))
    {
        cty = 0; ctmo = 0; ctw = 0; ctd = 0; CT(cth); CT(ctm);
        format(strii, sizeof(strii), "%d %s, %d %s, and %d %s",PLUR(cth,"hour","hours"),PLUR(ctm,"minute","minutes"),PLUR(cts,"second","seconds"));
        return strii;
    }
    if(ctm != -1 && (cts/CTM_ctm))
    {
        cty = 0; ctmo = 0; ctw = 0; ctd = 0; cth = 0; CT(ctm);
        format(strii, sizeof(strii), "%d %s, and %d %s",PLUR(ctm,"minute","minutes"),PLUR(cts,"second","seconds"));
        return strii;
    }
    cty = 0; ctmo = 0; ctw = 0; ctd = 0; cth = 0; ctm = 0;
    format(strii, sizeof(strii), "%d %s", PLUR(cts,"second","seconds"));
    return strii;
}



Re: tempban probl - Face9000 - 17.04.2013

Bump.


Re: tempban probl - TomatoRage - 17.04.2013

Код:
pawn Код:
format(Jstring, sizeof(Jstring),"** (KICK) %s (%d) (Account banned for more %d)", pName,playerid,ConvertTime(sec,minu,hour,day));format(echo,sizeof echo,"0,4** (KICK) %s (%d) (Account banned for more %d).",pName,playerid,ConvertTime(sec,minu,hour,day));
i think


Re: tempban probl - Face9000 - 17.04.2013

Quote:
Originally Posted by TomatoRage
Посмотреть сообщение
Код:
pawn Код:
format(Jstring, sizeof(Jstring),"** (KICK) %s (%d) (Account banned for more %d)", pName,playerid,ConvertTime(sec,minu,hour,day));format(echo,sizeof echo,"0,4** (KICK) %s (%d) (Account banned for more %d).",pName,playerid,ConvertTime(sec,minu,hour,day));
i think
Emh what?


Re: tempban probl - tboysamp - 17.04.2013

good job man