Interface administrators, moderator
2,793
edits
(Created page with "{{DISPLAYTITLE:natives.taskCarDriveToCoord}} {{ScriptItem |endpoint = client |games = iv |type = function |name = natives.taskCarDriveToCoord |usage = make the vehicle randomly drive around using internal game path data. |parameters = Ped ped, Vehicle vehicle, float x, float y, float z, float driveSpeed, int driveFlag, 0 (or model hash), int driveStyle, float stopDist, -1) |parameter1 = Ped ped The Ped to drive the Vehicle. |parameter2 = Vehicle vehicle The Vehicle to dr...") |
No edit summary |
||
| Line 20: | Line 20: | ||
|return1 = void | |return1 = void | ||
|returnFail1 = void | |returnFail1 = void | ||
| | |exampleJS = /* example code provided by DrFauli */ | ||
addCommandHandler("drivecoords", function(cmdName, params) { | addCommandHandler("drivecoords", function(cmdName, params) { | ||
// current vehicle/ped handle | |||
let thisVeh = null; | |||
let thisPed = null; | |||
// check if player is in a car | |||
if (!localPlayer.vehicle) { | |||
natives.requestModel(-956048545) // Taxi | |||
natives.requestModel(8772846); // Taxi Driver | |||
natives.loadAllObjectsNow(); | |||
// spawn the car | |||
thisVeh = createVehicle2(-956048545, localPlayer.position, true); | |||
thisVeh.heading = localPlayer.heading; | |||
// spawn the driver | |||
thisPed = natives.createCharInsideCar(thisVeh, 1, 8772846); | thisPed = natives.createCharInsideCar(thisVeh, 1, 8772846); | ||
// prevent ped from leaving the car screaming by marking it as mission_char first | // 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 | // warp player into passenger seat | ||
natives.warpCharIntoCarAsPassenger(localPlayer, thisVeh, 0); | |||
} else { | } else { | ||
thisVeh = localPlayer.vehicle; | |||
thisPed = thisVeh.getOccupant(0); | |||
} | } | ||
// get speed and driveStyle/driveFlag from params | |||
let splitParams = params.split(" "); | |||
let stopDist = 50; | |||
let driveSpeed = Number(splitParams[0]); // default is 20 | |||
let driveStyle = Number(splitParams[1]); | |||
let driveFlag = Number(splitParams[2]); // default is 0 | |||
// let this car drive to coords (0,0,0) | |||
// [syntax]: pedHandle, carHandle, x, y, z, driveSpeed, driveFlag, (0 or model hash?), driveStyle, stop distance, unknown(-1) | |||
natives.taskCarDriveToCoord(thisPed, thisVeh, 0, 0, 0, driveSpeed, driveFlag, 0, driveStyle, stopDist, -1); | |||
return true; | |||
}); | }); | ||
}} | }} | ||
== | == Driving Flag Behavior == | ||
{|class="wikitable" | {|class="wikitable" | ||
!| | !| | ||
| Line 72: | Line 72: | ||
|- | |- | ||
|0 | |0 | ||
| | |Normal driving | ||
|used | |used | ||
|- | |- | ||
|1 | |1 | ||
| | |Get to coord as fast as possible | ||
| | |Ignored | ||
|- | |- | ||
|2 | |2 | ||
| | |Driving in Reverse | ||
| | |Used (while reversing) | ||
|- | |- | ||
|3 | |3 | ||
| | |Drive Wander (ignore coords) | ||
| | |Used | ||
|} | |} | ||
== | == Driving Style Behavior== | ||
{|class="wikitable" | {|class="wikitable" | ||
!| | !| | ||
!| | !|Traffic lights | ||
!| | !|Other cars | ||
!| | !|Pedestrians | ||
!| | !|Blinkers | ||
!| | !|When stuck | ||
|- | |- | ||
|0 | |0 | ||
| | |Ignore | ||
| | |Drive around | ||
| | |Drive around | ||
| | |Not used | ||
| | |Reverse | ||
|- | |- | ||
|1 | |1 | ||
| | |Stop on red | ||
| | |Stay behind | ||
| | |Stop and honk | ||
| | |Used on intersections | ||
| | |Wait | ||
|- | |- | ||
|2 | |2 | ||
| | |Ignore | ||
| | |Drive around | ||
| | |Drive around | ||
| | |Not used | ||
| | |Reverse | ||
|- | |- | ||
|3 | |3 | ||
| | |Ignore | ||
| | |Ignore | ||
| | |Ignore | ||
| | |Not used | ||
| | |Reverse | ||
|- | |- | ||
|4 | |4 | ||
| | |Ignore | ||
| | |Stay behind | ||
| | |Stop and honk | ||
| | |Not used | ||
| | |Wait | ||
|- | |- | ||
|5 | |5 | ||
| | |Stop on red | ||
| | |Drive around | ||
| | |Drive around | ||
| | |Not used | ||
| | |Reverse | ||
|- | |- | ||
|6 | |6 | ||
| | |Stop+reversing | ||
| | |Drive around | ||
| | |Drive around | ||
| | |Not used | ||
| | |Reverse | ||
|- | |- | ||
|7 | |7 | ||
| | |Stop on red | ||
| | |Stay behind | ||
| | |Stop and honk | ||
| | |Used on intersections | ||
| | |Wait | ||
|} | |} | ||
==notes== | ==notes== | ||
* | *Driving styles '''0 and 2''' seem to be identical. | ||
* | *Driving styles '''1 and 7''' seem to be identical. | ||
* | *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. | ||