#define THREAD_LOAD_CARSOWNED #define MAX_DYNAMIC_CARS 1500
enum carData {
carID,
carExists,
carModel,
carOwner,
Float:carPos[4],
carColor1,
carColor2,
carPaintjob,
carLocked,
carMods[14],
carImpounded,
carImpoundPrice,
carWeapons[5],
carAmmo[5],
carVehicle
};
new CarData[MAX_DYNAMIC_CARS][carData];
format(query, sizeof(query), "SELECT * FROM `carsowned` WHERE `carOwner` = '%d'", PlayerData[extraid][pID]); mysql_tquery(g_iHandle, query, "OnQueryFinished", "dd", extraid, THREAD_LOAD_CARSOWNED);
forward OnQueryFinished(extraid, threadid);
public OnQueryFinished(extraid, threadid)
{
if (!IsPlayerConnected(extraid))
return 0;
static
rows,
fields
;
switch (threadid)
{
case THREAD_LOAD_CARSOWNED:
{
static
str[128];
cache_get_data(rows, fields, g_iHandle);
for (new i = 0; i < rows; i ++) if (i < MAX_DYNAMIC_CARS)
{
CarData[i][carExists] = true;
CarData[i][carID] = cache_get_field_int(i, "carID");
CarData[i][carModel] = cache_get_field_int(i, "carModel");
CarData[i][carOwner] = cache_get_field_int(i, "carOwner");
CarData[i][carPos][0] = cache_get_field_float(i, "carPosX");
CarData[i][carPos][1] = cache_get_field_float(i, "carPosY");
CarData[i][carPos][2] = cache_get_field_float(i, "carPosZ");
CarData[i][carPos][3] = cache_get_field_float(i, "carPosR");
CarData[i][carColor1] = cache_get_field_int(i, "carColor1");
CarData[i][carColor2] = cache_get_field_int(i, "carColor2");
CarData[i][carPaintjob] = cache_get_field_int(i, "carPaintjob");
CarData[i][carLocked] = cache_get_field_int(i, "carLocked");
CarData[i][carImpounded] = cache_get_field_int(i, "carImpounded");
CarData[i][carImpoundPrice] = cache_get_field_int(i, "carImpoundPrice");
for (new j = 0; j < 14; j ++)
{
if (j < 5)
{
format(str, sizeof(str), "carWeapon%d", j + 1);
CarData[i][carWeapons][j] = cache_get_field_int(i, str);
format(str, sizeof(str), "carAmmo%d", j + 1);
CarData[i][carAmmo][j] = cache_get_field_int(i, str);
}
format(str, sizeof(str), "carMod%d", j + 1);
CarData[i][carMods][j] = cache_get_field_int(i, str);
}
CarOwnSpawn(i);
}
for (new i = 0; i < MAX_DYNAMIC_CARS; i ++) if (CarData[i][carExists]) {
format(str, sizeof(str), "SELECT * FROM `carstorage` WHERE `ID` = '%d'", CarData[i][carID]);
mysql_tquery(g_iHandle, str, "OnLoadCarStorage", "d", i);
}
}
}
}
stock CarOwnSpawn(carid)
{
if (carid != -1 && CarData[carid][carExists])
{
CarData[carid][carVehicle] = CreateVehicle(CarData[carid][carModel], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2], CarData[carid][carPos][3], CarData[carid][carColor1], CarData[carid][carColor2], -1);
if (CarData[carid][carVehicle] != INVALID_VEHICLE_ID)
{
if (CarData[carid][carPaintjob] != -1)
{
ChangeVehiclePaintjob(CarData[carid][carVehicle], CarData[carid][carPaintjob]);
}
if (CarData[carid][carLocked])
{
new
engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(CarData[carid][carVehicle], engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(CarData[carid][carVehicle], engine, lights, alarm, 1, bonnet, boot, objective);
}
for (new i = 0; i < 14; i ++)
{
if (CarData[carid][carMods][i]) AddVehicleComponent(CarData[carid][carVehicle], CarData[carid][carMods][i]);
}
ResetVehicle(CarData[carid][carVehicle]);
return 1;
}
}
return 0;
}
for (new i = 0; i < rows; i ++) if (i < MAX_DYNAMIC_CARS && !CarData[i][carExists])
|
Because in "OnQueryFinished" callback you don't check if "i" already used on another vehicle.
Try this code : Код:
for (new i = 0; i < rows; i ++) if (i < MAX_DYNAMIC_CARS && !CarData[i][carExists]) |