SQL Vehicles Problem
#1

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!
Reply
#2

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?
Reply
#3

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

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
Reply
#5

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?
Reply
#6

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.
Reply
#7

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

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
Reply
#9

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?
Reply
#10

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)