SA-MP Forums Archive
Saving System MySQL - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Saving System MySQL (/showthread.php?tid=428048)



Saving System MySQL - Sanady - 04.04.2013

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;
}



Re: Saving System MySQL - Sanady - 04.04.2013

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


Re: Saving System MySQL - 3ventic - 04.04.2013

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.


Re: Saving System MySQL - Sanady - 04.04.2013

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 ?


Re: Saving System MySQL - LarzI - 04.04.2013

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


Re: Saving System MySQL - Patrick - 04.04.2013

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;
}



Re: Saving System MySQL - LarzI - 05.04.2013

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.


Re: Saving System MySQL - Sanady - 05.04.2013

I try every solution but still not working..


Re: Saving System MySQL - LarzI - 05.04.2013

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;
}



Re: Saving System MySQL - Sanady - 05.04.2013

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