Small problem with /ban cmd.
#1

I made this ban cmd but the message "You have been banned by Administrator Nick" is not sending to the player that is banned, its directly showing "Server closed the connection" i have even set the timer to 4 seconds before kicking the player, but still same thing is going on. Any idea?

pawn Код:
CMD:ban(playerid, params[])
{
    new BanMsg[128], target, Reason[100], Msg1[128], Msg2[128], targetname[24], AdminName[24];
   
    SendAdminText(playerid, "/ban", params);

    if(APlayerData[playerid][LoggedIn] == true && APlayerData[playerid][PlayerLevel] >=3)
    {
        if(sscanf(params, "us[128]", target, Reason)) return SendClientMessage(playerid, RED, "» Syntax: /ban [ID] [Reason]");
       
        if(APlayerData[target][Banned] == 0)
        {
            GetPlayerName(playerid, AdminName, sizeof(AdminName));
            GetPlayerName(target, targetname, sizeof(targetname));
            SetTimerEx("KickPlayer", false, 4000, "i", target);
            format(Msg1, sizeof(Msg1), "» You have banned %s(%d) for the reason: %s", targetname, target, Reason);
            SendClientMessage(playerid, BLUE, Msg1);
            format(Msg2, sizeof(Msg2), "» You have been banned by Admin %s(%d)! Reason: %s", AdminName, playerid, Reason);
            format(BanMsg, sizeof(BanMsg), "*** %s(%d) has been banned by Administrator %s(%d). (Reason: %s)", targetname, target, AdminName, playerid, Reason);
            SendClientMessageToAll(RED, BanMsg);
            APlayerData[target][Banned] = 1;
            SendClientMessage(target, RED, Msg2);
        }
    }
    else
        return 0;
    return 1;
}
   
forward KickPlayer(playerid);
public KickPlayer(playerid)
{
      Kick(playerid);
}
Reply
#2

Try this
pawn Код:
CMD:ban(playerid,params[])
{
    if(APlayerData[playerid][LoggedIn] == true && APlayerData[playerid][PlayerLevel] >=3)
    {
        new PID;
        new reason[64];
        new str[128];
        new Playername[MAX_PLAYER_NAME], Adminname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Adminname, sizeof(Adminname));
        GetPlayerName(PID, Playername, sizeof(Playername));
        if(sscanf(params, "us[64]", PID,reason)) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[USAGE]: {FFFFFF} /ban [playerid] [reason]");
        if(!IsPlayerConnected(PID)) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[ERROR]: {FFFFFF}Player is not connected!");
        format(str, sizeof(str), "[BANNED] Player '%s' has been banned by Administrator '%s'. Reason: %s ", Playername, Adminname, reason);
        SendClientMessageToAll(COLOR_RED, str);
        Ban(PID);
        return 1;
    }
    else return SendClientMessage(playerid,-1,"{FF0000}[ADMIN] Your level is not high enough {FFFFFF}[Level 3]!");
}
Reply
#3

Quote:
Originally Posted by ChandraLouis
Посмотреть сообщение
Try this
pawn Код:
CMD:ban(playerid,params[])
{
    if(APlayerData[playerid][LoggedIn] == true && APlayerData[playerid][PlayerLevel] >=3)
    {
        new PID;
        new reason[64];
        new str[128];
        new Playername[MAX_PLAYER_NAME], Adminname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, Adminname, sizeof(Adminname));
        GetPlayerName(PID, Playername, sizeof(Playername));
        if(sscanf(params, "us[64]", PID,reason)) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[USAGE]: {FFFFFF} /ban [playerid] [reason]");
        if(!IsPlayerConnected(PID)) return SendClientMessage(playerid, COLOR_WHITE, "{FF0000}[ERROR]: {FFFFFF}Player is not connected!");
        format(str, sizeof(str), "[BANNED] Player '%s' has been banned by Administrator '%s'. Reason: %s ", Playername, Adminname, reason);
        SendClientMessageToAll(COLOR_RED, str);
        Ban(PID);
        return 1;
    }
    else return SendClientMessage(playerid,-1,"{FF0000}[ADMIN] Your level is not high enough {FFFFFF}[Level 3]!");
}
It works but the problem is, i also have /unban cmd ingame to unban a player. And using Ban(playerid); function saves the ban to samp.ban which i always need to unban a player by deleting the saved ban on samp.ban. Thats why i created my own file saving system for banned players. I just need to know if there is any mistakes with my timer.
Reply
#4

Oh..
Reply
#5

Wait, if you don't notice ban notifications then you will have put SetTimerEx("KickPlayer", false, 4000, "i", target); under SendClientMessage(target, RED, Msg2);

And replace Kick() with Ban() in the callback.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)