CMD:vget(playerid, params[])
{
new carid;
if (sscanf(params, "d", carid))
return SendSyntaxMessage(playerid, "/vget [vehicle id]");
if ((carid != -1))
{
for (new i = 0; i < MAX_DYNAMIC_CARS; i ++)
{
if(CarData[i][carID] == carid && CarData[i][carOwner] == PlayerData[playerid][pID] && CarData[i][carExists] == 1)
{
Car_Spawn(i);
currentCarID[playerid] = carid;
SendServerMessage(playerid, "You have successfully spawned your %s.", ReturnVehicleModelName(CarData[i][carModel]));
break;
}
}
}
return 1;
}
CMD:park(playerid, params[])
{
new
carid = GetPlayerVehicleID(playerid);
if (!carid)
return SendErrorMessage(playerid, "You must be inside your vehicle.");
if (IsVehicleImpounded(carid))
return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it.");
if ((carid = Car_GetID(carid)) != -1 && Car_IsOwner(playerid, carid))
{
if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
return SendErrorMessage(playerid, "You must be the driver!");
static
g_arrSeatData[10] = {INVALID_PLAYER_ID, ...},
g_arrDamage[4],
Float:health,
seatid;
for (new i = 0; i < 14; i ++) {
CarData[carid][carMods][i] = GetVehicleComponentInSlot(CarData[carid][carVehicle], i);
}
GetVehicleDamageStatus(CarData[carid][carVehicle], g_arrDamage[0], g_arrDamage[1], g_arrDamage[2], g_arrDamage[3]);
GetVehicleHealth(CarData[carid][carVehicle], health);
foreach (new i : Player) if (IsPlayerInVehicle(i, CarData[carid][carVehicle])) {
seatid = GetPlayerVehicleSeat(i);
g_arrSeatData[seatid] = i;
}
GetVehiclePos(CarData[carid][carVehicle], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2]);
GetVehicleZAngle(CarData[carid][carVehicle], CarData[carid][carPos][3]);
for (new i = 0; i < MAX_DYNAMIC_CARS; i ++)
{
if(CarData[i][carID] == currentCarID[playerid] && CarData[i][carOwner] == PlayerData[playerid][pID] && CarData[i][carExists] == 1)
{
Car_Spawn(i);
Car_Save(i);
DestroyVehicle(CarData[i][carVehicle]);
currentCarID[playerid] = 0;
SendServerMessage(playerid, "You have successfully parked your %s.", ReturnVehicleModelName(CarData[i][carModel]));
break;
}
}
}
else SendErrorMessage(playerid, "You are not inside anything you can park.");
return 1;
}
stock Car_Spawn(carid)
{
if (carid != -1 && CarData[carid][carExists])
{
if (IsValidVehicle(CarData[carid][carVehicle]))
DestroyVehicle(CarData[carid][carVehicle]);
if (CarData[carid][carColor1] == -1)
CarData[carid][carColor1] = random(127);
if (CarData[carid][carColor2] == -1)
CarData[carid][carColor2] = random(127);
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], (CarData[carid][carOwner] != 0) ? (-1) : (1200000));
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;
}
Car_Save(carid)
{
static
query[900];
if (CarData[carid][carVehicle] != INVALID_VEHICLE_ID)
{
for (new i = 0; i < 14; i ++) {
CarData[carid][carMods][i] = GetVehicleComponentInSlot(CarData[carid][carVehicle], i);
}
}
format(query, sizeof(query), "UPDATE `cars` SET `carModel` = '%d', `carOwner` = '%d', `carPosX` = '%.4f', `carPosY` = '%.4f', `carPosZ` = '%.4f', `carPosR` = '%.4f', `carColor1` = '%d', `carColor2` = '%d', `carPaintjob` = '%d', `carLocked` = '%d'",
CarData[carid][carModel],
CarData[carid][carOwner],
CarData[carid][carPos][0],
CarData[carid][carPos][1],
CarData[carid][carPos][2],
CarData[carid][carPos][3],
CarData[carid][carColor1],
CarData[carid][carColor2],
CarData[carid][carPaintjob],
CarData[carid][carLocked]
);
format(query, sizeof(query), "%s, `carMod1` = '%d', `carMod2` = '%d', `carMod3` = '%d', `carMod4` = '%d', `carMod5` = '%d', `carMod6` = '%d', `carMod7` = '%d', `carMod8` = '%d', `carMod9` = '%d', `carMod10` = '%d', `carMod11` = '%d', `carMod12` = '%d', `carMod13` = '%d', `carMod14` = '%d'",
query,
CarData[carid][carMods][0],
CarData[carid][carMods][1],
CarData[carid][carMods][2],
CarData[carid][carMods][3],
CarData[carid][carMods][4],
CarData[carid][carMods][5],
CarData[carid][carMods][6],
CarData[carid][carMods][7],
CarData[carid][carMods][8],
CarData[carid][carMods][9],
CarData[carid][carMods][10],
CarData[carid][carMods][11],
CarData[carid][carMods][12],
CarData[carid][carMods][13]
);
format(query, sizeof(query), "%s, `carImpounded` = '%d', `carImpoundPrice` = '%d', `carFaction` = '%d', `carWeapon1` = '%d', `carWeapon2` = '%d', `carWeapon3` = '%d', `carWeapon4` = '%d', `carWeapon5` = '%d', `carAmmo1` = '%d', `carAmmo2` = '%d', `carAmmo3` = '%d', `carAmmo4` = '%d', `carAmmo5` = '%d' WHERE `carID` = '%d'",
query,
CarData[carid][carImpounded],
CarData[carid][carImpoundPrice],
CarData[carid][carFaction],
CarData[carid][carWeapons][0],
CarData[carid][carWeapons][1],
CarData[carid][carWeapons][2],
CarData[carid][carWeapons][3],
CarData[carid][carWeapons][4],
CarData[carid][carAmmo][0],
CarData[carid][carAmmo][1],
CarData[carid][carAmmo][2],
CarData[carid][carAmmo][3],
CarData[carid][carAmmo][4],
CarData[carid][carID]
);
return mysql_tquery(g_iHandle, query);
}
stock ResetVehicle(vehicleid)
{
if (1 <= vehicleid <= MAX_VEHICLES)
{
if (CoreVehicles[vehicleid][vehSirenOn] && IsValidDynamicObject(CoreVehicles[vehicleid][vehSirenObject]))
DestroyDynamicObject(CoreVehicles[vehicleid][vehSirenObject]);
CoreVehicles[vehicleid][vehFuel] = 100;
CoreVehicles[vehicleid][vehWindowsDown] = false;
CoreVehicles[vehicleid][vehTemporary] = 0;
CoreVehicles[vehicleid][vehLoads] = 0;
CoreVehicles[vehicleid][vehLoadType] = 0;
CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID;
CoreVehicles[vehicleid][vehTrash] = 0;
CoreVehicles[vehicleid][vehRepairing] = 0;
CoreVehicles[vehicleid][vehSirenOn] = 0;
CoreVehicles[vehicleid][vehRadio] = 0;
}
return 1;
}
format(query,*sizeof(query),*"UPDATE*`cars`*SET*`carModel`*=*'%d',*`carOwner`*=*'%d',*`carPosX`*=*'%.4f',*`carPosY`*=*'%.4f',*`carPosZ`*=*'%.4f',*`carPosR`*=*'%.4f',*`carColor1`*=*'%d',*`carColor2`*=*'%d',*`carPaintjob`*=*'%d',*`carLocked`*=*'%d'",
********CarData[carid][carModel],
********CarData[carid][carOwner],
********CarData[carid][carPos][0],
********CarData[carid][carPos][1],
********CarData[carid][carPos][2],
********CarData[carid][carPos][3],
********CarData[carid][carColor1],
********CarData[carid][carColor2],
********CarData[carid][carPaintjob],
********CarData[carid][carLocked]
****);
format(query, sizeof(query), "UPDATE `cars` SET ... WHERE `id` = %i" ...);
Not sure what ResetVehicle function does, so it may be a mix up in there.
But I think the issue lies in your queries pawn Код:
pawn Код:
|
WHERE `carID` = '%d'"
stock ResetVehicle(vehicleid)
{
if (1 <= vehicleid <= MAX_VEHICLES)
{
if (CoreVehicles[vehicleid][vehSirenOn] && IsValidDynamicObject(CoreVehicles[vehicleid][vehSirenObject]))
DestroyDynamicObject(CoreVehicles[vehicleid][vehSirenObject]);
CoreVehicles[vehicleid][vehFuel] = 100;
CoreVehicles[vehicleid][vehWindowsDown] = false;
CoreVehicles[vehicleid][vehTemporary] = 0;
CoreVehicles[vehicleid][vehLoads] = 0;
CoreVehicles[vehicleid][vehLoadType] = 0;
CoreVehicles[vehicleid][vehCrate] = INVALID_OBJECT_ID;
CoreVehicles[vehicleid][vehTrash] = 0;
CoreVehicles[vehicleid][vehRepairing] = 0;
CoreVehicles[vehicleid][vehSirenOn] = 0;
CoreVehicles[vehicleid][vehRadio] = 0;
}
return 1;
}
Okay. Just to clarify you are updating CarData[carid][carID] when the player loads a different vehicle from the database? Because your query for updating the data is dependent on that row. If it doesn't update between vehicles it will edit only the first one.
|
for*(new*i*=*0;*i*<*MAX_DYNAMIC_CARS;*i*++)
********{
************if(CarData[i][carID]*==*currentCarID[playerid]*&&*CarData[i][carOwner]*==*PlayerData[playerid][pID]*&&*CarData[i][carExists]*==*1)
************{
****************Car_Spawn(i);
****************Car_Save(i);
****************DestroyVehicle(CarData[i][carVehicle]);
****************currentCarID[playerid]*=*0;
****************SendServerMessage(playerid,*"You*have*successfully*parked*your*%s.",*ReturnVehicleModelName(CarData[i][carModel]));
****************break;
************}
********}
if*((carid*=*Car_GetID(carid))*!=*-1*&&*Car_IsOwner(playerid,*carid))
CarInfo[carid][carID] = Unique database ID CarInfo[100][carID] = 100 currentCarID[playerid] = 100
I see how you have it working now. I've spent a few minutes looking over it.
Did you intend to call Car_Spawn() inside of the /park command before saving it? If that isn't the issue then I cannot seem to find it either. There is something I think I should point out though pawn Код:
pawn Код:
Код:
CarInfo[carid][carID] = Unique database ID CarInfo[100][carID] = 100 currentCarID[playerid] = 100 |
CMD:park(playerid, params[])
{
new
carid = GetPlayerVehicleID(playerid);
if (!carid)
return SendErrorMessage(playerid, "You must be inside your vehicle.");
if (IsVehicleImpounded(carid))
return SendErrorMessage(playerid, "This vehicle is impounded and you can't use it.");
if ((carid = Car_GetID(carid)) != -1 && Car_IsOwner(playerid, carid))
{
if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
return SendErrorMessage(playerid, "You must be the driver!");
static
g_arrSeatData[10] = {INVALID_PLAYER_ID, ...},
g_arrDamage[4],
Float:health,
seatid;
for (new i = 0; i < 14; i ++) {
CarData[carid][carMods][i] = GetVehicleComponentInSlot(CarData[carid][carVehicle], i);
}
GetVehicleDamageStatus(CarData[carid][carVehicle], g_arrDamage[0], g_arrDamage[1], g_arrDamage[2], g_arrDamage[3]);
GetVehicleHealth(CarData[carid][carVehicle], health);
foreach (new i : Player) if (IsPlayerInVehicle(i, CarData[carid][carVehicle])) {
seatid = GetPlayerVehicleSeat(i);
g_arrSeatData[seatid] = i;
}
GetVehiclePos(CarData[carid][carVehicle], CarData[carid][carPos][0], CarData[carid][carPos][1], CarData[carid][carPos][2]);
GetVehicleZAngle(CarData[carid][carVehicle], CarData[carid][carPos][3]);
Car_Spawn(carid);
Car_Save(carid);
DestroyVehicle(CarData[carid][carVehicle]);
currentCarID[playerid] = 0;
SendServerMessage(playerid, "You have successfully parked your %s.", ReturnVehicleModelName(CarData[carid][carModel]));
}
else SendErrorMessage(playerid, "You are not inside anything you can park.");
return 1;
}