SA-MP Forums Archive
[HELP] Loading Vehicles - 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)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: [HELP] Loading Vehicles (/showthread.php?tid=170822)



[HELP] Loading Vehicles - Maxips2 - 24.08.2010

Okay so, I'm working on a vehicle ownership system, and I got an issue with loading the vehicles.
Each vehicle has a file (VehX)
X is a number (if you format it, its Veh%d) I hope you get it..

Anyway, its a dynamic system, which means I can add & edit them in game by simple commands.
Lets say I got files, Veh1, Veh2, Veh3, Veh4
If I load them, its all good and works properly.
But if I would delete Veh2 and Veh3, then Veh1 loads properly, but not Veh4
If I add a vehicle (Not a file, just a vehicle) then it reads Veh4.. And thats the problem.. kinda

Thats how it works:
pawn Код:
public LoadVehicles()
{
    new file[128];
    for(new v = 1; v < MAX_VEHICLES; v++)
    {
        format(file, 128, "LVRP/Vehicles/Veh%d.ini", v);
        if(dini_Exists(file))
        {
            VehicleInfo[v][vID] = dini_Int(file, "ID");
            VehicleInfo[v][vSpawnx] = dini_Float(file, "Spawn_X");
            VehicleInfo[v][vSpawny] = dini_Float(file, "Spawn_Y");
            VehicleInfo[v][vSpawnz] = dini_Float(file, "Spawn_Z");
            VehicleInfo[v][vColor1] = dini_Int(file, "Color1");
            VehicleInfo[v][vColor2] = dini_Int(file, "Color2");
            VehicleInfo[v][vRotation] = dini_Float(file, "Rotation");
            VehicleInfo[v][vModel] = dini_Int(file, "Model");
            VehicleInfo[v][vAlarm] = dini_Int(file, "Alarm");
            VehicleInfo[v][vLock] = dini_Int(file, "Lock");
            VehicleInfo[v][vOwned] = dini_Int(file, "Owned");
            VehicleInfo[v][vInsurance] = dini_Int(file, "Insurance");
            VehicleInfo[v][vPrice] = dini_Int(file, "Price");
            VehicleInfo[v][vForSale] = dini_Int(file, "ForSale");
            VehicleInfo[v][vParkable] = dini_Int(file, "Parkable");
            VehicleInfo[v][vFuel] = dini_Int(file, "Fuel");
            VehicleInfo[v][vJob] = dini_Int(file, "Job");
            VehicleInfo[v][vCiv] = dini_Int(file, "Civ");
            VehicleInfo[v][vDTest] = dini_Int(file, "Test");
            VehicleInfo[v][vFaction] = dini_Int(file, "Faction");
            VehicleInfo[v][vWorld] = dini_Int(file, "World");
            VehicleInfo[v][vInterior] = dini_Int(file, "Interior");
            format(VehicleInfo[v][vOwner], MAX_PLAYER_NAME, "%s", dini_Get(file, "Owner"));
            format(VehicleInfo[v][vName], 128, "%s", dini_Get(file, "Name"));
            VehicleInfo[v][vTrade] = dini_Int(file, "Trade");
            VehicleInfo[v][vLocked] = dini_Int(file, "Locked");
            VehicleInfo[v][vDamage][0] = dini_Int(file, "Panels"), VehicleInfo[v][vDamage][1] = dini_Int(file, "Doors"), VehicleInfo[v][vDamage][2] = dini_Int(file, "Lights"), VehicleInfo[v][vDamage][3] = dini_Int(file, "Tires");
            //VehicleInfo[v][vID] = CreateVehicle(VehicleInfo[v][vModel], VehicleInfo[v][vSpawnx], VehicleInfo[v][vSpawny], VehicleInfo[v][vSpawnz],VehicleInfo[v][vRotation] , VehicleInfo[v][vColor1], VehicleInfo[v][vColor2],9999999999999);
            VehicleInfo[v][vID] = AddNewVehicle(VehicleInfo[v][vModel], VehicleInfo[v][vSpawnx], VehicleInfo[v][vSpawny], VehicleInfo[v][vSpawnz], VehicleInfo[v][vRotation] , VehicleInfo[v][vColor1], VehicleInfo[v][vColor2], VehicleInfo[v][vFaction], VehicleInfo[v][vJob]);
            SetVehicleVirtualWorld(v, VehicleInfo[v][vWorld]);
            SetVehicleInterior(v, VehicleInfo[v][vInterior]);
            SetVehicleToRespawn(v);
            UpdateVehicleDamageStatus(v, VehicleInfo[v][vDamage][0], VehicleInfo[v][vDamage][1], VehicleInfo[v][vDamage][2], VehicleInfo[v][vDamage][3]);
            VehicleInfo[v][vHealth] = dini_Float(file, "Health");
            SetVehicleHealth(v, VehicleInfo[v][vHealth]);
            if(VehicleInfo[v][vLocked])
            {
                LockCar(v);
            }
            else
            {
                UnlockCar(v);
            }
        }
    }
    return 1;
}



Re: [HELP] Loading Vehicles - Hiddos - 24.08.2010

Hmm, did you tried something like:

pawn Код:
if(dini_Exists(file))
{
  //Code
}
else continue;



Re: [HELP] Loading Vehicles - Maxips2 - 24.08.2010

I just did, Its still the same :/


Re: [HELP] Loading Vehicles - vection - 24.08.2010

where the delete part?


Re: [HELP] Loading Vehicles - Maxips2 - 24.08.2010

What do you mean?


Re: [HELP] Loading Vehicles - playbox12 - 24.08.2010

The code to delete the car is what he means, that will probaly be good. But its good to check it out anyways.

What probaly happens is that when you delete a vehicle, it tries to load it. As its deleted it can't load it thats why it would PROBALY terminate the vehicle loading, and give an error that the log won't show you. I have no idea how to fix it though, lack of experience with Dini.


Re: [HELP] Loading Vehicles - Conroy - 24.08.2010

YSF plugin needed.

pawn Код:
stock ReturnNextVehicleFileName()
{
    new filename[40], filepath[40], i, filenumber[40], lastint = 0000;
    while(ffind("LVRP/Vehicles/*", filename, 64, i)) {
        strmid(filenumber, filename, 3, 7);
        lastint = strval(filenumber)+1;
        format(filepath, sizeof(filepath), "LVRP/Vehicles/Veh%04d.ini", lastint);
        if(!dini_Exists(filepath)) return lastint;
    }
    return lastint;
}
And to read:

pawn Код:
new filename[40], i, filepath[128];
while(ffind("LVRP/Vehicles/*", filename, 64, i))
{
    format(filepath, sizeof(filepath), "LVRP/Vehicles/Veh%04d.ini", lastint);
    // This will loop through all the .INI files in the 'Vehicles' folder, use filepath for each vehicle starting from 0000 upwards.
    return lastint;
}
-Conroy


Re: [HELP] Loading Vehicles - Maxips2 - 24.08.2010

error 017: undefined symbol "ffind"
error 017: undefined symbol "lastint"
error 017: undefined symbol "lastint"


Re: [HELP] Loading Vehicles - Conroy - 24.08.2010

Quote:
Originally Posted by Conroy
Посмотреть сообщение
YSF plugin needed.
https://sampforum.blast.hk/showthread.php?tid=113485

And to read (fixed):

pawn Код:
new filename[40], i, filepath[128];
while(ffind("LVRP/Vehicles/*", filename, 64, i))
{
    format(filepath, sizeof(filepath), "LVRP/Vehicles/%s", filename);
    // This will loop through all the .INI files in the 'Vehicles' folder, use filepath for each vehicle starting from 0000 upwards.
}
-Conroy


Re: [HELP] Loading Vehicles - Maxips2 - 24.08.2010

Is it for linux? I'm not using linux :X