OnClientVehicleCollision: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 11: Line 11:
velocityX, velocityY, velocityZ
velocityX, velocityY, velocityZ
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
entity theHitElement, float force, int bodypart, float collisionX, float collisionY, float collisionZ, float velocityX, float velocityY, float velocityZ
entity theHitElement, float force, int bodypart, float collisionX, float collisionY, float collisionZ, float velocityX, float velocityY, float velocityZ, hitElementForce, model
</syntaxhighlight>
</syntaxhighlight>
*'''theHitElement:''' the entity that took damage
*'''theHitElement:''' the entity that took damage
Line 22: Line 22:
*'''velocityY:''' the Y velocity of the source before the collision took place
*'''velocityY:''' the Y velocity of the source before the collision took place
*'''velocityZ:''' the Z velocity of the source before the collision took place
*'''velocityZ:''' the Z velocity of the source before the collision took place
*'''hitElementforce:''' 0 for non vehicles or the force of the other vehicle (if it's 0 the source is the collider)
*'''model:''' model of the hit element (useful to detect building collisions as hitElement will be nil)


==Source==
==Source==

Revision as of 12:30, 11 January 2012

Added in MTA SA 1.3

This event is triggered when a vehicle collides with peds/vehicles/objects but not buildings.

Note: collidedWith will be false if it's a default SA object and it will trigger twice for vehicles because one vehicle hit another and one got hit by another.

Parameters

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

entity theHitElement, float force, int bodypart, float collisionX, float collisionY, float collisionZ, float velocityX, float velocityY, float velocityZ, hitElementForce, model
  • theHitElement: the entity that took damage
  • force: the force of the damage (Note: this is NOT the damage it is a force value which is then multiplied by the vehicles collision damage multiplier. for an example of this see below)
  • bodyPart: the bodypart that hit the other element
  • collisionX: the X position the collision took place
  • collisionY: the Y position the collision took place
  • collisionZ: the Z position the collision took place
  • velocityX: the X velocity of the source before the collision took place
  • velocityY: the Y velocity of the source before the collision took place
  • velocityZ: the Z velocity of the source before the collision took place
  • hitElementforce: 0 for non vehicles or the force of the other vehicle (if it's 0 the source is the collider)
  • model: model of the hit element (useful to detect building collisions as hitElement will be nil)

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