#include static bool:Engine[MAX_VEHICLES]; static bool:Lights[MAX_VEHICLES]; #define WINDOW_DRIVER 0 #define WINDOW_PASSENGER 1 #define WINDOW_BACKLEFT 2 #define WINDOW_BACKRIGHT 3 static bool:Windows[MAX_VEHICLES][4]; static bool:Trunk[MAX_VEHICLES]; static bool:Locked[MAX_VEHICLES]; hook OnVehicleSpawn(vehicleid) { Engine[vehicleid] = false; Lights[vehicleid] = false; for(new i; i < 4; i++) Windows[vehicleid][i] = false; Trunk[vehicleid] = false; Locked[vehicleid] = false; new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, VEHICLE_PARAMS_OFF, bonnet, VEHICLE_PARAMS_OFF, objective); } hook OnServerVehicleSpawned(vehicleid) { Engine[vehicleid] = false; Lights[vehicleid] = false; for(new i; i < 4; i++) Windows[vehicleid][i] = false; Trunk[vehicleid] = false; Locked[vehicleid] = false; new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, VEHICLE_PARAMS_OFF, bonnet, VEHICLE_PARAMS_OFF, objective); } CMD:engine(playerid, params[]) { if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You aren't in the driver's seat of a vehicle."); if(IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You can't use this command because you are wounded."); new vehicleid = GetPlayerVehicleID(playerid); if(!IsPlayerOwningVehicleKey(playerid, vehicleid)) return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); if(!IsEngineVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle doesn't have an engine."); if(IsVehicleWrecked(vehicleid)) return SendErrorMessage(playerid, "This vehicle is badly damaged and won't start."); if(Engine[vehicleid] == true) { Engine[vehicleid] = false; Lights[vehicleid] = false; new string[92]; format(string, sizeof(string), "* %s stopped the engine of the %s.", ReturnPlayerRPName(playerid), GetVehicleName(vehicleid)); ProxDetector(20.0, playerid, string, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF); new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective); } else { Engine[vehicleid] = true; Lights[vehicleid] = true; new string[92]; format(string, sizeof(string), "* %s started the engine of the %s.", ReturnPlayerRPName(playerid), GetVehicleName(vehicleid)); ProxDetector(20.0, playerid, string, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF); new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, VEHICLE_PARAMS_ON, alarm, doors, bonnet, boot, objective); } return 1; } CMD:lights(playerid, params[]) { if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You aren't in the driver's seat of a vehicle."); if(IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You can't use this command because you are wounded."); new vehicleid = GetPlayerVehicleID(playerid); if(!IsPlayerOwningVehicleKey(playerid, vehicleid)) return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); if(!IsEngineVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle has no headlights."); Vehicle_SetLightsStatus(vehicleid, !Vehicle_GetLightsStatus(vehicleid)); return 1; } CMD:windows(playerid, params[]) { if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You aren't in the driver's seat of a vehicle."); if(IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You can't use this command because you are wounded."); if(isnull(params)) return SendSyntaxMessage(playerid, "/windows (driver, passenger, backleft, backright)"); new vehicleid = GetPlayerVehicleID(playerid); if(!IsPlayerOwningVehicleKey(playerid, vehicleid)) return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); if(!IsWindowedVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle has no windows."); if(!strcmp(params, "driver", true)) { Vehicle_SetWindowStatus(vehicleid, WINDOW_DRIVER, !Vehicle_GetWindowsStatus(vehicleid, WINDOW_DRIVER)); } else if(!strcmp(params, "passenger", true)) { Vehicle_SetWindowStatus(vehicleid, WINDOW_PASSENGER, !Vehicle_GetWindowsStatus(vehicleid, WINDOW_PASSENGER)); } else if(!strcmp(params, "backleft", true)) { Vehicle_SetWindowStatus(vehicleid, WINDOW_BACKLEFT, !Vehicle_GetWindowsStatus(vehicleid, WINDOW_BACKLEFT)); } else if(!strcmp(params, "backright", true)) { Vehicle_SetWindowStatus(vehicleid, WINDOW_BACKRIGHT, !Vehicle_GetWindowsStatus(vehicleid, WINDOW_BACKRIGHT)); } else SendSyntaxMessage(playerid, "/windows (driver, passenger, backleft, backright)"); return 1; } CMD:trunk(playerid, params[]) { if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendErrorMessage(playerid, "You must be onfoot to use the trunk."); if(IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You can't use this command because you are wounded."); new vehicleid = GetClosestVehicle(playerid, 3.0); if(vehicleid == INVALID_VEHICLE_ID) return 1; if(!IsPlayerOwningVehicleKey(playerid, vehicleid)) return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); if(!IsDoorVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle does not have a trunk."); if(!IsPlayerNearBoot(playerid, vehicleid)) return SendErrorMessage(playerid, "You must be near the vehicle's trunk to do this."); Vehicle_SetTrunkStatus(vehicleid, !Vehicle_GetTrunkStatus(vehicleid)); return 1; } CMD:lock(playerid, params[]) { if(IsPlayerWounded(playerid)) return SendErrorMessage(playerid, "You can't use this command because you are wounded."); new vehicleid; if(IsPlayerInAnyVehicle(playerid)) vehicleid = GetPlayerVehicleID(playerid); else { vehicleid = GetClosestVehicle(playerid, 3.0); if(vehicleid == INVALID_VEHICLE_ID) return 1; } if(!IsPlayerOwningVehicleKey(playerid, vehicleid)) return SendErrorMessage(playerid, "You don't have the keys to this vehicle."); if(!IsDoorVehicle(vehicleid)) return SendErrorMessage(playerid, "This vehicle has no doors."); Vehicle_SetLockedStatus(vehicleid, !Vehicle_GetLockedStatus(vehicleid)); new string[92]; format(string, sizeof(string), "* %s %s the doors of the %s.", ReturnPlayerRPName(playerid), (Vehicle_GetLockedStatus(vehicleid)) ? ("locked"): ("unlocked"), GetVehicleName(vehicleid)); ProxDetector(20.0, playerid, string, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF, 0xD0AEEBFF); return 1; } stock Vehicle_SetEngineStatus(vehicleid, bool:status) { Engine[vehicleid] = status; if(status) { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective); } else { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective); } } stock Vehicle_GetEngineStatus(vehicleid) { return Engine[vehicleid]; } stock Vehicle_SetLightsStatus(vehicleid, bool:status) { Lights[vehicleid] = status; if(status) { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, engine, VEHICLE_PARAMS_ON, alarm, doors, bonnet, boot, objective); } else { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, engine, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective); } } stock Vehicle_GetLightsStatus(vehicleid) { return Lights[vehicleid]; } stock Vehicle_SetWindowStatus(vehicleid, window, bool:status) { switch(window) { case WINDOW_DRIVER: { Windows[vehicleid][WINDOW_DRIVER] = status; new driver, passenger, backleft, backright; GetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, backright); SetVehicleParamsCarWindows(vehicleid, status, passenger, backleft, backright); } case WINDOW_PASSENGER: { Windows[vehicleid][WINDOW_PASSENGER] = status; new driver, passenger, backleft, backright; GetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, backright); SetVehicleParamsCarWindows(vehicleid, driver, status, backleft, backright); } case WINDOW_BACKLEFT: { Windows[vehicleid][WINDOW_BACKLEFT] = status; new driver, passenger, backleft, backright; GetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, backright); SetVehicleParamsCarWindows(vehicleid, driver, passenger, status, backright); } case WINDOW_BACKRIGHT: { Windows[vehicleid][WINDOW_BACKRIGHT] = status; new driver, passenger, backleft, backright; GetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, backright); SetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, status); } } } stock Vehicle_GetWindowsStatus(vehicleid, window) { if(0 <= window <= 3) { if(Windows[vehicleid][window] == true) { return true; } } return false; } stock Vehicle_SetTrunkStatus(vehicleid, bool:status) { Trunk[vehicleid] = status; if(status) { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, VEHICLE_PARAMS_ON, objective); } else { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, VEHICLE_PARAMS_OFF, objective); } } stock Vehicle_GetTrunkStatus(vehicleid) { return Trunk[vehicleid]; } stock Vehicle_SetLockedStatus(vehicleid, bool:status) { Locked[vehicleid] = status; if(status) { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, engine, lights, alarm, VEHICLE_PARAMS_ON, bonnet, boot, objective); } else { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); SetVehicleParamsEx(vehicleid, engine, lights, alarm, VEHICLE_PARAMS_OFF, bonnet, boot, objective); } } stock Vehicle_GetLockedStatus(vehicleid) { return Locked[vehicleid]; }