[Help] Loading accounts mysql
#1

Hey guys, I recently got my server back from a scripter who re-scripted my server from the old ini files to our mysql database.

Currently most things work fine, all acounts are created in the database and all stuff, but when you disconnect and login on the server agen, your account are reseted to it's first registering, all your account info are set to default ange.
My self I cant find the issue, and my friend who re-scripted the server to mysql have never seen this problem before.

I would like to see if anyone else here can help me out with the issue or maby have had this problem self.


Please, help me out
Regards Tony,


Login Code
pawn Код:
stock OnPlayerLoginMySQL(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new Query[1024];
        format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `UserID` = '%d'", DatabaseID[playerid]);
        mysql_query(Query);
        mysql_store_result();
        sscanf(Query, "p<|>e<is[128]iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiffiiiiiiiiiiiiiifffiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis[128]iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiis[128]is[128]is[128]is[128]is[128]iiiiiiiiiiiiiiii>", PlayerInfo[playerid]);
    }
    gPlayerAccount[playerid] = 1;
    new tmp2[256];
    new string2[64];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
    format(string2, sizeof(string2), "users/%s.ini", playername2);
    new File: UserFile = fopen(string2, io_read);
    if ( UserFile )
    {
        new key[ 256 ] , val[ 256 ];
        new Data[ 256 ];
        while ( fread( UserFile , Data , sizeof( Data ) ) )
        {
            key = ini_GetKey( Data );
            for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
            {
                new string[128];
                format(string, 128, "pv%dPosX",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosX] = floatstr( val ); }
                format(string, 128, "pv%dPosY",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosY] = floatstr( val ); }
                format(string, 128, "pv%dPosZ",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosZ] = floatstr( val ); }
                format(string, 128, "pv%dPosAngle",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosAngle] = floatstr( val ); }
                format(string, 128, "pv%dModelId",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvModelId] = strval( val ); }
                format(string, 128, "pv%dLock",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvLock] = strval( val ); }
                format(string, 128, "pv%dLocked",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvLocked] = strval( val ); }
                format(string, 128, "pv%dPaintJob",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPaintJob] = strval( val ); }
                format(string, 128, "pv%dColor1",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvColor1] = strval( val ); }
                format(string, 128, "pv%dColor2",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvColor2] = strval( val ); }
                for(new m = 0; m < MAX_MODS; m++)
                {
                    format(string, 128, "pv%dMod%d", v, m);
                    if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvMods][m] = strval( val ); }
                }
                format(string, 128, "pv%dAllowedPlayer",v);
                if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); strmid(PlayerVehicleInfo[playerid][v][pvAllowPlayer], val, 0, strlen(val)-1, 255); }

            }
        }
        fclose(UserFile);
    }
    PlayerInfo[playerid][pAdjustable] = 0;
    ResetPlayerMoney(playerid);
    ConsumingMoney[playerid] = 1;
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
    CurrentMoney[playerid] = PlayerInfo[playerid][pCash];
    if((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
    {
        PlayerInfo[playerid][pPos_x] = 1684.9;
        PlayerInfo[playerid][pPos_y] = -2244.5;
        PlayerInfo[playerid][pPos_z] = 13.5;
    }
    if(PlayerInfo[playerid][pReg] == 0)
    {
        PlayerInfo[playerid][pLevel] = 1;
        PlayerInfo[playerid][pSHealth] = 0.0;
        PlayerInfo[playerid][pHealth] = 50.0;
        PlayerInfo[playerid][pPos_x] = 1684.9;
        PlayerInfo[playerid][pPos_y] = -2244.5;
        PlayerInfo[playerid][pPos_z] = 13.5;
        PlayerInfo[playerid][pInt] = 0;
        PlayerInfo[playerid][pPcarkey] = 9999;
        PlayerInfo[playerid][pPcarkey2] = 9999;
        PlayerInfo[playerid][pPcarkey3] = 9999;
        PlayerInfo[playerid][pPcarkey4] = 9999;
        PlayerInfo[playerid][pPcarkey5] = 9999;
        PlayerInfo[playerid][pLocal] = 255;
        PlayerInfo[playerid][pTeam] = 3;
        //  PlayerInfo[playerid][pModel] = 137;
        //new randphone = 1000 + random(8999);//minimum 1000  max 9999 //giving one at the start Note used
        PlayerInfo[playerid][pPnumber] = 0;
        PlayerInfo[playerid][pPhousekey] = 255;
        PlayerInfo[playerid][pPbiskey] = 255;
        PlayerInfo[playerid][pAccount] = 500;
        PlayerInfo[playerid][pReg] = 1;
        //GivePlayerMoney(playerid, 50);
    }
    if(PlayerInfo[playerid][pLevel] == -999) //autoban
    {
        Ban(playerid);
    }
    else if(PlayerInfo[playerid][pCK] > 0)
    {
        Kick(playerid);
    }
    ClearChatbox(playerid, 24);
    printf("%s has logged in.",playername2);
    SetSpawnInfo(playerid, PlayerInfo[playerid][pTeam], PlayerInfo[playerid][pModel], PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], 1.0, -1, -1, -1, -1, -1, -1);
    if(PlayerInfo[playerid][pTut] != 0)
    {
        TextDrawHideForPlayer(playerid, RegisterPart1[playerid]);
        TextDrawHideForPlayer(playerid, RegisterPart2[playerid]);
        format(InfoBox1, sizeof(InfoBox1), "~y~Welcome ~n~~n~~w~Website: ~g~%s~n~~w~Ventrilo: ~b~%s~n~~w~Last Update: ~b~%s",SCRIPT_WEB,SCRIPT_VENT,SCRIPT_UPDATE);
        InfoBoxForPlayerStart(playerid, InfoBox1);
        SetTimerEx("GiftInfo", 12000, 0, "d", playerid);
        SetTimerEx("UnsetFirstSpawn", 5000, false, "i", playerid);
        SetTimerEx("GostergeYenile", 150, 1, "i", playerid);
    }
    SetTimerEx("UnsetFirstSpawn", 5000, false, "i", playerid);
    // Unset Crash
    SetTimerEx("UnsetCrash", 5000, false, "i", playerid);
    PlayerFixRadio(playerid);
    if(gTeam[playerid] == 0)
    {
        gTeam[playerid] = 3;
        MedicBill[playerid] = 0;
    }
    else
    {
        gTeam[playerid] = PlayerInfo[playerid][pTeam];
        MedicBill[playerid] = 0;
    }
    gPlayerLogged[playerid] = 1;
    //GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
    MedicBill[playerid] = 0;
    SpawnPlayer(playerid);
    if(PlayerInfo[playerid][pCrashed] == 0)
    {
        format(tmp2, sizeof(tmp2), "~g~Welcome Back ~n~~r~   %s", playername2);
    }
    else
    {
        format(tmp2, sizeof(tmp2), "~p~Crashed...~n~~w~Returning to your spawn point.");
    }
    SetCameraBehindPlayer(playerid);
    //format(tmp2, sizeof(tmp2), "~g~Welcome Back ~n~~r~   %s", playername2);
    DateProp(playerid);
    GameTextForPlayer(playerid, tmp2, 5000, 3);
    SendClientMessage(playerid, COLOR_YELLOW, motd);
    //LoadPlayerVehicles(playerid);
    if(PlayerInfo[playerid][pFMember] < 255)
    {
        format(tmp2, sizeof(tmp2), "Family MOTD: %s.", FamilyInfo[PlayerInfo[playerid][pFMember]][FamilyMOTD]);
        SendClientMessage(playerid, COLOR_YELLOW, tmp2);
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerInfo[i][pMaskuse] == 1)
            {
                ShowPlayerNameTagForPlayer(playerid, i, 0);
            }
        }
    }
    gPlayerAccount[playerid] = 1;
    return 1;
}
Reply
#2

1. Print the value of PlayerInfo[playerid][pReg] to see if it is actually one.

pawn Код:
printf("%d", PlayerInfo[playerid][pReg]);
2. Make sure that DatabaseID[playerid] is the right ID. Print the whole query
pawn Код:
print(Query);
3. This isn't related to the issue but you should have mysql_free_result after storing a value.

4. Make sure that you have the right amount of arguments in sscanf.

5. Make sure that on OnPlayerDisconnect, you are using update instead of insert to save the players stats.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)