04.02.2013, 18:49
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:
Then this sets the skin depending on the characters age and gender:
Here is the stock that sets the skin on login:
Here is what the database saves on player disconnect:
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!
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;
}
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;
}
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;
}
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;
}
+Rep for anyone who can help!