Annoying Bug
#1

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?
Reply
#2

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;
}
Reply
#3

Look at your mysql log..
Reply
#4

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.
Reply
#5

You used '%d' for a intreger ... remove those '
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)