Files
GTAConnectedDocs/Trident/vehicle.js
2026-01-18 20:37:49 +04:00

605 lines
27 KiB
JavaScript

/**
* MD TRIDENT - Vehicle Options Module
* GTAConnected Port for GTA IV
*/
// ============================================================================
// VEHICLE MODEL HASHES (GTA IV)
// ============================================================================
const VEHICLE_MODELS = {
// Sports Cars
BANSHEE: 0xC1E908D2,
COMET: 0x067BC037,
COQUETTE: 0x067BC037,
FELTZER: 0x8F5B9FB5,
INFERNUS: 0x18F25AC7,
SULTAN: 0x39DA2754,
SULTANRS: 0xEE6024BC,
SUPERGT: 0x42F2ED16,
TURISMO: 0x185484E1,
SENTINEL: 0x50732C82,
// Muscle Cars
BUCCANEER: 0xD756460C,
DUKES: 0x2B26F456,
FACTION: 0x81A9CDDF,
MANANA: 0x81634188,
PEYOTE: 0x6D19CCBC,
RUINER: 0xF26CEFF9,
SABRE: 0x9B909C94,
SABREGT: 0x9B909C94,
STALION: 0x72A4C31E,
VIGERO: 0xCEC6B9B7,
VIRGO: 0xE2504942,
VOODOO: 0x1F3766E3,
// SUVs and Off-Road
BOBCAT: 0x31F0B376,
CAVALCADE: 0x779F23AA,
HABANERO: 0x34B7390F,
HUNTLEY: 0x1D06D681,
LANDSTALKER: 0x4BA4E8DC,
PATRIOT: 0xCFCFEB3B,
RANCHER: 0x6210CBB0,
REBLA: 0x4C489021,
// Sedans
ADMIRAL: 0x32B29A4B,
CHAVOS: 0xE8A8BDA8,
COGNOSCENTI: 0x86FE0B60,
EMPEROR: 0xD7278283,
ESPERANTO: 0xFF8C6ED1,
FEROCI: 0x1AD3D617,
INGOT: 0xB3206692,
INTRUDER: 0x34DD8AA1,
LOKUS: 0xCB3C7191,
ORACLE: 0x506434F6,
PINNACLE: 0x874D2A8B,
PMP600: 0x700E514C,
PREMIER: 0x8FB66F9B,
SCHAFTER: 0xB52B5113,
VINCENT: 0x9D0450CA,
WASHINGTON: 0x69F06B57,
// Emergency Vehicles
AMBULANCE: 0x45D56ADA,
FBI: 0x432EA949,
FIRETRUK: 0x73920F8E,
NOOSE: 0xB4F32720,
POLICE: 0x79FBB0C5,
POLICE2: 0x9F05F101,
POLPATRIOT: 0xCFCFEB3B,
// Commercial
BENSON: 0xB7B2BBE7,
BOXVILLE: 0x898ECCEA,
BURRITO: 0xAFBB2CA4,
FLATBED: 0x50B0215A,
MULE: 0x35ED670B,
PACKER: 0x21EEE87D,
PHANTOM: 0x809AA4CB,
PONY: 0xF8DE29A8,
SPEEDO: 0xCFB3870C,
STOCKADE: 0x6827CF72,
YANKEE: 0x3D236D91,
// Public Service
BUS: 0xD577C962,
CABBY: 0x3FC5D440,
ROMERO: 0x2560B2FC,
TAXI: 0xC703DB5F,
STRETCH: 0x8B13F083,
TRASH: 0x72435A19,
// Bikes
FAGGIO: 0x9229E4EB,
NRG900: 0x6F946279,
PCJ: 0xC9CEAF06,
SANCHEZ: 0x2EF89E46,
ZOMBIEB: 0xDE05FB87,
HELLFURY: 0x6598A42B,
BOBBER: 0x67B52491,
// Boats
DINGHY: 0x3D961290,
JETMAX: 0x33581161,
MARQUIS: 0xC1CE1183,
PREDATOR: 0xE2E7D4AB,
REEFER: 0x1D97DCAF,
SQUALO: 0x17DF5EC2,
TROPIC: 0x1149422F,
TUGA: 0x82CAC433,
// Helicopters
ANNIHILATOR: 0x31F0B376,
MAVERICK: 0x9D0450CA,
POLMAV: 0x1517D4D9,
TOURMAV: 0x73232612
};
// ============================================================================
// VEHICLE OPTIONS STATE
// ============================================================================
let vehicleOptions = {
godmode: false,
speedBoost: false,
autoFlip: false,
autoFix: false,
rainbow: false,
invisible: false,
engineAlwaysOn: false,
nitro: false
};
// ============================================================================
// VEHICLE MENU ITEMS
// ============================================================================
function getVehicleMenuItems() {
return [
createMenuItem("~~ SPAWN VEHICLES ~~", ITEM_TYPE.JUMPOVER),
createMenuItem("Quick Spawner (Favorites)", ITEM_TYPE.SUBMENU, { submenu: "vehicle_favorites" }),
createMenuItem("Sports Cars", ITEM_TYPE.SUBMENU, { submenu: "vehicle_sports" }),
createMenuItem("Muscle / Vintage", ITEM_TYPE.SUBMENU, { submenu: "vehicle_muscle" }),
createMenuItem("SUVs / Off-Road", ITEM_TYPE.SUBMENU, { submenu: "vehicle_suv" }),
createMenuItem("Sedans", ITEM_TYPE.SUBMENU, { submenu: "vehicle_sedan" }),
createMenuItem("Emergency Vehicles", ITEM_TYPE.SUBMENU, { submenu: "vehicle_emergency" }),
createMenuItem("Bikes", ITEM_TYPE.SUBMENU, { submenu: "vehicle_bikes" }),
createMenuItem("Boats", ITEM_TYPE.SUBMENU, { submenu: "vehicle_boats" }),
createMenuItem("Helicopters", ITEM_TYPE.SUBMENU, { submenu: "vehicle_helicopters" }),
createMenuItem("Commercial", ITEM_TYPE.SUBMENU, { submenu: "vehicle_commercial" }),
createMenuItem("~~ VEHICLE OPTIONS ~~", ITEM_TYPE.JUMPOVER),
createMenuItem("Vehicle God Mode", ITEM_TYPE.BOOL, {
boolState: vehicleOptions.godmode,
action: toggleVehicleGodMode
}),
createMenuItem("Speed Boost", ITEM_TYPE.BOOL, {
boolState: vehicleOptions.speedBoost,
action: toggleSpeedBoost
}),
createMenuItem("Auto Flip", ITEM_TYPE.BOOL, {
boolState: vehicleOptions.autoFlip,
action: toggleAutoFlip
}),
createMenuItem("Auto Repair", ITEM_TYPE.BOOL, {
boolState: vehicleOptions.autoFix,
action: toggleAutoFix
}),
createMenuItem("Rainbow Car", ITEM_TYPE.BOOL, {
boolState: vehicleOptions.rainbow,
action: toggleRainbow
}),
createMenuItem("Invisible Vehicle", ITEM_TYPE.BOOL, {
boolState: vehicleOptions.invisible,
action: toggleVehicleInvisible
}),
createMenuItem("~~ VEHICLE ACTIONS ~~", ITEM_TYPE.JUMPOVER),
createMenuItem("Repair Vehicle", ITEM_TYPE.FUNCTION, { action: repairVehicle }),
createMenuItem("Flip Vehicle", ITEM_TYPE.FUNCTION, { action: flipVehicle }),
createMenuItem("Clean Vehicle", ITEM_TYPE.FUNCTION, { action: cleanVehicle }),
createMenuItem("Maximize Performance", ITEM_TYPE.FUNCTION, { action: maxPerformance }),
createMenuItem("Delete Vehicle", ITEM_TYPE.FUNCTION, { action: deleteVehicle }),
createMenuItem("Teleport to Nearest Vehicle", ITEM_TYPE.FUNCTION, { action: teleportToNearestVehicle })
];
}
// ============================================================================
// VEHICLE CATEGORY ITEMS
// ============================================================================
function getFavoriteVehicleItems() {
return [
createMenuItem("Comet", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.COMET, action: spawnVehicleAction }),
createMenuItem("Turismo", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.TURISMO, action: spawnVehicleAction }),
createMenuItem("Infernus", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.INFERNUS, action: spawnVehicleAction }),
createMenuItem("Super GT", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SUPERGT, action: spawnVehicleAction }),
createMenuItem("Sultan RS", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SULTANRS, action: spawnVehicleAction }),
createMenuItem("Oracle", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ORACLE, action: spawnVehicleAction }),
createMenuItem("Patriot", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PATRIOT, action: spawnVehicleAction }),
createMenuItem("FBI", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FBI, action: spawnVehicleAction }),
createMenuItem("Bus", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BUS, action: spawnVehicleAction }),
createMenuItem("NRG 900", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.NRG900, action: spawnVehicleAction }),
createMenuItem("Maverick", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.MAVERICK, action: spawnVehicleAction }),
createMenuItem("Annihilator", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ANNIHILATOR, action: spawnVehicleAction })
];
}
function getSportsVehicleItems() {
return [
createMenuItem("Banshee", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BANSHEE, action: spawnVehicleAction }),
createMenuItem("Comet", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.COMET, action: spawnVehicleAction }),
createMenuItem("Coquette", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.COQUETTE, action: spawnVehicleAction }),
createMenuItem("Feltzer", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FELTZER, action: spawnVehicleAction }),
createMenuItem("Infernus", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.INFERNUS, action: spawnVehicleAction }),
createMenuItem("Sultan", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SULTAN, action: spawnVehicleAction }),
createMenuItem("Sultan RS", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SULTANRS, action: spawnVehicleAction }),
createMenuItem("Super GT", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SUPERGT, action: spawnVehicleAction }),
createMenuItem("Turismo", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.TURISMO, action: spawnVehicleAction }),
createMenuItem("Sentinel", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SENTINEL, action: spawnVehicleAction })
];
}
function getMuscleVehicleItems() {
return [
createMenuItem("Buccaneer", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BUCCANEER, action: spawnVehicleAction }),
createMenuItem("Dukes", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.DUKES, action: spawnVehicleAction }),
createMenuItem("Faction", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FACTION, action: spawnVehicleAction }),
createMenuItem("Manana", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.MANANA, action: spawnVehicleAction }),
createMenuItem("Peyote", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PEYOTE, action: spawnVehicleAction }),
createMenuItem("Ruiner", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.RUINER, action: spawnVehicleAction }),
createMenuItem("Sabre", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SABRE, action: spawnVehicleAction }),
createMenuItem("Stallion", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.STALION, action: spawnVehicleAction }),
createMenuItem("Vigero", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.VIGERO, action: spawnVehicleAction }),
createMenuItem("Virgo", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.VIRGO, action: spawnVehicleAction }),
createMenuItem("Voodoo", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.VOODOO, action: spawnVehicleAction })
];
}
function getSUVVehicleItems() {
return [
createMenuItem("Bobcat", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BOBCAT, action: spawnVehicleAction }),
createMenuItem("Cavalcade", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.CAVALCADE, action: spawnVehicleAction }),
createMenuItem("Habanero", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.HABANERO, action: spawnVehicleAction }),
createMenuItem("Huntley", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.HUNTLEY, action: spawnVehicleAction }),
createMenuItem("Landstalker", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.LANDSTALKER, action: spawnVehicleAction }),
createMenuItem("Patriot", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PATRIOT, action: spawnVehicleAction }),
createMenuItem("Rancher", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.RANCHER, action: spawnVehicleAction }),
createMenuItem("Rebla", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.REBLA, action: spawnVehicleAction })
];
}
function getSedanVehicleItems() {
return [
createMenuItem("Admiral", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ADMIRAL, action: spawnVehicleAction }),
createMenuItem("Chavos", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.CHAVOS, action: spawnVehicleAction }),
createMenuItem("Cognoscenti", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.COGNOSCENTI, action: spawnVehicleAction }),
createMenuItem("Emperor", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.EMPEROR, action: spawnVehicleAction }),
createMenuItem("Esperanto", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ESPERANTO, action: spawnVehicleAction }),
createMenuItem("Feroci", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FEROCI, action: spawnVehicleAction }),
createMenuItem("Ingot", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.INGOT, action: spawnVehicleAction }),
createMenuItem("Intruder", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.INTRUDER, action: spawnVehicleAction }),
createMenuItem("Lokus", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.LOKUS, action: spawnVehicleAction }),
createMenuItem("Oracle", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ORACLE, action: spawnVehicleAction }),
createMenuItem("Pinnacle", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PINNACLE, action: spawnVehicleAction }),
createMenuItem("Premier", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PREMIER, action: spawnVehicleAction }),
createMenuItem("Schafter", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SCHAFTER, action: spawnVehicleAction }),
createMenuItem("Washington", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.WASHINGTON, action: spawnVehicleAction })
];
}
function getEmergencyVehicleItems() {
return [
createMenuItem("Ambulance", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.AMBULANCE, action: spawnVehicleAction }),
createMenuItem("FBI", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FBI, action: spawnVehicleAction }),
createMenuItem("Fire Truck", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FIRETRUK, action: spawnVehicleAction }),
createMenuItem("NOOSE", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.NOOSE, action: spawnVehicleAction }),
createMenuItem("Police", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.POLICE, action: spawnVehicleAction }),
createMenuItem("Police 2", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.POLICE2, action: spawnVehicleAction }),
createMenuItem("Police Patriot", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.POLPATRIOT, action: spawnVehicleAction })
];
}
function getBikeVehicleItems() {
return [
createMenuItem("Faggio", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FAGGIO, action: spawnVehicleAction }),
createMenuItem("NRG 900", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.NRG900, action: spawnVehicleAction }),
createMenuItem("PCJ", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PCJ, action: spawnVehicleAction }),
createMenuItem("Sanchez", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SANCHEZ, action: spawnVehicleAction }),
createMenuItem("Zombie B", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ZOMBIEB, action: spawnVehicleAction }),
createMenuItem("Hellfury", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.HELLFURY, action: spawnVehicleAction }),
createMenuItem("Bobber", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BOBBER, action: spawnVehicleAction })
];
}
function getBoatVehicleItems() {
return [
createMenuItem("Dinghy", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.DINGHY, action: spawnVehicleAction }),
createMenuItem("Jetmax", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.JETMAX, action: spawnVehicleAction }),
createMenuItem("Marquis", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.MARQUIS, action: spawnVehicleAction }),
createMenuItem("Predator", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PREDATOR, action: spawnVehicleAction }),
createMenuItem("Reefer", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.REEFER, action: spawnVehicleAction }),
createMenuItem("Squalo", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SQUALO, action: spawnVehicleAction }),
createMenuItem("Tropic", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.TROPIC, action: spawnVehicleAction }),
createMenuItem("Tuga", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.TUGA, action: spawnVehicleAction })
];
}
function getHelicopterVehicleItems() {
return [
createMenuItem("Annihilator", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.ANNIHILATOR, action: spawnVehicleAction }),
createMenuItem("Maverick", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.MAVERICK, action: spawnVehicleAction }),
createMenuItem("Police Maverick", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.POLMAV, action: spawnVehicleAction }),
createMenuItem("Tour Maverick", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.TOURMAV, action: spawnVehicleAction })
];
}
function getCommercialVehicleItems() {
return [
createMenuItem("Benson", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BENSON, action: spawnVehicleAction }),
createMenuItem("Boxville", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BOXVILLE, action: spawnVehicleAction }),
createMenuItem("Burrito", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BURRITO, action: spawnVehicleAction }),
createMenuItem("Flatbed", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.FLATBED, action: spawnVehicleAction }),
createMenuItem("Mule", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.MULE, action: spawnVehicleAction }),
createMenuItem("Packer", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PACKER, action: spawnVehicleAction }),
createMenuItem("Phantom", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PHANTOM, action: spawnVehicleAction }),
createMenuItem("Pony", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.PONY, action: spawnVehicleAction }),
createMenuItem("Speedo", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.SPEEDO, action: spawnVehicleAction }),
createMenuItem("Stockade", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.STOCKADE, action: spawnVehicleAction }),
createMenuItem("Yankee", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.YANKEE, action: spawnVehicleAction }),
createMenuItem("Bus", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.BUS, action: spawnVehicleAction }),
createMenuItem("Taxi", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.TAXI, action: spawnVehicleAction }),
createMenuItem("Stretch", ITEM_TYPE.VEHICLE, { vehicleModel: VEHICLE_MODELS.STRETCH, action: spawnVehicleAction })
];
}
// ============================================================================
// TOGGLE FUNCTIONS
// ============================================================================
function toggleVehicleGodMode(state) {
vehicleOptions.godmode = state;
showNotification(state ? "~g~Vehicle God Mode ~s~ON" : "~r~Vehicle God Mode ~s~OFF");
}
function toggleSpeedBoost(state) {
vehicleOptions.speedBoost = state;
showNotification(state ? "~g~Speed Boost ~s~ON (Press Shift)" : "~r~Speed Boost ~s~OFF");
}
function toggleAutoFlip(state) {
vehicleOptions.autoFlip = state;
showNotification(state ? "~g~Auto Flip ~s~ON" : "~r~Auto Flip ~s~OFF");
}
function toggleAutoFix(state) {
vehicleOptions.autoFix = state;
showNotification(state ? "~g~Auto Repair ~s~ON" : "~r~Auto Repair ~s~OFF");
}
function toggleRainbow(state) {
vehicleOptions.rainbow = state;
showNotification(state ? "~g~Rainbow Car ~s~ON" : "~r~Rainbow Car ~s~OFF");
}
function toggleVehicleInvisible(state) {
vehicleOptions.invisible = state;
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
if (natives.IS_CHAR_IN_ANY_CAR(playerPed)) {
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
natives.SET_CAR_VISIBLE(vehicle, !state);
}
showNotification(state ? "~g~Invisible Vehicle ~s~ON" : "~r~Invisible Vehicle ~s~OFF");
}
// ============================================================================
// ACTION FUNCTIONS
// ============================================================================
function spawnVehicleAction(modelHash) {
spawnVehicleForPlayer(modelHash);
}
function spawnVehicleForPlayer(modelHash) {
let playerId = natives.GET_PLAYER_ID();
let playerPed = natives.GET_PLAYER_PED(playerId);
let pos = natives.GET_CHAR_COORDINATES(playerPed);
let heading = natives.GET_CHAR_HEADING(playerPed);
// Request model
natives.REQUEST_MODEL(modelHash);
// Wait for model to load
let attempts = 0;
while (!natives.HAS_MODEL_LOADED(modelHash) && attempts < 100) {
natives.WAIT(10);
attempts++;
}
if (!natives.HAS_MODEL_LOADED(modelHash)) {
showNotification("~r~Failed to load vehicle model!");
return null;
}
// Calculate spawn position in front of player
let radians = heading * Math.PI / 180;
let spawnX = pos[0] - Math.sin(radians) * 5;
let spawnY = pos[1] + Math.cos(radians) * 5;
let spawnZ = pos[2];
// Create vehicle
let vehicle = natives.CREATE_CAR(modelHash, spawnX, spawnY, spawnZ, true, true);
if (vehicle) {
natives.SET_CAR_HEADING(vehicle, heading);
natives.SET_CAR_ON_GROUND_PROPERLY(vehicle);
// Get vehicle display name
let vehName = natives.GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(modelHash);
let displayName = natives.GET_STRING_FROM_TEXT_FILE(vehName) || "Vehicle";
showNotification("~g~Spawned: ~s~" + displayName);
}
// Mark model as no longer needed
natives.MARK_MODEL_AS_NO_LONGER_NEEDED(modelHash);
return vehicle;
}
function repairVehicle() {
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
if (!natives.IS_CHAR_IN_ANY_CAR(playerPed)) {
showNotification("~r~You are not in a vehicle!");
return;
}
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
natives.FIX_CAR(vehicle);
natives.SET_CAR_ENGINE_ON(vehicle, true, true);
showNotification("~g~Vehicle repaired!");
}
function flipVehicle() {
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
if (!natives.IS_CHAR_IN_ANY_CAR(playerPed)) {
showNotification("~r~You are not in a vehicle!");
return;
}
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
let heading = natives.GET_CAR_HEADING(vehicle);
natives.SET_VEHICLE_QUATERNION(vehicle, 0, 0, 0, 0);
natives.SET_CAR_HEADING(vehicle, heading);
natives.SET_CAR_ON_GROUND_PROPERLY(vehicle);
showNotification("~g~Vehicle flipped!");
}
function cleanVehicle() {
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
if (!natives.IS_CHAR_IN_ANY_CAR(playerPed)) {
showNotification("~r~You are not in a vehicle!");
return;
}
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
natives.SET_VEHICLE_DIRT_LEVEL(vehicle, 0);
showNotification("~g~Vehicle cleaned!");
}
function maxPerformance() {
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
if (!natives.IS_CHAR_IN_ANY_CAR(playerPed)) {
showNotification("~r~You are not in a vehicle!");
return;
}
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
// Set max performance (if supported)
natives.FIX_CAR(vehicle);
natives.SET_CAR_ENGINE_ON(vehicle, true, true);
showNotification("~g~Vehicle maxed out!");
}
function deleteVehicle() {
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
if (!natives.IS_CHAR_IN_ANY_CAR(playerPed)) {
showNotification("~r~You are not in a vehicle!");
return;
}
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
// Eject player first
natives.TASK_LEAVE_CAR_IMMEDIATELY(playerPed, vehicle);
natives.WAIT(500);
natives.DELETE_CAR(vehicle);
showNotification("~g~Vehicle deleted!");
}
function teleportToNearestVehicle() {
let playerPed = natives.GET_PLAYER_PED(natives.GET_PLAYER_ID());
let pos = natives.GET_CHAR_COORDINATES(playerPed);
let vehicle = natives.GET_CLOSEST_CAR(pos[0], pos[1], pos[2], 100.0, false, 70);
if (vehicle && natives.DOES_VEHICLE_EXIST(vehicle)) {
natives.WARP_CHAR_INTO_CAR(playerPed, vehicle);
showNotification("~g~Teleported to nearest vehicle!");
} else {
showNotification("~r~No vehicle found nearby!");
}
}
// ============================================================================
// VEHICLE OPTIONS LOOP
// ============================================================================
let rainbowColor = 0;
function vehicleOptionsLoop() {
let playerId = natives.GET_PLAYER_ID();
let playerPed = natives.GET_PLAYER_PED(playerId);
if (!natives.IS_CHAR_IN_ANY_CAR(playerPed)) return;
let vehicle = natives.GET_CAR_CHAR_IS_USING(playerPed);
// Vehicle God Mode
if (vehicleOptions.godmode) {
natives.SET_CAR_CAN_BE_DAMAGED(vehicle, false);
natives.SET_CAR_CAN_BE_VISIBLY_DAMAGED(vehicle, false);
let health = natives.GET_CAR_HEALTH(vehicle);
if (health < 1000) {
natives.SET_CAR_HEALTH(vehicle, 1000);
}
}
// Speed Boost
if (vehicleOptions.speedBoost) {
if (natives.IS_GAME_KEYBOARD_KEY_PRESSED(0x10)) { // Shift
natives.APPLY_FORCE_TO_CAR(vehicle, true, 0.0, 50.0, 0.0, 0.0, 0.0, 0.0, true, true, true, true);
}
}
// Auto Flip
if (vehicleOptions.autoFlip) {
if (!natives.IS_CAR_UPRIGHT(vehicle)) {
let heading = natives.GET_CAR_HEADING(vehicle);
natives.SET_VEHICLE_QUATERNION(vehicle, 0, 0, 0, 0);
natives.SET_CAR_HEADING(vehicle, heading);
natives.SET_CAR_ON_GROUND_PROPERLY(vehicle);
}
}
// Auto Fix
if (vehicleOptions.autoFix) {
let health = natives.GET_CAR_HEALTH(vehicle);
if (health < 800) {
natives.FIX_CAR(vehicle);
}
}
// Rainbow Car
if (vehicleOptions.rainbow) {
rainbowColor = (rainbowColor + 1) % 134;
natives.CHANGE_CAR_COLOUR(vehicle, rainbowColor, rainbowColor);
}
// Invisible Vehicle (maintain state)
if (vehicleOptions.invisible) {
natives.SET_CAR_VISIBLE(vehicle, false);
}
}
// ============================================================================
// EVENT HANDLERS
// ============================================================================
addEventHandler("OnProcess", function(event) {
vehicleOptionsLoop();
});
// ============================================================================
// EXPORTS
// ============================================================================
this.vehicleOptions = vehicleOptions;
this.getVehicleMenuItems = getVehicleMenuItems;
this.getFavoriteVehicleItems = getFavoriteVehicleItems;
this.getSportsVehicleItems = getSportsVehicleItems;
this.getMuscleVehicleItems = getMuscleVehicleItems;
this.getSUVVehicleItems = getSUVVehicleItems;
this.getSedanVehicleItems = getSedanVehicleItems;
this.getEmergencyVehicleItems = getEmergencyVehicleItems;
this.getBikeVehicleItems = getBikeVehicleItems;
this.getBoatVehicleItems = getBoatVehicleItems;
this.getHelicopterVehicleItems = getHelicopterVehicleItems;
this.getCommercialVehicleItems = getCommercialVehicleItems;
this.spawnVehicleForPlayer = spawnVehicleForPlayer;