Need help with /saveskin.
#1

I've created this /saveskin command:
pawn Код:
CMD:saveskin (playerid, params[])
{
    new id, str[128], query[126];
    if ( sscanf( params, "d", id )) return SendClientMessage(playerid,0x6FFF00FF,"{F07F1D}USAGE: {BBFF00}/saveskin <ID>");
    if (id < 0 || id > 299) return SendClientMessage( playerid, -1, "{FA002E}ERROR: {C7BDBF}Your skin ID parameter should be between 0 - 299!");
    else
    SetPlayerSkin(playerid, id);
    PlayerInfo[playerid][Skin] = id;
    format(str, sizeof(str),"{F6C73B}[SKIN] Your have changed your skin preference to %d!", id);
    SendClientMessage( playerid, -1, str);
    format( query, sizeof(query), "UPDATE users SET skin = %d WHERE username = '%s'", PlayerInfo[ playerid ][ Skin ], PlayerInfo[ playerid ][ UserName ] );
    db_query( Database, query );
    return 1;
}
How can I set the same skin (the skin ID in this command) when the player spawns?
Reply
#2

You simply need to set your player's skin to his stored skin id, which is "PlayerInfo[playerid][Skin]", under OnPlayerSpawn(which is called when a player spawns).
pawn Код:
public OnPlayerSpawn(playerid)
{
    SetPlayerSkin(playerid, PlayerInfo[playerid][Skin]);
    return 1;
}
Reply
#3

My skin id in 'PlayerInfo[playerid][Skin]' is lost when I restart the server..
I want to get the skin id from the database 'server.db'..
Like this (It is not working..):
pawn Код:
public OnPlayerSpawn(playerid)
{
    new query[126], skin;
    new DBResult: result;
    format( query, sizeof(query), "SELECT skin FROM 'users' WHERE username = '%s'", PlayerInfo[playerid][UserName] );
    result = db_query( Database, query );
    if (db_num_rows(result) == 1)
    {
        db_get_field( result, "skin", skin, 128 );
        SetPlayerSkin( playerid, skin );
    }
    db_free_result();
    return 1;
}
Please help.
Reply
#4

bump..
Reply
#5

When you setskin skin it auto saveskin
Код:
CMD:setskin(playerid,params[])
{
	if(Player[playerid][pAdmin] >= 5)
	{
        new id,skinid,string[128];
	    if(sscanf(params, "ui", id, skinid)) return
		SendClientMessage(playerid,-1, "Usage: /Setskin [PlayerID][skin ID]") ;
        if(IsPlayerConnected(id))
		{
            if(skinid < 0 || skinid > 299) return SendClientMessage(playerid,COLOR_KRED, "Invaild Skin ID!");
            format(string,sizeof(string),"You have set %s's skin to %d", GetName(id), skinid);
			SendClientMessage(playerid,COLOR_KRED,string);
			format(string, sizeof(string), "Admin %s has given you a new skin (SkinID: %d)",GetName(playerid),skinid);
			SendClientMessage(id,COLOR_KRED,string);
			SetPlayerSkin(id, skinid);
			Player[id][Skin] = skinid;
			Player[id][pclothes]=1;
   			return SetPlayerSkin(id, skinid);
	    }
		else return  SendClientMessage(playerid, COLOR_KRED, "Player is not connected!");
	}
	else return SendClientMessage(playerid, COLOR_KRED, "You need to be level 5 admin to use this cmd!");
}

CMD:useskin(playerid, params[])
{
        if(Player[playerid][pclothes]== 1)
        {
		SetPlayerSkin(playerid, Player[playerid][Skin]);
		}
		else
		{
        SetPlayerSkin(playerid, 184);
		}
return 1;
}

The Problem is you are not saving correctly
Reply
#6

I don't want an admin command. /saveskin will save the player ID and the player should spawn with that ID on the every connect.. and I'm using SQLite..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)