Saving System MySQL
#1

Hello everyone.I got one little problem which I need to fix.I found one problem with saving system.But I don`t see anything bad.Check it and help me to fix problem!

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    if(pInfo[playerid][pLoggedIn] == 1)
    {
        new Query[256];
        format(Query, sizeof(Query),"UPDATE `Users` SET \
                                    `IP` = '%s',\
                                    `Admin` = '%d', \
                                    `PWL` = '%d', \
                                    `SWL` = '%d', \
                                    `TWL` = '%d', \
                                    `XP` = '%d', \
                                    `Kills` = '%d', \
                                    `Deaths` = '%d', \
                                    `Money` = '%d', \
                                    `Score` = '%d', \
                                    `Rank` = '%d' \
                                    `Class1Weapon1` = '%d' \
                                    `Class1Weapon2` = '%d' \
                                    `Class1Weapon3` = '%d' \
                                    `Class2Weapon1` = '%d' \
                                    `Class2Weapon2` = '%d' \
                                    `Class2Weapon3` = '%d' \
                                    `Class3Weapon1` = '%d' \
                                    `Class3Weapon2` = '%d' \
                                    `Class3Weapon3` = '%d' \
                                     WHERE `UserName`= '%s'"
,
                                     pIP[playerid],//Ip za autologin
                                     pInfo[playerid][pAdmin],
                                     PrimaryWeaponLevel[playerid],
                                     SecondaryWeaponLevel[playerid],
                                     ThirdaryWeaponLevel[playerid],
                                     pInfo[playerid][pXP],
                                     pInfo[playerid][pKills],
                                     pInfo[playerid][pDeaths],
                                     pInfo[playerid][pMoney],
                                     pInfo[playerid][pScore],
                                     pInfo[playerid][pRank],
                                     ClassInfo[playerid][0][Weapon1],
                                     ClassInfo[playerid][0][Weapon2],
                                     ClassInfo[playerid][0][Weapon3],
                                     ClassInfo[playerid][1][Weapon1],
                                     ClassInfo[playerid][1][Weapon2],
                                     ClassInfo[playerid][1][Weapon3],
                                     ClassInfo[playerid][2][Weapon1],
                                     ClassInfo[playerid][2][Weapon2],
                                     ClassInfo[playerid][2][Weapon3],
                                     pName[playerid]);
        mysql_query(Query);
    }
    return 1;
}
Reply
#2

Can anyone helps me with this thing..Sorry for double posting?
Reply
#3

Your problem is that you're trying to put a query of at least 400 characters into a 256-long variable. Make
pawn Код:
new Query[256];
a lot longer.

Also, you're missing commas after Class Weapon and Rank fields.
Reply
#4

Quote:
Originally Posted by 3ventic
Посмотреть сообщение
Your problem is that you're trying to put a query of at least 400 characters into a 256-long variable. Make
pawn Код:
new Query[256];
a lot longer.

Also, you're missing commas after Class Weapon and Rank fields.
Commas? Everything seems fine also which commas ?
Reply
#5

Quote:
Originally Posted by Sanady
Посмотреть сообщение
Commas? Everything seems fine also which commas ?
Not in the query format
Reply
#6

As i notice on this part of code there is no commas
pawn Код:
`Rank` = '%d' \
                                    `Class1Weapon1` = '%d' \
                                    `Class1Weapon2` = '%d' \
                                    `Class1Weapon3` = '%d' \
                                    `Class2Weapon1` = '%d' \
                                    `Class2Weapon2` = '%d' \
                                    `Class2Weapon3` = '%d' \
                                    `Class3Weapon1` = '%d' \
                                    `Class3Weapon2` = '%d' \
                                    `Class3Weapon3` = '%d' \
also ' ' only use it when it is a string not an integer (most people said)
and try increasing string because 256 is not enough. i would say increase it to 500+

Try this code
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    if(pInfo[playerid][pLoggedIn] == 1)
    {
        new Query[556];
        format(Query, sizeof(Query),"UPDATE `Users` SET `IP` = '%s', `Admin` = %d, `PWL` = %d, `SWL` = %d, `TWL` = %d, `XP` = %d, `Kills` = %d, `Deaths` = %d, `Money` = %d, `Score` = %d, `Rank` = %d,\
        `Class1Weapon1` = %d, `Class1Weapon2` = %d, `Class1Weapon3` = %d, `Class2Weapon1` = %d, `Class2Weapon2` = %d, `Class2Weapon3` = %d, `Class3Weapon1` = %d, `Class3Weapon2` = %d, `Class3Weapon3` = %d\
        WHERE `UserName` = '%s'"
,
        pIP[playerid],pInfo[playerid][pAdmin],PrimaryWeaponLevel[playerid], SecondaryWeaponLevel[playerid],ThirdaryWeaponLevel[playerid],pInfo[playerid][pXP],pInfo[playerid][pKills],pInfo[playerid][pDeaths],
        pInfo[playerid][pMoney], pInfo[playerid][pScore],pInfo[playerid][pRank],ClassInfo[playerid][0][Weapon1], ClassInfo[playerid][0][Weapon2],ClassInfo[playerid][0][Weapon3],ClassInfo[playerid][1][Weapon1],
        ClassInfo[playerid][1][Weapon2],ClassInfo[playerid][1][Weapon3],ClassInfo[playerid][2][Weapon1],ClassInfo[playerid][2][Weapon2],ClassInfo[playerid][2][Weapon3],
        pName[playerid]);
        mysql_query(Query);
    }
    return 1;
}
Reply
#7

It took me ~10 seconds to check how many cells were needed to hold this query - simply replace all %d (integers) with the maximum number of digits, and the same with strings.

IP is 15 characters, Name is 24 characters, Weapon ID is maximum 2 digits, rest of the integers are 11 (or 10 if only positive values are valid)

If you replace all the formats (%d and %s) with the number of characters, then count letters (use MSWORD or an online tool), you will end up at about 508 characters (509 with \0 (null)). This way you can minimize memory usage by saving cells you will never use.

556 isn't far off, though, but saving those 47 cells is actually worth it.
Reply
#8

I try every solution but still not working..
Reply
#9

This isn't working?

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    if(pInfo[playerid][pLoggedIn] == 1)
    {
        new Query[509];
        format(Query, sizeof(Query),"UPDATE `Users` SET \
                                    `IP` = '%s',\
                                    `Admin` = %d, \
                                    `PWL` = %d, \
                                    `SWL` = %d, \
                                    `TWL` = %d, \
                                    `XP` = %d, \
                                    `Kills` = %d, \
                                    `Deaths` = %d, \
                                    `Money` = %d, \
                                    `Score` = %d, \
                                    `Rank` = %d, \
                                    `Class1Weapon1` = %d, \
                                    `Class1Weapon2` = %d, \
                                    `Class1Weapon3` = %d, \
                                    `Class2Weapon1` = %d, \
                                    `Class2Weapon2` = %d, \
                                    `Class2Weapon3` = %d, \
                                    `Class3Weapon1` = %d, \
                                    `Class3Weapon2` = %d, \
                                    `Class3Weapon3` = %d, \
                                     WHERE `UserName`= '%s'"
,
                                     pIP[playerid],//Ip za autologin
                                     pInfo[playerid][pAdmin],
                                     PrimaryWeaponLevel[playerid],
                                     SecondaryWeaponLevel[playerid],
                                     ThirdaryWeaponLevel[playerid],
                                     pInfo[playerid][pXP],
                                     pInfo[playerid][pKills],
                                     pInfo[playerid][pDeaths],
                                     pInfo[playerid][pMoney],
                                     pInfo[playerid][pScore],
                                     pInfo[playerid][pRank],
                                     ClassInfo[playerid][0][Weapon1],
                                     ClassInfo[playerid][0][Weapon2],
                                     ClassInfo[playerid][0][Weapon3],
                                     ClassInfo[playerid][1][Weapon1],
                                     ClassInfo[playerid][1][Weapon2],
                                     ClassInfo[playerid][1][Weapon3],
                                     ClassInfo[playerid][2][Weapon1],
                                     ClassInfo[playerid][2][Weapon2],
                                     ClassInfo[playerid][2][Weapon3],
                                     pName[playerid]);
        mysql_query(Query);
    }
    return 1;
}
Reply
#10

Quote:
Originally Posted by LarzI
Посмотреть сообщение
This isn't working?

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    if(pInfo[playerid][pLoggedIn] == 1)
    {
        new Query[509];
        format(Query, sizeof(Query),"UPDATE `Users` SET \
                                    `IP` = '%s',\
                                    `Admin` = %d, \
                                    `PWL` = %d, \
                                    `SWL` = %d, \
                                    `TWL` = %d, \
                                    `XP` = %d, \
                                    `Kills` = %d, \
                                    `Deaths` = %d, \
                                    `Money` = %d, \
                                    `Score` = %d, \
                                    `Rank` = %d, \
                                    `Class1Weapon1` = %d, \
                                    `Class1Weapon2` = %d, \
                                    `Class1Weapon3` = %d, \
                                    `Class2Weapon1` = %d, \
                                    `Class2Weapon2` = %d, \
                                    `Class2Weapon3` = %d, \
                                    `Class3Weapon1` = %d, \
                                    `Class3Weapon2` = %d, \
                                    `Class3Weapon3` = %d, \
                                     WHERE `UserName`= '%s'"
,
                                     pIP[playerid],//Ip za autologin
                                     pInfo[playerid][pAdmin],
                                     PrimaryWeaponLevel[playerid],
                                     SecondaryWeaponLevel[playerid],
                                     ThirdaryWeaponLevel[playerid],
                                     pInfo[playerid][pXP],
                                     pInfo[playerid][pKills],
                                     pInfo[playerid][pDeaths],
                                     pInfo[playerid][pMoney],
                                     pInfo[playerid][pScore],
                                     pInfo[playerid][pRank],
                                     ClassInfo[playerid][0][Weapon1],
                                     ClassInfo[playerid][0][Weapon2],
                                     ClassInfo[playerid][0][Weapon3],
                                     ClassInfo[playerid][1][Weapon1],
                                     ClassInfo[playerid][1][Weapon2],
                                     ClassInfo[playerid][1][Weapon3],
                                     ClassInfo[playerid][2][Weapon1],
                                     ClassInfo[playerid][2][Weapon2],
                                     ClassInfo[playerid][2][Weapon3],
                                     pName[playerid]);
        mysql_query(Query);
    }
    return 1;
}
It`s not working
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)