OnUnoccupiedVehicleUpdate

OnUnoccupiedVehicleUpdate

Description:
Callback OnUnoccupiedVehicleUpdate is called when a player's client updates/syncs the position of a vehicle they're not driving. This can happen outside of the vehicle or when the player is a passenger of a vehicle that has no driver.
Known Bug(s): This public is not called for trains.
Callback OnUnoccupiedVehicleUpdate was added in 0.3c R3 and will not work in earlier versions!
  • Callback OnUnoccupiedVehicleUpdate is called very frequently per second per unoccupied vehicle. You should refrain from implementing intensive calculations or intensive file writing/reading operations in this callback.
  • GetVehiclePos will return the old coordinates of the vehicle before this update.


Parameters:
(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z, Float:vel_x, Float:vel_y, Float:vel_z)
int vehicleid The ID of the vehicle that's position was updated.
int playerid The ID of the player that sent a vehicle position sync update.
int passenger_seat The ID of the seat if the player is a passenger.
float new_x The new X coordinate of the vehicle. This parameter was added in 0.3z. Leave it out if using an earlier version.
float new_y The new Y coordinate of the vehicle. This parameter was added in 0.3z. Leave it out if using an earlier version.
float new_z The new Z coordinate of the vehicle. This parameter was added in 0.3z. Leave it out if using an earlier version.
float vel_x The new X velocity of the vehicle. This parameter was added in 0.3z R4. Leave it out if using an earlier version.
float vel_y The new Y velocity of the vehicle. This parameter was added in 0.3z R4. Leave it out if using an earlier version.
float vel_z The new Z velocity of the vehicle. This parameter was added in 0.3z R4. Leave it out if using an earlier version.

Passenger seat: 0 = not in vehicle, 1 = front passenger, 2 = backleft, 3 = backright, 4+ is for coach/bus etc. with many passenger seats.

Return Values:
Returning 0 in this callback will stop the vehicle's position being synced to other players. Update is still sent to the updating player. Useful for combating vehicle teleport hacks.
  • It is always called first in filterscripts so returning 0 there also blocks other scripts from seeing it.


Examples:
public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z, Float:vel_x, Float:vel_y, Float:vel_z)
{
    // Check if it moved far	
    if(GetVehicleDistanceFromPoint(vehicleid, new_x, new_y, new_z) > 50.0)
    {
        // Reject the update
        return 0;
    }
 
    return 1;
}


Related Callbacks
The following callbacks might be useful as well, as they are related to this callback in one way or another.