OnClientVehicleCollision: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
m (Scaled marker + made it only for local players vehicle)
Line 17: Line 17:
addEventHandler("onClientVehicleCollision", getRootElement(),
addEventHandler("onClientVehicleCollision", getRootElement(),
     function(collider,force, bodyPart, x, y, z, vx, vy, vz)
     function(collider,force, bodyPart, x, y, z, vx, vy, vz)
         -- force does not take into account the collision damage multiplier (this is what makes heavy vehicles take less damage than banshees for instance) so take that into account to get the damage delt
         if ( source == getPedOccupiedVehicle(getLocalPlayer() ) then
        local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier
            -- force does not take into account the collision damage multiplier (this is what makes heavy vehicles take less damage than banshees for instance) so take that into account to get the damage delt
        -- Create a marker (this will be sized roughly the amount of damage done by each hit)
            local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier
        local m = createMarker(x, y, z, "corona", force * fDamageMultiplier, 0, 9, 231)
            -- Create a marker (I've scaled this down to 1% of the actual damage as we get huge markers else)
        -- Destroy the marker in 2 seconds
            local m = createMarker(x, y, z, "corona", force * fDamageMultiplier * 0.01, 0, 9, 231)
        setTimer(destroyElement, 2000, 1, m)
            -- Destroy the marker in 2 seconds
            setTimer(destroyElement, 2000, 1, m)
        end
     end
     end
)
)

Revision as of 10:02, 11 January 2012

Added in MTA SA 1.3

This event is triggered when a vehicle collides with something.

Parameters

collidedWith, force, bodyPart, collisionX, collisionY, collisionZ, velocityX, velocityY, velocityZ

Source

The source of this event is the vehicle that collided with something.

Example

addEventHandler("onClientVehicleCollision", getRootElement(),
    function(collider,force, bodyPart, x, y, z, vx, vy, vz)
         if ( source == getPedOccupiedVehicle(getLocalPlayer() ) then
             -- force does not take into account the collision damage multiplier (this is what makes heavy vehicles take less damage than banshees for instance) so take that into account to get the damage delt
             local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier
             -- Create a marker (I've scaled this down to 1% of the actual damage as we get huge markers else)
             local m = createMarker(x, y, z, "corona", force * fDamageMultiplier * 0.01, 0, 9, 231)
             -- Destroy the marker in 2 seconds
             setTimer(destroyElement, 2000, 1, m)
         end
    end
)

See Also

Client vehicle events


Client event functions