26.10.2016, 17:26
WHEN THEY LOGIN.
WHEN THEY LOGIN.
OnPlayerDisconnect
For some reason this sometimes creates a duplicate vehicle, but only one of them has the stats loaded into it i.e they can only /engine 1 vehicle.
pawn Код:
if(PlayerSQLID[playerid] != 1)
{
format(string, sizeof(string), "SELECT * FROM vehicles WHERE VehOwner = %d", PlayerSQLID[playerid]);
mysql_tquery(dbHandle, string, "LoadPlayerVehicles", "");
}
pawn Код:
forward LoadPlayerVehicles();
public LoadPlayerVehicles()
{
new rows, fields, string[128];
cache_get_data(rows, fields);
printf("Rows %d", rows); // if the rows are more than the size of the variable, reset the rows to match (to avoid run time error 4)
for(new y; y < rows; y++)
{
new vehicleid = CreateVehicle(411, 0.0, 0.0, 0.0, 0.0, 0, 0 ,-1, 0);
DestroyVehicle(vehicleid);
VehicleSQLID[vehicleid] = cache_get_row_int(y, vvid);
VehModel[vehicleid] = cache_get_row_int(y, vVehModel);
VehColour1[vehicleid] = cache_get_row_int(y, vVehColour1);
VehColour2[vehicleid] = cache_get_row_int(y, vVehColour2);
VehSpawnX[vehicleid] = cache_get_row_float(y, vVehSpawnX);
VehSpawnY[vehicleid] = cache_get_row_float(y, vVehSpawnY);
VehSpawnZ[vehicleid] = cache_get_row_float(y, vVehSpawnZ);
VehSpawnAngle[vehicleid] = cache_get_row_float(y, vVehSpawnAngle);
VehSiren[vehicleid] = cache_get_row_int(y, vVehSiren);
VehOwner[vehicleid] = cache_get_row_int(y, vVehOwner);
VehFuel[vehicleid] = cache_get_row_int(y, vVehFuel);
VehCash[vehicleid] = cache_get_row_int(y,vVehCash);
VehWeed[vehicleid] = cache_get_row_int(y, vVehWeed);
VehCoke[vehicleid] = cache_get_row_int(y, vVehCoke);
VehLock[vehicleid] = cache_get_row_int(y, vVehLock);
VehAlarm[vehicleid] = cache_get_row_int(y, vVehAlarm);
VehOwned[vehicleid] = cache_get_row_int(y, vVehOwned);
VehArmour[vehicleid] = cache_get_row_float(y, vVehArmour);
VehBizID[vehicleid] = cache_get_row_int(y, vVehBizID);
VehForSale[vehicleid] = cache_get_row_int(y, vVehForSale);
VehPrice[vehicleid] = cache_get_row_int(y, vVehPrice);
VehWepSlots[vehicleid] = cache_get_row_int(y, vVehWepSlots);
VehFType[vehicleid] = cache_get_row_int(y, vVehFType);
VehSpark[vehicleid] = cache_get_row_int(y, vVehSpark);
VehWater[vehicleid] = cache_get_row_int(y, vVehWater);
VehGear[vehicleid] = cache_get_row_int(y, vVehGear);
VehElec[vehicleid] = cache_get_row_int(y, vVehElec);
VehOil[vehicleid] = cache_get_row_int(y, vVehOil);
VehExhaust[vehicleid] = cache_get_row_int(y, vVehExhaust);
VehFLine[vehicleid] = cache_get_row_int(y, vVehFLine);
VehRadi[vehicleid] = cache_get_row_int(y, vVehRadi);
VehBattery[vehicleid] = cache_get_row_int(y, vVehBattery);
VehFSize[vehicleid] = cache_get_row_int(y, vVehFSize);
VehTyres[vehicleid] = cache_get_row_int(y, vVehTyres);
VehFUsed[vehicleid] = cache_get_row_int(y, vVehFUsed);
VehVMarker[vehicleid] = cache_get_row_int(y, vVehVMarker);
VehFMarker[vehicleid] = cache_get_row_int(y, vVehFMarker);
VehNMarker[vehicleid] = cache_get_row_int(y, vVehNMarker);
VehHealth[vehicleid] = cache_get_row_float(y, vVehHealth);
SetVehicleHealth(vehicleid, VehHealth[vehicleid]);
VehPanels[vehicleid] = cache_get_row_int(y, vVehPanels);
VehDoors[vehicleid] = cache_get_row_int(y, vVehDoors);
VehLights[vehicleid] = cache_get_row_int(y, vVehLights);
VehFSlots[vehicleid] = cache_get_row_int(y, vVehFSlots);
VehPCP[vehicleid] = cache_get_row_int(y, vVehPCP);
VehLSD[vehicleid] = cache_get_row_int(y, vVehLSD);
VehSteroids[vehicleid] = cache_get_row_int(y, vVehSteroids);
VehHeroin[vehicleid] = cache_get_row_int(y, vVehHeroin);
RepairTime[vehicleid] = cache_get_row_int(y, vRepairTime);
VehExported[vehicleid] = cache_get_row_int(y, vVehExported);
ImpoundTime[vehicleid] = cache_get_row_int(y, vImpoundTime);
VehModSlot[vehicleid][0] = cache_get_row_int(y, vVehModSlot0);
VehModSlot[vehicleid][1] = cache_get_row_int(y, vVehModSlot1);
VehModSlot[vehicleid][2] = cache_get_row_int(y, vVehModSlot2);
VehModSlot[vehicleid][3] = cache_get_row_int(y, vVehModSlot3);
VehModSlot[vehicleid][4] = cache_get_row_int(y, vVehModSlot4);
VehModSlot[vehicleid][5] = cache_get_row_int(y, vVehModSlot5);
VehModSlot[vehicleid][6] = cache_get_row_int(y, vVehModSlot6);
VehModSlot[vehicleid][7] = cache_get_row_int(y, vVehModSlot7);
VehModSlot[vehicleid][8] = cache_get_row_int(y, vVehModSlot8);
VehModSlot[vehicleid][9] = cache_get_row_int(y, vVehModSlot9);
VehModSlot[vehicleid][10] = cache_get_row_int(y, vVehModSlot10);
VehModSlot[vehicleid][11] = cache_get_row_int(y, vVehModSlot11);
VehModSlot[vehicleid][12] = cache_get_row_int(y, vVehModSlot12);
VehModSlot[vehicleid][13] = cache_get_row_int(y, vVehModSlot13);
cache_get_row(y, vVehPlate, VehPlate[vehicleid]);
VRecList[vehicleid] = -1;
VehicleHits[vehicleid] = 0;
VRecList[vehicleid] = -1;
CreateVehicle(VehModel[vehicleid], VehSpawnX[vehicleid], VehSpawnY[vehicleid], VehSpawnZ[vehicleid], VehSpawnAngle[vehicleid], VehColour1[vehicleid], VehColour2[vehicleid], 0, VehSiren[vehicleid]);
SetVehicleNumberPlate(vehicleid, VehPlate[vehicleid]);
DestroyDynamic3DTextLabel(VehicleLabel[vehicleid]);
SetVehicleVirtualWorld(vehicleid, 0);
if(ImpoundTime[vehicleid] > 0 && VehOwner[vehicleid] != 1)
{
SetVehicleVirtualWorld(vehicleid, vehicleid);
}
for(new m = 0; m < 14; m++)
{
if(VehModSlot[vehicleid][m] > 0)
{
printf("m %d", m);
AddVehicleComponent(vehicleid, VehModSlot[vehicleid][m]);
}
}
if(VehOwner[vehicleid] > 0 || VehicleFaction[vehicleid] > 0)
{
SetVehicleParamsEx(vehicleid, 0, 0, 0, 1, 0, 0, 0);
SetVehicleParamsCarDoors(vehicleid, 0,0,0,0);
SetVehicleParamsCarWindows(vehicleid, 1,1, 1, 1);
}
if(VehOwner[vehicleid] > 0)
{
UpdateVehicleDamageStatus(vehicleid, VehPanels[vehicleid], VehDoors[vehicleid], VehLights[vehicleid], VehTyres[vehicleid]);
}
/*
if(VehOwner[vehicleid] > 0)
{
SetVehicleVirtualWorld(vehicleid, vehicleid);
UpdateVehicleDamageStatus(vehicleid, VehPanels[vehicleid], VehDoors[vehicleid], VehLights[vehicleid], VehTyres[vehicleid]);
}
*/
if(VehForSale[vehicleid] == 1)
{
new name = VehModel[vehicleid] - 400;
format(string, sizeof(string), "%s, $%s, %s", VehicleNames[name], AddCommas(VehPrice[vehicleid]), VehPlate[vehicleid]);
VehicleLabel[vehicleid] = CreateDynamic3DTextLabel(string, COLOUR_ORANGE, VehSpawnX[vehicleid],VehSpawnY[vehicleid], VehSpawnZ[vehicleid], 100.0, INVALID_PLAYER_ID, vehicleid, 0, 0, -1, -1, 20.0);
Attach3DTextLabelToVehicle(VehicleLabel[vehicleid] ,vehicleid,0.0,0.0,0.0);
}
//LoadVehicleData(vehicleid, x);
}
return 1;
}
pawn Код:
RemovePlayerVehicles(playerid)
{
for(new x; x < GetVehiclePoolSize() + 1; x++)
{
if(VehOwner[x] != 1 && VehOwner[x] > 0 && VehOwner[x] == PlayerSQLID[playerid])
{
DestroyVehicle(x);
ClearVehicleID(x);
}
}
return 1;
}
