CreateLight: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
m (Some optimizations and error fixes in →‎Example)
mNo edit summary
Line 63: Line 63:
==Changelog==
==Changelog==
{{ChangelogHeader}}
{{ChangelogHeader}}
{{ChangelogItem|1.4.0-9.07050|Addendum to r7048 (Applied source patch #8737 (PointLight Creation) by Lex128.)}}
{{ChangelogItem|1.5.0-3.0152|Addendum to r7048 (Applied source patch #8737 (PointLight Creation) by Lex128.)}}


== See Also ==
== See Also ==
{{Client_light_functions}}
{{Client_light_functions}}

Revision as of 08:42, 26 February 2015

This function creates a 3D light to the world.

[[{{{image}}}|link=|]] Note:
  • The direction of the light affects the light behavior only if the light type is spot light.
  • One light will only apply the illumination multiplier to peds, wheels and number plates - as seen here.
  • Two and more lights will apply the illumination multiplier to everything - as seen here.

Syntax

light createLight ( int lightType, float posX, float posY, float posX, [ float radius = 3, int r = 255, int g = 0, int b = 0, float dirX = 0, float dirY = 0, float dirZ = 0, bool createsShadow = false ] )

OOP Syntax Help! I don't understand this!

Method: Light(...)


Required Arguments

  • lightType: An integer representing the type of light to create.
    • 0: Point light, which illuminates surroundings evenly across the light radius.
    • 1: Spot light, which illuminates the direction of the light defined by dirX, dirY and dirZ.
    • 2: Dark light, which darkens its surrounding elements to full black.
  • x: A floating point number representing the X coordinate on the map.
  • y: A floating point number representing the Y coordinate on the map.
  • z: A floating point number representing the Z coordinate on the map.

Optional Arguments

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • radius: A floating point number representing the radius of the light.
  • r: An integer number representing the amount of red to use in the colouring of the light (0 - 255).
  • g: An integer number representing the amount of green to use in the colouring of the light (0 - 255).
  • b: An integer number representing the amount of blue to use in the colouring of the light (0 - 255).
  • dirX: A floating point number representing the light direction's X coordinate on the map.
  • dirY: A floating point number representing the light direction's Y coordinate on the map.
  • dirZ: A floating point number representing the light direction's Z coordinate on the map.
  • createsShadow: A boolean representing whether or not does the light cast shadows.

Returns

Returns the light element if creation was successful, false otherwise.

Example

This example will make every player to look completely black without using shaders. It will also dark vehicles he uses too.

local lightRadius = 2 * getElementRadius(localPlayer) -- Every standard player model has the same radius, so save it for quicker access
local lights = { localPlayer = createLight(2, 0, 0, 0, lightRadius) } -- Intitialize our light table with the one that the local player will use for the effect

local function addPlayerDarkLight()
    -- Create a new dark light for that player
    lights[source] = createLight(2, 0, 0, 0, lightRadius)
end
addEventHandler("onClientPlayerJoin", root, addPlayerDarkLight)

local function removePlayerDarkLight()
    -- Destroy the light of that player and remove references
    destroyElement(lights[source])
    lights[source] = nil
end
addEventHandler("onClientPlayerQuit", root, removePlayerDarkLight)

-- Make the dark light assigned to each player to move with his center, so we archieve the desired effect
local function updateLightPositions()
    for player, light in pairs(lights) do
        setElementPosition(light, getPedBonePosition(player, 2))
    end
end
addEventHandler("onClientPreRender", root, updateLightPositions)

Changelog

Version Description
1.5.0-3.0152 Addendum to r7048 (Applied source patch #8737 (PointLight Creation) by Lex128.)

See Also