Cmd help!
#1

Hello I am making a range cmd. It kinda works. Today when I was testing it, I had 2 probs. Problem 1 was that I made a dialog box which will appear to the player being banned. and instead when I range banned someone that dialog box comes to me. Second Problem, When I rangeban someone, The player gets kicked and it says Server closed the connection to that player as usual. But he doesn't get banned he gets kicked. he can easily re join.; So I need help fixing the issue.
Here is my CMD:
pawn Код:
CMD:rangeban(playerid, params[])
{
    if(PlayerInfo[playerid][pAdminDuty] == 0) return SendClientMessage(playerid, -1, "You must be on Admin Duty to use this Command!");
    if (PlayerInfo[playerid][pAdmin] >= 1338)
    {
        new Target;
        new Reason[100];
        if(!sscanf(params, "us[100]", Target,Reason))
        {
            if(Target == INVALID_PLAYER_ID) return SendClientMessage(playerid,-1,"ERROR: Wrong player ID");
            if(Target == playerid) return SendClientMessage(playerid,-1,"ERROR: You cant ban yourself!");
            new tname[MAX_PLAYER_NAME];
            GetPlayerName(Target,tname,sizeof(tname));
            new pname[MAX_PLAYER_NAME];
            GetPlayerName(playerid,pname,sizeof(pname));
            new MyString[256];
            new TargetString[256];
            new rbandate[3];
            getdate(rbandate[0], rbandate[1], rbandate[2]);
            format(MyString,sizeof(MyString),"You have range banned %s(%d)! (Reason: %s)",tname, Target, Reason);
            format(TargetString,sizeof(TargetString),"{FF002B}Range banned by: {FFFFFF}%s\n\n{FF002B}Reason: {FFFFFF}%s\n\n{FF002B}Date: {FFFFFF}%02d/%02d/%04d\n\n{FFFFFF}Press F8 to take a screenshot and use this in unban appeal!", pname, playerid,Reason, rbandate[2], rbandate[1], rbandate[0]);
            ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FF002B}RANGE BANNED!", TargetString, "OK", "");
            SendClientMessage(playerid,-1,MyString);
            new AllString[256];
            format(AllString,sizeof(AllString),"Administrator %s range banned player %s(%d)! (Reason: %s)",pname,tname,Target,Reason);
            SendClientMessageToAll(-1,AllString);
            new ip[50];
            GetPlayerIp(Target,ip,sizeof(ip));
            strdel(ip,strlen(ip)-4,strlen(ip));
            format(ip,sizeof(ip),"%s.***",ip);
            format(ip,sizeof(ip),"banip %s",ip);
            SendRconCommand(ip);
            new LogString[256];
            format(LogString,sizeof(LogString),"Administrator %s range banned player %s(%d)! (Reason: %s)",pname,tname,ip,Reason);
            AddBan(PlayerInfo[MAX_PLAYERS][pIP]);
            Log("logs/ban.log", LogString);
            Kick(Target);
        }
        else SendClientMessage(playerid, -1, "USAGE: /rangeban [playerid] [reason]");
    }
    return 1;
}
Reply
#2

First problem:
pawn Код:
ShowPlayerDialog(Target, 0, DIALOG_STYLE_MSGBOX, "{FF002B}RANGE BANNED!", TargetString, "OK", "");
Second problem: You send the rcon command to range ban that player but I'm not really sure if it will ban the player at that time. As for the kick, you used: Kick(Target);
Reply
#3

Okay the first problem was fixed. but the second one still remains. help me.
Reply
#4

PHP код:
            AddBan(PlayerInfo[MAX_PLAYERS][pIP]);
            
Log("logs/ban.log"LogString);
            
Kick(Target);
        }
        else 
SendClientMessage(playerid, -1"USAGE: /rangeban [playerid] [reason]");
    }
    return 
1;

Compare your script with part of this one,
PHP код:
    GetPlayerName(idbannedsizeof(banned)); 
    
format(stringsizeof(string), "AdmCmd: %s has been banned by %s. reason: %s"bannedGetName(playerid), reason); 
    
SendClientMessageToAll(redstring); 
    
BanEx(idreason); 
    return 
1

So instead of Kick(target) you should use BanEx.
Reply
#5

Range bans are a bad idea they're mostly effective at only keeping out people who are not banned players often have a lot of ranges so this is a really poor way to ban people.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)