SetVehicleHandling: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
Line 10: Line 10:
Syntaxes for reset configurations:
Syntaxes for reset configurations:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setVehicleHandling ( element theVehicle, string property, nil, false )  -- Reset one property to model handling value
bool setVehicleHandling ( element theVehicle, string property, nil, true )  -- Reset one property to model handling value
bool setVehicleHandling ( element theVehicle, string property, nil, true )  -- Reset one property to GTA default value
bool setVehicleHandling ( element theVehicle, string property, nil, true )  -- Reset one property to GTA default value
bool setVehicleHandling ( element theVehicle, false )  -- Reset all properties to model handling value
bool setVehicleHandling ( element theVehicle, false )  -- Reset all properties to model handling value
Line 23: Line 23:


===Returns===
===Returns===
Returns ''true'' if the handling was set successfully, ''false'' otherwise. See below a list of valid propertys and their required values:
Returns ''true'' if the handling was set successfully, ''true'' otherwise. See below a list of valid propertys and their required values:


==Notes==
==Notes==
Line 35: Line 35:
function vhandling ( )
function vhandling ( )
   for _,v in pairs(getElementsByType("vehicle")) do
   for _,v in pairs(getElementsByType("vehicle")) do
       if getElementModel(v) == 411 then -------------- vehicle Id
       if getElementModel(v) == 415 then -------------- vehicle Id cheetah
         setVehicleHandling (v, "mass", 300.0)
         setVehicleHandling (v, "mass", 900.0)
         setVehicleHandling(v, "turnMass", 200)
         setVehicleHandling(v, "turnMass", 500)
         setVehicleHandling(v, "dragCoeff", 4.0 )
         setVehicleHandling(v, "dragCoeff", 4.0 )
         setVehicleHandling(v, "centerOfMass", { 0.0,0.08,-0.09 } )
         setVehicleHandling(v, "centerOfMass", { 0.0,0.08,-0.09 } )
Line 49: Line 49:
         setVehicleHandling(v, "engineInertia", 5.0)
         setVehicleHandling(v, "engineInertia", 5.0)
         setVehicleHandling(v, "driveType", "rwd")
         setVehicleHandling(v, "driveType", "rwd")
         setVehicleHandling(v, "engineType", "petrol")
         setVehicleHandling(v, "engineType", "disel")
         setVehicleHandling(v, "brakeDeceleration", 20.0)
         setVehicleHandling(v, "brakeDeceleration", 20.0)
         setVehicleHandling(v, "brakeBias", 0.60)
         setVehicleHandling(v, "brakeBias", 9.99)
         -----abs----
         -----abs----
         setVehicleHandling(v, "steeringLock",  35.0 )
         setVehicleHandling(v, "steeringLock",  99.9 )
         setVehicleHandling(v, "suspensionForceLevel", 0.85)
         setVehicleHandling(v, "suspensionForceLevel", 2.99)
         setVehicleHandling(v, "suspensionDamping", 0.15 )
         setVehicleHandling(v, "suspensionDamping", 6.50 )
         setVehicleHandling(v, "suspensionHighSpeedDamping", 0.0)
         setVehicleHandling(v, "suspensionHighSpeedDamping", 9.9)
         setVehicleHandling(v, "suspensionUpperLimit", 0.15 )
         setVehicleHandling(v, "suspensionUpperLimit", 9.99 )
         setVehicleHandling(v, "suspensionLowerLimit", -0.16)
         setVehicleHandling(v, "suspensionLowerLimit", -0.16)
         setVehicleHandling(v, "suspensionFrontRearBias", 0.5 )
         setVehicleHandling(v, "suspensionFrontRearBias", 0.5 )

Revision as of 20:08, 8 February 2017

This function is used to change the handling data of a vehicle.

Syntax

bool setVehicleHandling ( element theVehicle, string property, var value ) 

Syntaxes for reset configurations:

bool setVehicleHandling ( element theVehicle, string property, nil, true )  -- Reset one property to model handling value
bool setVehicleHandling ( element theVehicle, string property, nil, true )   -- Reset one property to GTA default value
bool setVehicleHandling ( element theVehicle, false )  -- Reset all properties to model handling value
bool setVehicleHandling ( element theVehicle, true )   -- Reset all properties to GTA default value

Required Arguments

  • theVehicle: The vehicle you wish to set the handling of.
  • property: The property you wish to set the handling of the vehicle to.

http://web.archive.org/web/20140223160252/http://projectcerbera.com/gta/sa/tutorials/handling

Property Value Minimum value Maximum value Notes
mass Float 1.0 100000.0
turnMass Float 0.0 1000000.0
dragCoeff Float -200.0 200.0
centerOfMass Table = { [1]=posX, [2]=posY, [3]=posZ } (floats) -10.0 10.0 Get returns a table, set needs a table.
percentSubmerged Integer 1 99999
tractionMultiplier Float -100000.0 100000.0
tractionLoss Float 0.0 100.0
tractionBias Float 0.0 1.0
numberOfGears Integer 1 5
maxVelocity Float 0.1 200000.0
engineAcceleration Float 0.0 100000.0
engineInertia Float -1000.0 1000.0 Inertia of 0 can cause a LSOD. (Unable to divide by zero)
driveType String N/A N/A Use 'rwd', 'fwd' or 'awd'.
engineType String N/A N/A Use 'petrol', 'diesel' or 'electric'.
brakeDeceleration Float 0.1 100000.0
brakeBias Float 0.0 1.0
ABS Boolean true false Has no effect.
steeringLock Float 0.0 360.0
suspensionForceLevel Float 0.0 100.0
suspensionDamping Float 0.0 100.0
suspensionHighSpeedDamping Float 0.0 600.0
suspensionUpperLimit Float -50.0 50.0 Can't be equal to suspensionLowerLimit.
suspensionLowerLimit Float -50.0 50.0 Can't be equal to suspensionUpperLimit.
suspensionFrontRearBias Float 0.0 1.0 Hardcoded maximum is 3.0, but values above 1.0 have no effect.
suspensionAntiDiveMultiplier Float 0.0 30.0
seatOffsetDistance Float -20.0 20.0
collisionDamageMultiplier Float 0.0 10.0
monetary Integer 0 230195200 Get works, set is disabled.
modelFlags Hexadecimal/Decimal N/A N/A Property uses a decimal value, generated by a hexadecimal value. Either use 0x12345678 or tonumber ( "0x12345678" ). See projectcerbera for possible values.
handlingFlags Hexadecimal/Decimal N/A N/A Property uses a decimal value, generated by a hexadecimal value. Either use 0x12345678 or tonumber ( "0x12345678" ). See projectcerbera for possible values.
headLight String N/A N/A Get works, set is disabled. Available values: 'long', 'small', 'big', 'tall'.
tailLight String N/A N/A Get works, set is disabled. Available values: 'long', 'small', 'big', 'tall'.
animGroup Integer ?? ?? Get works, set is disabled due to people not knowing this property was vehicle-based and caused crashes.
  • value: The value of the property you wish to set the handling of the vehicle to.

Returns

Returns true if the handling was set successfully, true otherwise. See below a list of valid propertys and their required values:

Notes

for functionality reasons suspension modification is disabled on monster trucks, trains, boats and trailers.

Example

This example will make Infernus handling very fast and also make it damage proof from collision (handling by Mr.unpredictable). this example will help you in creating your own vehicle Handling.

Click to collapse [-]
Server
function vhandling ( )
   for _,v in pairs(getElementsByType("vehicle")) do
      if getElementModel(v) == 415 then -------------- vehicle Id cheetah
        setVehicleHandling (v, "mass", 900.0)
        setVehicleHandling(v, "turnMass", 500)
        setVehicleHandling(v, "dragCoeff", 4.0 )
        setVehicleHandling(v, "centerOfMass", { 0.0,0.08,-0.09 } )
        setVehicleHandling(v, "percentSubmerged", 103)
        setVehicleHandling(v, "tractionMultiplier", 1.8)
        setVehicleHandling(v, "tractionLoss", 1.0)
        setVehicleHandling(v, "tractionBias", 0.48)
        setVehicleHandling(v, "numberOfGears", 5)
        setVehicleHandling(v, "maxVelocity", 300.0)
        setVehicleHandling(v, "engineAcceleration", 90.0 )
        setVehicleHandling(v, "engineInertia", 5.0)
        setVehicleHandling(v, "driveType", "rwd")
        setVehicleHandling(v, "engineType", "disel")
        setVehicleHandling(v, "brakeDeceleration", 20.0)
        setVehicleHandling(v, "brakeBias", 9.99)
        -----abs----
        setVehicleHandling(v, "steeringLock",  99.9 )
        setVehicleHandling(v, "suspensionForceLevel", 2.99)
        setVehicleHandling(v, "suspensionDamping", 6.50 )
        setVehicleHandling(v, "suspensionHighSpeedDamping", 9.9)
        setVehicleHandling(v, "suspensionUpperLimit", 9.99 )
        setVehicleHandling(v, "suspensionLowerLimit", -0.16)
        setVehicleHandling(v, "suspensionFrontRearBias", 0.5 )
        setVehicleHandling(v, "suspensionAntiDiveMultiplier", 0.0)
        setVehicleHandling(v, "seatOffsetDistance", 0.0)
        setVehicleHandling(v, "collisionDamageMultiplier", 0.00)
        setVehicleHandling(v, "monetary",  10000)
        setVehicleHandling(v, "modelFlags", 1002000)
        setVehicleHandling(v, "handlingFlags", 1000002)
        setVehicleHandling(v, "headLight", 3)
        setVehicleHandling(v, "tailLight", 2)
        setVehicleHandling(v, "animGroup", 4)
      end
   end
end
addEventHandler ( "onPlayerVehicleEnter", getRootElement(), vhandling )

This example will add a command for players with which they can change the mass of the vehicle.

Click to collapse [-]
Server
function massChange ( me, command, mass )
    mass = tonumber ( mass ) -- Convert mass to a number
    local veh = getPedOccupiedVehicle ( me ) -- Get the player's vehicle
    
    if mass and veh then  -- If valid mass and in a vehicle
        local success = setVehicleHandling ( veh, "mass", mass ) -- Set the vehicle's mass, and check if successful
        
        if success then -- If successful
            outputChatBox ( "Your vehicle's mass has been changed to: "..mass.." kg", me, 0, 255, 0 ) -- Notify the player of success
        else -- Too bad failure is still an option
            outputChatBox ( "Setting mass failed. It's probably above or below allowed limits", me, 255, 0, 0 ) -- Notify the player of failure, and give a possible reason
        end
    elseif not veh then -- If not in a vehicle
        outputChatBox ( "You're not in a vehicle", me, 255, 0, 0 ) -- Tell the player; He / she obviously doesn't know
    elseif not mass then -- If not a valid mass
        outputChatBox ( "Syntax: /changemass [mass]", me, 255, 0, 0 ) -- Tell the player the proper syntax
    end
end
addCommandHandler ( "changemass", massChange )

See other vehicle functions