SA-MP Forums Archive
MySQL Doesn't Save when Player Disconnects - 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: MySQL Doesn't Save when Player Disconnects (/showthread.php?tid=417730)



MySQL Doesn't Save when Player Disconnects - Patrick - 22.02.2013

hello guys. Park4Bmx just fixed my problem about "String buffer overflow" so thanks to him. but there is a new problem that i noticed. when player got all information he had

I Setted on database
pawn Код:
Money: 7500
BankCash: 7500
Cash: 7500
RegularPlayer: 1
CIAPlayer: 1
ArmyPlayer: 1
Thats my example i setted on Database. when player log outs. i checked the database again and shows player information as


When Player Disconnects
pawn Код:
Money: 0
BankCash: 0
Cash: 0
RegularPlayer: 0
CIAPlayer: 0
ArmyPlayer: 0
So can anyone help me? here is my OnplayerDisconnect
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new pip[128];
    GetPlayerIp(playerid, pip, sizeof(pip));
    new query[1024];
    format(query, sizeof(query), "UPDATE users SET \
    Money = '%d', \
    Bankcash = '%d',\
    Cash = '%d',\
    Score = '%d',\
    Adminlevel = '%d',\
    Army = '%d',\
    CIA = '%d',\
    RegularPlayer = '%d',\
    DrugHouseOwner = '%d',\
    OttoOwner = '%d',\
    TSkill = '%d',\
    RobSkill = '%d' ,\
    HasPackC4 = '%d',\
    HasPackRope = '%d',\
    HasPackMoney = '%d', \
    SavedWantedLevel = '%d' ,\
    SavedJailTime = '%d',\
    Coprank = '%d',\
    HoursPlayed = '%d',\
    MinutesPlayed = '%d',\
    SecondsPlayed = '%d',\
    IpAdress = '%s'\
    WHERE Username = '%s'"
,
    GetPlayerMoney(playerid),
    BankCash[playerid],
    GetPlayerMoney(playerid),
    GetPlayerScore(playerid),
    AdminLevel[playerid],
    CanUseArmy[playerid],
    CanUseCIA[playerid],
    IsRegularPlayer[playerid],
    DrugHouseOwner[playerid],
    OttoOwner[playerid],
    TerroristSkill[playerid],
    RobSkill[playerid],
    HasPackC4[playerid],
    HasPackRope[playerid],
    HasPackMoney[playerid],
    SavedWantedLevel[playerid],
    SavedJailTime[playerid],
    Coprank[playerid],
    TotalPlayedTime[playerid][0],
    TotalPlayedTime[playerid][1],
    TotalPlayedTime[playerid][2],
    pip,
    PlayerName(playerid));
    mysql_query(query);
    return 1;
}



Re: MySQL Doesn't Save when Player Disconnects - PaulDinam - 22.02.2013

You have to use %d not '%d'
and why the fuck are you using / after each parameter.

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new pip[128];
    GetPlayerIp(playerid, pip, sizeof(pip));
    new query[1024];
    format(query, sizeof(query), "UPDATE `users` SET `Money` = %d, `Bankcash` = %d, `Cash` = %d, `Score` = %d, `Adminlevel` = %d, `Army` = %d, `CIA` = %d, `RegularPlayer` = %d, `DrugHouseOwner` = %d, `OttoOwner` = %d, `TSkill` = %d, `RobSkill` = %d , `HasPackC4` = %d, `HasPackRope` = %d, `HasPackMoney` = %d,  `SavedWantedLevel` = %d , `SavedJailTime` = %d, `Coprank` = %d, `HoursPlayed` = %d, `MinutesPlayed` = %d, `SecondsPlayed` = %d, `IpAdress` = '%s' WHERE `Username` = '%s'",
    GetPlayerMoney(playerid),
    BankCash[playerid],
    GetPlayerMoney(playerid),
    GetPlayerScore(playerid),
    AdminLevel[playerid],
    CanUseArmy[playerid],
    CanUseCIA[playerid],
    IsRegularPlayer[playerid],
    DrugHouseOwner[playerid],
    OttoOwner[playerid],
    TerroristSkill[playerid],
    RobSkill[playerid],
    HasPackC4[playerid],
    HasPackRope[playerid],
    HasPackMoney[playerid],
    SavedWantedLevel[playerid],
    SavedJailTime[playerid],
    Coprank[playerid],
    TotalPlayedTime[playerid][0],
    TotalPlayedTime[playerid][1],
    TotalPlayedTime[playerid][2],
    pip,
    PlayerName(playerid));
    mysql_query(query);
    return 1;
}



Re: MySQL Doesn't Save when Player Disconnects - Patrick - 22.02.2013

Chill out man :P
Its my first time using MySQL.

Thanks Alot it works.

Maybe if you can also help me out. when pllayer disconnects. it works 'it saved' when player log's in the money he had and score didn't save here's my login stock

pawn Код:
stock LoginPlayer(playerid,const password[])
{
    new Query[256];
    new EscapedText[129];
    mysql_real_escape_string(password, EscapedText);
    format(Query,sizeof(Query),"SELECT * FROM `Users` WHERE `Username` = '%s' AND `Password` = '%s'",PlayerName(playerid),EscapedText);
    mysql_query(Query);
    mysql_store_result();
    if(mysql_num_rows() != 0)
    {
        new pName[24],money,score,user[24],pass[129],pIp[17]/*16 characters plus a null on‌e = 17*/,banned;
        GetPlayerName(playerid,pName,24);
        format(Query, sizeof(Query), "SELECT * FROM `Users` WHERE `Username` = '%s' ", pName);
        mysql_query(Query);
        mysql_store_result();
        mysql_fetch_row_format(Query, "|");
        sscanf(Query, "s[24]s[128]iiiiiiiiiiiiiiiiiiiis[17]i", user, pass,money,score, BankCash[playerid],CanUseArmy[playerid],CanUseCIA[playerid],AdminLevel[playerid],IsRegularPlayer[playerid],NameBanned[playerid],DrugHouseOwner[playerid],OttoOwner[playerid],TerroristSkill[playerid],RobSkill[playerid],HasPackC4[playerid],HasPackRope[playerid],HasPackMoney[playerid],
        SavedWantedLevel[playerid],SavedJailTime[playerid],Coprank[playerid],TotalPlayedTime[playerid][0],TotalPlayedTime[playerid][1],TotalPlayedTime[playerid][2],pIp,banned);
        GivePlayerMoney(playerid,money);//sets player money to last money he has
        SetPlayerScore(playerid, score);//sets player score's to last score he has
        mysql_free_result();
        PLAYERLIST_authed[playerid]=true;
        return SendClientMessage(playerid,COLOR_LIGHTBLUE,"You have successfully logged in! Your previous stats have been restored.");
    }
    //CheckPasswordAttempts(playerid);
    //ShowLoginScreen(playerid);
    return 1;
}



Re: MySQL Doesn't Save when Player Disconnects - Jstylezzz - 22.02.2013

-removed- Didn't notice the piece of code before mysql_free_result-
You might want to debug the code, and print out the money value.
In the loading stock, add print(money); and print(score); , then, when you log in, check the console


Re: MySQL Doesn't Save when Player Disconnects - Patrick - 22.02.2013

@Jari_Johnson* ill try it

My Print debuging code
pawn Код:
new string[128];
format(string,128,"%d %d",money,score);
print(string);
and print's this on console

Код:
[13:27:54] 0 0

1st 0 = money
2nd 0 = score



Re: MySQL Doesn't Save when Player Disconnects - Jstylezzz - 22.02.2013

That means the mysql query isn't loaded in the variables correctly..
Is this only for money and score, or also for the other variables?


Re: MySQL Doesn't Save when Player Disconnects - Patrick - 22.02.2013

This is only for mysql variable. i only used this. as Park4Bmx told me. try to do that way to load player's money and score . but it doesn't so thats why i asked on forums.


Re: MySQL Doesn't Save when Player Disconnects - PaulDinam - 22.02.2013

Why don't you use cache.. very simple.


Re: MySQL Doesn't Save when Player Disconnects - mamorunl - 22.02.2013

There is a new version available for MySQL in pawn. This version is faster and doesn't require the use of the sscanf variable.

Now, to get back to your point:

You are pushing your QUERY variable through your sscanf, not your actual query.


Re: MySQL Doesn't Save when Player Disconnects - InfiniTy. - 22.02.2013

Quote:
Originally Posted by PaulDinam
Посмотреть сообщение
You have to use %d not '%d'
and why the fuck are you using / after each parameter.

pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new pip[128];
    GetPlayerIp(playerid, pip, sizeof(pip));
    new query[1024];
    format(query, sizeof(query), "UPDATE `users` SET `Money` = %d, `Bankcash` = %d, `Cash` = %d, `Score` = %d, `Adminlevel` = %d, `Army` = %d, `CIA` = %d, `RegularPlayer` = %d, `DrugHouseOwner` = %d, `OttoOwner` = %d, `TSkill` = %d, `RobSkill` = %d , `HasPackC4` = %d, `HasPackRope` = %d, `HasPackMoney` = %d,  `SavedWantedLevel` = %d , `SavedJailTime` = %d, `Coprank` = %d, `HoursPlayed` = %d, `MinutesPlayed` = %d, `SecondsPlayed` = %d, `IpAdress` = '%s' WHERE `Username` = '%s'",
    GetPlayerMoney(playerid),
    BankCash[playerid],
    GetPlayerMoney(playerid),
    GetPlayerScore(playerid),
    AdminLevel[playerid],
    CanUseArmy[playerid],
    CanUseCIA[playerid],
    IsRegularPlayer[playerid],
    DrugHouseOwner[playerid],
    OttoOwner[playerid],
    TerroristSkill[playerid],
    RobSkill[playerid],
    HasPackC4[playerid],
    HasPackRope[playerid],
    HasPackMoney[playerid],
    SavedWantedLevel[playerid],
    SavedJailTime[playerid],
    Coprank[playerid],
    TotalPlayedTime[playerid][0],
    TotalPlayedTime[playerid][1],
    TotalPlayedTime[playerid][2],
    pip,
    PlayerName(playerid));
    mysql_query(query);
    return 1;
}
"and why the fuck are you using / after each parameter."

Really ? Can't you talk normally ? If you don't know what they are for just ask not "omfg u sch n0b y th fuck u use those i don't even know wht they are forrrr" If you actually don't put that the query won't continue.. it will count it as for example Coprank[playerid] and not the query.. try it out and see if you don't put \ what happens..