Ban command error...
#1

Hello everyone I've tried to make a ban command which store the ban reason and show it when the player try to login again, but I failed.Here is the command:

pawn Код:
CMD:ban(playerid,params[])
{
    new id,name[MAX_PLAYER_NAME];
    new admin[MAX_PLAYER_NAME],reason[64];
    new string[128];
    new y,mh,d; getdate(y,mh,d);
    new h,m,s; gettime(h,m,s);
    if(ainfo[playerid][admlv] > 0)
    {
        if(sscanf(params,"us[64]",id,reason)) return SendClientMessage(playerid,COLOR_GREY, "Syntax: /ban [PlayerID/Name] [Reason]");
        else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY, "That player isn't connected !");
        else
        {
            GetPlayerName(playerid,admin,sizeof(admin));
            GetPlayerName(id,name,sizeof(name));
            if(ainfo[id][admlv] > ainfo[playerid][admlv])
            {
                format(string,sizeof(string),"[Warning]: Administrator %s tried to ban you !",admin);
                SendClientMessage(id,COLOR_YELLOW,string);
                SendClientMessage(playerid,COLOR_YELLOW,"[AdmCmd]: You tried to ban a higher admin than you !");
                SetTimerEx("TKick",500,false,"i",playerid);
            }
            else
            {
                format(string,sizeof(string),"[AdmCmd]: Administrator %s banned %s. Reason %s",admin,name,reason);
                SendClientMessageToAll(COLOR_RED,string);
                ainfo[id][ban] = true;
                    INI_WriteString(UserPath(id),"Reason",reason); // Line 260
                SetTimerEx("TKick",500,false,"i",id);
                format(string,sizeof(string),"Date:[%d/%d/%d] Time:[%d/%d/%d] Admin: %s Player: %s Reason: %s",y,mh,d,h,m,s,admin,name,reason);
                BanLog(string);
            }
        }
    }
    else {SendClientMessage(playerid,COLOR_GREY, "You aren't authorized to use this command !");}
    return 1;
}
Here is the error:
pawn Код:
D:\SAMP 0.3z\filterscripts\admcmd.pwn(260) : error 035: argument type mismatch (argument 1)
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
Any ideeas ?
Reply
#2

pawn Код:
CMD:ban(playerid,params[])
{
    new id,name[MAX_PLAYER_NAME];
    new admin[MAX_PLAYER_NAME],reason[64];
    new string[128];
    new y,mh,d; getdate(y,mh,d);
    new h,m,s; gettime(h,m,s);
    if(ainfo[playerid][admlv] > 0)// 0 is ur admin lvl so all can use ban
    {
        if(sscanf(params,"us[64]",id,reason)) return SendClientMessage(playerid,COLOR_GREY, "Syntax: /ban [PlayerID/Name] [Reason]");
        else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY, "That player isn't connected !");
        else
        {
            GetPlayerName(playerid,admin,sizeof(admin));
            GetPlayerName(id,name,sizeof(name));
            if(ainfo[id][admlv] > ainfo[playerid][admlv])
            {
                format(string,sizeof(string),"[Warning]: Administrator %s tried to ban you !",admin);
                SendClientMessage(id,COLOR_YELLOW,string);
                SendClientMessage(playerid,COLOR_YELLOW,"[AdmCmd]: You tried to ban a higher admin than you !");
                SetTimerEx("TKick",500,false,"i",playerid);
            }
            else
            {
                format(string,sizeof(string),"[AdmCmd]: Administrator %s banned %s. Reason %s",admin,name,reason);
                SendClientMessageToAll(COLOR_RED,string);
                ainfo[id][ban] = true;
                INI_WriteString(UserPath(id),"Reason",reason);
                SetTimerEx("TKick",500,false,"i",id);
                format(string,sizeof(string),"Date:[%d/%d/%d] Time:[%d/%d/%d] Admin: %s Player: %s Reason: %s",y,mh,d,h,m,s,admin,name,reason);
                BanLog(string);
            }
        }
    }
    else {SendClientMessage(playerid,COLOR_GREY, "You aren't authorized to use this command !");}
    return 1;
}
Reply
#3

and for witch admin lvl u want?
Reply
#4

Still the same error...
The exactly problem would be the INI...

ainfo[playerid][admlv] > 0 => 1+, because it's and integer number and it can't be admin 0.5
Reply
#5

pawn Код:
CMD:ban(playerid, params[])
{
        if(ainfo[playerid][admlv]< 1)//change it to how much u want return SendClientMessage(playerid, COLOR_RED, "You're not authorized to use this command");
        new
            string[128],pplayerid, reason[48];
        if(sscanf(params, "us[48]", pplayerid, reason)) return SCM(playerid, COLOR_RED, "USAGE: /ban [Player ID/Player Name] [Reason]");
        format(string,sizeof(string),"Admin %s banned %s |Reason: %s",GetName(playerid),GetName(pplayerid),reason);
        SendClientMessageToAll(-1,string);
        Bans(playerid,pplayerid,reason);
        Ban(pplayerid);
        return 1;
}
EDIT: i didnt tested it tell me if u found an error
Reply
#6

and u need bans stock

pawn Код:
stock Bans(playerid,targetid,reason[])
{
    new string[128];
    format(string, sizeof(string), "Admin %s banned %s|Reason: %s\n", GetName(playerid),GetName(targetid),reason);
    new File:hFile;
    hFile = fopen("/ShAdmin/Bans.txt", io_append);
    fwrite(hFile, string);
    fclose(hFile);
}
Reply
#7

test now

pawn Код:
CMD:ban(playerid,params[])
{
    new id,name[MAX_PLAYER_NAME];
    new admin[MAX_PLAYER_NAME],reason[64];
    new string[128];
    new y,mh,d; getdate(y,mh,d);
    new h,m,s; gettime(h,m,s);
    if(ainfo[playerid][admlv] > 0)
    {
        if(sscanf(params,"us",id,reason)) return SendClientMessage(playerid,COLOR_GREY, "Syntax: /ban [PlayerID/Name] [Reason]");
        else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_GREY, "That player isn't connected !");
        else
        {
            GetPlayerName(playerid,admin,sizeof(admin));
            GetPlayerName(id,name,sizeof(name));
            if(ainfo[id][admlv] > ainfo[playerid][admlv])
            {
                format(string,sizeof(string),"[Warning]: Administrator %s tried to ban you !",admin);
                SendClientMessage(id,COLOR_YELLOW,string);
                SendClientMessage(playerid,COLOR_YELLOW,"[AdmCmd]: You tried to ban a higher admin than you !");
                SetTimerEx("TKick",500,false,"i",playerid);
            }
            else
            {
                format(string,sizeof(string),"[AdmCmd]: Administrator %s banned %s. Reason %s",admin,name,reason);
                SendClientMessageToAll(COLOR_RED,string);
                ainfo[id][ban] = true;
                    INI_WriteString(UserPath(id),"Reason",reason); // Line 260
                SetTimerEx("TKick",500,false,"i",id);
                format(string,sizeof(string),"Date:[%d/%d/%d] Time:[%d/%d/%d] Admin: %s Player: %s Reason: %s",y,mh,d,h,m,s,admin,name,reason);
                BanLog(string);
            }
        }
    }
    else {SendClientMessage(playerid,COLOR_GREY, "You aren't authorized to use this command !");}
    return 1;
}
EDIT:
Read the correct usage of INI formats
https://sampforum.blast.hk/showthread.php?tid=175565
Reply
#8

Thanks Ice and for everyone who helped me, i found the mistake
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)