natives.taskCarDriveWander

void natives.taskCarDriveWander(Ped ped, Vehicle veh, float driveSpeed, int driveStyle)

parameters

  • parameter1 = The Ped to drive the Vehicle.
  • parameter2 = The Vehicle to drive with.
  • parameter3 = The speed of driving in meters per second. (default = 20)
  • parameter4 = The AI driving style (behavior) to use. (0-7)

used for

Make the vehicle randomly drive around using internal game path data.

driving style behavior

traffic lights other cars pedestrians blinkers when stuck
0 ignore drive around drive around not used reverse
1 stop on red stay behind stop and honk used on intersections wait
2 ignore drive around drive around not used reverse
3 ignore ignore ignore not used full throttle
4 ignore stay behind stop and honk not used wait
5 stop on red drive around drive around not used reverse
6 stop+reversing drive around drive around not used reverse
7 stop on red stay behind stop and honk used on intersections wait

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

There could be small distance and/or speed differences when "drive around" is used.‎
It is also unclear if the AI drivers are able to see light poles (objects) while evading.

example code (javascript)

/* example code provided by DrFauli */
addCommandHandler("drivestyle", 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(-1685021548) // sabre GT
		natives.requestModel(1424670436); // french tom
		natives.loadAllObjectsNow();

		// spawn the car
		thisVeh = createVehicle2(-1685021548, localPlayer.position, true);
		thisVeh.heading = localPlayer.heading;

		// spawn the driver
		thisPed = natives.createCharInsideCar(thisVeh, 1, 1424670436);

		// 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
		natives.warpCharIntoCarAsPassenger(localPlayer, thisVeh, 0);
	}
	else
	{
		thisVeh = localPlayer.vehicle;
		thisPed = thisVeh.getOccupant(0);
	}

	// get speed and driveStyle from params
	let splitParams = params.split(" ");
	let driveSpeed = (Number(splitParams[0]) || 20); // default is 20
	let driveStyle = (Number(splitParams[1]) || 2);

	// let this car drive around
	natives.taskCarDriveWander(thisPed, thisVeh, driveSpeed, driveStyle);

	return true;
});