id 0 at this cmds
#1

Ok i got a small problems, at this 2 cmds:

pawn Код:
CMD:spec(playerid, params[])
{
    if(pInfo[playerid][Logged] == 0) return SCM(playerid,0x0080C0FF,"Please login before using this command.");
    if(pInfo[playerid][Admin] >= 1)
    {
        new targetid;
        new string[150];
        new sstring[250];
        new pname[24];
        GetPlayerName(targetid,pname,24);
        new Float:gihp, Float:giar;
        GetPlayerHealth(targetid, gihp);
        GetPlayerArmour(targetid, giar);
        if(sscanf(params,"u", targetid)) return SendClientMessage(playerid, -1, "{F70505}Usage: {FFFFFF}/spec [playerid]");
        {
            if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "SERVER: Player not connected");
            TogglePlayerSpectating(playerid, 1);
            if(IsPlayerInAnyVehicle(targetid))
            {
                new vehicleid = GetPlayerVehicleID(targetid);
                PlayerSpectateVehicle(playerid, vehicleid);
            }
            else
            {
                PlayerSpectatePlayer(playerid, targetid);
                SetPlayerInterior(playerid,GetPlayerInterior(targetid));
            }
            format(string, sizeof(string), "** You are now spectating %s (%d) - Type /specoff when you're done.", pname, targetid, GetPlayerPing(targetid));
            format(sstring, sizeof(sstring), "** Ping: %d - Money: %i - Health: %0.1f - Armour: %0.1f", GetPlayerPing(targetid),GetPlayerMoney(targetid),gihp,giar);
            SendClientMessage(playerid, 0x0080C0FF, string);
            SendClientMessage(playerid, 0x0080C0FF, sstring);
        }
    }
    else SendClientMessage(playerid, red, "You do not have access to this command!");
    return 1;
}

CMD:score(playerid,params[])
{
    if(pInfo[playerid][Logged] == 0) return SCM(playerid,0x0080C0FF,"Please login before using this command.");
    if(pInfo[playerid][Admin] >= 1)
    {
    new Target;
    new msg1[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(Target,name,sizeof(name));
    if(sscanf(params, "u", Target)) return SCM(playerid, red, "{F70505}Usage: {FFFFFF}/score <playerid>");
    if(!IsPlayerConnected(Target)) return SCM(playerid,red,"Invalid player id.");
    format(msg1,128,"%s (%d)'s score: %d",name,Target,GetPlayerScore(Target));
    SCM(playerid,LIGHTBLUE,msg1);
    pInfo[Target][AdminActions]++;
    }
    return 1;
}
It gives me the name id 0 ONLY, so if i do /score or /money 2-3-4 etc, i'll get always name of id 0, any help?
Reply
#2

Because GetPlayerName it's initialized before sscanf.
First you need to initialize sscanf to assign a value(playerid in your case) to variable Target.
After that use GetPlayerName.

That's the reason Target always return id 0.
Reply
#3

Код:
CMD:spec(playerid, params[])
{
    if(pInfo[playerid][Logged] == 0) return SCM(playerid,0x0080C0FF,"Please login before using this command.");
    if(pInfo[playerid][Admin] >= 1)
    {
        new targetid;
        new string[150];
        new sstring[250];
        new pname[24];
        if(sscanf(params,"u", targetid)) return SendClientMessage(playerid, -1, "{F70505}Usage: {FFFFFF}/spec [playerid]");
        GetPlayerName(targetid,pname,24);
        new Float:gihp, Float:giar;
        GetPlayerHealth(targetid, gihp);
        GetPlayerArmour(targetid, giar);
        if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "SERVER: Player not connected");
        TogglePlayerSpectating(playerid, 1);
        if(IsPlayerInAnyVehicle(targetid))
        {
            new vehicleid = GetPlayerVehicleID(targetid);
            PlayerSpectateVehicle(playerid, vehicleid);
        }
        else
        {
            PlayerSpectatePlayer(playerid, targetid);
            SetPlayerInterior(playerid,GetPlayerInterior(targetid));
        }
        format(string, sizeof(string), "** You are now spectating %s (%d) - Type /specoff when you're done.", pname, targetid, GetPlayerPing(targetid));
        format(sstring, sizeof(sstring), "** Ping: %d - Money: %i - Health: %0.1f - Armour: %0.1f", GetPlayerPing(targetid),GetPlayerMoney(targetid),gihp,giar);
        SendClientMessage(playerid, 0x0080C0FF, string);
        SendClientMessage(playerid, 0x0080C0FF, sstring);
    }
    else SendClientMessage(playerid, red, "You do not have access to this command!");
    return 1;
}

CMD:score(playerid,params[])
{
    if(pInfo[playerid][Logged] == 0) return SCM(playerid,0x0080C0FF,"Please login before using this command.");
    if(pInfo[playerid][Admin] >= 1)
    {
        new Target;
        new msg1[128];
        new name[MAX_PLAYER_NAME];
        if(sscanf(params, "u", Target)) return SCM(playerid, red, "{F70505}Usage: {FFFFFF}/score <playerid>");
        GetPlayerName(Target,name,sizeof(name));
        if(!IsPlayerConnected(Target)) return SCM(playerid,red,"Invalid player id.");
        format(msg1,128,"%s (%d)'s score: %d",name,Target,GetPlayerScore(Target));
        SCM(playerid,LIGHTBLUE,msg1);
        pInfo[Target][AdminActions]++;
    }
    return 1;
}
Try it
Reply
#4

Same.
Reply
#5

there shouldn't be a problem with teh second code o.O, i don't see anything wrong with those commands (the one Joao Pedro posted)
Reply
#6

Try this,

pawn Код:
CMD:spec(playerid, params[])
{
    if(pInfo[playerid][Logged] == 0) return SCM(playerid,0x0080C0FF,"Please login before using this command.");
    if(pInfo[playerid][Admin] >= 1)
    {
        new targetid;
        new string[150];
        new sstring[250];
        new Float:gihp, Float:giar;
        GetPlayerHealth(targetid, gihp);
        GetPlayerArmour(targetid, giar);
        if(sscanf(params,"u", targetid)) return SendClientMessage(playerid, -1, "{F70505}Usage: {FFFFFF}/spec [playerid]");
        {
            if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, red, "SERVER: Player not connected");
            TogglePlayerSpectating(playerid, 1);
            if(IsPlayerInAnyVehicle(targetid))
            {
                new vehicleid = GetPlayerVehicleID(targetid);
                PlayerSpectateVehicle(playerid, vehicleid);
            }
            else
            {
                PlayerSpectatePlayer(playerid, targetid);
                SetPlayerInterior(playerid,GetPlayerInterior(targetid));
            }
            format(string, sizeof(string), "** You are now spectating %s (%d) - Type /specoff when you're done.", PlayerName(targetid), targetid, GetPlayerPing(targetid));
            format(sstring, sizeof(sstring), "** Ping: %d - Money: %i - Health: %0.1f - Armour: %0.1f", GetPlayerPing(targetid),GetPlayerMoney(targetid),gihp,giar);
            SendClientMessage(playerid, 0x0080C0FF, string);
            SendClientMessage(playerid, 0x0080C0FF, sstring);
        }
    }
    else SendClientMessage(playerid, red, "You do not have access to this command!");
    return 1;
}

CMD:score(playerid,params[])
{
    if(pInfo[playerid][Logged] == 0) return SCM(playerid,0x0080C0FF,"Please login before using this command.");
    if(pInfo[playerid][Admin] >= 1)
    {
    new Target;
    new msg1[128];
    if(sscanf(params, "u", Target)) return SCM(playerid, red, "{F70505}Usage: {FFFFFF}/score <playerid>");
    if(!IsPlayerConnected(Target)) return SCM(playerid,red,"Invalid player id.");
    format(msg1,128,"%s (%d)'s score: %d",PlayerName(Target),Target,GetPlayerScore(Target));
    SCM(playerid,LIGHTBLUE,msg1);
    pInfo[Target][AdminActions]++;
    }
    return 1;
}
stock PlayerName(pid)
{
    GetPlayerName(pid, Pname, 24);
    return Pname;
}
Reply
#7

Ok i fixed, thanks.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)