22.05.2014, 18:39
Well I have my vehicle system and it's dynamic. When I load vehicles in, it loops and searches for everything it needs to - if a vehicle is in a garage. It wont create. So through variables I have created this.. but my problem is if I use GetPlayerVehicleID on a vehicle that has a higher ID than a vehicle inside a garage it fucks the whole ID up. It's really hard to explain, atleast for me. So, I was wondering is there a way I can collect the ID of a vehicle a different way?
Current structure:
I have tryed this:
but with this way I would have to find the ID of the car then break;
Then:
But, this only works when there are 0 vehicles in a garage.
Summary: When I GetPlayerVehicleID(playerid); it works, but it grabs a whole other ID.
Sorry, for confusion - I have confused myself.
Current structure:
pawn Код:
#define MAX_VEHICLES 2000
enum iVehicle
{
iD,
owner,
InGarage,
}
new Vehicle[MAX_VEHICLES][iVehicle];
pawn Код:
stock GetDeletedVehicles()
{
new count;
VehLoop(v)
{
if(Vehicle[v][vActive] != 1) continue;
if(Vehicle[v][InGarage] != 0) count++;
}
return count;
}
Then:
pawn Код:
new vehicleid = GetPlayerVehicleID(playerid);
vehicleid += GetDeletedVehicles();
pawn Код:
stock ReloadVehicle(v)
{
format(SmllStr, sizeof(SmllStr), "Vehicles/vID-%d.ini", v);
Vehicle[v][vID] = dini_Int(SmllStr, "vID");
Vehicle[v][vehX] = dini_Float(SmllStr, "vehX");
Vehicle[v][vehY] = dini_Float(SmllStr, "vehY");
Vehicle[v][vehZ] = dini_Float(SmllStr, "vehZ");
Vehicle[v][vehA] = dini_Float(SmllStr, "vehA");
Vehicle[v][int] = dini_Int(SmllStr, "vehINT");
Vehicle[v][vw] = dini_Int(SmllStr, "vehVW");
myStrcpy(Vehicle[v][owner], dini_Get(SmllStr, "owner"));
myStrcpy(Vehicle[v][dupekey], dini_Get(SmllStr, "dupekey"));
myStrcpy(Vehicle[v][vPlate], dini_Get(SmllStr, "Plate"));
Vehicle[v][InGarage] = dini_Int(SmllStr, "Garage");
Vehicle[v][FactionID] = dini_Int(SmllStr, "FactionID");
Vehicle[v][model] = dini_Int(SmllStr, "model");
Vehicle[v][colour1] = dini_Int(SmllStr, "colour1");
Vehicle[v][colour2] = dini_Int(SmllStr, "colour2");
Vehicle[v][paintjob] = dini_Int(SmllStr, "paintjob");
Vehicle[v][type] = dini_Int(SmllStr, "type");
if(Vehicle[v][InGarage] == 0)
{
Vehicle[v][pModel] = CreateVehicle(Vehicle[v][model], Vehicle[v][vehX], Vehicle[v][vehY], Vehicle[v][vehZ], Vehicle[v][vehA], Vehicle[v][colour1], Vehicle[v][colour2], -1);
SetVehicleVirtualWorld(Vehicle[v][pModel], Vehicle[v][vw]);
SetVehicleNumberPlate(Vehicle[v][pModel], Vehicle[v][vPlate]);
SetVehicleToRespawn(Vehicle[v][pModel]);
}
if(strcmp(Vehicle[v][owner], "None"))
{
SetVehicleEngineOff(v);
}
printf("Vehicle ID: %d - ReloadVehicle(%d)", v, v);
}
Summary: When I GetPlayerVehicleID(playerid); it works, but it grabs a whole other ID.
Sorry, for confusion - I have confused myself.