Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define MAX_CUSTOM_VEHICLES 500
- #define MAX_VEHICLES_WEAPONS 2
- #define CUSTOM_TRAILER_MENU 1
- //new Spoiler,Roof,bullhorn,Bumper;
- enum VehicleData
- {
- VehicleHolder,
- VehicleID,
- VehicleModel,
- Float:VehicleX,
- Float:VehicleY,
- Float:VehicleZ,
- Float:VehicleA,
- VehicleColor[2],
- VehicleGarage,
- VehicleOwner,
- VehicleLock,
- VehiclePlate[16],
- VehicleMods[14],
- VehiclePaintjob,
- VehicleBomb,
- neon[2],
- VehMods[46],
- VehWeapon[2],
- VehColorChanger,
- Float:VehDamageStats,
- VehFuelStats,
- VehArea
- }
- new Vehicle[MAX_CUSTOM_VEHICLES][VehicleData],
- Iterator:Vehicles<MAX_CUSTOM_VEHICLES>
- ;
- new Cache:VehCache[MAX_PLAYERS];
- new Timer:EmpTimer[MAX_PLAYERS];
- LoadPlayerVehicle(playerid)
- {
- new query[56];
- mysql_format(connectionHandle, query, 56, "SELECT * FROM vehicle WHERE owner = %d", pInfo[playerid][RealID]);
- mysql_tquery(connectionHandle, query, "OnVehicleLoad", "d", playerid);
- return 1;
- }
- Function OnVehicleLoad(playerid)
- {
- new
- x = 0,
- i,
- l,
- s[64],
- query[128]
- ;
- VehCache[playerid] = cache_save();
- for(new xx = cache_get_row_count(); x < xx; x++)
- {
- cache_set_active(VehCache[playerid]);
- i = Iter_Free(Vehicles);
- Vehicle[i][VehicleID] = cache_get_field_content_int(x, "id");
- Vehicle[i][VehicleX] = cache_get_field_content_float(x, "x");
- Vehicle[i][VehicleY] = cache_get_field_content_float(x, "y");
- Vehicle[i][VehicleZ] = cache_get_field_content_float(x, "z");
- Vehicle[i][VehicleA] = cache_get_field_content_float(x, "angle");
- Vehicle[i][VehicleModel] = cache_get_field_content_int(x, "model");
- Vehicle[i][VehiclePaintjob] = cache_get_field_content_int(x, "paintjob");
- Vehicle[i][VehicleLock] = cache_get_field_content_int(x, "locked");
- Vehicle[i][VehicleGarage] = cache_get_field_content_int(x, "garage");
- Vehicle[i][VehicleOwner] = cache_get_field_content_int(x, "owner");
- Vehicle[i][VehicleColor][0] = cache_get_field_content_int(x, "color1");
- Vehicle[i][VehicleColor][1] = cache_get_field_content_int(x, "color2");
- Vehicle[i][VehicleBomb] = cache_get_field_content_int(x, "vbomb");
- Vehicle[i][VehWeapon][0] = cache_get_field_content_int(x, "vehicleweapon1");
- Vehicle[i][VehWeapon][1] = cache_get_field_content_int(x, "vehicleweapon2");
- Vehicle[i][VehDamageStats] = cache_get_field_content_float(x, "damage");
- Vehicle[i][VehFuelStats] = cache_get_field_content_int(x, "fuel");
- for(l = 0; l < 14; l++)
- Vehicle[i][VehicleMods][l] = 0;
- cache_get_field_content(x, "plate", s);
- format(Vehicle[i][VehiclePlate], 16, s, 0);
- Vehicle[i][VehicleHolder] = CreateVehicle(Vehicle[i][VehicleModel], Vehicle[i][VehicleX], Vehicle[i][VehicleY], Vehicle[i][VehicleZ], Vehicle[i][VehicleA], Vehicle[i][VehicleColor][0], Vehicle[i][VehicleColor][1], -1, 0);
- SetVehicleNumberPlate(Vehicle[i][VehicleHolder], s);
- Vehicle[i][VehArea] = CreateDynamicSphere(Vehicle[i][VehicleX], Vehicle[i][VehicleY], Vehicle[i][VehicleZ], 4.0);
- AttachDynamicAreaToVehicle(Vehicle[i][VehArea], Vehicle[i][VehicleHolder], 0.0, 0.0,0.0);
- if(!Vehicle[i][VehicleLock])
- {
- ToggleDoors(Vehicle[i][VehicleHolder], false);
- Vehicle[i][VehicleLock] = 0;
- }
- else
- {
- ToggleDoors(Vehicle[i][VehicleHolder], true);
- Vehicle[i][VehicleLock] = 1;
- }
- VehNoSPawnFuel[Vehicle[i][VehicleHolder]] = true;
- VehicleFuel[Vehicle[i][VehicleHolder]] = Vehicle[i][VehFuelStats];
- SetVehicleHealth(Vehicle[i][VehicleHolder], Vehicle[i][VehDamageStats]);
- if(Vehicle[i][VehDamageStats] <= 600)
- {
- new panels, doors, lights, tires;
- GetVehicleDamageStatus(Vehicle[i][VehicleHolder], panels, doors, lights, tires);
- // Set the tires to 0, which means none are popped
- tires = 0;
- panels = 1;
- doors = 1;
- // Update the vehicle's damage status with unpopped tires
- UpdateVehicleDamageStatus(Vehicle[i][VehicleHolder], panels, doors, lights, tires);
- }
- if(Vehicle[i][VehDamageStats] <= 300)
- {
- ToggleEngine(Vehicle[i][VehicleHolder], false);
- }
- ChangeVehiclePaintjob(Vehicle[i][VehicleHolder], Vehicle[i][VehiclePaintjob]);
- Iter_Add(Vehicles, i);
- mysql_format(connectionHandle, query, 128, "SELECT * FROM mods WHERE vid = %d", Vehicle[i][VehicleID]);
- mysql_tquery(connectionHandle, query, "OnVehicleModLoaded", "d", i);
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if(pInfo[playerid][Logged])
- {
- new query[128], Float:VehHealth;
- foreach(new i : Vehicles)
- {
- if(Vehicle[i][VehicleOwner] == pInfo[playerid][RealID])
- {
- GetVehicleHealth(Vehicle[i][VehicleHolder], VehHealth);
- mysql_format(connectionHandle, query, 128, "UPDATE vehicle SET damage = %f, fuel = %d WHERE id = %d", VehHealth, VehicleFuel[Vehicle[i][VehicleHolder]], Vehicle[i][VehicleID]);
- mysql_query(connectionHandle, query, false);
- DestroyDynamicArea(Vehicle[i][VehArea]);
- Vehicle[i][VehDamageStats] = VehHealth;
- for(new ix = 0; ix < 14; ix++)
- Vehicle[i][VehicleMods][ix] = 0;
- DestroyVehicle(Vehicle[i][VehicleHolder]);
- Vehicle[i][VehColorChanger] = false;
- DestroyVehObjs(i);
- Iter_SafeRemove(Vehicles, i, i);
- }
- }
- cache_delete(VehCache[playerid]);
- }
- #if defined Pv_OnPlayerDisconnect
- return Pv_OnPlayerDisconnect(playerid, reason);
- #else
- return 1;
- #endif
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect Pv_OnPlayerDisconnect
- #if defined Pv_OnPlayerDisconnect
- forward Pv_OnPlayerDisconnect(playerid, reason);
- #endif
Advertisement
Add Comment
Please, Sign In to add comment