Interface administrators, moderator
2,591
edits
m (fixed a typo) |
No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:natives.taskCarDriveWander}} | {{DISPLAYTITLE:natives.taskCarDriveWander}} | ||
{{ScriptItem | {{ScriptItem | ||
|endpoint = client | |||
|games = iv | |games = iv | ||
|type = function | |type = function | ||
Line 13: | Line 14: | ||
|returnFail1 = void | |returnFail1 = void | ||
|exampleJSCS = /* example code provided by DrFauli */ | |exampleJSCS = /* example code provided by DrFauli */ | ||
addCommandHandler(" | addCommandHandler("drivewander", function(cmdName, params) { | ||
{ | // current vehicle/ped handle | ||
// current vehicle handle | |||
let thisVeh = null; | let thisVeh = null; | ||
let thisPed = null; | |||
// check if player is in a car | // check if player is in a car | ||
if (!localPlayer.vehicle) | if (!localPlayer.vehicle) { | ||
natives.requestModel(-956048545) // Taxi | |||
natives.requestModel(- | natives.requestModel(8772846); // Taxi Driver | ||
natives.loadAllObjectsNow(); | natives.loadAllObjectsNow(); | ||
// spawn the car | // spawn the car | ||
thisVeh = createVehicle2(- | thisVeh = createVehicle2(-956048545, localPlayer.position, true); | ||
thisVeh.heading = localPlayer.heading; | thisVeh.heading = localPlayer.heading; | ||
// warp player into driver | // spawn the driver | ||
natives. | thisPed = natives.createCharInsideCar(thisVeh, 1, 8772846); | ||
// prevent ped from leaving the car screaming by marking it as mission_char first | |||
natives.setCharAsMissionChar(thisPed, true); | |||
natives.setCharStayInCarWhenJacked(thisPed, true); | |||
// warp player into passenger seat id 0 (next to driver) | |||
natives.warpCharIntoCarAsPassenger(localPlayer, thisVeh, 0); | |||
} | } | ||
else | else { | ||
thisVeh = localPlayer.vehicle; | thisVeh = localPlayer.vehicle; | ||
thisPed = thisVeh.getOccupant(0); | |||
} | } | ||
Line 39: | Line 47: | ||
let splitParams = params.split(" "); | let splitParams = params.split(" "); | ||
let driveSpeed = Number(splitParams[0]); // default is 20 | let driveSpeed = Number(splitParams[0]); // default is 20 | ||
let driveStyle = Number(splitParams[1]); | let driveStyle = Number(splitParams[1]); | ||
// let | // let this car randomly drive around | ||
natives.taskCarDriveWander( | // [syntax]: pedHandle, carHandle, driveSpeed, driveStyle | ||
natives.taskCarDriveWander(thisPed, thisVeh, driveSpeed, driveStyle); | |||
return true; | return true; | ||
Line 118: | Line 127: | ||
*driving styles '''1 and 7''' seem to be identical. | *driving styles '''1 and 7''' seem to be identical. | ||
*using values '''< 0''' or '''> 7''' will behave like '''3''' | *using values '''< 0''' or '''> 7''' will behave like '''3''' | ||
*the AI will slow down for corners and intersections, but won't break for "drive around" obstacles. | |||
There '''could be''' small distance and/or speed differences when "drive around" is used.<br/> | There '''could be''' small distance and/or speed differences when "drive around" is used.<br/> | ||
It is also unclear if the AI drivers are able to see objects like light poles or traffic lights while evading. | It is also unclear if the AI drivers are able to see objects like light poles or traffic lights while evading. | ||
The [[vehicle.carWanderRandomly|vehicle.carWanderRandomly]] function has the same functionality in the 3D universe games (GTA III, Vice City, and San Andreas). The extra driving parameters for those games can be set with [[vehicle.setDrivingStyle|vehicle.setDrivingStyle]] and [[vehicle.setCarCruiseSpeed|vehicle.setCarCruiseSpeed]] |