<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Loki</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Loki"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Loki"/>
	<updated>2026-05-03T13:32:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnDgsMouseClickUp&amp;diff=64915</id>
		<title>OnDgsMouseClickUp</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnDgsMouseClickUp&amp;diff=64915"/>
		<updated>2020-01-20T16:36:36Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Parameters */ removed invalid parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client event}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This event happens when any dgs-element clicked ( Mouse up ).&lt;br /&gt;
&lt;br /&gt;
And this event is for those who are converting gui to dgs.&lt;br /&gt;
{{Note|The '''player''' who clicked the dgs-element is always the [[localPlayer]].}}&lt;br /&gt;
{{Note|If you want to ask why everything is triggered... See the forth parameter of [[addEventHandler]]}}&lt;br /&gt;
&lt;br /&gt;
==Parameters== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string button, int absoluteX, int absoluteY&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''button:''' the name of the button which will be clicked , it can be ''left'', ''right'', ''middle''&lt;br /&gt;
*'''absoluteX:''' the X position of the mouse cursor, in pixels, measured from the left side of the screen.&lt;br /&gt;
*'''absoluteY:''' the Y position of the mouse cursor, in pixels, measured from the top of the screen.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The [[event system#Event source|source]] of this event is the DGS element that was clicked.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates an edit box alongside an &amp;quot;Output!&amp;quot; button. When the button is clicked with the left mouse button, it will output the message in the edit box into the chat box.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
DGS = exports.dgs&lt;br /&gt;
-- When client's resource starts, create the GUI&lt;br /&gt;
function initGUI( )&lt;br /&gt;
    -- Create our button&lt;br /&gt;
    btnOutput = DGS:dgsCreateButton( 0.7, 0.1, 0.2, 0.1, &amp;quot;Output!&amp;quot;, true )&lt;br /&gt;
&lt;br /&gt;
    -- And attach our button to the outputEditBox function&lt;br /&gt;
    addEventHandler ( &amp;quot;onDgsMouseClickUp&amp;quot;, btnOutput, outputEditBox )&lt;br /&gt;
&lt;br /&gt;
    -- Create an edit box and define it as &amp;quot;editBox&amp;quot;.&lt;br /&gt;
    editBox = DGS:dgsCreateEdit( 0.3, 0.1, 0.4, 0.1, &amp;quot;Type your message here!&amp;quot;, true )&lt;br /&gt;
end&lt;br /&gt;
addEventHandler( &amp;quot;onClientResourceStart&amp;quot;, getResourceRootElement( getThisResource( ) ), initGUI )&lt;br /&gt;
&lt;br /&gt;
-- Setup our function to output the message to the chatbox&lt;br /&gt;
function outputEditBox ( button )&lt;br /&gt;
    if button == &amp;quot;left&amp;quot; then&lt;br /&gt;
        local text = DGS:dgsGetText( editBox )-- Get the text from the edit box&lt;br /&gt;
        outputChatBox ( text ) -- Output that text&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clear Example===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
DGS = exports.dgs&lt;br /&gt;
&lt;br /&gt;
btnOutput = DGS:dgsCreateButton( 0.7, 0.1, 0.2, 0.1, &amp;quot;Output!&amp;quot;, true )&lt;br /&gt;
&lt;br /&gt;
function outputEditBox ( button )&lt;br /&gt;
    if button == &amp;quot;left&amp;quot; then&lt;br /&gt;
        outputChatBox ( &amp;quot;Hey bro, you clicked me, your state is &amp;quot;..state )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onDgsMouseClickUp&amp;quot;, btnOutput, outputEditBox )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
===DGS events===&lt;br /&gt;
{{DGSEVENTS}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiGridListAddRow&amp;diff=58452</id>
		<title>GuiGridListAddRow</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiGridListAddRow&amp;diff=58452"/>
		<updated>2018-08-21T01:40:19Z</updated>

		<summary type="html">&lt;p&gt;Loki: small QOL update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Adds a row to a grid list, and optionally add simple text items with your rows.  Use [[guiGridListSetItemText]] to add row headers.&lt;br /&gt;
&lt;br /&gt;
{{Deprecated feature|3.0153|1.5.2|&lt;br /&gt;
ATTENTION: Without [[guiGridListSetItemText]] there is no row added to the grid. &lt;br /&gt;
Look at the example, first you give the row a name with '''[[row =]]''' guiGridListAddRow ( playerList ), and then you use [[guiGridListSetItemText]]. }}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
{{New feature/item|3.0153|1.5.3||&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int guiGridListAddRow ( element gridList [, int/string itemText1, int/string itemText2, ... ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[Element/GUI/Gridlist|GuiGridList]]:addRow}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''gridList:''' The grid list you want to add a row to&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{New feature/item|3.0153|1.5.3||&lt;br /&gt;
*'''itemText1:''' The text for the first column item in the row.  Either a string or a number can be passed (use numbers for sorting purposes).&lt;br /&gt;
*'''itemText2:''' The text for the second column item in the row.  Either a string or a number can be passed (use numbers for sorting purposes).&lt;br /&gt;
*'''...:''' Item text for any other columns&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns the row id if it has been created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates a player list on the right side of the screen and fills it with the names of the connected players.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function clientsideResourceStart ()&lt;br /&gt;
    local playerList = guiCreateGridList ( 0.80, 0.10, 0.15, 0.60, true ) -- Create the grid list&lt;br /&gt;
    local column = guiGridListAddColumn( playerList, &amp;quot;Player&amp;quot;, 0.85 ) -- Create a 'players' column in the list&lt;br /&gt;
    if ( column ) then -- If the column was successfully created&lt;br /&gt;
        for id, playeritem in ipairs(getElementsByType(&amp;quot;player&amp;quot;)) do &lt;br /&gt;
            --Loop through all the players, adding them to the table&lt;br /&gt;
            guiGridListAddRow ( playerList, getPlayerName ( playeritem ) )&lt;br /&gt;
            -- create a row and add the player's name to the first column&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientResourceStart&amp;quot;, getRootElement(), clientsideResourceStart )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{GUI functions}}&lt;br /&gt;
{{GUI_events}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetTrainTrack&amp;diff=55713</id>
		<title>SetTrainTrack</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetTrainTrack&amp;diff=55713"/>
		<updated>2018-07-07T17:02:11Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Shared function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6|7485|&lt;br /&gt;
Sets the track of a train&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool setTrainTrack ( vehicle train, int track )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[vehicle]]:setTrack|track|getTrainTrack}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''train:''' the train of which to set the track&lt;br /&gt;
*'''track:''' the track where you want to set the train. It can be 0, 1, 2 or 3.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the track was set to the train, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This server-side script allows the player to change the track of their train.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Procedural&amp;quot; class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;trackies&amp;quot;,&lt;br /&gt;
	function (player, _, track)&lt;br /&gt;
		local theVehicle = getPedOccupiedVehicle(player)&lt;br /&gt;
		if not theVehicle then&lt;br /&gt;
			outputChatBox(&amp;quot;You are not in a vehicle!&amp;quot;, player)&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if getVehicleType(theVehicle) == &amp;quot;Train&amp;quot; then&lt;br /&gt;
			setTrainTrack(theVehicle, track)&lt;br /&gt;
		else&lt;br /&gt;
			outputChatBox(&amp;quot;You are not in a train!&amp;quot;, player)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;section name=&amp;quot;Object Oriented&amp;quot; class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;trackies&amp;quot;,&lt;br /&gt;
	function (player, _, track)&lt;br /&gt;
		local veh = player.vehicle&lt;br /&gt;
		if not veh then&lt;br /&gt;
			return player:outputChat(&amp;quot;You are not in a vehicle!&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if veh.vehicleType == &amp;quot;Train&amp;quot; then&lt;br /&gt;
			veh.track = track&lt;br /&gt;
		else&lt;br /&gt;
			player:outputChat(&amp;quot;You are not in a train!&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsVehicleLocked&amp;diff=51917</id>
		<title>IsVehicleLocked</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsVehicleLocked&amp;diff=51917"/>
		<updated>2017-08-11T22:53:32Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This will tell you if a vehicle is locked.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool isVehicleLocked ( vehicle theVehicle )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[vehicle]]:isLocked|locked|setVehicleLocked}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theVehicle:''' The [[vehicle]] that you want to obtain the locked status of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the vehicle specified is locked, ''false'' if is unlocked or the vehicle specified is invalid.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example allows a player to lock his vehicle when he is inside it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function lockcar ( thePlayer )&lt;br /&gt;
    playervehicle = getPlayerOccupiedVehicle ( thePlayer )   -- define 'playervehicle' as the vehicle the player is in&lt;br /&gt;
    if ( playervehicle ) then                                -- if a player is in a vehicle&lt;br /&gt;
        if isVehicleLocked ( playervehicle ) then            -- and if the vehicle is already locked&lt;br /&gt;
            setVehicleLocked ( playervehicle, false )        -- unlock it&lt;br /&gt;
        else                                                 -- otherwise (if it isn't locked) &lt;br /&gt;
            setVehicleLocked ( playervehicle, true )         -- lock it&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bindLockOnSpawn ( theSpawnpoint )                     -- when a player spawns&lt;br /&gt;
    bindKey ( source, &amp;quot;l&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;Lock car&amp;quot;, lockcar )     -- bind the 'l' key to the 'lockcar' function&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerSpawn&amp;quot;, getRootElement(), bindLockOnSpawn )     -- add an event handler for onPlayerSpawn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsVehicleLocked&amp;diff=51916</id>
		<title>IsVehicleLocked</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsVehicleLocked&amp;diff=51916"/>
		<updated>2017-08-11T22:52:01Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This will tell you if a vehicle is locked.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool isVehicleLocked ( vehicle theVehicle )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[vehicle]]:isLocked|locked|setVehicleLocked}}&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[vehicle]]:isLocked|locked|setVehicleLocked}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theVehicle:''' The [[vehicle]] that you want to obtain the locked status of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the vehicle specified is locked, ''false'' if is unlocked or the vehicle specified is invalid.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example allows a player to lock his vehicle when he is inside it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function lockcar ( thePlayer )&lt;br /&gt;
    playervehicle = getPlayerOccupiedVehicle ( thePlayer )   -- define 'playervehicle' as the vehicle the player is in&lt;br /&gt;
    if ( playervehicle ) then                                -- if a player is in a vehicle&lt;br /&gt;
        if isVehicleLocked ( playervehicle ) then            -- and if the vehicle is already locked&lt;br /&gt;
            setVehicleLocked ( playervehicle, false )        -- unlock it&lt;br /&gt;
        else                                                 -- otherwise (if it isn't locked) &lt;br /&gt;
            setVehicleLocked ( playervehicle, true )         -- lock it&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bindLockOnSpawn ( theSpawnpoint )                     -- when a player spawns&lt;br /&gt;
    bindKey ( source, &amp;quot;l&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;Lock car&amp;quot;, lockcar )     -- bind the 'l' key to the 'lockcar' function&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerSpawn&amp;quot;, getRootElement(), bindLockOnSpawn )     -- add an event handler for onPlayerSpawn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsVehicleLocked&amp;diff=51915</id>
		<title>IsVehicleLocked</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsVehicleLocked&amp;diff=51915"/>
		<updated>2017-08-11T22:50:03Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This will tell you if a vehicle is locked.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool isVehicleLocked ( vehicle theVehicle )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[vehicle]]:isLocked|locked|setVehicleLocked}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theVehicle:''' The [[vehicle]] that you want to obtain the locked status of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the vehicle specified is locked, ''false'' if is unlocked or the vehicle specified is invalid.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example allows a player to lock his vehicle when he is inside it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function lockcar ( thePlayer )&lt;br /&gt;
    playervehicle = getPlayerOccupiedVehicle ( thePlayer )   -- define 'playervehicle' as the vehicle the player is in&lt;br /&gt;
    if ( playervehicle ) then                                -- if a player is in a vehicle&lt;br /&gt;
        if isVehicleLocked ( playervehicle ) then            -- and if the vehicle is already locked&lt;br /&gt;
            setVehicleLocked ( playervehicle, false )        -- unlock it&lt;br /&gt;
        else                                                 -- otherwise (if it isn't locked) &lt;br /&gt;
            setVehicleLocked ( playervehicle, true )         -- lock it&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bindLockOnSpawn ( theSpawnpoint )                     -- when a player spawns&lt;br /&gt;
    bindKey ( source, &amp;quot;l&amp;quot;, &amp;quot;down&amp;quot;, &amp;quot;Lock car&amp;quot;, lockcar )     -- bind the 'l' key to the 'lockcar' function&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerSpawn&amp;quot;, getRootElement(), bindLockOnSpawn )     -- add an event handler for onPlayerSpawn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetVehicleLocked&amp;diff=51914</id>
		<title>SetVehicleLocked</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetVehicleLocked&amp;diff=51914"/>
		<updated>2017-08-11T20:25:34Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function can be used to set a vehicle to be locked or unlocked.  Locking a vehicle restricts access to all doors of a vehicle.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setVehicleLocked ( vehicle theVehicle, bool locked )            &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[vehicle]]:setLocked|locked|isVehicleLocked}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theVehicle:''' The vehicle which you wish to change the lock status of&lt;br /&gt;
*'''locked:''' Boolean for the status you wish to set. Set ''true'' to lock, ''false'' to unlock&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the operation was successful, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example allows a player to lock his vehicle when he is inside it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function lockcar ( thePlayer )&lt;br /&gt;
    playervehicle = getPlayerOccupiedVehicle ( thePlayer )   -- define 'playervehicle' as the vehicle the player is in&lt;br /&gt;
    if ( playervehicle ) then                                -- if a player is in a vehicle&lt;br /&gt;
        if isVehicleLocked ( playervehicle ) then            -- and if the vehicle is already locked&lt;br /&gt;
            setVehicleLocked ( playervehicle, false )        -- unlock it&lt;br /&gt;
        else                                                 -- otherwise (if it isn't locked) &lt;br /&gt;
            setVehicleLocked ( playervehicle, true )         -- lock it&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bindLockOnSpawn ( theSpawnpoint )                     -- when a player spawns&lt;br /&gt;
    bindKey ( source, &amp;quot;l&amp;quot;, &amp;quot;down&amp;quot;, lockcar )                   -- bind the 'l' key to the 'lockcar' function&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerSpawn&amp;quot;, getRootElement(), bindLockOnSpawn )     -- add an event handler for onPlayerSpawn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetVehicleLocked&amp;diff=51913</id>
		<title>SetVehicleLocked</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetVehicleLocked&amp;diff=51913"/>
		<updated>2017-08-11T20:20:57Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function can be used to set a vehicle to be locked or unlocked.  Locking a vehicle restricts access to all doors of a vehicle.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setVehicleLocked ( vehicle theVehicle, bool locked )            &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[vehicle]]:setLocked|locked}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theVehicle:''' The vehicle which you wish to change the lock status of&lt;br /&gt;
*'''locked:''' Boolean for the status you wish to set. Set ''true'' to lock, ''false'' to unlock&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the operation was successful, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example allows a player to lock his vehicle when he is inside it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function lockcar ( thePlayer )&lt;br /&gt;
    playervehicle = getPlayerOccupiedVehicle ( thePlayer )   -- define 'playervehicle' as the vehicle the player is in&lt;br /&gt;
    if ( playervehicle ) then                                -- if a player is in a vehicle&lt;br /&gt;
        if isVehicleLocked ( playervehicle ) then            -- and if the vehicle is already locked&lt;br /&gt;
            setVehicleLocked ( playervehicle, false )        -- unlock it&lt;br /&gt;
        else                                                 -- otherwise (if it isn't locked) &lt;br /&gt;
            setVehicleLocked ( playervehicle, true )         -- lock it&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function bindLockOnSpawn ( theSpawnpoint )                     -- when a player spawns&lt;br /&gt;
    bindKey ( source, &amp;quot;l&amp;quot;, &amp;quot;down&amp;quot;, lockcar )                   -- bind the 'l' key to the 'lockcar' function&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerSpawn&amp;quot;, getRootElement(), bindLockOnSpawn )     -- add an event handler for onPlayerSpawn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiGetBrowser&amp;diff=51830</id>
		<title>GuiGetBrowser</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiGetBrowser&amp;diff=51830"/>
		<updated>2017-08-10T01:54:41Z</updated>

		<summary type="html">&lt;p&gt;Loki: OOP Syntax error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0150|1.5||&lt;br /&gt;
This function creates gets the browser element behind a gui-browser (a browser that has been created via [[guiCreateBrowser]]).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
browser guiGetBrowser ( gui-browser theBrowser )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/gui-browser|guiBrowser]]:getBrowser|browser|}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theBrowser:''' The gui-browser&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns the [[Element/Browser|Browser]] element if a correct [[Element/gui-browser|gui-browser]] has been passed, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This examples get's browser element from gui-browser and attach a webbrowser to a CEGUI window.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in remote mode.&lt;br /&gt;
local window = guiCreateWindow(200, 200, 1024, 768, &amp;quot;Webbrowser&amp;quot;, false)&lt;br /&gt;
local browser = guiCreateBrowser(0, 0, 800, 600, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
-- After this event has been triggered, we will be able to load our URL&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) -- Get the browser element from gui-browser&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		-- After the browser has been initialized, we can load www.youtube.com&lt;br /&gt;
		loadBrowserURL(source, &amp;quot;http://www.youtube.com&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Control_names&amp;diff=51829</id>
		<title>Control names</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Control_names&amp;diff=51829"/>
		<updated>2017-08-10T01:14:38Z</updated>

		<summary type="html">&lt;p&gt;Loki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists all the control names. These can be used as key arguments by the console commands ''bind'' and ''unbind'' as well as the script functions [[bindKey]], [[unbindKey]] etc.&lt;br /&gt;
&lt;br /&gt;
Lua table of all the valid control names listed on this page:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;controlTable = { &amp;quot;fire&amp;quot;, &amp;quot;aim_weapon&amp;quot;, &amp;quot;next_weapon&amp;quot;, &amp;quot;previous_weapon&amp;quot;, &amp;quot;forwards&amp;quot;, &amp;quot;backwards&amp;quot;, &amp;quot;left&amp;quot;, &amp;quot;right&amp;quot;, &amp;quot;zoom_in&amp;quot;, &amp;quot;zoom_out&amp;quot;,&lt;br /&gt;
 &amp;quot;change_camera&amp;quot;, &amp;quot;jump&amp;quot;, &amp;quot;sprint&amp;quot;, &amp;quot;look_behind&amp;quot;, &amp;quot;crouch&amp;quot;, &amp;quot;action&amp;quot;, &amp;quot;walk&amp;quot;, &amp;quot;conversation_yes&amp;quot;, &amp;quot;conversation_no&amp;quot;,&lt;br /&gt;
 &amp;quot;group_control_forwards&amp;quot;, &amp;quot;group_control_back&amp;quot;, &amp;quot;enter_exit&amp;quot;, &amp;quot;vehicle_fire&amp;quot;, &amp;quot;vehicle_secondary_fire&amp;quot;, &amp;quot;vehicle_left&amp;quot;, &amp;quot;vehicle_right&amp;quot;,&lt;br /&gt;
 &amp;quot;steer_forward&amp;quot;, &amp;quot;steer_back&amp;quot;, &amp;quot;accelerate&amp;quot;, &amp;quot;brake_reverse&amp;quot;, &amp;quot;radio_next&amp;quot;, &amp;quot;radio_previous&amp;quot;, &amp;quot;radio_user_track_skip&amp;quot;, &amp;quot;horn&amp;quot;, &amp;quot;sub_mission&amp;quot;,&lt;br /&gt;
 &amp;quot;handbrake&amp;quot;, &amp;quot;vehicle_look_left&amp;quot;, &amp;quot;vehicle_look_right&amp;quot;, &amp;quot;vehicle_look_behind&amp;quot;, &amp;quot;vehicle_mouse_look&amp;quot;, &amp;quot;special_control_left&amp;quot;, &amp;quot;special_control_right&amp;quot;,&lt;br /&gt;
 &amp;quot;special_control_down&amp;quot;, &amp;quot;special_control_up&amp;quot; }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GTA control list==&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:3px solid green;margin-bottom:3px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;float:right;padding-right:5px;font-weight:bold;&amp;quot;&amp;gt;ON FOOT&amp;lt;/div&amp;gt;&lt;br /&gt;
* '''fire''' Fire a player's weapon&lt;br /&gt;
* '''aim_weapon''' Aim the player's current weapon (if possible)&lt;br /&gt;
* '''next_weapon''' Switch to the next weapon&lt;br /&gt;
* '''previous_weapon''' Switch to the previous weapon&lt;br /&gt;
* '''forwards''' Move forwards&lt;br /&gt;
* '''backwards''' Move backwards&lt;br /&gt;
* '''left''' Move left&lt;br /&gt;
* '''right''' Move right&lt;br /&gt;
* '''zoom_in''' Zoom targeted weapon in (sniper/rocket launcher/camera etc)&lt;br /&gt;
* '''zoom_out''' Zoom targeted weapon out&lt;br /&gt;
* '''change_camera''' Change camera mode&lt;br /&gt;
* '''jump''' Make the player jump&lt;br /&gt;
* '''sprint''' Make the player sprint&lt;br /&gt;
* '''look_behind''' Make the player look behind (and allow the player to see behind them)&lt;br /&gt;
* '''crouch''' Make the player crouch/duck&lt;br /&gt;
* '''action''' Show the stats menu&lt;br /&gt;
* '''walk''' Make the player move slowly/quietly&lt;br /&gt;
* '''conversation_yes''' Answer yes to a question&lt;br /&gt;
* '''conversation_no''' Answer no to a question&lt;br /&gt;
* '''group_control_forwards''' Make the group you are controlling move forwards&lt;br /&gt;
* '''group_control_back''' Make the group you are controlling move backwards&lt;br /&gt;
* '''enter_exit''' Make the player enter a vehicle. Also used for alternative fighting styles.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:3px solid red;margin-bottom:3px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;float:right;padding-right:5px;font-weight:bold;&amp;quot;&amp;gt;IN VEHICLE&amp;lt;/div&amp;gt;&lt;br /&gt;
* '''vehicle_fire''' Fire the player's vehicle's primary weapon (e.g. hunter's missiles) or shoot with driveby&lt;br /&gt;
* '''vehicle_secondary_fire''' Fire the player's vehicle's secondary weapon (e.g. hunter's minigun)&lt;br /&gt;
* '''vehicle_left''' Make the player's vehicle turn left&lt;br /&gt;
* '''vehicle_right''' Make the player's vehicle turn right&lt;br /&gt;
* '''steer_forward''' Make the player's vehicle turn down (lean forwards for helicopters/planes)&lt;br /&gt;
* '''steer_back''' Make the player's vehicle turn up (lean backwards for helicopters/planes)&lt;br /&gt;
* '''accelerate''' Make the player's vehicle accelerate&lt;br /&gt;
* '''brake_reverse''' Make the player's vehicle brake (slow down) and if stationary reverse&lt;br /&gt;
* '''radio_next''' Change to the next radio station (Doesn't work - use [[setRadioChannel]] and [[onClientPlayerRadioSwitch]] instead.)&lt;br /&gt;
* '''radio_previous''' Change to the previous radio station (Doesn't work - use [[setRadioChannel]] and [[onClientPlayerRadioSwitch]] instead.)&lt;br /&gt;
* '''radio_user_track_skip''' Skip the current track being played on the custom radio station&lt;br /&gt;
* '''horn''' Play the horn of the player's vehicle (if the vehicle has a horn) and can trigger the siren on emergency vehicles&lt;br /&gt;
* '''sub_mission''' Start a submission if one is avaliable (e.g. taxi missions)&lt;br /&gt;
* '''handbrake''' Apply the handbrake on the player's vehicle&lt;br /&gt;
* '''vehicle_look_left''' Look to the left&lt;br /&gt;
* '''vehicle_look_right''' Look to the right&lt;br /&gt;
* '''vehicle_look_behind''' Look behind&lt;br /&gt;
* '''vehicle_mouse_look''' &lt;br /&gt;
* '''special_control_left''' Move the some special vehicle component left (e.g. tank's turret)&lt;br /&gt;
* '''special_control_right''' Move the some special vehicle component right (e.g. tank's turret)&lt;br /&gt;
* '''special_control_down''' Move the some special vehicle component down (e.g. tank's turret)&lt;br /&gt;
* '''special_control_up''' Move the some special vehicle component up (e.g. tank's turret)&lt;br /&gt;
* '''enter_exit''' Make the player exit a vehicle&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MTA hard-coded commands==&lt;br /&gt;
The following are names of hard-coded MTA commands which do not use bindKey, but can act as bindKey by using them in an [[addCommandHandler]]. Other than that, this control list will '''only''' work with the functions [[toggleControl]] and [[toggleAllControls]]. Please note that [[toggleControl]] can't disable screenshot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:3px solid blue;margin-bottom:3px;&amp;quot;&amp;gt;&amp;lt;div&lt;br /&gt;
style=&amp;quot;float:right;padding-right:5px;font-weight:bold;&amp;quot;&amp;gt;MTA COMMANDS&amp;lt;/div&amp;gt;&lt;br /&gt;
* '''enter_passenger''' Enters the closest vehicle as passenger&lt;br /&gt;
* '''screenshot''' Takes a screenshot&lt;br /&gt;
* '''chatbox''' Opens the chatbox for input&lt;br /&gt;
* '''radar''' Toggles the radar-map showing&lt;br /&gt;
* '''radar_zoom_in''' Zooms in on the radar-map&lt;br /&gt;
* '''radar_zoom_out''' Zooms out on the radar-map&lt;br /&gt;
* '''radar_move_north''' Moves north on the radar-map&lt;br /&gt;
* '''radar_move_south''' Moves south on the radar-map&lt;br /&gt;
* '''radar_move_east''' Moves east on the radar-map&lt;br /&gt;
* '''radar_move_west''' Moves west on the radar-map&lt;br /&gt;
* '''radar_attach''' Attaches the view to the local-player on the radar-map&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Animate&amp;diff=51706</id>
		<title>Animate</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Animate&amp;diff=51706"/>
		<updated>2017-07-20T13:00:17Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function allows you to use interpolateBetween without render event and easily used.&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;animation animate(int/float from, int/float to, string/int easing, int duration, function onChange [ , function onEnd ])&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required arguments===&lt;br /&gt;
&lt;br /&gt;
* '''from''': the start value.&lt;br /&gt;
* '''to''': the end value.&lt;br /&gt;
* '''easing''': the [[Easing|easing function]] to use for the animation or can be used the easing number, e.g. &amp;quot;Linear&amp;quot; = 1, &amp;quot;InQuad&amp;quot; = 2, &amp;quot;OutQuad&amp;quot; = 3, ...&lt;br /&gt;
* '''duration''': the duration of animation.&lt;br /&gt;
* '''onChange''': the function to call when the animation value is changed.&lt;br /&gt;
&lt;br /&gt;
===Optional arguments===&lt;br /&gt;
* '''onEnd''': the function to call when the animation End.&lt;br /&gt;
&lt;br /&gt;
===Return===&lt;br /&gt;
Returns animation or false if invalid arguments were passed.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Code&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local anims, builtins = {}, {&amp;quot;Linear&amp;quot;, &amp;quot;InQuad&amp;quot;, &amp;quot;OutQuad&amp;quot;, &amp;quot;InOutQuad&amp;quot;, &amp;quot;OutInQuad&amp;quot;, &amp;quot;InElastic&amp;quot;, &amp;quot;OutElastic&amp;quot;, &amp;quot;InOutElastic&amp;quot;, &amp;quot;OutInElastic&amp;quot;, &amp;quot;InBack&amp;quot;, &amp;quot;OutBack&amp;quot;, &amp;quot;InOutBack&amp;quot;, &amp;quot;OutInBack&amp;quot;, &amp;quot;InBounce&amp;quot;, &amp;quot;OutBounce&amp;quot;, &amp;quot;InOutBounce&amp;quot;, &amp;quot;OutInBounce&amp;quot;, &amp;quot;SineCurve&amp;quot;, &amp;quot;CosineCurve&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
function table.find(t, v)&lt;br /&gt;
	for k, a in ipairs(t) do&lt;br /&gt;
		if a == v then&lt;br /&gt;
			return k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function animate(f, t, easing, duration, onChange, onEnd)&lt;br /&gt;
	assert(type(f) == &amp;quot;number&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected number at argument 1, got &amp;quot;..type(f)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	assert(type(t) == &amp;quot;number&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected number at argument 2, got &amp;quot;..type(t)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	assert(type(easing) == &amp;quot;string&amp;quot; or (type(easing) == &amp;quot;number&amp;quot; and (easing &amp;gt;= 1 or easing &amp;lt;= #builtins)), &amp;quot;Bad argument @ 'animate' [Invalid easing at argument 3]&amp;quot;)&lt;br /&gt;
	assert(type(duration) == &amp;quot;number&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected function at argument 4, got &amp;quot;..type(duration)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	assert(type(onChange) == &amp;quot;function&amp;quot;, &amp;quot;Bad argument @ 'animate' [expected function at argument 5, got &amp;quot;..type(onChange)..&amp;quot;]&amp;quot;)&lt;br /&gt;
	table.insert(anims, {from = f, to = t, easing = table.find(builtins, easing) and easing or builtins[easing], duration = duration, start = getTickCount( ), onChange = onChange, onEnd = onEnd})&lt;br /&gt;
	return #anims&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function destroyAnimation(a)&lt;br /&gt;
	if anims[a] then&lt;br /&gt;
		table.remove(anims, a)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientRender&amp;quot;, root, function( )&lt;br /&gt;
	local now = getTickCount( )&lt;br /&gt;
	for k,v in ipairs(anims) do&lt;br /&gt;
		v.onChange(interpolateBetween(v.from, 0, 0, v.to, 0, 0, (now - v.start) / v.duration, v.easing))&lt;br /&gt;
		if now &amp;gt;= v.start+v.duration then&lt;br /&gt;
			if type(v.onEnd) == &amp;quot;function&amp;quot; then&lt;br /&gt;
				v.onEnd( )&lt;br /&gt;
			end&lt;br /&gt;
			table.remove(anims, k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example open/close with slide up/down effect.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--Slide Animation&lt;br /&gt;
local sx, sy = guiGetScreenSize( )&lt;br /&gt;
local window = guiCreateWindow((sx-300)/2, (sy-400)/2, 300, 400, &amp;quot;Test&amp;quot;, false)&lt;br /&gt;
guiSetVisible(window, false)&lt;br /&gt;
bindKey(&amp;quot;f2&amp;quot;, &amp;quot;down&amp;quot;, function( )&lt;br /&gt;
    if anim then return end&lt;br /&gt;
    local v = guiGetVisible(window)&lt;br /&gt;
    if not v then guiSetVisible(window, true) end&lt;br /&gt;
    anim = true&lt;br /&gt;
    animate(v and 400 or 0, v and 0 or 400, 2, 1250, function(height)&lt;br /&gt;
        if v and height == 0 then &lt;br /&gt;
            guiSetVisible(window, false)&lt;br /&gt;
            anim = false&lt;br /&gt;
        elseif not v and height == 400 then&lt;br /&gt;
            anim = false&lt;br /&gt;
        end&lt;br /&gt;
        local w, h = guiGetSize(window, false)&lt;br /&gt;
        guiSetSize(window, w, height, false)&lt;br /&gt;
    end)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
Author : Mr.Tn6eL&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Useful_Functions}}&lt;br /&gt;
[[Category:Useful Functions]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateBrowser&amp;diff=50630</id>
		<title>CreateBrowser</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateBrowser&amp;diff=50630"/>
		<updated>2017-04-10T02:58:57Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50622 by Joker (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0150|1.5||&lt;br /&gt;
This function creates a new web [[Element/Browser|browser]] element.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;element createBrowser ( int width, int height, bool isLocal [, bool transparent = false ] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/Browser|Browser]]}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''width:''' The browser's native width&lt;br /&gt;
*'''height:''' The browser's native height&lt;br /&gt;
*'''isLocal:'''  Sets whether the browser can only show local content or content from the internet (see examples for more information)&lt;br /&gt;
''&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''transparent:''' ''true'' if you want the browser transparent, ''false'' for opaque.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an [[texture]] of the [[browser]] if it was created successfully, ''false'' otherwise. Returns also ''false'', if the user disabled remote pages and ''isLocal'' was set to ''false''.&lt;br /&gt;
&lt;br /&gt;
==Local Example==&lt;br /&gt;
{{Warning|The scheme for local files has changed. Please read [[Local_Scheme_Handler|Local Scheme Handler]] for details.|true}}&lt;br /&gt;
This example shows you how to create a fullscreen web browser (showing a local html file) without input-handling.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in local mode. We will not be able to load an external URL.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, true, false)&lt;br /&gt;
	&lt;br /&gt;
--This is the function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load our file.&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;http://mta/local/html/site.html&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Remote Example==&lt;br /&gt;
This example shows you how to create a fullscreen web browser (showing youtube.com) without input-handling.&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, that youtube.com is on the global whitelist. If you want to load a domain/page that is not on the global whitelist, you have to request it with [[requestBrowserDomains|requestBrowserDomains]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in remote mode.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, false, false)&lt;br /&gt;
	&lt;br /&gt;
--Function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load www.youtube.com&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;http://www.youtube.com&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateBrowser&amp;diff=50629</id>
		<title>CreateBrowser</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateBrowser&amp;diff=50629"/>
		<updated>2017-04-10T02:58:06Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50623 by Joker (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0150|1.5||&lt;br /&gt;
This function creates a new web [[Element/Browser|browser]] element.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;element createBrowser ( int width, int height, bool isLocal [, bool transparent = false ] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/Browser|Browser]]}}&lt;br /&gt;
&lt;br /&gt;
===المطلوب منك===&lt;br /&gt;
*'''عرض:''' The browser's native width&lt;br /&gt;
*'''ارتفاع:''' The browser's native height&lt;br /&gt;
*'''isLocal:'''  Sets whether the browser can only show local content or content from the internet (see examples for more information)&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''transparent:''' ''true'' if you want the browser transparent, ''false'' for opaque.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an [[texture]] of the [[browser]] if it was created successfully, ''false'' otherwise. Returns also ''false'', if the user disabled remote pages and ''isLocal'' was set to ''false''.&lt;br /&gt;
&lt;br /&gt;
==Local Example==&lt;br /&gt;
{{Warning|The scheme for local files has changed. Please read [[Local_Scheme_Handler|Local Scheme Handler]] for details.|true}}&lt;br /&gt;
This example shows you how to create a fullscreen web browser (showing a local html file) without input-handling.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in local mode. We will not be able to load an external URL.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, true, false)&lt;br /&gt;
	&lt;br /&gt;
--This is the function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load our file.&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;http://mta/local/html/site.html&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Remote Example==&lt;br /&gt;
This example shows you how to create a fullscreen web browser (showing youtube.com) without input-handling.&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, that youtube.com is on the global whitelist. If you want to load a domain/page that is not on the global whitelist, you have to request it with [[requestBrowserDomains|requestBrowserDomains]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in remote mode.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, false, false)&lt;br /&gt;
	&lt;br /&gt;
--Function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load www.youtube.com&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;http://www.youtube.com&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Client_Scripting_Events&amp;diff=50617</id>
		<title>Client Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Client_Scripting_Events&amp;diff=50617"/>
		<updated>2017-04-09T16:37:39Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50600 by LAGOWYPOLSKA (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;client&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This page lists all '''client-side''' scripting [[event]]s that have been implemented and are available in the Deathmatch mod.&lt;br /&gt;
&lt;br /&gt;
To request a function or event, use [[Requested Functions and Events]].&lt;br /&gt;
&lt;br /&gt;
'''Server-side scripting events can be found here: [[Server Scripting Events]]&lt;br /&gt;
&lt;br /&gt;
==Browser events==&lt;br /&gt;
{{CEF_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape events==&lt;br /&gt;
{{Client_colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==Element events==&lt;br /&gt;
{{Client_element_events}}&lt;br /&gt;
&lt;br /&gt;
==GUI events==&lt;br /&gt;
{{GUI_events}}&lt;br /&gt;
&lt;br /&gt;
==Marker events==&lt;br /&gt;
{{Client_marker_events}}&lt;br /&gt;
&lt;br /&gt;
==Ped events==&lt;br /&gt;
{{Client_ped_events}}&lt;br /&gt;
&lt;br /&gt;
==Pickup events==&lt;br /&gt;
{{Client_pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==Player events==&lt;br /&gt;
{{Client_player_events}}&lt;br /&gt;
&lt;br /&gt;
==Object events==&lt;br /&gt;
{{Client_object_events}}&lt;br /&gt;
&lt;br /&gt;
==Projectile events==&lt;br /&gt;
{{Client_projectile_events}}&lt;br /&gt;
&lt;br /&gt;
==Resource events==&lt;br /&gt;
{{Client_resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Sound events==&lt;br /&gt;
{{Sound_events}}&lt;br /&gt;
&lt;br /&gt;
==Vehicle events==&lt;br /&gt;
{{Client_vehicle_events}}&lt;br /&gt;
&lt;br /&gt;
==Weapon creation events==&lt;br /&gt;
{{Client_weapon_creation_events}}&lt;br /&gt;
&lt;br /&gt;
==Other events==&lt;br /&gt;
{{Client_other_events}}&lt;br /&gt;
&lt;br /&gt;
[[pl:Client Scripting Events]]&lt;br /&gt;
[[ru:Client Scripting Events]]&lt;br /&gt;
[[es:Client Scripting Events]]&lt;br /&gt;
[[fr:Client Scripting Events]]&lt;br /&gt;
[[tr:Client Taraflı Eventler]]&lt;br /&gt;
[[ar:Client Scripting Events]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=50616</id>
		<title>Server Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=50616"/>
		<updated>2017-04-09T16:37:36Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50602 by LAGOWYPOLSKA (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This page lists all '''server-side''' scripting [[event]]s that have been implemented and are available in the Deathmatch mod.&lt;br /&gt;
&lt;br /&gt;
To request a function or event, use [[Requested Functions and Events]].&lt;br /&gt;
&lt;br /&gt;
'''Client-side scripting events can be found here: [[Client Scripting Events]]&lt;br /&gt;
&lt;br /&gt;
==Client events==&lt;br /&gt;
{{Client_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape events==&lt;br /&gt;
{{Colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==Element events==&lt;br /&gt;
{{Element_events}}&lt;br /&gt;
&lt;br /&gt;
==Marker events==&lt;br /&gt;
{{Marker_events}}&lt;br /&gt;
&lt;br /&gt;
==Pickup events==&lt;br /&gt;
{{Pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==Player events==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
==Ped events==&lt;br /&gt;
{{Ped_events}}&lt;br /&gt;
&lt;br /&gt;
== Resource events==&lt;br /&gt;
{{Resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Server events==&lt;br /&gt;
{{Server_events}}&lt;br /&gt;
&lt;br /&gt;
== Vehicle events ==&lt;br /&gt;
{{Vehicle_events}}&lt;br /&gt;
&lt;br /&gt;
== Weapon events ==&lt;br /&gt;
{{Weapon_events}}&lt;br /&gt;
&lt;br /&gt;
[[tr:Server Scripting Events]]&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[fr:Server Scripting Events]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Useful_Functions&amp;diff=50615</id>
		<title>Useful Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Useful_Functions&amp;diff=50615"/>
		<updated>2017-04-09T16:37:29Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50603 by LAGOWYPOLSKA (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;#228B22&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
{{MessageBox|&lt;br /&gt;
   bordercolorhex = 000000 |&lt;br /&gt;
   bordertype = dotted |&lt;br /&gt;
   bgcolorhex = EFEFEF |&lt;br /&gt;
   image = File:Package-x-generic.png |&lt;br /&gt;
   title = Don't forget to check out the [[Useful Classes]] |&lt;br /&gt;
   subtext = &amp;lt;span style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;''That page lists user-made classes that are not included by default in MTA. ''&amp;lt;/span&amp;gt; |&lt;br /&gt;
}}&lt;br /&gt;
{{Adding_Pages_to_Categories_and_Templates}}&lt;br /&gt;
&lt;br /&gt;
This page lists user-made Lua functions that are not included by default in MTA. Its purpose is to quickly provide some useful functions for scripters, so they do not waste time recreating them when needed.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Useful_Functions}}&lt;br /&gt;
[[ES:Funciones Útiles]]&lt;br /&gt;
[[ru:Useful Functions]]&lt;br /&gt;
[[de:Nützliche_Funktionen]]&lt;br /&gt;
[[PL:Użyteczne Funkcje]]&lt;br /&gt;
[[Ar:وظائف مفيدة]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Where_to_buy_GTASA&amp;diff=50614</id>
		<title>Where to buy GTASA</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Where_to_buy_GTASA&amp;diff=50614"/>
		<updated>2017-04-09T16:37:21Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50607 by LAGOWYPOLSKA (talk) trolling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page outlines some of the places Grand Theft Auto San Andreas can be bought digitally and played with MTASA (sometimes with an automatic downgrade step).  Not all of these have been tested, but all should work correctly.  If not, please contact support.  &lt;br /&gt;
&lt;br /&gt;
All disc (DVD) versions of Windows GTASA are known to function fine.  If you are planning on buying a DVD of GTASA, you should try to obtain a &amp;quot;Standard&amp;quot; version rather than &amp;quot;Second Edition&amp;quot; or &amp;quot;Greatest Hits&amp;quot; editions, though all will work fine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 900px; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Retailer&lt;br /&gt;
!Notes&lt;br /&gt;
!Verified to work with MTA: SA?&lt;br /&gt;
|-&lt;br /&gt;
|[http://store.steampowered.com/app/12120/ Steam]&lt;br /&gt;
|Specialized Steam version of the game.  MTA installer will downgrade this for you. &lt;br /&gt;
|{{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |[http://www.amazon.com/Grand-Theft-Auto-Andreas-Download/dp/B006YVXGJQ Amazon]&lt;br /&gt;
| For the '''Standard''' edition of the game, if MTA is incompatible, try obtaining a GTA SA 1.00 No CD - any HOODLUM release will function correctly.&lt;br /&gt;
| {{Partial|Unconfirmed (Standard)}}&lt;br /&gt;
|-&lt;br /&gt;
| Steam version and disc copies of GTASA will function fine&lt;br /&gt;
| {{Yes| Yes (Steam/Boxed DVD)}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamersgate.co.uk/DD-GTASAS/grand-theft-auto-san-andreas GamersGate]&lt;br /&gt;
|rowspan=6|This is the Steam version of the game, and will function similarly.&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.game.co.uk/en/grand-theft-auto-san-andreas-301403 Game UK]&lt;br /&gt;
|-&lt;br /&gt;
|[http://digital.gamefly.co.uk/#!/download-grand-theft-auto-san-andreas/5006365 GameFly Digital]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.greenmangaming.com/s/gb/en/pc/games/action/grand-theft-auto-san-andreas/ GreenManGaming]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.gamestop.com/pc/games/grand-theft-auto-san-andreas/37409 GameStop]&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.walmart.com/ip/Take-Two-GTASAESD-Grand-Theft-Auto-San-Andreas-PC/36754297 Walmart]&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|Windows App Store&lt;br /&gt;
|This is a mobile version of the game ported to PC. '''Will never work with MTA'''.&lt;br /&gt;
|{{No}}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
[[pl:Where to buy GTASA]]&lt;br /&gt;
[[es:Dónde comprar GTA: SA]]&lt;br /&gt;
[[tr:GTA:SA Nerden Alınır]]&lt;br /&gt;
[[zh-cn:在那里可以购买GTASA]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MTA_Classes&amp;diff=50613</id>
		<title>MTA Classes</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MTA_Classes&amp;diff=50613"/>
		<updated>2017-04-09T16:35:10Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50604 by LAGOWYPOLSKA (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to perform operations on MTA objects via scripting, pointers to internal classes are exported to scripts as Lua userdata. Each of these classes has a number of exported scripting functions associated to them.&lt;br /&gt;
&lt;br /&gt;
Elements that have a physical representation in the game are also known as [[entity|Entities]].&lt;br /&gt;
&lt;br /&gt;
The complete list of classes to be found in scripts follows:&lt;br /&gt;
&lt;br /&gt;
* [[account|Account]]&lt;br /&gt;
* [[acl|ACL]]&lt;br /&gt;
* [[aclgroup|ACL group]]&lt;br /&gt;
* [[Ban]]&lt;br /&gt;
* [[element|Element]]&lt;br /&gt;
&amp;lt;ul&amp;gt;{{Elements}}&amp;lt;/ul&amp;gt;&lt;br /&gt;
* [[resource|Resource]]&lt;br /&gt;
* [[textdisplay|Text display]]&lt;br /&gt;
* [[textitem|Text item]]&lt;br /&gt;
* [[timer|Timer]]&lt;br /&gt;
* [[xmlnode|XML node]]&lt;br /&gt;
* [[connection|Connection]]&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[es:Clases MTA]]&lt;br /&gt;
[[it:Classi di MTA]]&lt;br /&gt;
[[ru:Классы MTA]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Element&amp;diff=50612</id>
		<title>Element</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Element&amp;diff=50612"/>
		<updated>2017-04-09T16:34:39Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50605 by LAGOWYPOLSKA (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An '''element''' is a generic class that can represent almost all in-game [[entity|entities]]. The built-in element types are:&lt;br /&gt;
&lt;br /&gt;
{{Elements}}&lt;br /&gt;
&lt;br /&gt;
Any other element type can be created as an abstract element, not referring to any game [[entity]]. For example, '''resource''' and '''map''' elements are created when resources and maps are loaded to group entities they create as their children.&lt;br /&gt;
&lt;br /&gt;
Elements share common functions such as type and list retrieval, a destroy operation to remove both the element and the game entity it is linked to (except for some elements which can't be destroyed, for example client elements), [[element data]] storing and retrieval, and many more common operations.&lt;br /&gt;
&lt;br /&gt;
All elements are stored internally in a [[Element tree|tree structure]], and as such every element except the '''root''' element has a parent element, that can be the '''root''' element, a '''resource''', '''map''' or another element. This is purely for declaring the scope of function calls.&lt;br /&gt;
&lt;br /&gt;
==Related scripting functions==&lt;br /&gt;
===Client===&lt;br /&gt;
{{Client element functions}}&lt;br /&gt;
===Server===&lt;br /&gt;
{{Element functions}}&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
&lt;br /&gt;
[[it:Elemento]]&lt;br /&gt;
[[ru:Element]]&lt;br /&gt;
[[es:Elemento]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Element_tree&amp;diff=50611</id>
		<title>Element tree</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Element_tree&amp;diff=50611"/>
		<updated>2017-04-09T16:34:08Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50606 by LAGOWYPOLSKA (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Tre.png|frame|Element tree]]&lt;br /&gt;
MTA uses a so-called ''element tree'' to store all the elements that exist on the server and the client. This is directly related to the set of running [[resources]] and their map files' XML layout, although it can be changed at run-time by scripts.&lt;br /&gt;
&lt;br /&gt;
If you are familiar with the concept of ''trees'' in computer-science, this should be easy to understand. If you are not, think of it like a family tree - except everyone only has a single parent. Every [[element]] has a ''parent'' element.&lt;br /&gt;
&lt;br /&gt;
All elements that are created within scripts or from .map files are child elements of the resource they belong to. Thus, most elements (except for [[client]]s) exist only within resources and are also destroyed as soon as their resource is stopped.&lt;br /&gt;
&lt;br /&gt;
==Tree elements==&lt;br /&gt;
* '''root''': This is at the very base of the tree - all elements are children (or descendants) of this element.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
getRootElement()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* '''resource''': These are direct children of the root element - with one for each ''running'' resource. This element is called the ''resource root''. Its ID holds the name of the resource.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
getResourceRootElement()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* '''map''': Each resource element contains at least one map element, representing either a &amp;quot;.map&amp;quot; file in the resource or the one containing the elements created by scripts (this is called the ''dynamic'' map). Their IDs contain the maps' filenames, or ''dynamic'' for the dynamic map.&lt;br /&gt;
** Map files can contain a number of other [[element]]s as well as an unlimited number of custom elements.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This in an example of a serverside tree dumped to XML from a running server.&lt;br /&gt;
''Please note that it is shortened on some places for the sake of overview.''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;root&amp;gt;&lt;br /&gt;
	&amp;lt;console/&amp;gt;&lt;br /&gt;
	&amp;lt;player dontRespawn=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;player dontRespawn=&amp;quot;false&amp;quot; lastSpawnarea=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;resourcebrowser&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;ajax&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;resourcemanager&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;spawnmanager&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;mapmanager&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;runcode&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;fr&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;map id=&amp;quot;dynamic&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;vehicle/&amp;gt;&lt;br /&gt;
		&amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/resource&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;elementbrowser&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;assault&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;map id=&amp;quot;dynamic&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;team/&amp;gt;&lt;br /&gt;
			&amp;lt;team/&amp;gt;&lt;br /&gt;
			&amp;lt;blip/&amp;gt;&lt;br /&gt;
			&amp;lt;marker/&amp;gt;&lt;br /&gt;
			&amp;lt;colshape/&amp;gt;&lt;br /&gt;
			&amp;lt;blip/&amp;gt;&lt;br /&gt;
			&amp;lt;blip/&amp;gt;&lt;br /&gt;
		&amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/resource&amp;gt;&lt;br /&gt;
	&amp;lt;resource id=&amp;quot;as-farm&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;map id=&amp;quot;dynamic&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;map id=&amp;quot;as-farm.map&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;spawngroup req=&amp;quot;&amp;quot; type=&amp;quot;attacker&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;spawnarea posY=&amp;quot;-8.3976354598999&amp;quot; posX=&amp;quot;20.182683944702&amp;quot; skins=&amp;quot;9&amp;quot; ... /&amp;gt;&lt;br /&gt;
			&amp;lt;/spawngroup&amp;gt;&lt;br /&gt;
			&amp;lt;spawngroup req=&amp;quot;&amp;quot; type=&amp;quot;attacker&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;spawnarea posY=&amp;quot;32.166355133057&amp;quot; posX=&amp;quot;-46.90763092041&amp;quot; skins=&amp;quot;9&amp;quot; ... /&amp;gt;&lt;br /&gt;
			&amp;lt;/spawngroup&amp;gt;&lt;br /&gt;
			&amp;lt;spawngroup req=&amp;quot;&amp;quot; type=&amp;quot;attacker&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;spawnarea posY=&amp;quot;35.214984893799&amp;quot; posX=&amp;quot;-33.486911773682&amp;quot; skins=&amp;quot;9&amp;quot; ... /&amp;gt;&lt;br /&gt;
			&amp;lt;/spawngroup&amp;gt;&lt;br /&gt;
			&amp;lt;spawngroup req=&amp;quot;&amp;quot; type=&amp;quot;attacker&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;spawnarea posY=&amp;quot;35.214984893799&amp;quot; posX=&amp;quot;-33.486911773682&amp;quot; skins=&amp;quot;9&amp;quot; ... /&amp;gt;&lt;br /&gt;
			&amp;lt;/spawngroup&amp;gt;&lt;br /&gt;
			&amp;lt;objective id=&amp;quot;first&amp;quot; type=&amp;quot;checkpoint&amp;quot; description=&amp;quot;Breach into the farm&amp;quot; ... /&amp;gt;&lt;br /&gt;
			&amp;lt;pickup type=&amp;quot;weapon&amp;quot; ... /&amp;gt;&lt;br /&gt;
		&amp;lt;/map&amp;gt;&lt;br /&gt;
	&amp;lt;/resource&amp;gt;&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Explanation===&lt;br /&gt;
This tree consists of a number of resource root elements, the [[Element/Console|server console]] and two [[player]] elements, that are direct children of the '''root''' element. All these resources have a ''dynamic map'' as child element (it is just not shown for most of them). These contain the elements that are created dynamically by this resource using scripts, for example a [[vehicle]]. If the resource has a map file, it is also a child element, itself containing all the elements in the .map file.&lt;br /&gt;
&lt;br /&gt;
Let's have a closer look at the '''assault''' resource: This contains just one ''dynamic'' map that has 2 teams, 3 blips, 1 marker and 1 colshape as child elements. These are the elements that are created by the script, for example the marker, the colshape and one of the blips are probably used for the objective.&lt;br /&gt;
&lt;br /&gt;
The '''as-farm''' resource's function on the contrary is to be a map for the '''assault''' gamemode. The dynamic map is empty (it could contain elements if there was a script in it though), while there is a map called 'as-farm.map', that contains a number of elements. These are mostly custom elements (like spawngroup, spawnarea, objective) but also a few elements that MTA creates automactically after loading the map (like pickup). In the brackets after the element type, you can see the element data it contains. These are identical with the attributes the .map file contains within these elements, while you can also set and get element data for any other elements (e.g. players) with [[setElementData]] and [[getElementData]].&lt;br /&gt;
&lt;br /&gt;
==Pratical application==&lt;br /&gt;
Elements can have as many children as they like. This does not directly affect the map in any way, but it comes in to its own when combined with the scripting system.&lt;br /&gt;
&lt;br /&gt;
===Setting data for elements===&lt;br /&gt;
If you call a set... function on a node of the element tree, the function will affect every element within it (that it can work on).&lt;br /&gt;
&lt;br /&gt;
So, the following code would set the size of every marker (the only type of element the setMarkerSize function can work on) that is below the root element to ''2.5''.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
setMarkerSize ( getRootElement(), 2.5 )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same can be done on any element, it is not restricted to the root element.&lt;br /&gt;
&lt;br /&gt;
===Map manager===&lt;br /&gt;
The [[#Example|example above]] shows the way the [[map manager]] uses different resources. The 'assault' resource is the gamemode, that manages what happens on the server using scripts and thus by creating elements in the tree dynamically. When a map resource is started, the gamemode receives a [[resource|resource pointer]] referring to the started resource - in this case ''as-farm'' - from which you can retrieve and store the resource root element. Using this element in conjunction with functions like [[getElementsByType]], [[getElementData]] and various others, you can access any of the information that was loaded into the tree from the 'as-farm.map'-file through scripts in the gamemode resource.&lt;br /&gt;
&lt;br /&gt;
Another thing that has to be considered related to the tree of elements is the fact that when you change the map, you don't have to remove any elements you created within the map resource, while you '''do''' have to remove elements that are created within the gamemode resource, '''if''' they are specific to the map (which will be probably the case for those items you create based on information read from the map resource's .map files).&lt;br /&gt;
&lt;br /&gt;
==Element browser==&lt;br /&gt;
You can start the resource ''elementbrowser'' to see a live view of the element tree on your server. Just start the resource and browser to your server's web page and choose the ''Element browser'' option in the sidebar (firefox only currently).&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[es:Árbol de elementos]]&lt;br /&gt;
[[ru:Element tree]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Client_Scripting_Functions&amp;diff=50609</id>
		<title>Client Scripting Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Client_Scripting_Functions&amp;diff=50609"/>
		<updated>2017-04-09T16:30:36Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50599 by LAGOWYPOLSKA (talk) trolling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;client&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
{{Adding_Pages_to_Categories_and_Templates}}&lt;br /&gt;
This page lists all the '''client-side''' scripting functions that have been implemented and are available as native functions from the Deathmatch mod. To request a function or event, use [[Requested Functions and Events]]&lt;br /&gt;
&lt;br /&gt;
For more functions, check the [[Useful_Functions|useful functions page]].&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Audio functions==&lt;br /&gt;
{{Client_audio_functions}}&lt;br /&gt;
&lt;br /&gt;
==Blip functions==&lt;br /&gt;
{{Client_blip_functions}}&lt;br /&gt;
&lt;br /&gt;
==Browser functions==&lt;br /&gt;
{{CEF_functions}}&lt;br /&gt;
&lt;br /&gt;
==Camera functions==&lt;br /&gt;
{{Client_camera_functions}}&lt;br /&gt;
&lt;br /&gt;
==Clothes and body functions==&lt;br /&gt;
{{Client_Clothes and body functions}}&lt;br /&gt;
&lt;br /&gt;
==Collision shape functions==&lt;br /&gt;
{{Client_collision_shape_functions}}&lt;br /&gt;
&lt;br /&gt;
==Cursor functions==&lt;br /&gt;
{{Client_cursor_functions}}&lt;br /&gt;
&lt;br /&gt;
==Drawing functions==&lt;br /&gt;
{{Drawing_functions}}&lt;br /&gt;
&lt;br /&gt;
==Effects functions==&lt;br /&gt;
{{Client_Effects_functions}}&lt;br /&gt;
&lt;br /&gt;
==Element functions==&lt;br /&gt;
{{Client_element_functions}}&lt;br /&gt;
&lt;br /&gt;
==Engine functions==&lt;br /&gt;
{{Engine_functions}}&lt;br /&gt;
&lt;br /&gt;
==Event functions==&lt;br /&gt;
{{Client_event_functions}}&lt;br /&gt;
&lt;br /&gt;
==Explosion functions==&lt;br /&gt;
{{Client_explosion_functions}}&lt;br /&gt;
&lt;br /&gt;
==File functions==&lt;br /&gt;
{{Client file functions}}&lt;br /&gt;
&lt;br /&gt;
==Fire functions==&lt;br /&gt;
{{Client fire functions}}&lt;br /&gt;
&lt;br /&gt;
==GUI functions==&lt;br /&gt;
{{GUI_functions}}&lt;br /&gt;
&lt;br /&gt;
==Input functions==&lt;br /&gt;
{{Client_input_functions}}&lt;br /&gt;
&lt;br /&gt;
==Light functions==&lt;br /&gt;
{{Client_light_functions}}&lt;br /&gt;
&lt;br /&gt;
==Marker functions==&lt;br /&gt;
{{Client_marker_functions}}&lt;br /&gt;
&lt;br /&gt;
==Matrix functions==&lt;br /&gt;
{{Shared_matrix_functions}}&lt;br /&gt;
&lt;br /&gt;
==Object functions==&lt;br /&gt;
{{Client_object_functions}}&lt;br /&gt;
&lt;br /&gt;
==Output functions==&lt;br /&gt;
{{Client_output_functions}}&lt;br /&gt;
&lt;br /&gt;
==Ped functions==&lt;br /&gt;
{{Client_ped_functions}}&lt;br /&gt;
&lt;br /&gt;
==Pickup functions==&lt;br /&gt;
{{Client_pickup_functions}}&lt;br /&gt;
&lt;br /&gt;
==Player functions==&lt;br /&gt;
{{Client_player_functions}}&lt;br /&gt;
&lt;br /&gt;
==Projectile functions==&lt;br /&gt;
{{Client_projectile_functions}}&lt;br /&gt;
&lt;br /&gt;
==Radar area functions==&lt;br /&gt;
{{Client_radar-area_functions}}&lt;br /&gt;
&lt;br /&gt;
==Resource functions==&lt;br /&gt;
{{Client_resource_functions}}&lt;br /&gt;
&lt;br /&gt;
==Searchlight functions==&lt;br /&gt;
{{Client_searchlight_functions}}&lt;br /&gt;
&lt;br /&gt;
==Team functions==&lt;br /&gt;
{{Client_team_functions}}&lt;br /&gt;
&lt;br /&gt;
==Utility functions==&lt;br /&gt;
{{Client_utility_functions}}&lt;br /&gt;
&lt;br /&gt;
==UTF8 Library==&lt;br /&gt;
{{UTF8 functions}}&lt;br /&gt;
&lt;br /&gt;
==Vehicle functions==&lt;br /&gt;
{{Client_vehicle_functions}}&lt;br /&gt;
&lt;br /&gt;
==Water functions==&lt;br /&gt;
{{Client_water_functions}}&lt;br /&gt;
&lt;br /&gt;
==Weapon functions==&lt;br /&gt;
{{Client_weapon_functions}}&lt;br /&gt;
&lt;br /&gt;
==Weapon Creation functions==&lt;br /&gt;
&amp;lt;strike&amp;gt;Documentation can be found [http://code.google.com/p/mtasa-blue/source/detail?r=4555 here] [https://github.com/multitheftauto/mtasa-blue/commit/c0ac461867e24fe5fc471fe373ec6212e8736c01 (GitHub)] and [http://code.google.com/p/mtasa-blue/source/detail?r=4557 here] [https://github.com/multitheftauto/mtasa-blue/commit/9c2464b5e0c7d0f2915a9b46273832cd950af48e (GitHub)]&amp;lt;/strike&amp;gt;&lt;br /&gt;
{{Client_weapon_creation_functions}}&lt;br /&gt;
&lt;br /&gt;
==World functions==&lt;br /&gt;
{{Client_world_functions}}&lt;br /&gt;
&lt;br /&gt;
==XML functions==&lt;br /&gt;
{{Client XML functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:Client Scripting Functions]]&lt;br /&gt;
[[pl:Funkcje po stronie klienta]]&lt;br /&gt;
[[it:Funzioni Client-side]]&lt;br /&gt;
[[ru:Client Scripting Functions]]&lt;br /&gt;
[[es:Funciones del cliente]]&lt;br /&gt;
[[de:Clientseitige_Funktionen]]&lt;br /&gt;
[[tr:Client Taraflı Fonksiyonlar]]&lt;br /&gt;
[[zh-cn:客户端脚本函数]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=How_you_can_help&amp;diff=50608</id>
		<title>How you can help</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=How_you_can_help&amp;diff=50608"/>
		<updated>2017-04-09T16:26:18Z</updated>

		<summary type="html">&lt;p&gt;Loki: Undo revision 50598 by LAGOWYPOLSKA (talk) (trolling)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Multi Theft Auto has loads of areas in which you can help us. In turn, we'll be more than happy to help you get started with any ideas you have, help test them and - if they're good enough - release them to the whole community. This page outlines the key areas you could do something in, of course, there are many things we've not thought of, so think outside the box!&lt;br /&gt;
&lt;br /&gt;
==Coding for MTA:SA==&lt;br /&gt;
* Create pull requests for the mod, containing requested features or bugfixes. ([[Coding guidelines]])&lt;br /&gt;
* Translate MTA:SA to your native language - http://translate.multitheftauto.com/&lt;br /&gt;
&lt;br /&gt;
==Scripting==&lt;br /&gt;
* Create a gamemode &lt;br /&gt;
**[[Scripting Introduction]]&lt;br /&gt;
**[http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot; Manual]&lt;br /&gt;
* Create an administration page on the HTTP server.&lt;br /&gt;
**[[Resource Web Access]]&lt;br /&gt;
* Make a general purpose resource that provides useful functions to other resources.&lt;br /&gt;
&lt;br /&gt;
==Mapping==&lt;br /&gt;
* Create a map with the map editor for an existing gamemode.&lt;br /&gt;
**[[Resource:Editor|Map Editor Manual]]&lt;br /&gt;
&lt;br /&gt;
==Web development==&lt;br /&gt;
* Work with lil_Toady to add new features and improvements to community.mtasa.com.&lt;br /&gt;
* Create your own system for statistics - using the [[PHP SDK]] as a basis. Contact eAi or jbeta for help.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
Before you make changes check out: [[Help:Editing Guidelines|Editing Guidelines]] and [[Help:MTA Wiki Specific Templates|Specific Templates]]&lt;br /&gt;
* Finish documentation for [[:Category:Incomplete|Incomplete functions]] - ask in #mta.scripting if you're not sure of something.&lt;br /&gt;
* Add examples to [[:Category:Needs Example|functions &amp;amp; events missing examples]] - please '''test''' them, and again, ask if you need help.&lt;br /&gt;
* Review and verify [[:Category:Needs Checking|pages that need checking]] - make sure highlighted issues are solved before removing pages from the category.&lt;br /&gt;
* Expand the pages that explain [[:Category:Scripting_Concepts|MTA core concepts]].&lt;br /&gt;
* Write tutorials to help new people.&lt;br /&gt;
* Translate the wiki pages so people from other countries can get started in MTA too.&lt;br /&gt;
* Create documentation for undocumented functions and events [[Undocumented Items]]&lt;br /&gt;
&lt;br /&gt;
==Specific tasks==&lt;br /&gt;
* Create a fuzzer to check for crashes in our scripting functions.&lt;br /&gt;
* Help develop/fix existing gamemodes. Contact the original author on IRC (or ask a developer) to tell the author so you can work together.&lt;br /&gt;
* The web interface resources (resourcemanager, resourcebrowser and webadmin chiefly) are really only compatible with Firefox. Someone could put in some time to make these work on Internet Explorer, Opera and Safari. See [[User_talk:EAi|eAi]] for help.&lt;br /&gt;
&lt;br /&gt;
==Grant==&lt;br /&gt;
You can donate MTA:SA [https://mtasa.com/donate/manage.php here]&lt;br /&gt;
&lt;br /&gt;
[[pl:Jak możesz pomóc]]&lt;br /&gt;
[[ru:How you can help]]&lt;br /&gt;
[[es:Cómo puedes ayudar]]&lt;br /&gt;
[[hu:How you can help]]&lt;br /&gt;
[[tr:Nasıl yardımcı olabilirsiniz]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Vector/Vector3&amp;diff=49957</id>
		<title>Vector/Vector3</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Vector/Vector3&amp;diff=49957"/>
		<updated>2016-12-22T19:00:53Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Incomplete]]&lt;br /&gt;
The '''vector3''' class represents a three-dimensional [[vector]].&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
===create===&lt;br /&gt;
This is default constructor for the Vector3 class and returns a Vector3 object.&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;vector3 Vector3 ( [ float x = 0, float y = 0, float z = 0 ] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Optional arguments=====&lt;br /&gt;
* '''x''', '''y''' and '''z''': coordinates for the vector. If not specified, they default to 0.&lt;br /&gt;
* Instead of these three coordinates, a single Vector3 object may be inserted to clone it.&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This example sorts all players in a nice line on the center of the map.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Shared&amp;quot; class=&amp;quot;both&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local players = getElementsByType(&amp;quot;player&amp;quot;)&lt;br /&gt;
local newPlayerPosition = Vector3(-#players - 1, 0, 10) -- Initialize the position vector for the first player in the list&lt;br /&gt;
for _, player in ipairs(players) do&lt;br /&gt;
    -- Move each player 1 unit forward in X from the previous one&lt;br /&gt;
    newPlayerPosition.x = newPlayerPosition.x + 1&lt;br /&gt;
    setElementPosition(player, newPlayerPosition)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===cross===&lt;br /&gt;
Calculates the cross product of two vectors, A and B, and is written as A × B. The result is another vector which:&lt;br /&gt;
&lt;br /&gt;
* Is orthogonal to both A and B.&lt;br /&gt;
* Its direction is determined by the [https://upload.wikimedia.org/wikipedia/commons/d/d2/Right_hand_rule_cross_product.svg right-hand rule].&lt;br /&gt;
* Its length is equal to the area of the parallelogram that A and B form (which in turn is equal to A's length by B's length by the sine of the minimum angle between A and B).&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;vector3 Vector3:cross ( vector3 vector )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Required arguments=====&lt;br /&gt;
* '''vector''': a vector3 object to get the cross product with.&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This example creates a tiny sun which is always at the right of the vehicle the local player drives. By default it will draw the vectors used to compute the position where it should be, so you can understand what does this function do. Note that the code could be made simpler by simply getting the right component of the vehicle matrix. '''Make sure that you put this code in a resource which has OOP enabled, or it won't work'''.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;-- OPTIONS --&lt;br /&gt;
local debugMode = true -- If true, the script will draw the vectors used to compute the effect&lt;br /&gt;
&lt;br /&gt;
-- EFFECT CONTROL FUNCTIONS --&lt;br /&gt;
local playerVehicle, lightMarker, light&lt;br /&gt;
local function applyDrivingLightEffect()&lt;br /&gt;
    -- Get the vehicle matrix and use it to get the vehicle and vehicle base position&lt;br /&gt;
    local vehicleMatrix = playerVehicle.matrix&lt;br /&gt;
    local vehiclePosition = vehicleMatrix:getPosition()&lt;br /&gt;
    -- Get the vehicle upwards vector and vehicle forward direction vector&lt;br /&gt;
    local vehicleUpwardsVector, vehicleForwardVector = vehicleMatrix:getUp(), vehicleMatrix:getForward()&lt;br /&gt;
    -- Get the normalized cross product of the vehicle forward vector and the vehicleUpwardsVector vector&lt;br /&gt;
    local crossVector = vehicleForwardVector:cross(vehicleUpwardsVector):getNormalized()&lt;br /&gt;
    -- Draw all the interesting vectors we have now&lt;br /&gt;
    if debugMode then&lt;br /&gt;
        local forwardPoint = vehiclePosition + vehicleForwardVector&lt;br /&gt;
        dxDrawLine3D(vehiclePosition, forwardPoint, tocolor(255, 0, 0))&lt;br /&gt;
        local sx, sy = getScreenFromWorldPosition(forwardPoint)&lt;br /&gt;
        if sx then&lt;br /&gt;
            dxDrawText(&amp;quot;F&amp;quot;, sx, sy)&lt;br /&gt;
        end&lt;br /&gt;
            &lt;br /&gt;
        local vehicleUpwardsVectorPoint = vehiclePosition + vehicleUpwardsVector&lt;br /&gt;
        dxDrawLine3D(vehiclePosition, vehicleUpwardsVectorPoint, tocolor(0, 255, 0))&lt;br /&gt;
        local sx, sy = getScreenFromWorldPosition(vehicleUpwardsVectorPoint, 1.1)&lt;br /&gt;
        if sx then&lt;br /&gt;
            dxDrawText(&amp;quot;U&amp;quot;, sx, sy)&lt;br /&gt;
        end&lt;br /&gt;
          &lt;br /&gt;
        local crossPoint = vehiclePosition + crossVector&lt;br /&gt;
        dxDrawLine3D(vehiclePosition, crossPoint, tocolor(0, 0, 255))&lt;br /&gt;
        local sx, sy = getScreenFromWorldPosition(crossPoint)&lt;br /&gt;
        if sx then&lt;br /&gt;
            dxDrawText(&amp;quot;C&amp;quot;, sx, sy)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    -- Calculate the half length of the vehicle based in its bounding box, and use it to position the light effects at the right&lt;br /&gt;
    local _, bmy, _, _, bMy = playerVehicle:getBoundingBox()&lt;br /&gt;
    local newEffectPosition = vehiclePosition + crossVector * (bMy - bmy) / 2&lt;br /&gt;
    lightMarker.position = newEffectPosition&lt;br /&gt;
    light.position = newEffectPosition&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function startDrivingLightEffect()&lt;br /&gt;
    -- Create the effects and start updating them every frame&lt;br /&gt;
    addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, applyDrivingLightEffect)&lt;br /&gt;
    playerVehicle, lightMarker, light = localPlayer.vehicle, createMarker(0, 0, 0, &amp;quot;corona&amp;quot;, 0.5, 255, 255, 0), createLight(0, 0, 0, 0, 8, 255, 255)&lt;br /&gt;
    -- If we are in debug mode, render the vehicle invisible to see the vectors clearly&lt;br /&gt;
    if debugMode then&lt;br /&gt;
        playerVehicle.alpha = 0&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stopDrivingLightEffect()&lt;br /&gt;
    -- Stop applyDrivingLightEffect from being called and destroy everything created&lt;br /&gt;
    removeEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, applyDrivingLightEffect)&lt;br /&gt;
    destroyElement(lightMarker)&lt;br /&gt;
    destroyElement(light)&lt;br /&gt;
    -- If we are in debug mode, reset the vehicle alpha to normal again&lt;br /&gt;
    if debugMode then&lt;br /&gt;
        playerVehicle.alpha = 255&lt;br /&gt;
    end&lt;br /&gt;
    playerVehicle, lightMarker, light = nil, nil, nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- FUNCTIONS THAT MANAGE THE EFFECT --&lt;br /&gt;
-- Start or stop the effect when the player is driving a car&lt;br /&gt;
local function manageDrivingLightEffectStatus(_, seat)&lt;br /&gt;
    if eventName == &amp;quot;onClientPlayerVehicleEnter&amp;quot; then&lt;br /&gt;
        if seat == 0 then&lt;br /&gt;
            -- The player has just entered a vehicle as the driver. Start the effect&lt;br /&gt;
            startDrivingLightEffect()&lt;br /&gt;
        end&lt;br /&gt;
    elseif playerVehicle then&lt;br /&gt;
        -- The player has just exited a vehicle and we were applying the effect. Stop it&lt;br /&gt;
        stopDrivingLightEffect()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientPlayerVehicleEnter&amp;quot;, localPlayer, manageDrivingLightEffectStatus)&lt;br /&gt;
addEventHandler(&amp;quot;onClientPlayerVehicleExit&amp;quot;, localPlayer, manageDrivingLightEffectStatus)&lt;br /&gt;
&lt;br /&gt;
-- Start the effect when the resource starts if the player is driving a vehicle, and reset vehicle alpha back to normal if necessary&lt;br /&gt;
local function handleResourceStartStop()&lt;br /&gt;
    if eventName == &amp;quot;onClientResourceStart&amp;quot; then&lt;br /&gt;
        playerVehicle = localPlayer.vehicle or nil&lt;br /&gt;
        if playerVehicle then&lt;br /&gt;
            startDrivingLightEffect()&lt;br /&gt;
        end&lt;br /&gt;
    elseif playerVehicle then&lt;br /&gt;
        -- It is not necessary to call this function to just reset the car alpha, but it is a good practise to ALWAYS clean up everything nevertheless&lt;br /&gt;
        stopDrivingLightEffect()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, resourceRoot, handleResourceStartStop)&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStop&amp;quot;, resourceRoot, handleResourceStartStop)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===dot===&lt;br /&gt;
Calculates the (standard) dot/scalar product of two vectors. If we call that vectors A and B, the dot product is written as A · B. This can be used to calculate the angle between them. If the standard scalar product is 0, both vectors are orthogonal.&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;float Vector3:dot ( vector3 vector )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Required arguments=====&lt;br /&gt;
* '''vector''': a vector3 object to get the dot product with.&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This examples illustrates the concept of dot/scalar product and implements a useful function which can be used to get the angle between two vectors.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Shared&amp;quot; class=&amp;quot;both&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local vec1 = Vector3(1, 0, 0)&lt;br /&gt;
local vec2 = Vector3(0, 0, 0)&lt;br /&gt;
local dotproduct = vec1:dot(vec2)&lt;br /&gt;
&lt;br /&gt;
if dotproduct == 0 then&lt;br /&gt;
    outputDebugString(&amp;quot;vec1 is orthogonal to vec2&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Calculate angle between vec1 and vec2&lt;br /&gt;
function angle(vec1, vec2)&lt;br /&gt;
    -- Calculate the angle by applying law of cosines&lt;br /&gt;
    return math.acos(vec1:dot(vec2)/(vec1.length*vec2.length))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
outputDebugString(&amp;quot;Angle between vec1 and vec2: &amp;quot;..math.deg(angle(vec1, vec2))..&amp;quot;°&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===normalize===&lt;br /&gt;
Converts a vector to a unit vector (a vector of length 1).&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool Vector3:normalize ( )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This example slowly moves all the players' camera to look at the Mount Chilliad.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local targetPosition = Vector3(-2627.32, -1083.2, 433.35) -- Somewhere in Mount Chilliad&lt;br /&gt;
&lt;br /&gt;
local function moveCameraToTarget(deltaTime)&lt;br /&gt;
    local currentPosition = Vector3(getCameraMatrix())&lt;br /&gt;
    local direction = targetPosition - currentPosition&lt;br /&gt;
    direction:normalize() -- Get a direction vector by normalizing the vector from the current position to the target position&lt;br /&gt;
    setCameraMatrix(currentPosition + direction * deltaTime * 0.05, -2589.45, -1174.49, 418.09)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, moveCameraToTarget)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getX and setX===&lt;br /&gt;
===getY and setY===&lt;br /&gt;
===getZ and setZ===&lt;br /&gt;
===getNormalized===&lt;br /&gt;
Returns a normalized vector (of length 1) of the vector it's used on. Differently from the ''Vector3:normalize'' method, this one returns a ''vector3'' and doesn't modify the original vector.&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;vector3 Vector3:getNormalized ( )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This example slowly moves all the players' camera to look at the Mount Chilliad with a shorter code than the previous example.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local targetPosition = Vector3(-2627.32, -1083.2, 433.35) -- Somewhere in Mount Chilliad&lt;br /&gt;
&lt;br /&gt;
local function moveCameraToTarget(deltaTime)&lt;br /&gt;
    local currentPosition = Vector3(getCameraMatrix())&lt;br /&gt;
    local direction = (targetPosition - currentPosition):getNormalized() -- Get a direction vector by normalizing the vector from the current position to the target position&lt;br /&gt;
    setCameraMatrix(currentPosition + direction * deltaTime * 0.05, -2589.45, -1174.49, 418.09)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, moveCameraToTarget)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===getSquaredLength===&lt;br /&gt;
===getLength===&lt;br /&gt;
&lt;br /&gt;
[[ru:Vector/Vector3]]&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateForward&amp;diff=49936</id>
		<title>CanBrowserNavigateForward</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateForward&amp;diff=49936"/>
		<updated>2016-12-18T00:16:21Z</updated>

		<summary type="html">&lt;p&gt;Loki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
This function checks if the browser can go to the next page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool canBrowserNavigateForward( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser you want check for a next page.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser can go to the next page, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateBack&amp;diff=49935</id>
		<title>CanBrowserNavigateBack</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateBack&amp;diff=49935"/>
		<updated>2016-12-18T00:14:45Z</updated>

		<summary type="html">&lt;p&gt;Loki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
This function checks if the browser can return to the previous page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool canBrowserNavigateBack( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser you want to check for a previous page.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser can navigate back, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ReloadBrowserPage&amp;diff=49934</id>
		<title>ReloadBrowserPage</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ReloadBrowserPage&amp;diff=49934"/>
		<updated>2016-12-18T00:11:42Z</updated>

		<summary type="html">&lt;p&gt;Loki: Added page for ReloadBrowserPage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
This function reloads the current browser's page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool reloadBrowserPage( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser that you want to reload.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser has reloaded, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=NavigateBrowserForward&amp;diff=49933</id>
		<title>NavigateBrowserForward</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=NavigateBrowserForward&amp;diff=49933"/>
		<updated>2016-12-18T00:08:52Z</updated>

		<summary type="html">&lt;p&gt;Loki: Added page for NavigateBrowserForward&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
This function takes the browser to the next page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool navigateBrowserForward( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser that you want to take to the next page.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser has gone to the next page, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=NavigateBrowserBack&amp;diff=49932</id>
		<title>NavigateBrowserBack</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=NavigateBrowserBack&amp;diff=49932"/>
		<updated>2016-12-18T00:03:59Z</updated>

		<summary type="html">&lt;p&gt;Loki: Added page for NavigateBrowserBack&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
Returns the browser to the previous page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool navigateBrowserBack( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser that you want return to the previous page.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser has returned to the previous page, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateForward&amp;diff=49931</id>
		<title>CanBrowserNavigateForward</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateForward&amp;diff=49931"/>
		<updated>2016-12-17T23:58:48Z</updated>

		<summary type="html">&lt;p&gt;Loki: Added page for CanBrowserNavigateFroward&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
Checks if the browser can go to the next page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool canBrowserNavigateForward( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser you want navigate forward.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser can navigate forward, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateBack&amp;diff=49930</id>
		<title>CanBrowserNavigateBack</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CanBrowserNavigateBack&amp;diff=49930"/>
		<updated>2016-12-17T23:55:28Z</updated>

		<summary type="html">&lt;p&gt;Loki: Added page for CanBrowserNavigateBack&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0153|1.5.3|9912|&lt;br /&gt;
Checks if the browser can return to the previous page.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool canBrowserNavigateBack( browser webBrowser )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The browser you want navigate back.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the browser can navigate back, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a browser that can return to the last and previous pages and can also be refreshed:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
window = guiCreateWindow(126, 122, 848, 674, &amp;quot;Firechrome&amp;quot;, false)&lt;br /&gt;
guiWindowSetSizable(window, false)&lt;br /&gt;
&lt;br /&gt;
navigateBackBtn = guiCreateButton(10, 19, 39, 36, &amp;quot;&amp;lt;&amp;quot;, false, window)&lt;br /&gt;
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, &amp;quot;&amp;gt;&amp;quot;, false, window)&lt;br /&gt;
addressBar =  guiCreateEdit(137, 19, 701, 36, &amp;quot;&amp;quot;, false, window)&lt;br /&gt;
guiSetEnabled( addressBar, false )&lt;br /&gt;
reloadBtn = guiCreateButton(49, 19, 49, 36, &amp;quot;reload&amp;quot;, false, window)&lt;br /&gt;
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)&lt;br /&gt;
&lt;br /&gt;
-- Load our page on browser creation.&lt;br /&gt;
local theBrowser = guiGetBrowser(browser) &lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, theBrowser, &lt;br /&gt;
    function()&lt;br /&gt;
        loadBrowserURL(source, &amp;quot;https://forum.mtasa.com/&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons&lt;br /&gt;
addEventHandler( &amp;quot;onClientBrowserDocumentReady&amp;quot;, theBrowser, function( )&lt;br /&gt;
    navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))&lt;br /&gt;
    navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))&lt;br /&gt;
    guiSetText( addressBar, getBrowserURL( theBrowser ) )&lt;br /&gt;
end )&lt;br /&gt;
&lt;br /&gt;
-- This part handles the GUI navigation buttons for the browser.&lt;br /&gt;
addEventHandler( &amp;quot;onClientGUIClick&amp;quot;, resourceRoot, function ( )&lt;br /&gt;
    if source == navigateBackBtn then&lt;br /&gt;
        navigateBrowserBack(theBrowser)&lt;br /&gt;
    elseif source == navigateForwardBtn then&lt;br /&gt;
        navigateBrowserForward(theBrowser)&lt;br /&gt;
    elseif source == reloadBtn then&lt;br /&gt;
        reloadBrowserPage(theBrowser)&lt;br /&gt;
    end&lt;br /&gt;
end )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:CEF_functions&amp;diff=49929</id>
		<title>Template:CEF functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:CEF_functions&amp;diff=49929"/>
		<updated>2016-12-17T23:48:09Z</updated>

		<summary type="html">&lt;p&gt;Loki: Added canBrowserNavigateBack, canBrowserNavigateForward, navigateBrowserBack, navigateBrowserForward, reloadBrowserPage to CEF_functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{New items|3.0150|1.5|&lt;br /&gt;
*[[createBrowser]]&lt;br /&gt;
*[[executeBrowserJavascript]]&lt;br /&gt;
*[[focusBrowser]]&lt;br /&gt;
{{New items|3.0153|1.5.3-9912|&lt;br /&gt;
*[[resizeBrowser]]&lt;br /&gt;
}}&lt;br /&gt;
*[[isBrowserDomainBlocked]]&lt;br /&gt;
*[[isBrowserFocused]]&lt;br /&gt;
*[[isBrowserLoading]]&lt;br /&gt;
*[[getBrowserProperty]]&lt;br /&gt;
*[[getBrowserSettings]]&lt;br /&gt;
*[[getBrowserTitle]]&lt;br /&gt;
*[[getBrowserURL]]&lt;br /&gt;
*[[injectBrowserMouseDown]]&lt;br /&gt;
*[[injectBrowserMouseMove]]&lt;br /&gt;
*[[injectBrowserMouseUp]]&lt;br /&gt;
*[[injectBrowserMouseWheel]]&lt;br /&gt;
{{New items|3.0153|1.5.3|&lt;br /&gt;
*[[isBrowserSupported]]&lt;br /&gt;
|}}&lt;br /&gt;
*[[loadBrowserURL]]&lt;br /&gt;
*[[canBrowserNavigateBack]]&lt;br /&gt;
*[[canBrowserNavigateForward]]&lt;br /&gt;
*[[navigateBrowserBack]]&lt;br /&gt;
*[[navigateBrowserForward]]&lt;br /&gt;
*[[reloadBrowserPage]]&lt;br /&gt;
*[[setBrowserProperty]]&lt;br /&gt;
*[[setBrowserRenderingPaused]]&lt;br /&gt;
*[[setBrowserVolume]]&lt;br /&gt;
*[[requestBrowserDomains]]&lt;br /&gt;
|}}&lt;br /&gt;
{{New items|3.0151|1.5.1|&lt;br /&gt;
*[[setBrowserAjaxHandler]]&lt;br /&gt;
*[[getBrowserSource]]&lt;br /&gt;
*[[toggleBrowserDevTools]]&lt;br /&gt;
|}}&lt;br /&gt;
===GUI Functions=== &amp;lt;!-- Please see Template:GUI_functions when updating this section! --&amp;gt;&lt;br /&gt;
*[[guiCreateBrowser]]&lt;br /&gt;
*[[guiGetBrowser]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Inspect&amp;diff=49928</id>
		<title>Inspect</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Inspect&amp;diff=49928"/>
		<updated>2016-12-17T19:52:05Z</updated>

		<summary type="html">&lt;p&gt;Loki: added image to example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New items|3.0153|1.5.3|&lt;br /&gt;
This function returns human-readable representations of tables and MTA datatypes as a string.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string inspect ( mixed var )             &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''var:''' A variable of any datatype.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Always returns a string.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws the contents of a table and its data type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local Table = {    &lt;br /&gt;
    [&amp;quot;matrix&amp;quot;] = {position = {getElementPosition(localPlayer)},rotation = {getElementRotation( localPlayer )}},&lt;br /&gt;
    [&amp;quot;localplayer&amp;quot;] = getPlayerName(localPlayer),&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientRender&amp;quot;,root,&lt;br /&gt;
    function( )&lt;br /&gt;
        dxDrawText(inspect(Table),10,250)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This is an example of what it should look like:&lt;br /&gt;
[[File:InspectReturn.png|frame|none]]&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Utility functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=File:InspectReturn.png&amp;diff=49927</id>
		<title>File:InspectReturn.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=File:InspectReturn.png&amp;diff=49927"/>
		<updated>2016-12-17T19:40:10Z</updated>

		<summary type="html">&lt;p&gt;Loki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Inspect&amp;diff=49926</id>
		<title>Inspect</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Inspect&amp;diff=49926"/>
		<updated>2016-12-15T18:41:59Z</updated>

		<summary type="html">&lt;p&gt;Loki: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New items|3.0153|1.5.3|&lt;br /&gt;
This function returns human-readable representations of tables and MTA datatypes as a string.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string inspect ( mixed var )             &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''var:''' A variable of any datatype.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Always returns a string.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws the contents of a table and its data type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local Table = {    &lt;br /&gt;
    [&amp;quot;matrix&amp;quot;] = {position = {getElementPosition(localPlayer)},rotation = {getElementRotation( localPlayer )}},&lt;br /&gt;
    [&amp;quot;localplayer&amp;quot;] = getPlayerName(localPlayer),&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientRender&amp;quot;,root,&lt;br /&gt;
    function( )&lt;br /&gt;
        dxDrawText(inspect(Table),10,250)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
An example of what it should draw:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  localplayer = &amp;quot;Loki&amp;quot;,&lt;br /&gt;
  matrix= {&lt;br /&gt;
    position = { 2496.3908691406, -1669.853515625, 13.335947036743 },&lt;br /&gt;
    rotation = { -0, 0, 155.4147644043 }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Utility functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Inspect&amp;diff=49925</id>
		<title>Inspect</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Inspect&amp;diff=49925"/>
		<updated>2016-12-15T18:38:49Z</updated>

		<summary type="html">&lt;p&gt;Loki: created page for Inspect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New items|3.0153|1.5.3|&lt;br /&gt;
This function returns human-readable representations of tables and MTA datatypes as a string.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string inspect ( mixed var )             &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''var:''' A variable of any datatype.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Always returns a string.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws the contents of a table and its data type:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local Table = {    &lt;br /&gt;
    [&amp;quot;position&amp;quot;] = {position = {getElementPosition(localPlayer)},rotation = {getElementRotation( localPlayer )}},&lt;br /&gt;
    [&amp;quot;localplayer&amp;quot;] = getPlayerName(localPlayer),&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientRender&amp;quot;,root,&lt;br /&gt;
    function( )&lt;br /&gt;
        dxDrawText(inspect(Table),10,250)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
An example of what it should draw:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  localplayer = &amp;quot;Loki&amp;quot;,&lt;br /&gt;
  position = {&lt;br /&gt;
    position = { 2496.3908691406, -1669.853515625, 13.335947036743 },&lt;br /&gt;
    rotation = { -0, 0, 155.4147644043 }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Utility functions}}&lt;/div&gt;</summary>
		<author><name>Loki</name></author>
	</entry>
</feed>