Annoying Bug -
Rokzlive - 14.03.2011
Ok, whenever someone joins my server, that have the same stats as everyone else. I think its my save public doing it. Can someone fix it so it does not save everyones account as the same?
pawn Код:
public Save(playerid)
{
if(playerdata[playerid][logged]==1)
{
new svname[25], querys[600];
GetPlayerName(playerid,svname,sizeof(svname));
format(querys,sizeof(querys),"UPDATE `accounts` SET `level`='%d',`Joins`='%d',`Kills`='%d',`Kicks`='%d',`Deaths`='%d',`Money`='%d',`Score`='%d',`MoneyC`='%d',`ScoreC`='%d',`Gender`='%d'",playerdata[playerid][level],playerdata[playerid][Joins],playerdata[playerid][Kills],playerdata[playerid][Kicks],playerdata[playerid][Deaths],playerdata[playerid][Money],playerdata[playerid][Score],playerdata[playerid][MoneyC],playerdata[playerid][ScoreC],playerdata[playerid][Gender],svname);
mysql_query(querys);
}
return 1;
}
And if thats not the problem then what is?
AW: Annoying Bug -
xerox8521 - 14.03.2011
You need to set them to 0 so an other player wont get same admin level or same score as the player before. you could do it with a timer or a stock
i Preffer stock in this case
Version with Timer:
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
SetTimer("Save",1000,0); // calls the public Save in 1 sec
playerdata[playerid][level]=0;
playerdata[playerid][Joins]=0;
playerdata[playerid][Kills]=0;
playerdata[playerid][Kicks]=0;
playerdata[playerid][Deaths]=0;
playerdata[playerid][Score]=0;
playerdata[playerid][MoneyC]=0;
playerdata[playerid][ScoreC]=0;
playerdata[playerid][Gender]=0; // dont know if its an interger or a Team assignment or string assignment
return 1;
}
Version with stock
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
Save(playerid);
playerdata[playerid][level]=0;
playerdata[playerid][Joins]=0;
playerdata[playerid][Kills]=0;
playerdata[playerid][Kicks]=0;
playerdata[playerid][Deaths]=0;
playerdata[playerid][Score]=0;
playerdata[playerid][MoneyC]=0;
playerdata[playerid][ScoreC]=0;
playerdata[playerid][Gender]=0; // dont know if its an interger or a Team assignment
return 1;
}
and you create a stock at the end of the script
pawn Код:
stock Save(playerid);
{
new svname[24], querys[600],escpname[24];
GetPlayerName(playerid,svname,sizeof(svname));
mysql_real_escape_string(svname,escpname); // you also need to escape the string in mysql
format(querys,sizeof(querys),"UPDATE `accounts` SET `level`='%d',`Joins`='%d',`Kills`='%d',`Kicks`='%d',`Deaths`='%d',`Money`='%d',`Score`='%d',`MoneyC`='%d',`ScoreC`='%d',`Gender`='%d' WHERE username='%s'",playerdata[playerid][level],playerdata[playerid][Joins],playerdata[playerid][Kills],playerdata[playerid][Kicks],playerdata[playerid][Deaths],playerdata[playerid][Money],playerdata[playerid][Score],playerdata[playerid][MoneyC],playerdata[playerid][ScoreC],playerdata[playerid][Gender],escpname);
// if you update something you need to give a WHERE too so that mysql knows where you want to change the data
mysql_query(querys);
return 1;
}
Re: Annoying Bug -
WackoX - 14.03.2011
Look at your mysql log..
Re: Annoying Bug -
Rokzlive - 15.03.2011
When i tryed the new save, i got this in my server log.
[20:24:42] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:24:42] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:25:10] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:25:10] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:25:37] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:25:37] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:26:04] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:26:05] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:26:32] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:26:32] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:26:59] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:26:59] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:27:27] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:27:27] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
[20:27:54] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `level`='0',`Joins`='0',`Kills`='0',`Kicks`='0' WHERE username=''' at line 1.
[20:27:54] [MySQL] Error (0): Failed to exeute query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `` SET `Deaths`='0',`Money`='0',`Score`='0',`MoneyC`='0', `ScoreC`='0',`Gen' at line 1.
AW: Annoying Bug -
Meta - 15.03.2011
You used '%d' for a intreger ... remove those '