Help me, Please
#1

Their is a Problem with this command, It Crashes the server Instantly

pawn Код:
if(strcmp(cmd, "/kick", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [PlayerID/PartOfName] [Reason]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            if(IsPlayerNPC(giveplayerid)) return 1;
            if(PlayerInfo[playerid][pHelper] >= 2 || PlayerInfo[playerid][pAdmin] >= 1)
            {
                if(IsPlayerConnected(giveplayerid))
                {
                    if(giveplayerid != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        new length = strlen(cmdtext);
                        while ((idx < length) && (cmdtext[idx] <= ' '))
                        {
                            idx++;
                        }
                        new offset = idx;
                        new result[96];
                        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                        {
                            result[idx - offset] = cmdtext[idx];
                            idx++;
                        }
                        result[idx - offset] = EOS;
                        if(!strlen(result))
                        {
                            SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [PlayerID/PartOfName] [Reason]");
                            return 1;
                        }
                        new logstring[256];
                        new year, month, day;
                        getdate(year, month, day);
                        if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin])
                        {
                            format(logstring, sizeof(logstring), "Server: %s was Kicked by Mr_Dick, reason: attempting to kick admin %s (%d-%d-%d).", sendername, giveplayer,month,day,year);
                            KickLog(logstring);
                            format(string, sizeof(string), "Server: %s was Kicked by Mr_Dick, reason: attempting to kick a higher admin.", sendername);
                            SendClientMessageToAll(COLOR_LIGHTRED, string);
                            Kick(playerid);
                            return 1;
                        }
                        format(logstring, sizeof(logstring), "Server: %s was kicked by %s, reason: %s (%d-%d-%d).", giveplayer, sendername, (result),month,day,year);
                        KickLog(logstring);
                        format(string, sizeof(string), "Server: %s was kicked by %s, reason: %s", giveplayer, sendername, (result));
                        SendClientMessageToAll(COLOR_LIGHTRED, string);
                        Kick(giveplayerid);
                        return 1;
                    }
                }
                else
                {
                    format(string, sizeof(string), "   %d is not an active player !", giveplayerid);
                    SendClientMessage(playerid, COLOR_GRAD1, string);
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD2, "You are not authorized to use that command!");
            }
        }
        return 1;
    }
Reply
#2

Add the plugin sscanf and try this:

Код:
COMMAND:kick(playerid, params[])
{
    if(PlayerInfo[playerid][pAdminLevel] < 1) return 0; // or just IsPlayerAdmin
    new user, string[64];
    if(!sscanf(params, "u", user))
    {
        format(string, sizeof(string), "%s has been kicked by an admin.", user);
        printf(string);
        SendClientMessageToAll(ADMIN, string);
        SendClientMessage(user, RED, "You have been kicked by an admin.");
        Kick(user);
    }
    else return SendClientMessage(playerid, RED, "USAGE: /kick id");
    return 1;
}
Reply
#3

I also Need it to show a reason, Such as "%s has been kicked by %s, Reason: %s"
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)