SA-MP Forums Archive
SQL Vehicles Problem - 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: SQL Vehicles Problem (/showthread.php?tid=356812)



SQL Vehicles Problem - jamesb93 - 04.07.2012

Hey guys,

Got an issue thats been bugging me for a while now, I am loading vehicles from MySQL and they don't appear to be loading correct. I.E.when the server loads the gamemode stops loading under OnGameModeInt. I've narrowed it down to just this function.

pawn Код:
stock LoadPVehicles()
{
    new
        Query[1024],
        vModel2,
        vC[2],
        vPrice2,
        vOwner2[MAX_PLAYER_NAME],
        Float:Pos[4],
        vID,
        PlateNum[32],
        vPaint_Job,
        vModsToLoad[12],
        vLock,
        vTrunk[5],
        vAmmo[5],
        faction,
        job,
        damage,
        vengine,
        fuel;
   
    mysql_query("SELECT * FROM `privateveh` WHERE `vID` < "#MAX_BUYABLE_VEH" ORDER BY vID");
    mysql_store_result();
   
    if(mysql_num_rows() > 0)
    {
        while(mysql_fetch_row(Query))
        {
           
            sscanf(Query, "p<|>iiiiis[24]ffffs[32]iiiiiiiiiiiiiiiiiiiiiiiiiiiii",
            vID, vModel2, vC[0], vC[1], vPrice2, vOwner2, Pos[0], Pos[1], Pos[2], Pos[3], PlateNum, vPaint_Job,

            vModsToLoad[0], vModsToLoad[1], vModsToLoad[2], vModsToLoad[3], vModsToLoad[4], vModsToLoad[5],
            vModsToLoad[6], vModsToLoad[7], vModsToLoad[8], vModsToLoad[9], vModsToLoad[10], vModsToLoad[11], vLock, faction, job, damage, vengine, fuel,vTrunk[0], vTrunk[1], vTrunk[2], vTrunk[3], vTrunk[4], vAmmo[0], vAmmo[1], vAmmo[2], vAmmo[3], vAmmo[4]);
           
               
            new vCarID = CreateVehicle(vModel2, vInfo[vID][vPosX],vInfo[vID][vPosY], vInfo[vID][vPosZ], vInfo[vID][vPosA], vInfo[vID][vColor1],vInfo[vID][vColor2], -1);
               
           
            vInfo[vCarID][vSQLID] = vID;
            vInfo[vCarID][vModel] = vModel2;                       
            vInfo[vCarID][vColor1] = vC[0];                        
            vInfo[vCarID][vColor2] = vC[1];                        
            vInfo[vCarID][vPrice] = vPrice2;                           
            strmid(vInfo[vCarID][vOwner], vOwner2, 0, 24, 24);     
            vInfo[vCarID][vPosX] = Pos[0];                     
            vInfo[vCarID][vPosY] = Pos[1];                         
            vInfo[vCarID][vPosZ] = Pos[2];                         
            vInfo[vCarID][vPosA] = Pos[3];                         
            strmid(vInfo[vCarID][vPlate], PlateNum, 0, 32, 32);        
            vInfo[vCarID][vPaintJ] = vPaint_Job;                       
            vInfo[vCarID][vLocked] = vLock;                            
            vInfo[vCarID][vFaction] = faction;                     
            vInfo[vCarID][vJob] = job;                             
            vInfo[vCarID][vDamage] = damage;                       
            vInfo[vCarID][vEngine] = vengine;                          
            vInfo[vCarID][vFuel] = fuel;    
               
               
               
            vInfo[vCarID][vTrunkSlots][0] = vTrunk[0];
            vInfo[vCarID][vTrunkSlots][1] = vTrunk[1];                
            vInfo[vCarID][vTrunkSlots][2] = vTrunk[2];                
            vInfo[vCarID][vTrunkSlots][3] = vTrunk[3];                  
            vInfo[vCarID][vTrunkSlots][4] = vTrunk[4];                  
               
            vInfo[vCarID][vTrunkAmmo][0] = vAmmo[0];
            vInfo[vCarID][vTrunkAmmo][1] = vAmmo[1];
            vInfo[vCarID][vTrunkAmmo][2] = vAmmo[2];
            vInfo[vCarID][vTrunkAmmo][3] = vAmmo[3];
            vInfo[vCarID][vTrunkAmmo][4] = vAmmo[4];
               
            vMods[vCarID][0] = vModsToLoad[0];                     
            vMods[vCarID][1] = vModsToLoad[1];                     
            vMods[vCarID][2] = vModsToLoad[2];                 
            vMods[vCarID][3] = vModsToLoad[3];                 
            vMods[vCarID][4] = vModsToLoad[4];                     
            vMods[vCarID][5] = vModsToLoad[5];                 
            vMods[vCarID][6] = vModsToLoad[6];                 
            vMods[vCarID][7] = vModsToLoad[7];                     
            vMods[vCarID][8] = vModsToLoad[8];                     
            vMods[vCarID][9] = vModsToLoad[9];                 
            vMods[vCarID][10] = vModsToLoad[10];
            vMods[vCarID][11] = vModsToLoad[11];

               
            SetVehicleNumberPlate(vCarID, vInfo[vCarID][vPlate]);
            ChangeVehiclePaintjob(vCarID, vInfo[vCarID][vPaintJ]);
            SetVehicleHealth(vCarID, vInfo[vCarID][vEngine]);
            new engine, lights, alarm, doors, bonnet, boot, objective;
            GetVehicleParamsEx(vCarID, engine, lights, alarm, doors, bonnet, boot, objective);
            SetVehicleParamsEx(vCarID, 0, lights, alarm, doors, bonnet, boot, 0);
               
               
            for(new iMod = 0; iMod < MAX_VEH_MODS; ++iMod)
            {
                if(vMods[vCarID][iMod] > 0)
                {
                    AddVehicleComponent(vCarID, vMods[vCarID][iMod]);
                }
            }  
            ++ Total_Veh_Created;
        }
    }
   
    mysql_free_result();
    printf("** A total of: \"%i\" vehicle(s) were loaded!", Total_Veh_Created);

   
    return Total_Veh_Created;
   
   
}
Anyone know? I've exhausted all my thoughts on it.


Thanks!


Re: SQL Vehicles Problem - jamesb93 - 05.07.2012

This is how I commented it;
pawn Код:
stock LoadPVehicles()
{
   
    new
        Query[1024],
        vModel2,
        vC[2],
        vPrice2,
        vOwner2[MAX_PLAYER_NAME],
        Float:Pos[4],
        vID,
        PlateNum[32],
        vPaint_Job,
        vModsToLoad[12],
        vLock,
        vTrunk[5],
        vAmmo[5],
        faction,
        job,
        damage,
        vengine,
        fuel;
   
    mysql_query("SELECT * FROM `privateveh` WHERE `vID` < "#MAX_BUYABLE_VEH" ORDER BY vID");
    mysql_store_result();
    print("Selecting from database");
   
    if(mysql_num_rows() > 0)
    {
        print("Rows are > 0");
        while(mysql_fetch_row(Query))
        {
            print("While loop starts");
           
            sscanf(Query, "p<|>iiiiis[24]ffffs[32]iiiiiiiiiiiiiiiiiiiiiiiiiiiii",
            vID, vModel2, vC[0], vC[1], vPrice2, vOwner2, Pos[0], Pos[1], Pos[2], Pos[3], PlateNum, vPaint_Job,
            vModsToLoad[0], vModsToLoad[1], vModsToLoad[2], vModsToLoad[3], vModsToLoad[4], vModsToLoad[5],
            vModsToLoad[6], vModsToLoad[7], vModsToLoad[8], vModsToLoad[9], vModsToLoad[10], vModsToLoad[11], vLock, faction, job, damage, vengine, fuel,vTrunk[0], vTrunk[1], vTrunk[2], vTrunk[3], vTrunk[4], vAmmo[0], vAmmo[1], vAmmo[2], vAmmo[3], vAmmo[4]);
            print("SSCANF string");
               
            new vCarID = CreateVehicle(vModel2, vInfo[vID][vPosX],vInfo[vID][vPosY], vInfo[vID][vPosZ], vInfo[vID][vPosA], vInfo[vID][vColor1],vInfo[vID][vColor2], -1);
            print("Vehicle Created ");
           
            new str[20];
            format(str, sizeof(str), "VID: %d", vID);
            printf(str);
            vInfo[vCarID][vSQLID] = vID;
   
            vInfo[vCarID][vModel] = vModel2;                       
            vInfo[vCarID][vColor1] = vC[0];                        
            vInfo[vCarID][vColor2] = vC[1];                        
            vInfo[vCarID][vPrice] = vPrice2;                           
            strmid(vInfo[vCarID][vOwner], vOwner2, 0, 24, 24);     
            vInfo[vCarID][vPosX] = Pos[0];                     
            vInfo[vCarID][vPosY] = Pos[1];                         
            vInfo[vCarID][vPosZ] = Pos[2];                         
            vInfo[vCarID][vPosA] = Pos[3];                         
            strmid(vInfo[vCarID][vPlate], PlateNum, 0, 32, 32);        
            vInfo[vCarID][vPaintJ] = vPaint_Job;                       
            vInfo[vCarID][vLocked] = vLock;                            
            vInfo[vCarID][vFaction] = faction;                     
            vInfo[vCarID][vJob] = job;                             
            vInfo[vCarID][vDamage] = damage;                       
            vInfo[vCarID][vEngine] = vengine;                          
            vInfo[vCarID][vFuel] = fuel;    
               
               
               
            vInfo[vCarID][vTrunkSlots][0] = vTrunk[0];
            vInfo[vCarID][vTrunkSlots][1] = vTrunk[1];                
            vInfo[vCarID][vTrunkSlots][2] = vTrunk[2];                
            vInfo[vCarID][vTrunkSlots][3] = vTrunk[3];                  
            vInfo[vCarID][vTrunkSlots][4] = vTrunk[4];                  
               
            vInfo[vCarID][vTrunkAmmo][0] = vAmmo[0];
            vInfo[vCarID][vTrunkAmmo][1] = vAmmo[1];
            vInfo[vCarID][vTrunkAmmo][2] = vAmmo[2];
            vInfo[vCarID][vTrunkAmmo][3] = vAmmo[3];
            vInfo[vCarID][vTrunkAmmo][4] = vAmmo[4];
               
            vMods[vCarID][0] = vModsToLoad[0];                     
            vMods[vCarID][1] = vModsToLoad[1];                     
            vMods[vCarID][2] = vModsToLoad[2];                 
            vMods[vCarID][3] = vModsToLoad[3];                 
            vMods[vCarID][4] = vModsToLoad[4];                     
            vMods[vCarID][5] = vModsToLoad[5];                 
            vMods[vCarID][6] = vModsToLoad[6];                 
            vMods[vCarID][7] = vModsToLoad[7];                     
            vMods[vCarID][8] = vModsToLoad[8];                     
            vMods[vCarID][9] = vModsToLoad[9];                 
            vMods[vCarID][10] = vModsToLoad[10];
            vMods[vCarID][11] = vModsToLoad[11];
            print("Setting array vars");
               
            SetVehicleNumberPlate(vCarID, vInfo[vCarID][vPlate]);
            ChangeVehiclePaintjob(vCarID, vInfo[vCarID][vPaintJ]);
            SetVehicleHealth(vCarID, vInfo[vCarID][vEngine]);
            new engine, lights, alarm, doors, bonnet, boot, objective;
            GetVehicleParamsEx(vCarID, engine, lights, alarm, doors, bonnet, boot, objective);
            SetVehicleParamsEx(vCarID, 0, lights, alarm, doors, bonnet, boot, 0);
            print("Misc functions");
               
            for(new iMod = 0; iMod < MAX_VEH_MODS; ++iMod)
            {
                if(vMods[vCarID][iMod] > 0)
                {
                    AddVehicleComponent(vCarID, vMods[vCarID][iMod]);
                }
            }  
            print("Mods");
            ++ Total_Veh_Created;
        }
    }
   
    mysql_free_result();
    print("Free Result");
    printf("** A total of: \"%i\" vehicle(s) were loaded!", Total_Veh_Created);

   
    return Total_Veh_Created;
   
   
}
This is the last 2 results to be loaded:
Код:
[01:15:57] While loop starts
[01:15:57] SSCANF string
[01:15:57] Vehicle Created 
[01:15:57] VID: 116
[01:15:57] Setting array vars
[01:15:57] Misc functions
[01:15:57] Mods
[01:15:57] While loop starts
[01:15:57] SSCANF string
[01:15:57] Vehicle Created 
[01:15:57] VID: 117
It ends on 117 even if I remove it from the database.
Anyone have any thoughts?


Re: SQL Vehicles Problem - FUNExtreme - 05.07.2012

Print the vcarid variable. I want to know how much it is when you create number 117


Re: SQL Vehicles Problem - FUNExtreme - 05.07.2012

Quote:
Originally Posted by FUNExtreme
Посмотреть сообщение
Print the vcarid variable. I want to know how much it is when you create number 117
Please do this


Re: SQL Vehicles Problem - FUNExtreme - 05.07.2012

I think something is wrong with the variables from Id 117 in your database.. Print them all, lot of work but we need it to fix this

Edit: try printing mysql_num_rows first, how much does it return?


Re: SQL Vehicles Problem - jamesb93 - 05.07.2012

Quote:
Originally Posted by FUNExtreme
Посмотреть сообщение
I think something is wrong with the variables from Id 117 in your database.. Print them all, lot of work but we need it to fix this

Edit: try printing mysql_num_rows first, how much does it return?
Appears that it never even gets to the variables. http://pastebin.com/wnrb6HkC

has to be since the car is that ridiculous number.

http://pastebin.com/wnrb6HkC - Full sql dump too if that helps.


Re: SQL Vehicles Problem - FUNExtreme - 05.07.2012

Both links are the same.. I'd like to see the dump too


Re: SQL Vehicles Problem - jamesb93 - 05.07.2012

Quote:
Originally Posted by FUNExtreme
Посмотреть сообщение
Both links are the same.. I'd like to see the dump too
My bad, here it is. http://pastebin.com/Fznm1uUU


Re: SQL Vehicles Problem - FUNExtreme - 05.07.2012

If the code provided by xentiarox only skips 117 then something is wrong in the db, but I can't find what.. It will probably skip 117 to 200.. Do you have any other vehicles in the gamemode? By any chance 1884 other vehicles?


Re: SQL Vehicles Problem - jamesb93 - 05.07.2012

Quote:
Originally Posted by FUNExtreme
Посмотреть сообщение
If the code provided by xentiarox only skips 117 then something is wrong in the db, but I can't find what.. It will probably skip 117 to 200.. Do you have any other vehicles in the gamemode? By any chance 1884 other vehicles?
Yeh it only skips 117, The script has no other vehicles.

Would also appear now that the vehicles do not get placed on the right coord.