/kick id/name reason
#1

hi i have poblem here. when i kick a player with the Nickname, its not really kicking the player i wanted to. it works fine with the id, someone please help me out here. thanks.

pawn Код:
dcmd_kick(playerid,params[])
{
    if(AccInfo[playerid][LoggedIn] == 1)

    {
        if(AccInfo[playerid][Level] >= 3)
        {
           
            new Index;
            new tmp[256];  tmp  = strtok(params,Index);
            new tmp2[256]; tmp2 = strtok(params,Index);
            new tmp3[256]; tmp3 = strtok(params,Index);

            if(!strlen(params)) return
            SendClientMessage(playerid, red, "Usage: /kick [PlayerID] [Reason]");
            new player1, playername[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[128];
            player1 = strval(tmp);

            if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID)
             {
                GetPlayerName(player1, playername, sizeof(playername));
                GetPlayerName(playerid, adminname, sizeof(adminname));
                SendCommandToAdmins(playerid,"Kick");
                if(!strlen(tmp2))
                {
                format(string,sizeof(string),"[ADMIN KICK] %s (%d) No Reason Given",playername,player1);
                SendClientMessageToAll(COLOR_PINK,string);
                SaveIn("KickLog",string);
                print(string);
                return Kick(player1);
                }
                else
                {
                format(string,sizeof(string),"[ADMIN KICK] %s (%d) %s",playername,player1,params[2]);
                SendClientMessageToAll(COLOR_PINK,string);
                SaveIn("KickLog",string); print(string);
                return Kick(player1);
                }
            }
            else return ErrorMessages(playerid, 3);
        }
        else return ErrorMessages(playerid, 1);
    }
    else return SendClientMessage(playerid,red,"ERROR: You must be logged in to use this commands");
}
Reply
#2

You'd better use the include (and also plugin) "sscanf2", and if you're smart, you'll use ZCMD too. I don't have enough time to look at this now, but ZCMD+SSCANF2 would look like this: (with CMD, you don't need to add the command in OnPlayerCommandText like DCMD)
pawn Код:
CMD:kick(playerid, params[])
{
    new kickId, playername[MAX_PLAYER_NAME], reason[50] = false, string[128];
    if (AccInfo[playerid][Level] < 3) return ErrorMessages(playerid, 1);
    if (AccInfo[playeird][LoggedIn] != 1) return SendClientMessage(playerid, red, "ERROR: You must be logged in to use this command!");
    if (sscanf(params, "dS[50]", kickId, reason)) return SendClientMessage(playerid, red, "Usage: /kick [PlayerID] (Reason)");
    if (!IsPlayerConnected(kickId) || kickId == INVALID_PLAYER_ID) return ErrorMessages(playerid, 3);
    GetPlayerName(kickId, playername, MAX_PLAYER_NAME);
    if (reason)
    {
        format (string, 128, "[ADMIN KICK] %s (%d) No Reason Given", playername, kickId);
        SendClientMessageToAll(COLOR_PINK, string);
        SaveIn("KickLog", string);
        print(string);
    }
    else
    {
        format (string, 128, "[ADMIN KICK] %s (%d) %s", playername, kickId, reason);
        SendClientMessageToAll(COLOR_PINK, string);
        SaveIn("KickLog", string);
        print(string);
    }
    Kick(kickId);
    return true;
}
As you may see, this is alot easier to use. It's also way faster then DCMD and STRTOK
Reply
#3

I was too Late (-:
Reply
#4

Код:
CMD:kick(playerid, params[])
{
    new kickId, playername[MAX_PLAYER_NAME], reason[50] = false, string[128];
    if (AccInfo[playerid][Level] < 3) return ErrorMessages(playerid, 1);
    if (AccInfo[playeird][LoggedIn] != 1) return SendClientMessage(playerid, red, "ERROR: You must be logged in to use this command!");
    if (sscanf(params, "dS[50]", kickId, reason)) return SendClientMessage(playerid, red, "Usage: /kick [PlayerID] (Reason)");
    if (!IsPlayerConnected(kickId) || kickId == INVALID_PLAYER_ID) return ErrorMessages(playerid, 3);
    GetPlayerName(kickId, playername, MAX_PLAYER_NAME);
    if (reason)
    {
        format (string, 128, "[ADMIN KICK] %s (%d) No Reason Given", playername, kickId);
        SendClientMessageToAll(COLOR_PINK, string);
        SaveIn("KickLog", string);
        print(string);
    }
    else
    {
        format (string, 128, "[ADMIN KICK] %s (%d) %s", playername, kickId, reason);
        SendClientMessageToAll(COLOR_PINK, string);
        SaveIn("KickLog", string);
        print(string);
    }
    Kick(kickId);
    return true;
}
warning 211: possibly unintended assignment
error 033: array must be indexed (variable "reason")

getting 1 error and a warning
Reply
#5

Код:
CMD:kick(playerid, params[])
{
    new kickId, playername[MAX_PLAYER_NAME], reason[50] = false, string[128];
    if (AccInfo[playerid][Level] < 3) return ErrorMessages(playerid, 1);
    if (AccInfo[playeird][LoggedIn] != 1) return SendClientMessage(playerid, red, "ERROR: You must be logged in to use this command!");
    if (sscanf(params, "dS(No reason given)[50]", kickId, reason)) return SendClientMessage(playerid, red, "Usage: /kick [PlayerID] (Reason)");
    if (!IsPlayerConnected(kickId) || kickId == INVALID_PLAYER_ID) return ErrorMessages(playerid, 3);
    GetPlayerName(kickId, playername, MAX_PLAYER_NAME);
    format (string, 128, "[ADMIN KICK] %s (%d) %s", playername, kickId, reason);
    SendClientMessageToAll(COLOR_PINK, string);
    SaveIn("KickLog", string);
    print(string);
    return true;
}
Reply
#6

Put This In On PlayerCommandText
Код:
dcmd(adkick,6,cmdtext);
dcmd_adkick(playerid,params[])
{
	new string[128];
	new ID;
	new cmdreason[100];
	if(sscanf(params,"us[100]",ID,cmdreason))
	{
	    SendClientMessage(playerid,COLOR_ERROR,"AeroBot: /adkick (Player Name/ID) (Reason)");
	    return 1;
	}
	if(!IsPlayerConnected(ID))
	{
	    format(string,sizeof(string),"The player ID (%d) is not connected to the server. You cannot kick them.",ID);
	    SendClientMessage(playerid,COLOR_ERROR,string);
	    return 1;
	}
	Kicking[ID] =1;
	format(string,sizeof(string),"[ADMIN] Administrator has kicked %s(%d) from the server. Reason: %s.",PlayerName(ID),ID,cmdreason);
	SendClientMessageToAll(COLOR_ADMIN,string);
	
	format(string,sizeof(string),"9[ADMIN] Administrator has kicked %s(%d) from the server. Reason: %s.",PlayerName(ID),ID,cmdreason);
    IRC_GroupSay(gGroupID,IRC_CHANNEL,string);
	SetTimer("KickPlayer",700,0);
	return 1;
}
Reply
#7

Quote:
Originally Posted by ThamburaaN
Посмотреть сообщение
{code}

warning 211: possibly unintended assignment
error 033: array must be indexed (variable "reason")

getting 1 error and a warning
Wait, I did something wrong I see xP.
Код:
CMD:kick(playerid, params[])
{
    new kickId, playername[MAX_PLAYER_NAME], reason[50] = false, string[128];
    if (AccInfo[playerid][Level] < 3) return ErrorMessages(playerid, 1);
    if (AccInfo[playeird][LoggedIn] != 1) return SendClientMessage(playerid, red, "ERROR: You must be logged in to use this command!");
    if (sscanf(params, "dS[50]", kickId, reason)) return SendClientMessage(playerid, red, "Usage: /kick [PlayerID] (Reason)");
    if (!IsPlayerConnected(kickId) || kickId == INVALID_PLAYER_ID) return ErrorMessages(playerid, 3);
    GetPlayerName(kickId, playername, MAX_PLAYER_NAME);
    if (isnull(reason))
    {
        format (string, 128, "[ADMIN KICK] %s (%d) No Reason Given", playername, kickId);
        SendClientMessageToAll(COLOR_PINK, string);
        SaveIn("KickLog", string);
        print(string);
    }
    else
    {
        format (string, 128, "[ADMIN KICK] %s (%d) %s", playername, kickId, reason);
        SendClientMessageToAll(COLOR_PINK, string);
        SaveIn("KickLog", string);
        print(string);
    }
    Kick(kickId);
    return true;
}
So just change if (reason) for if (isnull(reason)). I think it's in ZCMD but I'm not sure about that anymore. I'll go take a look.
Reply
#8

Yeah, it's in ZCMD
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)