<?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=TheNormalnij</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=TheNormalnij"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/TheNormalnij"/>
	<updated>2026-04-20T04:12:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81788</id>
		<title>EngineSetModelLODDistance</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81788"/>
		<updated>2025-02-02T16:00:20Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Example */ These numbers have no sense there.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function sets a custom LOD distance for any object / model ID. This is the distance at which objects of that model ID are switched to their LOD model, or (if there is no LOD model) become invisible.&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
The actual draw distance used is modified by the draw distance slider in the settings 'Video' tab of the MTA client.&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 0%, the engineSetModelLODDistance setting approximately matches the draw distance used.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''100''' units.''&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 100%, the engineSetModelLODDistance setting is approximately doubled before use.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''200''' units.''&lt;br /&gt;
&lt;br /&gt;
However, there is a general draw distance limit of 300 units. So engineSetModelLODDistance(1337,400) will mean model 1337 will be visible up to a distance of 300 units no matter what the 'Video' tab says.&lt;br /&gt;
&lt;br /&gt;
Therefore, unless it's really important, engineSetModelLODDistance should not be set to anything greater than 170.&amp;lt;br&amp;gt;&lt;br /&gt;
170 will still give the maximum draw distance (of 300 units) on clients that have a 'Video' tab draw distance setting of 100%, and it will help reduce lag for players who chose a lower draw distance in their settings.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[object]]s''':&lt;br /&gt;
*The limit is 300 units, but the actual draw distance used is 5 times the setting value. Also, they ignore the 'Video' tab draw distance slider. So a setting of 200 will mean a low LOD element will always have a draw distance of '''1000''' units.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[building]]s''':&lt;br /&gt;
*The distance must be set greater than 300 for a low LOD building in order to work correctly. Otherwise, the low LOD will always be visible. The actual draw distance is NOT 5 times the setting value.&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 engineSetModelLODDistance ( int model, float distance [, bool extendedLod = false ] ) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||Engine.setModelLODDistance}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''model:''' The model / object ID number you want to change the LOD distance of.&lt;br /&gt;
*'''distance:''' New LOD distance value in San Andreas units.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22676|&lt;br /&gt;
*'''extendedLod:''' Allows to set a greater distance than the current 325 units.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the function executed succesfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Cause massive lag by maxing out draw distance of all objects&lt;br /&gt;
&lt;br /&gt;
local objectsTable = getElementsByType(&amp;quot;object&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for i = 1, #objectsTable do&lt;br /&gt;
	local objectElement = objectsTable[i]&lt;br /&gt;
	local objectModel = getElementModel(objectElement)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(objectModel, 300) -- Set maximum draw distance&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example will, besides replacing with custom map objects, also set the LOD distance accordingly, a necessary step (otherwise the object could seem to fail loading and only show up 1 feet away)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function replaceObjects()&lt;br /&gt;
&lt;br /&gt;
	local col1 = engineLoadCOL(&amp;quot;map1.col&amp;quot;)&lt;br /&gt;
	local col2 = engineLoadCOL(&amp;quot;map2.col&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local txd = engineLoadTXD(&amp;quot;map.txd&amp;quot;)&lt;br /&gt;
	engineImportTXD(txd, 2357)&lt;br /&gt;
	engineImportTXD(txd, 2290)&lt;br /&gt;
&lt;br /&gt;
	local dff1 = engineLoadDFF(&amp;quot;map1.dff&amp;quot;)&lt;br /&gt;
	local dff2 = engineLoadDFF(&amp;quot;map2.dff&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	engineReplaceCOL(col1, 2357)&lt;br /&gt;
	engineReplaceCOL(col2, 2290)&lt;br /&gt;
	engineReplaceModel(dff1, 2357)&lt;br /&gt;
	engineReplaceModel(dff2, 2290)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(2357, 300)&lt;br /&gt;
	engineSetModelLODDistance(2290, 300)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example shows how to use LOD's with buildings&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function createMyPyramid()&lt;br /&gt;
    local pos = Vector3(0, 0, 3)&lt;br /&gt;
    local rot = Vector3(0, 0, 0)&lt;br /&gt;
    &lt;br /&gt;
    local modelHi = 8395  -- This model has a lot of polygons&lt;br /&gt;
    local modelLow = 8701 -- This model is optimized for drawing at a long distance&lt;br /&gt;
&lt;br /&gt;
    -- Always call this function if you don't like default draw distance&lt;br /&gt;
    -- or you allocated the model with using engineRequestModel&lt;br /&gt;
    engineSetModelLODDistance(modelHi, 100, true)&lt;br /&gt;
    engineSetModelLODDistance(modelLow, 500, true)&lt;br /&gt;
&lt;br /&gt;
    local lod = createBuilding(modelLow, pos, rot)&lt;br /&gt;
    local building = createBuilding(modelHi, pos, rot)&lt;br /&gt;
&lt;br /&gt;
    setLowLODElement(building,lod)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
{{ChangelogHeader}}&lt;br /&gt;
{{ChangelogItem|1.6.0-9.22676|Added extendedLod argument}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[getVehiclesLODDistance]]&lt;br /&gt;
* [[resetVehiclesLODDistance]]&lt;br /&gt;
* [[setVehiclesLODDistance]]&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81787</id>
		<title>EngineSetModelLODDistance</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81787"/>
		<updated>2025-02-02T15:47:27Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Example */ fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function sets a custom LOD distance for any object / model ID. This is the distance at which objects of that model ID are switched to their LOD model, or (if there is no LOD model) become invisible.&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
The actual draw distance used is modified by the draw distance slider in the settings 'Video' tab of the MTA client.&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 0%, the engineSetModelLODDistance setting approximately matches the draw distance used.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''100''' units.''&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 100%, the engineSetModelLODDistance setting is approximately doubled before use.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''200''' units.''&lt;br /&gt;
&lt;br /&gt;
However, there is a general draw distance limit of 300 units. So engineSetModelLODDistance(1337,400) will mean model 1337 will be visible up to a distance of 300 units no matter what the 'Video' tab says.&lt;br /&gt;
&lt;br /&gt;
Therefore, unless it's really important, engineSetModelLODDistance should not be set to anything greater than 170.&amp;lt;br&amp;gt;&lt;br /&gt;
170 will still give the maximum draw distance (of 300 units) on clients that have a 'Video' tab draw distance setting of 100%, and it will help reduce lag for players who chose a lower draw distance in their settings.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[object]]s''':&lt;br /&gt;
*The limit is 300 units, but the actual draw distance used is 5 times the setting value. Also, they ignore the 'Video' tab draw distance slider. So a setting of 200 will mean a low LOD element will always have a draw distance of '''1000''' units.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[building]]s''':&lt;br /&gt;
*The distance must be set greater than 300 for a low LOD building in order to work correctly. Otherwise, the low LOD will always be visible. The actual draw distance is NOT 5 times the setting value.&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 engineSetModelLODDistance ( int model, float distance [, bool extendedLod = false ] ) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||Engine.setModelLODDistance}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''model:''' The model / object ID number you want to change the LOD distance of.&lt;br /&gt;
*'''distance:''' New LOD distance value in San Andreas units.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22676|&lt;br /&gt;
*'''extendedLod:''' Allows to set a greater distance than the current 325 units.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the function executed succesfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Cause massive lag by maxing out draw distance of all objects&lt;br /&gt;
&lt;br /&gt;
local objectsTable = getElementsByType(&amp;quot;object&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for i = 1, #objectsTable do&lt;br /&gt;
	local objectElement = objectsTable[i]&lt;br /&gt;
	local objectModel = getElementModel(objectElement)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(objectModel, 300) -- Set maximum draw distance&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example will, besides replacing with custom map objects, also set the LOD distance accordingly, a necessary step (otherwise the object could seem to fail loading and only show up 1 feet away)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function replaceObjects()&lt;br /&gt;
&lt;br /&gt;
	local col1 = engineLoadCOL(&amp;quot;map1.col&amp;quot;)&lt;br /&gt;
	local col2 = engineLoadCOL(&amp;quot;map2.col&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local txd = engineLoadTXD(&amp;quot;map.txd&amp;quot;)&lt;br /&gt;
	engineImportTXD(txd, 2357)&lt;br /&gt;
	engineImportTXD(txd, 2290)&lt;br /&gt;
&lt;br /&gt;
	local dff1 = engineLoadDFF(&amp;quot;map1.dff&amp;quot;)&lt;br /&gt;
	local dff2 = engineLoadDFF(&amp;quot;map2.dff&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	engineReplaceCOL(col1, 2357)&lt;br /&gt;
	engineReplaceCOL(col2, 2290)&lt;br /&gt;
	engineReplaceModel(dff1, 2357)&lt;br /&gt;
	engineReplaceModel(dff2, 2290)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(2357, 2000)&lt;br /&gt;
	engineSetModelLODDistance(2290, 2000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example shows how to use LOD's with buildings&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function createMyPyramid()&lt;br /&gt;
    local pos = Vector3(0, 0, 3)&lt;br /&gt;
    local rot = Vector3(0, 0, 0)&lt;br /&gt;
    &lt;br /&gt;
    local modelHi = 8395  -- This model has a lot of polygons&lt;br /&gt;
    local modelLow = 8701 -- This model is optimized for drawing at a long distance&lt;br /&gt;
&lt;br /&gt;
    -- Always call this function if you don't like default draw distance&lt;br /&gt;
    -- or you allocated the model with using engineRequestModel&lt;br /&gt;
    engineSetModelLODDistance(modelHi, 100, true)&lt;br /&gt;
    engineSetModelLODDistance(modelLow, 500, true)&lt;br /&gt;
&lt;br /&gt;
    local lod = createBuilding(modelLow, pos, rot)&lt;br /&gt;
    local building = createBuilding(modelHi, pos, rot)&lt;br /&gt;
&lt;br /&gt;
    setLowLODElement(building,lod)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
{{ChangelogHeader}}&lt;br /&gt;
{{ChangelogItem|1.6.0-9.22676|Added extendedLod argument}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[getVehiclesLODDistance]]&lt;br /&gt;
* [[resetVehiclesLODDistance]]&lt;br /&gt;
* [[setVehiclesLODDistance]]&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81786</id>
		<title>EngineSetModelLODDistance</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81786"/>
		<updated>2025-02-02T15:46:58Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Example */ Add an example for buildings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function sets a custom LOD distance for any object / model ID. This is the distance at which objects of that model ID are switched to their LOD model, or (if there is no LOD model) become invisible.&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
The actual draw distance used is modified by the draw distance slider in the settings 'Video' tab of the MTA client.&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 0%, the engineSetModelLODDistance setting approximately matches the draw distance used.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''100''' units.''&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 100%, the engineSetModelLODDistance setting is approximately doubled before use.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''200''' units.''&lt;br /&gt;
&lt;br /&gt;
However, there is a general draw distance limit of 300 units. So engineSetModelLODDistance(1337,400) will mean model 1337 will be visible up to a distance of 300 units no matter what the 'Video' tab says.&lt;br /&gt;
&lt;br /&gt;
Therefore, unless it's really important, engineSetModelLODDistance should not be set to anything greater than 170.&amp;lt;br&amp;gt;&lt;br /&gt;
170 will still give the maximum draw distance (of 300 units) on clients that have a 'Video' tab draw distance setting of 100%, and it will help reduce lag for players who chose a lower draw distance in their settings.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[object]]s''':&lt;br /&gt;
*The limit is 300 units, but the actual draw distance used is 5 times the setting value. Also, they ignore the 'Video' tab draw distance slider. So a setting of 200 will mean a low LOD element will always have a draw distance of '''1000''' units.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[building]]s''':&lt;br /&gt;
*The distance must be set greater than 300 for a low LOD building in order to work correctly. Otherwise, the low LOD will always be visible. The actual draw distance is NOT 5 times the setting value.&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 engineSetModelLODDistance ( int model, float distance [, bool extendedLod = false ] ) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||Engine.setModelLODDistance}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''model:''' The model / object ID number you want to change the LOD distance of.&lt;br /&gt;
*'''distance:''' New LOD distance value in San Andreas units.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22676|&lt;br /&gt;
*'''extendedLod:''' Allows to set a greater distance than the current 325 units.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the function executed succesfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Cause massive lag by maxing out draw distance of all objects&lt;br /&gt;
&lt;br /&gt;
local objectsTable = getElementsByType(&amp;quot;object&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for i = 1, #objectsTable do&lt;br /&gt;
	local objectElement = objectsTable[i]&lt;br /&gt;
	local objectModel = getElementModel(objectElement)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(objectModel, 300) -- Set maximum draw distance&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example will, besides replacing with custom map objects, also set the LOD distance accordingly, a necessary step (otherwise the object could seem to fail loading and only show up 1 feet away)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function replaceObjects()&lt;br /&gt;
&lt;br /&gt;
	local col1 = engineLoadCOL(&amp;quot;map1.col&amp;quot;)&lt;br /&gt;
	local col2 = engineLoadCOL(&amp;quot;map2.col&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local txd = engineLoadTXD(&amp;quot;map.txd&amp;quot;)&lt;br /&gt;
	engineImportTXD(txd, 2357)&lt;br /&gt;
	engineImportTXD(txd, 2290)&lt;br /&gt;
&lt;br /&gt;
	local dff1 = engineLoadDFF(&amp;quot;map1.dff&amp;quot;)&lt;br /&gt;
	local dff2 = engineLoadDFF(&amp;quot;map2.dff&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	engineReplaceCOL(col1, 2357)&lt;br /&gt;
	engineReplaceCOL(col2, 2290)&lt;br /&gt;
	engineReplaceModel(dff1, 2357)&lt;br /&gt;
	engineReplaceModel(dff2, 2290)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(2357, 2000)&lt;br /&gt;
	engineSetModelLODDistance(2290, 2000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example shows how to use LOD's with buildings&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function createMyPiramid()&lt;br /&gt;
    local pos = Vector3(0, 0, 3)&lt;br /&gt;
    local rot = Vector3(0, 0, 0)&lt;br /&gt;
    &lt;br /&gt;
    local modelHi = 8395  -- This model has a lot of polygons&lt;br /&gt;
    local modelLow = 8701 -- This model is optimized for drawing at a long distance&lt;br /&gt;
&lt;br /&gt;
    -- Always call this function if you don't like default draw distance&lt;br /&gt;
    -- or you allocated the model with using engineRequestModel&lt;br /&gt;
    engineSetModelLODDistance(modelHi, 100, true)&lt;br /&gt;
    engineSetModelLODDistance(modelLow, 500, true)&lt;br /&gt;
&lt;br /&gt;
    local lod = createBuilding(modelLow, pos, rot)&lt;br /&gt;
    local building = createBuilding(modelHi, pos, rot)&lt;br /&gt;
&lt;br /&gt;
    setLowLODElement(building,lod)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
{{ChangelogHeader}}&lt;br /&gt;
{{ChangelogItem|1.6.0-9.22676|Added extendedLod argument}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[getVehiclesLODDistance]]&lt;br /&gt;
* [[resetVehiclesLODDistance]]&lt;br /&gt;
* [[setVehiclesLODDistance]]&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81785</id>
		<title>EngineSetModelLODDistance</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineSetModelLODDistance&amp;diff=81785"/>
		<updated>2025-02-02T15:33:26Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: 300 only for low lod&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function sets a custom LOD distance for any object / model ID. This is the distance at which objects of that model ID are switched to their LOD model, or (if there is no LOD model) become invisible.&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
The actual draw distance used is modified by the draw distance slider in the settings 'Video' tab of the MTA client.&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 0%, the engineSetModelLODDistance setting approximately matches the draw distance used.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''100''' units.''&lt;br /&gt;
&lt;br /&gt;
*When the 'Video' tab draw distance slider is 100%, the engineSetModelLODDistance setting is approximately doubled before use.&lt;br /&gt;
:''e.g. engineSetModelLODDistance(1337,100) will mean model 1337 will be visible up to a distance of '''200''' units.''&lt;br /&gt;
&lt;br /&gt;
However, there is a general draw distance limit of 300 units. So engineSetModelLODDistance(1337,400) will mean model 1337 will be visible up to a distance of 300 units no matter what the 'Video' tab says.&lt;br /&gt;
&lt;br /&gt;
Therefore, unless it's really important, engineSetModelLODDistance should not be set to anything greater than 170.&amp;lt;br&amp;gt;&lt;br /&gt;
170 will still give the maximum draw distance (of 300 units) on clients that have a 'Video' tab draw distance setting of 100%, and it will help reduce lag for players who chose a lower draw distance in their settings.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[object]]s''':&lt;br /&gt;
*The limit is 300 units, but the actual draw distance used is 5 times the setting value. Also, they ignore the 'Video' tab draw distance slider. So a setting of 200 will mean a low LOD element will always have a draw distance of '''1000''' units.&lt;br /&gt;
&lt;br /&gt;
'''Note for low LOD [[building]]s''':&lt;br /&gt;
*The distance must be set greater than 300 for a low LOD building in order to work correctly. Otherwise, the low LOD will always be visible. The actual draw distance is NOT 5 times the setting value.&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 engineSetModelLODDistance ( int model, float distance [, bool extendedLod = false ] ) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||Engine.setModelLODDistance}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''model:''' The model / object ID number you want to change the LOD distance of.&lt;br /&gt;
*'''distance:''' New LOD distance value in San Andreas units.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22676|&lt;br /&gt;
*'''extendedLod:''' Allows to set a greater distance than the current 325 units.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the function executed succesfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Cause massive lag by maxing out draw distance of all objects&lt;br /&gt;
&lt;br /&gt;
local objectsTable = getElementsByType(&amp;quot;object&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for i = 1, #objectsTable do&lt;br /&gt;
	local objectElement = objectsTable[i]&lt;br /&gt;
	local objectModel = getElementModel(objectElement)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(objectModel, 300) -- Set maximum draw distance&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example will, besides replacing with custom map objects, also set the LOD distance accordingly, a neccesary step (otherwise the object could seem to fail loading and only show up 1 feet away)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function replaceObjects()&lt;br /&gt;
&lt;br /&gt;
	local col1 = engineLoadCOL(&amp;quot;map1.col&amp;quot;)&lt;br /&gt;
	local col2 = engineLoadCOL(&amp;quot;map2.col&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	local txd = engineLoadTXD(&amp;quot;map.txd&amp;quot;)&lt;br /&gt;
	engineImportTXD(txd, 2357)&lt;br /&gt;
	engineImportTXD(txd, 2290)&lt;br /&gt;
&lt;br /&gt;
	local dff1 = engineLoadDFF(&amp;quot;map1.dff&amp;quot;)&lt;br /&gt;
	local dff2 = engineLoadDFF(&amp;quot;map2.dff&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
	engineReplaceCOL(col1, 2357)&lt;br /&gt;
	engineReplaceCOL(col2, 2290)&lt;br /&gt;
	engineReplaceModel(dff1, 2357)&lt;br /&gt;
	engineReplaceModel(dff2, 2290)&lt;br /&gt;
&lt;br /&gt;
	engineSetModelLODDistance(2357, 2000)&lt;br /&gt;
	engineSetModelLODDistance(2290, 2000)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
{{ChangelogHeader}}&lt;br /&gt;
{{ChangelogItem|1.6.0-9.22676|Added extendedLod argument}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* [[getVehiclesLODDistance]]&lt;br /&gt;
* [[resetVehiclesLODDistance]]&lt;br /&gt;
* [[setVehiclesLODDistance]]&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Table.size&amp;diff=81768</id>
		<title>Table.size</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Table.size&amp;diff=81768"/>
		<updated>2025-01-28T14:57:08Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Example */ #tab returns 3 in this case&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle&amp;gt;&amp;lt;/lowercasetitle&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function returns the total size of a table and not only the highest numerical index like table.maxn or the number of fields that have a numerical index like the #-operator.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int table.size( table tab )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''tab''': The table to retrieve the total size of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns the total number of fields the table contains.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server- and/or clientside Script&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;
function table.size(tab)&lt;br /&gt;
    local length = 0&lt;br /&gt;
    for _ in pairs(tab) do length = length + 1 end&lt;br /&gt;
    return length&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;Server- and/or clientside Script&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 tab = { 1, 2, 3, [25] = 4, five = 5, foo = &amp;quot;bar&amp;quot; }&lt;br /&gt;
outputChatBox(tostring(#tab)) --prints: 3 (because there are 3 sequential fields with a numerical index)&lt;br /&gt;
outputChatBox(tostring(table.maxn(tab))) --prints: 25 (because the highest numerical index is 25)&lt;br /&gt;
outputChatBox(tostring(table.size(tab))) --prints: 6 (because the table has 6 fields in total)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Author: NeonBlack&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Useful_Functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Useful_Functions&amp;diff=81767</id>
		<title>Template:Useful Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Useful_Functions&amp;diff=81767"/>
		<updated>2025-01-28T14:27:26Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Table functions */ Remove table.fromString&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Table functions ===&lt;br /&gt;
*[[addTableChangeHandler]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function monitors the changes of a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[pairsByKeys]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function sort pairs table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[rangeToTable]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts a string range to a table containing number values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setTableProtected]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function protects a table and makes it read-only.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setTableToSql]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function is used to save the table in the database (sql).&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[Sort_Functions]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» These functions are able to sort your tables by a key.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getKeyFromValueInTable]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the key of the specified value in a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getTableFromSql]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This functionality is used to obtain saved tables using the function ([https://wiki.multitheftauto.com/wiki/SetTableToSql SetTableToSql ]).&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isValueInTable]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns true if the value exists in the table, false if the value does not exist in the table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.compare]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether two given tables are equal.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.copy]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function copies a whole table and all the tables in that table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.deepmerge]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function deep merges two tables. Every nested table will be correspondingly merged.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.element]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a new table with only userdata content.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.flip]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the table from the last value to the first value, such as reflection.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.getRandomRows]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns random rows from table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.map]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function goes through a table and replaces every field with the return of the passed function, where the field's value is passed as first argument and optionally more arguments.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.merge]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function merges two or more tables together.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.random]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function retrieves a random value from a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.removeValue]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function removes a specified value from a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.size]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the absolute size of a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL functions ===&lt;br /&gt;
*[[aclGroupClone]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function clone a group to another group with/without ACLs and/or objects.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[renameAclGroup]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gives an existing ACL group a new name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInACLGroup]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns all players in an ACL group.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerInACL]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a player element is in an ACL group.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Account functions ===&lt;br /&gt;
*[[getPlayerFromAccountName]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function is used to obtain a player by the name of his account.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerAccount]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if the account is a valid player account (account exists and is not a guest account)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Camera functions ===&lt;br /&gt;
*[[smoothMoveCamera]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to create a cinematic camera flight.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[sCamera]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» The function creates a speed camera in-game, fines speeding vehicles, and notifies the driver and take money from player based on vehicle speed.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Colshape functions ===&lt;br /&gt;
*[[createGarageColShape]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function creates a collision shape from the specified garage.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cursor functions ===&lt;br /&gt;
*[[getCursorMovedOn]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks in which way the cursor is currently moving.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setCursorCenteredOnRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This functions will center the cursor inside a rectangle.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Drawing functions ===&lt;br /&gt;
*[[dxDrawAnimWindow]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws an animated 2D window on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawBorderedRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a bordered rectangle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawBorderedText]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a bordered text.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawDashedLine]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a line with dashes.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawEditbox]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a edit box across the screen - rendered for one frame. This should be used in conjunction with '''onClientRender''' in order to display continuously.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawGifImage]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function simulates the effect of a GIF image by using image sprites in 2D.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawImage3D]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D image in GTA world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawImageOnElement]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws an image on any element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawLinedRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a rectangle outline with dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawLoading]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a loading bar on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawOctagon3D]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function creates a 3D Octagon&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawPolygon]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a custom polygon on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawProgressBar]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function simulates a progress bar drawed using DirectDraw.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRectangle3D]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D rectangle in GTA world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRectangleOnPlayer]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D rectangle above the player.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRing]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a ring with dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRombo]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function creates a Rhombus.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawSprite]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draw a sprite in the 3D world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawTextOnElement]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function draws a text on any element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawTextOnRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Esta funcion crea un rectangle con un texto dentro.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawTriangle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a triangle with dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawBordered3DLine]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;»This function creates a bordered area with 3D dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxFade]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function fade-in or fade-out any dxDraw by gradually changing its alpha value.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxGetFontSizeFromHeight]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the font size from given height.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxGetRealFontHeight]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the height of a font.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[wordWrap]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function breaks a long string into a table of separate lines limited to a specific length in pixels, for drawing separately.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[CreateRectangle3D]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a 3d rectangle on the player screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getScreenStartPositionFromBox]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function helps with getting the correct position for your dx-effects.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Effects functions ===&lt;br /&gt;
*[[attachEffect]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you attach an effect to an element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setScreenFlash]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function will make the screen flash(like a screenshot).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Element functions === &lt;br /&gt;
*[[autoAttach]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function attaches one element into another at the same position and rotation they are.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[attachElementToBone]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to attach an element to ped bone accurately using new bone functions.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementDirectionCardialPoint]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the direction of the element according to the ''wind rose''.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementSpeed]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the specified element's speed in m/s, km/h or mph.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementUsingData]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns table elements that contains the elements data with the given key and value.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementZoneFullName]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to retrieve the zone full name of a element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementsInDimension]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of elements that are in the specified dimension.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementsWithinMarker]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of elements that are within a marker's collision shape.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getNearestElement]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the nearest element (of a specific type) to a player.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPositionInFrontOfElement]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns position in provided distance away from element, including element's rotation.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementInAir]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is in air or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementInPhotograph]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is in the player's camera picture area.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementInRange]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check if an element's range to a main point is within the maximum range.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementMoving]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is moving.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementPlayer]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether the element is a player or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementWithinAColShape]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is within a collision shape element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[multi_check]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks one element to many, handy and clean.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setElementSpeed]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to set the speed of an element in kph or mph units.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
*[[onClientPlayerTimeChange]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This code implements an event that is triggered when the player's real time change.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[onPlayerZoneChange]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This code implements an event that is triggered when the player enters a new area on the map.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[onVehicleWeaponFire]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This code implements an event that is triggered when a player in a vehicle fires a vehicle's weapon.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Input functions ===&lt;br /&gt;
*[[bindControlKeys]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to bind each key bound to a control individually. Doing this bypasses a little MTA restriction.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[unbindControlKeys]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to unbind each key bound to a control individually. Use this function with [[bindControlKeys]].&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getBoundControls]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of control names that are bound to the specified key.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isCommandHandlerAdded]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check if a command is added or not in the respective resource.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data functions === &lt;br /&gt;
*[[levenshtein]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function can be used to calculate the Levenshtein distance between two strings.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[gregorianToJalali]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts gregorian date to jalali/shamsi date.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[byte2human]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts an integer (number of bytes) into a human-readable unit.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[capitalize]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function capitalizes a given string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertDate]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts date to another look.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertServerTickToTimeStamp]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts server ticks to a unix timestamp.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertTextToSpeech]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts the provided text to a speech in the provided language which players can hear.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[findRotation3D]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function takes two sets of XYZ coordinates. It returns the 3D direction from point A to point B.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[findRotation]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function takes two points and returns the direction from point A to point B.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[formatDate]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function formats a date on the basis of a format string and returns it.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[formatNumber]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function formats large numbers by adding commas.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[generateRandomASCIIString]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a random string which uses ASCII characters. &amp;lt;/span&amp;gt;&lt;br /&gt;
*[[generateString]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function generates a random string with any characters.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getAge]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the age of a given birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getDistanceBetweenElements]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Returns the distance between two elements.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getDistanceBetweenPointAndSegment2D]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function takes point coordinates and line (a segment) starting and ending coordinates. It returns the shortest distance between the point and the line.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getEasterDate]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns easter date monthday and month for a given year.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementRelatedAngle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the related angle between one element to another. This is useful to check which side an element is to another.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getFreeDimension]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function get free dimension.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getOffsetFromXYZ]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to take an entity and a position and calculate the relative offset between them accounting for rotations.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPointFromDistanceRotation]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function finds a point based on a starting point, direction and distance.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRealMonth]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the current month name&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRGColorFromPercentage]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia', sans-serif; font-size:smaller;&amp;quot;&amp;gt;»This function returns two integers representing red and green colors according to the specified percentage.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getScreenRotationFromWorldPosition]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a screen relative rotation to a world position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getTimestamp]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the UNIX timestamp of a specified date and time.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[gradientString]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function transforms a string in a new coloured gradient string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[hex2rgb]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function convert hex to rgb.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[hexColorToRGB]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function convert hex string/number to RGBA values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isLeapYear]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a boolean representing if a given year is a leap year.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isValidMail]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether a provided e-mail string is valid.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[removeHex]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function is used to remove hexadecimal numbers (colors, for example) from strings.&lt;br /&gt;
*[[RGBToHex]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a string representing the color in hexadecimal.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[RGBToHSV]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function convert RGB to HSV color space.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[RGBToDecimal]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function convert RGB to Decimal color.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[secondsToTimeDesc]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts a plain seconds-integer into a user-friendly time description.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.count]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function counts the amount of occurences of a string in a string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.explode]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function splits a string at a given separator pattern and returns a table with the pieces.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.insert]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function inserts a string within another string at a given position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[splitMultiple]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function improves the split function so that multiple characters can be used as the split at character.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[switch]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows the value of a variable or expression to control the flow of program execution via a multiway branch.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[tocolor2rgba]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function convert tocolor to rgba.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[toHex]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts a decimal number to a hexadecimal number, as a fix to be used client-side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[var dump]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function outputs information about one or more variables using outputConsole.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[wavelengthToRGBA]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts a physical wavelength of light to a RGBA color.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[fixPersianString]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a fixed sorted bilingual RTL for strings consisting of Farsi/Arabic and English.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GUI functions === &lt;br /&gt;
*[[centerWindow]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function centers a CEGUI window element responsively in any resolution.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseOnGUICloseButton]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check whether the mouse cursor/pointer is within a gui-window's native close button.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseOnGuiElement]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check whether or not your mouse is over a specific gui element, this is especially useful if the gui element has a parent. &amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiMoveElement]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function moves guiElement by/like using moveObject.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiSetStaticImageMovable]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to move a static image like a gui window.&amp;lt;/span&amp;gt;&lt;br /&gt;
=====Comboboxes=====&lt;br /&gt;
*[[guiComboBoxAdjustHeight]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function adjusts a CEGUI combobox element to have the correct height.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Gridlists=====&lt;br /&gt;
*[[convertGridListToText]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts grid list contents to text.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getGridListRowIndexFromText]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the GridList row index from the specified text.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListAddPlayers]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function add all online players to a grid list.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isTextInGridList]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if some text exist or not in the GridList.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListGetColumnIDFromTitle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets a gridlist's column ID from the column title.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListGetSelectedText]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a string containing the inner text of a selected gridlist item.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListSetColumnNonSortable]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function makes a gridlist column become non-sortable.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Labels=====&lt;br /&gt;
*[[guiLabelAddEffect]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function add an effects to the gui-label like (shadow, outline).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Marker functions ===&lt;br /&gt;
*[[createMarkerAttachedTo]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function creates a marker that is attached to an element.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Math functions ===&lt;br /&gt;
*[[reMap]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Re-maps a number from one range to another.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.clamp]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the number between range of numbers or it's minimum or maximum.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.getBezierPoint]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Get N-th order bezier point.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.hypot]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the Hypotenuse of the triangle given by sides x and y.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.isPointInPolygon]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Check if point is inside polygon or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.lerp]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Get val between two integer.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.percent]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a percentage from two number values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.polygonArea]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Compute area of any polygon.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.randomDiff]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Generates a pseudo-random integer that's always different from the last random number generated.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.rotVecToEulerAngle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Rotation Vector To Euler Angle&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.round]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Rounds a number whereas the number of decimals to keep and the method may be set.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[mathNumber]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function is a workaround for the client-side floating-point precision of 24-bits.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[Math.percentProgress|math.percentProgress]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Returns a percentage progress from two specific values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.average]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the simple arithmetic mean of multiple numbers.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.absin]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a formula representing the just positive half of a sine wave.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Map functions ===&lt;br /&gt;
*[[assignLod]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function lets you conveniently generate and apply a LOD model to a mapping object.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getWorldPositionFromMapPosition]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function converts an F11 map position to world position.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ped functions ===&lt;br /&gt;
*[[getAlivePlayersInTeam]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the alive players in a team.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getGuestPlayers]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets a players not login or players Guest .&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getOnlineAdmins]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all logged-in administrators.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedEyesPosition]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to get peds eyes position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedGender]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to get peds their gender.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedMaxHealth]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a pedestrians's maximum health by converting it from their maximum health stat.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedMaxOxygenLevel]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a ped's maximum oxygen level by converting it from their maximum underwater stamina stat.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedWeaponSkill]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a ped's corresponding weapon skill level name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedHitBone]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets the approximate number of the bone where the ped is hit.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerFromNamePart]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a player from partial name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerFromSerial]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a player from their serial.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersByData]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of players that have the specified data name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInPhotograph]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all players in photograph.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInVehicles]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the players insides vehicles from a specified dimension.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerNameFromID]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function will get the player name from the ID element data.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedAiming]]&amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a pedestrian is aiming their weapon.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedAimingNearPed]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This is similar to isPedAiming but uses a colshape to be more precise.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedDiving]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This feature checks that pedestrian is diving in the water.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedDrivingVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a specified pedestrian is driving a vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedNearbyWall]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if player/ped is nearby a objects like buildings or walls.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerInTeam]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a player is in a specified team.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setPedAttack]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function will make a ped attack a specified target.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setPedFollow]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function will make a ped follow a specified target.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Player functions ===&lt;br /&gt;
*[[countPlayersInRange]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the number of players that are within a certain range of the specified coordinates.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerPreviousAndNextWeapon]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the player previous and next weapon.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInRange]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function make a table of players within certain range.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerActuallyInVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a player is actually in a vehicle instead of just in the process of entering.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerHitByVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function cancels event when a element is hit by a vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resource functions ===&lt;br /&gt;
*[[getResourceScripts]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the resource scripts.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getResourceSettings]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the resource settings.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getResourceSize]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the size of a specified resource in kB(kilobyte)&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[refreshResource]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function refreshes your resource if you changed any of the files&lt;br /&gt;
*[[setResourcePriority]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function set resource download priority group.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sound functions ===&lt;br /&gt;
*[[isSoundFinished]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a sound element has finished.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[stopSoundSlowly]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function stop your sound element slowly.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Browser functions ===&lt;br /&gt;
*[[playVideo]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function plays a video on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team functions ===&lt;br /&gt;
*[[getTeamFromColor]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a team element by the specified color.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getTeamWithFewestPlayers]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a team element with least players of all the specified teams.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vehicle functions ===&lt;br /&gt;
*[[findEmptyCarSeat]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function finds you the first empty seat in a vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getNearestVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets the nearest vehicle to the specified player in a specified distance.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRandomVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets a random vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getValidVehicleModels]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all valid vehicle models.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getVehiclesCountByType]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the amount of vehicles by the given type as an integer value.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getVehicleTurnVelocityCenterOfMass]]&amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets a vehicle's turn velocity relative to the vehicle's center or mass.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleDoubleExhaust]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks is exhaust vehicle double.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleEmpty]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether a vehicle is empty.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleOccupied]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a specified vehicle is occupied.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleOnRoof]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether vehicle is on roof.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleOnFire]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if the vehicle is on fire or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleReversing]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a specified vehicle is moving backwards.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleUpgraded]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks is vehicle upgraded by upgrade ID.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setVehicleGravityPoint]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function sets a vehicle's gravity in the direction of a 3 dimensional coordinate with the strength specified.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setVehicleTurnVelocityCenterOfMass]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function sets a vehicle's turn velocity relative to the vehicle's center or mass.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setVehicleHandlingFromText]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function sets a vehicle's handling from text.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setVehicleWheelModel]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function changes the wheel model of the informed vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Weapon functions === &lt;br /&gt;
*[[getJetpackWeaponsEnabled]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of enabled weapons usable on a jetpack.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Object functions ===&lt;br /&gt;
*[[getDynamicDoorObjectOpenRatio]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function tells you how open a dynamic door is in a range from 0 to 1.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementObject]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function tells you if an element is an object or no.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML functions ===&lt;br /&gt;
*[[getXMLNodes]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns all children of a XML node.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Engine functions ===&lt;br /&gt;
*[[engineGetCOLsFromLibrary]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function gets the collision data from the col library.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[engineLoadIMGContainer]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function loads the IMG container.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utility ===&lt;br /&gt;
*[[animate]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to use interpolateBetween without render event and easily used.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[callClientFunction]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to call any client-side function from the server's side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[callServerFunction]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to call any server-side function from the client's side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[check]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if its arguments are of the right type and calls the error-function if one is not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[checkPassiveTimer]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to use passive timers in your conditions. For example you want to prevent players repeatedly using a command.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[coroutine.resume]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function applies a fix for hidden coroutine error messages.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[compact]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function create table containing variables and their values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getBanBySerial]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the ban if the serial is banned.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getBanFromName]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This functions returns the ban of the given playername.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getCurrentFPS]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the frames per second at which GTA: SA is running.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getSkinNameFromID]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns the name of the skin from the given id.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[IfElse]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns one of two values based on a boolean expression.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isLastExecuteInTimer]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function check if the execute is the last execute in the timer.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseInCircle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a cursor position is in circular area or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseInPosition]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check whether the mouse cursor/pointer is within a rectangular position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[iterElements]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function returns ''a time-saving'' iterator for your for-loops.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[PlotTrajectoryAtTime]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» Calculate projectile/water trajectory.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[preprocessor]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function allow you to use gcc macros.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[vector3:compare]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This method checks whether two vectors match, with optional precision.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[svgCreateRoundedRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function creates a rectangle with rounded edges.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[debounce]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function is removing unwanted input noise.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[listAllFiles]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function lists all files and subdirectories within a given directory and its subdirectories.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dumpdelete]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function recursively deletes elements inside a table, destroying elements like vehicles, peds, or killing timers.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===String functions===&lt;br /&gt;
*[[string.endsWith]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a string ends with other string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.startsWith]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a string starts with other string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.repetition]] &amp;lt;span style=&amp;quot;color:gray; font-size:smaller;&amp;quot;&amp;gt;» This function repeats a substring n times.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Useful Functions]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Table.fromString&amp;diff=81766</id>
		<title>Table.fromString</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Table.fromString&amp;diff=81766"/>
		<updated>2025-01-28T14:25:06Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{delete| This implementation compromises script security.}}&lt;br /&gt;
&lt;br /&gt;
{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle&amp;gt;&amp;lt;/lowercasetitle&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function converts string to a table.&amp;lt;br/&amp;gt;&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;string table.fromString( string str )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''str''': The string to convert.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns table if string was successfully converted, false otherwise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Shared function&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;
function table.fromString(str)&lt;br /&gt;
    if type(str) ~= 'string' then return false end&lt;br /&gt;
    return (loadstring)('return '..str)()&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;
'''Author:''' Tracer&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Useful_Functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Talk:Table.fromString&amp;diff=81765</id>
		<title>Talk:Table.fromString</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Talk:Table.fromString&amp;diff=81765"/>
		<updated>2025-01-28T14:21:35Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;This implementation violates script security. --~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This implementation violates script security. --[[User:TheNormalnij|TheNormalnij]] ([[User talk:TheNormalnij|talk]]) 14:21, 28 January 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:ExampleCreateObjectOrBuilding&amp;diff=81756</id>
		<title>Template:ExampleCreateObjectOrBuilding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:ExampleCreateObjectOrBuilding&amp;diff=81756"/>
		<updated>2025-01-24T15:10:24Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: setElementAlpha works only with objects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This template is used on [[createBuilding]] and [[createObject]] pages, as a unified example. &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;section name=&amp;quot;How to automatically perform object/building creation&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example shows you how to automatically create an object or building element according to certain parameters.&lt;br /&gt;
&lt;br /&gt;
'''This script onlys works CLIENTSIDE due to [[createBuilding]] and [[engineGetModelPhysicalPropertiesGroup]].'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Creates an 'object' or 'building' element based on certain parameters or one of the functions fails&lt;br /&gt;
-- This function will throw an error when unexpected arguments are used&lt;br /&gt;
-- TODO: Add LOD support&lt;br /&gt;
function createObjectOrBuilding(modelID, x, y, z, rx, ry, rz, interior, dimension)&lt;br /&gt;
    -- Validate the arguments passed&lt;br /&gt;
    assert(type(modelID)==&amp;quot;number&amp;quot;, &amp;quot;invalid modelID passed: &amp;quot; .. tostring(modelID))&lt;br /&gt;
    assert(type(x)==&amp;quot;number&amp;quot; and type(y)== &amp;quot;number&amp;quot; and type(z)==&amp;quot;number&amp;quot;, &amp;quot;invalid position passed: &amp;quot; .. tostring(x) .. &amp;quot;, &amp;quot; .. tostring(y) .. &amp;quot;, &amp;quot; .. tostring(z))&lt;br /&gt;
    if not rx then rx = 0 end&lt;br /&gt;
    if not ry then ry = 0 end&lt;br /&gt;
    if not rz then rz = 0 end&lt;br /&gt;
    assert(type(rx)==&amp;quot;number&amp;quot; and type(ry)== &amp;quot;number&amp;quot; and type(rz)==&amp;quot;number&amp;quot;, &amp;quot;invalid rotation passed: &amp;quot; .. tostring(rx) .. &amp;quot;, &amp;quot; .. tostring(ry) .. &amp;quot;, &amp;quot; .. tostring(rz))&lt;br /&gt;
    if not interior then interior = 0 end&lt;br /&gt;
    if not dimension then dimension = 0 end&lt;br /&gt;
    assert(type(interior)==&amp;quot;number&amp;quot; and interior &amp;gt;= 0 and interior &amp;lt;= 255, &amp;quot;invalid interior (must be 0-255) passed: &amp;quot; .. tostring(interior))&lt;br /&gt;
    assert(type(dimension)==&amp;quot;number&amp;quot; and dimension &amp;gt;= -1 and dimension &amp;lt;= 65535, &amp;quot;invalid dimension passed (must be -1 65535): &amp;quot; .. tostring(dimension))&lt;br /&gt;
&lt;br /&gt;
    -- Dynamic object models will always have a physical properties group different than -1.&lt;br /&gt;
    local isNonDynamic = engineGetModelPhysicalPropertiesGroup(modelID) == -1&lt;br /&gt;
    -- Buildings can't be affected by dimension&lt;br /&gt;
    local isNormalDimension = dimension == 0&lt;br /&gt;
    -- Buildings can't be placed outside regular map boundaries&lt;br /&gt;
    local isInsideMapLimits = x &amp;gt;= -3000 and x &amp;lt;= 3000 and y &amp;gt;= -3000 and y &amp;lt;= 3000&lt;br /&gt;
&lt;br /&gt;
    local obj, bld&lt;br /&gt;
    if isNonDynamic and isNormalDimension and isInsideMapLimits then&lt;br /&gt;
        bld = createBuilding(modelID, x, y, z, rx, ry, rz, interior)&lt;br /&gt;
        assert(bld, (&amp;quot;Failed to create building with model ID %d at %f, %f, %f in interior %d&amp;quot;):format(modelID, x, y, z, interior))&lt;br /&gt;
    else&lt;br /&gt;
        obj = createObject(modelID, x, y, z, rx, ry, rz, false)&lt;br /&gt;
        assert(obj, (&amp;quot;Failed to create object with model ID %d at %f, %f, %f&amp;quot;):format(modelID, x, y, z))&lt;br /&gt;
        setElementInterior(obj, interior)&lt;br /&gt;
        setElementDimension(obj, dimension)&lt;br /&gt;
    end&lt;br /&gt;
    return obj or bld&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Test this create object/building function&lt;br /&gt;
addCommandHandler(&amp;quot;testobject&amp;quot;, function()&lt;br /&gt;
    -- This would be your object's model ID&lt;br /&gt;
    local modelID = 3556&lt;br /&gt;
    -- This would be your object's position coordinates&lt;br /&gt;
    local x, y, z = 0, 0, 69&lt;br /&gt;
    -- This would be your object's rotation coordinates&lt;br /&gt;
    local rx, ry, rz = 0, 0, 90&lt;br /&gt;
    -- This would be your object's interior ID&lt;br /&gt;
    local interior = 0&lt;br /&gt;
    -- This would be your object's dimension ID&lt;br /&gt;
    local dimension = 0&lt;br /&gt;
&lt;br /&gt;
    -- We use pcall to catch any errors that may be thrown&lt;br /&gt;
    local success, element = pcall(createObjectOrBuilding, modelID, x, y, z, rx, ry, rz, interior, dimension)&lt;br /&gt;
    if not success then&lt;br /&gt;
        outputDebugString((&amp;quot;Failed to create object or building: %s&amp;quot;):format(tostring(element)), 4, 255, 25, 25)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- OPTIONAL: Then you can apply additional properties, like so:&lt;br /&gt;
    if getElementType(element) == &amp;quot;object&amp;quot; then&lt;br /&gt;
        setObjectScale(element, 1.69)&lt;br /&gt;
        setObjectBreakable(element, false)&lt;br /&gt;
        setElementAlpha(element, 230)&lt;br /&gt;
    end&lt;br /&gt;
    setElementCollisionsEnabled(element, true)&lt;br /&gt;
    setElementFrozen(element, false)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Element_data&amp;diff=81731</id>
		<title>Element data</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Element_data&amp;diff=81731"/>
		<updated>2025-01-15T12:22:30Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Add security options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each [[element]] that is loaded is able to have [[element data]] values attached to it. These are values that can be accessed using a keyword string and directly correspond to the element's attributes in the map file, unless changed via scripting. Element data is a good (but expensive) way to store distributed information you want associated with an element, for example you could use it to associate a score with a player, or a team with a vehicle.&lt;br /&gt;
&lt;br /&gt;
Element data is synchronized by default between the server and the client (you can disable it via fourth argument in [[setElementData]]. Setting data from any of the two sides will force an update in the other, triggering the corresponding element data change events. This is very useful, as it provides a simple way to keep element properties synced without having to set special events to do it manually.  This also means that excessive use of element data to store variables that are not required by both server and client becomes a waste of bandwidth.&lt;br /&gt;
&lt;br /&gt;
Since not all data types can be packetized to be transferred, there are some restrictions. The types that cannot be stored as element data are ''non-element userdata'' (see [[MTA Classes]]), ''functions'' and ''threads''. Also, you may not send tables which contain one or more values of any of these types.&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22790|Element data is not protected from clinet changes by default. You '''SHOULD''' enable [[Server_mtaserver.conf#elementdata_whitelisted|elementdata_whitelisted]] in '''mtaserver.conf''' to protect your server simple cheats. Use the '''clientChangesPolicy''' parameter in [[setElementData]] to allow some changes.}}&lt;br /&gt;
&lt;br /&gt;
==Relevant functions==&lt;br /&gt;
* [[setElementData]]: sets an element data value.&lt;br /&gt;
* [[getElementData]]: retrieves an element data value.&lt;br /&gt;
&lt;br /&gt;
==Relevant events==&lt;br /&gt;
* [[onElementDataChange]]: triggered on the server after element data is changed.&lt;br /&gt;
* [[onPlayerChangesProtectedData]]: triggered on the server after the client attempts to change protected element data.&lt;br /&gt;
* [[onClientElementDataChange]]: triggered on the client after element data is changed.&lt;br /&gt;
[[pt-br:Element_data]]&lt;br /&gt;
[[pl:Element data]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Element_data&amp;diff=81730</id>
		<title>Element data</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Element_data&amp;diff=81730"/>
		<updated>2025-01-15T12:14:36Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Relevant events */  Add onPlayerChangesProtectedData&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each [[element]] that is loaded is able to have [[element data]] values attached to it. These are values that can be accessed using a keyword string and directly correspond to the element's attributes in the map file, unless changed via scripting. Element data is a good (but expensive) way to store distributed information you want associated with an element, for example you could use it to associate a score with a player, or a team with a vehicle.&lt;br /&gt;
&lt;br /&gt;
Element data is synchronized by default between the server and the client (you can disable it via fourth argument in [[setElementData]]. Setting data from any of the two sides will force an update in the other, triggering the corresponding element data change events. This is very useful, as it provides a simple way to keep element properties synced without having to set special events to do it manually.  This also means that excessive use of element data to store variables that are not required by both server and client becomes a waste of bandwidth.&lt;br /&gt;
&lt;br /&gt;
Since not all data types can be packetized to be transferred, there are some restrictions. The types that cannot be stored as element data are ''non-element userdata'' (see [[MTA Classes]]), ''functions'' and ''threads''. Also, you may not send tables which contain one or more values of any of these types.&lt;br /&gt;
&lt;br /&gt;
==Relevant functions==&lt;br /&gt;
* [[setElementData]]: sets an element data value.&lt;br /&gt;
* [[getElementData]]: retrieves an element data value.&lt;br /&gt;
&lt;br /&gt;
==Relevant events==&lt;br /&gt;
* [[onElementDataChange]]: triggered on the server after element data is changed.&lt;br /&gt;
* [[onPlayerChangesProtectedData]]: triggered on the server after the client attempts to change protected element data.&lt;br /&gt;
* [[onClientElementDataChange]]: triggered on the client after element data is changed.&lt;br /&gt;
[[pt-br:Element_data]]&lt;br /&gt;
[[pl:Element data]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineRequestModel&amp;diff=81664</id>
		<title>EngineRequestModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineRequestModel&amp;diff=81664"/>
		<updated>2025-01-05T14:48:40Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: There is no parentId limits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20147|This function is used to assign the next available model ID to a certain element type.}}&lt;br /&gt;
{{note|After release '''1.6.0 r22868''' this function supports &amp;quot;object-damageable&amp;quot;.}}&lt;br /&gt;
{{note|Before release '''1.5.8 r20716''' this must be &amp;quot;ped&amp;quot;. After release '''1.5.8 r20716''' this function supports &amp;quot;vehicle&amp;quot; and &amp;quot;object&amp;quot; too.}}&lt;br /&gt;
{{note|Vehicle unique features may be unsupported, see [https://github.com/multitheftauto/mtasa-blue/issues/1861 issue 1861] for examples and details}}&lt;br /&gt;
{{Important Note|Unlike some other functions, the side-effects of this function aren't reverted on resource stop, so you must manually call [[engineFreeModel]] in [[onClientResourceStop]] (Just like the example below does)}}&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int engineRequestModel ( string elementType [, int parentID ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''elementType''': &amp;quot;ped&amp;quot;, &amp;quot;vehicle&amp;quot;, &amp;quot;object&amp;quot;, &amp;quot;timed-object&amp;quot;, &amp;quot;clump&amp;quot;, &amp;quot;object-damageable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
*'''parentID''': The ID of the parent model (by default this is: 1337 - objects, 400 - vehicles, 7 - peds, 3425 - clump models, 4715 - timed objects, 994 - damageable objects).&lt;br /&gt;
{{Important Note|parentID should be the same model type to prevent crashes.}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20147| Returns an ''integer'' of the model ID that was available to be assigned to the element type, ''false'' if no free model ID available or invalid element type.}}&lt;br /&gt;
Do not rely on the model numbers returned being consistent across multiple clients or multiple runs of resources. There is no guarantee for the order of the numbers or that the same numbers will always correspond to the same element type. Any patterns are coincidental.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example creates a ped and then gives you the opportunity to change its model. If the resource stops, then the IDs allocated will be deallocated. Use ''/cap'' for creating the ped and ''/sap'' to skin the ped. You will need some skins added to a folder and to the meta.xml for ''/sap'' to work:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local peds = {}&lt;br /&gt;
function createAllocatedPed()&lt;br /&gt;
    local x, y, z = getElementPosition(localPlayer)&lt;br /&gt;
    local id = engineRequestModel(&amp;quot;ped&amp;quot;)&lt;br /&gt;
    peds[id] = createPed(id, x+0.5, y, z+0.5)&lt;br /&gt;
    outputChatBox(&amp;quot;New ped with ID &amp;quot;..id..&amp;quot; created.&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;cap&amp;quot;, createAllocatedPed, false, false)&lt;br /&gt;
&lt;br /&gt;
function skinAllocatedPeds()&lt;br /&gt;
    local txd, dff;&lt;br /&gt;
    for id,ped in pairs(peds) do&lt;br /&gt;
        if fileExists(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.txd&amp;quot;) and fileExists(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.dff&amp;quot;) then&lt;br /&gt;
            txd = engineLoadTXD(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.txd&amp;quot;)&lt;br /&gt;
            engineImportTXD(txd, id)&lt;br /&gt;
            dff = engineLoadDFF(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.dff&amp;quot;)&lt;br /&gt;
            engineReplaceModel(dff, id)&lt;br /&gt;
            outputChatBox(&amp;quot;Model ID &amp;quot;..id..&amp;quot; changed correctly.&amp;quot;)&lt;br /&gt;
        else&lt;br /&gt;
            outputChatBox(&amp;quot;Model ID &amp;quot;..id..&amp;quot; couldn't change. REASON: skins/&amp;quot; .. id .. &amp;quot;.txd or skins/&amp;quot; .. id .. &amp;quot;.dff does not exist.&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;sap&amp;quot;, skinAllocatedPeds, false, false)&lt;br /&gt;
&lt;br /&gt;
function onStop()&lt;br /&gt;
    for id,ped in pairs(peds) do&lt;br /&gt;
        engineFreeModel(id)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStop&amp;quot;, resourceRoot, onStop)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineRequestModel&amp;diff=81663</id>
		<title>EngineRequestModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineRequestModel&amp;diff=81663"/>
		<updated>2025-01-05T14:44:39Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20147|This function is used to assign the next available model ID to a certain element type.}}&lt;br /&gt;
{{note|After release '''1.6.0 r22868''' this function supports &amp;quot;object-damageable&amp;quot;.}}&lt;br /&gt;
{{note|Before release '''1.5.8 r20716''' this must be &amp;quot;ped&amp;quot;. After release '''1.5.8 r20716''' this function supports &amp;quot;vehicle&amp;quot; and &amp;quot;object&amp;quot; too.}}&lt;br /&gt;
{{note|Vehicle unique features may be unsupported, see [https://github.com/multitheftauto/mtasa-blue/issues/1861 issue 1861] for examples and details}}&lt;br /&gt;
{{Important Note|Unlike some other functions, the side-effects of this function aren't reverted on resource stop, so you must manually call [[engineFreeModel]] in [[onClientResourceStop]] (Just like the example below does)}}&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int engineRequestModel ( string elementType [, int parentID ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''elementType''': &amp;quot;ped&amp;quot;, &amp;quot;vehicle&amp;quot;, &amp;quot;object&amp;quot;, &amp;quot;timed-object&amp;quot;, &amp;quot;clump&amp;quot;, &amp;quot;object-damageable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
*'''parentID''': The ID of the parent model (by default this is: 1337 - objects, 400 - vehicles, 7 - peds, 3425 - clump models, 4715 - timed objects, 994 - damageable objects).&lt;br /&gt;
{{Important Note|Here is the parentID limit for each element type:&amp;lt;br&amp;gt;&lt;br /&gt;
*'''ped''': 0 - 26315&lt;br /&gt;
*'''vehicle''': 400 - 611&lt;br /&gt;
*'''object''': 615 - 11681&lt;br /&gt;
*'''timed-object''': 615 - 11681&lt;br /&gt;
*'''clump''': 615 - 11681&lt;br /&gt;
If you try to use higher values than the limit, your client may crash.}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20147| Returns an ''integer'' of the model ID that was available to be assigned to the element type, ''false'' if no free model ID available or invalid element type.}}&lt;br /&gt;
Do not rely on the model numbers returned being consistent across multiple clients or multiple runs of resources. There is no guarantee for the order of the numbers or that the same numbers will always correspond to the same element type. Any patterns are coincidental.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example creates a ped and then gives you the opportunity to change its model. If the resource stops, then the IDs allocated will be deallocated. Use ''/cap'' for creating the ped and ''/sap'' to skin the ped. You will need some skins added to a folder and to the meta.xml for ''/sap'' to work:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local peds = {}&lt;br /&gt;
function createAllocatedPed()&lt;br /&gt;
    local x, y, z = getElementPosition(localPlayer)&lt;br /&gt;
    local id = engineRequestModel(&amp;quot;ped&amp;quot;)&lt;br /&gt;
    peds[id] = createPed(id, x+0.5, y, z+0.5)&lt;br /&gt;
    outputChatBox(&amp;quot;New ped with ID &amp;quot;..id..&amp;quot; created.&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;cap&amp;quot;, createAllocatedPed, false, false)&lt;br /&gt;
&lt;br /&gt;
function skinAllocatedPeds()&lt;br /&gt;
    local txd, dff;&lt;br /&gt;
    for id,ped in pairs(peds) do&lt;br /&gt;
        if fileExists(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.txd&amp;quot;) and fileExists(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.dff&amp;quot;) then&lt;br /&gt;
            txd = engineLoadTXD(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.txd&amp;quot;)&lt;br /&gt;
            engineImportTXD(txd, id)&lt;br /&gt;
            dff = engineLoadDFF(&amp;quot;skins/&amp;quot; .. id .. &amp;quot;.dff&amp;quot;)&lt;br /&gt;
            engineReplaceModel(dff, id)&lt;br /&gt;
            outputChatBox(&amp;quot;Model ID &amp;quot;..id..&amp;quot; changed correctly.&amp;quot;)&lt;br /&gt;
        else&lt;br /&gt;
            outputChatBox(&amp;quot;Model ID &amp;quot;..id..&amp;quot; couldn't change. REASON: skins/&amp;quot; .. id .. &amp;quot;.txd or skins/&amp;quot; .. id .. &amp;quot;.dff does not exist.&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;sap&amp;quot;, skinAllocatedPeds, false, false)&lt;br /&gt;
&lt;br /&gt;
function onStop()&lt;br /&gt;
    for id,ped in pairs(peds) do&lt;br /&gt;
        engineFreeModel(id)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStop&amp;quot;, resourceRoot, onStop)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:BuildingInfo&amp;diff=81658</id>
		<title>Template:BuildingInfo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:BuildingInfo&amp;diff=81658"/>
		<updated>2025-01-05T13:30:08Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Dynamic models update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This template is used on [[Building]] and related pages. &amp;lt;hr&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== [[File:Dialog-warning.svg|48px]] Important info about [[Building|Buildings]] ==&lt;br /&gt;
* There is a distinction in GTA: San Andreas between static and dynamic models (these use a separate streaming system). Examples of buildings include building models, roads, and terrain. Objects created as [[Building|Buildings]] can contain '''glass''' and '''shadows''', unlike those created as [[Object|Objects]] (which are missing these features).&lt;br /&gt;
&lt;br /&gt;
* Buildings can be created with dynamic object model IDs, but they won't have any physical interaction. For example, [https://dev.prineside.com/en/gtasa_samp_model_id/model/1502-Gen_doorINT04/ object ID 1502 (Gen_doorINT04)] is a door that can only be opened if created with [[createObject]].&lt;br /&gt;
&lt;br /&gt;
* Using buildings for mapping is more optimized than using objects. Gains in FPS can be noticed in areas where a lot of objects were replaced with buildings of this new system.&lt;br /&gt;
&lt;br /&gt;
* Buildings can only be created inside regular GTA:SA Map Boundaries (X between -3000 and 3000; Y between -3000 and 3000). Use [[createObject]] to spawn objects outside these normal limits. '''This limitation is probably going to stop existing in the near future.'''&lt;br /&gt;
&lt;br /&gt;
* Created buildings can have '''LOD models'''. The procedure is as follows: spawn the LOD building using [[createBuilding]], then use [[setLowLODElement]] to associate it with the non-LOD building element you created beforehand. LOD model distance changed with [[engineSetModelLODDistance]] works for buildings.&lt;br /&gt;
&lt;br /&gt;
* Buildings cannot appear in certain a [[Dimension|dimension]], and not show in others. Function [[setElementDimension]] returns false on any building. A building is created in a specific [[Interior|interior world]] (such as 0, the main world), like the default GTA:SA landscape objects. All '''buildings appear in EVERY DIMENSION'''.&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnPlayerChangesProtectedData&amp;diff=81463</id>
		<title>OnPlayerChangesProtectedData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnPlayerChangesProtectedData&amp;diff=81463"/>
		<updated>2024-12-06T14:32:49Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Server event}} {{Added feature/item|1.6.1|1.6.0|22790|This event is triggered when a player tries to change protected element data. The server protects element data with using elementdata_whitelisted from '''mtaserver.conf''' and the '''clientChangesPolicy''' parameter in [setElementData.}} ==Parameters== *'''element''': The affected element. *'''key''': The name of the element data entry that has changed....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server event}}&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22790|This event is triggered when a player tries to change protected element data. The server protects element data with using [[Server_mtaserver.conf#elementdata_whitelisted|elementdata_whitelisted]] from '''mtaserver.conf''' and the '''clientChangesPolicy''' parameter in [[[setElementData]].}}&lt;br /&gt;
==Parameters==&lt;br /&gt;
*'''element''': The affected element.&lt;br /&gt;
*'''key''': The name of the element data entry that has changed.&lt;br /&gt;
*'''value''': The value that the player sends.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The [[event system#Event source|source]] of this event is the [[player]] who changes protected element data.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The below example will ban all players who are trying to change protected element data.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function processPlayerElementDataHack()&lt;br /&gt;
    addBan(source, &amp;quot;Element data hacking attempt&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerChangesProtectedData&amp;quot;, root, processPlayerElementDataHack)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{See also/Server event|Player events}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Player_events&amp;diff=81462</id>
		<title>Template:Player events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Player_events&amp;diff=81462"/>
		<updated>2024-12-06T14:32:36Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerACInfo]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerBan]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerChangeNick]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22790|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerChangesWorldSpecialProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22790|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerChangesProtectedData]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerChat]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerClick]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerCommand]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerConnect]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerContact]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerDamage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22293|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerDetonateSatchels]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerJoin]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerLogin]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerLogout]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerMarkerHit]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerMarkerLeave]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerModInfo]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerMute]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerNetworkStatus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerPickupHit]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{New items|3.0156|1.5.5|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerPickupLeave]]&amp;lt;/li&amp;gt;&lt;br /&gt;
|11783}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerPickupUse]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerPrivateMessage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22293|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerProjectileCreation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerQuit]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerScreenShot]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerSpawn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerStealthKill]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerTarget]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22447|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerTeamChange]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22313|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerTriggerEventThreshold]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22459|&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerTriggerInvalidEvent]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerUnmute]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerVehicleEnter]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerVehicleExit]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerVoiceStart]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerVoiceStop]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerWasted]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerWeaponFire]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[onPlayerWeaponSwitch]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Events templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_mtaserver.conf&amp;diff=81461</id>
		<title>Server mtaserver.conf</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_mtaserver.conf&amp;diff=81461"/>
		<updated>2024-12-06T13:36:09Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: elementdata_whitelisted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists the settings that can be set in the settings file. ''Setting from the default '''mtaserver.conf''' settings file is in italics''.&lt;br /&gt;
&lt;br /&gt;
==Settings==&lt;br /&gt;
&lt;br /&gt;
====servername====&lt;br /&gt;
:''&amp;lt;servername&amp;gt;Default MTA Server&amp;lt;/servername&amp;gt;''&lt;br /&gt;
:This parameter specifies the name the server will be visible as in the ingame server browser and on Game-Monitor. It is a required parameter. &lt;br /&gt;
&lt;br /&gt;
====owner_email_address====&lt;br /&gt;
:''&amp;lt;owner_email_address&amp;gt;&amp;lt;/owner_email_address&amp;gt;''&lt;br /&gt;
:This parameter specifies the contact email addresses for the owner(s) of this server. &lt;br /&gt;
:The email addresses will not be publicly available, and only used by MTA administrators to contact the server owner. &lt;br /&gt;
:Note: Missing or incorrect owner_email_address can affect visibility in the master server list. &lt;br /&gt;
:Values: Comma separated list of email addresses&lt;br /&gt;
&lt;br /&gt;
====serverip====&lt;br /&gt;
:''&amp;lt;serverip&amp;gt;auto&amp;lt;/serverip&amp;gt;&lt;br /&gt;
:'''ONLY USE THIS PARAMETER IF YOU ARE SURE OF WHAT YOU ARE DOING''' - it is generally only needed for complex network topologies and should be left at the default value otherwise.&lt;br /&gt;
: This parameter specifies the public IP address that the server will announce to the MTA servers, for the purposes of registering itself in the master server list and receiving some internal status updates. Usually, setting this parameter is only useful for some specialized scenarios, like servers that can be reached by multiple public addresses, or when a firewall is used for controlling incoming connections. If set to auto, the public IP address the requests originate from will be used as the server IP for communicating with MTA servers, which works fine in most cases.&lt;br /&gt;
:Values: auto or x.x.x.x ; default value: auto&lt;br /&gt;
:SERVERIP SHOULD BE LEFT SET TO auto UNLESS YOU ARE SURE OF WHAT YOU ARE DOING&lt;br /&gt;
:WARNING: SETTING serverip AND THEN ASKING FOR SUPPORT CAN CAUSE DEATH OR INJURY&lt;br /&gt;
&lt;br /&gt;
====serverport====&lt;br /&gt;
:''&amp;lt;serverport&amp;gt;22003&amp;lt;/serverport&amp;gt; &lt;br /&gt;
:This parameter specifies the UDP port on which the server will be accepting incoming player connections;&lt;br /&gt;
:default value: 22003. It is a required parameter.&lt;br /&gt;
&lt;br /&gt;
====maxplayers====&lt;br /&gt;
:''&amp;lt;maxplayers&amp;gt;32&amp;lt;/maxplayers&amp;gt;&lt;br /&gt;
:This parameter specifies the number of maximum player slots available on the server;&lt;br /&gt;
:default value: 32. It is a required parameter.&lt;br /&gt;
&lt;br /&gt;
====httpserver====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf --&amp;gt;&lt;br /&gt;
:''&amp;lt;httpserver&amp;gt;1&amp;lt;/httpserver&amp;gt;&lt;br /&gt;
:This parameter specifies whether the built-in http server will be used.&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled ; default value: 1. Optional parameter.&lt;br /&gt;
:More information: [[Server_Manual#Using_the_web_interface|Using the web interface]]&lt;br /&gt;
&lt;br /&gt;
====httpport====&lt;br /&gt;
:''&amp;lt;httpport&amp;gt;22005&amp;lt;/httpport&amp;gt;&lt;br /&gt;
:This parameter specifies the TCP port on which the server will be accepting incoming http connections. It can be set to the same value as &amp;lt;serverport&amp;gt;. It is a required parameter if &amp;lt;httpserver&amp;gt; is set to 1.&lt;br /&gt;
:More information: [[Server_Manual#Using_the_web_interface|Using the web interface]]&lt;br /&gt;
&lt;br /&gt;
====httpdownloadurl====&lt;br /&gt;
:''&amp;lt;httpdownloadurl&amp;gt;&amp;lt;/httpdownloadurl&amp;gt;&lt;br /&gt;
:If set, this parameter specifies the external URL from which clients will be able to download needed resources ingame. Otherwise they will download them directly from the server.&lt;br /&gt;
:More information: [[Server_Manual#Configuring_an_external_web_server|Configuring an external web server]]&lt;br /&gt;
&lt;br /&gt;
====httpmaxconnectionsperclient====&lt;br /&gt;
:''&amp;lt;httpmaxconnectionsperclient&amp;gt;5&amp;lt;/httpmaxconnectionsperclient&amp;gt;&lt;br /&gt;
:This parameter limits the number of http connections each client can make. Depending on the type of http server that is used, a lower figure may reduce download timeouts. Only relevant when using an external http server.&lt;br /&gt;
:Available range: 1 to 8.&lt;br /&gt;
&lt;br /&gt;
====httpdosthreshold====&lt;br /&gt;
:''&amp;lt;httpdosthreshold&amp;gt;20&amp;lt;/httpdosthreshold&amp;gt;&lt;br /&gt;
:This parameter limits the number http connections that an IP can initiate over a short period of time.&lt;br /&gt;
:Available range: 1 to 100. default value: 20&lt;br /&gt;
&lt;br /&gt;
====http_dos_exclude====&lt;br /&gt;
:''&amp;lt;http_dos_exclude&amp;gt;&amp;lt;/http_dos_exclude&amp;gt;&lt;br /&gt;
:This parameter lists the IP addresses that are to be excluded from http dos threshold limits.&lt;br /&gt;
:e.g. 88.11.22.33,101.2.3.4&lt;br /&gt;
&lt;br /&gt;
====allow_gta3_img_mods====&lt;br /&gt;
:''&amp;lt;allow_gta3_img_mods&amp;gt;none&amp;lt;/allow_gta3_img_mods&amp;gt;&lt;br /&gt;
:By default, the server will block the use of locally customized gta3.img player skins&lt;br /&gt;
:This setting can be used to allow such mods. Not recommended for competitive servers.&lt;br /&gt;
:Values: none, peds ; default value: none&lt;br /&gt;
&lt;br /&gt;
====client_file====&lt;br /&gt;
:''&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;client_file name=&amp;quot;data/carmods.dat&amp;quot; verify=&amp;quot;0&amp;quot; /&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:By default, the server will block the use of customized GTA:SA data files.&lt;br /&gt;
:To allow specific client files, add one or more of the above lines.&lt;br /&gt;
:More information: [[Anti-cheat_guide#.3Cclient_file_name.3D.22data.2Fcarmods.dat.22_verify.3D.220.22.2F.3E|Anti-cheat guide]]&lt;br /&gt;
&lt;br /&gt;
====disableac====&lt;br /&gt;
:''&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;&lt;br /&gt;
:Comma separated list of disabled anti-cheats.&lt;br /&gt;
:e.g. To disable anti-cheat #2 and #3, use: 2,3&lt;br /&gt;
:More information: [[Anti-cheat_guide#.3Cdisableac.3E.3C.2Fdisableac.3E|Anti-cheat guide]]&lt;br /&gt;
&lt;br /&gt;
====enablesd====&lt;br /&gt;
:''&amp;lt;enablesd&amp;gt;31,32&amp;lt;/enablesd&amp;gt;&lt;br /&gt;
:Comma separated list of enabled special detections. A special detection is a type of anti-cheat for (usually) harmless game modifications. &lt;br /&gt;
:Competitive servers may wish to enable certain special detections, but most servers should leave this setting on its default.&lt;br /&gt;
:Values: special detection (SD) codes ; default value: 31,32 (e.g. enables special detections #31 and #32)&lt;br /&gt;
:More information: [[Anti-cheat_guide#.3Cenablesd.3E.3C.2Fenablesd.3E|Anti-cheat guide]]&lt;br /&gt;
&lt;br /&gt;
====minclientversion====&lt;br /&gt;
:''&amp;lt;minclientversion&amp;gt;&amp;lt;/minclientversion&amp;gt;&lt;br /&gt;
:Minimum client version. Clients with a lower version will not be allowed to connect. After disconnection, clients will be given an opportunity to download an update. If left blank, this setting is disabled and there are no restrictions on who can connect. Version numbers are described in [[getPlayerVersion]] and look like this: 1.1.0-9.03100.0&lt;br /&gt;
:This parameter can changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:'''Note that this setting only determines if the client should be prompted to update. The actual build number they receive will be the [[https://nightly.mtasa.com/ver highest available]].'''&lt;br /&gt;
&lt;br /&gt;
====minclientversion_auto_update====&lt;br /&gt;
:''&amp;lt;minclientversion_auto_update&amp;gt;1&amp;lt;/minclientversion_auto_update&amp;gt;&lt;br /&gt;
:This parameter specifies if/when the &amp;lt;minclientversion&amp;gt; setting is automatically updated.&lt;br /&gt;
:Keeping &amp;lt;minclientversion&amp;gt; updated can help reduce cheating.&lt;br /&gt;
:Note: The instant setting (2) is only recommended for competitive servers.&lt;br /&gt;
:Values: 0 - disabled, 1 - enabled (delayed by a few days), 2 - enabled (instant) ; default value: 1.&lt;br /&gt;
&lt;br /&gt;
====recommendedclientversion====&lt;br /&gt;
:''&amp;lt;recommendedclientversion&amp;gt;&amp;lt;/recommendedclientversion&amp;gt;&lt;br /&gt;
:Recommended client version. When connecting, if clients have a lower version, they will be given the option to download an update. If left blank, this setting is disabled.&lt;br /&gt;
:This parameter can changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:'''Note that this setting only determines if the client should be prompted to update. The actual build number they receive will be the [[https://nightly.mtasa.com/ver highest available]].'''&lt;br /&gt;
&lt;br /&gt;
====ase====&lt;br /&gt;
:''&amp;lt;ase&amp;gt;1&amp;lt;/ase&amp;gt;&lt;br /&gt;
:This parameter can be used to make the server report to Game-Monitor master servers, allowing it to be visible in the in-game server browser. An additional UDP port needs to be available for this to work (value from &amp;lt;serverport&amp;gt; + 123 , so on a default &amp;lt;serverport&amp;gt; value 22003 the right port will be 22126 ).&lt;br /&gt;
:Available values: 0 - disabled , 1 - enabled. Optional parameter, defaults to 0.&lt;br /&gt;
&lt;br /&gt;
====donotbroadcastlan====&lt;br /&gt;
:''&amp;lt;donotbroadcastlan&amp;gt;0&amp;lt;/donotbroadcastlan&amp;gt;&lt;br /&gt;
:This parameter allows you to disable LAN broadcasting.	&lt;br /&gt;
&lt;br /&gt;
====password====&lt;br /&gt;
:''&amp;lt;password&amp;gt;&amp;lt;/password&amp;gt; &lt;br /&gt;
:If set, players will have to provide a password specified below, before they can connect to the server. If left blank, server doesn't require a password from them.&lt;br /&gt;
:This parameter can changed and saved while the server is running with [[setServerPassword]] or [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====bandwidth_reduction====&lt;br /&gt;
:''&amp;lt;bandwidth_reduction&amp;gt;medium&amp;lt;/bandwidth_reduction&amp;gt; &lt;br /&gt;
:This parameter reduces the server's bandwidth usage by using various optimizations.&lt;br /&gt;
:Values: none, medium or maximum ; default value: medium&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====unoccupied_vehicle_syncer_distance====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf --&amp;gt;&lt;br /&gt;
:''&amp;lt;unoccupied_vehicle_syncer_distance&amp;gt;130&amp;lt;/unoccupied_vehicle_syncer_distance&amp;gt;&lt;br /&gt;
:This parameter determines the distance limit for remote synced unoccupied vehicles&lt;br /&gt;
:Available range: 50 - 400; default value: 130&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====ped_syncer_distance====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf --&amp;gt;&lt;br /&gt;
:''&amp;lt;ped_syncer_distance&amp;gt;100&amp;lt;/ped_syncer_distance&amp;gt;&lt;br /&gt;
:This parameter determines the distance limit for remote synced peds&lt;br /&gt;
:Available range: 50 - 400; default value: 100&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====player_sync_interval====&lt;br /&gt;
:''&amp;lt;player_sync_interval&amp;gt;100&amp;lt;/player_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the time in milliseconds between player sync packets.&lt;br /&gt;
:Available range: 50 - 4000; default value: 100&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====lightweight_sync_interval====&lt;br /&gt;
:''&amp;lt;lightweight_sync_interval&amp;gt;1500&amp;lt;/lightweight_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the time in milliseconds between lightweight (player) sync packets.&lt;br /&gt;
:Available range: 200 - 4000; default value: 1500&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====camera_sync_interval====&lt;br /&gt;
:''&amp;lt;camera_sync_interval&amp;gt;500&amp;lt;/camera_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the time in milliseconds between camera sync packets.&lt;br /&gt;
:Available range: 50 - 4000; default value: 500&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====ped_sync_interval====&lt;br /&gt;
:''&amp;lt;ped_sync_interval&amp;gt;500&amp;lt;/ped_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the time in milliseconds between ped sync packets when the ped is near the player.&lt;br /&gt;
:Available range: 50 - 4000; default value: 500&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====ped_far_sync_interval====&lt;br /&gt;
:''&amp;lt;ped_far_sync_interval&amp;gt;2000&amp;lt;/ped_far_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the time in milliseconds between ped sync packets when the ped is far away from the player.&lt;br /&gt;
:Available range: 50 - 4000; default value: 2000&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====unoccupied_vehicle_sync_interval====&lt;br /&gt;
:''&amp;lt;unoccupied_vehicle_sync_interval&amp;gt;400&amp;lt;/unoccupied_vehicle_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the time in milliseconds between unoccupied vehicle sync packets.&lt;br /&gt;
:Available range: 50 - 4000; default value: 400&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====keysync_mouse_sync_interval====&lt;br /&gt;
:''&amp;lt;keysync_mouse_sync_interval&amp;gt;100&amp;lt;/keysync_mouse_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the minimum time in milliseconds between key sync packets due to mouse movement.&lt;br /&gt;
:Available range: 50 - 4000; default value: 100&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====keysync_analog_sync_interval====&lt;br /&gt;
:''&amp;lt;keysync_analog_sync_interval&amp;gt;100&amp;lt;/keysync_analog_sync_interval&amp;gt; &lt;br /&gt;
:This parameter determines the minimum time in milliseconds between key sync packets due to joystick movement.&lt;br /&gt;
:Available range: 50 - 4000; default value: 100&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
:Suggested values for this and the other sync_interval settings can be found here: [[Sync_interval_settings|Sync interval settings]]&lt;br /&gt;
&lt;br /&gt;
====bullet_sync====&lt;br /&gt;
:''&amp;lt;bullet_sync&amp;gt;1&amp;lt;/bullet_sync&amp;gt;   &lt;br /&gt;
:This parameter can improve the reliability of shots when using certain weapons. However, it uses more bandwidth.&lt;br /&gt;
:Note that bullet sync will be active regardless of this setting when certain [[setGlitchEnabled|glitches]] are enabled.&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled ; default value: 1.&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22430|&lt;br /&gt;
====vehicle_contact_sync_radius====&lt;br /&gt;
:''&amp;lt;vehicle_contact_sync_radius&amp;gt;30&amp;lt;/vehicle_contact_sync_radius&amp;gt;   &lt;br /&gt;
:This parameter specifies the radius in which any contact with a vehicle will turn the player into its syncer.&lt;br /&gt;
:Changing this setting to 0 will cause vehicles to not pick a new syncer based on which player is touching the vehicle.&lt;br /&gt;
:Available range: 0 to 130.  Default - 30&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====vehext_percent====&lt;br /&gt;
:''&amp;lt;vehext_percent&amp;gt;0&amp;lt;/vehext_percent&amp;gt;&lt;br /&gt;
:This parameter sets the amount of extrapolation that clients will apply to remote vehicles. &lt;br /&gt;
:This can reduce some of the latency induced location disparency by predicting where the remote vehicles will probably be.&lt;br /&gt;
:Depending on the gamemode, an incorrect prediction may have a negative effect. &lt;br /&gt;
:Therefore this setting should be considered experimental.&lt;br /&gt;
:Available range: 0 to 100.  Default - 0&lt;br /&gt;
&lt;br /&gt;
====vehext_ping_limit====&lt;br /&gt;
:''&amp;lt;vehext_ping_limit&amp;gt;150&amp;lt;/vehext_ping_limit&amp;gt;&lt;br /&gt;
:This parameter places a limit on how much time (in milliseconds) the vehicle extrapolation will attempt to compensate for.&lt;br /&gt;
:Only relevant if &amp;lt;vehext_percent&amp;gt; is greater than zero.&lt;br /&gt;
:Available range: 50 to 500.  Default - 150&lt;br /&gt;
&lt;br /&gt;
====latency_reduction====&lt;br /&gt;
:''&amp;lt;latency_reduction&amp;gt;0&amp;lt;/latency_reduction&amp;gt;&lt;br /&gt;
:This parameter can reduce the delay of player actions appearing on remote clients by 2 frames (approx 50ms).&lt;br /&gt;
:Due to the impact this may have on shot lag compensation, it should be considered experimental.&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled ; default value: 0.&lt;br /&gt;
:Bugs caused by enabling latency_reduction: https://bugs.mtasa.com/view.php?id=8191 + https://bugs.mtasa.com/view.php?id=8226&lt;br /&gt;
&lt;br /&gt;
====threadnet====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf --&amp;gt;&lt;br /&gt;
:''&amp;lt;threadnet&amp;gt;1&amp;lt;/threadnet&amp;gt;&lt;br /&gt;
:This parameter specifies whether or not to run the network synchronization on another thread.&lt;br /&gt;
:Enabling will make the sync smoother, but may increase CPU usage slightly.&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled ; default value: 1.&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====idfile====&lt;br /&gt;
:''&amp;lt;idfile&amp;gt;server-id.keys&amp;lt;/idfile&amp;gt; &lt;br /&gt;
:Specifies the location and file name of this servers unique private key. This is used to prevent private files saved on the client from being read by other servers. &lt;br /&gt;
:Keep a backup of this file in a safe place. Default value: server-id.keys&lt;br /&gt;
:More information about client private files: [[Filepath]]&lt;br /&gt;
&lt;br /&gt;
====logfile====&lt;br /&gt;
:''&amp;lt;logfile&amp;gt;logs/server.log&amp;lt;/logfile&amp;gt;&lt;br /&gt;
:Specifies the location and name of the main server log file. If left blank, server won't be saving this file.&lt;br /&gt;
&lt;br /&gt;
====authfile====&lt;br /&gt;
:''&amp;lt;authfile&amp;gt;logs/server_auth.log&amp;lt;/authfile&amp;gt;&lt;br /&gt;
:As well as the main log file, login successes and failures are logged here for easy reviewing of security issues. If left blank, this file is not used&lt;br /&gt;
&lt;br /&gt;
====dbfile====&lt;br /&gt;
:''&amp;lt;dbfile&amp;gt;logs/db.log&amp;lt;/dbfile&amp;gt;&lt;br /&gt;
:Specifies the location and name of the file used to log database queries. The server command [[Server_Commands#debugdb|debugdb]] sets the amount of logging.&lt;br /&gt;
&lt;br /&gt;
====loadstringfile====&lt;br /&gt;
:''&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;loadstringfile&amp;gt;logs/loadstring.log&amp;lt;/loadstringfile&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Specifies the location and name of the file used to log loadstring function calls. If left blank or not set, no logging is done.&lt;br /&gt;
&lt;br /&gt;
====acl====&lt;br /&gt;
:''&amp;lt;acl&amp;gt;acl.xml&amp;lt;/acl&amp;gt; &lt;br /&gt;
:This parameter specifies the location and name of the Access Control List settings file. If left&lt;br /&gt;
:blank, server will use acl.xml file, located in the same folder as this configuration file.&lt;br /&gt;
&lt;br /&gt;
====scriptdebuglogfile====&lt;br /&gt;
:''&amp;lt;scriptdebuglogfile&amp;gt;logs/scripts.log&amp;lt;/scriptdebuglogfile&amp;gt; &lt;br /&gt;
:Specifies the location and name of the debugscript log file. If left blank, server won't be saving this file.&lt;br /&gt;
&lt;br /&gt;
====scriptdebugloglevel====&lt;br /&gt;
:''&amp;lt;scriptdebugloglevel&amp;gt;0&amp;lt;/scriptdebugloglevel&amp;gt;&lt;br /&gt;
:Specifies the level of the debugscript log file. Available values: 0, 1, 2, 3. When not set, defaults to 0.&lt;br /&gt;
&lt;br /&gt;
====htmldebuglevel====&lt;br /&gt;
:''&amp;lt;htmldebuglevel&amp;gt;0&amp;lt;/htmldebuglevel&amp;gt;&lt;br /&gt;
:Specifies the level of the html debug. Available values: 0, 1, 2, 3. When not set, defaults to 0.&lt;br /&gt;
&lt;br /&gt;
====filter_duplicate_log_lines====&lt;br /&gt;
:''&amp;lt;filter_duplicate_log_lines&amp;gt;1&amp;lt;/filter_duplicate_log_lines&amp;gt;&lt;br /&gt;
:Specifies whether or not duplicate log lines should be filtered. Available values: 0 or 1, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
====fpslimit====&lt;br /&gt;
:''&amp;lt;fpslimit&amp;gt;74&amp;lt;/fpslimit&amp;gt;&lt;br /&gt;
:Specifies the frame rate limit that will be applied to connecting clients.&lt;br /&gt;
:Available range: 25 to 32767. Default: 74. You can also use 0 for uncapped fps.&lt;br /&gt;
:This parameter can be changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====voice====&lt;br /&gt;
:''&amp;lt;voice&amp;gt;0&amp;lt;/voice&amp;gt;&lt;br /&gt;
:This parameter specifies whether or not to enable player voice chat in-game&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled&lt;br /&gt;
&lt;br /&gt;
====voice_samplerate====&lt;br /&gt;
:''&amp;lt;voice_samplerate&amp;gt;1&amp;lt;/voice_samplerate&amp;gt;&lt;br /&gt;
:This parameter specifies the sample rate for voice chat.  'voice' parameter must be set to 1 for this to be effective. Higher settings use more bandwidth and increase the sampling quality of voice chat&lt;br /&gt;
:Values: 0 - Narrowband (8kHz), 1 - Wideband (16kHz), 2 - Ultrawideband (32kHz).  Default - 1&lt;br /&gt;
&lt;br /&gt;
====voice_quality====&lt;br /&gt;
:''&amp;lt;voice_quality&amp;gt;4&amp;lt;/voice_quality&amp;gt;&lt;br /&gt;
:This parameter specifies the voice quality for voice chat.  'voice' parameter must be set to 1 for this to be effective. Higher settings use more bandwidth and increase the the overall quality of voice chat&lt;br /&gt;
:Available range: 0 to 10.  Default - 4&lt;br /&gt;
&lt;br /&gt;
====voice_bitrate====&lt;br /&gt;
:''&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;voice_bitrate&amp;gt;24600&amp;lt;/voice_bitrate&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Specifies the voice bitrate, in bps. This optional parameter overrides the previous two settings. If not set, MTA handles this automatically.  Use with care.&lt;br /&gt;
&lt;br /&gt;
====backup_path====&lt;br /&gt;
:''&amp;lt;backup_path&amp;gt;backups&amp;lt;/backup_path&amp;gt;&lt;br /&gt;
:This parameter specifies the path to use for a basic backup of some server files. Note that basic backups are only made during server startup. Default value: backups&lt;br /&gt;
&lt;br /&gt;
====backup_interval====&lt;br /&gt;
:''&amp;lt;backup_interval&amp;gt;3&amp;lt;/backup_interval&amp;gt;&lt;br /&gt;
:This parameter specifies the number of days between each basic backup. Backups are only made during server startup, so the actual interval maybe much longer. Setting backup_interval to 0 will disable backups&lt;br /&gt;
:Available range: 0 to 30.  Default - 3&lt;br /&gt;
&lt;br /&gt;
====backup_copies====&lt;br /&gt;
:''&amp;lt;backup_copies&amp;gt;10&amp;lt;/backup_copies&amp;gt;&lt;br /&gt;
:This parameter specifies the maximum number of backup copies to keep. Setting backup_copies to 0 will disable backups&lt;br /&gt;
:Available range: 0 to 100.  Default - 10&lt;br /&gt;
&lt;br /&gt;
====compact_internal_databases====&lt;br /&gt;
:''&amp;lt;compact_internal_databases&amp;gt;1&amp;lt;/compact_internal_databases&amp;gt;&lt;br /&gt;
:This parameter specifies when the internal sqlite databases should be defragmented.&lt;br /&gt;
:For more info see: https://www.sqlite.org/lang_vacuum.html&lt;br /&gt;
:Values: 0 - Never, 1 - On server start only after basic backup, 2 - On server start always.  Default - 1&lt;br /&gt;
&lt;br /&gt;
====crash_dump_upload====&lt;br /&gt;
:''&amp;lt;crash_dump_upload&amp;gt;1&amp;lt;/crash_dump_upload&amp;gt;&lt;br /&gt;
:This parameter specifies whether server crash dump files should be sent to MTA HQ.&lt;br /&gt;
:Values: 0 - Off, 1 - On. Default - 1&lt;br /&gt;
&lt;br /&gt;
====fakelag====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf --&amp;gt;&lt;br /&gt;
:''&amp;lt;fakelag&amp;gt;0&amp;lt;/fakelag&amp;gt;&lt;br /&gt;
:This parameter specifies whether the [[Command fakelag|fakelag and sfakelag]] commands are enabled&lt;br /&gt;
:Values: 0 - Off, 1 - On. Default - 0&lt;br /&gt;
&lt;br /&gt;
====auth_serial_groups====&lt;br /&gt;
:''&amp;lt;auth_serial_groups&amp;gt;Admin&amp;lt;/auth_serial_groups&amp;gt;&lt;br /&gt;
:This parameter lists the ACL groups that are protected by serial authorization.&lt;br /&gt;
:Login attempts to a protected account from a second serial are blocked until the serial is manually authorized via the authserial command.&lt;br /&gt;
:For more info see: https://mtasa.com/authserial&lt;br /&gt;
:Note: This is security critical feature and disabling auth_serial_groups can affect visibility in the master server list.&lt;br /&gt;
:Values: Comma separated list of ACL groups.  Default - Admin&lt;br /&gt;
:See [[Authorized Serial Account Protection]] for more information.&lt;br /&gt;
&lt;br /&gt;
====auth_serial_http====&lt;br /&gt;
:''&amp;lt;auth_serial_http&amp;gt;1&amp;lt;/auth_serial_http&amp;gt;&lt;br /&gt;
:This parameter specifies if the authorized serial login checks should also apply to the http interface.&lt;br /&gt;
:Protected account login attempts to the http interface will only succeed if the IP address matches one recently used by the account holder in-game.&lt;br /&gt;
:For more info see: https://mtasa.com/authserialhttp&lt;br /&gt;
:Note: This is security critical feature and disabling auth_serial_http can affect visibility in the master server list.&lt;br /&gt;
:Values: 0 - Off, 1 - Enabled.  Default - 1&lt;br /&gt;
&lt;br /&gt;
====auth_serial_http_ip_exceptions====&lt;br /&gt;
:''&amp;lt;auth_serial_http_ip_exceptions&amp;gt;127.0.0.1&amp;lt;/auth_serial_http_ip_exceptions&amp;gt;&lt;br /&gt;
:This parameter specifies which IP addresses should always pass auth_serial_http checks.&lt;br /&gt;
:Values: Comma separated list of IP addresses&lt;br /&gt;
&lt;br /&gt;
====database_credentials_protection====&lt;br /&gt;
:''&amp;lt;database_credentials_protection&amp;gt;1&amp;lt;/database_credentials_protection&amp;gt;&lt;br /&gt;
:This parameter specifies if extra security measures are applied to resources which use [[dbConnect]] with MySQL.&lt;br /&gt;
:The extra measures are:&lt;br /&gt;
: - script files cannot be accessed with [[fileOpen]]&lt;br /&gt;
: - [[meta.xml]] is read-only&lt;br /&gt;
:'''NOTE:''' This only protects resources which use [[dbConnect]] with MySQL.&lt;br /&gt;
:Values: 0 - Off, 1 - Enabled.  Default - 1&lt;br /&gt;
&lt;br /&gt;
{{New items|6.0160|1.6.0-22790|&lt;br /&gt;
====elementdata_whitelisted====&lt;br /&gt;
:''&amp;lt;elementdata_whitelisted&amp;gt;0&amp;lt;/elementdata_whitelisted&amp;gt;&lt;br /&gt;
:Enables extra protection for [[SetElementData|element data]].&lt;br /&gt;
:When this option is enabled, the server ignores element data sync packets from the client, except for allowed keys.&lt;br /&gt;
:Values: 0 - Off, 1 - Enabled.  Default - 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====player_triggered_event_interval====&lt;br /&gt;
:''&amp;lt;player_triggered_event_interval&amp;gt;1000&amp;lt;/player_triggered_event_interval&amp;gt;&lt;br /&gt;
:Time interval for counting max (see below: max_player_triggered_events_per_interval) triggered events (via triggerServerEvent), exceeding this will call [[onPlayerTriggerEventThreshold]]&lt;br /&gt;
:Values: 50-5000; default: 1000 (in ms)&lt;br /&gt;
&lt;br /&gt;
====max_player_triggered_events_per_interval====&lt;br /&gt;
:''&amp;lt;max_player_triggered_events_per_interval&amp;gt;100&amp;lt;/max_player_triggered_events_per_interval&amp;gt;&lt;br /&gt;
:Max triggered amount of events (via triggerServerEvent) within interval above (player_triggered_event_interval), exceeding this will call [[onPlayerTriggerEventThreshold]]&lt;br /&gt;
:Values: 1-1000; default: 100&lt;br /&gt;
&lt;br /&gt;
====module====&lt;br /&gt;
:''&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;module src=&amp;quot;sample_win32.dll&amp;quot; /&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:''&amp;lt;nowiki&amp;gt;&amp;lt;!-- &amp;lt;module src=&amp;quot;sample_linux.so&amp;quot; /&amp;gt; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Specifies the module(s) which are loaded with the server. To load several modules, add more &amp;lt;module&amp;gt; parameter(s). Optional parameter.&lt;br /&gt;
&lt;br /&gt;
====resource_client_file_checks====&lt;br /&gt;
&amp;lt;!-- added by https://github.com/multitheftauto/mtasa-blue/pull/3822 --&amp;gt;&lt;br /&gt;
:''&amp;lt;resource_client_file_checks&amp;gt;1&amp;lt;/resource_client_file_checks&amp;gt;&lt;br /&gt;
:If enabled, the server will perform checks on files in resources (listed in [[meta.xml]]) with PNG, TXD and DFF extensions, checking if they are corrupted. When the system finds a non-valid file of these types, it outputs a warning to the server console.&lt;br /&gt;
:You may want to disable thse checks when storing different/non-conforming data in files with these extensions (e.g. encrypted data).&lt;br /&gt;
:Values: 0 - Off, 1 - Enabled.  Default - 1&lt;br /&gt;
&lt;br /&gt;
====resource====&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;admin&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;defaultstats&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;helpmanager&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;joinquit&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;mapcycler&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;mapmanager&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;parachute&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;resourcebrowser&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;1&amp;quot; default=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;resourcemanager&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;scoreboard&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;spawnmanager&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;voice&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;votemanager&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;webadmin&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src=&amp;quot;play&amp;quot; startup=&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
:''&amp;lt;resource src-&amp;quot;resources&amp;quot; startup&amp;quot;1&amp;quot; protected=&amp;quot;0&amp;quot;&lt;br /&gt;
:Specifies persistent resources which are loaded when the server starts. Persistent resources are not stopped even if all the other resources that depend on them stop; that is, the only way to stop them is by explicitly using the ''stop'' server command or [[stopResource]] scripting function. To load several resources, add more &amp;lt;resource&amp;gt; parameters.&lt;br /&gt;
&lt;br /&gt;
:In addition, there are several flags which control how the server deals with each resource:&lt;br /&gt;
&lt;br /&gt;
:* '''src''': the resource name. This is the only mandatory flag.&lt;br /&gt;
:* '''startup''': controls whether the resource will be started with the server or not. If &amp;quot;1&amp;quot;, &amp;quot;true&amp;quot; or &amp;quot;yes&amp;quot;, the resource will be started. If not specified, defaults to not starting the resource.&lt;br /&gt;
:* '''protected''': if &amp;quot;1&amp;quot;, &amp;quot;true&amp;quot; or &amp;quot;yes&amp;quot;, the resource will not be able to be stopped when started. Otherwise, even if not specified, it will default to the normal behaviour.&lt;br /&gt;
:* '''default''': if given a &amp;quot;1&amp;quot;, &amp;quot;true&amp;quot; or &amp;quot;yes&amp;quot; value, this resource will be the one who populates the built-in HTTP server main page, which is seen when no resource is given in the web address. It is not possible to have more than one default resource.&lt;br /&gt;
&lt;br /&gt;
==Deprecated settings==&lt;br /&gt;
&lt;br /&gt;
The following settings have been deprecated in the production version of MTA:SA and no longer work.&lt;br /&gt;
&lt;br /&gt;
====networkencryption====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf - also seems to be deprecated in code --&amp;gt;&lt;br /&gt;
:''&amp;lt;networkencryption&amp;gt;1&amp;lt;/networkencryption&amp;gt;&lt;br /&gt;
:This parameter specifies whether communications between the server and client is encrypted. Encryption can help prevent network data being viewed and modified.&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled ; default value: 1. Optional parameter.&lt;br /&gt;
:This parameter can changed and saved while the server is running with [[setServerConfigSetting]]&lt;br /&gt;
&lt;br /&gt;
====autologin====&lt;br /&gt;
&amp;lt;!-- removed from MTA:SA at https://github.com/multitheftauto/mtasa-blue/commit/e392c417da03b295c7f8342a7f6c1467d094db12#diff-b828bcbfff7135920f9a1179be3e3617 --&amp;gt;&lt;br /&gt;
:''&amp;lt;autologin&amp;gt;0&amp;lt;/autologin&amp;gt;&lt;br /&gt;
:Specifies whether or not players should automatically be logged in based on their IP adresses.&lt;br /&gt;
:Values: 0 - disabled , 1 - enabled ; default value: 0.&lt;br /&gt;
&lt;br /&gt;
====httpautoclientfiles====&lt;br /&gt;
&amp;lt;!-- no longer present in mtaserver.conf - doesn't exists in code too --&amp;gt;&lt;br /&gt;
:''&amp;lt;httpautoclientfiles&amp;gt;1&amp;lt;/httpautoclientfiles&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Support]]&lt;br /&gt;
[[ru:Server mtaserver.conf]]&lt;br /&gt;
[[pl:mtaserver.conf]]&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetElementData&amp;diff=81460</id>
		<title>SetElementData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetElementData&amp;diff=81460"/>
		<updated>2024-12-06T13:12:43Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: clientChangesPolicy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
This function stores [[element data]] under a certain key, attached to an element. Element data set using this is then synced with all clients and the server. The data can contain server-created elements, but you should avoid passing data that is not able to be synced such as xmlnodes, acls, aclgroups etc.&lt;br /&gt;
&lt;br /&gt;
As element data is synced to all clients, it can generate a lot of network traffic and be heavy on performance. Events are much more efficient for sending data from a client to the server only, or from the server to a specific client. &amp;lt;br/&amp;gt;&lt;br /&gt;
Usage of element data should be discouraged where your goal can be achieved with events like above, and [[table|tables]] for storing and retrieving data.&lt;br /&gt;
{{Tip|A simple and efficient way to make a variable known to the server and clients is to use setElementData on the [[root]] element.}}&lt;br /&gt;
{{Note|See [[Script security]] for tips on preventing cheaters when using events and element data}}&lt;br /&gt;
{{Note|For performance reasons, never use setElementData in events that fire often (like [[onClientRender]]) without further optimization or conditions. In fact, using element data in general, can take such a toll on performance that not using it unless strictly necessary (e.g use alternatives such as storing data in tables) is recommended.}}&lt;br /&gt;
&lt;br /&gt;
{{New items|5.0157|1.5.7-9.20477|A subscription mode has been introduced for [[setElementData]] serverside. When setting data in subscription mode, only clients that are added through [[addElementDataSubscriber]] will receive the data, which is good for performance.&lt;br /&gt;
Note this mode only works when setting element data serverside. Setting data clientside still sends the update to all clients if 'synchronize' is set to true.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[element]]:setData||getElementData}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theElement:''' The [[element]] you wish to attach the data to.&lt;br /&gt;
*'''key:''' The key you wish to store the data under. (Maximum 128 characters.) &lt;br /&gt;
*'''value:''' The value you wish to store. See [[element data]] for a list of acceptable datatypes.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
*'''synchronize:''' Determines whether or not the data will be synchronized with the clients(server-side variation) or server(client-side variation)&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the data was set successfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
{{New items|5.0157|1.5.7-9.20477|&lt;br /&gt;
==Syntax== &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;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setElementData ( element theElement, string key, var value [, string syncMode=&amp;quot;broadcast&amp;quot;, string clientChangesPolicy=&amp;quot;default&amp;quot; ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[element]]:setData||getElementData}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theElement:''' The [[element]] you wish to attach the data to.&lt;br /&gt;
*'''key:''' The key you wish to store the data under. (Maximum 31 characters.) &lt;br /&gt;
*'''value:''' The value you wish to store. See [[element data]] for a list of acceptable datatypes.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
*'''syncMode:''' Synchronisation mode.&lt;br /&gt;
**''&amp;quot;broadcast&amp;quot;'' - Synchronise to all clients (default behavior). You can also parse ''true'' for this option.&lt;br /&gt;
**''&amp;quot;local&amp;quot;'' - Don't synchronise. You can also parse ''false'' for this option.&lt;br /&gt;
**''&amp;quot;subscribe&amp;quot;'' - Only synchronise to specific clients. See [[addElementDataSubscriber]] and [[removeElementDataSubscriber]].&lt;br /&gt;
{{New items|6.0160|1.6.0-22790|&lt;br /&gt;
*'''clientChangesPolicy:''' Client changes policy.&lt;br /&gt;
**''&amp;quot;default&amp;quot;'' - Use '''elementdata_whitelisted''' setting from [[Server_mtaserver.conf|'''mtaserver.conf''']]&lt;br /&gt;
**''&amp;quot;allow&amp;quot;'' - Trust changes from clients.&lt;br /&gt;
**''&amp;quot;deny&amp;quot;'' - Deny client changes. The server will trigger the [[onPlayerChangesProtectedData]] event when the client attempts to change the value.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&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;
bool setElementData ( element theElement, string key, var value [, bool synchronize = true ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[element]]:setData||getElementData}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theElement:''' The [[element]] you wish to attach the data to.&lt;br /&gt;
*'''key:''' The key you wish to store the data under. (Maximum 31 characters.) &lt;br /&gt;
*'''value:''' The value you wish to store. See [[element data]] for a list of acceptable datatypes.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
*'''synchronize:''' Determines whether or not the data will be synchronized with the server.&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the data was set successfully, ''false'' otherwise.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Example 1&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 add a custom tag onto their nickname, and also reverts it back to normal if they wish.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function addPlayerCustomTag ( thePlayer, command, newTag )&lt;br /&gt;
	--Let's make sure the newTag param has been entered...&lt;br /&gt;
	if ( newTag ) then&lt;br /&gt;
		--Grab their current playername for saving.&lt;br /&gt;
		local sPlayerNickname = getPlayerName ( thePlayer )&lt;br /&gt;
		--Create their new nickname with their tag&lt;br /&gt;
		local sNewPlayerNickname = newTag .. &amp;quot; &amp;quot; .. sPlayerNickname&lt;br /&gt;
		&lt;br /&gt;
		--Let's first load the element data, see if it's there already&lt;br /&gt;
		--The reason for this is that if a player were to do /addtag twice,&lt;br /&gt;
		--the tag would be prepended a second time&lt;br /&gt;
		local sOldNick = getElementData( thePlayer, &amp;quot;tempdata.originalnick&amp;quot; )&lt;br /&gt;
		if ( sOldNick == false ) then&lt;br /&gt;
			--Save their orignal nickname in their element data&lt;br /&gt;
			setElementData ( thePlayer, &amp;quot;tempdata.originalnick&amp;quot;, sPlayerNickname )&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		--Set their new nickname globally&lt;br /&gt;
		setPlayerName ( thePlayer, sNewPlayerNickname )&lt;br /&gt;
		&lt;br /&gt;
		--Tell them it's done&lt;br /&gt;
		outputChatBox ( &amp;quot;Your new nickname has been set, to put it back to its original state you can use /deltag&amp;quot;, thePlayer )&lt;br /&gt;
	else&lt;br /&gt;
		--The newTag param was not entered, give an error message&lt;br /&gt;
		outputChatBox ( &amp;quot;/addtag - Incorrect syntax, Correct: /addtag &amp;lt;newtag&amp;gt;&amp;quot;, thePlayer )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;addtag&amp;quot;, addPlayerCustomTag )&lt;br /&gt;
&lt;br /&gt;
function removePlayerCustomTag ( thePlayer, command )&lt;br /&gt;
	--We first need to check that they have already used /addtag, let's do that now&lt;br /&gt;
	local sOldNick = getElementData( thePlayer, &amp;quot;tempdata.originalnick&amp;quot; )&lt;br /&gt;
	if ( sOldNick ) then&lt;br /&gt;
		--Great, they have a tag added, let's reset them&lt;br /&gt;
		&lt;br /&gt;
		--First we will want to reset the element data back to its default (that being false)&lt;br /&gt;
		setElementData ( thePlayer, &amp;quot;tempdata.originalnick&amp;quot;, false )&lt;br /&gt;
		&lt;br /&gt;
		--Now set the client name back&lt;br /&gt;
		setPlayerName( thePlayer, sOldNick )&lt;br /&gt;
		&lt;br /&gt;
		--Notify them&lt;br /&gt;
		outputChatBox ( &amp;quot;Your old nickname has been set&amp;quot;, thePlayer )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;deltag&amp;quot;, removePlayerCustomTag )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
[[tr:setElementData]]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[pt-br:SetElementData]]&lt;br /&gt;
{{Element_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Vehicle_functions&amp;diff=80803</id>
		<title>Template:Vehicle functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Vehicle_functions&amp;diff=80803"/>
		<updated>2024-10-15T13:42:30Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Add spawnVehicleFlyingComponent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{{#if: {{{1|}}}&lt;br /&gt;
 | {{#ifeq: {{lc:{{{1}}}}} | client&lt;br /&gt;
 |&lt;br /&gt;
    &amp;lt;!-- CLIENT functions --&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[areVehicleLightsOn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getHeliBladeCollisionsEnabled]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getHelicopterRotorSpeed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    {{New feature/item|3.0161|1.6.0|22344|&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleRotorSpeed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    }}&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleAdjustableProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleComponentPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleComponentRotation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleComponents]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleComponentScale]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleComponentVisible]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleCurrentGear]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleDummyPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    {{New items|3.0161|1.6.0|&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleEntryPoints]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    |22649}}&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleGravity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleLandingGearDown]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleModelDummyDefaultPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleModelDummyPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleModelExhaustFumesPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleModelWheelSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleNitroCount]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleNitroLevel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleWheelFrictionState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleWheelScale]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isTrainChainEngine]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isVehicleNitroActivated]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isVehicleNitroRecharging]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isVehicleOnGround]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isVehicleWheelOnGround]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isVehicleWindowOpen]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[resetVehicleComponentPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[resetVehicleComponentRotation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[resetVehicleComponentScale]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[resetVehicleDummyPositions]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setHeliBladeCollisionsEnabled]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setHelicopterRotorSpeed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    {{New items|3.0161|1.6.0|&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleRotorSpeed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    |22344}}&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleAdjustableProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleComponentPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleComponentRotation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleComponentScale]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleComponentVisible]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleDummyPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleGravity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleLandingGearDown]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleModelDummyPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleModelExhaustFumesPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleModelWheelSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleNitroActivated]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleNitroCount]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleNitroLevel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleWheelScale]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleWheelStates]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleWindowOpen]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    {{New items|3.0161|1.6.0|&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleWheelsRotation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    |22592}}&lt;br /&gt;
 | {{#ifeq: {{lc:{{{1}}}}} | server&lt;br /&gt;
 |&lt;br /&gt;
    &amp;lt;!-- SERVER functions --&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[addVehicleSirens]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getModelHandling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleIdleRespawnDelay]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleRespawnDelay]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleRespawnPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehicleRespawnRotation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[getVehiclesOfType]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[isVehicleRespawnable]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[removeVehicleSirens]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[resetVehicleExplosionTime]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[resetVehicleIdleTime]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[respawnVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setModelHandling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleIdleRespawnDelay]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleRespawnDelay]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleRespawnPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[setVehicleRespawnRotation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[spawnVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;[[toggleVehicleRespawn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;list-style: none; margin-left: -1.6em;&amp;quot;&amp;gt;'''Shared'''&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- SHARED functions--&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[addVehicleUpgrade]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[attachTrailerToVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[blowVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[createVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[detachTrailerFromVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[fixVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getOriginalHandling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getTrainDirection]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getTrainPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getTrainSpeed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getTrainTrack]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleColor]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleCompatibleUpgrades]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleController]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleDoorOpenRatio]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleDoorState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleEngineState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleHandling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleHeadLightColor]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleLandingGearDown]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleLightState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleMaxPassengers]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleModelFromName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleNameFromModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleOccupant]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleOccupants]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleOverrideLights]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehiclePaintjob]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehiclePanelState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehiclePlateText]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleSirenParams]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleSirens]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleSirensOn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleTowedByVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleTowingVehicle]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleTurretPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Deprecated items|3.0156|1.5.6|&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleTurnVelocity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleType]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleUpgradeOnSlot]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleUpgradeSlotName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleUpgrades]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleVariant]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[getVehicleWheelStates]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isTrainDerailable]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isTrainDerailed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isVehicleBlown]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isVehicleDamageProof]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isVehicleFuelTankExplodable]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isVehicleLocked]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isVehicleOnGround]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[isVehicleTaxiLightOn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[removeVehicleUpgrade]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setTrainDerailable]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setTrainDerailed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setTrainDirection]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setTrainPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setTrainSpeed]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setTrainTrack]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleColor]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleDamageProof]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleDoorOpenRatio]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleDoorState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleDoorsUndamageable]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleEngineState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleFuelTankExplodable]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleHandling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleHeadLightColor]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleLandingGearDown]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleLightState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleLocked]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleOverrideLights]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehiclePaintjob]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehiclePanelState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehiclePlateText]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleSirens]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleSirensOn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleTaxiLightOn]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Deprecated items|3.0156|1.5.6|&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleTurnVelocity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleTurretPosition]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleVariant]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[setVehicleWheelStates]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{New items|3.0161|1.6.0|&lt;br /&gt;
&amp;lt;li&amp;gt;[[spawnVehicleFlyingComponent]]&amp;lt;/li&amp;gt;&lt;br /&gt;
|22771}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Functions list info}}&lt;br /&gt;
[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingRequestModel&amp;diff=80076</id>
		<title>EngineStreamingRequestModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingRequestModel&amp;diff=80076"/>
		<updated>2024-08-29T10:55:45Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: References counter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.1|22676|This function sends a loading request to the game model streamer.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineStreamingRequestModel( number modelID [, boolean addRef = false, boolean isBlocking = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''modelID''': ID of the model you want to load&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
* '''addRef''': increase references counter to prevent the model from unloading.&lt;br /&gt;
* '''isBlocking''':  load model immediately or use async loading.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if a new request was created, '''false''' otherwise.&lt;br /&gt;
&lt;br /&gt;
===References counter===&lt;br /&gt;
This function has individual references counter for each resource. If you called '''engineStreamingRequestModel''' with increasing the counter twice, you should call '''engineStreamingReleaseModel''' twice to decrease the counter.&lt;br /&gt;
MTA resets the counter after stopping a resource and calling [[engineFreeModel]].&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Simple example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws a model&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local modelId = 1337&lt;br /&gt;
&lt;br /&gt;
local function drawMyModel()&lt;br /&gt;
    dxDrawModel3D(modelId, 0, 0, 4, 0, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function startDraw()&lt;br /&gt;
    engineStreamingRequestModel(modelId, true, true)&lt;br /&gt;
    addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stopDraw()&lt;br /&gt;
    engineStreamingReleaseModel(modelId, true)&lt;br /&gt;
    removeEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&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;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingReleaseModel&amp;diff=80075</id>
		<title>EngineStreamingReleaseModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingReleaseModel&amp;diff=80075"/>
		<updated>2024-08-29T09:59:25Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.1|22676|This function sends a unloading request to the game model streamer.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; boolean engineStreamingReleaseModel( number modelID [, boolean removeRef = false ] ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''modelID''': ID of the model you want to unload.  ===Optional Arguments=== {{OptionalArg}} * '''removeRef''': decrease references counter.  ===Returns=== Returns ''tr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.1|22676|This function sends a unloading request to the game model streamer.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineStreamingReleaseModel( number modelID [, boolean removeRef = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''modelID''': ID of the model you want to unload.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
* '''removeRef''': decrease references counter.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the model was unloaded, '''false''' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Simple example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws a model&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local modelId = 1337&lt;br /&gt;
&lt;br /&gt;
local function drawMyModel()&lt;br /&gt;
    dxDrawModel3D(modelId, 0, 0, 4, 0, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function startDraw()&lt;br /&gt;
    engineStreamingRequestModel(modelId, true, true)&lt;br /&gt;
    addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stopDraw()&lt;br /&gt;
    engineStreamingReleaseModel(modelId, true)&lt;br /&gt;
    removeEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&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;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingRequestModel&amp;diff=80074</id>
		<title>EngineStreamingRequestModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingRequestModel&amp;diff=80074"/>
		<updated>2024-08-29T09:48:25Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.1|22676|This function sends a loading request to the game model streamer.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineStreamingRequestModel( number modelID [, boolean addRef = false, boolean isBlocking = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''modelID''': ID of the model you want to load&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
* '''addRef''': increase references counter to prevent the model from unloading.&lt;br /&gt;
* '''isBlocking''':  load model immediately or use async loading.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if a new request was created, '''false''' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Simple example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws a model&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local modelId = 1337&lt;br /&gt;
&lt;br /&gt;
local function drawMyModel()&lt;br /&gt;
    dxDrawModel3D(modelId, 0, 0, 4, 0, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function startDraw()&lt;br /&gt;
    engineStreamingRequestModel(modelId, true, true)&lt;br /&gt;
    addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stopDraw()&lt;br /&gt;
    engineStreamingReleaseModel(modelId, true)&lt;br /&gt;
    removeEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&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;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingRequestModel&amp;diff=80073</id>
		<title>EngineStreamingRequestModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingRequestModel&amp;diff=80073"/>
		<updated>2024-08-29T09:47:04Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.1|22676|This function sends a loading request to the game model streamer.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; boolean engineStreamingRequestModel( number modelID [, boolean addRef = false, boolean isBlocking = false ] ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''modelID''': ID of the model you want to get flags.  ===Optional Arguments=== {{OptionalArg}} * '''addRef''': increase references counter to pr...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.1|22676|This function sends a loading request to the game model streamer.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineStreamingRequestModel( number modelID [, boolean addRef = false, boolean isBlocking = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''modelID''': ID of the model you want to get flags.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
* '''addRef''': increase references counter to prevent the model from unloading.&lt;br /&gt;
* '''isBlocking''':  load model immediately or use async loading.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if a new request was created, '''false''' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Simple example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example draws a model&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local modelId = 1337&lt;br /&gt;
&lt;br /&gt;
local function drawMyModel()&lt;br /&gt;
    dxDrawModel3D(modelId, 0, 0, 4, 0, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function startDraw()&lt;br /&gt;
    engineStreamingRequestModel(modelId, true, true)&lt;br /&gt;
    addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function stopDraw()&lt;br /&gt;
    engineStreamingReleaseModel(modelId, true)&lt;br /&gt;
    removeEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, drawMyModel)&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;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingGetModelLoadState&amp;diff=80072</id>
		<title>EngineStreamingGetModelLoadState</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingGetModelLoadState&amp;diff=80072"/>
		<updated>2024-08-29T09:16:31Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.1|22676|This function returns load state of model.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; string engineStreamingGetModelLoadState( number modelID ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''modelID''': ID of the model you want to get flags.  ===Returns=== Returns ''string'' with model load state. Possible load states: * unloaded - model is not loaded. * loaded - model is loaded. * requested - model is wa...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.1|22676|This function returns load state of model.}}&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 engineStreamingGetModelLoadState( number modelID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''modelID''': ID of the model you want to get flags.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''string'' with model load state.&lt;br /&gt;
Possible load states:&lt;br /&gt;
* unloaded - model is not loaded.&lt;br /&gt;
* loaded - model is loaded.&lt;br /&gt;
* requested - model is waiting for loading.&lt;br /&gt;
* reading - model is being read&lt;br /&gt;
* finishing - second reading state for big models.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Engine_functions&amp;diff=80071</id>
		<title>Template:Engine functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Engine_functions&amp;diff=80071"/>
		<updated>2024-08-28T11:21:42Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Add model streaming functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineAddImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineApplyShaderToWorldTexture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineFreeModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineFreeTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21695|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelFlags]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelIDFromName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelLODDistance]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelNameFromID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelPhysicalPropertiesGroup]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelTextureNames]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelTextures]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelTXDID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20704|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelVisibleTime]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetObjectGroupPhysicalProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetSurfaceProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetVisibleTextureNames]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageGetFilesCount]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageGetFiles]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageGetFile]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageLinkDFF]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageLinkTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImportTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadCOL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadDFF]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadIMG]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadIFP]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{New items|3.0161|1.6.0|&lt;br /&gt;
&amp;lt;li&amp;gt;[[enginePreloadWorldArea]]&amp;lt;/li&amp;gt;&lt;br /&gt;
|22678}}&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRemoveImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRemoveShaderFromWorldTexture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineReplaceAnimation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineReplaceCOL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineReplaceModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRequestModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRequestTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21695|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetModelFlags]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetModelLODDistance]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetModelTXDID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetSurfaceProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreAnimation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreCOL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreDFFImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreModelPhysicalPropertiesGroup]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreObjectGroupPhysicalProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreTXDImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20704|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestreamWorld]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetAsynchronousLoading]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21695|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelFlag]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelFlags]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelLODDistance]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelPhysicalPropertiesGroup]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelTXDID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20704|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelVisibleTime]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetObjectGroupPhysicalProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetSurfaceProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20901|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingFreeUpMemory]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetUsedMemory]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|21874|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingSetMemorySize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetMemorySize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingRestoreMemorySize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingSetBufferSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetBufferSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingRestoreBufferSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|21947|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingSetModelCacheLimits]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22471|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetPoolCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetPoolCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetPoolDefaultCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetPoolUsedCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22676|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingRequestModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingReleaseModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetModelLoadState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateBuilding&amp;diff=80070</id>
		<title>CreateBuilding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateBuilding&amp;diff=80070"/>
		<updated>2024-08-28T11:08:08Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22410|Creates a [[building]] [[element]] at a given position and rotation.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;building createBuilding ( int modelId, float x, float y, float z [, float rx, float ry, float rz, int interior = 0 ] )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[Building]]||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''modelId:''' A whole integer specifying the GTA:SA object model ID.&lt;br /&gt;
*'''x:''' A floating point number representing the X coordinate on the map.&lt;br /&gt;
*'''y:''' A floating point number representing the Y coordinate on the map.&lt;br /&gt;
*'''z:''' A floating point number representing the Z coordinate on the map.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
*'''rx:''' A floating point number representing the rotation about the X axis in degrees.&lt;br /&gt;
*'''ry:''' A floating point number representing the rotation about the Y axis in degrees.&lt;br /&gt;
*'''rz:''' A floating point number representing the rotation about the Z axis in degrees.&lt;br /&gt;
*'''interior:''' The interior you want to set the building to. Valid values are 0 to 255.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
* Returns the [[building]] element if the creation was successful, throws an error otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Simple example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a building when the resource starts:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function loadMap()&lt;br /&gt;
   -- create a *building* at a specified position with a specified rotation&lt;br /&gt;
   createBuilding(4550, 1985, -2544, 94, 0,0,0) -- Maze Bank Tower in LS airport&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, resourceRoot, loadMap)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineImageLinkTXD&amp;diff=79938</id>
		<title>EngineImageLinkTXD</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineImageLinkTXD&amp;diff=79938"/>
		<updated>2024-07-21T20:32:47Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|21695|This function links TXD file with an IMG container. This function does not change a model immediately. You should use [[engineRestreamWorld]] to reload models.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineImageLinkTXD ( img img_file, string file_path, int txdID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[img]]:linkTXD}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''img_file''': The [[IMG]] file you want to link.&lt;br /&gt;
* '''file_path''': Path to the [[TXD]] file you want to link.&lt;br /&gt;
* '''txdID''': ID of the texture dictionary you want to link to. Use [[engineGetModelTXDID]] or [[engineRequestTXD]] to get this value.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if [[IMG]] file was successfully linked, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
You could use the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Load IMG&lt;br /&gt;
local img = engineLoadIMG( &amp;quot;file.img&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
-- Enable streaming from this IMG&lt;br /&gt;
engineAddImage( img )&lt;br /&gt;
&lt;br /&gt;
-- Get model TXD id&lt;br /&gt;
local infernusModelID = 411&lt;br /&gt;
local infernusModelTxdID = engineGetModelTXDID( infernusModelID )&lt;br /&gt;
&lt;br /&gt;
-- Link DFF and TXD to IMG files&lt;br /&gt;
engineImageLinkDFF( img, &amp;quot;infernus.dff&amp;quot;, infernusModelID )&lt;br /&gt;
engineImageLinkTXD( img, &amp;quot;infernus.txd&amp;quot;, infernusModelTxdID )&lt;br /&gt;
&lt;br /&gt;
-- Reload game models&lt;br /&gt;
engineRestreamWorld()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79937</id>
		<title>EngineImageLinkDFF</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79937"/>
		<updated>2024-07-21T20:32:29Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|21695|This function links DFF file with an IMG container. This function does not change a model immediately. You should use [[engineRestreamWorld]] to reload models.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineImageLinkDFF ( img img_file, string file_path, int modelID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[img]]:linkDFF}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''img_file''': The [[IMG]] file you want to link.&lt;br /&gt;
* '''file_path''': Path to the [[DFF]] file you want to link.&lt;br /&gt;
* '''modelID''': ID of the model you want to link to.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if [[IMG]] file was successfully linked, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
You could use the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Load IMG&lt;br /&gt;
local img = engineLoadIMG( &amp;quot;file.img&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
-- Enable streaming from this IMG&lt;br /&gt;
engineAddImage( img )&lt;br /&gt;
&lt;br /&gt;
-- Get model TXD id&lt;br /&gt;
local infernusModelID = 411&lt;br /&gt;
local infernusModelTxdID = engineGetModelTXDID( infernusModelID )&lt;br /&gt;
&lt;br /&gt;
-- Link DFF and TXD to IMG files&lt;br /&gt;
engineImageLinkDFF( img, &amp;quot;infernus.dff&amp;quot;, infernusModelID )&lt;br /&gt;
engineImageLinkTXD( img, &amp;quot;infernus.txd&amp;quot;, infernusModelTxdID )&lt;br /&gt;
&lt;br /&gt;
-- Reload game models&lt;br /&gt;
engineRestreamWorld()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79936</id>
		<title>EngineImageLinkDFF</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79936"/>
		<updated>2024-07-21T20:31:31Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|21695|This function links DFF file with an IMG container. This function does not change a model immediately. You should use [[engineRestreamWorld]] to reload a model}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineImageLinkDFF ( img img_file, string file_path, int modelID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[img]]:linkDFF}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''img_file''': The [[IMG]] file you want to link.&lt;br /&gt;
* '''file_path''': Path to the [[DFF]] file you want to link.&lt;br /&gt;
* '''modelID''': ID of the model you want to link to.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if [[IMG]] file was successfully linked, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
You could use the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Load IMG&lt;br /&gt;
local img = engineLoadIMG( &amp;quot;file.img&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
-- Enable streaming from this IMG&lt;br /&gt;
engineAddImage( img )&lt;br /&gt;
&lt;br /&gt;
-- Get model TXD id&lt;br /&gt;
local infernusModelID = 411&lt;br /&gt;
local infernusModelTxdID = engineGetModelTXDID( infernusModelID )&lt;br /&gt;
&lt;br /&gt;
-- Link DFF and TXD to IMG files&lt;br /&gt;
engineImageLinkDFF( img, &amp;quot;infernus.dff&amp;quot;, infernusModelID )&lt;br /&gt;
engineImageLinkTXD( img, &amp;quot;infernus.txd&amp;quot;, infernusModelTxdID )&lt;br /&gt;
&lt;br /&gt;
-- Reload game models&lt;br /&gt;
engineRestreamWorld()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79935</id>
		<title>EngineImageLinkDFF</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79935"/>
		<updated>2024-07-21T20:31:10Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|21695|This function links DFF file with an IMG container. This function does not change model immediately. You should use [[engineRestreamWorld]] to reload a model}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineImageLinkDFF ( img img_file, string file_path, int modelID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[img]]:linkDFF}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''img_file''': The [[IMG]] file you want to link.&lt;br /&gt;
* '''file_path''': Path to the [[DFF]] file you want to link.&lt;br /&gt;
* '''modelID''': ID of the model you want to link to.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if [[IMG]] file was successfully linked, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
You could use the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Load IMG&lt;br /&gt;
local img = engineLoadIMG( &amp;quot;file.img&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
-- Enable streaming from this IMG&lt;br /&gt;
engineAddImage( img )&lt;br /&gt;
&lt;br /&gt;
-- Get model TXD id&lt;br /&gt;
local infernusModelID = 411&lt;br /&gt;
local infernusModelTxdID = engineGetModelTXDID( infernusModelID )&lt;br /&gt;
&lt;br /&gt;
-- Link DFF and TXD to IMG files&lt;br /&gt;
engineImageLinkDFF( img, &amp;quot;infernus.dff&amp;quot;, infernusModelID )&lt;br /&gt;
engineImageLinkTXD( img, &amp;quot;infernus.txd&amp;quot;, infernusModelTxdID )&lt;br /&gt;
&lt;br /&gt;
-- Reload game models&lt;br /&gt;
engineRestreamWorld()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineImageLinkTXD&amp;diff=79934</id>
		<title>EngineImageLinkTXD</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineImageLinkTXD&amp;diff=79934"/>
		<updated>2024-07-21T20:27:26Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|21695|This function links TXD file with an IMG container.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineImageLinkTXD ( img img_file, string file_path, int txdID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[img]]:linkTXD}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''img_file''': The [[IMG]] file you want to link.&lt;br /&gt;
* '''file_path''': Path to the [[TXD]] file you want to link.&lt;br /&gt;
* '''txdID''': ID of the texture dictionary you want to link to. Use [[engineGetModelTXDID]] or [[engineRequestTXD]] to get this value.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if [[IMG]] file was successfully linked, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
You could use the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Load IMG&lt;br /&gt;
local img = engineLoadIMG( &amp;quot;file.img&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
-- Enable streaming from this IMG&lt;br /&gt;
engineAddImage( img )&lt;br /&gt;
&lt;br /&gt;
-- Get model TXD id&lt;br /&gt;
local infernusModelID = 411&lt;br /&gt;
local infernusModelTxdID = engineGetModelTXDID( infernusModelID )&lt;br /&gt;
&lt;br /&gt;
-- Link DFF and TXD to IMG files&lt;br /&gt;
engineImageLinkDFF( img, &amp;quot;infernus.dff&amp;quot;, infernusModelID )&lt;br /&gt;
engineImageLinkTXD( img, &amp;quot;infernus.txd&amp;quot;, infernusModelTxdID )&lt;br /&gt;
&lt;br /&gt;
-- Reload game models&lt;br /&gt;
engineRestreamWorld()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79933</id>
		<title>EngineImageLinkDFF</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineImageLinkDFF&amp;diff=79933"/>
		<updated>2024-07-21T20:26:59Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|21695|This function links DFF file with an IMG container.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineImageLinkDFF ( img img_file, string file_path, int modelID )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OOP||[[img]]:linkDFF}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''img_file''': The [[IMG]] file you want to link.&lt;br /&gt;
* '''file_path''': Path to the [[DFF]] file you want to link.&lt;br /&gt;
* '''modelID''': ID of the model you want to link to.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if [[IMG]] file was successfully linked, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
You could use the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Load IMG&lt;br /&gt;
local img = engineLoadIMG( &amp;quot;file.img&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
-- Enable streaming from this IMG&lt;br /&gt;
engineAddImage( img )&lt;br /&gt;
&lt;br /&gt;
-- Get model TXD id&lt;br /&gt;
local infernusModelID = 411&lt;br /&gt;
local infernusModelTxdID = engineGetModelTXDID( infernusModelID )&lt;br /&gt;
&lt;br /&gt;
-- Link DFF and TXD to IMG files&lt;br /&gt;
engineImageLinkDFF( img, &amp;quot;infernus.dff&amp;quot;, infernusModelID )&lt;br /&gt;
engineImageLinkTXD( img, &amp;quot;infernus.txd&amp;quot;, infernusModelTxdID )&lt;br /&gt;
&lt;br /&gt;
-- Reload game models&lt;br /&gt;
engineRestreamWorld()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineSetPoolCapacity&amp;diff=79641</id>
		<title>EngineSetPoolCapacity</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineSetPoolCapacity&amp;diff=79641"/>
		<updated>2024-06-22T14:16:44Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.0|22471|This function changes the capacity of the provided pool.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; boolean engineSetPoolCapacity( string pool, number capacity ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''pool''': Name of the pool * '''capacity ''': New size  ===Returns=== '''true''' if the pool capacity was changed and '''false''' if not. Throws an error if the pool is invalid.  {{Engine_pools}}  ==S...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|22471|This function changes the capacity of the provided pool.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
boolean engineSetPoolCapacity( string pool, number capacity )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''pool''': Name of the pool&lt;br /&gt;
* '''capacity ''': New size&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
'''true''' if the pool capacity was changed and '''false''' if not. Throws an error if the pool is invalid.&lt;br /&gt;
&lt;br /&gt;
{{Engine_pools}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineGetPoolCapacity&amp;diff=79640</id>
		<title>EngineGetPoolCapacity</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineGetPoolCapacity&amp;diff=79640"/>
		<updated>2024-06-22T14:11:00Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.0|22471|This function returns the capacity of the provided pool.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; number engineGetPoolCapacity( string pool ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''pool''': Name of the pool  ===Returns=== The capacity of the provided pool as positive number  {{Engine_pools}}  ==See Also== {{Engine_functions}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|22471|This function returns the capacity of the provided pool.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
number engineGetPoolCapacity( string pool )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''pool''': Name of the pool&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
The capacity of the provided pool as positive number&lt;br /&gt;
&lt;br /&gt;
{{Engine_pools}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineGetPoolUsedCapacity&amp;diff=79639</id>
		<title>EngineGetPoolUsedCapacity</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineGetPoolUsedCapacity&amp;diff=79639"/>
		<updated>2024-06-22T14:08:57Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.0|22471|This function returns the used capacity of the provided pool.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; number engineGetPoolUsedCapacity( string pool ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''pool''': Name of the pool  ===Returns=== The used capacity of the provided pool as positive number  {{Engine_pools}}  ==See Also== {{Engine_functions}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|22471|This function returns the used capacity of the provided pool.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
number engineGetPoolUsedCapacity( string pool )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''pool''': Name of the pool&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
The used capacity of the provided pool as positive number&lt;br /&gt;
&lt;br /&gt;
{{Engine_pools}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineGetPoolDefaultCapacity&amp;diff=79638</id>
		<title>EngineGetPoolDefaultCapacity</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineGetPoolDefaultCapacity&amp;diff=79638"/>
		<updated>2024-06-22T14:08:05Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__ {{Client function}}  {{New feature/item|4|1.6.0|22471|This function returns the default capacity of the provided pool.}}  ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; number engineGetPoolDefaultCapacity( string pool ) &amp;lt;/syntaxhighlight&amp;gt;  ===Required Arguments=== * '''pool''': Name of the pool  ===Returns=== The default capacity of the provided pool as positive number  {{Engine_pools}}  ==See Also== {{Engine_functions}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4|1.6.0|22471|This function returns the default capacity of the provided pool.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
number engineGetPoolDefaultCapacity( string pool )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''pool''': Name of the pool&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
The default capacity of the provided pool as positive number&lt;br /&gt;
&lt;br /&gt;
{{Engine_pools}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Engine_pools&amp;diff=79637</id>
		<title>Template:Engine pools</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Engine_pools&amp;diff=79637"/>
		<updated>2024-06-22T13:59:01Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;===Engine pools=== {|class=&amp;quot;wikitable sortable&amp;quot; |- ! Name || Default size || Resizable || Description |- | building || 13000 || yes || Static world objects. Terrain, roads, buildings... |- | dummy|| 2500 || no || Dynamic world objects. Doors, fences, boxes |- | ped || 140 || no || Peds |- | object || 1200 || no || Scriptable objects |- | vehicle || 110 || no || Vehicles |- | col-model || 12000 || no || |- | task || 5000 || no || |- | event || 5000 || no || |- | task-allo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Engine pools===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Default size || Resizable || Description&lt;br /&gt;
|-&lt;br /&gt;
| building || 13000 || yes || Static world objects. Terrain, roads, buildings...&lt;br /&gt;
|-&lt;br /&gt;
| dummy|| 2500 || no || Dynamic world objects. Doors, fences, boxes&lt;br /&gt;
|-&lt;br /&gt;
| ped || 140 || no || Peds&lt;br /&gt;
|-&lt;br /&gt;
| object || 1200 || no || Scriptable objects&lt;br /&gt;
|-&lt;br /&gt;
| vehicle || 110 || no || Vehicles&lt;br /&gt;
|-&lt;br /&gt;
| col-model || 12000 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| task || 5000 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| event || 5000 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| task-allocator || 16 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| ped-intelligence || 64 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| ped-attractor || 64 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| entry-info-node || 72600 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| node-route || 64 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| patrol-route || 32 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| point-route || 64 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| pointer-double-link-pool || 74800 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| pointer-single-link-pool || 90000 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| env-map-material || 16000 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| env-map-atomic || 4000 || no ||&lt;br /&gt;
|-&lt;br /&gt;
| spec-map-material || 16000 || no ||&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Changes_in_1.6&amp;diff=79615</id>
		<title>Changes in 1.6</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Changes_in_1.6&amp;diff=79615"/>
		<updated>2024-06-17T17:31:31Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Vladislav Nikolaevich and Uladzislau Nikalayevich and TheNormalnij is me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;#39dd57&amp;quot; subcaption=&amp;quot;Current release&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
{{Changelogs}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
1.6.0 was released on June 16, 2023. Beta was initially released on April 7, 2023.&lt;br /&gt;
&lt;br /&gt;
* GitHub commit log: https://github.com/multitheftauto/mtasa-blue/compare/1.5.9...1.6.0&lt;br /&gt;
* GitHub milestone: https://github.com/multitheftauto/mtasa-blue/milestone/9&lt;br /&gt;
* Resources GitHub commit log: https://github.com/multitheftauto/mtasa-resources/compare/1.5.9...1.6.0&lt;br /&gt;
* Pre-release announcement on forums: https://forum.multitheftauto.com/topic/140285-multi-theft-auto-san-andreas-16-is-ready-for-testing/&lt;br /&gt;
* Release announcement on forums: https://forum.multitheftauto.com/topic/140935-multi-theft-auto-san-andreas-16-is-released/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important notice to Windows 7 and 8.x users ==&lt;br /&gt;
If you are using Windows 7 or 8.x, please upgrade your system to Windows 10 or 11 as soon as possible. Windows 7 and 8.x are no longer supported by Microsoft (since January 2020 and January 2023 respectively) and most software (including Google Chrome and Steam) which means you are running an insecure system. Multi Theft Auto will also eventually drop Windows 7 and 8.x support sometime in the future, so it would be a good idea to start looking at upgrade options right now. Thank you!&lt;br /&gt;
&lt;br /&gt;
'''CEF in MTA is no longer updated for Windows 7 or 8.x. This is because CEF no longer supports those versions of Windows. This bad for security, so please upgrade to Windows 10+ and MTA to 1.6+'''&lt;br /&gt;
&lt;br /&gt;
== 12 Backwards Incompatible Changes ==&lt;br /&gt;
These changes will take effect in this version and scripts may need to be manually upgraded when updating:&lt;br /&gt;
&lt;br /&gt;
:* Bloodring Banger (504) is now defined as doorless, to fix animations to be consistent with single player, this also causes [[setVehicleLocked]] to not lock the vehicle anymore, as entry happens through the window.&lt;br /&gt;
:* [[callRemote]] callbacks currently set the error code to ''nil'' when there is no error. In this version, to be consistent with [[fetchRemote]], the error code reported will be '''0''' ([https://github.com/multitheftauto/mtasa-blue/issues/294 #294]).&lt;br /&gt;
:* Since Aug 2015, we replaced the custom ''mtalocal://'' URL scheme with '''http://mta/resourceName/blah.html'''. The ''mtalocal://'' URL scheme will now be removed ([https://github.com/multitheftauto/mtasa-blue/issues/1071 #1071]).&lt;br /&gt;
:* Since Jul 2016 if you provide an invalid string like ''&amp;quot;randomstring&amp;quot;'' when a function expects a number, the string will be treated as '''0''' and raise a script warning. This will be now an error. You will still be able to provide strings containing numbers (e.g. ''&amp;quot;100&amp;quot;'' and ''&amp;quot;12.34&amp;quot;''), this change only affects invalid strings ([https://github.com/multitheftauto/mtasa-blue/issues/1043 #1043]).&lt;br /&gt;
:* Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error ([https://github.com/multitheftauto/mtasa-blue/issues/1070 #1070]).&lt;br /&gt;
:* When providing a width and height of ''(0, 0)'' to [[createBrowser]] or [[guiCreateBrowser]] you will encounter a script error instead of a warning, introduced in Feb 2019 ([https://github.com/multitheftauto/mtasa-blue/issues/1069 #1069]).&lt;br /&gt;
:* The previously unused ''z'' argument in [[getElementsWithinRange]] now calculates elements in 3D space instead of 2D space ([https://github.com/multitheftauto/mtasa-blue/pull/1994 #1994]).&lt;br /&gt;
:* Flamethrower ammo is no longer multiplied by 10 ([https://github.com/multitheftauto/mtasa-blue/issues/481 #481]).&lt;br /&gt;
:* Server-side [[createBlip]] now syncs blip size and color regardless of icon ID, previously only icon ID 0 had its size and color synced to clients ([https://github.com/multitheftauto/mtasa-blue/issues/1399 #1399]).&lt;br /&gt;
:* Server-side [[givePlayerMoney]] and [[setPlayerMoney]] cap has been raised from 99.999.999 (8 digits) to 999.999.999 (9 digits) to match the maximum native UI value ([https://github.com/multitheftauto/mtasa-blue/issues/2654 #2654]).&lt;br /&gt;
:* Players are now synced when exiting vehicle ([https://github.com/multitheftauto/mtasa-blue/pull/2084 #2084]).&lt;br /&gt;
:* Server-side objects that were unbreakable by default, but would have been breakable client-side by default, are now breakable by default also server-side ([https://github.com/multitheftauto/mtasa-blue/compare/d701fbe15b4cece7a6cd6242c3819e68deb7aae2...57d5be3d3e323394a8926a79f3da9cd3814e44a2 commit]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5 Deprecations ==&lt;br /&gt;
These changes will take effect in this version and scripts may need to be manually upgraded when updating:&lt;br /&gt;
&lt;br /&gt;
:* Changed [[getCameraShakeLevel]], [[setCameraShakeLevel]] to throw a warning on use, please upgrade to [[getCameraDrunkLevel]] and [[setCameraDrunkLevel]] instead ([https://github.com/multitheftauto/mtasa-blue/commit/2651903e6a03c78a0571089b142b175f11f41bab 2651903] by '''Unde-R''')&lt;br /&gt;
:* Changed [[givePedJetPack]], [[removePedJetPack]] and [[doesPedHaveJetPack]] to throw a warning on use, please upgrade to [[setPedWearingJetpack]] and [[isPedWearingJetpack]] instead ([https://github.com/multitheftauto/mtasa-blue/commit/804c66b88e0324eb6b2d9c83fdf7606ba05566c6 804c66b] by '''qaisjp''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notable Changes ==&lt;br /&gt;
This update is primarily focused on fixes and changes rather than new features, but there are a lot of features planned for the next release!&lt;br /&gt;
&lt;br /&gt;
:* Many high FPS related inconsistency issues have been fixed by Merlin!&lt;br /&gt;
:* Script support for custom IMG containers, and ability to set model flags. Thanks to TheNormalnij!&lt;br /&gt;
:* A number of graphical effects&lt;br /&gt;
::* Added support for vehicle sun glare effect. Thanks to gta191977649 and TheNormalnij.&lt;br /&gt;
::* Added corona rain reflections. Thanks to lopezloo.&lt;br /&gt;
::* Added big sun lens flare effect. Thanks to gta191977649.&lt;br /&gt;
::* Added dynamic ped shadows. Thanks to lopezloo.&lt;br /&gt;
::* Grass should now render correctly. Thanks to TFP-dev.&lt;br /&gt;
:* ARM support for MTA server is here! This support should still considered experimental. Thanks to botder.&lt;br /&gt;
:* Added new ''Default 2023'', ''GWEN Blue'' and ''GWEN Orange'' GUI skins. Thanks to Haxardous.&lt;br /&gt;
:* Added missing GTA special [[Character Skins|character skins]] (3, 4, 5, 6, 8, 42, 65, 86, 119, 273, 289). Thanks to Allerek.&lt;br /&gt;
:* Pictures taken with the camera weapon are now saved in higher quality. Thanks to lopezloo.&lt;br /&gt;
:* Many stability improvements&lt;br /&gt;
:* Many synchronization improvements&lt;br /&gt;
:* Many varying size fixes, quality of life improvements, updates and security enhancements to both core and resources!&lt;br /&gt;
:* Updates to all language translations from our [https://multitheftauto.crowdin.com Crowdin]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
These are some statistics since the [[Changes in 1.5.9|previous release]].&lt;br /&gt;
:* This is the '''27&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt;''' 1.x.x release&lt;br /&gt;
:* '''{{date difference|2021|10|01|2023|06|16}}''' days of which '''{{date difference|2021|10|01|2023|04|07}}''' for beta release&lt;br /&gt;
:* '''12''' backwards incompatible changes&lt;br /&gt;
:* '''26''' new functions&lt;br /&gt;
:* '''1''' new event&lt;br /&gt;
:* '''5''' deprecations&lt;br /&gt;
:* '''289+''' bug fixes and changes&lt;br /&gt;
:* '''956+''' commits ([https://github.com/multitheftauto/mtasa-blue/compare/1.5.9...1.6.0 mtasa-blue])  ([https://github.com/multitheftauto/mtasa-resources/compare/1.5.9...1.6.0 mtasa-resources])&lt;br /&gt;
:* '''199''' new open GitHub issues ([https://github.com/multitheftauto/mtasa-blue/issues?q=is%3Aopen+is%3Aissue+created%3A2021-10-01..2023-06-16 see list])&lt;br /&gt;
:* '''102''' resolved GitHub issues ([https://github.com/multitheftauto/mtasa-blue/issues?q=is%3Aclosed+is%3Aissue+milestone%3A%221.6.0%22 see list])&lt;br /&gt;
:* '''92''' closed GitHub issues ([https://github.com/multitheftauto/mtasa-blue/issues?q=is%3Aclosed+is%3Aissue+closed%3A2021-10-01..2023-06-16+no%3Amilestone+-label%3Ainvalid see list])&lt;br /&gt;
:* '''44''' new open GitHub pull requests ([https://github.com/multitheftauto/mtasa-blue/pulls?q=is%3Aopen+is%3Apr+created%3A2021-10-01..2023-06-16 see list])&lt;br /&gt;
:* '''219''' merged GitHub pull requests ([https://github.com/multitheftauto/mtasa-blue/pulls?q=is%3Apr+is%3Amerged+milestone%3A%221.6.0%22 see list])&lt;br /&gt;
:* '''107''' closed GitHub pull requests ([https://github.com/multitheftauto/mtasa-blue/pulls?q=is%3Apr+is%3Aunmerged+closed%3A2021-10-01..2023-06-16 see list])&lt;br /&gt;
:* '''45+''' contributors of which '''17+''' are new ([https://github.com/multitheftauto/mtasa-blue/graphs/contributors?from=2021-10-01&amp;amp;to=2023-06-16&amp;amp;type=c see list])&lt;br /&gt;
:* '''100+''' total contributors ([https://github.com/multitheftauto/mtasa-blue/graphs/contributors see list])&lt;br /&gt;
:* '''23''' vendor updates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;'''Note:''' Last update to these statistics was made {{date difference human friendly|2023|06|17}}.&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15 New Features ==&lt;br /&gt;
=== Shared ===&lt;br /&gt;
:* Added RSA support on [[encodeString]], along with a new function ([https://github.com/multitheftauto/mtasa-blue/commit/e7e3ba5b337f791203ef977bd083a28226614da7 e7e3ba5], [https://github.com/multitheftauto/mtasa-blue/commit/39bc23f136d82a4849a7b09edfa65fc927b52acc 39bc23f] and [https://github.com/multitheftauto/mtasa-blue/commit/83185ef2fbc1ee086cc7acb1a97b4b15bf939a88 83185ef] by '''Inder00''', '''Pirulax''' and '''TheNormalnij''')&lt;br /&gt;
:** [[generateKeyPair]]&lt;br /&gt;
:* Added HMAC support on [[encodeString]] ([https://github.com/multitheftauto/mtasa-blue/commit/eebf228224860eed030d59d629e905dc9a79b13c eebf228] by '''Inder00''')&lt;br /&gt;
:* Added [[getProcessMemoryStats]] ([https://github.com/multitheftauto/mtasa-blue/commit/dd571b4793ac6773c634a1cdc6b28bfa00891127 dd571b4] by '''botder''')&lt;br /&gt;
&lt;br /&gt;
=== Client ===&lt;br /&gt;
:* Added support for loading custom IMG containers ([https://github.com/multitheftauto/mtasa-blue/commit/075dfeeac88ddf52063f9ec38a68669ce7c9a948 075dfee] by '''TheNormalnij''')&lt;br /&gt;
:** [[engineLoadIMG]]&lt;br /&gt;
:** [[engineImageLinkDFF]]&lt;br /&gt;
:** [[engineImageLinkTXD]]&lt;br /&gt;
:** [[engineRestoreDFFImage]]&lt;br /&gt;
:** [[engineRestoreTXDImage]]&lt;br /&gt;
:** [[engineAddImage]]&lt;br /&gt;
:** [[engineRemoveImage]]&lt;br /&gt;
:** [[engineImageGetFilesCount]]&lt;br /&gt;
:** [[engineImageGetFiles]]&lt;br /&gt;
:** [[engineImageGetFile]]&lt;br /&gt;
:** [[engineGetModelTXDID]]&lt;br /&gt;
:* Added support for model flags ([https://github.com/multitheftauto/mtasa-blue/commit/ec314df0362829ed52a52aa3ac0b1302c2097c3a ec314df] by '''TheNormalnij''')&lt;br /&gt;
:** [[engineSetModelFlags]]&lt;br /&gt;
:** [[engineGetModelFlags]]&lt;br /&gt;
:** [[engineResetModelFlags]]&lt;br /&gt;
:** [[engineGetModelFlag]]&lt;br /&gt;
:** [[engineSetModelFlag]]&lt;br /&gt;
:* Added vehicle sun glare effect to [[setWorldSpecialPropertyEnabled]] and [[isWorldSpecialPropertyEnabled]] ([https://github.com/multitheftauto/mtasa-blue/commit/1fac28795ece272f0a7fe0b697c793b315ac3459 1fac287] by '''gta191977649''' and '''TheNormalnij''' and [https://github.com/multitheftauto/mtasa-blue/commit/3068896767976610332272a35ceda28fd33bb75f 3068896] and [https://github.com/multitheftauto/mtasa-blue/commit/da49960feb6651e1cb6efb8a63408eb8ad89c30e da49960] by '''gta191977649''')&lt;br /&gt;
:* Added support for WebM files to [[playSound]] and [[playSound3D]] ([https://github.com/multitheftauto/mtasa-blue/commit/545a22a531b9f4eee01e3d502cbb38b0d95b4c4f 545a22a] by '''theSarrum''')&lt;br /&gt;
:* Added corona rain reflections ([https://github.com/multitheftauto/mtasa-blue/commit/c4caa4b7e82291aca67056fc0f2e9835322f7db9 c4caa4b] by '''lopezloo''')&lt;br /&gt;
:* Added [[isCapsLockEnabled]] function ([https://github.com/multitheftauto/mtasa-blue/commit/e84a15e1ea4d47769e14917243ddb2eac54ae5ee e84a15e] by '''Lpsd''')&lt;br /&gt;
:* Added [[isMTAWindowFocused]] and [[onClientMTAFocusChange]] ([https://github.com/multitheftauto/mtasa-blue/commit/2438e4f9e7fbdeb67a8013fc17f268e6d19f2044 2438e4f] by '''Lpsd''')&lt;br /&gt;
:* Added [[getElementLighting]] ([https://github.com/multitheftauto/mtasa-blue/commit/bc54720421d0dcfa188a9e418d36fb732f061002 bc54720] by '''samr46''')&lt;br /&gt;
:* Added [[setChatboxCharacterLimit]] and [[getChatboxCharacterLimit]], and increased character limit to 255 ([https://github.com/multitheftauto/mtasa-blue/commit/82801ab353a5ea50f69c16904d7e678f620729c3 82801ab] by '''Lpsd''')&lt;br /&gt;
:* Added [[getAllElementData]] ([https://github.com/multitheftauto/mtasa-blue/commit/0ff6607a6f8196c3b82d1289a315a53fa709da32 0ff6607] by '''Unde-R''' and '''StrixG''')&lt;br /&gt;
&lt;br /&gt;
=== Server ===&lt;br /&gt;
:* Added ARM support for the server executable ([https://github.com/multitheftauto/mtasa-blue/commit/8fc9004ec945a2ab74f4262ed0de267752f66675 8fc9004] and [https://github.com/multitheftauto/mtasa-blue/commit/d01bf2eafc3059d4eff764c228dc6b82d5af7ffe d01bf2e] by '''botder''')&lt;br /&gt;
:* Added [[isObjectBreakable]] and [[setObjectBreakable]], also added support for the ''breakable'' map object attribute ([https://github.com/multitheftauto/mtasa-blue/compare/d701fbe15b4cece7a6cd6242c3819e68deb7aae2...57d5be3d3e323394a8926a79f3da9cd3814e44a2 commit] by '''patrikjuvonen''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 192+ Changes and Bug Fixes ==&lt;br /&gt;
=== Shared ===&lt;br /&gt;
:* '''[Breaking change]''' Change bad numberstring warning to error ([https://github.com/multitheftauto/mtasa-blue/commit/9baf6a5b6b3fdeb5abaf76c1e2863354aa88e36a 9baf6a5] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Change unsigned type check from warning to error ([https://github.com/multitheftauto/mtasa-blue/commit/1cd1b61b4b45e4fcfe2e0e1cb36bf09d74419618 1cd1b61] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Added proper 3D radius check to [[getElementsWithinRange]] ([https://github.com/multitheftauto/mtasa-blue/commit/3b2b8fa9017fa27f47af0c6c3090c881a8a44327 3b2b8fa] by '''Pirulax''')&lt;br /&gt;
:* Added [[cancelEvent]] support for [[onElementModelChange]] and [[onClientElementModelChange]] ([https://github.com/multitheftauto/mtasa-blue/commit/7e7255280d3c42f7a36329f496d72c2b9efafe57 7e72552] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed calling of [[onClientColShapeLeave]], [[onClientElementColShapeLeave]], [[onColShapeLeave]] and [[onElementColShapeLeave]] even if the element was destroyed ([https://github.com/multitheftauto/mtasa-blue/commit/f6177e43408053bf8d01fd9b55c478d770945340 f6177e4] by '''Inder00''')&lt;br /&gt;
:* Fixed [[getCameraTarget]] returning the player instead of their vehicle, if available ([https://github.com/multitheftauto/mtasa-blue/commit/05b7ea2d9c936b727ac057d3307d40a434f40352 05b7ea2] by '''botder''')&lt;br /&gt;
:* Fixed several code warnings ([https://github.com/multitheftauto/mtasa-blue/commit/e43aa1ba1dfd5c27fec50924938ac14444ff045e e43aa1b] by '''botder''')&lt;br /&gt;
:* Fixed a crash in CLatentTransferManager ([https://github.com/multitheftauto/mtasa-blue/commit/6220faa318c076d1fbd79050edf6eb53aa43819d 6220faa] by '''botder''')&lt;br /&gt;
:* Implemented ped far sync interval ([https://github.com/multitheftauto/mtasa-blue/commit/3c49beb6d36067a884e534140e31cae3297d2c2d 3c49beb] by '''Zangomangu''')&lt;br /&gt;
:* Improved [[addEvent]] when sharing events over multiple resources ([https://github.com/multitheftauto/mtasa-blue/commit/f3811cb47633589ec5f1b0dd409045eb8c4133a0 f3811cb] by '''Pieter-Dewachter''')&lt;br /&gt;
:* Improved player sync when exiting vehicle ([https://github.com/multitheftauto/mtasa-blue/commit/e5026e7b71449042449ae3ce19af7e91a3166cdc e5026e7] by '''Zangomangu''')&lt;br /&gt;
:* Removed leftover Discord integration ([https://github.com/multitheftauto/mtasa-blue/commit/9708440462cd5ee815769bf5dfbdbe90d704cd26 9708440] by '''Lpsd''')&lt;br /&gt;
:* Removed protocol error 14 ([https://github.com/multitheftauto/mtasa-blue/commit/828ec464d3c761143af749720fe94f9e17712ccb 828ec46] by '''botder''')&lt;br /&gt;
:* Updated source translations&lt;br /&gt;
&lt;br /&gt;
=== Client ===&lt;br /&gt;
:* '''[Breaking change]''' Error out when creating a browser with size smaller than 1x1 ([https://github.com/multitheftauto/mtasa-blue/commit/a26417f2f4f313f23cf96add09c75fd8d0256b6d a26417f] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Removed ''mtalocal://'' URL scheme and error out on bad usage ([https://github.com/multitheftauto/mtasa-blue/commit/c4c01e29d29d214e51c7d689d8753e37e31c5e27 c4c01e2] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Fixed incorrect Bloodring Banger enter/exit animation ([https://github.com/multitheftauto/mtasa-blue/commit/2c6058d3772ef8dae77df6ad0b2421a86abbe746 2c6058d] by '''lopezloo''')&lt;br /&gt;
:* '''[Deprecation]''' Changed [[getCameraShakeLevel]], [[setCameraShakeLevel]] to throw a warning on use, please upgrade to [[getCameraDrunkLevel]] and [[setCameraDrunkLevel]] instead ([https://github.com/multitheftauto/mtasa-blue/commit/2651903e6a03c78a0571089b142b175f11f41bab 2651903] by '''Unde-R''')&lt;br /&gt;
:* Added hook to change vehicle damage debris to the vehicle color ([https://github.com/multitheftauto/mtasa-blue/commit/952448d46c9ac6066dc9d51e26b9da41808077e9 952448d] by '''Merlin''')&lt;br /&gt;
:* Added missing chat_text_outline CVAR to [[getChatboxLayout]] function ([https://github.com/multitheftauto/mtasa-blue/commit/5cc419ca173301b03db15b0ae122fe970e96c2ef 5cc419c] by '''Pieter-Dewachter''')&lt;br /&gt;
:* Added missing getType method for [[camera]] element ([https://github.com/multitheftauto/mtasa-blue/commit/a89d975d7b959fe6c9b0af73ef6261cdb3763715 a89d975] by '''TheNormalnij''' and '''StrixG''')&lt;br /&gt;
:* Added missing model ids and names scraped from .ide files ([https://github.com/multitheftauto/mtasa-blue/commit/062dea31dc1a918d440bf7c87bd6957a7d9204ad 062dea3] by '''Merlin''')&lt;br /&gt;
:* Added new world special property ''coronaztest'' ([https://github.com/multitheftauto/mtasa-blue/commit/093ecf47422f535053f2f4b321bc32ee1c63befd 093ecf4] by '''gta191977649''')&lt;br /&gt;
:* Added pthread and x64 files to the uninstall process ([https://github.com/multitheftauto/mtasa-blue/commit/6ae2ff14e966f7792de3b995d7c8e9655cd5bc75 6ae2ff1] by '''patrikjuvonen''')&lt;br /&gt;
:* Added ability to enable/disable custom weapons collisions ([https://github.com/multitheftauto/mtasa-blue/commit/e27d97dbc79e7cadc1740211b4fe2e746970d8b5 e27d97d] by '''lopezloo''')&lt;br /&gt;
:* Added dynamic ped shadows ([https://github.com/multitheftauto/mtasa-blue/commit/74c359bcaa62fe6a6e8aaa281d247f9ee53778cc 74c359b] and [https://github.com/multitheftauto/mtasa-blue/commit/136e9cf449d4370e5f30090d5adb7783814e02e0 136e9cf] by '''lopezloo''')&lt;br /&gt;
:* Added new default GUI skin (''Default 2023'') ([https://github.com/multitheftauto/mtasa-blue/commit/2d9e03324b07e355031ecb3263477477f1a91399 2d9e033] by '''Haxardous''' and [https://github.com/multitheftauto/mtasa-blue/commit/6ae0f657b1aec4c93d823fef3529412cc754631f 6ae0f65] by '''botder''')&lt;br /&gt;
:* Added new GUI skins ''GWEN Blue'' and ''GWEN Orange'' ([https://github.com/multitheftauto/mtasa-blue/commit/88a26fe4f35739d8b39ec14361b2ec97bae4b250 88a26fe] by '''Haxardous''')&lt;br /&gt;
:* Added missing files to data checks ([https://github.com/multitheftauto/mtasa-blue/commit/8531840ac690ff6534fabe6947b565c0fc59a418 8531840] by '''Dutchman101''')&lt;br /&gt;
:* Added ''resource.ip2c'' object to [[Access Control List|acl.xml]] ''RPC'' group ([https://github.com/multitheftauto/mtasa-blue/commit/960a6614c6962ec5a991076a05e7dd59bc87b0d7 960a661] by '''Fernando-A-Rocha''')&lt;br /&gt;
:* Added missing GTA special skins (3, 4, 5, 6, 8, 42, 65, 86, 119, 273, 289) ([https://github.com/multitheftauto/mtasa-blue/commit/b10b2bfc4b73493f7143542a7158b00384d4a1a9 b10b2bf] by '''Allerek''')&lt;br /&gt;
:* Added ability to get debug setting ''(SettingDebugMode)'' in [[dxGetStatus]] ([https://github.com/multitheftauto/mtasa-blue/commit/e628e402a8d9817d5a20bbcb4bc6105e99f67609 e628e40] by '''vyn666''')&lt;br /&gt;
:* Added ability to restream LOD models in [[engineRestreamWorld]] using new parameter ''includeLODs'' ([https://github.com/multitheftauto/mtasa-blue/commit/39f03949edbf33f9b7c10c1e14ede178a734c515 39f0394] by '''TFP-dev''')&lt;br /&gt;
:* Avoid hierarchy in [[engineRequestModel]] ([https://github.com/multitheftauto/mtasa-blue/commit/8e94ec19f8f71ceb0b8eb09e9a7bbc7b33b1cd36 8e94ec1] and [https://github.com/multitheftauto/mtasa-blue/pull/2440/commits/85203a6222dfa989b8877defb0abb8a47891a59e 85203a6] by '''TheNormalnij''' and '''Lpsd''')&lt;br /&gt;
:* Allow allocation of ''timed-object'' models using [[engineRequestModel]] ([https://github.com/multitheftauto/mtasa-blue/commit/f0a2424dd411f5eb454b554addf1eb217090f55b f0a2424] by '''TheNormalnij''')&lt;br /&gt;
:* Changed ''Enter a domain...'' text from web settings into a placeholder ([https://github.com/multitheftauto/mtasa-blue/commit/dc8241903184cf889502925b78c4d48d3413f0f4 dc82419] by '''patrikjuvonen''')&lt;br /&gt;
:* Changed GUI ''relative'' argument to be ''false'' by default ([https://github.com/multitheftauto/mtasa-blue/commit/9b022b632ddcb3989311332b0c9cf41356d54f55 9b022b6] by '''ghostkc12''')&lt;br /&gt;
:* Changed [[setVehiclesLODDistance]] and [[setPedsLODDistance]] to be able to override client setting ([https://github.com/multitheftauto/mtasa-blue/commit/a44db243df08cd729c850652e44994de1ceedcb1 a44db24] by '''samr46''')&lt;br /&gt;
:* Changed max ''fpslimit'' to 32767 ([https://github.com/multitheftauto/mtasa-blue/commit/50d80403182b1ac377502e08e29ec6ef51214c78 50d8040] by '''Merlin''')&lt;br /&gt;
:* Changed default vector wrapping from clamp to wrap ([https://github.com/multitheftauto/mtasa-blue/commit/0dcdac3946adb3e318fe92c6f86ebf024cdca045 0dcdac3] by '''Lpsd''')&lt;br /&gt;
:* Changed to proxy dll method for loading core.dll into GTA process ([https://github.com/multitheftauto/mtasa-blue/commit/ffd2a4bad56d90b52deab8b55b9cbee65623228b ffd2a4b], [https://github.com/multitheftauto/mtasa-blue/commit/c78d7255861dd18ed9e6ecdf94c02d21e5cda932 c78d725], [https://github.com/multitheftauto/mtasa-blue/commit/80e4078d80504b81c9103f4c8b5c84ff4a40ef7a 80e4078] and [https://github.com/multitheftauto/mtasa-blue/commit/336503042c5d60b53d1e10cd420410bbdd057b71 3365030] by '''botder''' and '''ccw''')&lt;br /&gt;
:* Check custom ped models before replacement ([https://github.com/multitheftauto/mtasa-blue/commit/d999e3e97770a11f4df25cd96c8bbe360c1fd4d9 d999e3e] by '''botder''')&lt;br /&gt;
:* Cleaned up and refactored server code ([https://github.com/multitheftauto/mtasa-blue/commit/693976b7131a87df71d81256a80cc48b22ab7bcf 693976b] and [https://github.com/multitheftauto/mtasa-blue/commit/cd1d2088a92b685b3b6294acb388fc1154ddbee4 cd1d208] by '''botder''')&lt;br /&gt;
:* Cleaned up ''CClientVehicle.cpp'' file ([https://github.com/multitheftauto/mtasa-blue/commit/8b806be300c94bd15f1fa7575322bf31caf5234e 8b806be] by '''botder''')&lt;br /&gt;
:* Cleaned up game_sa project ([https://github.com/multitheftauto/mtasa-blue/commit/76b21f7ed5b23f7d734eae20d089bb50336f8518 76b21f7], [https://github.com/multitheftauto/mtasa-blue/commit/e0abb3087a63e79b4273f8185920d00472b1354a e0abb30], [https://github.com/multitheftauto/mtasa-blue/commit/889b6c8ea719cd1a9152ffee9a382a50ee960c51 889b6c8], [https://github.com/multitheftauto/mtasa-blue/commit/90bcdb487ebd9949173186f78de7d2b22b588f96 90bcdb4], [https://github.com/multitheftauto/mtasa-blue/commit/d7082ed1109094e89524cdf4e7d63ad2c2d6c65b d7082ed], [https://github.com/multitheftauto/mtasa-blue/commit/c9c97f1ad4887098b12efd78587b7ec6bed86971 c9c97f1], [https://github.com/multitheftauto/mtasa-blue/commit/3f5b8741b1faae4682942499355ec9a92fcd81a1 3f5b874], [https://github.com/multitheftauto/mtasa-blue/commit/d085fb989e86be9668cd3e9f3f4426eefe55df6d d085fb9], [https://github.com/multitheftauto/mtasa-blue/commit/5e781d51beb923c6f8e3e9f3d904bba3c2d7225e 5e781d5], [https://github.com/multitheftauto/mtasa-blue/commit/4dff64f1803af86a6c9666f0e972136a6d8c4948 4dff64f] by '''Merlin''')&lt;br /&gt;
:* Clean up file paths better ([https://github.com/multitheftauto/mtasa-blue/commit/2fb2b35b6aff26f1b2f104a56c4dab04fb5a8366 2fb2b35] by '''patrikjuvonen''')&lt;br /&gt;
:* Clear client script memory after load ([https://github.com/multitheftauto/mtasa-blue/commit/ce50b9ee6c9112db0358e3ddba354021ca084588 ce50b9e] by '''Pirulax''' and [https://github.com/multitheftauto/mtasa-blue/commit/cece630440c577f747e9ee890fd1563a542269e7 cece630] by '''botder''')&lt;br /&gt;
:* Decreased joystick saturation minimum from 51 to 0 ([https://github.com/multitheftauto/mtasa-blue/commit/4fcf3eb4c8db02b0ebefd580646ff6618c13e127 4fcf3eb] by '''patrikjuvonen''')&lt;br /&gt;
:* Detect graphics libraries in MTA directory ([https://github.com/multitheftauto/mtasa-blue/commit/a0645accecc1a6f1288671c988fff79f663e3bde a0645ac] by '''botder''')&lt;br /&gt;
:* Disabled camera collisions for detached vehicle parts and projectiles ([https://github.com/multitheftauto/mtasa-blue/commit/1c00ef9b13dae5b8b23abcb94b236790252ecd42 1c00ef9] by '''lopezloo''')&lt;br /&gt;
:* Disabled system context menu ([https://github.com/multitheftauto/mtasa-blue/commit/34d61b53c03d974027f3b145ec6090dcf7e9c2b0 34d61b5] by '''lopezloo''')&lt;br /&gt;
:* Ensure files are within bounds ([https://github.com/multitheftauto/mtasa-blue/commit/07d0cf77e990e2b25a4f2c99fd110645a3db225a 07d0cf7] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed access violation in [[getVehicleWheelFrictionState]] for vehicles not streamed in ([https://github.com/multitheftauto/mtasa-blue/commit/dde0e59055b5092cac5f16dd8bb06f1ff91ddeed dde0e59] by '''botder''')&lt;br /&gt;
:* Fixed a small memory leak for [[engineRequestModel]] ([https://github.com/multitheftauto/mtasa-blue/commit/b2a625b100ff037908b002b586ca81692c24b2ae b2a625b] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed broken doors and damage sync for custom vehicles ([https://github.com/multitheftauto/mtasa-blue/commit/51d3288f06b62561837d9e6d5470b1476cbe6c30 51d3288] by '''BCG2000''')&lt;br /&gt;
:* Fixed camera to autofocus on new car on [[warpPedIntoVehicle]] ([https://github.com/multitheftauto/mtasa-blue/commit/607b57d36b72db62e976ef04c7bfa1d35f39da9a 607b57d] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed chatbox when using ''inputBlocked'' argument ([https://github.com/multitheftauto/mtasa-blue/commit/bd62e563e082533e3c35df877cf99ccdd54f5be8 bd62e56] by '''Pieter-Dewachter''')&lt;br /&gt;
:* Fixed crash when pickup has invalid custom model ([https://github.com/multitheftauto/mtasa-blue/commit/1b17869cb58277d596d2865c2a2f777963fe18be 1b17869] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed crash when removing key binds while processing a key stroke ([https://github.com/multitheftauto/mtasa-blue/commit/90f757d26f2c49b02cc5f67e7146c2c7db0dcbe0 90f757d] by '''botder''')&lt;br /&gt;
:* Fixed [[getVehicleType]] and [[getVehicleMaxPassengers]] not returning specific values and players cannot enter as passengers on vehicles added with [[engineRequestModel]] ([https://github.com/multitheftauto/mtasa-blue/commit/141438fe462795c136f92b4fca9901e03dcec3f2 141438f] by '''BCG2000''')&lt;br /&gt;
:* Fixed interiors lacking radio ([https://github.com/multitheftauto/mtasa-blue/commit/e573959da339f9c19eef9f4b8a54e2da50b402ac e573959] by '''lopezloo''')&lt;br /&gt;
:* Fixed key binds breaking on resource stop ([https://github.com/multitheftauto/mtasa-blue/commit/8c78fbaca9b837f11fe846792e4a9bf2ca43a8c9 8c78fba] and [https://github.com/multitheftauto/mtasa-blue/commit/280131fd07af4863cb40bad3ae32e1c0f02135e9 280131f] by '''botder''')&lt;br /&gt;
:* Fixed mirrored position of ''light_front_second'' vehicle dummy ([https://github.com/multitheftauto/mtasa-blue/commit/32aeb0e67915744402fdac0619b8807db6352957 32aeb0e] by '''botder''')&lt;br /&gt;
:* Fixed [[setElementModel]] forcing an element to be streamed in no matter the distance from [[localPlayer]] ([https://github.com/multitheftauto/mtasa-blue/commit/467df061b5fadcee81bb7c0c4fb6cf23e741b3eb 467df06] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed sync of damaged light states and wheel states ([https://github.com/multitheftauto/mtasa-blue/commit/fe48d0968042b0bc5e5375c0c2f8f9ee2ed951ba fe48d09] by '''Addlibs''')&lt;br /&gt;
:* Fixed unused binds descriptions are always in English ([https://github.com/multitheftauto/mtasa-blue/commit/32962a6a90178dbf4638df83c0985db1826ed8b1 32962a6] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed single player HUD setting affecting MTA ([https://github.com/multitheftauto/mtasa-blue/commit/7ead65dcf207befd0eafadbaff3ac5aae62b0a08 7ead65d] by '''Merlin''')&lt;br /&gt;
:* Fixed [[isElementInWater]] returning false if ped or player is in vehicle in water ([https://github.com/multitheftauto/mtasa-blue/commit/29f303860e5404aa98a2a69ca5a3b6e80eebd2df 29f3038] by '''Santi''')&lt;br /&gt;
:* Fixed refresh rate limited to 60Hz in full screen mode for some setups ([https://github.com/multitheftauto/mtasa-blue/commit/5207a314272fda9b54443edd30efb11e6e846dd6 5207a31] and [https://github.com/multitheftauto/mtasa-blue/commit/5c77d974c10fc5096b0ecf600343f7c975e8a2c2 5c77d97] by '''samr46''')&lt;br /&gt;
:* Fixed water sound level outside of game boundaries on [[setWaterLevel]] ([https://github.com/multitheftauto/mtasa-blue/commit/aed055497e2662119ba178b878c74c28aa5e018f aed0554] by '''samr46''')&lt;br /&gt;
:* Fixed muzzle flash not showing for the last bullet in magazine ([https://github.com/multitheftauto/mtasa-blue/commit/80b17d96097c6977915c91f31ae2161a1bce1fdc 80b17d9] by '''Merlin''')&lt;br /&gt;
:* Fixed various high FPS related issues&lt;br /&gt;
::* Fixed health bar blinking faster on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/df4d35d2a14cba7fc5549b13cc6cf221d2e7132a df4d35d] by '''Merlin''')&lt;br /&gt;
::* Fixed walking while aiming on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/e64d311f62de2bd848c07b59f4f53a30826c1bed e64d311] by '''Merlin''')&lt;br /&gt;
::* Fixed aircraft and boat lights blinking faster on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/f597c46a45dea26742a680b5a2ab56d6dcb02368 f597c46] by '''Merlin''')&lt;br /&gt;
::* Fixed breakable objects decaying faster on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/7c26dddcc4ad68dbd79509494bb560fc3f784766 7c26ddd] by '''Merlin''')&lt;br /&gt;
::* Fixed rocket launcher spawning too many effects on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/167addab6694e76d177989fb4caf3c5bf252dfc7 167adda] by '''Merlin''')&lt;br /&gt;
::* Fixed wheels spawning too many surface effects on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/d2b2c45789747d8412a207e6c7b3094e8556ac73 d2b2c45] by '''Merlin''')&lt;br /&gt;
::* Fixed stuntplane and cropduster spawning too many smoke trail particles on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/e9cc0a3d515165072863a6b1d3b1652814c24924 e9cc0a3] by '''Merlin''')&lt;br /&gt;
::* Fixed water cannon decaying much faster on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/32c04f0b25c959007b96d42cdbfefbadca22ca64 32c04f0] by '''Merlin''')&lt;br /&gt;
::* Fixed [[setCameraShakeLevel]] shaking too fast on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/893858ddc5a768194b435da40230fca8ef7da752 893858d] by '''Merlin''')&lt;br /&gt;
::* Fixed [[setPedHeadless]] spawning too many particles on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/2e1042fd67b4438cf2f8e207af241ad98a4e1a88 2e1042f] by '''Merlin''')&lt;br /&gt;
::* Fixed more high FPS issues ([https://github.com/multitheftauto/mtasa-blue/commit/bcc56b5ee6df43697069f38977d09eae23f7e62c bcc56b5] by '''Merlin''')&lt;br /&gt;
:::* Fixed money animation playing faster on high FPS&lt;br /&gt;
:::* Fixed walking through water spawn too many particles on high FPS&lt;br /&gt;
:::* Fixed spawning too many weather particles on high FPS&lt;br /&gt;
:::* Fixed airplane spawning too many damage particles on high FPS&lt;br /&gt;
:::* Fixed vehicles spawning too much sand and water particles on high FPS&lt;br /&gt;
:::* Fixed boats spawning too many particles on high FPS&lt;br /&gt;
:::* Fixed spawning too many rain particles on vehicles on high FPS&lt;br /&gt;
:::* Fixed airplanes spawning too many particles when damaged on high FPS&lt;br /&gt;
:::* Fixed vehicles spawning too many exhaust particles on high FPS&lt;br /&gt;
:::* Fixed spawning too many particles while swimming on high FPS&lt;br /&gt;
::* Fixed helicopters taking off faster on high FPS ([https://github.com/multitheftauto/mtasa-blue/commit/40c178ed787b50ef3fc1d878d794b6b885bc00b9 40c178e] by '''Merlin''')&lt;br /&gt;
::* Fixed more high FPS issues ([https://github.com/multitheftauto/mtasa-blue/commit/7c8a1ab93d091b06262749b482d6c8142ca69eea 7c8a1ab] by '''Merlin''')&lt;br /&gt;
:::* Fixed fog moving too fast on high FPS&lt;br /&gt;
:::* Fixed glass shards spinning and expanding too fast on high FPS&lt;br /&gt;
:::* Fixed boats being slow on high FPS&lt;br /&gt;
:* Fixed camera drunk/shake level not resetting on server disconnect ([https://github.com/multitheftauto/mtasa-blue/commit/3f71f1b64f0359ea2309224d46e1aa65d2d7c3c3 3f71f1b] by '''Lpsd''')&lt;br /&gt;
:* Fixed grass not rendering ([https://github.com/multitheftauto/mtasa-blue/commit/52798a2d923bdb4e29f6fb9c63178e30e40479b6 52798a2] by '''TFP-dev''')&lt;br /&gt;
:* Fixed server browser search input disappearing at times ([https://github.com/multitheftauto/mtasa-blue/commit/7c750151a1f5ee11330fec23664359f4d2c535e9 7c75015] by '''lopezloo''')&lt;br /&gt;
:* Fixed interior radio crash ([https://github.com/multitheftauto/mtasa-blue/commit/d00336070f6f726b66445213f43b50e605aefcd4 d003360] by '''TheNormalnij''' and [https://github.com/multitheftauto/mtasa-blue/commit/7eb36134dab77b2edf28d6efe6ef9c82c1e9d3f0 7eb3613] by '''Lpsd''')&lt;br /&gt;
:* Fixed installer overwriting MTA shortcuts ([https://github.com/multitheftauto/mtasa-blue/commit/d55710491940a5023545208ce14c087a78aa37e4 d557104] by '''se16n''')&lt;br /&gt;
:* Fixed a typo in fakelag command text ([https://github.com/multitheftauto/mtasa-blue/commit/39e726857ec7b9a146323d63200d3e1c8031478d 39e7268] by '''JessePinkman''')&lt;br /&gt;
:* Fixed zoom_in/out binds being inverted &amp;amp; fix ability to control zoom by weapon_next/previous binds ([https://github.com/multitheftauto/mtasa-blue/commit/4a4bcbc413ad33b56acd7284c81361187c7df8d6 4a4bcbc] by '''darkdrifter''')&lt;br /&gt;
:* Fixed a game crash if FxEmitterBP_c::LoadTextures failed to load main texture ([https://github.com/multitheftauto/mtasa-blue/commit/5a598d70161a85a961de462f28279d38df70aae3 5a598d7] and [https://github.com/multitheftauto/mtasa-blue/commit/9667cbea40a2b834107c781411a2c9658fec5073 9667cbe] by '''botder''')&lt;br /&gt;
:* Fixed a crash in FxPrim_c::Enable ([https://github.com/multitheftauto/mtasa-blue/commit/05c639c05faf2b01ab001adaff33b503ce2d36b7 05c639c] by '''botder''')&lt;br /&gt;
:* Fixed model replacement for unstreamed models ([https://github.com/multitheftauto/mtasa-blue/commit/c667e2ad05c97511e7b5cf63d223f762eea41e10 c667e2a] and [https://github.com/multitheftauto/mtasa-blue/commit/7d8718cde378787818637936a9873dfab689638c 7d8718c] by '''botder''')&lt;br /&gt;
:* Fixed desktop shortcut creation in installer script ([https://github.com/multitheftauto/mtasa-blue/commit/1c043468b52348589d0ae379f914e490c0630cdf 1c04346] and [https://github.com/multitheftauto/mtasa-blue/commit/3f6dac669b5aed51a695cc59e13e3b552e0340e3 3f6dac6] by '''botder''')&lt;br /&gt;
:* Fixed broken client Windows GDF file and updated its hardcoded version and URLs ([https://github.com/multitheftauto/mtasa-blue/commit/d54afd76ed67ba80cfb2fb221229ca01a4f42508 d54afd7] and [https://github.com/multitheftauto/mtasa-blue/commit/579775d79b166c82c1c2a3c1b020eb2febfff202 579775d] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed a client crash caused by buffer overflow issues in ''GetNameAndDamage'' ([https://github.com/multitheftauto/mtasa-blue/commit/1129399a129f44d6c729064603d5e84578290411 1129399] and [https://github.com/multitheftauto/mtasa-blue/commit/1fc700f5030b21d1c4f6ef65d76a3a3c9d987fd4 1fc700f] by '''Pirulax''' and [https://github.com/multitheftauto/mtasa-blue/commit/29dfe4bd095170a131b27f9687262995ad301489 29dfe4b] by '''Pieter-Dewachter''')&lt;br /&gt;
:* Fixed a client crash caused by GOOGLE_API_KEY, GOOGLE_DEFAULT_CLIENT_ID and GOOGLE_DEFAULT_CLIENT_SECRET environment variables ([https://github.com/multitheftauto/mtasa-blue/commit/9f8e6cd2c588ff4516572707cffe943175937ae5 9f8e6cd] by '''TEDERIs''')&lt;br /&gt;
:* Fixed a client crash on disconnect after using [[engineSetModelPhysicalPropertiesGroup]] on custom models ([https://github.com/multitheftauto/mtasa-blue/commit/047f709a2b71e08cb8d1362c0387882b6db886dd 047f709] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed launching MTA with ARM emulation ([https://github.com/multitheftauto/mtasa-blue/commit/9fa2d19ed77987df89b02ea39cc742dcbcc08cca 9fa2d19] by '''botder''')&lt;br /&gt;
:* Fixed a client crash after resetting bind ([https://github.com/multitheftauto/mtasa-blue/commit/0454e3c0420c57ef22b241738d7f7a1463223cb5 0454e3c] by '''Dutchman101''')&lt;br /&gt;
:* Fixed CEF crashing on Wine ([https://github.com/multitheftauto/mtasa-blue/commit/ca04b07cd87dd192e60e8df236f314e86b8b108f ca04b07] by '''vahook''')&lt;br /&gt;
:* Fixed download progress calculation ([https://github.com/multitheftauto/mtasa-blue/commit/74c2a5d1295af626a0fa77252de5fbd5123c5af9 74c2a5d] by '''Lpsd''')&lt;br /&gt;
:* Fixed random foliage on replaced collisions ([https://github.com/multitheftauto/mtasa-blue/commit/0a1cbb88b93727416b88b845546d36295f2651e2 0a1cbb8] by '''TFP-dev''')&lt;br /&gt;
:* Fixed get/set vehicle model wheel size memory leak ([https://github.com/multitheftauto/mtasa-blue/commit/de3dc70e406b08b7bccf92294e178ebbfc9abda9 de3dc70] by '''TheNormalnij''')&lt;br /&gt;
:* Fixed camera tilt not working when camera is fading ([https://github.com/multitheftauto/mtasa-blue/commit/bda150604931e334968349acc1c61db0fd05f2c1 bda1506] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed visit news button text overflow with localized string ([https://github.com/multitheftauto/mtasa-blue/commit/1e1d3d5ba39bf2aeabaec692cf57dd30e362cbe9 1e1d3d5] by '''theSarrum''')&lt;br /&gt;
:* Fixed various issues with the uninstaller, it now does a better job at cleaning up leftover files and registry entries (multiple commits by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed 'Offline' checkbox label autosizing in the server browser ([https://github.com/multitheftauto/mtasa-blue/commit/0291f82bd104a89d7d9d2ce3d54a57e5ea8e5d1d 0291f82] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed shortcuts created by the installer ([https://github.com/multitheftauto/mtasa-blue/commit/741103df4d5ab6f068415ebbd56f1511f9806907 741103d] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed [[dxSetShaderTransform]] affecting other shaders ([https://github.com/multitheftauto/mtasa-blue/commit/2bb50548b3a18e9998c721aeb670980dc220d727 2bb5054] by '''tederis''')&lt;br /&gt;
:* Fixed crash when streamed in object with custom model is deleted (on disconnect) ([https://github.com/multitheftauto/mtasa-blue/commit/5df6d1f9e3c9bf5568150f206062ae4f276ac36b 5df6d1f] by '''botder''')&lt;br /&gt;
:* Fixed a crash related to when ped weapon slot is being set ([https://github.com/multitheftauto/mtasa-blue/commit/87644f5fd4340a6f381e4f08342a0d2b39c626b2 87644f5] by '''botder''')&lt;br /&gt;
:* Fixed a crash related to providing an empty string in [[executeBrowserJavascript]] ([https://github.com/multitheftauto/mtasa-blue/commit/2cd578402eb2197154abded0cab29a4b450a7b27 2cd5784] by '''CrosRoad95''')&lt;br /&gt;
:* Fixed various cursor alpha issues ([https://github.com/multitheftauto/mtasa-blue/commit/87e3dce37ca2fde416be90df9693e712985047e0 87e3dce] by '''Lpsd''')&lt;br /&gt;
:* Group windows under a single taskbar button on Windows ([https://github.com/multitheftauto/mtasa-blue/commit/56fbfc3b69400a86dd682dfbb86ee02bc2e3f3ca 56fbfc3] by '''botder''')&lt;br /&gt;
:* Implemented ''delete'' control character handling in chatbox ([https://github.com/multitheftauto/mtasa-blue/commit/0648e9c56e2e607e399ee3305751d5873a68614e 0648e9c] by '''patrikjuvonen''')&lt;br /&gt;
:* Improved [[setSoundEffectParameter]] error messages ([https://github.com/multitheftauto/mtasa-blue/commit/cf5d16630f8e0ffa560e1abd1a83b03892d2274e cf5d166] by '''Pirulax''' and '''botder''')&lt;br /&gt;
:* Improved CEF DX utilization &amp;amp; thread-safety fixes ([https://github.com/multitheftauto/mtasa-blue/commit/8863f603fb9cfa50ffc3822e378b5af6b1090cf9 8863f60] by '''TEDERIs''')&lt;br /&gt;
:* Improved SVG stability ([https://github.com/multitheftauto/mtasa-blue/commit/403df24fce070b630ac2f474933daaab62efbc44 403df24] by '''TEDERIs''')&lt;br /&gt;
:* Improved unescape safety ([https://github.com/multitheftauto/mtasa-blue/commit/ed5e6c4fc06a9ecef21897dbcbe323fa0550e976 ed5e6c4] by '''Jusonex''')&lt;br /&gt;
:* Improved http error safety ([https://github.com/multitheftauto/mtasa-blue/commit/88b623ec72da363f83544f540287514fcf8e3bbe 88b623e] by '''Jusonex''')&lt;br /&gt;
:* Improved camera weapon picture quality ([https://github.com/multitheftauto/mtasa-blue/commit/2acf0cda21c3d4c489c5b1f888a48dc2d647994e 2acf0cd] by '''lopezloo''')&lt;br /&gt;
:* Massively increase quality of splash image ([https://github.com/multitheftauto/mtasa-blue/commit/ab2a1b974fc29f9ae8fc009b633283a77a3c4825 ab2a1b9] and [https://github.com/multitheftauto/mtasa-blue/commit/4a82776bfccd8ecd91caf9972bd686dfd0ff05a7 4a82776] by '''botder''' and [https://github.com/multitheftauto/mtasa-blue/commit/11c3116cc29197223b796d7e557907c2fa958c74 11c3116] by '''Dutchman101''')&lt;br /&gt;
:* Refactored key binds ([https://github.com/multitheftauto/mtasa-blue/commit/2878168ba2749dfedc8fcc7c5c80637891c7277c 2878168], [https://github.com/multitheftauto/mtasa-blue/commit/5c0afad233bd5ae1a8835356f7de62db8be066fa 5c0afad], [https://github.com/multitheftauto/mtasa-blue/commit/6e8755178780a45c729f8f2d48514f360c63754c 6e87551] and [https://github.com/multitheftauto/mtasa-blue/commit/73e4e420b6948ae1bfda0c80d643e43550da2745 73e4e42] by '''botder''')&lt;br /&gt;
:* Removed async tasks in SVG and updated callback usage ([https://github.com/multitheftauto/mtasa-blue/commit/31579051cc046bc5cb55c59fc4e9e70ec1bdce34 3157905] by '''Lpsd''')&lt;br /&gt;
:* Removed now unnecessary strafe workaround ([https://github.com/multitheftauto/mtasa-blue/commit/a331072759e69f36062ed1c9b848f6df6f808c9a a331072] by '''Merlin''')&lt;br /&gt;
:* Removed dummy window from taskbar ([https://github.com/multitheftauto/mtasa-blue/commit/7dccdf47924299518ef33a57d8c0df9ee8de7405 7dccdf4] by '''lopezloo''')&lt;br /&gt;
:* Do not reset handling for custom models on a non-local vehicle ([https://github.com/multitheftauto/mtasa-blue/commit/3c3af040173b66e21bbc587fbca48548866bb2b7 3c3af04] by '''Inder00''')&lt;br /&gt;
:* Show dialog for dxgi.dll in GTA install directory ([https://github.com/multitheftauto/mtasa-blue/commit/fb26d72b66a2223237c3f022dfad39230232dc3f fb26d72] by '''botder''')&lt;br /&gt;
:* Split grenade collision from weapon collision ([https://github.com/multitheftauto/mtasa-blue/commit/0e2b203aa1d12f15931eb7d9522a5edf987f45ff 0e2b203] by '''Merlin''')&lt;br /&gt;
:* Internationalized news window title ([https://github.com/multitheftauto/mtasa-blue/commit/a446f02701b6cd8325c13ab9e71b1e651bd3d827 a446f02] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated main menu images ([https://github.com/multitheftauto/mtasa-blue/commit/d38c107372a05d73f5efd8813575c3ac4f740d60 d38c107] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated CGUI images ([https://github.com/multitheftauto/mtasa-blue/commit/c1a958c7fc6f7e9f5e1937fb59bbd1fa341da86e c1a958c] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated en_US images, added ''latest_news.png'' ([https://github.com/multitheftauto/mtasa-blue/commit/42693d806b132e4299173059f423c61fa13f5c21 42693d8] and [https://github.com/multitheftauto/mtasa-blue/commit/cd0cce740cb63b2b2c6c79a7bd4ebc3fad6ad9aa cd0cce7] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated main menu logo ([https://github.com/multitheftauto/mtasa-blue/commit/4b9a3a4a7717db059277a5fdb9f2653bb90b7496 4b9a3a4] and [https://github.com/multitheftauto/mtasa-blue/commit/aa1e1d4336068438b2436efbc71b7a9231199e45 aa1e1d4] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated translations ([https://github.com/multitheftauto/mtasa-blue/commit/73c6457b6ccb845c640cb5da738a4d10bc84901d 73c6457] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated various non-https links to https ([https://github.com/multitheftauto/mtasa-blue/commit/2722466f0f837151aeae4ab4acba3bff3be19257 2722466] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated credits ([https://github.com/multitheftauto/mtasa-blue/commit/894c0f7e2538188fb5d4d7c71fd548ee3a9d92f1 894c0f7] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed inability to warp client-side ped to client-side trailer ([https://github.com/multitheftauto/mtasa-blue/commit/4e7fd058f0b8600660d60d8a0d69abdadef98032 4e7fd05] by '''Tracer''')&lt;br /&gt;
&lt;br /&gt;
=== Server ===&lt;br /&gt;
:* '''[Breaking change]''' Changed [[callRemote]] to return 0 as ''errno'' upon successful request to be consistent with [[fetchRemote]] ([https://github.com/multitheftauto/mtasa-blue/commit/507de5fc63fe207bb4f9d77706f7c54e1ffb3ba1 507de5f] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Fixed flamethrower ammo to not be multiplied by 10 ([https://github.com/multitheftauto/mtasa-blue/commit/35ea5e48fb7de6ce729961cfd24b68f3a2fd1c78 35ea5e4] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Fixed [[createBlip]] to sync blip size and color regardless of icon ID ([https://github.com/multitheftauto/mtasa-blue/commit/049e9762777828a416d9331d671250a267dc4fc5 049e976] by '''patrikjuvonen''')&lt;br /&gt;
:* '''[Breaking change]''' Server-side objects that were unbreakable by default, but would have been breakable client-side by default, are now breakable by default also server-side. Also added server-side support for [[isObjectBreakable]], [[setObjectBreakable]], and the ''breakable'' map object attribute ([https://github.com/multitheftauto/mtasa-blue/compare/d701fbe15b4cece7a6cd6242c3819e68deb7aae2...57d5be3d3e323394a8926a79f3da9cd3814e44a2 commit])&lt;br /&gt;
:* '''[Deprecation]''' Changed [[givePedJetPack]], [[removePedJetPack]] and [[doesPedHaveJetPack]] to throw a warning on use, please upgrade to [[setPedWearingJetpack]] and [[isPedWearingJetpack]] instead ([https://github.com/multitheftauto/mtasa-blue/commit/804c66b88e0324eb6b2d9c83fdf7606ba05566c6 804c66b] by '''qaisjp''')&lt;br /&gt;
:* Added a space between quit reasons when redirecting ([https://github.com/multitheftauto/mtasa-blue/commit/84e6e901754b80603a938d97e0b350d2c35f1f54 84e6e90] by '''patrikjuvonen''')&lt;br /&gt;
:* Added ''persist'' parameter to [[setElementSyncer]] ([https://github.com/multitheftauto/mtasa-blue/commit/3485fd3ac770dd0e0a0be3c0258aad1784c1b700 3485fd3] by '''MegadreamsBE''')&lt;br /&gt;
:* Added limits to ehs form fields ([https://github.com/multitheftauto/mtasa-blue/commit/7642b05138f23cc35b5b5e01021dafa33506ff90 7642b05] by '''botder''' and '''patrikjuvonen''')&lt;br /&gt;
:* Added limits to acl object length ([https://github.com/multitheftauto/mtasa-blue/commit/c497e23fb818103764b6cb6d457d201de6e82afa c497e23] by '''patrikjuvonen''')&lt;br /&gt;
:* Consider only affected players for element data stats ([https://github.com/multitheftauto/mtasa-blue/commit/2b549e49c7a3456cb668debdf6b02db9a981281c 2b549e4] by '''TEDERIs''')&lt;br /&gt;
:* Fixed server executable name for x64 on Windows ([https://github.com/multitheftauto/mtasa-blue/commit/a11758c71cbbdd4eea9362aba255e324b374c20c a11758c] by '''botder''')&lt;br /&gt;
:* Fixed [[onPedDamage]] not working ([https://github.com/multitheftauto/mtasa-blue/commit/143102a38acdabba8d7837252fd8c95f704d4ef8 143102a] by '''xLive''')&lt;br /&gt;
:* Fixed kicking player while redirecting ([https://github.com/multitheftauto/mtasa-blue/commit/c56add86d36034b1f32c5ef010b28156c022246e c56add8] by '''TeteX1''')&lt;br /&gt;
:* Fixed [[banPlayer]] not kicking all players with the same IP address ([https://github.com/multitheftauto/mtasa-blue/commit/d073b61877fb106d2d681c09816ef034cdb6454f d073b61] by '''patrikjuvonen''')&lt;br /&gt;
:* Fixed a crash caused by latent events ([https://github.com/multitheftauto/mtasa-blue/commit/934967ffcf3840dd9f16450bd718e87e1919ce9d 934967f] by '''tederis''')&lt;br /&gt;
:* Fixed server console history not working right with utf ([https://github.com/multitheftauto/mtasa-blue/commit/1813cb4f92cbe68a2f04732e3e52407a78b304c8 1813cb4] by '''patrikjuvonen''')&lt;br /&gt;
:* Improved ehs authentication checking ([https://github.com/multitheftauto/mtasa-blue/commit/2a8470135b6b5a36ce159e6f62561cc333b2abe8 2a84701] by '''patrikjuvonen''')&lt;br /&gt;
:* The vehicle &amp;quot;Street Clean Trailer (611)&amp;quot; now uses the same default color from its truck &amp;quot;Utility Van (552)&amp;quot; instead of being always fully black ([https://github.com/multitheftauto/mtasa-blue/commit/6e5cd4a61338d8cb1851c9ad54d683b978aecc98 6e5cd4a] by '''Lord-Henry''')&lt;br /&gt;
:* Updated and fixed server launcher icon ([https://github.com/multitheftauto/mtasa-blue/commit/8729c9f0a6fb2d396cd057abd0b7815be318aa0f 8729c9f] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated default FPS limit to 74 in ''mtaserver.conf'' ([https://github.com/multitheftauto/mtasa-blue/commit/6c1f3184764aca0655b5b64fe88ca0a73b2b69c8 6c1f318] by '''Dutchman101''')&lt;br /&gt;
:* Use vector length method instead of manual distance calculation when using [[removeWorldModel]] server-side ([https://github.com/multitheftauto/mtasa-blue/commit/a3c83c8927c709ca1999f2664d791274c3a7b969 a3c83c8] by '''NanoBob''')&lt;br /&gt;
:* Fixed [[warpPedIntoVehicle]] causing a C++ runtime assertion failure ([https://github.com/multitheftauto/mtasa-blue/commit/eba619db22c515ad32e48052ee8c5d9d2c3303c8 eba619d] by '''Tracer''')&lt;br /&gt;
&lt;br /&gt;
=== More Technical Changes and Bug Fixes ===&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
:* Added null-pointer checks in CWorld::FindObjectsKindaCollidingSectorList ([https://github.com/multitheftauto/mtasa-blue/commit/8e8aa3ab41928bd01c09c231679e0ecbc9bf7c97 8e8aa3a] by '''Merlin''')&lt;br /&gt;
:* Added a weak crash fix for CPed::GetBonePosition ([https://github.com/multitheftauto/mtasa-blue/commit/3d1b87a7c11ef1cdde0c1475923f4a1b80b7f3fb 3d1b87a] by '''botder''')&lt;br /&gt;
:* Added null-pointer check for a few RpClump functions ([https://github.com/multitheftauto/mtasa-blue/commit/3e348d140618346c9dfadbbd752f450f5535a6cf 3e348d1] and [https://github.com/multitheftauto/mtasa-blue/commit/4582f8a81d5dee0713067a5f3ea71948264d077b 4582f8a] by '''botder''')&lt;br /&gt;
:* Added check for active resource in CLuaDefs::CanUseFunction ([https://github.com/multitheftauto/mtasa-blue/commit/4a94343ed44ff66c75d3c04ed2d45fae842054d5 4a94343] by '''Lpsd''')&lt;br /&gt;
:* Fixed a bug with ErrorPrintf for server-side modules ([https://github.com/multitheftauto/mtasa-blue/commit/29e11deb2db248856ab7992379ead5fc0966bcad 29e11de] by '''theSarrum''')&lt;br /&gt;
:* Various code clean ups and refactors&lt;br /&gt;
::* Refactored CBufferRef to use std::shared_ptr ([https://github.com/multitheftauto/mtasa-blue/commit/49fa84851caf21458809d955a8131edb61ff4086 49fa848] by '''Pirulax''')&lt;br /&gt;
::* Removed non-existent vendor from include ([https://github.com/multitheftauto/mtasa-blue/commit/9616ae131b1583682612b41a4f52fc35eb83db06 9616ae1] by '''patrikjuvonen''')&lt;br /&gt;
:* Got rid of ''std::function'' in ''AsyncTaskSched'' ([https://github.com/multitheftauto/mtasa-blue/commit/c372dc38ff76ca8ff33f853e4384ab4a9d657881 c372dc3] by '''Pirulax''')&lt;br /&gt;
:* Improved performance of CClientObjectManager::UpdateLimitInfo ([https://github.com/multitheftauto/mtasa-blue/commit/0160e1828127b0f183425074401d8bab6391dc9b 0160e18] by '''Merlin''')&lt;br /&gt;
:* Initialized ''lastSyncType'' variable in [[addElementDataSubscriber]] ([https://github.com/multitheftauto/mtasa-blue/commit/ca3b0b778e9695ce7da6391eda14429aa055d1f2 ca3b0b7] by '''botder''')&lt;br /&gt;
:* Removed CRefCountableST ([https://github.com/multitheftauto/mtasa-blue/commit/4482f133eff87396029ee1c1d71a02125fbb0834 4482f13] by '''Pirulax''')&lt;br /&gt;
:* Updated GitHub issue templates ([https://github.com/multitheftauto/mtasa-blue/commit/9b2dbbb8ad81edfc0d0837d43e2a9af57bfb8e8a 9b2dbbb], [https://github.com/multitheftauto/mtasa-blue/commit/70e59bb576dad330de243243791a1cb5bf441f91 70e59bb] and [https://github.com/multitheftauto/mtasa-blue/commit/07204d2a989ad882950bcb66d0bb8ef5293089d5 07204d2] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated launchers ([https://github.com/multitheftauto/mtasa-blue/commit/5b4ce8a741fefb09980c3f4ff998d79218c4aef4 5b4ce8a] by '''patrikjuvonen''', [https://github.com/multitheftauto/mtasa-blue/commit/368864b1bd61d5c7eabf14e13014dea7f01e57bd 368864b] and [https://github.com/multitheftauto/mtasa-blue/commit/11c3116cc29197223b796d7e557907c2fa958c74 11c3116] by '''Dutchman101''')&lt;br /&gt;
:* Upgraded l10n scripts to use python3 and automate pot file generation ([https://github.com/multitheftauto/mtasa-blue/commit/583f2b94c3d1039fab249843781fa42a8cea1782 583f2b9] by '''darkdreamingdan''' and '''patrikjuvonen''')&lt;br /&gt;
:* Upgraded to Visual Studio 2022 and v143 toolset ([https://github.com/multitheftauto/mtasa-blue/commit/3d94c21db1780c0f35148492ff6cc59dba3892bc 3d94c21], [https://github.com/multitheftauto/mtasa-blue/commit/bbd0c4244cc2d93809ed2d892c9110fa54e3d5e3 bbd0c42], [https://github.com/multitheftauto/mtasa-blue/commit/d3079d5b9f2b837a91d5f503df7f03f55c6a66fc d3079d5] and [https://github.com/multitheftauto/mtasa-blue/commit/5a7bb84fe5dab7a18415f07000ff22d4f77cc594 5a7bb84] by '''Dutchman101''' and [https://github.com/multitheftauto/mtasa-blue/commit/96e690ed8f04bf044d2d561b7ef5d4671a7691fc 96e690e], [https://github.com/multitheftauto/mtasa-blue/commit/d8cfdea9a6068481a0a31cf1e3e5c1520b03af68 d8cfdea] and [https://github.com/multitheftauto/mtasa-blue/commit/f2dda37aba06f1394c3495a5717365d37df449b4 f2dda37] by '''botder''')&lt;br /&gt;
:* Overhauled game launch logic (various commits by '''botder''')&lt;br /&gt;
:* Overhauled loader (various commits by '''botder''')&lt;br /&gt;
:* Overhauled updater (various commits by '''botder''')&lt;br /&gt;
:* Decoupled Windows 7, 8 and 8.1 into their own branch to support Windows 10+ CEF updates (by '''patrikjuvonen''')&lt;br /&gt;
:* Refactor BitStream to use std::string_view ([https://github.com/multitheftauto/mtasa-blue/commit/66ff543986f65db1e51235bef2647df1d6e397bc 66ff543] by '''Pirulax''')&lt;br /&gt;
:* Various Docker related improvements and tweaks by '''botder'''&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 23 Vendor Updates ==&lt;br /&gt;
=== Client ===&lt;br /&gt;
:* Updated BASS libraries (various commits, [https://github.com/multitheftauto/mtasa-blue/commit/c557f77a1330df432622fb9cd1921970f24a3699 c557f77] by '''Dutchman101''')&lt;br /&gt;
:* Updated CEF from Chromium 94.0.4606.61 (CEF 94.4.2+g6a963ca)&lt;br /&gt;
:** Windows 7, 8 and 8.1 only: to Chromium 109.0.5414.120 (CEF 109.1.18+gf1c41e4) (various commits by '''Dutchman101''', '''patrikjuvonen''' and '''Lpsd''')&lt;br /&gt;
:** Windows 10+: to Chromium 114.0.5735.110 (CEF 114.2.10+g398e3c3) ([https://github.com/multitheftauto/mtasa-blue/commit/28544e4881bf06b1a8966eacab8e9c073eb757e7 28544e4] by '''Dutchman101''')&lt;br /&gt;
:* Updated freetype from 2.10.4 to 2.13.0 ([https://github.com/multitheftauto/mtasa-blue/commit/bce4ae768ab4075fc08e2919787e58591899eee5 bce4ae7] and [https://github.com/multitheftauto/mtasa-blue/commit/68cc67513cac6ed99f71f2522e686c3750e384e7 68cc675] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated libspeex from 1.2rc2 to 1.2 and libspeexdsp from 1.2rc2 to 1.2rc3 ([https://github.com/multitheftauto/mtasa-blue/commit/deef8dcb534991376f51bd27c5293a78bb2e80ee deef8dc] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated lunasvg from 2.2.0 to 2.3.8 ([https://github.com/multitheftauto/mtasa-blue/commit/929b3eef88caff448f5aed224bcfde0929003019 929b3ee] by '''Lpsd''' and '''patrikjuvonen''')&lt;br /&gt;
:* Updated libpng from 1.6.37 to 1.6.39 ([https://github.com/multitheftauto/mtasa-blue/commit/94bab0928f776a86bf77cab612d4d58a4549ec7b 94bab09] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated nvapi to r530 ([https://github.com/multitheftauto/mtasa-blue/commit/6d5bb39b4b8ea753cc9d3dfc367bb9f993176d00 6d5bb39] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated libjpeg from 9d to 9e ([https://github.com/multitheftauto/mtasa-blue/commit/c6aafc659bf93fa9875c25683b63c27379ec2a0c c6aafc6] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated unifont from 13.0.06 to 15.0.06 ([https://github.com/multitheftauto/mtasa-blue/commit/b81eec8a9a999c080a0e59f4f669f00c7e59ebc3 b81eec8] by '''patrikjuvonen''')&lt;br /&gt;
&lt;br /&gt;
=== Server ===&lt;br /&gt;
:* Updated sqlite from 3.36.0 to 3.42.0 ([https://github.com/multitheftauto/mtasa-blue/commit/0f072bc9ba2c65ff85634faca8f1e60bcd7b6804 0f072bc] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated mysql-connector-c from 6.0.2 to 6.1.11 ([https://github.com/multitheftauto/mtasa-blue/commit/9f88f41909780e914879dd385f5975006a8b818c 9f88f41] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated minizip from 1.01e to 1.1 ([https://github.com/multitheftauto/mtasa-blue/commit/76ce14e9cc97c6d357e962d38c07743d922c4b96 76ce14e] by '''patrikjuvonen''')&lt;br /&gt;
&lt;br /&gt;
=== Shared ===&lt;br /&gt;
:* Updated curl from 7.79.1 to 8.1.2 ([https://github.com/multitheftauto/mtasa-blue/commit/602e91866bda621c03bd2e1fe3da2e992e8d7167 602e918] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated mbedtls from 2.27.0 to 2.28.3 ([https://github.com/multitheftauto/mtasa-blue/commit/d8e29bea30d46098ea2da170c4aae24564c5b44a d8e29be] and [https://github.com/multitheftauto/mtasa-blue/commit/b233b85eed85d2e0246daaed85a4ae47900b32ae b233b85] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated cryptopp from 8.6.0 to 8.7.0 ([https://github.com/multitheftauto/mtasa-blue/commit/c10ca9249cb027598dac99dff19f65b95641d58d c10ca92] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated zlib from 1.2.11 to 1.2.13 ([https://github.com/multitheftauto/mtasa-blue/commit/6df121b676811b62deca5a55cd0a6bbacc149f6c 6df121b] by '''patrikjuvonen''' and [https://github.com/multitheftauto/mtasa-blue/commit/e467585d70058551ba9e69beaf86c782c374115c e467585] by '''Lpsd''')&lt;br /&gt;
:* Updated unrar from 6.02 to 6.21 ([https://github.com/multitheftauto/mtasa-blue/commit/66a16ff78331f5b632be63d010ee666d01681ba0 66a16ff] and [https://github.com/multitheftauto/mtasa-blue/commit/e816959ff511e2a6cca1c067ec1d3c413589d2f3 e816959] by '''patrikjuvonen''' and [https://github.com/multitheftauto/mtasa-blue/commit/66017cd0ec47b7bcc64dc7be8d27234517dccc17 66017cd] by '''Lpsd''')&lt;br /&gt;
:* Updated json-c from 0.15 to 0.16 ([https://github.com/multitheftauto/mtasa-blue/commit/4cfbaa76ca834a0bac8d97f873e5bfde844834ff 4cfbaa7] by '''patrikjuvonen''')&lt;br /&gt;
:* Updated NSIS from nsis-2.46.5-unicode to nsis-3.08 and 4 plugins and scripts ([https://github.com/multitheftauto/mtasa-blue/commit/423b55d7aca79bc9c8b59574bf7dde780b239c10 423b55d] by '''patrikjuvonen''' and [https://github.com/multitheftauto/mtasa-blue/compare/11feb0411152213594e342c54f21dc2375216cf5...a30df1b23fd11dc4977380d672694cb18cc92b99 commits] by '''Dutchman101''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== 61+ Changes and Bug Fixes ===&lt;br /&gt;
:* Added a new &amp;quot;restore&amp;quot; button within Editor's &amp;quot;Current Elements&amp;quot; window ([https://github.com/multitheftauto/mtasa-resources/commit/15fbc95f61f493e96a927f8f4fa483f25be2cd13 15fbc95] by '''Haxardous''' and '''Fernando-A-Rocha''')&lt;br /&gt;
:* Fixed empty if branches ([https://github.com/multitheftauto/mtasa-resources/commit/2660580de2750ca617a86f7e3ccb8235331935a8 2660580] by '''ArranTuna''')&lt;br /&gt;
:* Fixed inconsistent indentation ([https://github.com/multitheftauto/mtasa-resources/commit/49d325928a8de114587568196d2ad4f1207f5d8d 49d3259] and [https://github.com/multitheftauto/mtasa-resources/commit/2d684707648b13c028d386a27abbcc08b22f3945 2d68470] by '''ArranTuna''')&lt;br /&gt;
:* Fixed lines containing trailing whitespaces ([https://github.com/multitheftauto/mtasa-resources/commit/555a8ba0caf188fa6a0bdc755530ba4e9e9b121a 555a8ba] by '''ArranTuna''')&lt;br /&gt;
:* Fixed lint errors ([https://github.com/multitheftauto/mtasa-resources/commit/ccf98a117cd57d9459036bc227d3499a66a10b19 ccf98a1] and [https://github.com/multitheftauto/mtasa-resources/commit/7ee88903da99c837f268a13c7281fdf9476ea9ed 7ee8890] by '''ArranTuna''')&lt;br /&gt;
:* Fixed lint warnings ([https://github.com/multitheftauto/mtasa-resources/commit/b139dd9f878a89f6de01f9416b81605705af30ba b139dd9], [https://github.com/multitheftauto/mtasa-resources/commit/372a8fab81e6a367ab3c2531885966617b563f9b 372a8fa], [https://github.com/multitheftauto/mtasa-resources/commit/ad1522f221aecee76fe42ed5f15b77785a299589 ad1522f], [https://github.com/multitheftauto/mtasa-resources/commit/386801682dc437e8527def6ece63d607b95ae775 3868016], [https://github.com/multitheftauto/mtasa-resources/commit/a7fbea7a549328a7a3aa074b635cb2638252b027 a7fbea7], [https://github.com/multitheftauto/mtasa-resources/commit/a474c544bd8d01b799addb84d91e98b606e93081 a474c54] and [https://github.com/multitheftauto/mtasa-resources/commit/18a495cefa6b5fb343f5576f54bce19e75a412f8 18a495c] by '''ArranTuna''')&lt;br /&gt;
:* Fixed &amp;quot;shadowing definition of loop variable&amp;quot; lint warnings ([https://github.com/multitheftauto/mtasa-resources/commit/02233dbc7d20205c2ce28da06a93d1637d841b7b 02233db] by '''ArranTuna''')&lt;br /&gt;
:* Fixed elementbrowser and resourcemanager not working by removing legacy JSON library and some ajax refactoring ([https://github.com/multitheftauto/mtasa-resources/commit/bde31f8a890057f2a7e02940f37489037b3de9a8 bde31f8] by '''4O4''')&lt;br /&gt;
:* Removed some unused variables ([https://github.com/multitheftauto/mtasa-resources/commit/0d424d13eabd9ef68c5282c46fc24c4f880b1c95 0d424d1] by '''ArranTuna''')&lt;br /&gt;
:* Replaced [[getLocalPlayer]] with [[localPlayer]] across multiple resources ([https://github.com/multitheftauto/mtasa-resources/commit/01f7695d3a49ce97639666773c274b747a7a158d 01f7695] by '''ArranTuna''')&lt;br /&gt;
:* Replaced [[getResourceRootElement]] with [[resourceRoot]] across multiple resources ([https://github.com/multitheftauto/mtasa-resources/commit/0dee4961826feaad364fcb1565cba0824a4e1849 0dee496] by '''ArranTuna''')&lt;br /&gt;
:* Replaced [[getRootElement]] with [[root]] across multiple resources ([https://github.com/multitheftauto/mtasa-resources/commit/9582a82ea92d9e8f89a958dd7b33d82698ed1c9f 9582a82] by '''ArranTuna''')&lt;br /&gt;
:* Upgraded admin2, interiors, parachute and freeroam resources to use the new jetpack functions ([https://github.com/multitheftauto/mtasa-resources/commit/c618a18c6698839074014b747c3826f60feae0c6 c618a18] by '''xLive''')&lt;br /&gt;
:* [admin] Fixed &amp;quot;previously defined&amp;quot; warnings ([https://github.com/multitheftauto/mtasa-resources/commit/4ffc5d067f48a83d2df7c375a512fb0de83e576c 4ffc5d0] and [https://github.com/multitheftauto/mtasa-resources/commit/3ed3219498813e130650231ff10a9fbe99c30fd9 3ed3219] by '''ArranTuna''')&lt;br /&gt;
:* [admin] Removed non-existent functions ([https://github.com/multitheftauto/mtasa-resources/commit/a5941740d3ee16b42ad883e7eecdb30266f692d5 a594174] by '''ghostkc12''')&lt;br /&gt;
:* [admin] Removed serial validation ([https://github.com/multitheftauto/mtasa-resources/commit/c6259f627936cea2743a40201a04a23dc78d5e7a c6259f6] by '''srslyyyy''')&lt;br /&gt;
:* [admin] Improved admin to use a newly added server event instead of a client script ([https://github.com/multitheftauto/mtasa-resources/commit/0cb4877b2770666f95c01ba75f208315f1edc4bf 0cb4877] by '''srslyyyy''')&lt;br /&gt;
:* [admin] Updated ip2c mirror link ([https://github.com/multitheftauto/mtasa-resources/commit/9ad4c366ae5704ee7d79d64912ee0ec9f12e977d 9ad4c36] by '''Dutchman101''')&lt;br /&gt;
:* [admin] Updated ''IpToCountryCompact.csv'' ([https://github.com/multitheftauto/mtasa-resources/commit/310c59f0c94013dc258e68d9e82dd84e4da05ea4 310c59f] by '''Dutchman101''')&lt;br /&gt;
:* [admin] Fixed &amp;quot;No map selected!&amp;quot; message box when clicking search map editbox ([https://github.com/multitheftauto/mtasa-resources/commit/0b7d576607b62759ad7c2dd21ff0259e6358b4a8 0b7d576] by '''Mkl21''')&lt;br /&gt;
:* [admin2] Fixed spectator player action buttons ([https://github.com/multitheftauto/mtasa-resources/commit/01af273a6664c0db152a743a972a6f5fa02f8851 01af273] by '''Dark-Dragon''')&lt;br /&gt;
:* [admin2] Fixed various sorting related gridlist issues ([https://github.com/multitheftauto/mtasa-resources/commit/e0d1642b8a6fea3a822786c9a7cc7f8e4e1145e9 e0d1642] by '''Dark-Dragon''')&lt;br /&gt;
:* [admin2] Added missing set nick functionality ([https://github.com/multitheftauto/mtasa-resources/commit/39c40e61360579f9eb44d038f17712495b0022d6 39c40e6] by '''Dark-Dragon''')&lt;br /&gt;
:* [ajax] Use ''application/json'' request header when sending a JSON POST request ([https://github.com/multitheftauto/mtasa-resources/commit/11c466a102556369887eba944128cd0641ff018a 11c466a] by '''Xenius97''')&lt;br /&gt;
:* [ctf] Various fixes, cleanups and refactoring ([https://github.com/multitheftauto/mtasa-resources/commit/609ac0cc614944ec7e53292ad705b046134cc41f 609ac0c] by '''IIYAMA12''')&lt;br /&gt;
:* [deathmatch] Major refactor ([https://github.com/multitheftauto/mtasa-resources/commit/9f57aa898b214a8fd3d5d1cad94c793d49d8c804 9f57aa8] by '''jlillis''')&lt;br /&gt;
:* [editor] Fixed some debug warnings ([https://github.com/multitheftauto/mtasa-resources/commit/5e9f2220b645c369e9654c577403530c076e1749 5e9f222] by '''ArranTuna''')&lt;br /&gt;
:* [editor] Improved some debug outputs ([https://github.com/multitheftauto/mtasa-resources/commit/be3477dc310f0f77a33531cc59ccdd7e1cd0e6ec be3477d] by '''ArranTuna''')&lt;br /&gt;
:* [editor] Small improvements in editor_main ([https://github.com/multitheftauto/mtasa-resources/commit/7816898d991a072b35e62ccf06c73775f39cb3eb 7816898] by '''srslyyyy''')&lt;br /&gt;
:* [editor] Updated gamemodestopper.lua in editor_main ([https://github.com/multitheftauto/mtasa-resources/commit/bfad62487c08237f6227546b98878fd05ec08474 bfad624], [https://github.com/multitheftauto/mtasa-resources/commit/3063712ac88d489eecae0263bf6ae086959ff6b5 3063712] and [https://github.com/multitheftauto/mtasa-resources/commit/7955351e58844bdbefa76d8e82102a6c829f4496 7955351] by '''srslyyyy''')&lt;br /&gt;
:* [editor] Fixed a typo in text ([https://github.com/multitheftauto/mtasa-resources/commit/8722f2b1ea85acca225dd700779ea18d2ffd0fac 8722f2b] by '''Dutchman101''')&lt;br /&gt;
:* [editor] Rotation improvements ([https://github.com/multitheftauto/mtasa-resources/commit/ced470eb0ead7c48df948a17533fda8cbe656b0d ced470e] by '''Zangomangu''')&lt;br /&gt;
:* [editor] Fixed delete button not restoring element ([https://github.com/multitheftauto/mtasa-resources/commit/f0d0285faf853c47133eab106c05ccad5fc9ce71 f0d0285] by '''Haxardous''')&lt;br /&gt;
:* [editor] Removed breakable workaround in favour of the now native support for it ([https://github.com/multitheftauto/mtasa-resources/commit/33e54e445fed5b1ebec31f4a2ff993ff91186b40 33e54e4], [https://github.com/multitheftauto/mtasa-resources/commit/17981673c602baeecfd5a508c45c7bc711e8e02b 1798167] and [https://github.com/multitheftauto/mtasa-resources/commit/006eefb63bbe3ea1d4cf500942860f40ae481cbd 006eefb] by '''patrikjuvonen''')&lt;br /&gt;
:* [editor_main] Improved scripting extensions ([https://github.com/multitheftauto/mtasa-resources/commit/7a8ae063c127fcb62a7d50d565355e1bb2bd7038 7a8ae06] by '''srslyyyy''')&lt;br /&gt;
:* [editor_main] Disabled unused OOP in ''meta.xml'' for scripting extensions ([https://github.com/multitheftauto/mtasa-resources/commit/95f3c36307512bb35e7efb727e101c1bbc136564 95f3c36] by '''srslyyyy''')&lt;br /&gt;
:* [editor_main] Fixed version warning ([https://github.com/multitheftauto/mtasa-resources/commit/29e1ae023b2746c4528c1064e6743d40877c9518 29e1ae0] by '''srslyyyy''')&lt;br /&gt;
:* [freecam] Added support for changing field of view ([https://github.com/multitheftauto/mtasa-resources/commit/a960ba478a72996456376da23aaac538e0572e18 a960ba4] by '''Xenius97''')&lt;br /&gt;
:* [freecam] Fixed freecam mouse &amp;amp; key input by ignoring it when MTA window not focused ([https://github.com/multitheftauto/mtasa-resources/commit/316f536eb4816a6993e5690e730211c4cabb55e7 316f536] by '''Fernando-A-Rocha''')&lt;br /&gt;
:* [gameplay] Added button to delete handlings in hedit ([https://github.com/multitheftauto/mtasa-resources/commit/0835ecd1f77fe98b1dcc84130d068f8fadb6af0d 0835ecd] and [https://github.com/multitheftauto/mtasa-resources/commit/6509b7424c3c2d6b38054e86904cc5b9a9c7fa78 6509b74] by '''ricksterhd123''', '''Inder00''', '''Disinterpreter''' and '''Dutchman101''')&lt;br /&gt;
:* [gameplay] Fixed a debug warning in freeroam ([https://github.com/multitheftauto/mtasa-resources/commit/36b4f00181e804111a83b4bd8083be88325fded3 36b4f00] by '''ArranTuna''')&lt;br /&gt;
:* [gameplay] Fixed steering lock glitch on bikes and motorcycles in hedit ([https://github.com/multitheftauto/mtasa-resources/commit/f76952b7606a7121d26eea086b7382554d5247e0 f76952b] and [https://github.com/multitheftauto/mtasa-resources/commit/d252b9f7a849ddacb0dd84b72c51b80899c33c76 d252b9f] by '''Dutchman101''')&lt;br /&gt;
:* [gameplay] Fixed typos in hedit and sfxbrowser ([https://github.com/multitheftauto/mtasa-resources/commit/814437b19d05924373810f3961e6768744f45b90 814437b] by '''TheNormalnij''')&lt;br /&gt;
:* [gameplay] Settings support and code refactor for joinquit ([https://github.com/multitheftauto/mtasa-resources/commit/bbd536d18abb27850bb4ec0895031558a2c90501 bbd536d] by '''itslewiswatson''')&lt;br /&gt;
:* [gameplay] Small fixes for defaultstats ([https://github.com/multitheftauto/mtasa-resources/commit/b09bd68c960644e339a1e74f6002e3822f13191b b09bd68] by '''srslyyyy''')&lt;br /&gt;
:* [gameplay] Small optimization on servers that use a lot of element data in parachute ([https://github.com/multitheftauto/mtasa-resources/commit/7b9d047fae1c3163aa7b2a380be87a149bf51906 7b9d047] and [https://github.com/multitheftauto/mtasa-resources/commit/d252b9f7a849ddacb0dd84b72c51b80899c33c76 d252b9f] by '''Dutchman101''')&lt;br /&gt;
:* [gameplay] Some improvements in deathpickups ([https://github.com/multitheftauto/mtasa-resources/commit/aa9782ea996bbe684587c8e9cf542a575a23779f aa9782e] by '''srslyyyy''')&lt;br /&gt;
:* [hay] Fixed hay not resetting ([https://github.com/multitheftauto/mtasa-resources/commit/036ff6142b48b97d47456d8cb16d40e71b7ca57b 036ff61] by '''Dark-Dragon''')&lt;br /&gt;
:* [hedit] Added translations for delete button ([https://github.com/multitheftauto/mtasa-resources/commit/2b7439d8eba579f4f8fb21ddf1301454aface76a 2b7439d] by '''ricksterhd123''' and '''Disinterpreter''')&lt;br /&gt;
:* [ip2c] Added new '''ip2c''' default resource (decoupled from admin resource) ([https://github.com/multitheftauto/mtasa-resources/commit/f64d65737bdefc300a0744592562455afdc3338b f64d657] by '''Fernando-A-Rocha''' and '''srslyyyy''')&lt;br /&gt;
:* [play] Refactored code ([https://github.com/multitheftauto/mtasa-resources/commit/7b66c7855735a4d43845863802814952d45773ab 7b66c78] by '''srslyyyy''')&lt;br /&gt;
:* [playerblips] Various improvements ([https://github.com/multitheftauto/mtasa-resources/commit/9e79974593c08f44266bf75279db1537a1f05d69 9e79974] by '''jlillis''')&lt;br /&gt;
:* [rustlerbombs] Added new '''rustlerbombs''' default resource ([https://github.com/multitheftauto/mtasa-resources/commit/49961eb6b907774fdd7d56e53bc050dacd118434 49961eb] by '''Dutchman101''')&lt;br /&gt;
:* [scoreboard] Trigger events improvements ([https://github.com/multitheftauto/mtasa-resources/commit/9be00d67a73bb66a04218668c85e26c7eff6db5c 9be00d6] by '''srslyyyy''')&lt;br /&gt;
:* [scoreboard] Performance improvements ([https://github.com/multitheftauto/mtasa-resources/commit/3d3c592b4522d5dcb33f9eb22e09bceaa29fb058 3d3c592] and [https://github.com/multitheftauto/mtasa-resources/commit/89f122497a9771923391276e432b1b449a79dd5e 89f1224] by '''srslyyyy''')&lt;br /&gt;
:* [scoreboard] Make ''/setcountry'' command available to all players, rather than just admins ([https://github.com/multitheftauto/mtasa-resources/commit/d8cff2da8745de34a4d0d6812e32920d98abbb8b d8cff2d] by '''Dutchman101''')&lt;br /&gt;
:* [scoreboard] Add 'fake ping' (''/setping'') command, to complement ''/setcountry'' and make it more believable for users ([https://github.com/multitheftauto/mtasa-resources/commit/7aea1cc503c3b500f1f8beb00e63a44de2376e47 7aea1cc] and [https://github.com/multitheftauto/mtasa-resources/commit/d06f1d56a462d9c48e97c8da4d473635f5c88b0c d06f1d5] by '''Dutchman101''')&lt;br /&gt;
:* [voice_local] Added new '''voice_local''' default resource ([https://github.com/multitheftauto/mtasa-resources/commit/25d4a4f91f2277816819506a6e7fc62e727e6ef8 25d4a4f] by '''Dutchman101''')&lt;br /&gt;
:* [web] Fixed resourcemanager ([https://github.com/multitheftauto/mtasa-resources/commit/37348cecb60a6c999c316398a17f866d54569953 37348ce] by '''ArranTuna''')&lt;br /&gt;
:* [webadmin] Fixed a typo in CSS ([https://github.com/multitheftauto/mtasa-resources/commit/70361a4b19fb2773903de3431c37ab34a3252a03 70361a4] by '''RatajVaver''')&lt;br /&gt;
:* [webmap] Switched to assets.multitheftauto.com domain for loading map tiles ([https://github.com/multitheftauto/mtasa-resources/commit/218f2c7ff17884f6905593ab716c52a38f2e90ed 218f2c7] by '''patrikjuvonen''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extra information ==&lt;br /&gt;
''More detailed information available on our GitHub repositories:&lt;br /&gt;
:* [https://github.com/multitheftauto/mtasa-blue MTA:SA Blue]&lt;br /&gt;
:* [https://github.com/multitheftauto/mtasa-resources MTA:SA Official Resources]&lt;br /&gt;
&lt;br /&gt;
[[Category:Changelog]]&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Building_functions&amp;diff=79613</id>
		<title>Template:Building functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Building_functions&amp;diff=79613"/>
		<updated>2024-06-12T21:14:10Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Fix mta version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
{{New feature/item|3.0162|1.6.0|22410|&lt;br /&gt;
&amp;lt;li&amp;gt;[[createBuilding]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{New feature/item|3.0162|1.6.0|22420|&lt;br /&gt;
&amp;lt;li&amp;gt;[[removeAllGameBuildings]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[restoreAllGameBuildings]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateBuilding&amp;diff=79573</id>
		<title>CreateBuilding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateBuilding&amp;diff=79573"/>
		<updated>2024-06-09T18:31:29Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Fix position&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22410|Creates a [[building]] [[element]] at a given position and rotation.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;building createBuilding ( int modelId, float x, float y, float z, float rx, float ry, float rz, [ int interior = 0 ] )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[Building]]||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''modelId:''' A whole integer specifying the GTA:SA object model ID.&lt;br /&gt;
*'''x:''' A floating point number representing the X coordinate on the map.&lt;br /&gt;
*'''y:''' A floating point number representing the Y coordinate on the map.&lt;br /&gt;
*'''z:''' A floating point number representing the Z coordinate on the map.&lt;br /&gt;
*'''rx:''' A floating point number representing the rotation about the X axis in degrees.&lt;br /&gt;
*'''ry:''' A floating point number representing the rotation about the Y axis in degrees.&lt;br /&gt;
*'''rz:''' A floating point number representing the rotation about the Z axis in degrees.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''interior:''' The interior you want to set the building to. Valid values are 0 to 255.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
* Returns the [[building]] element if the creation was successful, throws an error otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Simple example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example creates a building when the resource starts:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function loadMap()&lt;br /&gt;
   -- create a *building* at a specified position with a specified rotation&lt;br /&gt;
   createBuilding(1337, 100.5, 30.6, 4.0, 90, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, resourceRoot, loadMap)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Engine_functions&amp;diff=79551</id>
		<title>Template:Engine functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Engine_functions&amp;diff=79551"/>
		<updated>2024-06-08T14:51:17Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Pool functions added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineAddImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineApplyShaderToWorldTexture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineFreeModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineFreeTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21695|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelFlags]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelIDFromName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelLODDistance]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelNameFromID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelPhysicalPropertiesGroup]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelTextureNames]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelTextures]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelTXDID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20704|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetModelVisibleTime]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetObjectGroupPhysicalProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetSurfaceProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetVisibleTextureNames]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageGetFilesCount]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageGetFiles]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageGetFile]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageLinkDFF]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImageLinkTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineImportTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadCOL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadDFF]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadIMG]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadIFP]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineLoadTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRemoveImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRemoveShaderFromWorldTexture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineReplaceAnimation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineReplaceCOL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineReplaceModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRequestModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRequestTXD]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21695|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetModelFlags]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetModelLODDistance]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetModelTXDID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineResetSurfaceProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreAnimation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreCOL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreDFFImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreModel]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreModelPhysicalPropertiesGroup]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreObjectGroupPhysicalProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21708|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestoreTXDImage]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20704|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineRestreamWorld]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetAsynchronousLoading]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.0|1.5.9|21695|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelFlag]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelFlags]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelLODDistance]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelPhysicalPropertiesGroup]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22190|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelTXDID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20704|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetModelVisibleTime]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetObjectGroupPhysicalProperty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetSurfaceProperties]]&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20901|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingFreeUpMemory]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetUsedMemory]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|21874|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingSetMemorySize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetMemorySize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingRestoreMemorySize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingSetBufferSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingGetBufferSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingRestoreBufferSize]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|21947|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineStreamingSetModelCacheLimits]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Added feature/item|1.6.1|1.6.0|22471|&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetPoolCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineSetPoolCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetPoolDefaultCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[engineGetPoolUsedCapacity]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RestoreAllGameBuildings&amp;diff=79407</id>
		<title>RestoreAllGameBuildings</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RestoreAllGameBuildings&amp;diff=79407"/>
		<updated>2024-05-25T15:11:08Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22420|This function cancels [[removeAllGameBuildings]] effect}}&lt;br /&gt;
{{Note|This function can destroy some scripted buildings if the building pool does not have enough free space for game buildings.}}&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil restoreAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RestoreAllGameBuildings&amp;diff=79406</id>
		<title>RestoreAllGameBuildings</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RestoreAllGameBuildings&amp;diff=79406"/>
		<updated>2024-05-25T15:10:56Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22420|This function cancels [[removeAllGameBuildings]] efffect}}&lt;br /&gt;
{{Note|This function can destroy some scripted buildings if the building pool does not have enough free space for game buildings.}}&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil restoreAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RestoreAllGameBuildings&amp;diff=79405</id>
		<title>RestoreAllGameBuildings</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RestoreAllGameBuildings&amp;diff=79405"/>
		<updated>2024-05-25T15:10:38Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__  {{Client function}} {{New feature/item|3.0161|1.6.0|22420|This function cancels RemoveAllGameBuildings efffect}} {{Note|This function can destroy some scripted buildings if the building pool does not have enough free space for game buildings.}} ==Syntax==  &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil restoreAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt;    ===Returns=== Nothing  ==See Also== {{Building functions}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22420|This function cancels [[RemoveAllGameBuildings]] efffect}}&lt;br /&gt;
{{Note|This function can destroy some scripted buildings if the building pool does not have enough free space for game buildings.}}&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil restoreAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RemoveAllGameBuildings&amp;diff=79404</id>
		<title>RemoveAllGameBuildings</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RemoveAllGameBuildings&amp;diff=79404"/>
		<updated>2024-05-25T15:05:49Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Add note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22420|This function is used to remove all world buildings and frees building pool.}}&lt;br /&gt;
{{Note|This function does not affect buildings created using the [[createBuilding]] function}}&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil removeAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Building_functions&amp;diff=79403</id>
		<title>Template:Building functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Building_functions&amp;diff=79403"/>
		<updated>2024-05-25T15:01:38Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Fix build number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
{{New feature/item|3.0162|1.6.1|22410|&lt;br /&gt;
&amp;lt;li&amp;gt;[[createBuilding]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
{{New feature/item|3.0162|1.6.1|22420|&lt;br /&gt;
&amp;lt;li&amp;gt;[[removeAllGameBuildings]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[restoreAllGameBuildings]]&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RemoveAllGameBuildings&amp;diff=79402</id>
		<title>RemoveAllGameBuildings</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RemoveAllGameBuildings&amp;diff=79402"/>
		<updated>2024-05-25T14:59:04Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Created page with &amp;quot;__NOTOC__  {{Client function}} {{New feature/item|3.0161|1.6.0|22420|This function is used to remove all world buildings and frees building pool.}}  ==Syntax==  &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil removeAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt;    ===Returns=== Nothing  ==See Also== {{Building functions}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0161|1.6.0|22420|This function is used to remove all world buildings and frees building pool.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;nil removeAllGameBuildings ( )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Nothing&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Building functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineRestoreObjectGroupPhysicalProperties&amp;diff=79343</id>
		<title>EngineRestoreObjectGroupPhysicalProperties</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineRestoreObjectGroupPhysicalProperties&amp;diff=79343"/>
		<updated>2024-05-17T22:02:08Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: There is no &amp;quot;property&amp;quot; argument&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0157|1.5.7|19626|This function restores all physical properties of given properties group.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool engineRestoreObjectGroupPhysicalProperties ( int groupID )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''groupID''': the id of physical properties group which you wish to restore.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns '''true''' if everything went well, error is raised 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;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function restorePhysicalGroup(_, group)&lt;br /&gt;
    engineRestoreObjectGroupPhysicalProperties(tonumber(group))&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;restorePhysicalGroup&amp;quot;, restorePhysicalGroup )&lt;br /&gt;
--restorePhysicalGroup(120)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|n/a|1.5.7-9.19626|}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_object_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineSetObjectGroupPhysicalProperty&amp;diff=79342</id>
		<title>EngineSetObjectGroupPhysicalProperty</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineSetObjectGroupPhysicalProperty&amp;diff=79342"/>
		<updated>2024-05-17T21:54:31Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Use engine functions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0157|1.5.7|19626|This function sets physical property of given properties group.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool engineSetObjectGroupPhysicalProperty ( int groupID, objectgroup-modifiable property, var newValue )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''groupID''': the id of physical properties group which you wish to set a property of.&lt;br /&gt;
*'''objectgroup-modifiable''': the property which you wish to set, as per table below.&lt;br /&gt;
*'''newValue''': new value of the property, with proper type as specified in table below&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns '''true''' if everything went well, error is raised otherwise.&lt;br /&gt;
&lt;br /&gt;
===Properties===&lt;br /&gt;
{{Physical_Properties}}&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|n/a|1.5.7-9.19626|}}&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;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function lamppostCollision()&lt;br /&gt;
engineSetObjectGroupPhysicalProperty(111, &amp;quot;cause_explosion&amp;quot;, true)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, resourceRoot, lamppostCollision)&lt;br /&gt;
&lt;br /&gt;
--Every time you hit a lamppost, an explosion will be created&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;
{{Engine_functions}}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Physical_Properties&amp;diff=79341</id>
		<title>Template:Physical Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Physical_Properties&amp;diff=79341"/>
		<updated>2024-05-17T21:38:45Z</updated>

		<summary type="html">&lt;p&gt;TheNormalnij: Add turn_mass&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Physical properties===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property || Type || Description&lt;br /&gt;
|-&lt;br /&gt;
| mass || float || Mass of an object&lt;br /&gt;
|-&lt;br /&gt;
| turn_mass || float || Turn mass (kg m^3) of an object&lt;br /&gt;
|-&lt;br /&gt;
| air_resistance || float || Air resistance of an object&lt;br /&gt;
|-&lt;br /&gt;
| elasticity || float || Elasticity of an object&lt;br /&gt;
|-&lt;br /&gt;
| buoyancy || float || Buoyancy of an object&lt;br /&gt;
|-&lt;br /&gt;
| uproot_limit || float || How much force is needed to uproot the object&lt;br /&gt;
|-&lt;br /&gt;
| col_damage_multiplier || float || Force multiplier used when colliding with object&lt;br /&gt;
|-&lt;br /&gt;
| col_damage_effect || DamageEffect || Dictates which damage effect is applied to object on collision&lt;br /&gt;
|-&lt;br /&gt;
| special_col_response || CollisionResponse || Dictates how object responds to being collided with&lt;br /&gt;
|-&lt;br /&gt;
| avoid_camera || bool || Dictates whether camera passes throught the object&lt;br /&gt;
|-&lt;br /&gt;
| cause_explosion || bool || Dictates whether objects exploded upon collision&lt;br /&gt;
|-&lt;br /&gt;
| fx_type || FxType || Dictates when particles will be created when colliding with object&lt;br /&gt;
|-&lt;br /&gt;
| fx_offset || Vector3D || Offset from center of mass where particles will be created upon collision&lt;br /&gt;
|-&lt;br /&gt;
| fx_system || FxEffect(string) || Effect that will be used upon collision&lt;br /&gt;
|-&lt;br /&gt;
| smash_multiplier || float || Force multiplier when destroying object&lt;br /&gt;
|-&lt;br /&gt;
| break_velocity || Vector3D || Velocity and direction in which the object is destroyed&lt;br /&gt;
|-&lt;br /&gt;
| break_velocity_randomness || float || Randomness of velocity and direction in which the object is destroyed, 0 means that object uses break_velocity without any randomness&lt;br /&gt;
|-&lt;br /&gt;
| break_mode || BreakMode || Dictates how object can be damaged&lt;br /&gt;
|-&lt;br /&gt;
| sparks_on_impact || bool || Dictates whether object creates sparks upon impact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Damage effect===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Effect || Description&lt;br /&gt;
|-&lt;br /&gt;
| none || Object doesn't change at all once it's damaged&lt;br /&gt;
|-&lt;br /&gt;
| change_model || Some of the objects change model on collision, those use this&lt;br /&gt;
|-&lt;br /&gt;
| smash || Object is smashed&lt;br /&gt;
|-&lt;br /&gt;
| change_smash || First CHANGE_MODEL, afterwards smash on collision&lt;br /&gt;
|-&lt;br /&gt;
| breakable || Object is breakable normally&lt;br /&gt;
|-&lt;br /&gt;
| breakable_remove || object.dat says: '(ie. never regenerated after destroyed)'&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Collision Response===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Response || Description&lt;br /&gt;
|-&lt;br /&gt;
| none || Object doesn't respond in any special way&lt;br /&gt;
|-&lt;br /&gt;
| lamppost || Objects acts like an lamp post&lt;br /&gt;
|-&lt;br /&gt;
| small_box || -&lt;br /&gt;
|-&lt;br /&gt;
| big_box || -&lt;br /&gt;
|-&lt;br /&gt;
| fence_part || -&lt;br /&gt;
|-&lt;br /&gt;
| grenade || -&lt;br /&gt;
|-&lt;br /&gt;
| swingdoor || -&lt;br /&gt;
|-&lt;br /&gt;
| lockdoor || -&lt;br /&gt;
|-&lt;br /&gt;
| hanging || -&lt;br /&gt;
|-&lt;br /&gt;
| poolball || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Fx Type===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Type || Description&lt;br /&gt;
|-&lt;br /&gt;
| none || No particles effect played on collision&lt;br /&gt;
|-&lt;br /&gt;
| play_on_hit || Particles effect is played on collision, even if object isn't destroyed&lt;br /&gt;
|-&lt;br /&gt;
| play_on_destroyed || Particles effect is played only once object is destroyed&lt;br /&gt;
|-&lt;br /&gt;
| play_on_hitdestroyed || Particles effect is played both when hit and destroyed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Break Mode===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Mode || Description&lt;br /&gt;
|-&lt;br /&gt;
| not_by_gun || not breakable by gun&lt;br /&gt;
|-&lt;br /&gt;
| by_gun || -&lt;br /&gt;
|-&lt;br /&gt;
| smashable || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Fx Effect===&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! effect || Description&lt;br /&gt;
|-&lt;br /&gt;
| wallbust || -&lt;br /&gt;
|-&lt;br /&gt;
| shootlight || -&lt;br /&gt;
|-&lt;br /&gt;
| puke || Puke effect&lt;br /&gt;
|-&lt;br /&gt;
| explosion_door || -&lt;br /&gt;
|-&lt;br /&gt;
| explosion_crate || Crate break&lt;br /&gt;
|-&lt;br /&gt;
| explosion_barrel || Barrel explosion&lt;br /&gt;
|-&lt;br /&gt;
| blood_heli || Heli cutting peds&lt;br /&gt;
|-&lt;br /&gt;
| tree_hit_palm || -&lt;br /&gt;
|-&lt;br /&gt;
| tree_hit_fir || -&lt;br /&gt;
|-&lt;br /&gt;
| water_swim || Water ripples&lt;br /&gt;
|-&lt;br /&gt;
| water_splsh_sml || -&lt;br /&gt;
|-&lt;br /&gt;
| water_splash_big || -&lt;br /&gt;
|-&lt;br /&gt;
| water_splash || -&lt;br /&gt;
|-&lt;br /&gt;
| water_hydrant || -&lt;br /&gt;
|-&lt;br /&gt;
| tank_fire || -&lt;br /&gt;
|-&lt;br /&gt;
| riot_smoke || -&lt;br /&gt;
|-&lt;br /&gt;
| gunsmoke || Gun smoke when firing&lt;br /&gt;
|-&lt;br /&gt;
| gunflash || Gun flash when firing&lt;br /&gt;
|-&lt;br /&gt;
| explosion_tiny || -&lt;br /&gt;
|-&lt;br /&gt;
| explosion_small || -&lt;br /&gt;
|-&lt;br /&gt;
| explosion_molotov || Molotov explosion&lt;br /&gt;
|-&lt;br /&gt;
| explosion_medium || -&lt;br /&gt;
|-&lt;br /&gt;
| explosion_large || -&lt;br /&gt;
|-&lt;br /&gt;
| explosion_fuel_car || -&lt;br /&gt;
|-&lt;br /&gt;
| exhale || -&lt;br /&gt;
|-&lt;br /&gt;
| camflash || Camera photo flash&lt;br /&gt;
|-&lt;br /&gt;
| prt_wake || Wake on water behind boats&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TheNormalnij</name></author>
	</entry>
</feed>