MySQL doesn't save sometimes [HELP]!
#1

Hello guys. when i get disconnect. sometimes the account save's sometimes accoount doesn't save. so i need your help guys. why sometimes it doesn't save?

OnPlayerDisconnect Callback
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new string[128];
    switch(reason)
    {
        case 0: format(string,sizeof(string),"%s [%d] left the server. (Timed out)",PlayerName(playerid),playerid);
        case 1: format(string,sizeof(string),"%s [%d] left the server. (Leaving)",PlayerName(playerid),playerid);
        case 2: format(string,sizeof(string),"%s [%d] left the server. (Kicked/Banned)",PlayerName(playerid),playerid);
    }
    SendClientMessageToAll(COLOR_LIGHTBLUE,string);

    //Save Wanted Level && Jailtime
    pInfo[playerid][SavedJailTime] =GetPlayerWantedLevel(playerid);
    pInfo[playerid][SavedJailTime] =JailTime[playerid];

    new query[1024];
    //1st Saving
    format(query, sizeof(query), "UPDATE `users` SET `Money` = %d, `Bankcash` = %d, `Score` = %d, `Adminlevel` = %d, `Army` = %d, `CIA` = %d, `RegularPlayer` = %d, `Donator` = %d, `OttoOwner` = %d, `TSkill` = %d, `RobSkill` = %d ,\
    `HasPackC4` = %d, `HasPackRope` = %d, `HasPackMoney` = %d,  `SavedWantedLevel` = %d , `SavedJailTime` = %d WHERE `Username` = '%s'"
,
    GetPlayerMoney(playerid),
    pInfo[playerid][BankMoney],
    GetPlayerScore(playerid),
    pInfo[playerid][Adminlevel],
    pInfo[playerid][Army],
    pInfo[playerid][Cia],
    pInfo[playerid][RegularPlayer],
    pInfo[playerid][Donator],
    pInfo[playerid][OttoOwner],
    pInfo[playerid][TerroristSkill],
    pInfo[playerid][RobSkill],
    pInfo[playerid][HasPackC4],
    pInfo[playerid][HasPackRope],
    pInfo[playerid][HasPackMoney],
    pInfo[playerid][SavedWantedLevel],
    pInfo[playerid][SavedJailTime],
    PlayerName(playerid));
    mysql_query(query);
    //2nd Saving
    format(query, sizeof(query), "UPDATE `users` SET `Coprank` = %d, `HoursPlayed` = %d, `MinutesPlayed` = %d, `SecondsPlayed` = %d, `IpAdress` = '%d', `Kills` = '%d',\
    `Deaths` = '%d', `TotalHitFinished` = '%d' WHERE `Username` = '%s'"
,
    pInfo[playerid][Coprank],
    pInfo[playerid][HoursPlayed],
    pInfo[playerid][MinutesPlayed],
    pInfo[playerid][SecondsPlayed],
    GetIP(playerid),
    pInfo[playerid][Kills],
    pInfo[playerid][Deaths],
    pInfo[playerid][TotalHitFinished],
    PlayerName(playerid));
    mysql_query(query);
   
    new HouseSlot;
    for (HouseSlot = 0; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
    {
        if (APlayerData[playerid][Houses][HouseSlot] != 0)
        {
            HouseFile_Save(APlayerData[playerid][Houses][HouseSlot]);
            if (LoadCarsDuringFSInit == false)
            {
                House_RemoveVehicles(APlayerData[playerid][Houses][HouseSlot]);
            }

            APlayerData[playerid][Houses][HouseSlot] = 0;
        }
    }

    APlayerData[playerid][CurrentHouse] = 0;
    APlayerData[playerid][DialogBuyVClass] = 0;
    APlayerData[playerid][DialogGetCarHouseID] = 0;
    return 1;
}
Reply
#2

Try this out for size:
pawn Код:
forward UpdatePlayer(playerid);
public UpdatePlayer(playerid)
{
    if(IsPlayerConnected(playerid)
    {
        if(LoggedIn[playerid]) {
            new query[1024];
           
            pInfo[playerid][SavedJailTime] = GetPlayerWantedLevel(playerid);
            pInfo[playerid][SavedJailTime] = JailTime[playerid];
           
            format(query, sizeof(query),
            "UPDATE `users` SET `Money` = %d, `Bankcash` = %d, `Score` = %d,"\
            "`Adminlevel` = %d, `Army` = %d, `CIA` = %d, `RegularPlayer` = %d,"\
            "`Donator` = %d, `OttoOwner` = %d, `TSkill` = %d, `RobSkill` = %d ,"\
            "`HasPackC4` = %d, `HasPackRope` = %d, `HasPackMoney` = %d,  `SavedWantedLevel` = %d,"\
            "`SavedJailTime` = %d WHERE `Username` = '%s';",
            GetPlayerMoney(playerid), pInfo[playerid][BankMoney], GetPlayerScore(playerid),
            pInfo[playerid][Adminlevel], pInfo[playerid][Army], pInfo[playerid][Cia],
            pInfo[playerid][RegularPlayer], pInfo[playerid][Donator], pInfo[playerid][OttoOwner],
            pInfo[playerid][TerroristSkill], pInfo[playerid][RobSkill], pInfo[playerid][HasPackC4],
            pInfo[playerid][HasPackRope], pInfo[playerid][HasPackMoney], pInfo[playerid][SavedWantedLevel],
            pInfo[playerid][SavedJailTime], PlayerName(playerid));
            mysql_query(query);
           
            format(query, sizeof(query),
            "UPDATE `users` SET `Coprank` = %d, `HoursPlayed` = %d, `MinutesPlayed` = %d,"\
            "`SecondsPlayed` = %d, `IpAdress` = '%d', `Kills` = '%d',"\
            "`Deaths` = '%d', `TotalHitFinished` = '%d' WHERE `Username` = '%s';",
            pInfo[playerid][Coprank], pInfo[playerid][HoursPlayed], pInfo[playerid][MinutesPlayed],
            pInfo[playerid][SecondsPlayed], GetIP(playerid), pInfo[playerid][Kills],
            pInfo[playerid][Deaths], pInfo[playerid][TotalHitFinished], PlayerName(playerid));
            mysql_query(query);
        }
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new string[128];
    switch(reason)
    {
        case 0: format(string,sizeof(string),"%s [%d] left the server. (Timed out)",PlayerName(playerid),playerid);
        case 1: format(string,sizeof(string),"%s [%d] left the server. (Leaving)",PlayerName(playerid),playerid);
        case 2: format(string,sizeof(string),"%s [%d] left the server. (Kicked/Banned)",PlayerName(playerid),playerid);
    }
    if(!LoggedIn[playerid]) return 1;
    UpdatePlayer(playerid);
    new HouseSlot;
    for (HouseSlot = 0; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
    {
        if (APlayerData[playerid][Houses][HouseSlot] != 0)
        {
            HouseFile_Save(APlayerData[playerid][Houses][HouseSlot]);
            if (LoadCarsDuringFSInit == false)
            {
                House_RemoveVehicles(APlayerData[playerid][Houses][HouseSlot]);
            }

            APlayerData[playerid][Houses][HouseSlot] = 0;
        }
    }

    APlayerData[playerid][CurrentHouse] = 0;
    APlayerData[playerid][DialogBuyVClass] = 0;
    APlayerData[playerid][DialogGetCarHouseID] = 0;
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)