mirror of
https://github.com/iDisaster/GTAConnected.git
synced 2026-03-08 09:25:23 +00:00
Delete resources/vehicles directory
This commit is contained in:
@@ -1,5 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<meta>
|
|
||||||
<info author="GTAConnected Server" type="script" version="1.0.0" description="Vehicle spawning and management system" />
|
|
||||||
<script src="server.js" type="server" language="javascript" />
|
|
||||||
</meta>
|
|
||||||
@@ -1,354 +0,0 @@
|
|||||||
// ============================================================================
|
|
||||||
// VEHICLES RESOURCE - Server Side
|
|
||||||
// Handles vehicle spawning and management for GTA IV
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
// Color constants using toColour for integer format
|
|
||||||
const COLOUR_SUCCESS = toColour(100, 255, 100, 255);
|
|
||||||
const COLOUR_ORANGE = toColour(255, 200, 100, 255);
|
|
||||||
const COLOUR_ERROR = toColour(255, 100, 100, 255);
|
|
||||||
const COLOUR_GRAY = toColour(200, 200, 200, 255);
|
|
||||||
const COLOUR_MAGENTA = toColour(255, 100, 255, 255);
|
|
||||||
|
|
||||||
// GTA IV Vehicle Database - Model names and their hash IDs
|
|
||||||
const vehicles = {
|
|
||||||
// Sports Cars
|
|
||||||
"infernus": -1461482751,
|
|
||||||
"turismo": -982130927,
|
|
||||||
"comet": 1063483177,
|
|
||||||
"banshee": -1823484407,
|
|
||||||
"sultan": 970598228,
|
|
||||||
"sultanrs": 970598228,
|
|
||||||
"coquette": 108773431,
|
|
||||||
"feltzer": -349601129,
|
|
||||||
"f620": -591651781,
|
|
||||||
"buffalo": -304802106,
|
|
||||||
|
|
||||||
// Muscle Cars
|
|
||||||
"sabregt": 1357660823,
|
|
||||||
"stalion": 1923400478,
|
|
||||||
"vigero": -825837129,
|
|
||||||
"dukes": 723973206,
|
|
||||||
"ruiner": -227741703,
|
|
||||||
"phoenix": -2095439403,
|
|
||||||
"gauntlet": -1800170043,
|
|
||||||
"dominator": 80636076,
|
|
||||||
|
|
||||||
// Super Cars
|
|
||||||
"entityxf": -1291952903,
|
|
||||||
"adder": -1216765807,
|
|
||||||
"vacca": 338562499,
|
|
||||||
"bullet": -1696146015,
|
|
||||||
"cheetah": -1311154784,
|
|
||||||
|
|
||||||
// SUVs & 4x4
|
|
||||||
"patriot": -808457413,
|
|
||||||
"cavalcade": 2006918058,
|
|
||||||
"granger": 1269098716,
|
|
||||||
"huntley": 486987393,
|
|
||||||
"landstalker": 1269098716,
|
|
||||||
"rebla": 83136452,
|
|
||||||
"habanero": 884422927,
|
|
||||||
"rocoto": 2136773105,
|
|
||||||
"serrano": 1337041428,
|
|
||||||
|
|
||||||
// Sedans
|
|
||||||
"oracle": 1348744438,
|
|
||||||
"schafter": -888242983,
|
|
||||||
"admiral": -1645064850,
|
|
||||||
"vincent": -884237051,
|
|
||||||
"presidente": -1150599089,
|
|
||||||
"cognoscenti": -2030171296,
|
|
||||||
"intruder": 886934177,
|
|
||||||
"merit": -1355452010,
|
|
||||||
"premier": -1883869285,
|
|
||||||
"primo": -1150599089,
|
|
||||||
"stratum": 1723137093,
|
|
||||||
|
|
||||||
// Compacts
|
|
||||||
"blista": -344943009,
|
|
||||||
"dilettante": -1130810103,
|
|
||||||
"issi": 1854776567,
|
|
||||||
"panto": -431692672,
|
|
||||||
"rhapsody": 841808271,
|
|
||||||
|
|
||||||
// Coupes
|
|
||||||
"sentinel": 1349725314,
|
|
||||||
"sentinelxs": 873639469,
|
|
||||||
"zion": -1122289213,
|
|
||||||
|
|
||||||
// Vans
|
|
||||||
"burrito": -1346687836,
|
|
||||||
"minivan": -310465116,
|
|
||||||
"moonbeam": 525509695,
|
|
||||||
"rumpo": 1162065741,
|
|
||||||
"speedo": -810318068,
|
|
||||||
"youga": 65402552,
|
|
||||||
"pony": -119658072,
|
|
||||||
|
|
||||||
// Trucks
|
|
||||||
"benson": 2053223216,
|
|
||||||
"mule": 904750859,
|
|
||||||
"pounder": 2112052861,
|
|
||||||
"phantom": -2137348917,
|
|
||||||
"hauler": 1518533038,
|
|
||||||
"flatbed": 1353720154,
|
|
||||||
"biff": 850991848,
|
|
||||||
|
|
||||||
// Emergency
|
|
||||||
"police": 2046537925,
|
|
||||||
"police2": -1627000575,
|
|
||||||
"police3": 1912215274,
|
|
||||||
"policew": 1912215274,
|
|
||||||
"polpatriot": 1912215274,
|
|
||||||
"fbi": 1127131465,
|
|
||||||
"fbi2": -1647941228,
|
|
||||||
"noose": -1683328900,
|
|
||||||
"enforcer": 2046537925,
|
|
||||||
"ambulance": 1171614426,
|
|
||||||
"firetruk": 1938952078,
|
|
||||||
|
|
||||||
// Motorcycles
|
|
||||||
"nrg900": -1706076364,
|
|
||||||
"pcj600": -909201658,
|
|
||||||
"sanchez": 788045382,
|
|
||||||
"faggio": 55628203,
|
|
||||||
"bati": -891462355,
|
|
||||||
"akuma": 1672195559,
|
|
||||||
"double": -1670998136,
|
|
||||||
"hakuchou": 1265391242,
|
|
||||||
"hexer": 301427732,
|
|
||||||
"innovation": -2020483426,
|
|
||||||
"lectro": 640818791,
|
|
||||||
"nemesis": -634879114,
|
|
||||||
"daemon": 2006142190,
|
|
||||||
"zombiea": -1009268949,
|
|
||||||
|
|
||||||
// Boats
|
|
||||||
"jetmax": 861409633,
|
|
||||||
"marquis": -1043459709,
|
|
||||||
"predator": -488123221,
|
|
||||||
"reefer": 1016996501,
|
|
||||||
"squalo": 400514754,
|
|
||||||
"suntrap": -282946103,
|
|
||||||
"tropic": 290013743,
|
|
||||||
"dinghy": 1033245328,
|
|
||||||
|
|
||||||
// Helicopters
|
|
||||||
"annihilator": 837858166,
|
|
||||||
"maverick": -1660661558,
|
|
||||||
"polmav": 353883353,
|
|
||||||
"buzzard": 788747387,
|
|
||||||
|
|
||||||
// Planes
|
|
||||||
"shamal": -1214293858,
|
|
||||||
|
|
||||||
// Misc
|
|
||||||
"taxi": -956048545,
|
|
||||||
"cabby": -1767210897,
|
|
||||||
"stretch": -1961627517,
|
|
||||||
"bus": -713569950,
|
|
||||||
"trashmaster": 1917016601,
|
|
||||||
"forklift": 1491375716,
|
|
||||||
"caddy": 1147287684,
|
|
||||||
"airtug": 1560980623,
|
|
||||||
"ripley": -845961253,
|
|
||||||
"bulldozer": 1886712733,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Store spawned vehicles per player
|
|
||||||
let playerVehicles = {};
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// EVENTS
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
addEventHandler("OnResourceStart", function(event, resource) {
|
|
||||||
console.log("[Vehicles] Resource started - " + Object.keys(vehicles).length + " vehicles available");
|
|
||||||
});
|
|
||||||
|
|
||||||
addEventHandler("OnPlayerQuit", function(event, client, reason) {
|
|
||||||
// Clean up player's vehicles
|
|
||||||
deletePlayerVehicles(client);
|
|
||||||
});
|
|
||||||
|
|
||||||
addEventHandler("OnPlayerCommand", function(event, client, command, params) {
|
|
||||||
let cmd = command.toLowerCase();
|
|
||||||
|
|
||||||
switch(cmd) {
|
|
||||||
case "v":
|
|
||||||
case "veh":
|
|
||||||
case "car":
|
|
||||||
case "vehicle":
|
|
||||||
if (params && params.length > 0) {
|
|
||||||
let vehicleName = params.toLowerCase().split(" ")[0];
|
|
||||||
spawnVehicleForPlayer(client, vehicleName);
|
|
||||||
} else {
|
|
||||||
messageClient("[USAGE] /v <vehicle_name>", client, COLOUR_ORANGE);
|
|
||||||
messageClient("[TIP] Use /vlist to see available vehicles", client, COLOUR_GRAY);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "dv":
|
|
||||||
case "deletevehicle":
|
|
||||||
case "destroyvehicle":
|
|
||||||
deletePlayerVehicles(client);
|
|
||||||
messageClient("[VEHICLES] Your vehicles have been deleted!", client, COLOUR_SUCCESS);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "vlist":
|
|
||||||
case "vehicles":
|
|
||||||
case "carlist":
|
|
||||||
showVehicleList(client);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "vsearch":
|
|
||||||
case "findvehicle":
|
|
||||||
if (params && params.length > 0) {
|
|
||||||
searchVehicles(client, params.toLowerCase());
|
|
||||||
} else {
|
|
||||||
messageClient("[USAGE] /vsearch <partial_name>", client, COLOUR_ORANGE);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "vcolor":
|
|
||||||
case "carcolor":
|
|
||||||
if (params && params.length > 0) {
|
|
||||||
let colors = params.split(" ");
|
|
||||||
if (colors.length >= 2) {
|
|
||||||
setVehicleColor(client, parseInt(colors[0]), parseInt(colors[1]));
|
|
||||||
} else {
|
|
||||||
messageClient("[USAGE] /vcolor <color1> <color2>", client, COLOUR_ORANGE);
|
|
||||||
messageClient("[TIP] Colors are 0-131 for GTA IV", client, COLOUR_GRAY);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
messageClient("[USAGE] /vcolor <color1> <color2>", client, COLOUR_ORANGE);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "nitro":
|
|
||||||
case "nos":
|
|
||||||
if (client.player && client.player.vehicle) {
|
|
||||||
// Simulate nitro boost by increasing vehicle speed
|
|
||||||
let veh = client.player.vehicle;
|
|
||||||
messageClient("[VEHICLES] NITRO! Vehicle boosted!", client, COLOUR_MAGENTA);
|
|
||||||
} else {
|
|
||||||
messageClient("[VEHICLES] You need to be in a vehicle!", client, COLOUR_ERROR);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// FUNCTIONS
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
function spawnVehicleForPlayer(client, vehicleName) {
|
|
||||||
// Check if vehicle exists
|
|
||||||
if (!vehicles[vehicleName]) {
|
|
||||||
messageClient("[VEHICLES] Vehicle '" + vehicleName + "' not found!", client, COLOUR_ERROR);
|
|
||||||
messageClient("[TIP] Use /vlist or /vsearch <name> to find vehicles", client, COLOUR_GRAY);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!client.player) {
|
|
||||||
messageClient("[VEHICLES] You need to spawn first!", client, COLOUR_ERROR);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete previous vehicles
|
|
||||||
deletePlayerVehicles(client);
|
|
||||||
|
|
||||||
// Get player position and heading
|
|
||||||
let pos = client.player.position;
|
|
||||||
let heading = client.player.heading;
|
|
||||||
|
|
||||||
// Spawn slightly in front of player
|
|
||||||
let spawnX = pos.x + (Math.sin(heading) * 3);
|
|
||||||
let spawnY = pos.y + (Math.cos(heading) * 3);
|
|
||||||
let spawnZ = pos.z + 1;
|
|
||||||
|
|
||||||
// Create the vehicle
|
|
||||||
let modelHash = vehicles[vehicleName];
|
|
||||||
let spawnPos = new Vec3(spawnX, spawnY, spawnZ);
|
|
||||||
let vehicle = gta.createVehicle(modelHash, spawnPos, heading);
|
|
||||||
|
|
||||||
if (vehicle) {
|
|
||||||
// Store vehicle for this player
|
|
||||||
if (!playerVehicles[client.index]) {
|
|
||||||
playerVehicles[client.index] = [];
|
|
||||||
}
|
|
||||||
playerVehicles[client.index].push(vehicle);
|
|
||||||
|
|
||||||
// Set vehicle properties
|
|
||||||
vehicle.health = 1000;
|
|
||||||
vehicle.locked = false;
|
|
||||||
vehicle.engine = true;
|
|
||||||
|
|
||||||
// Random colors
|
|
||||||
let color1 = Math.floor(Math.random() * 132);
|
|
||||||
let color2 = Math.floor(Math.random() * 132);
|
|
||||||
vehicle.colour1 = color1;
|
|
||||||
vehicle.colour2 = color2;
|
|
||||||
|
|
||||||
messageClient("[VEHICLES] Spawned: " + vehicleName.toUpperCase(), client, COLOUR_SUCCESS);
|
|
||||||
console.log("[Vehicles] " + client.name + " spawned " + vehicleName);
|
|
||||||
} else {
|
|
||||||
messageClient("[VEHICLES] Failed to spawn vehicle!", client, COLOUR_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function deletePlayerVehicles(client) {
|
|
||||||
if (playerVehicles[client.index]) {
|
|
||||||
for (let i = 0; i < playerVehicles[client.index].length; i++) {
|
|
||||||
let veh = playerVehicles[client.index][i];
|
|
||||||
if (veh) {
|
|
||||||
destroyElement(veh);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
playerVehicles[client.index] = [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function showVehicleList(client) {
|
|
||||||
messageClient("=== VEHICLE CATEGORIES ===", client, COLOUR_ORANGE);
|
|
||||||
messageClient("Sports: infernus, turismo, comet, banshee, sultan, coquette, feltzer", client, COLOUR_GRAY);
|
|
||||||
messageClient("Muscle: sabregt, stalion, vigero, dukes, ruiner, phoenix", client, COLOUR_GRAY);
|
|
||||||
messageClient("Super: entityxf, adder, vacca, bullet, cheetah", client, COLOUR_GRAY);
|
|
||||||
messageClient("SUV: patriot, cavalcade, granger, huntley, landstalker", client, COLOUR_GRAY);
|
|
||||||
messageClient("Sedan: oracle, schafter, admiral, vincent, presidente", client, COLOUR_GRAY);
|
|
||||||
messageClient("Emergency: police, fbi, noose, ambulance, firetruk", client, COLOUR_GRAY);
|
|
||||||
messageClient("Bikes: nrg900, pcj600, sanchez, faggio, bati, akuma", client, COLOUR_GRAY);
|
|
||||||
messageClient("Air: annihilator, maverick, polmav, buzzard, shamal", client, COLOUR_GRAY);
|
|
||||||
messageClient("Boats: jetmax, marquis, predator, tropic, dinghy", client, COLOUR_GRAY);
|
|
||||||
messageClient("[TIP] Use /vsearch <name> to search for specific vehicles", client, COLOUR_ORANGE);
|
|
||||||
}
|
|
||||||
|
|
||||||
function searchVehicles(client, searchTerm) {
|
|
||||||
let found = [];
|
|
||||||
for (let name in vehicles) {
|
|
||||||
if (name.indexOf(searchTerm) !== -1) {
|
|
||||||
found.push(name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (found.length > 0) {
|
|
||||||
messageClient("=== VEHICLES MATCHING '" + searchTerm.toUpperCase() + "' ===", client, COLOUR_ORANGE);
|
|
||||||
messageClient(found.join(", "), client, COLOUR_GRAY);
|
|
||||||
} else {
|
|
||||||
messageClient("[VEHICLES] No vehicles found matching '" + searchTerm + "'", client, COLOUR_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setVehicleColor(client, color1, color2) {
|
|
||||||
if (client.player && client.player.vehicle) {
|
|
||||||
let veh = client.player.vehicle;
|
|
||||||
veh.colour1 = color1;
|
|
||||||
veh.colour2 = color2;
|
|
||||||
messageClient("[VEHICLES] Vehicle color changed to: " + color1 + ", " + color2, client, COLOUR_SUCCESS);
|
|
||||||
} else {
|
|
||||||
messageClient("[VEHICLES] You need to be in a vehicle!", client, COLOUR_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("[Vehicles] Server script loaded!");
|
|
||||||
Reference in New Issue
Block a user