/setskin help
#1

heyy im trying to makke a setskin command that you dont need to be logged into rcon too do, how would i do that.
this is my enum
Код:
enum pInfo
{
    pAdmin,
    pSkin

}
new PlayerInfo[MAX_PLAYERS][pInfo];
Reply
#2

Код:
CMD:setskin(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] == 0) return 0;
	new skin;
	if(sscanf(params, "i", skin)) return SendClientMessage(playerid, -1, "/setskin [skin id 0 - 299]");
	if(skin < 0 ) return 0;
	if(skin > 299) return 0;
	SetPlayerSkin(playerid, skin);
	PlayerInfo[playerid][pSkin] = skin;
	return 1;
}
Reply
#3

Quote:
Originally Posted by eesh
Посмотреть сообщение
Код:
CMD:setskin(playerid, params[])
{
	if(PlayerInfo[playerid][pAdmin] == 0) return 0;
	new skin;
	if(sscanf(params, "i", skin)) return SendClientMessage(playerid, -1, "/setskin [skin id 0 - 299]");
	if(skin < 0 ) return 0;
	if(skin > 299) return 0;
	SetPlayerSkin(playerid, skin);
	PlayerInfo[playerid][pSkin] = skin;
	return 1;
}
^^This will set his own skin,

Here this code will set the skin for the player you want.
pawn Код:
CMD:setskin(playerid, params[])
{
    new setid, skinid;
    if(PlayerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid, RED, "Only admin level 3+ can use this command.");
    if(sscanf(params, "ud", setid, skinid)) return SendClientMessage(playerid, RED, "[USAGE]: /setskin [name/id] [skinid]");
    if(!IsPlayerConnected(setid)) return SendClientMessage(playerid, RED, "Player not found.");
    if(skinid < 0 || skinid > 299) return SendClientMessage(playerid, RED, "Invalid skin id.");
    {
        SetPlayerSkin(setid, skinid);
        format(fstr, sizeof(fstr), "Admin %s [%d] has set your skin to id %d.", GetName(playerid), playerid, skinid);
        SendClientMessage(setid, LIGHTGREEN, fstr);
        format(fstr, sizeof(fstr), "You have set %s [%d] skin to id %d.", GetName(setid), setid, skinid);
        SendClientMessage(playerid, YELLOW, fstr);
    }
    return true;
}
Reply
#4

thanks +repp for both!!
Reply
#5

C:\Users\Michael\Desktop\Roleplay\gamemodes\U1.pwn (1110) : error 017: undefined symbol "fstr"
C:\Users\Michael\Desktop\Roleplay\gamemodes\U1.pwn (1110) : error 017: undefined symbol "fstr"
C:\Users\Michael\Desktop\Roleplay\gamemodes\U1.pwn (1110) : error 029: invalid expression, assumed zero
C:\Users\Michael\Desktop\Roleplay\gamemodes\U1.pwn (1110) : fatal error 107: too many error messages on one line
Reply
#6

Код:
CMD:setskin(playerid, params[])
{
    new setid, skinid;
    if(PlayerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid, RED, "Only admin level 3+ can use this command.");
    if(sscanf(params, "ud", setid, skinid)) return SendClientMessage(playerid, RED, "[USAGE]: /setskin [name/id] [skinid]");
    if(!IsPlayerConnected(setid)) return SendClientMessage(playerid, RED, "Player not found.");
    if(skinid < 0 || skinid > 299) return SendClientMessage(playerid, RED, "Invalid skin id.");
    {
        new fstr[128];
        SetPlayerSkin(setid, skinid);
        format(fstr, sizeof(fstr), "Admin %s [%d] has set your skin to id %d.", GetName(playerid), playerid, skinid);
        SendClientMessage(setid, LIGHTGREEN, fstr);
        format(fstr, sizeof(fstr), "You have set %s [%d] skin to id %d.", GetName(setid), setid, skinid);
        SendClientMessage(playerid, YELLOW, fstr);
    }
    return true;
}
Reply
#7

Underneath SetPlayerSkin, simply declare the string "fstr". This is a very common and basic error. Before you try going more advanced, you should really learn these basics.

Declaration is done by using the "new"-keyword:
pawn Код:
new
    myInteger,
    myArray[ numCells ],
    bool:myBool,
    Float:myFloat;
Here are the most used standard variables.

A string is simply an array, so to easily fix this problem, you need to declare "fstr" as an array, unless you want a tag mismatch warning + a non-functional code:
pawn Код:
new
    fstr[ 128 ]; //128 cells = 127 characters + '\0' - which is the max output for in-game chat in SA-MP
And there you go. All four errors should now be gone, and the code should be fully functional.
Reply
#8

okay that helped now all i got is undefined symbol "GetName
Reply
#9

Quote:
Originally Posted by Michael_Cuellar
Посмотреть сообщение
okay that helped now all i got is undefined symbol "GetName
Sigh, yes.

The one who "made" the code for you has a custom function to get a player's name, and he/she simply copy-pasted his own code.

To fix either use GetPlayerName (check the wiki) or simply add this function on the bottom of your script:
pawn Код:
GetName(playerid)
{
    new
         szN[ 24 ];
    GetPlayerName( playerid, szN, sizeof( szN ));
    return szN;
}
Reply
#10

Quote:
Originally Posted by Michael_Cuellar
Посмотреть сообщение
okay that helped now all i got is undefined symbol "GetName
use GetPlayerName instead of GetName,
here is the fixed code,

pawn Код:
CMD:setskin(playerid, params[])
{
    new setid, skinid;
    if(PlayerInfo[playerid][pAdmin] < 3) return SendClientMessage(playerid, RED, "Only admin level 3+ can use this command.");
    if(sscanf(params, "ud", setid, skinid)) return SendClientMessage(playerid, RED, "[USAGE]: /setskin [name/id] [skinid]");
    if(!IsPlayerConnected(setid)) return SendClientMessage(playerid, RED, "Player not found.");
    if(skinid < 0 || skinid > 299) return SendClientMessage(playerid, RED, "Invalid skin id.");
    {
        new fstr[128];
        SetPlayerSkin(setid, skinid);
        format(fstr, sizeof(fstr), "Admin %s [%d] has set your skin to id %d.", GetPlayerName(playerid), playerid, skinid);
        SendClientMessage(setid, LIGHTGREEN, fstr);
        format(fstr, sizeof(fstr), "You have set %s [%d] skin to id %d.", GetPlayerName(setid), setid, skinid);
        SendClientMessage(playerid, YELLOW, fstr);
    }
    return true;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)