#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]) |