Skin changes back to CJ on reconnect
#1

Um, weird as hell, but I have set the skin upon registration to ID 60 in both the database and the variable PlayerInfo[playerid][pSkin], when I reconnect it changes the skin back to ID 0.

Here is the stock that first creates the skin row:

pawn Код:
stock MySQL_Register(playerid, passwordstring[])
{
    PlayerInfo[playerid][pCash] = 200;
    PlayerInfo[playerid][pLevel] = 1;
    PlayerInfo[playerid][pBank] = 500;
    PlayerInfo[playerid][pAdminLevel] = 0;
    PlayerInfo[playerid][pAge] = 0;
    PlayerInfo[playerid][pGender] = 0;
    PlayerInfo[playerid][pSkin] = 0;
    new query[350], pname[24], IP[15];
    GetPlayerName(playerid, pname, 24);
    GetPlayerIp(playerid, IP, 15);
    format(query, sizeof(query), "INSERT INTO playerdata (Username, Password, Cash, Level, Bank, PosX, PosY, PosZ, PosA, IP, AdminLevel, Age, Gender, Skin) VALUES('%s', SHA1('%s'), %d, %d, %d, 1295, 183, 20, 97, '%s', %d, %d, %d, %d)", pname, passwordstring, PlayerInfo[playerid][pCash], PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pBank], IP, PlayerInfo[playerid][pAdminLevel], PlayerInfo[playerid][pAge], PlayerInfo[playerid][pGender], PlayerInfo[playerid][pSkin]);
    mysql_query(query);
    Logged[playerid] = 1;
    return 1;
}
Then this sets the skin depending on the characters age and gender:

pawn Код:
if(dialogid == DIALOG_GENDER)
    {
        new query[200], pname[24], string[256];
        GetPlayerName(playerid, pname, 24);
        if(!response)
        {
            if(PlayerInfo[playerid][pAge] >= 60 && PlayerInfo[playerid][pAge] <= 80)
            {
                PlayerInfo[playerid][pSkin] = 129;
            }
            else if(PlayerInfo[playerid][pAge] < 60 && PlayerInfo[playerid][pAge] >= 50)
            {
                PlayerInfo[playerid][pSkin] = 199;
            }
            else if(PlayerInfo[playerid][pAge] < 50 && PlayerInfo[playerid][pAge] >= 40)
            {
                PlayerInfo[playerid][pSkin] = 201;
            }
            else if(PlayerInfo[playerid][pAge] < 40 && PlayerInfo[playerid][pAge] >= 30)
            {
                PlayerInfo[playerid][pSkin] = 157;
            }
            else if(PlayerInfo[playerid][pAge] < 30 && PlayerInfo[playerid][pAge] >= 20)
            {
                PlayerInfo[playerid][pSkin] = 91;
            }
            else if(PlayerInfo[playerid][pAge] < 20 && PlayerInfo[playerid][pAge] >= 16)
            {
                PlayerInfo[playerid][pSkin] = 169;
            }
            PlayerInfo[playerid][pGender] = 2;
            format(query, sizeof(query), "UPDATE playerdata SET Gender=2, Skin=%d WHERE Username='%s'", PlayerInfo[playerid][pSkin], pname);
            mysql_query(query);
            format(string, sizeof(string),""White"Character "Red"%s"White" has been registered successfully.\n\nYour age has been set to %d and gender to female.\n\n"White"Please confirm your password below to log in:", Name(playerid), PlayerInfo[playerid][pAge]);
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""Blue"Immigration Identification", string, "Login", "Quit");
        }
        if(response)
        {
            if(PlayerInfo[playerid][pAge] >= 60 && PlayerInfo[playerid][pAge] <= 80)
            {
                PlayerInfo[playerid][pSkin] = 78;
            }
            else if(PlayerInfo[playerid][pAge] < 60 && PlayerInfo[playerid][pAge] >= 50)
            {
                PlayerInfo[playerid][pSkin] = 1;
            }
            else if(PlayerInfo[playerid][pAge] < 50 && PlayerInfo[playerid][pAge] >= 40)
            {
                PlayerInfo[playerid][pSkin] = 38;
            }
            else if(PlayerInfo[playerid][pAge] < 40 && PlayerInfo[playerid][pAge] >= 30)
            {
                PlayerInfo[playerid][pSkin] = 43;
            }
            else if(PlayerInfo[playerid][pAge] < 30 && PlayerInfo[playerid][pAge] >= 20)
            {
                PlayerInfo[playerid][pSkin] = 60;
            }
            else if(PlayerInfo[playerid][pAge] < 20 && PlayerInfo[playerid][pAge] >= 16)
            {
                PlayerInfo[playerid][pSkin] = 59;
            }
            PlayerInfo[playerid][pGender] = 1;
            format(query, sizeof(query), "UPDATE playerdata SET Gender=1, Skin=%d WHERE Username='%s'", PlayerInfo[playerid][pSkin], pname);
            mysql_query(query);
            format(string, sizeof(string),""White"Character "Red"%s"White" has been registered successfully.\n\nYour age has been set to %d and gender to male.\n\n"White"Please confirm your password below to log in:", Name(playerid), PlayerInfo[playerid][pAge]);
            ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""Blue"Immigration Identification", string, "Login", "Quit");
        }
    }
    return 1;
}
Here is the stock that sets the skin on login:

pawn Код:
stock MySQL_Login(playerid)
{
    new query[350], pname[24], savingstring[20], IP[15], string[256];
    GetPlayerIp(playerid, IP, 15);
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT Cash, Level, Bank, PosX, PosY, PosZ, PosA, AdminLevel, Age, Gender, Skin FROM playerdata WHERE Username = '%s'", pname);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
        mysql_fetch_field_row(savingstring, "Cash"); MoneyGiven[playerid] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Level"); PlayerInfo[playerid][pLevel] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Bank"); PlayerInfo[playerid][pBank] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "PosX"); PlayerInfo[playerid][pPosX] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "PosY"); PlayerInfo[playerid][pPosY] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "PosZ"); PlayerInfo[playerid][pPosZ] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "PosA"); PlayerInfo[playerid][pPosA] = floatstr(savingstring);
        mysql_fetch_field_row(savingstring, "AdminLevel"); PlayerInfo[playerid][pAdminLevel] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Age"); PlayerInfo[playerid][pAge] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Gender"); PlayerInfo[playerid][pGender] = strval(savingstring);
        mysql_fetch_field_row(savingstring, "Skin"); PlayerInfo[playerid][pSkin] = strval(savingstring);
    }
    PlayerInfo[playerid][pCash] = MoneyGiven[playerid];
    mysql_free_result();
    JustLogged[playerid] = 1;
    Logged[playerid] = 1;
    SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
    format(query, sizeof(query), "UPDATE playerdata SET IP=%s, Skin=%d WHERE Username='%s'", IP, PlayerInfo[playerid][pSkin], pname);
    mysql_query(query);
    format(string, sizeof(string), "Notice{FFFFFF}: Welcome to "SERVER_NAME", %s. We hope you enjoy your stay.", Name(playerid));
    SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
    format(string, sizeof(string), "Notice{FFFFFF}: Your current IP Address is: %s.", IP);
    SendClientMessage(playerid, COLOR_LIGHTGREEN, string);
    SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pPosA], 0, 0, 0, 0, 0, 0);
    SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
    SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
    SetCameraBehindPlayer(playerid);
    SpawnPlayer(playerid);
    return 1;
}
Here is what the database saves on player disconnect:

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    //================================================================//
    //                              MySQL part                        //
    //================================================================//
    if(Logged[playerid] == 1)
    {
        new Float:x, Float:y, Float:z, Float:a;
        GetPlayerPos(playerid, x, y, z);
        GetPlayerFacingAngle(playerid, a);
        PlayerInfo[playerid][pPosX] = x;
        PlayerInfo[playerid][pPosY] = y;
        PlayerInfo[playerid][pPosZ] = z;
        PlayerInfo[playerid][pPosA] = a;
        PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
        new query[300], pname[24];
        GetPlayerName(playerid, pname, 24);
        format(query, sizeof(query), "UPDATE playerdata SET Cash=%d, Level=%d, Bank=%d, PosX=%f, PosY=%f, PosZ=%f, PosA=%f, AdminLevel=%d, Age=%d, Gender=%d, Skin=%d WHERE Username='%s'",
        PlayerInfo[playerid][pCash],
        PlayerInfo[playerid][pLevel],
        PlayerInfo[playerid][pBank],
        PlayerInfo[playerid][pPosX],
        PlayerInfo[playerid][pPosY],
        PlayerInfo[playerid][pPosZ],
        PlayerInfo[playerid][pPosA],
        PlayerInfo[playerid][pAdminLevel],
        PlayerInfo[playerid][pAge],
        PlayerInfo[playerid][pGender],
        PlayerInfo[playerid][pSkin],
        pname);
        mysql_query(query);
    }
    return 1;
}
Here are two photos of both the /stats variable PlayerInfo[playerid][pSkin] and the database, both showing Skin ID 60:





+Rep for anyone who can help!
Reply
#2

I see no SetPlayerSkin

There is no need for these
Код:
    SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
    SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
when you're already setting them on "SetSpawnInfo"
Reply
#3

pawn Код:
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pPosA], 0, 0, 0, 0, 0, 0);
This is supposed to set the skin instead. ^
Reply
#4

Just try "SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);" on OnPlayerSpawn
Reply
#5

Works, thanks, I thought SetSpawnInfo would work for this considering it did when I had:

pawn Код:
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pPosA], 0, 0, 0, 0, 0, 0);
Set as:

pawn Код:
SetSpawnInfo(playerid, 0, 115, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pPosA], 0, 0, 0, 0, 0, 0);
+Rep.
One more little issue, do you know why this happens?:



When all I have under OnPlayerText is:

pawn Код:
public OnPlayerText(playerid, text[])
{
    new string[256];
    format(string, sizeof(string), "%s says: %s", Name(playerid), text);
    SendNearbyMessage(playerid, 10, string, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE);
    return 1;
}
Reply
#6

Change return 1; to return 0;
Reply
#7

Quote:
Originally Posted by T0pAz
Посмотреть сообщение
Change return 1; to return 0;
Lmao. Cheers! Again, all issues solved
Reply
#8

Quote:
Originally Posted by AphexCCFC
Посмотреть сообщение
Lmao. Cheers! Again, all issues solved
This may sound weird but the issues you had has also occurred to me when I was scripting TGF.
Reply
#9

Quote:
Originally Posted by T0pAz
Посмотреть сообщение
This may sound weird but the issues you had has also occurred to me when I was scripting TGF.
Wow that is weird. It's not even like I'm a beginner scripter, just need a little boost sometimes haha.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)