Bug with CMDs that effect other players.
#1

Hi guys, well I will explain my problem in detail. I made a few admin commands that are supposed have effect on other players, but when I test them on other players it shows nothing like the command was not even typed.

My code.
pawn Код:
CMD:setadminlevel(playerid, params[])
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[Error]:You are not logged into RCON");
    new targetid;
    if(sscanf(params, "us[128]", targetid)) return SendClientMessage(playerid, -1, "[ADMCMD]:/setadminlevel[playerid]");
    if(IsPlayerConnected(targetid))
        {
         new str3[510];
         new name[MAX_PLAYER_NAME];
         GetPlayerName(playerid, name, sizeof(name));
         new target[MAX_PLAYER_NAME];
         GetPlayerName(targetid, target, sizeof(name));
         PlayerInfo[targetid][pAdmin] += 1;
         format(str3, sizeof(str3), "AmdCmd:Administrator %s has promoted your admin level",name);
         SendClientMessage(targetid, 0xFF8080FF, str3);
         }
    return 1;
The other commands use the same format as this command, any solutions?
Reply
#2

Start by changing the sscanf parameters to "u" instead of "us[128]" since you have no string to insert.


pawn Код:
CMD:setadminlevel(playerid, params[])
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[Error]:You are not logged into RCON");
    new targetid;
    if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, -1, "[ADMCMD]:/setadminlevel[playerid]");
    if(IsPlayerConnected(targetid))
        {
         new str3[510];
         new name[MAX_PLAYER_NAME];
         GetPlayerName(playerid, name, sizeof(name));
         new target[MAX_PLAYER_NAME];
         GetPlayerName(targetid, target, sizeof(name));
         PlayerInfo[targetid][pAdmin] += 1;
         format(str3, sizeof(str3), "AmdCmd:Administrator %s has promoted your admin level",name);
         SendClientMessage(targetid, 0xFF8080FF, str3);
         }
    return 1;
}
Reply
#3

It still does not work, any other solutions?
Reply
#4

This is a /setadmin Command, written one later ago for a friend, i want share it, do any change you like :

pawn Код:
ICMD:setadmin(playerid, params[])
{
    new
        str[128],
        targetid,
        level;

    if(pInfo[playerid][pAdminLevel] != 11) return 0;
    if(sscanf(params, "ud", targetid, level)) return SCM(playerid, FWTC_LIME, "Syntax: /setadmin [Player] [Admin Level]");
    if(!IsPlayerConnected(targetid)) return SCM(playerid, FWTC_RED, "Error: "FWTE_WHITE"Target player isn't connected.");
    if(level < 0 || level > 11) return SCM(playerid, FWTC_RED, "Error: "FWTE_WHITE"You must enter an admin level between 0 to 11.");

    pInfo[targetid][pAdminLevel] = level;

    format(str, sizeof(str), "* You have set the admin level of %s to %d (%s).", PlayerNameEx(targetid), level, GetAdminLevelName(level));
    SCM(playerid, FWTC_KHAKI, str);
    format(str, sizeof(str), "* %s %s has set your admin level to %d (%s).", GetPlayerAdminLevel(playerid), PlayerNameEx(playerid), level, GetAdminLevelName(level));
    SCM(targetid, FWTC_KHAKI, str);
    format(str, sizeof(str), "* %s %s has set the admin level of %s to %d (%s).", GetPlayerAdminLevel(playerid), PlayerNameEx(playerid), PlayerNameEx(targetid), level, GetAdminLevelName(level));
    MessageExceptTwoPlayers(playerid, targetid, FWTC_KHAKI, str);
    return 1;
}
Reply
#5

Quote:
Originally Posted by gtasarules14
Посмотреть сообщение
It still does not work, any other solutions?
pawn Код:
CMD:setadminlevel(playerid, params[])
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[Error]:You are not logged into RCON");
    new targetid;
    if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, -1, "[ADMCMD]:/setadminlevel[playerid]");
    if(IsPlayerConnected(targetid))
        {
         new str3[510];
         new name[MAX_PLAYER_NAME];
         GetPlayerName(playerid, name, sizeof(name));
         new target[MAX_PLAYER_NAME];
         GetPlayerName(targetid, target, sizeof(target));
         PlayerInfo[targetid][pAdmin] += 1;
         format(str3, sizeof(str3), "AmdCmd:Administrator %s has promoted your admin level",name);
         SendClientMessage(targetid, 0xFF8080FF, str3);
         }
    return 1;
}
Reply
#6

Quote:
Originally Posted by Mystique
Посмотреть сообщение
pawn Код:
CMD:setadminlevel(playerid, params[])
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "[Error]:You are not logged into RCON");
    new targetid;
    if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, -1, "[ADMCMD]:/setadminlevel[playerid]");
    if(IsPlayerConnected(targetid))
        {
         new str3[510];
         new name[MAX_PLAYER_NAME];
         GetPlayerName(playerid, name, sizeof(name));
         new target[MAX_PLAYER_NAME];
         GetPlayerName(targetid, target, sizeof(target));
         PlayerInfo[targetid][pAdmin] += 1;
         format(str3, sizeof(str3), "AmdCmd:Administrator %s has promoted your admin level",name);
         SendClientMessage(targetid, 0xFF8080FF, str3);
         }
    return 1;
}
Bad indentation, I Hate this style of coding. Sorry for OffTopic, but most common issue is mistaking 'targetid' with 'playerid' in Commands. Also, when a player enters a command, he is 100% connected, no need to check.

This is stupidy :

pawn Код:
CMD:somecmd(playerid, params[])
{
    if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "You aren't connected!! :D");
    // More code
    return 1; // aviod "SERVER: Unknown Command." message.
}
Reply
#7

Quote:
Originally Posted by iFarbod
Посмотреть сообщение
Also, when a player enters a command, he is 100% connected, no need to check.
And where exactly did he do that?

He was checking if the targetid is connected.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)