Kick/ban problem
#1

hi all,
i have a little problem with my kick/ban command
it doesn't show the reason.
NOTE: the code is used in an include

/kick:
Код:
COMMAND:kick(playerid, params[])
{
	new PlayerToKick, Reason[128], ReasonMsg[128], Name[24];

	// Send the command to all admins so they can see it
	SendAdminText(playerid, "/kick", params);

	// Check if the player has logged in
	if (APlayerData[playerid][LoggedIn] == true)
	{
		// Check if the player's admin-level is at least 1
		if (APlayerData[playerid][PlayerLevel] >= 1)
		{
			if (sscanf(params, "us[128]", PlayerToKick, Reason)) SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/kick <PlayerToKick> <Reason>\"");
			else
				if (IsPlayerConnected(PlayerToKick)) // If the player is a valid playerid (he's connected)
				{
					// Get the name of the player who warned the player
					GetPlayerName(playerid, Name, sizeof(Name));
					// Send the warned player a message who kicked him and why he's been kicked
					format(ReasonMsg, 128, "You have been kicked by %s %s", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name);
					SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
					format(ReasonMsg, 128, "Reason: %s", Reason);
					SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
					SetTimerEx("kick",1000,false,"i",playerid);
					// Kick the player
					Kick(PlayerToKick);
				}
				else
				    SendClientMessage(playerid, 0xFF0000FF, "That player isn't online");
		}
		else
		    return 0;
	}
	else
	    return 0;

	// Let the server know that this was a valid command
	return 1;
}
/ban:
Код:
COMMAND:ban(playerid, params[])
{
	// Setup local variables
	new PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[128], Name[24], AdminName[24];

	// Send the command to all admins so they can see it
	SendAdminText(playerid, "/ban", params);

	// Check if the player has logged in
	if (APlayerData[playerid][LoggedIn] == true)
	{
		// Check if the player's admin-level is at least 3
		if (APlayerData[playerid][PlayerLevel] >= 3)
		{
			if (sscanf(params, "uiis[128]", PlayerToBan, Days, Hours, Reason))
				SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/ban <PlayerToBan> <Days> <Hours> <Reason>\"");
			else
			{
				if (IsPlayerConnected(PlayerToBan))
				{
					// Get the names of the player and the admin who executed the ban
					GetPlayerName(playerid, AdminName, sizeof(AdminName));
					GetPlayerName(PlayerToBan, Name, sizeof(Name));

					// Increase the number of bans
					APlayerData[PlayerToBan][Bans]++;
					// Calculate the total bantime (when the player can login again)
					TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime();
					// Check if this is the player's 5th ban
					if (APlayerData[PlayerToBan][Bans] == 5)
						APlayerData[PlayerToBan][BanTime] = 2147483640; // Make the ban permanent (as high as it can go)
					else
						APlayerData[PlayerToBan][BanTime] = TotalBanTime; // Store this value for the player

					// Inform the player about his ban
					// Check if this is the player's 5th ban
					if (APlayerData[PlayerToBan][Bans] == 5)
					{
						format(Msg, 128, "You have been banned permanently by %s, this was your 5th ban", AdminName);
						SendClientMessage(PlayerToBan, 0x808080FF, Msg);
					}
					else
					{
						format(Msg, 128, "You have been banned by %s for %i days and %i hours", AdminName, Days, Hours);
						SendClientMessage(PlayerToBan, 0x808080FF, Msg);
						format(Msg, 128, "Reason: %s", Reason);
						SendClientMessage(PlayerToBan, 0x808080FF, Msg);
						format(Msg, 128, "You've been banned %i times now, 5th time is permament", APlayerData[PlayerToBan][Bans]);
						SendClientMessage(PlayerToBan, 0x808080FF, Msg);
					}

					// Kick the player (his data will be saved)
					Kick(PlayerToBan);

					// Inform everybody else which player was banned and for how long
					format(Msg, 128, "%s %s has banned %s for %i days and %i hours", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours);
					SendClientMessageToAll(0x808080FF, Msg);
				}
			}
		}
		else
		    return 0;
	}
	else
	    return 0;

	return 1;
}
Reply
#2

Are you using sscanf2 plugin?

Also something little I noticed, the reason is a 128 long cell, while the ReasonMsg/Msg is also a 128 long cell. You're already using 8 cells at ReasonMsg/Msg, that means the reason will only display 120 characters.
Reply
#3

Kick

pawn Код:
COMMAND:kick(playerid, params[])
{
    new PlayerToKick, Reason[128], ReasonMsg[128], Name[24];
   
    // Send the command to all admins so they can see it
    SendAdminText(playerid, "/kick", params);
   
    // Check if the player has logged in
    if (APlayerData[playerid][LoggedIn] == true)
    {
        // Check if the player's admin-level is at least 1
        if (APlayerData[playerid][PlayerLevel] >= 1)
        {
            if (sscanf(params, "us[128]", PlayerToKick, Reason)) SendClientMessage(playerid, 0xFF0000AA, "Usage: /kick <playerid> <reason>");
            else
                if (IsPlayerConnected(PlayerToKick)) // If the player is a valid playerid (he's connected)
            {
                // Get the name of the player who warned the player
                GetPlayerName(playerid, Name, sizeof(Name));
                // Send the warned player a message who kicked him and why he's been kicked
                format(ReasonMsg, sizeof(ReasonMsg), "You have been kicked by %s %s", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name);
                SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
                format(ReasonMsg, sizeof(ReasonMsg), "Reason: %s", Reason);
                SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
                SetTimerEx("kick",1000,false,"i",playerid);
                // Kick the player
                Kick(PlayerToKick);
            }
            else
                SendClientMessage(playerid, 0xFF0000FF, "That player isn't online");
        }
        else
            return 0;
    }
    else
        return 0;
   
    // Let the server know that this was a valid command
    return 1;
}

Ban
pawn Код:
COMMAND:ban(playerid, params[])
{
    // Setup local variables
    new PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[1024], Name[24], AdminName[24];
   
    // Send the command to all admins so they can see it
    SendAdminText(playerid, "/ban", params);
   
    // Check if the player has logged in
    if (APlayerData[playerid][LoggedIn] == true)
    {
        // Check if the player's admin-level is at least 3
        if (APlayerData[playerid][PlayerLevel] >= 3)
        {
            if (sscanf(params, "uiis[128]", PlayerToBan, Days, Hours, Reason))
            SendClientMessage(playerid, 0xFF0000AA, "Usage: /ban <PlayerToBan> <Days> <Hours> <Reason>");
            else
            {
                if (IsPlayerConnected(PlayerToBan))
                {
                    // Get the names of the player and the admin who executed the ban
                    GetPlayerName(playerid, AdminName, sizeof(AdminName));
                    GetPlayerName(PlayerToBan, Name, sizeof(Name));
                   
                    // Increase the number of bans
                    APlayerData[PlayerToBan][Bans]++;
                    // Calculate the total bantime (when the player can login again)
                    TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime();
                    // Check if this is the player's 5th ban
                    if (APlayerData[PlayerToBan][Bans] == 5)
                    APlayerData[PlayerToBan][BanTime] = 2147483640; // Make the ban permanent (as high as it can go)
                    else
                        APlayerData[PlayerToBan][BanTime] = TotalBanTime; // Store this value for the player
                   
                    // Inform the player about his ban
                    // Check if this is the player's 5th ban
                    if (APlayerData[PlayerToBan][Bans] == 5)
                    {
                        format(Msg, 128, "You have been banned permanently by %s, this was your 5th ban", AdminName);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                    }
                    else
                    {
                        format(Msg, sizeof(Msg), "You have been banned by %s for %i days and %i hours", AdminName, Days, Hours);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                        format(Msg, sizeof(Msg), "Reason: %s", Reason);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                        format(Msg, sizeof(Msg), "You've been banned %i times now, 5th time is permament", APlayerData[PlayerToBan][Bans]);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                    }
                   
                    // Kick the player (his data will be saved)
                    Kick(PlayerToBan);
                   
                    // Inform everybody else which player was banned and for how long
                    format(Msg, 128, "%s %s has banned %s for %i days and %i hours", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours);
                    SendClientMessageToAll(0x808080FF, Msg);
                }
            }
        }
        else
            return 0;
    }
    else
        return 0;
   
    return 1;
}
Reply
#4

Quote:
Originally Posted by NourdinTRP
Посмотреть сообщение
Kick

pawn Код:
COMMAND:kick(playerid, params[])
{
    new PlayerToKick, Reason[128], ReasonMsg[128], Name[24];
   
    // Send the command to all admins so they can see it
    SendAdminText(playerid, "/kick", params);
   
    // Check if the player has logged in
    if (APlayerData[playerid][LoggedIn] == true)
    {
        // Check if the player's admin-level is at least 1
        if (APlayerData[playerid][PlayerLevel] >= 1)
        {
            if (sscanf(params, "us[128]", PlayerToKick, Reason)) SendClientMessage(playerid, 0xFF0000AA, "Usage: /kick <playerid> <reason>");
            else
                if (IsPlayerConnected(PlayerToKick)) // If the player is a valid playerid (he's connected)
            {
                // Get the name of the player who warned the player
                GetPlayerName(playerid, Name, sizeof(Name));
                // Send the warned player a message who kicked him and why he's been kicked
                format(ReasonMsg, sizeof(ReasonMsg), "You have been kicked by %s %s", AdminLevelName[APlayerData[playerid][PlayerLevel]], Name);
                SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
                format(ReasonMsg, sizeof(ReasonMsg), "Reason: %s", Reason);
                SendClientMessage(PlayerToKick, 0xFF0000FF, ReasonMsg);
                SetTimerEx("kick",1000,false,"i",playerid);
                // Kick the player
                Kick(PlayerToKick);
            }
            else
                SendClientMessage(playerid, 0xFF0000FF, "That player isn't online");
        }
        else
            return 0;
    }
    else
        return 0;
   
    // Let the server know that this was a valid command
    return 1;
}

Ban
pawn Код:
COMMAND:ban(playerid, params[])
{
    // Setup local variables
    new PlayerToBan, Days, Hours, Reason[128], TotalBanTime, Msg[1024], Name[24], AdminName[24];
   
    // Send the command to all admins so they can see it
    SendAdminText(playerid, "/ban", params);
   
    // Check if the player has logged in
    if (APlayerData[playerid][LoggedIn] == true)
    {
        // Check if the player's admin-level is at least 3
        if (APlayerData[playerid][PlayerLevel] >= 3)
        {
            if (sscanf(params, "uiis[128]", PlayerToBan, Days, Hours, Reason))
            SendClientMessage(playerid, 0xFF0000AA, "Usage: /ban <PlayerToBan> <Days> <Hours> <Reason>");
            else
            {
                if (IsPlayerConnected(PlayerToBan))
                {
                    // Get the names of the player and the admin who executed the ban
                    GetPlayerName(playerid, AdminName, sizeof(AdminName));
                    GetPlayerName(PlayerToBan, Name, sizeof(Name));
                   
                    // Increase the number of bans
                    APlayerData[PlayerToBan][Bans]++;
                    // Calculate the total bantime (when the player can login again)
                    TotalBanTime = (Days * 86400) + (Hours * 3600) + gettime();
                    // Check if this is the player's 5th ban
                    if (APlayerData[PlayerToBan][Bans] == 5)
                    APlayerData[PlayerToBan][BanTime] = 2147483640; // Make the ban permanent (as high as it can go)
                    else
                        APlayerData[PlayerToBan][BanTime] = TotalBanTime; // Store this value for the player
                   
                    // Inform the player about his ban
                    // Check if this is the player's 5th ban
                    if (APlayerData[PlayerToBan][Bans] == 5)
                    {
                        format(Msg, 128, "You have been banned permanently by %s, this was your 5th ban", AdminName);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                    }
                    else
                    {
                        format(Msg, sizeof(Msg), "You have been banned by %s for %i days and %i hours", AdminName, Days, Hours);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                        format(Msg, sizeof(Msg), "Reason: %s", Reason);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                        format(Msg, sizeof(Msg), "You've been banned %i times now, 5th time is permament", APlayerData[PlayerToBan][Bans]);
                        SendClientMessage(PlayerToBan, 0x808080FF, Msg);
                    }
                   
                    // Kick the player (his data will be saved)
                    Kick(PlayerToBan);
                   
                    // Inform everybody else which player was banned and for how long
                    format(Msg, 128, "%s %s has banned %s for %i days and %i hours", AdminLevelName[APlayerData[playerid][PlayerLevel]], AdminName, Name, Days, Hours);
                    SendClientMessageToAll(0x808080FF, Msg);
                }
            }
        }
        else
            return 0;
    }
    else
        return 0;
   
    return 1;
}
ehm what did you change?


EDIT: i noticed i wrote filterscript instead of include
Reply
#5

pawn Код:
format(Msg, sizeof(Msg), "Reason: %s", Reason);
And the command itself.
Reply
#6

well there are many threads about this problem
they all say to use a timer to show the message
but when i add the timer like in the kick command it's still not showing the reason
Reply
#7

Why do you add a timer for a kick/ban script? Just remove it as I guess it isn't really needed to wait untill they get the message.
Reply
#8

Quote:
Originally Posted by NourdinTRP
Посмотреть сообщение
Why do you add a timer for a kick/ban script? Just remove it as I guess it isn't really needed to wait untill they get the message.
they removed the time from the message till the kick in the 0.3X version
is instantly says: Server closed the connection.
so i need a delay to let it show the message and then kick the player
it is for my trucking server so i will be usefull to see why they are kicked/banned
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)