<?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=Sbx320</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=Sbx320"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Sbx320"/>
	<updated>2026-05-18T00:53:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateVehicle/PT-BR&amp;diff=67154</id>
		<title>CreateVehicle/PT-BR</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateVehicle/PT-BR&amp;diff=67154"/>
		<updated>2020-08-06T17:07:44Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Sbx320 moved page CreateVehicle/PT-BR to PT-BR/CreateVehicle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PT-BR/CreateVehicle]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PT-BR/CreateVehicle&amp;diff=67153</id>
		<title>PT-BR/CreateVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/CreateVehicle&amp;diff=67153"/>
		<updated>2020-08-06T17:07:44Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Sbx320 moved page CreateVehicle/PT-BR to PT-BR/CreateVehicle&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{BR/Funcao compartilhada}}{{BR/Nota|Os veículos (e outros elementos) criados em client-side são vistos somente pelo cliente que os criaram, não são sincronizados e os jogadores não podem entrar neles. Eles são essencialmente apenas para exibição.}}&lt;br /&gt;
Esta função cria um veículo em uma localização especificada.&lt;br /&gt;
&lt;br /&gt;
Vale notar que a posição do veículo é relativa ao ponto central do veículo, não sua base. Sendo assim, você precisa garantir que o valor z (eixo vertical) esteja a alguma altura acima do solo. Você pode achar a altura exata com a seguinte função client-side [[getElementDistanceFromCentreOfMassToBaseOfModel]], ou você mesmo pode fazer uma estimativa e gerar o veículo para que ele caia no chão.&lt;br /&gt;
&lt;br /&gt;
==Sintaxe==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
vehicle createVehicle ( int modelo, float x, float y, float z [, float rx, float ry, float rz, string numberplate, bool bDirection, int variant1, int variant2 ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{PT-BR/POO||[[Vehicle]]||}}&lt;br /&gt;
&lt;br /&gt;
===Argumentos necessários===&lt;br /&gt;
* '''modelo''': O [[IDs_de_veiculos|ID]] do veículo que está sendo criado&lt;br /&gt;
* '''x''': Um número [[float]] representando a coordenada X do mapa&lt;br /&gt;
* '''y''': Um número [[float]] representando a coordenada Y do mapa&lt;br /&gt;
* '''z''': Um número [[float]] representando a coordenada Z do mapa&lt;br /&gt;
&lt;br /&gt;
===Argumentos Opcionais===&lt;br /&gt;
{{BR/ArgOpcional}}&lt;br /&gt;
* '''rx''': Um número [[float]] representando a rotação em torno do eixo X em graus.&lt;br /&gt;
* '''ry''': Um número [[float]] representando a rotação em torno do eixo Y em graus.&lt;br /&gt;
* '''rz''': Um número [[float]] representando a rotação em torno do eixo Z em graus.&lt;br /&gt;
* '''numberplate''': Uma string que aparecerá na placa do veículo (máximo de 8 caracteres).&lt;br /&gt;
* '''bDirection''' ''(serverside only)'': Placeholder [[boolean]] que fornece compatibilidade com alguns scripts. Isso nunca teve nenhum efeito, mas é lido pelo código. Recomenda-se ignorar esse argumento, passando o argumento '' false '' ou '' variant1 '' em seu lugar.&lt;br /&gt;
{{New feature/item|3.0120|1.2|| &lt;br /&gt;
* '''variant1''': Um [[int]] para o primeiro variante do veículo. Veja [[vehicle variants]].&lt;br /&gt;
* '''variant2''': Um [[int]] para o segundo variante do veículo. Veja [[vehicle variants]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Retorna===&lt;br /&gt;
Retorna o elemento [[Elemento/Vehicle]] que foi criado. Retorna ''false'' se os argumentos estão incorretos, ou se o limite de 65535 veículos spawnados no mundo for excedido&lt;br /&gt;
&lt;br /&gt;
==Usando trens==&lt;br /&gt;
Trens são criados usando a função desta página. Eles são colocados no ponto mais próximo do percurso do trem do GTA:SA (geralmente são trilhos de trem) a partir do ponto em que ele foi spawnado.&lt;br /&gt;
&lt;br /&gt;
==Exemplo==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 1: Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
Este exemplo cria um marker 'vehicle spawner' que dá ao jogador um veículo assim que ele atinge o marker.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local vehMark = createMarker(-2426.34106, -639.12714, 132.93631,&amp;quot;cylinder&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
function vehicleSpawner(hitElement,matchingDimension)&lt;br /&gt;
	if getElementType(hitElement) == &amp;quot;player&amp;quot; then&lt;br /&gt;
		if getPedOccupiedVehicle(hitElement) == false then&lt;br /&gt;
		local x,y,z = getElementPosition(hitElement)&lt;br /&gt;
			local veh = createVehicle(551, x,y,z)&lt;br /&gt;
			warpPedIntoVehicle(hitElement,veh)&lt;br /&gt;
		end&lt;br /&gt;
	end &lt;br /&gt;
end &lt;br /&gt;
addEventHandler(&amp;quot;onMarkerHit&amp;quot;,vehMark,vehicleSpawner)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 2: Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
Este exemplo cria um veículo a 5 unidades de distância do jogador quando ele digita ''createvehicle'' e seu nome no console:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local distance = 5 --units&lt;br /&gt;
&lt;br /&gt;
-- define our handler (we'll take a variable number of parameters where the name goes, because there are vehicle names with more than one word)&lt;br /&gt;
function consoleCreateVehicle ( sourcePlayer, commandName, ... )&lt;br /&gt;
   -- if a player triggered it, not the admin,&lt;br /&gt;
   if ( sourcePlayer ) then&lt;br /&gt;
      -- calculate the position of the vehicle based on the player's position and rotation:&lt;br /&gt;
      local x, y, z = getElementPosition ( sourcePlayer ) -- get the player's position&lt;br /&gt;
      local rotZ = getElementRotation ( sourcePlayer ) -- get the player's rotation around the Z axis in degrees&lt;br /&gt;
      x = x + ( ( math.cos ( math.rad ( rotZ ) ) ) * distance ) -- calculate the X position of the vehicle&lt;br /&gt;
      y = y + ( ( math.sin ( math.rad ( rotZ ) ) ) * distance ) -- calculate the Y position of the vehicle&lt;br /&gt;
&lt;br /&gt;
      -- get the complete vehicle name by joining all passed parameters using Lua function table.concat&lt;br /&gt;
      local vehicleName = table.concat({...}, &amp;quot; &amp;quot;)&lt;br /&gt;
      -- get the vehicle's model ID from the name&lt;br /&gt;
      local vehicleID = getVehicleModelFromName ( vehicleName )&lt;br /&gt;
      -- if vehicle ID is valid,&lt;br /&gt;
      if vehicleID then&lt;br /&gt;
            -- create the vehicle using the information gathered above:&lt;br /&gt;
            local newVehicle = createVehicle ( vehicleID, x, y, z, 0, 0, rotZ )&lt;br /&gt;
            -- if vehicle creation failed, give the player a message&lt;br /&gt;
            if not newVehicle then&lt;br /&gt;
               outputConsole ( &amp;quot;Failed to create vehicle.&amp;quot;, sourcePlayer )&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Attach the 'consoleCreateVehicle' function to the &amp;quot;createvehicle&amp;quot; command&lt;br /&gt;
addCommandHandler ( &amp;quot;createvehicle&amp;quot;, consoleCreateVehicle )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 3: Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
Esse script gera um Rhino em cima de um indivíduo sortudo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function scriptCreateTank ( player, command )&lt;br /&gt;
      local luckyBugger = getRandomPlayer() -- get a random player&lt;br /&gt;
      local x, y, z = getElementPosition ( luckyBugger ) -- retrive the player's position&lt;br /&gt;
      createVehicle ( 432, x, y, z + 10 ) -- create the tank 10 units above them&lt;br /&gt;
      outputChatBox ( &amp;quot;You got Tank'd!&amp;quot;, luckyBugger )&lt;br /&gt;
end&lt;br /&gt;
--Attach the 'scriptCreateTank' function to the &amp;quot;tank&amp;quot; command&lt;br /&gt;
addCommandHandler ( &amp;quot;tank&amp;quot;, scriptCreateTank )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 4: Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
Este exemplo adiciona o comando ''/spveh'' para spawnar um modelo de um carro nas coordenadas fornceidas. Se qualquer um dos carros criados por este comando explodir, ele será respawnado no lugar onde foi criado.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Do not allow the following IDs to be spawned&lt;br /&gt;
local forbiddenCars = { [435] = true, [441] = true, [449] = true, [450] = true, [464] = true, [465] = true, [501] = true,&lt;br /&gt;
                        [537] = true, [538] = true, [564] = true, [569] = true, [570] = true, [584] = true, [590] = true,&lt;br /&gt;
                        [591] = true, [594] = true, [606] = true, [607] = true, [608] = true, [610] = true, [611] = true }&lt;br /&gt;
&lt;br /&gt;
local cmdVehRoot = createElement(&amp;quot;commandVehicles&amp;quot;) -- Dummy element containing the cars that this command has created&lt;br /&gt;
addCommandHandler(&amp;quot;spveh&amp;quot;,&lt;br /&gt;
    function(player, cmd, modelID, x, y, z, platetext)&lt;br /&gt;
        -- Check whether arguments are correct&lt;br /&gt;
        local modelID, x, y, z = tonumber(modelID), tonumber(x), tonumber(y), tonumber(z)&lt;br /&gt;
        if modelID and x and y and z then&lt;br /&gt;
            -- Do not continue if we shouldn't&lt;br /&gt;
            if forbiddenCars[modelID] then&lt;br /&gt;
                outputChatBox(&amp;quot;The car model you provided is not allowed.&amp;quot;, player, 255, 0, 0)&lt;br /&gt;
                return&lt;br /&gt;
            end&lt;br /&gt;
            local platetext = type(platetext) == &amp;quot;string&amp;quot; and platetext or &amp;quot;PRIVATE&amp;quot;&lt;br /&gt;
            -- Create the actual vehicle and set it as a children of our dummy element&lt;br /&gt;
            setElementParent(createVehicle(modelID, x, y, z, 0, 0, 0, platetext), cmdVehRoot)&lt;br /&gt;
            -- Inform the player about what we did&lt;br /&gt;
            outputChatBox(&amp;quot;You have created a &amp;quot; .. getVehicleNameFromModel(modelID) .. &amp;quot; (model ID: &amp;quot; .. modelID .. &amp;quot;) at &amp;quot; .. table.concat({ x, y, z }, &amp;quot;, &amp;quot;) .. &amp;quot; with numberplate &amp;quot; .. platetext .. &amp;quot; successfully.&amp;quot;, player, 0, 255, 0)&lt;br /&gt;
        else&lt;br /&gt;
            outputChatBox(&amp;quot;Syntax: /&amp;quot; .. cmd .. &amp;quot; (modelID) (x) (y) (z) [numberplate]&amp;quot;, player, 255, 255, 255)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
-- If a vehicle that has been created using the command blows up, respawn it where it was created&lt;br /&gt;
addEventHandler(&amp;quot;onVehicleExplode&amp;quot;, cmdVehRoot,&lt;br /&gt;
    function()&lt;br /&gt;
        respawnVehicle(source)&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 5: Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
Este script spawna um tanque em cima do jogador local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function scriptCreateTank ( commandName )&lt;br /&gt;
      local luckyBugger = getLocalPlayer() -- get the local player&lt;br /&gt;
      local x, y, z = getElementPosition ( luckyBugger ) -- retrive the player's position&lt;br /&gt;
      createVehicle ( 432, x, y, z + 10 ) -- create the tank 10 units above them&lt;br /&gt;
      outputChatBox ( &amp;quot;You got Tank'd!&amp;quot;, 255, 0, 0)&lt;br /&gt;
end&lt;br /&gt;
--Attach the 'scriptCreateTank' function to the &amp;quot;tank&amp;quot; command&lt;br /&gt;
addCommandHandler ( &amp;quot;tank&amp;quot;, scriptCreateTank )&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;
{{New items|4.0132|1.4|&lt;br /&gt;
Este é um exemplo de como essa função é usada em OOP(POO - Programação Orientada a Objeto)&lt;br /&gt;
&amp;lt;section name=&amp;quot;OOP server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This script will create an Infernus at the center (0, 0, 3) of San Andreas upon execution.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler( &amp;quot;onResourceStart&amp;quot;, resourceRoot,&lt;br /&gt;
    function()&lt;br /&gt;
        infernus = Vehicle(411, Vector3(0, 0, 3)); -- Create an Infernus and spawn it at the middle of SA.&lt;br /&gt;
        infernus:setColor(0, 0, 0); -- Set its color to black.&lt;br /&gt;
        infernus.damageProof = true; -- Make it damage proof&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
	&lt;br /&gt;
addCommandHandler( &amp;quot;blowinfernus&amp;quot;,&lt;br /&gt;
    function(p)&lt;br /&gt;
        if not infernus.blown then -- Check if the Infernus is blown up or not.&lt;br /&gt;
            infernus:blow();&lt;br /&gt;
        else -- Ouch, it's blown up, let's output an error to the player.&lt;br /&gt;
            outputChatBox( &amp;quot;The Infernus has already been blown up by you.&amp;quot;, p, 255, 0, 0, false );&lt;br /&gt;
        end&lt;br /&gt;
    end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Veja também==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Object_Properties&amp;diff=66495</id>
		<title>Template:Object Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Object_Properties&amp;diff=66495"/>
		<updated>2020-05-10T14:42:14Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Remove accuracy as it does not exist&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding-left:20px&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;quot;mass&amp;quot; - ''float''&lt;br /&gt;
* &amp;quot;turn_mass&amp;quot; - ''float''&lt;br /&gt;
* &amp;quot;air_resistance&amp;quot; - ''float''&lt;br /&gt;
* &amp;quot;elasticity&amp;quot; - ''float''&lt;br /&gt;
* &amp;quot;center_of_mass&amp;quot; - ''Vector3D'' - '''(x, y, z)'''&lt;br /&gt;
* &amp;quot;buoyancy&amp;quot; - ''float''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetGravity&amp;diff=66449</id>
		<title>SetGravity</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetGravity&amp;diff=66449"/>
		<updated>2020-05-08T10:37:12Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function sets the server's gravity level.&lt;br /&gt;
{{Note|&lt;br /&gt;
*This will override [[setPedGravity]] applied to peds/players.&lt;br /&gt;
*Setting the gravity level to different values on clients can cause animation bugs (players floating across ground because players see different fall animation.)}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool setGravity ( float level )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''level''': The level of gravity (default is '''0.008''').&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if gravity was changed, ''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;
function grav ( sourcePlayer, command, level )&lt;br /&gt;
    local level = tonumber(level)&lt;br /&gt;
    if (not level) then return end&lt;br /&gt;
    setGravity ( tonumber(level) )&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;setgravity&amp;quot;, grav )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{World functions}}&lt;br /&gt;
&lt;br /&gt;
[[ru:setGravity]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Git_Branching_Models&amp;diff=48811</id>
		<title>Git Branching Models</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Git_Branching_Models&amp;diff=48811"/>
		<updated>2016-08-09T18:33:43Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Our current branching model is not optimal and makes keeping track of versions hard.&lt;br /&gt;
This page discusses various branching models.&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
=== Current SVN-like Model ===&lt;br /&gt;
* ''master'' is the development branch which contains incompatible code as well&lt;br /&gt;
* A version branch e.g. ''1.5.2'' is created when releasing a new stable version&lt;br /&gt;
* 'Stable commits' are merged from ''master'' frequently (==&amp;gt; rolling release like)&lt;br /&gt;
&lt;br /&gt;
===== Pros =====&lt;br /&gt;
* Easy management of incompatible code (==&amp;gt; rolling-release works well)&lt;br /&gt;
&lt;br /&gt;
===== Cons =====&lt;br /&gt;
* Prone to losing track of differences between master and version branches&lt;br /&gt;
* Doesn't integrate well with popular Git models implemented on e.g. GitHub&lt;br /&gt;
&lt;br /&gt;
=== Feature Branches ===&lt;br /&gt;
* New, maybe incompatible features are implemented in separate branches and merged as soon as they are stable&lt;br /&gt;
* ''master'' is mostly stable&lt;br /&gt;
* When releasing a new version, a tag is created from master&lt;br /&gt;
* Release intervals are smaller&lt;br /&gt;
&lt;br /&gt;
=== Feature Branches Example ===&lt;br /&gt;
&lt;br /&gt;
* Current version is 1.5 &lt;br /&gt;
* Someone wants to implement complicated things which are netcode-incompatible with 1.5&lt;br /&gt;
* Someone creates feature/complicated-things branched from master&lt;br /&gt;
* Work is now done on feature/complicated-things&lt;br /&gt;
* Once feature/complicated-things is ready it needs to wait for 1.6&lt;br /&gt;
* (time passes)&lt;br /&gt;
* (1.6 is ready for release)&lt;br /&gt;
* master is tagged as 1.5.x-final marking the end of 1.5 compatibility&lt;br /&gt;
* master version number is increased to 1.6&lt;br /&gt;
* feature/complicated-things is merged into master&lt;br /&gt;
* master build gets released to the public&lt;br /&gt;
&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &amp;quot;Git&amp;quot;-way (==&amp;gt; integrates well with GitHub)&lt;br /&gt;
* No weird cherry-picking is necessary&lt;br /&gt;
&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* We have to modify our nightly system and build server settings to support feature branches somehow (required for properly distributing tests)&lt;br /&gt;
** We could probably use Travis CI and AppVeyor to easily maintain public builds for feature branches [[User:Sbx320|Sbx320]] ([[User talk:Sbx320|talk]]) 18:33, 9 August 2016 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* My concerns over Feature Branches are largely based upon any added bureaucracy or complexity to making contributions.  --[[User:Talidan|Talidan]] ([[User talk:Talidan|talk]]) 18:04, 9 August 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Git_Branching_Models&amp;diff=48810</id>
		<title>Git Branching Models</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Git_Branching_Models&amp;diff=48810"/>
		<updated>2016-08-09T18:30:10Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Our current branching model is not optimal and makes keeping track of versions hard.&lt;br /&gt;
This page discusses various branching models.&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
=== Current SVN-like Model ===&lt;br /&gt;
* ''master'' is the development branch which contains incompatible code as well&lt;br /&gt;
* A version branch e.g. ''1.5.2'' is created when releasing a new stable version&lt;br /&gt;
* 'Stable commits' are merged from ''master'' frequently (==&amp;gt; rolling release like)&lt;br /&gt;
&lt;br /&gt;
===== Pros =====&lt;br /&gt;
* Easy management of incompatible code (==&amp;gt; rolling-release works well)&lt;br /&gt;
&lt;br /&gt;
===== Cons =====&lt;br /&gt;
* Prone to losing track of differences between master and version branches&lt;br /&gt;
* Doesn't integrate well with popular Git models implemented on e.g. GitHub&lt;br /&gt;
&lt;br /&gt;
=== Feature Branches ===&lt;br /&gt;
* New, maybe incompatible features are implemented in separate branches and merged as soon as they are stable&lt;br /&gt;
* ''master'' is mostly stable&lt;br /&gt;
* When releasing a new version, a tag is created from master&lt;br /&gt;
* Release intervals are smaller&lt;br /&gt;
&lt;br /&gt;
=== Example (adding a big feature) ===&lt;br /&gt;
&lt;br /&gt;
* Current version is 1.5 &lt;br /&gt;
* Someone wants to implement complicated things which are netcode-incompatible with 1.5&lt;br /&gt;
* Someone creates feature/complicated-things branched from master&lt;br /&gt;
* Work is now done on feature/complicated-things&lt;br /&gt;
* Once feature/complicated-things is ready it needs to wait for 1.6&lt;br /&gt;
* (time passes)&lt;br /&gt;
* (1.6 is ready for release)&lt;br /&gt;
* master is tagged as 1.5.x-final marking the end of 1.5 compatibility&lt;br /&gt;
* master version number is increased to 1.6&lt;br /&gt;
* feature/complicated-things is merged into master&lt;br /&gt;
* master build gets released to the public&lt;br /&gt;
&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &amp;quot;Git&amp;quot;-way (==&amp;gt; integrates well with GitHub)&lt;br /&gt;
* No weird cherry-picking is necessary&lt;br /&gt;
&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* We have to modify our nightly system and build server settings to support feature branches somehow (required for properly distributing tests)&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
* My concerns over Feature Branches are largely based upon any added bureaucracy or complexity to making contributions.  --[[User:Talidan|Talidan]] ([[User talk:Talidan|talk]]) 18:04, 9 August 2016 (UTC)&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=47679</id>
		<title>Server Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=47679"/>
		<updated>2016-06-22T11:29:17Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Reverted edits by Ahmed Ly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This page lists all '''server-side''' scripting [[event]]s that have been implemented and are available in the Deathmatch mod.&lt;br /&gt;
&lt;br /&gt;
To request a function or event, use [[Requested Functions and Events]].&lt;br /&gt;
&lt;br /&gt;
'''Client-side scripting events can be found here: [[Client Scripting Events]]&lt;br /&gt;
&lt;br /&gt;
==Client events==&lt;br /&gt;
{{Client_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape events==&lt;br /&gt;
{{Colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==Element events==&lt;br /&gt;
{{Element_events}}&lt;br /&gt;
&lt;br /&gt;
==Marker events==&lt;br /&gt;
{{Marker_events}}&lt;br /&gt;
&lt;br /&gt;
==Pickup events==&lt;br /&gt;
{{Pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==Player events==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
==Ped events==&lt;br /&gt;
{{Ped_events}}&lt;br /&gt;
&lt;br /&gt;
== Resource events==&lt;br /&gt;
{{Resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Server events==&lt;br /&gt;
{{Server_events}}&lt;br /&gt;
&lt;br /&gt;
== Vehicle events ==&lt;br /&gt;
{{Vehicle_events}}&lt;br /&gt;
&lt;br /&gt;
== Weapon events ==&lt;br /&gt;
{{Weapon_events}}&lt;br /&gt;
&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[fr:Server Scripting Events]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CountPlayersInTeam&amp;diff=46592</id>
		<title>CountPlayersInTeam</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CountPlayersInTeam&amp;diff=46592"/>
		<updated>2016-02-10T02:08:24Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Undo revision 46586 by DABL (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function is for returning the number of players in the specified team.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int countPlayersInTeam ( team theTeam )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[team]]:countPlayers|playerCount|}}&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
*'''theTeam:''' The team you wish to retrieve the player count of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an integer containing the number of players in the team, ''false'' if it could not be retrieved.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 1&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
This example adds a command in the console to find out how many players are on your team.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function outputTeamSize ( source, commandName )&lt;br /&gt;
	-- Get player's team&lt;br /&gt;
	local theTeam = getPlayerTeam ( source )&lt;br /&gt;
	-- If the player is in any team&lt;br /&gt;
	if theTeam then&lt;br /&gt;
		-- Tell the player how big his team is&lt;br /&gt;
		outputChatBox ( &amp;quot;Your team has &amp;quot; .. countPlayersInTeam ( theTeam ) .. &amp;quot; players.&amp;quot;, source )&lt;br /&gt;
	else&lt;br /&gt;
		outputChatBox ( &amp;quot;You're not in a team.&amp;quot;, source )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;teamsize&amp;quot;, outputTeamSize )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 2&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
This example adds a command in the console to find out how many players are on your team, clientside&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function outputTeamSize ( commandName )&lt;br /&gt;
	-- Get player's team&lt;br /&gt;
	local theTeam = getPlayerTeam ( getLocalPlayer() )&lt;br /&gt;
	-- If the player is in any team&lt;br /&gt;
	if team then&lt;br /&gt;
		-- Tell the player how big his team is&lt;br /&gt;
		outputChatBox ( &amp;quot;Your team has &amp;quot; .. countPlayersInTeam ( theTeam ) .. &amp;quot; players.&amp;quot; )&lt;br /&gt;
	else&lt;br /&gt;
		outputChatBox ( &amp;quot;You're not in a team.&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;teamsize&amp;quot;, outputTeamSize )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 3&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
This example balances a gamemode, to ensure equal number of players between the &amp;quot;grove&amp;quot; and &amp;quot;ballas&amp;quot; teams.  This could be triggered when a player joins the server, or for all players currently in the server when the gamemode starts.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function balanceTeams ( thePlayer )&lt;br /&gt;
	--get the team pointers from their names&lt;br /&gt;
	local groveTeam = getTeamFromName ( &amp;quot;grove&amp;quot; )&lt;br /&gt;
	local ballasTeam = getTeamFromName ( &amp;quot;ballas&amp;quot; )&lt;br /&gt;
	--count the number of players in each team, and store them&lt;br /&gt;
	local groveCount = countPlayersInTeam ( groveTeam )&lt;br /&gt;
	local ballasCount = countPlayersInTeam ( ballasTeam )&lt;br /&gt;
	if groveCount == ballasCount then --if the teams are equal&lt;br /&gt;
		setPlayerTeam ( thePlayer , groveTeam ) --place the player in grove&lt;br /&gt;
	elseif groveCount &amp;gt; ballasCount then --if there are more in grove&lt;br /&gt;
		setPlayerTeam ( thePlayer , ballasTeam ) --place him in ballas&lt;br /&gt;
	elseif groveCount &amp;lt; ballasCount then --if there are more in ballas&lt;br /&gt;
		setPlayerTeam ( thePlayer , groveTeam ) --place him in grove.&lt;br /&gt;
	end&lt;br /&gt;
end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Team functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=46591</id>
		<title>Server Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=46591"/>
		<updated>2016-02-10T02:07:56Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Reverted edits by DABL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This page lists all '''server-side''' scripting [[event]]s that have been implemented and are available in the Deathmatch mod.&lt;br /&gt;
&lt;br /&gt;
To request a function or event, use [[Requested Functions and Events]].&lt;br /&gt;
&lt;br /&gt;
'''Client-side scripting events can be found here: [[Client Scripting Events]]&lt;br /&gt;
&lt;br /&gt;
==Client events==&lt;br /&gt;
{{Client_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape events==&lt;br /&gt;
{{Colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==Element events==&lt;br /&gt;
{{Element_events}}&lt;br /&gt;
&lt;br /&gt;
==Marker events==&lt;br /&gt;
{{Marker_events}}&lt;br /&gt;
&lt;br /&gt;
==Pickup events==&lt;br /&gt;
{{Pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==Player events==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
==Ped events==&lt;br /&gt;
{{Ped_events}}&lt;br /&gt;
&lt;br /&gt;
== Resource events==&lt;br /&gt;
{{Resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Server events==&lt;br /&gt;
{{Server_events}}&lt;br /&gt;
&lt;br /&gt;
== Vehicle events ==&lt;br /&gt;
{{Vehicle_events}}&lt;br /&gt;
&lt;br /&gt;
== Weapon events ==&lt;br /&gt;
{{Weapon_events}}&lt;br /&gt;
&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[fr:Server Scripting Events]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetBrowserAjaxHandler&amp;diff=45671</id>
		<title>SetBrowserAjaxHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetBrowserAjaxHandler&amp;diff=45671"/>
		<updated>2015-08-16T12:03:38Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: POST was fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client_function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6||&lt;br /&gt;
This function provides a requestable ajax resource for Lua/Javascript communication for a [[Element/Browser|browser]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setBrowserAjaxHandler ( browser webBrowser, string url[, function handler] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/Browser|browser]]:setAjaxHandler||setBrowserAjaxHandler }}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The web browser which will execute the Javascript code&lt;br /&gt;
*'''url:''' The URL endpoint to handle&lt;br /&gt;
{{Warning|Do not use the same path as an existing file as url parameter. Ajax handlers have a higher priority than regular files, which will lead to inaccesibility of the original file if an ajax handler is attached to the same path. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''handler:''' The function to call if the webBrowser attempts to open the ajax endpoint. If this parameter is nil or omitted, the ajax handler for the url will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Additional Information===&lt;br /&gt;
The handling function (if given), will be called with two tables, representing GET and POST parameters. The handling function may return a string which will be provided to the browser as file content.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example will output all GET Parameters as well the number of requests made to the ajax endpoint.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
 &lt;br /&gt;
--Let's create a new browser in local mode. We will not be able to load an external URL.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, true, false)&lt;br /&gt;
 &lt;br /&gt;
--This is the function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local counter = 0&lt;br /&gt;
setBrowserAjaxHandler(webBrowser, &amp;quot;ajax.html&amp;quot;,&lt;br /&gt;
	function(get, post)&lt;br /&gt;
		counter = counter+1&lt;br /&gt;
		local output = string.format(&amp;quot;&amp;lt;pre&amp;gt;You have requested this page %d times.\n&amp;quot;, counter)&lt;br /&gt;
		-- List Parameters&lt;br /&gt;
		local getParameters = &amp;quot;Get Parameters: \n&amp;quot;&lt;br /&gt;
		for k, v in pairs(get) do &lt;br /&gt;
			getParameters = getParameters..string.format(&amp;quot;[%s] = %s\n&amp;quot;, k, v)&lt;br /&gt;
		end &lt;br /&gt;
		&lt;br /&gt;
		output = output..getParameters..&amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;&lt;br /&gt;
		return output&lt;br /&gt;
	end&lt;br /&gt;
);&lt;br /&gt;
 &lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load our file.&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;ajax.html?hello=world&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the ajax handler could be created/removed.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetBrowserAjaxHandler&amp;diff=45646</id>
		<title>SetBrowserAjaxHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetBrowserAjaxHandler&amp;diff=45646"/>
		<updated>2015-08-15T23:15:32Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Added Warning about reusing paths&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client_function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6||&lt;br /&gt;
This function provides a requestable ajax resource for Lua/Javascript communication for a [[Element/Browser|browser]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setBrowserAjaxHandler ( browser webBrowser, string url[, function handler] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/Browser|browser]]:setAjaxHandler||setBrowserAjaxHandler }}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The web browser which will execute the Javascript code&lt;br /&gt;
*'''url:''' The URL endpoint to handle&lt;br /&gt;
{{Warning|Do not use the same path as an existing file as url parameter. Ajax handlers have a higher priority than regular files, which will lead to inaccesibility of the original file if an ajax handler is attached to the same path. }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''handler:''' The function to call if the webBrowser attempts to open the ajax endpoint. If this parameter is nil or omitted, the ajax handler for the url will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Additional Information===&lt;br /&gt;
The handling function (if given), will be called with two tables, representing GET and POST parameters. The handling function may return a string which will be provided to the browser as file content.&lt;br /&gt;
{{Warning|Due to CEF Limitations POST parameters do not work and will (until fixed) always be empty.}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example will output all GET Parameters as well the number of requests made to the ajax endpoint.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
 &lt;br /&gt;
--Let's create a new browser in local mode. We will not be able to load an external URL.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, true, false)&lt;br /&gt;
 &lt;br /&gt;
--This is the function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local counter = 0&lt;br /&gt;
setBrowserAjaxHandler(webBrowser, &amp;quot;ajax.html&amp;quot;,&lt;br /&gt;
	function(get, post)&lt;br /&gt;
		counter = counter+1&lt;br /&gt;
		local output = string.format(&amp;quot;&amp;lt;pre&amp;gt;You have requested this page %d times.\n&amp;quot;, counter)&lt;br /&gt;
		-- List Parameters&lt;br /&gt;
		local getParameters = &amp;quot;Get Parameters: \n&amp;quot;&lt;br /&gt;
		for k, v in pairs(get) do &lt;br /&gt;
			getParameters = getParameters..string.format(&amp;quot;[%s] = %s\n&amp;quot;, k, v)&lt;br /&gt;
		end &lt;br /&gt;
		&lt;br /&gt;
		output = output..getParameters..&amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;&lt;br /&gt;
		return output&lt;br /&gt;
	end&lt;br /&gt;
);&lt;br /&gt;
 &lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load our file.&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;ajax.html?hello=world&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the ajax handler could be created/removed.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetElementStreamable&amp;diff=45623</id>
		<title>SetElementStreamable</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetElementStreamable&amp;diff=45623"/>
		<updated>2015-08-13T15:57:17Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Fixed documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}} &lt;br /&gt;
__NOTOC__ &lt;br /&gt;
This function can be used to disable streaming for an element. This will make sure the element is not virtualized (streamed out from GTA) when the player moves far away from it. This function only works in elements with a physical representation in the world (entities), such as [[player|players]], [[ped|peds]], [[vehicle|vehicles]] and [[object|objects]].&lt;br /&gt;
{{Tip|'''Always use this function with caution'''. Not doing so can cause the following problems:&lt;br /&gt;
* There is a limit of elements that can be streamed in safely for every GTA entity type. If you bypass said limit by using this function, the client can experience problems of disappearing objects and unstability when trying to stream in new elements of that type.&lt;br /&gt;
* In general, if you disable too many elements (of the same type or not) to stream out, GTA will always try to render them, so it can cause a noticeable FPS drop.}}&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 setElementStreamable ( element theElement, bool streamable ) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{New feature/item|3.0141|1.4.0|6987|{{OOP||[[element]]:setStreamable|streamable|isElementStreamable}}}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theElement:''' The element you wish to set the streaming of&lt;br /&gt;
*'''streamable:''' ''true'' if this element should stream in/out like normal, ''false'' if it should always be streamed in.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns whether the element could be set to be streamable.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example creates an [[object]] at the center of the map which will always be streamed in when the resource which contains it starts.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function testNonStreamableObjects()&lt;br /&gt;
    local object = createObject ( 1097, 0, 0, 5 )&lt;br /&gt;
    setElementStreamable ( object, false ) -- Make the object always be streamed in&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientResourceStart&amp;quot;, resourceRoot, testNonStreamableObjects )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_element_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:CEF_functions&amp;diff=45622</id>
		<title>Template:CEF functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:CEF_functions&amp;diff=45622"/>
		<updated>2015-08-13T15:07:12Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Added setBrowserAjaxHandler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{New items|3.0150|1.5|&lt;br /&gt;
*[[createBrowser]]&lt;br /&gt;
*[[guiCreateBrowser]]&lt;br /&gt;
*[[guiGetBrowser]]&lt;br /&gt;
*[[executeBrowserJavascript]]&lt;br /&gt;
*[[focusBrowser]]&lt;br /&gt;
*[[isBrowserFocused]]&lt;br /&gt;
*[[getBrowserProperty]]&lt;br /&gt;
*[[getBrowserTitle]]&lt;br /&gt;
*[[getBrowserURL]]&lt;br /&gt;
*[[injectBrowserMouseDown]]&lt;br /&gt;
*[[injectBrowserMouseMove]]&lt;br /&gt;
*[[injectBrowserMouseUp]]&lt;br /&gt;
*[[injectBrowserMouseWheel]]&lt;br /&gt;
*[[isBrowserLoading]]&lt;br /&gt;
*[[loadBrowserURL]]&lt;br /&gt;
*[[setBrowserProperty]]&lt;br /&gt;
*[[setBrowserRenderingPaused]]&lt;br /&gt;
*[[setBrowserVolume]]&lt;br /&gt;
*[[getBrowserSettings]]&lt;br /&gt;
*[[isBrowserDomainBlocked]]&lt;br /&gt;
*[[requestBrowserDomains]]&lt;br /&gt;
|}}&lt;br /&gt;
{{New items|3.0160|1.6|&lt;br /&gt;
*[[setBrowserAjaxHandler]]&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>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetBrowserAjaxHandler&amp;diff=45621</id>
		<title>SetBrowserAjaxHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetBrowserAjaxHandler&amp;diff=45621"/>
		<updated>2015-08-13T15:05:16Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Created page with &amp;quot;__NOTOC__ {{Client_function}} {{New feature/item|3.0160|1.6|| This function provides a requestable ajax resource for Lua/Javascript communication for a Element/Browser|brows...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client_function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6||&lt;br /&gt;
This function provides a requestable ajax resource for Lua/Javascript communication for a [[Element/Browser|browser]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setBrowserAjaxHandler ( browser webBrowser, string url[, function handler] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/Browser|browser]]:setAjaxHandler||setBrowserAjaxHandler }}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''webBrowser:''' The web browser which will execute the Javascript code&lt;br /&gt;
*'''url:''' The URL endpoint to handle &lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''handler:''' The function to call if the webBrowser attempts to open the ajax endpoint. If this parameter is nil or omitted, the ajax handler for the url will be deleted.&lt;br /&gt;
&lt;br /&gt;
===Additional Information===&lt;br /&gt;
The handling function (if given), will be called with two tables, representing GET and POST parameters. The handling function may return a string which will be provided to the browser as file content.&lt;br /&gt;
{{Warning|Due to CEF Limitations POST parameters do not work and will (until fixed) always be empty.}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example will output all GET Parameters as well the number of requests made to the ajax endpoint.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
 &lt;br /&gt;
--Let's create a new browser in local mode. We will not be able to load an external URL.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, true, false)&lt;br /&gt;
 &lt;br /&gt;
--This is the function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local counter = 0&lt;br /&gt;
setBrowserAjaxHandler(webBrowser, &amp;quot;ajax.html&amp;quot;,&lt;br /&gt;
	function(get, post)&lt;br /&gt;
		counter = counter+1&lt;br /&gt;
		local output = string.format(&amp;quot;&amp;lt;pre&amp;gt;You have requested this page %d times.\n&amp;quot;, counter)&lt;br /&gt;
		-- List Parameters&lt;br /&gt;
		local getParameters = &amp;quot;Get Parameters: \n&amp;quot;&lt;br /&gt;
		for k, v in pairs(get) do &lt;br /&gt;
			getParameters = getParameters..string.format(&amp;quot;[%s] = %s\n&amp;quot;, k, v)&lt;br /&gt;
		end &lt;br /&gt;
		&lt;br /&gt;
		output = output..getParameters..&amp;quot;&amp;lt;/pre&amp;gt;&amp;quot;&lt;br /&gt;
		return output&lt;br /&gt;
	end&lt;br /&gt;
);&lt;br /&gt;
 &lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load our file.&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;ajax.html?hello=world&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the ajax handler could be created/removed.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateBrowser&amp;diff=45378</id>
		<title>CreateBrowser</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateBrowser&amp;diff=45378"/>
		<updated>2015-07-02T11:17:43Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Fixed a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client_function}}&lt;br /&gt;
{{New feature/item|3.0150|1.5||&lt;br /&gt;
This function creates a new web [[Element/Browser|browser]] element.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;element createBrowser ( int width, int height, bool isLocal [, bool transparent = false ] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[Element/Browser|Browser]]}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''width:''' The browser's native width&lt;br /&gt;
*'''height:''' The browser's native height&lt;br /&gt;
*'''isLocal:''' See examples&lt;br /&gt;
''&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''transparent:''' ''true'' if you want the browser transparent, ''false'' for opaque.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the [[browser]] element was successfully created, ''false'' otherwise. Returns also ''false'', if the user disabled remote pages and ''isLocal'' was set to ''false''.&lt;br /&gt;
&lt;br /&gt;
==Local Example==&lt;br /&gt;
This example shows you how to create a fullscreen Webbrowser (showing a local html file) without input-handling.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in local mode. We will not be able to load an external URL.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, true, false)&lt;br /&gt;
	&lt;br /&gt;
--This is the function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load our file.&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;html/site.html&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Remote Example==&lt;br /&gt;
This example shows you how to create a fullscreen Webbrowser (showing youtube.com) without input-handling.&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, that youtube.com is on the global whitelist. If you want to load a domain/page that is not on the global whitelist, you have to request it with [[requestBrowserDomains|requestBrowserDomains]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--In order to render the browser on the full screen, we need to know the dimensions.&lt;br /&gt;
local screenWidth, screenHeight = guiGetScreenSize()&lt;br /&gt;
&lt;br /&gt;
--Let's create a new browser in remote mode.&lt;br /&gt;
local webBrowser = createBrowser(screenWidth, screenHeight, false, false)&lt;br /&gt;
	&lt;br /&gt;
--Function to render the browser.&lt;br /&gt;
function webBrowserRender()&lt;br /&gt;
	--Render the browser on the full size of the screen.&lt;br /&gt;
	dxDrawImage(0, 0, screenWidth, screenHeight, webBrowser, 0, 0, 0, tocolor(255,255,255,255), true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--The event onClientBrowserCreated will be triggered, after the browser has been initialized.&lt;br /&gt;
--After this event has been triggered, we will be able to load our URL and start drawing.&lt;br /&gt;
addEventHandler(&amp;quot;onClientBrowserCreated&amp;quot;, webBrowser, &lt;br /&gt;
	function()&lt;br /&gt;
		--After the browser has been initialized, we can load www.youtube.com&lt;br /&gt;
		loadBrowserURL(webBrowser, &amp;quot;http://www.youtube.com&amp;quot;)&lt;br /&gt;
		--Now we can start to render the browser.&lt;br /&gt;
		addEventHandler(&amp;quot;onClientRender&amp;quot;, root, webBrowserRender)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{CEF_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetCameraTarget&amp;diff=44823</id>
		<title>SetCameraTarget</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetCameraTarget&amp;diff=44823"/>
		<updated>2015-03-30T01:46:18Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function allows you to set a player's camera to follow other elements instead. Currently supported element type is:&lt;br /&gt;
*[[Player]]s&lt;br /&gt;
&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 setCameraTarget ( player thePlayer [, player target = nil ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[player]]:setCameraTarget|cameraTarget|getCameraTarget}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player whose camera you wish to modify.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''target:''' The player who you want the camera to follow. If none is specified, the camera will target the player.&lt;br /&gt;
'''Note:''' setCameraTarget will behave strangely if the target you want the camera to follow is inside a vehicle that has hydraulics (upgrade id: 1087) added server sided and if the target is not you.&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client 1&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 setCameraTarget ( player target )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''target:''' The player who you want the local camera to follow.&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4.0132|1.3.1|5212|&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client 2&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This syntax mantains the player targeted by the camera, but makes the camera look at the specified coordinates. It has no effect when the camera doesn't have a target.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool setCameraTarget ( float targetX, float targetY, float targetZ )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''targetX, targetY, targetZ:''' The target position that you want the local camera to look at.&lt;br /&gt;
&amp;lt;/section&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the function was successful, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This is an example of how one could implement a spectator function. Using the left and right arrow keys you can view other players. Note that this code isn't complete as it doesn't take into account joining or quitting players.&lt;br /&gt;
&amp;lt;section class=&amp;quot;client&amp;quot; name=&amp;quot;Client script&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;
g_Players = getElementsByType(&amp;quot;player&amp;quot;)        -- get a list of all players in the server&lt;br /&gt;
for i,aPlayer in ipairs(g_Players) do          -- find out what index the local player has in the list&lt;br /&gt;
    if aPlayer == getLocalPlayer() then&lt;br /&gt;
        g_CurrentSpectated = i&lt;br /&gt;
        break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function spectatePrevious()                    -- decrement the spectate index and spectate the corresponding player&lt;br /&gt;
     if g_CurrentSpectated == 1 then&lt;br /&gt;
         g_CurrentSpectated = #g_Players&lt;br /&gt;
     else&lt;br /&gt;
         g_CurrentSpectated = g_CurrentSpectated - 1&lt;br /&gt;
     end&lt;br /&gt;
    setCameraTarget(g_Players[g_CurrentSpectated])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function spectateNext()                        -- increment the spectate index and spectate the corresponding player&lt;br /&gt;
     if g_CurrentSpectated == #g_Players then&lt;br /&gt;
         g_CurrentSpectated = 1&lt;br /&gt;
     else&lt;br /&gt;
         g_CurrentSpectated = g_CurrentSpectated + 1&lt;br /&gt;
     end&lt;br /&gt;
    setCameraTarget(g_Players[g_CurrentSpectated])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Bind above functions to arrow keys&lt;br /&gt;
bindKey(&amp;quot;arrow_l&amp;quot;, &amp;quot;down&amp;quot;, spectatePrevious)&lt;br /&gt;
bindKey(&amp;quot;arrow_r&amp;quot;, &amp;quot;down&amp;quot;, spectateNext)&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;
{{Camera functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Useful_Functions&amp;diff=43494</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=43494"/>
		<updated>2014-12-26T21:04:55Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Added attachEffect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[attachEffect]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[bindControlKeys]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[callClientFunction]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[centerWindow]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[Check]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[convertNumber]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts and formats large numbers.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertServerTickToTimeStamp]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[coroutine.resume]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[dxDrawAnimWindow]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[dxDrawCircle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a number of 2D lines in order to achieve a circle shape on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawColorText]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws 2D text with hexadecimal support on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawEmptyRec]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws an empty 2D rectangle on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawGifImage]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D image in GTA world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRectangle3D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D rectangle in GTA world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxGetFontSizeFromHeight]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the height of a font.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[findRotation]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[GenerateString]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the age of a given birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getAlivePlayers (Client)|getAlivePlayers]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the alive players client-side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getAlivePlayersInTeam]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getBanFromName]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This functions returns the ban of the given playername.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getBoundControls]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getCurrentFPS]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getCursorMoveOn]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getDistanceBetweenPointAndSegment2D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getElementSpeed]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getElementsInDimension]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[getJetpackWeaponsEnabled]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getKeyFromValueInTable]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getOffsetFromXYZ]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getOnlineAdmins]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getOnlineStaff]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a string of all logged-in administrators separated by two whitespace characters.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedMaxHealth]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[getPlayerFromNamePart]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a player from their serial.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerAcls]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all ACL groups on a player.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersByData]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[getPlayerCity]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This functions returns a string containing the player's city name&lt;br /&gt;
*[[getPointFromDistanceRotation]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getResourceSettings]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the resource settings.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getResourceScripts]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the resource scripts.&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-family:'Georgia',sans-serif; 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;
*[[getTeamFromColor]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[getTimestamp]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getValidVehicleModels]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[getVehicleRespawnPosition]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to get the respawn position of a vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getXMLNodes]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns all children of a XML node.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiComboBoxAdjustHeight]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[guiGridListGetSelectedText]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[IfElse]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isElementInPhotograph]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is moving.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementWithinAColShape]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isLeapYear]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isPedAiming]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isPedDrivingVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isPlayerInACL]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isPlayerInTeam]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[isSoundFinished]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a sound element has finished.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleEmpty]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether vehicle is on roof.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[iterElements]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[mathNumber]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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.percent]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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.round]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[multi_check]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[onVehicleWeaponFire]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[renameAclGroup]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[RGBToHex]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[secondsToTimeDesc]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[setAccountName]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function is used to change an existing account's name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setElementSpeed]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[setTableProtected]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[setVehicleGravityPoint]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[smoothMoveCamera]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to create a cinematic camera flight.&lt;br /&gt;
*[[string.count]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
*[[switch]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[table.copy]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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.compare]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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.empty]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether a table is empty.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.map]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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.size]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the absolute size of a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[toHex]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[unbindControlKeys]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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;
*[[var dump]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; 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-family:'Georgia',sans-serif; 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;
[[Category:Useful Functions]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=UnbindKey&amp;diff=42881</id>
		<title>UnbindKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=UnbindKey&amp;diff=42881"/>
		<updated>2014-11-18T08:16:23Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Fixed incorrect bot section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
Removes an existing key bind from the specified player.&lt;br /&gt;
{{Note|unbindKey will only work on binds that were added by the same resource}}&lt;br /&gt;
{{Note|unbindKey on the server may return ''true'' on failure}}&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 unbindKey ( player thePlayer, string key, string keyState, string command )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool unbindKey ( player thePlayer, string key, [ string keyState, function handler  ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player you wish to unbind the key of.&lt;br /&gt;
*'''key:''' The key you wish to unbind. See [[Key names]] for a list of valid key names.&lt;br /&gt;
*'''keyState:''' Can be either:&lt;br /&gt;
**'''&amp;quot;up&amp;quot;:''' If the bound key triggered a function when the key was released&lt;br /&gt;
**'''&amp;quot;down&amp;quot;:''' If the bound key triggered a function when the key was pressed&lt;br /&gt;
**'''&amp;quot;both&amp;quot;:''' If the bound key triggered a function when the key was pressed and released&lt;br /&gt;
*'''command :''' (Syntax 1) The command you wish to unbind.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''keyState:''' is optional in Syntax 2.&lt;br /&gt;
*'''handler:''' (Syntax 2) The function you wish to unbind.&lt;br /&gt;
Note: If you do not specify ''handler'', any instances of ''key'' being bound will be unbound, whatever function they are bound to.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns '''true'' if the key was unbound, ''false'' if it was not previously bound or invalid arguments were passed to the function.&lt;br /&gt;
&amp;lt;/section&amp;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 unbindKey ( string key, string keyState, string command )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool unbindKey ( string key, [ string keyState, function handler ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''key:''' The key you wish to unbind. See [[Key names]] for a list of valid key names.&lt;br /&gt;
*'''keyState:''' Can be either:&lt;br /&gt;
**'''&amp;quot;up&amp;quot;:''' If the bound key triggered a function when the key was released&lt;br /&gt;
**'''&amp;quot;down&amp;quot;:''' If the bound key triggered a function when the key was pressed&lt;br /&gt;
**'''&amp;quot;both&amp;quot;:''' If the bound key triggered a function when the key was pressed and released&lt;br /&gt;
*'''command :''' (Syntax 1) The command you wish to unbind.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''keyState:''' is optional in Syntax 2.&lt;br /&gt;
*'''handler:''' (Syntax 2) The function you wish to unbind.&lt;br /&gt;
Note: If you do not specify ''handler'', any instances of ''key'' being bound will be unbound, whatever function they are bound to.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns '''true'' if the key was unbound, ''false'' if it was not previously bound or invalid arguments were passed to the function.&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&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This function binds the player's ''F1'' key to a function ''goMoo'' which outputs a chat message when pressed. The key is then unbound so that it can effectively only be used once per life.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- define the function that will be called when F1 is pressed&lt;br /&gt;
function goMoo( player )&lt;br /&gt;
    outputChatBox ( getPlayerName ( player ) .. &amp;quot; says Mooooooo!&amp;quot; )&lt;br /&gt;
    unbindKey ( player, &amp;quot;F1&amp;quot;, &amp;quot;down&amp;quot;, goMoo )   -- this function will no longer be triggered by the player, after removing the bind.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function playerSpawn ( )&lt;br /&gt;
    bindKey ( source, &amp;quot;F1&amp;quot;, &amp;quot;down&amp;quot;, goMoo ) -- bind the player's F1 key to the 'goMoo' function defined above&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerSpawn&amp;quot;, getRootElement(), playerSpawn ) -- make the playerSpawn function be called when a player spawns&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;
{{Input functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateBlip&amp;diff=42877</id>
		<title>CreateBlip</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateBlip&amp;diff=42877"/>
		<updated>2014-11-18T07:40:18Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Fixed incorrect bot section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function creates a [[blip]] [[element]], which is displayed as an icon on the client's radar.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{OOP|This function instantiates a class.|Blip||}}&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;
blip createBlip ( float x, float y, float z [, int icon = 0, int size = 2, int r = 255, int g = 0, int b = 0, int a = 255, int ordering = 0, float visibleDistance = 99999.0, visibleTo = getRootElement( ) ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''x:''' The x position of the blip, in world coordinates.&lt;br /&gt;
*'''y:''' The y position of the blip, in world coordinates.&lt;br /&gt;
*'''z:''' The z position of the blip, in world coordinates.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''icon:''' The icon that the radar blips should be. Valid values are:&lt;br /&gt;
{{Blip_Icons}}&lt;br /&gt;
*'''size:''' The size of the radar blip. Only applicable to the ''Marker'' icon. Default is 2.&lt;br /&gt;
*'''r:''' The amount of red in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 255. &lt;br /&gt;
*'''g:''' The amount of green in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 0.&lt;br /&gt;
*'''b:''' The amount of blue in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 0.&lt;br /&gt;
*'''a:''' The amount of alpha in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 255.&lt;br /&gt;
{{New feature/item|3|1.0||&lt;br /&gt;
*'''ordering:''' This defines the blip's Z-level ordering (-32768 - 32767). Default is 0.&lt;br /&gt;
*'''visibleDistance:''' The maximum distance from the camera at which the blip is still visible&lt;br /&gt;
}}&lt;br /&gt;
*'''visibleTo:''' This defines which elements can see the blip. Defaults to visible to everyone. See [[visibility]].&lt;br /&gt;
&amp;lt;/section&amp;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;
blip createBlip ( float x, float y, float z [, int icon = 0, int size = 2, int r = 255, int g = 0, int b = 0, int a = 255, int ordering = 0, float visibleDistance ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''x:''' The x position of the blip, in world coordinates.&lt;br /&gt;
*'''y:''' The y position of the blip, in world coordinates.&lt;br /&gt;
*'''z:''' The z position of the blip, in world coordinates.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''icon:''' The icon that the radar blips should be. Valid values are:&lt;br /&gt;
{{Blip_Icons}}&lt;br /&gt;
*'''size:''' The size of the radar blip. Only applicable to the ''Marker'' icon. Default is 2.&lt;br /&gt;
*'''r:''' The amount of red in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 255. &lt;br /&gt;
*'''g:''' The amount of green in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 0.&lt;br /&gt;
*'''b:''' The amount of blue in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 0.&lt;br /&gt;
*'''a:''' The amount of alpha in the blip's color (0 - 255). Only applicable to the ''Marker'' icon. Default is 255.&lt;br /&gt;
{{New feature/item|3|1.0||&lt;br /&gt;
*'''ordering:''' This defines the blip's Z-level ordering (-32768 - 32767). Default is 0.&lt;br /&gt;
*'''visibleDistance:''' The maximum distance from the camera at which the blip is still visible.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an [[element]] of the [[blip]] if it was created successfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
'''Example 1:''' This example creates a radar blip at a random player's position and makes it so that it is only visible to that player.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Pick a random player&lt;br /&gt;
local myPlayer = getRandomPlayer( )&lt;br /&gt;
-- Retrieve the player's position and store it in the variables x, y and z&lt;br /&gt;
local x, y, z = getElementPosition( myPlayer )&lt;br /&gt;
-- Create a radar blip at the player's position, with a 'cash' icon and only visible to the player&lt;br /&gt;
local myBlip = createBlip( x, y, z, 51, 0, 0, 0, 255, myPlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 2:''' This example attaches a blip to a player. You can attach a blip to an element by just setting the blip's parent to that element.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Pick a random player&lt;br /&gt;
local myPlayer = getRandomPlayer( )&lt;br /&gt;
-- Create a radar blip in the middle of the map&lt;br /&gt;
local myBlip = createBlip( 0, 0, 0 )&lt;br /&gt;
-- Make the player the parent of the blip, so that the blip follows the player around&lt;br /&gt;
setElementParent( myBlip, myPlayer )&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;
{{Blip_functions}}&lt;br /&gt;
&lt;br /&gt;
[[AR:createBlip]]&lt;br /&gt;
[[es:createBlip]]&lt;br /&gt;
[[DE:createBlip]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AttachEffect&amp;diff=40514</id>
		<title>AttachEffect</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AttachEffect&amp;diff=40514"/>
		<updated>2014-07-04T02:44:41Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Created page with &amp;quot;{{Useful Function}} &amp;lt;lowercasetitle/&amp;gt; __NOTOC__ This function allows you to attach an effect to an element. ==Syntax== &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool attachEffect(effect theEffect, element...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function allows you to attach an effect to an element.&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool attachEffect(effect theEffect, element theElement, [vector3 vecOffset])&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required arguments===&lt;br /&gt;
* '''theEffect''': The effect which should be attached.&lt;br /&gt;
* '''theElement''': The element, which the effect should be attached to.&lt;br /&gt;
&lt;br /&gt;
===Optional arguments===&lt;br /&gt;
* '''vecOffset''': a Vector3 describing the offset position similar to attachElements.&lt;br /&gt;
&lt;br /&gt;
===Return===&lt;br /&gt;
Returns true&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local attachedEffects = {}&lt;br /&gt;
&lt;br /&gt;
-- Taken from https://wiki.multitheftauto.com/wiki/GetElementMatrix example&lt;br /&gt;
function getPositionFromElementOffset(element,offX,offY,offZ)&lt;br /&gt;
	local m = getElementMatrix ( element )  -- Get the matrix&lt;br /&gt;
	local x = offX * m[1][1] + offY * m[2][1] + offZ * m[3][1] + m[4][1]  -- Apply transform&lt;br /&gt;
	local y = offX * m[1][2] + offY * m[2][2] + offZ * m[3][2] + m[4][2]&lt;br /&gt;
	local z = offX * m[1][3] + offY * m[2][3] + offZ * m[3][3] + m[4][3]&lt;br /&gt;
	return x, y, z  -- Return the transformed point&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function attachEffect(effect, element, pos)&lt;br /&gt;
	attachedEffects[effect] = { effect = effect, element = element, pos = pos }&lt;br /&gt;
	addEventHandler(&amp;quot;onClientElementDestroy&amp;quot;, effect, function() attachedEffects[effect] = nil end)&lt;br /&gt;
	addEventHandler(&amp;quot;onClientElementDestroy&amp;quot;, element, function() attachedEffects[effect] = nil end)&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientPreRender&amp;quot;, root, 	&lt;br /&gt;
	function()&lt;br /&gt;
		for fx, info in pairs(attachedEffects) do&lt;br /&gt;
			local x, y, z = getPositionFromElementOffset(info.element, info.pos.x, info.pos.y, info.pos.z)&lt;br /&gt;
			setElementPosition(fx, x, y, z)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example attachs a fire on top of the local player's vehicle.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local pov = getPedOccupiedVehicle(localPlayer)&lt;br /&gt;
local fx = createEffect(&amp;quot;fire&amp;quot;, pov.position)&lt;br /&gt;
attachEffect(fx, pov, Vector3(0, 0, 2))&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;
{{Useful_Functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Changes_in_1.4&amp;diff=40219</id>
		<title>Changes in 1.4</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Changes_in_1.4&amp;diff=40219"/>
		<updated>2014-06-24T21:16:03Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Removed duplicate isChatVisible, Added isTrainChainEngine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Changelogs}}&lt;br /&gt;
&lt;br /&gt;
== Main Additions / Changes ==&lt;br /&gt;
* Localization of MTA's menus&lt;br /&gt;
* [[OOP]] classes&lt;br /&gt;
* [[Matrix|Matrices]] and [[Vector|Vectors]]&lt;br /&gt;
* Significantly improved train synchronization&lt;br /&gt;
* Improved all sound functions to work with player elements&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Scripting: New functions ===&lt;br /&gt;
&lt;br /&gt;
====Client====&lt;br /&gt;
* Added [[createEffect]]&lt;br /&gt;
* Added [[setEffectSpeed]]&lt;br /&gt;
* Added [[getEffectSpeed]]&lt;br /&gt;
* Added [[setEffectDensity]]&lt;br /&gt;
* Added [[getEffectDensity]]&lt;br /&gt;
* Added [[getLocalization]]&lt;br /&gt;
* Added [[isChatVisible]]&lt;br /&gt;
* Added [[downloadFile]]&lt;br /&gt;
* Added [[isTrainChainEngine]]&lt;br /&gt;
&lt;br /&gt;
==== Server ====&lt;br /&gt;
* Added [[isBan]]&lt;br /&gt;
* Added [[setBanAdmin]]&lt;br /&gt;
* Added [[setBanReason]]&lt;br /&gt;
* Added [[setUnbanTime]]&lt;br /&gt;
* Added [[getAccountsBySerial]]&lt;br /&gt;
* Added [[getAccountSerial]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Shared (''Client &amp;amp; Server side'') ====&lt;br /&gt;
* Added additional optional parameter bInstant to setPlayerMoney to instantly set the money without counting up/down&lt;br /&gt;
* Fixed toJSON/fromJSON not handling binary data properly&lt;br /&gt;
&lt;br /&gt;
=== Scripting: New Events ===&lt;br /&gt;
&lt;br /&gt;
==== Client ====&lt;br /&gt;
* Added [[onClientFileDownloadComplete]]&lt;br /&gt;
&lt;br /&gt;
==== Server ====&lt;br /&gt;
* Added [[onWeaponFire]]&lt;br /&gt;
&lt;br /&gt;
=== Scripting: Changes, Bugfixes and Additions ===&lt;br /&gt;
* Fixed getResourceConfig() not working on foreign resources&lt;br /&gt;
* Fixed the Brown Streak Carriage (ID: 570)&lt;br /&gt;
* Changed attachTrailerToVehicle to support trains&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
&lt;br /&gt;
=== Client: Additions ===&lt;br /&gt;
* Distinguish between left and right Shift, Ctrl and Alt presses.&lt;br /&gt;
* Added SettingHUDMatchAspectRatio, SettingAspectRatio to dxGetStatus&lt;br /&gt;
&lt;br /&gt;
=== Client: Bugfixes &amp;amp; Changes ===&lt;br /&gt;
* Fixed the money &amp;quot;counts down&amp;quot; GTA-Style when you change a server.&lt;br /&gt;
* Fixed peds being invulnerable to gun fire when doing a drive by.&lt;br /&gt;
* Fixed onClientPlayerDamage not triggering for spray can.&lt;br /&gt;
* Satchels should now be removed on [[resetMapInfo]]&lt;br /&gt;
* Fixed getPedMoveState returns false when moving in crouch state&lt;br /&gt;
* Fixed guiScrollPaneGetVerticalScrollPosition returning strange and stepped values.&lt;br /&gt;
* Fixed setPedCameraRotation not working.&lt;br /&gt;
* Fixed peds continuing to fire their weapons after running out of ammo.&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
=== Server: Additions ===&lt;br /&gt;
* [[setElementDimension]] should now apply to children&lt;br /&gt;
* More descriptive module error messages&lt;br /&gt;
* Commands: unloadmodule and reloadmodule&lt;br /&gt;
* Added server side custom weapons.&lt;br /&gt;
&lt;br /&gt;
=== Server: Bugfixes &amp;amp; Changes ===&lt;br /&gt;
* Fixed 128 character limit in [[setAccountData]]&lt;br /&gt;
* Wildcard bans should now be checked properly on connect&lt;br /&gt;
* Fixed Team members not being sent to clients if set in [[onResourceStart]].&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* None yet&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
* None yet&lt;br /&gt;
&lt;br /&gt;
== Extra information ==&lt;br /&gt;
''More detailed information available on [https://bugs.multitheftauto.com/changelog_page.php Bug tracker Changelog] and Google Code repositories:&lt;br /&gt;
:* [https://code.google.com/p/mtasa-blue/source/list MTA: SA Blue]&lt;br /&gt;
:* [https://code.google.com/p/mtasa-resources/source/list MTA: SA Official Resources]&lt;br /&gt;
&lt;br /&gt;
[[Category:Changelog]]&lt;br /&gt;
[[Category:Incomplete]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTeamWithFewestPlayers&amp;diff=39895</id>
		<title>GetTeamWithFewestPlayers</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTeamWithFewestPlayers&amp;diff=39895"/>
		<updated>2014-06-14T15:53:54Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Undo revision 39866 by Le'CC (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function gets a team from it's few players.&lt;br /&gt;
'''Note:''' If 2 teams has the same count, then the first one found will be returned!&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;team getFewPlayersOnTeams ( element team1,element team2)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Return===&lt;br /&gt;
Returns a [[team]] else false.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function getFewPlayersOnTeams(team1,team2)&lt;br /&gt;
	if (isElement(team1) and getElementType(team1) == &amp;quot;team&amp;quot;) and (isElement(team2) and getElementType(team2) == &amp;quot;team&amp;quot;)  then&lt;br /&gt;
		local team1C = countPlayersInTeam (team1)&lt;br /&gt;
		local team2C = countPlayersInTeam (team2)&lt;br /&gt;
		if team1C == team2C then return team1&lt;br /&gt;
		else&lt;br /&gt;
			if team1C == math.min(team1C,team2C) then&lt;br /&gt;
				return team1&lt;br /&gt;
				else&lt;br /&gt;
				return team2&lt;br /&gt;
			end&lt;br /&gt;
		 end&lt;br /&gt;
	end&lt;br /&gt;
		return false&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function setPlayerToTeam(source)&lt;br /&gt;
local redteam = getTeamFromName ( &amp;quot;Red&amp;quot; )&lt;br /&gt;
local blueteam = getTeamFromName ( &amp;quot;Blue&amp;quot; )&lt;br /&gt;
	if redteam and blueteam then&lt;br /&gt;
		local theteam = getfewPlayersOnTeams(redteam,blueteam)&lt;br /&gt;
     if theteam then&lt;br /&gt;
		setPlayerTeam(source,theteam)&lt;br /&gt;
	local PlayerName = getPlayerName ( source )&lt;br /&gt;
	outputChatBox ( &amp;quot;  &amp;quot; .. joinedPlayerName .. &amp;quot;  Joined &amp;quot;..getTeamName(theteam)..&amp;quot; team !&amp;quot; , root, 255, 255, 255 )&lt;br /&gt;
     end&lt;br /&gt;
		else&lt;br /&gt;
createTeam (&amp;quot;Red&amp;quot;,255,0,0)&lt;br /&gt;
createTeam (&amp;quot;Blue&amp;quot;,0,0,255)&lt;br /&gt;
setPlayerToTeam(source)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerJoin&amp;quot;, getRootElement(), setPlayerToTeam )&lt;br /&gt;
&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;
&lt;br /&gt;
Author: Booo&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Useful_Functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnClientVehicleCollision&amp;diff=39799</id>
		<title>OnClientVehicleCollision</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnClientVehicleCollision&amp;diff=39799"/>
		<updated>2014-06-09T17:25:05Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client event}}&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
This event is triggered when a vehicle collides with peds/vehicles/objects.&lt;br /&gt;
&lt;br /&gt;
==Parameters== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element theHitElement, float force, int bodypart, float collisionX, float collisionY, float collisionZ, float normalX, float normalY, float normalZ, float hitElementForce, int model&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
'''Note:''' ''theHitElement'' will be nil or false if it's a default SA object and it will trigger twice for vehicles because one vehicle hit another and one got hit by another.&lt;br /&gt;
*'''theHitElement:''' the other entity, or nil if the vehicle collided with the world&lt;br /&gt;
*'''force:''' the impact magnitude (Note: this is NOT the damage it is a force value which is then multiplied by the vehicles collision damage multiplier. for an example of this see below) &lt;br /&gt;
*'''bodyPart:''' the bodypart that hit the other element&lt;br /&gt;
*'''collisionX/Y/Z:''' the position the collision took place&lt;br /&gt;
*'''normalX/Y/Z:''' the surface normal of the hit object&lt;br /&gt;
*'''hitElementforce:''' 0 for non vehicles or the force of the other vehicle&lt;br /&gt;
*'''model:''' model of the hit element (useful to detect building collisions as hitElement will be nil)&lt;br /&gt;
&lt;br /&gt;
==Type==&lt;br /&gt;
This event is a pre reaction event meaning it occurs before any game level reaction to the collision which include:&lt;br /&gt;
* Bike knock off effect&lt;br /&gt;
* Collision particles&lt;br /&gt;
* All types of damage reaction such as broken wings, wind shields, engine damage, broken lights and so on&lt;br /&gt;
* Audio of the impact&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The source of this event is the vehicle that collided with something.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
{{Issues|&lt;br /&gt;
{{Issue|7422|onClientVehicleCollision doesnt trigger when hitting some frozen objects}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleCollision&amp;quot;, root,&lt;br /&gt;
    function(collider,force, bodyPart, x, y, z, nx, ny, nz)&lt;br /&gt;
         if ( source == getPedOccupiedVehicle(localPlayer) ) then&lt;br /&gt;
             -- force does not take into account the collision damage multiplier (this is what makes heavy vehicles take less damage than banshees for instance) so take that into account to get the damage dealt&lt;br /&gt;
             local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier&lt;br /&gt;
             -- Create a marker (Scaled down to 1% of the actual damage otherwise we will get huge markers)&lt;br /&gt;
             local m = createMarker(x, y, z, &amp;quot;corona&amp;quot;, force * fDamageMultiplier * 0.01, 0, 9, 231)&lt;br /&gt;
             -- Destroy the marker in 2 seconds&lt;br /&gt;
             setTimer(destroyElement, 2000, 1, m)&lt;br /&gt;
         end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- This code works because onClientVehicleCollision is triggered before any SA reaction to the collision, therefore we can update the knocked off bike status just before the collision and stop the falling off effect happening :)&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleCollision&amp;quot;, root,&lt;br /&gt;
    function ( hit ) &lt;br /&gt;
        -- firstly did we trigger this event&lt;br /&gt;
        if ( source == getPedOccupiedVehicle(localPlayer) ) then&lt;br /&gt;
            -- knock off defaults to false&lt;br /&gt;
            local knockOff = false &lt;br /&gt;
            -- if our hit element is nil (we just hit an SA map object)&lt;br /&gt;
            if ( hit == nil ) then &lt;br /&gt;
                -- set knockOff to true &lt;br /&gt;
                knockOff = true &lt;br /&gt;
            end &lt;br /&gt;
  &lt;br /&gt;
            -- update our can be knocked off bike status accordingly&lt;br /&gt;
            setPedCanBeKnockedOffBike(localPlayer, knockOff) &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
===Client vehicle events===&lt;br /&gt;
{{Client_vehicle_events}}&lt;br /&gt;
===Client event functions===&lt;br /&gt;
{{Client_event_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnClientVehicleCollision&amp;diff=39798</id>
		<title>OnClientVehicleCollision</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnClientVehicleCollision&amp;diff=39798"/>
		<updated>2014-06-09T17:23:58Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Test fix #2 for dev-wiki bot not recognizing parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client event}}&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
This event is triggered when a vehicle collides with peds/vehicles/objects.&lt;br /&gt;
'''Note:''' ''theHitElement'' will be nil or false if it's a default SA object and it will trigger twice for vehicles because one vehicle hit another and one got hit by another.&lt;br /&gt;
&lt;br /&gt;
==Parameters== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element theHitElement, float force, int bodypart, float collisionX, float collisionY, float collisionZ, float normalX, float normalY, float normalZ, float hitElementForce, int model&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''theHitElement:''' the other entity, or nil if the vehicle collided with the world&lt;br /&gt;
*'''force:''' the impact magnitude (Note: this is NOT the damage it is a force value which is then multiplied by the vehicles collision damage multiplier. for an example of this see below) &lt;br /&gt;
*'''bodyPart:''' the bodypart that hit the other element&lt;br /&gt;
*'''collisionX/Y/Z:''' the position the collision took place&lt;br /&gt;
*'''normalX/Y/Z:''' the surface normal of the hit object&lt;br /&gt;
*'''hitElementforce:''' 0 for non vehicles or the force of the other vehicle&lt;br /&gt;
*'''model:''' model of the hit element (useful to detect building collisions as hitElement will be nil)&lt;br /&gt;
&lt;br /&gt;
==Type==&lt;br /&gt;
This event is a pre reaction event meaning it occurs before any game level reaction to the collision which include:&lt;br /&gt;
* Bike knock off effect&lt;br /&gt;
* Collision particles&lt;br /&gt;
* All types of damage reaction such as broken wings, wind shields, engine damage, broken lights and so on&lt;br /&gt;
* Audio of the impact&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The source of this event is the vehicle that collided with something.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
{{Issues|&lt;br /&gt;
{{Issue|7422|onClientVehicleCollision doesnt trigger when hitting some frozen objects}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleCollision&amp;quot;, root,&lt;br /&gt;
    function(collider,force, bodyPart, x, y, z, nx, ny, nz)&lt;br /&gt;
         if ( source == getPedOccupiedVehicle(localPlayer) ) then&lt;br /&gt;
             -- force does not take into account the collision damage multiplier (this is what makes heavy vehicles take less damage than banshees for instance) so take that into account to get the damage dealt&lt;br /&gt;
             local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier&lt;br /&gt;
             -- Create a marker (Scaled down to 1% of the actual damage otherwise we will get huge markers)&lt;br /&gt;
             local m = createMarker(x, y, z, &amp;quot;corona&amp;quot;, force * fDamageMultiplier * 0.01, 0, 9, 231)&lt;br /&gt;
             -- Destroy the marker in 2 seconds&lt;br /&gt;
             setTimer(destroyElement, 2000, 1, m)&lt;br /&gt;
         end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- This code works because onClientVehicleCollision is triggered before any SA reaction to the collision, therefore we can update the knocked off bike status just before the collision and stop the falling off effect happening :)&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleCollision&amp;quot;, root,&lt;br /&gt;
    function ( hit ) &lt;br /&gt;
        -- firstly did we trigger this event&lt;br /&gt;
        if ( source == getPedOccupiedVehicle(localPlayer) ) then&lt;br /&gt;
            -- knock off defaults to false&lt;br /&gt;
            local knockOff = false &lt;br /&gt;
            -- if our hit element is nil (we just hit an SA map object)&lt;br /&gt;
            if ( hit == nil ) then &lt;br /&gt;
                -- set knockOff to true &lt;br /&gt;
                knockOff = true &lt;br /&gt;
            end &lt;br /&gt;
  &lt;br /&gt;
            -- update our can be knocked off bike status accordingly&lt;br /&gt;
            setPedCanBeKnockedOffBike(localPlayer, knockOff) &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
===Client vehicle events===&lt;br /&gt;
{{Client_vehicle_events}}&lt;br /&gt;
===Client event functions===&lt;br /&gt;
{{Client_event_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnClientVehicleCollision&amp;diff=39797</id>
		<title>OnClientVehicleCollision</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnClientVehicleCollision&amp;diff=39797"/>
		<updated>2014-06-09T17:22:58Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Test fix for dev-wiki bot not recognizing parameters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client event}}&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
This event is triggered when a vehicle collides with peds/vehicles/objects.&lt;br /&gt;
&lt;br /&gt;
==Parameters== &lt;br /&gt;
'''Note:''' ''theHitElement'' will be nil or false if it's a default SA object and it will trigger twice for vehicles because one vehicle hit another and one got hit by another.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element theHitElement, float force, int bodypart, float collisionX, float collisionY, float collisionZ, float normalX, float normalY, float normalZ, float hitElementForce, int model&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''theHitElement:''' the other entity, or nil if the vehicle collided with the world&lt;br /&gt;
*'''force:''' the impact magnitude (Note: this is NOT the damage it is a force value which is then multiplied by the vehicles collision damage multiplier. for an example of this see below) &lt;br /&gt;
*'''bodyPart:''' the bodypart that hit the other element&lt;br /&gt;
*'''collisionX/Y/Z:''' the position the collision took place&lt;br /&gt;
*'''normalX/Y/Z:''' the surface normal of the hit object&lt;br /&gt;
*'''hitElementforce:''' 0 for non vehicles or the force of the other vehicle&lt;br /&gt;
*'''model:''' model of the hit element (useful to detect building collisions as hitElement will be nil)&lt;br /&gt;
&lt;br /&gt;
==Type==&lt;br /&gt;
This event is a pre reaction event meaning it occurs before any game level reaction to the collision which include:&lt;br /&gt;
* Bike knock off effect&lt;br /&gt;
* Collision particles&lt;br /&gt;
* All types of damage reaction such as broken wings, wind shields, engine damage, broken lights and so on&lt;br /&gt;
* Audio of the impact&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The source of this event is the vehicle that collided with something.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
{{Issues|&lt;br /&gt;
{{Issue|7422|onClientVehicleCollision doesnt trigger when hitting some frozen objects}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleCollision&amp;quot;, root,&lt;br /&gt;
    function(collider,force, bodyPart, x, y, z, nx, ny, nz)&lt;br /&gt;
         if ( source == getPedOccupiedVehicle(localPlayer) ) then&lt;br /&gt;
             -- force does not take into account the collision damage multiplier (this is what makes heavy vehicles take less damage than banshees for instance) so take that into account to get the damage dealt&lt;br /&gt;
             local fDamageMultiplier = getVehicleHandling(source).collisionDamageMultiplier&lt;br /&gt;
             -- Create a marker (Scaled down to 1% of the actual damage otherwise we will get huge markers)&lt;br /&gt;
             local m = createMarker(x, y, z, &amp;quot;corona&amp;quot;, force * fDamageMultiplier * 0.01, 0, 9, 231)&lt;br /&gt;
             -- Destroy the marker in 2 seconds&lt;br /&gt;
             setTimer(destroyElement, 2000, 1, m)&lt;br /&gt;
         end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- This code works because onClientVehicleCollision is triggered before any SA reaction to the collision, therefore we can update the knocked off bike status just before the collision and stop the falling off effect happening :)&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleCollision&amp;quot;, root,&lt;br /&gt;
    function ( hit ) &lt;br /&gt;
        -- firstly did we trigger this event&lt;br /&gt;
        if ( source == getPedOccupiedVehicle(localPlayer) ) then&lt;br /&gt;
            -- knock off defaults to false&lt;br /&gt;
            local knockOff = false &lt;br /&gt;
            -- if our hit element is nil (we just hit an SA map object)&lt;br /&gt;
            if ( hit == nil ) then &lt;br /&gt;
                -- set knockOff to true &lt;br /&gt;
                knockOff = true &lt;br /&gt;
            end &lt;br /&gt;
  &lt;br /&gt;
            -- update our can be knocked off bike status accordingly&lt;br /&gt;
            setPedCanBeKnockedOffBike(localPlayer, knockOff) &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
===Client vehicle events===&lt;br /&gt;
{{Client_vehicle_events}}&lt;br /&gt;
===Client event functions===&lt;br /&gt;
{{Client_event_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ES/Resource:Editor&amp;diff=39625</id>
		<title>ES/Resource:Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ES/Resource:Editor&amp;diff=39625"/>
		<updated>2014-05-27T23:09:36Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Shouldn't be in English categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Resource page}}&lt;br /&gt;
El editor de mapas de MTA:SA te permite crear mapas para los modos de juego.&lt;br /&gt;
Para iniciarlo, simplemente presiona &amp;quot;Map Editor&amp;quot; en el menú principal de MTA&lt;br /&gt;
&lt;br /&gt;
==Menus==&lt;br /&gt;
Una vez que el editor haya comenzado, se te mostrarán dos menús de barras: la principal (arriba), y la de elementos (esquina inferior izquierda).&lt;br /&gt;
&lt;br /&gt;
===Menú principal===&lt;br /&gt;
Estos son los botones en el menú principal:&lt;br /&gt;
* [[Image:Editor_New.png]] Crear un nuevo mapa.&lt;br /&gt;
* [[Image:Editor_Open.png]] Abrir un mapa existente.&lt;br /&gt;
* [[Image:Editor_Save.png]] Grabar el mapa en que estás trabajando.&lt;br /&gt;
* [[Image:Editor_Save_as.png]] Grabar el mapa bajo un nombre diferente.&lt;br /&gt;
* [[Image:Editor_Options.png]] Modificar las opciones generales del editor.&lt;br /&gt;
* [[Image:Editor_Undo.png]] Deshacer la última acción.&lt;br /&gt;
* [[Image:Editor_Redo.png]] Restaurar la última acción deshecha.&lt;br /&gt;
* [[Image:Editor_Locations.png]] Lista de lugares &amp;quot;marcados&amp;quot; (como los Favoritos).&lt;br /&gt;
* [[Image:Editor_Current_elements.png]] Lista de todos los elementos contenidos en el mapa (vehículos, objetos, marcadores, pickups, etc).&lt;br /&gt;
* [[Image:Editor_Map_settings.png]] Propiedades del mapa, como el tiempo o la gravedad. Aquí también puedes especificar los modos de juego que son compatibles con tu mapa.&lt;br /&gt;
* [[Image:Editor_Definitions.png]] Cargar las [[Resource:Editor/EDF| Definiciones del Editor (EDF)]].&lt;br /&gt;
* [[Image:Editor_Test.png]] Probar el mapa.&lt;br /&gt;
&lt;br /&gt;
===Menú de elementos===&lt;br /&gt;
El menú de elementos es usado para agregar nuevos elementos al mapa.&lt;br /&gt;
* [[Image:Editor_Vehicle.png]] Crear un vehículo.&lt;br /&gt;
* [[Image:Editor_Object.png]] Crear un objeto (edificios, caminos, basura, árboles, rocas, decoración exterior, etc).&lt;br /&gt;
* [[Image:Editor_Pickup.png]] Crear un pickup (sólo se puede crear de vida, armadura o de un arma).&lt;br /&gt;
* [[Image:Editor_Marker.png]] Crear un marcador.&lt;br /&gt;
&lt;br /&gt;
Adicionalmente, si tienes una [[Resource:Editor/EDF| Definición de Editor (EDF)]] cargada, girando la rueda del ratón (con el cursor sobre el menú) puedes cargar los elementos derivados de esa definición.&lt;br /&gt;
&lt;br /&gt;
==Usando el editor==&lt;br /&gt;
Esta sección te explicará cómo crear y modificar mapas.&lt;br /&gt;
&lt;br /&gt;
===Moviéndose alrededor del mapa===&lt;br /&gt;
Al iniciarse el editor, inicias en el ''modo de cámara''. Puedes usar las teclas '''WSAD''' para mover la cámara, y el ratón para girarla. Cuando te muevas, puedes mantener la tecla '''ALT''' para moverte más lento, o la tecla '''SHIFT''' para ir más rápido.&lt;br /&gt;
&lt;br /&gt;
Para acceder a la interfaz del editor y al panel de control, necesitas cambiar al ''modo de cursor''. Puedes cambiar entre el modo de cursor y el modo de cámara con la tecla '''F'''. Cuando estés en modo de cursor, tu vista estará congelada, y solo podrás usar el cursor del ratón para manipular elementos y usar la interfaz gráfica.&lt;br /&gt;
&lt;br /&gt;
El modo de cámara puede ser reconocido por una mira en medio de la pantalla. Puedes usarla para seleccionar y mover elementos como en el modo de cursor. Esta mira luce así:&lt;br /&gt;
&lt;br /&gt;
[[Image:Editor_Crosshair.png|center]]&lt;br /&gt;
&lt;br /&gt;
===Empezando un nuevo mapa===&lt;br /&gt;
* Inicia el editor, o si ya está iniciado, apreta el boton ''Nuevo'' del menú.&lt;br /&gt;
* Apreta el botón ''Opciones de mapa''. En la pestaña ''Meta'', llena los campos de &amp;quot;Name&amp;quot; y &amp;quot;Author&amp;quot; con el nombre de tu mapa y tu nick en MTA, respectivamente. También abre la pestaña ''Gamemodes'' y agrega los modos de juego para los cuales tu mapa está hecho (éstos se van a mover a la lista de ''Added Gamemodes''). Puedes hacer esto seleccionándolos y apretando en ''Add'', o haciendo doble click sobre ellos. Apreta OK cuando estés listo.&lt;br /&gt;
[[Image:Editor_Mapsettings.png|center]]&lt;br /&gt;
* Apreta en la ventana de ''Definiciones'' y agrega los recursos en donde uses los elementos alternativos. Estos debieran consistir de los modos que tu seleccionaste en la ventana de ''Map settings'', ademas de eventuales recursos adicionales. Para mas informacion acerca de las definiciones del editor, ve [[Resource:Editor/EDF|EDF (En Inglés)]]. Apreta OK cuando estes listo.&lt;br /&gt;
&lt;br /&gt;
===Creando nuevos elementos===&lt;br /&gt;
* Si tu estas en el modo de camara, cambia al modo de cursor primero apretando '''F'''.&lt;br /&gt;
* Apreta un boton en el menu de elementos que represente lo que tu quieres. Ej: Apreta el boton con un auto en el para agregar un vehiculo.&lt;br /&gt;
* Un nuevo elemento del tipo seleccionado sera creado y pegado a tu cursor. Muevelo a la posicion que quieras y apreta el '''botón izquierdo''' para dejarlo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Editor_Addelem.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para crear un elemento alternativo que es especifico a un recurso, mueve tu cursor sobre el menu de elementos y gira la rueda del ratón hasta el recurso esperado. Ten en cuenta que para este trabajo, primero necesitas haber agregado el archivo de [[Resource:Editor/EDF|Definición de editor]] del recurso en la ventana ''Definitions''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Editor_Selectedf.png|center]]&lt;br /&gt;
&lt;br /&gt;
===Seleccionando===&lt;br /&gt;
* '''Click izquierdo''' sobre un elemento para seleccionarlo en ''modo de teclado''.&lt;br /&gt;
* '''Click derecho''' sobre este elemento para seleccionarlo en ''modo de ratón''.&lt;br /&gt;
* Apreta la '''Barra espaciadora''' o apreta sobre un area vacia para sacar la selección.&lt;br /&gt;
&lt;br /&gt;
El elemento elegido, si lo hay, es representado por un marcador de cono amarillo. Elementos (particularmente objetos) con pesima colision se peuden detectar facilmente activando el ''modo de alta sensibilidad'', apretando la tecla '''E'''. Esto incrementara la detección.&lt;br /&gt;
&lt;br /&gt;
El dialogo ''Current elements'' puede ser usado tambien para seleccionar elementos. Has doble-click sobre un item de la lista para seleccionarlo en ''modo de teclado''&lt;br /&gt;
&lt;br /&gt;
===Moviendo===&lt;br /&gt;
El movimiento de los elementos se puede hacer de muchas maneras:&lt;br /&gt;
&lt;br /&gt;
'''Con el ratón'''&lt;br /&gt;
* Simplemente selecciónalo y déjalo con el '''boton izquierdo'''&lt;br /&gt;
O bien:&lt;br /&gt;
* Selecciona el elemento en el modo de ratón ('''boton derecho'''), muévelo hacia la posición que quieras, y haz clic izquierdo para dejarlo.&lt;br /&gt;
&lt;br /&gt;
También puedes ajustar la ''distancia'' de un elemento acercándolo o alejándolo de la cámara mediante el cambio al modo de cámara. Haz ''''clic derecho''' en un elemento, y gira la '''rueda del ratón'''.&lt;br /&gt;
&lt;br /&gt;
'''Con el teclado'''&lt;br /&gt;
* Selecciona el elemento en el modo de teclado ('''clic izquierdo''').&lt;br /&gt;
* Luego, usa las '''teclas de dirección''' para mover el elemento en un plano horizontal (ejes ''X'' y ''Z''), y '''RePág'''/'''AvPág''' para moverlo verticalmente (eje Z). Mantén presionado '''ALT''' para disminuir la velocidad de movimiento, y '''SHIFT''' para incrementarla.&lt;br /&gt;
&lt;br /&gt;
Por defecto, los elementos se mueven relativamente a la cámara y no están limitadas a sus ejes. Esto se puede desactivar en el menú de '''Opciones'''.&lt;br /&gt;
&lt;br /&gt;
===Rotando===&lt;br /&gt;
&lt;br /&gt;
'''Con el ratón'''&lt;br /&gt;
Puedes rotar un elemento selecionado en el eje Z, con la rueda del ratón.&lt;br /&gt;
* Seleciona el elemento con un clic (derecho o izquierdo) y ruédala mantiendo apretado '''CTRL'''.&lt;br /&gt;
&lt;br /&gt;
'''Con el teclado'''&lt;br /&gt;
* Selecciona el elemento ('''clic izquierdo''').&lt;br /&gt;
* Mientras se presiona '''CTRL''' (la marca de selección se volverá verde), y usa las '''teclas de dirección''' o '''RePág'''/'''AvPág''' para rotar el elemento en los 3 ejes.&lt;br /&gt;
&lt;br /&gt;
En ambos métodos, puedes presionar '''ALT''' para reducir la velocidad de rotación del elemento, y '''SHIFT''' para incrementarla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Editor_Rotateelem.png|center]]&lt;br /&gt;
&lt;br /&gt;
===Cambio de modelo y otras propiedades===&lt;br /&gt;
La mayoría de los elementos tiene una variedad de opciones que pueden ser alteradas para cambiar su apariencia. Ejemplos son los modelos, color y las actualizaciones visuales de un auto.&lt;br /&gt;
&lt;br /&gt;
* Abre la ventana de propiedades de un elemento, presionando dos veces en el o seleccionándolo y apretando '''F3'''.&lt;br /&gt;
* Hace las modificaciones que tu quieras. Por ejemplo, para cambiar el modelo de un auto o objeto, presiona en el botón '''Browse''' al lado de &amp;quot;model&amp;quot; para abrir el buscador de modelos.&lt;br /&gt;
* presiona OK cuando estés listo&lt;br /&gt;
&lt;br /&gt;
[[Image:Editor_Props.png|center]]&lt;br /&gt;
&lt;br /&gt;
===Clonando===&lt;br /&gt;
Puedes clonar un elemento seleccionándolo y presionando '''C'''. &lt;br /&gt;
&lt;br /&gt;
* En el modo de cursor, este elemento clonado será &amp;quot;adjuntado&amp;quot; a tu cursor. Para posicionarlo haz click con el botón izquierdo.&lt;br /&gt;
* En el modo de teclado, el elemento será puesto en la misma posición del elemento original.&lt;br /&gt;
&lt;br /&gt;
Si presionas '''CTRL''' mientras haces click, el elemento será clonado otra vez.&lt;br /&gt;
&lt;br /&gt;
También puedes usar el botón ''Pullout'' de la esquina inferior derecha de la ventana de propiedades del elemento.&lt;br /&gt;
&lt;br /&gt;
===Borrando===&lt;br /&gt;
Simplemente selecciona el elemento y pulsa ''SUPR''' ''(Borrar o Suprimir)''.&lt;br /&gt;
&lt;br /&gt;
También puedes usar el botón ''Pullout'' de la esquina inferior derecha de la ventana de propiedades del elemento.&lt;br /&gt;
&lt;br /&gt;
==Creando mapas para modos de juego específicos==&lt;br /&gt;
Para lograr esto, tienes que hacer 2 cosas.&lt;br /&gt;
* Clickea '''Map Settings''' en la barra superior del editor, busca la sección '''Gamemodes'''. De ahí seleccionas los modos de juego en los que tu mapa se puede usar.&lt;br /&gt;
* También necesitarás usar [[Resource:Editor/EDF|Archivos de Definición del Editor]] (EDF, o sea Editor Definition Files). Estos te permiten poner elementos de un modo de juego en específico, ya sean puntos de Spawn, las banderas de CTF, etc... Los EDF se cargan desde la sección &amp;quot;Definitions&amp;quot;, en &amp;quot;Map Settings&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Controles==&lt;br /&gt;
Aquí tienes la lista de los controles por defecto. Para editarlos, debes ir a la sección &amp;quot;Binds&amp;quot;, en &amp;quot;Settings&amp;quot;, en el menú de MTA, mientras el editor está abierto.&lt;br /&gt;
&lt;br /&gt;
===Cámara===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| camera_move_forwards&lt;br /&gt;
| '''w'''&lt;br /&gt;
|-&lt;br /&gt;
| camera_move_backwards&lt;br /&gt;
| '''s'''&lt;br /&gt;
|-&lt;br /&gt;
| camera_move_left&lt;br /&gt;
| '''a'''&lt;br /&gt;
|-&lt;br /&gt;
| camera_move_right&lt;br /&gt;
| '''d'''&lt;br /&gt;
|-&lt;br /&gt;
| high_sensitivity_mode&lt;br /&gt;
| '''e'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Clonación===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| clone_selected_element&lt;br /&gt;
| '''c'''&lt;br /&gt;
|-&lt;br /&gt;
| clone_drop_modifier&lt;br /&gt;
| '''lctrl''' || ''(Left CTRL)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Manipulación de elementos===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| element_move_forward&lt;br /&gt;
| '''arrow_u''' || ''(Arrow key Up)''&lt;br /&gt;
|-&lt;br /&gt;
| element_move_backward&lt;br /&gt;
| '''arrow_d''' || ''(Arrow key Down)''&lt;br /&gt;
|-&lt;br /&gt;
| element_move_left&lt;br /&gt;
| '''arrow_l''' || ''(Arrow key Left)''&lt;br /&gt;
|-&lt;br /&gt;
| element_move_right&lt;br /&gt;
| '''arrow_r''' || ''(Arrow key Right)''&lt;br /&gt;
|-&lt;br /&gt;
| element_move_downwards&lt;br /&gt;
| '''pgdn''' || ''(Page Down)''&lt;br /&gt;
|-&lt;br /&gt;
| element_move_upwards&lt;br /&gt;
| '''pgup''' || ''(Page Up)''&lt;br /&gt;
|-&lt;br /&gt;
| zoom_in&lt;br /&gt;
| '''mouse_wheel_down'''&lt;br /&gt;
|-&lt;br /&gt;
| zoom_out&lt;br /&gt;
| '''mouse_wheel_up'''&lt;br /&gt;
|-&lt;br /&gt;
| quick_rotate_increase&lt;br /&gt;
| '''mod_rotate''' + '''mouse_wheel_up''' || ''(Left CTRL + Mouse wheel Up)''&lt;br /&gt;
|-&lt;br /&gt;
| quick_rotate_decrease&lt;br /&gt;
| '''mod_rotate''' + '''mouse_wheel_down''' || ''(Left CTRL + Mouse wheel Down)''&lt;br /&gt;
|-&lt;br /&gt;
| mod_rotate&lt;br /&gt;
| '''lctrl''' || ''(Left CTRL)''&lt;br /&gt;
|-&lt;br /&gt;
| mod_slow_speed&lt;br /&gt;
| '''lalt''' || ''(Left ALT)''&lt;br /&gt;
|-&lt;br /&gt;
| mod_fast_speed&lt;br /&gt;
| '''lshift''' || ''(Left SHIFT)''&lt;br /&gt;
|-&lt;br /&gt;
| destroy_selected_element&lt;br /&gt;
| '''delete'''&lt;br /&gt;
|-&lt;br /&gt;
| drop_selected_element&lt;br /&gt;
| '''space'''&lt;br /&gt;
|-&lt;br /&gt;
| pickup_selected_element&lt;br /&gt;
| '''F2'''&lt;br /&gt;
|-&lt;br /&gt;
| reset_rotation&lt;br /&gt;
| '''mod_rotate''' + '''r''' || ''(Left CTRL + R)''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===GUI (Interfaz Gráfica)===&lt;br /&gt;
{|&lt;br /&gt;
| toggle_gui_display&lt;br /&gt;
| '''F4'''&lt;br /&gt;
|-&lt;br /&gt;
| toggle_cursor&lt;br /&gt;
| '''f'''&lt;br /&gt;
|-&lt;br /&gt;
| select_target_keyboard&lt;br /&gt;
| '''mouse1''' || ''(Left Mouse button)''&lt;br /&gt;
|-&lt;br /&gt;
| select_target_mouse&lt;br /&gt;
| '''mouse2''' || ''(Right Mouse button)''&lt;br /&gt;
|-&lt;br /&gt;
| edf_next&lt;br /&gt;
| '''mouse_wheel_up'''&lt;br /&gt;
|-&lt;br /&gt;
| edf_prev&lt;br /&gt;
| '''mouse_wheel_down'''&lt;br /&gt;
|-&lt;br /&gt;
| undo&lt;br /&gt;
| '''Ctrl''' + '''z'''&lt;br /&gt;
|-&lt;br /&gt;
| redo&lt;br /&gt;
| '''Ctrl''' + '''y'''&lt;br /&gt;
|-&lt;br /&gt;
| properties_toggle&lt;br /&gt;
| '''F3'''&lt;br /&gt;
|-&lt;br /&gt;
| browser_up&lt;br /&gt;
| '''arrow_u''' || ''(Arrow key Up)''&lt;br /&gt;
|-&lt;br /&gt;
| browser_down&lt;br /&gt;
| '''arrow_d''' || ''(Arrow key Down)''&lt;br /&gt;
|-&lt;br /&gt;
| browser_zoom_in&lt;br /&gt;
| '''mouse_wheel_up'''&lt;br /&gt;
|-&lt;br /&gt;
| browser_zoom_out&lt;br /&gt;
| '''mouse_wheel_down'''&lt;br /&gt;
|-&lt;br /&gt;
| browser_confirm&lt;br /&gt;
| '''enter'''&lt;br /&gt;
|-&lt;br /&gt;
| currentelements_up&lt;br /&gt;
| '''num_8''' || ''(Numpad key 8)''&lt;br /&gt;
|-&lt;br /&gt;
| currentelements_down&lt;br /&gt;
| '''num_2''' || ''(Numpad key 2)''&lt;br /&gt;
|-&lt;br /&gt;
| toggle_test&lt;br /&gt;
| '''F5'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Multijugador==&lt;br /&gt;
El editor de mapas está hecho para que se pueda usar por más de un jugador a la vez. Esto se hace copiando los &amp;quot;resources&amp;quot; que usa el editor, a tu servidor. Luego tienes que iniciarlo y ya puedes hacer mapas con otros jugadores.&lt;br /&gt;
&lt;br /&gt;
Nota: no hay sistema de restricciones en el editor; todos los jugadores tienen los mismos permisos para editar el mapa. &lt;br /&gt;
&lt;br /&gt;
==Plugins y Recursos externos==&lt;br /&gt;
{{Main|Resource:Editor/Plugins}}&lt;br /&gt;
&lt;br /&gt;
El editor permite una importación básica de recursos externos. Esto es útil para &amp;quot;resources&amp;quot; que manipulan o crean objetos que el editor no puede, como vehículos con modelos modificados.&lt;br /&gt;
&lt;br /&gt;
Usando el comando '''import &amp;lt;nombreDeResource&amp;gt;''' en la consola, los elementos del resource pueden ser importados al editor.&lt;br /&gt;
&lt;br /&gt;
==Preguntas Frecuentes==&lt;br /&gt;
==== No veo nada (pantalla negra) al usar el editor  ====&lt;br /&gt;
&lt;br /&gt;
Generalmente esto ocurre debido a una mala instalación del editor de mapas. Si usas una versión estable de MTA, prueba a instalarlo de nuevo, y asegúrate de que las opciones &amp;quot;Client&amp;quot; y &amp;quot;Server&amp;quot; del instalador estén marcadas.&lt;br /&gt;
&lt;br /&gt;
En cambio, si usas una versión &amp;quot;nightly&amp;quot;, debes bajar la última versión de los[http://code.google.com/p/multitheftauto/wiki/NightlyBuilds?tm=2 &amp;quot;resources&amp;quot; (paso 3)], descomprimir el archivo y colocar su contenido en:&lt;br /&gt;
''MTA San Andreas\server\mods\deathmatch\resources'', donde ''MTA San Andreas'' es la carpeta donde instalaste MTA San Andreas (por defecto es: C:\Archivos de Programa\MTA San Andreas).&lt;br /&gt;
&lt;br /&gt;
'''Poner los archivos en: MTA San Andreas\mods\deathmatch\resources es un error común''' - no funcionarán ahí. Asegúrate de que dentro de la ruta donde colocas los archivos encuentres la palabra &amp;quot;server&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si este problema persiste aún después de haber hecho los pasos mencionados y revisada la versión actual, puede ser porque tienes una versión obsoleta del archivo ''acl.xml''. Puedes descargarlo [http://multitheftauto.googlecode.com/svn/trunk/MTA10_Server/mods/deathmatch/acl.xml aquí].  Una vez descargado, colócalo en la carpeta '''MTA San Andreas/server/mods/deathmatch/'''.&lt;br /&gt;
&lt;br /&gt;
==== Me sale un mensaje que dice &amp;quot;Could not start the local server. See console for details&amp;quot; al iniciar el editor ====&lt;br /&gt;
Esto pasa porque tu archivo ''mtaserver.conf'' está dañado o está mal editado. Puedes descargarlo [http://multitheftauto.googlecode.com/svn/trunk/MTA10_Server/mods/deathmatch/editor.conf aquí]. Debes colocarlo en '''MTA San Andreas/server/mods/deathmatch/'''.&lt;br /&gt;
&lt;br /&gt;
==== Guardé un mapa con el editor, pero no lo encuentro en la carpeta resources. Sin embargo el editor lo carga en la lista ====&lt;br /&gt;
Esto se debe a que Windows Vista/7 tiene cietos límites de escritura para procesos no administrativos del directorio Archivos de Programa. Los archivos se guardan en el directorio &amp;quot;VirtualStore&amp;quot; en vez de en Archivos de Programa. Deberías poder encontrar tu mapa en el directorio:&lt;br /&gt;
 C:\Usuarios\&amp;lt;NOMBRE&amp;gt;\AppData\Local\VirtualStore\Program Files\MTA San Andreas\server\mods\deathmatch\resources\&lt;br /&gt;
&lt;br /&gt;
Si inicias el servidor o el cliente de MTA con derechos administrativos, tu mapa debería ser guardado en el lugar correcto.&lt;br /&gt;
&lt;br /&gt;
==== Encontré un error o tengo una sugerencia ====&lt;br /&gt;
Visita el [http://bugs.mtasa.com sistema de seguimiento de errores] oficial. También puedes ingresar al [http://www.multitheftauto.com/irc.html canal de IRC].&lt;br /&gt;
&lt;br /&gt;
==Traductores==&lt;br /&gt;
&lt;br /&gt;
*Gothem&lt;br /&gt;
*F4ST3R&lt;br /&gt;
*Benxamix2/The Kid&lt;br /&gt;
&lt;br /&gt;
[[ru:Resource:Editor]]&lt;br /&gt;
[[en:Resource:Editor]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX3D&amp;diff=39581</id>
		<title>PlaySFX3D</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX3D&amp;diff=39581"/>
		<updated>2014-05-23T11:36:46Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: r6444 Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0134|1.3.4|5731|&lt;br /&gt;
This function plays a sound in the GTA world from GTA's big sound containers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|There is a tool available which allows you to find bank and sound IDs easily: [[https://community.mtasa.com/index.php?p=resources&amp;amp;s=details&amp;amp;id=7549 sfxBrowser:Download]]}}&lt;br /&gt;
{{Warning|Many players use versions of GTA:SA (especially pirated versions) that have audio files full of zeros so that they can compresses better in their ''AUDIO\SFX\'' folder. (They lack any data) &lt;br /&gt;
In case of these invalid audio files, this function returns ''false''|true}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX3D ( string containerName, int bankId, int soundId, float x, float y, float z [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''containerName:''' The name of the audio container. Possible values are: &amp;quot;feet&amp;quot;, &amp;quot;genrl&amp;quot;, &amp;quot;pain_a&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;spc_ea&amp;quot;, &amp;quot;spc_fa&amp;quot;, &amp;quot;spc_ga&amp;quot;, spc_na&amp;quot;, &amp;quot;spc_pa&amp;quot;&lt;br /&gt;
*'''bankId:''' The audio bank id&lt;br /&gt;
*'''soundId:''' The sound id within the audio bank&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;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4.0140|1.4|6443|&lt;br /&gt;
==Syntax 2==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX3D( string &amp;quot;radio&amp;quot;, string radioStation, int trackId, float x, float y, float z [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''radio:''' The string &amp;quot;radio&amp;quot; (used to differentiate to the first syntax) &lt;br /&gt;
*'''radioStation:''' The radio station. Possible values are &amp;quot;Adverts&amp;quot;, &amp;quot;Ambience&amp;quot;, &amp;quot;Police&amp;quot;, &amp;quot;Playback FM&amp;quot;, &amp;quot;K-Rose&amp;quot;, &amp;quot;K-DST&amp;quot;, &amp;quot;Cutscene&amp;quot;, &amp;quot;Beats&amp;quot;, &amp;quot;Bounce FM&amp;quot;, &amp;quot;SF-UR&amp;quot;, &amp;quot;Radio Los Santos&amp;quot;, &amp;quot;Radio X&amp;quot;, &amp;quot;CSR 103.9&amp;quot;, &amp;quot;K-Jah West&amp;quot;, &amp;quot;Master Sounds 98.3&amp;quot;, &amp;quot;WCTR&amp;quot;.&lt;br /&gt;
*'''trackId :''' The radio track id within the radio station audio file&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;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example plays a fire alarm sound near you (looped).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local x, y, z = getElementPosition(localPlayer)&lt;br /&gt;
if not playSFX3D(&amp;quot;script&amp;quot;, 7, 1, x + 10, y, z, true) then&lt;br /&gt;
    outputChatBox(&amp;quot;You have to install some missing audio files to hear the sound&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=39580</id>
		<title>PlaySFX</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=39580"/>
		<updated>2014-05-23T11:36:22Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: r6444 Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0134|1.3.4|5731|&lt;br /&gt;
This function plays a sound from GTA's big sound containers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|There is a tool available which allows you to find bank and sound IDs easily: [[https://community.mtasa.com/index.php?p=resources&amp;amp;s=details&amp;amp;id=7549 sfxBrowser:Download]]}}&lt;br /&gt;
{{Warning|Many players use versions of GTA:SA (especially pirated versions) that have audio files full of zeros so that they can compresses better in their ''AUDIO\SFX\'' folder. (They lack any data) &lt;br /&gt;
In case of these invalid audio files, this function returns ''false''|true}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string containerName, int bankId, int soundId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''containerName:''' The name of the audio container. Possible values are: &amp;quot;feet&amp;quot;, &amp;quot;genrl&amp;quot;, &amp;quot;pain_a&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;spc_ea&amp;quot;, &amp;quot;spc_fa&amp;quot;, &amp;quot;spc_ga&amp;quot;, spc_na&amp;quot;, &amp;quot;spc_pa&amp;quot;&lt;br /&gt;
*'''bankId:''' The audio bank id&lt;br /&gt;
*'''soundId:''' The sound id within the audio bank&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4.0140|1.4|6443|&lt;br /&gt;
==Syntax 2==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string &amp;quot;radio&amp;quot;, string radioStation, int trackId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''radio:''' The string &amp;quot;radio&amp;quot; (used to differentiate to the first syntax) &lt;br /&gt;
*'''radioStation:''' The radio station. Possible values are &amp;quot;Adverts&amp;quot;, &amp;quot;Ambience&amp;quot;, &amp;quot;Police&amp;quot;, &amp;quot;Playback FM&amp;quot;, &amp;quot;K-Rose&amp;quot;, &amp;quot;K-DST&amp;quot;, &amp;quot;Cutscene&amp;quot;, &amp;quot;Beats&amp;quot;, &amp;quot;Bounce FM&amp;quot;, &amp;quot;SF-UR&amp;quot;, &amp;quot;Radio Los Santos&amp;quot;, &amp;quot;Radio X&amp;quot;, &amp;quot;CSR 103.9&amp;quot;, &amp;quot;K-Jah West&amp;quot;, &amp;quot;Master Sounds 98.3&amp;quot;, &amp;quot;WCTR&amp;quot;.&lt;br /&gt;
*'''trackId :''' The radio track id within the radio station audio file&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example plays a firealarm sound (looped).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if not playSFX(&amp;quot;script&amp;quot;, 7, 1, true) then&lt;br /&gt;
    outputChatBox(&amp;quot;You have to install some missing audio files to hear the sound&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX3D&amp;diff=39578</id>
		<title>PlaySFX3D</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX3D&amp;diff=39578"/>
		<updated>2014-05-23T11:05:22Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: r6443 Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0134|1.3.4|5731|&lt;br /&gt;
This function plays a sound in the GTA world from GTA's big sound containers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|There is a tool available which allows you to find bank and sound IDs easily: [[https://community.mtasa.com/index.php?p=resources&amp;amp;s=details&amp;amp;id=7549 sfxBrowser:Download]]}}&lt;br /&gt;
{{Warning|Many players use versions of GTA:SA (especially pirated versions) that have audio files full of zeros so that they can compresses better in their ''AUDIO\SFX\'' folder. (They lack any data) &lt;br /&gt;
In case of these invalid audio files, this function returns ''false''|true}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX3D ( string containerName, int bankId, int soundId, float x, float y, float z [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''containerName:''' The name of the audio container. Possible values are: &amp;quot;feet&amp;quot;, &amp;quot;genrl&amp;quot;, &amp;quot;pain_a&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;spc_ea&amp;quot;, &amp;quot;spc_fa&amp;quot;, &amp;quot;spc_ga&amp;quot;, spc_na&amp;quot;, &amp;quot;spc_pa&amp;quot;&lt;br /&gt;
*'''bankId:''' The audio bank id&lt;br /&gt;
*'''soundId:''' The sound id within the audio bank&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;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4.0140|1.4|6443|&lt;br /&gt;
==Syntax 2==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX3D( string &amp;quot;radio&amp;quot;, string radioStation, int trackId, float x, float y, float z [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''radio:''' The string &amp;quot;radio&amp;quot; (used to differentiate to the first syntax) &lt;br /&gt;
*'''radioStation:''' The radio station. Possible values are &amp;quot;Adverts&amp;quot;, &amp;quot;Ambience&amp;quot;, &amp;quot;Police&amp;quot;, &amp;quot;Playback FM&amp;quot;, &amp;quot;KROSE&amp;quot;, &amp;quot;K-DST&amp;quot;, &amp;quot;Cutscene&amp;quot;, &amp;quot;Beats&amp;quot;, &amp;quot;Bounce FM&amp;quot;, &amp;quot;SFUR&amp;quot;, &amp;quot;Radio Los Santos&amp;quot;, &amp;quot;Radio X&amp;quot;, &amp;quot;CSR&amp;quot;, &amp;quot;K-JAH&amp;quot;, &amp;quot;Master Sounds&amp;quot;, &amp;quot;WCTR&amp;quot;.&lt;br /&gt;
*'''trackId :''' The radio track id within the radio station audio file&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;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example plays a fire alarm sound near you (looped).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local x, y, z = getElementPosition(localPlayer)&lt;br /&gt;
if not playSFX3D(&amp;quot;script&amp;quot;, 7, 1, x + 10, y, z, true) then&lt;br /&gt;
    outputChatBox(&amp;quot;You have to install some missing audio files to hear the sound&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=39577</id>
		<title>PlaySFX</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=39577"/>
		<updated>2014-05-23T11:02:47Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0134|1.3.4|5731|&lt;br /&gt;
This function plays a sound from GTA's big sound containers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|There is a tool available which allows you to find bank and sound IDs easily: [[https://community.mtasa.com/index.php?p=resources&amp;amp;s=details&amp;amp;id=7549 sfxBrowser:Download]]}}&lt;br /&gt;
{{Warning|Many players use versions of GTA:SA (especially pirated versions) that have audio files full of zeros so that they can compresses better in their ''AUDIO\SFX\'' folder. (They lack any data) &lt;br /&gt;
In case of these invalid audio files, this function returns ''false''|true}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string containerName, int bankId, int soundId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''containerName:''' The name of the audio container. Possible values are: &amp;quot;feet&amp;quot;, &amp;quot;genrl&amp;quot;, &amp;quot;pain_a&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;spc_ea&amp;quot;, &amp;quot;spc_fa&amp;quot;, &amp;quot;spc_ga&amp;quot;, spc_na&amp;quot;, &amp;quot;spc_pa&amp;quot;&lt;br /&gt;
*'''bankId:''' The audio bank id&lt;br /&gt;
*'''soundId:''' The sound id within the audio bank&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4.0140|1.4|6443|&lt;br /&gt;
==Syntax 2==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string &amp;quot;radio&amp;quot;, string radioStation, int trackId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''radio:''' The string &amp;quot;radio&amp;quot; (used to differentiate to the first syntax) &lt;br /&gt;
*'''radioStation:''' The radio station. Possible values are &amp;quot;Adverts&amp;quot;, &amp;quot;Ambience&amp;quot;, &amp;quot;Police&amp;quot;, &amp;quot;Playback FM&amp;quot;, &amp;quot;KROSE&amp;quot;, &amp;quot;K-DST&amp;quot;, &amp;quot;Cutscene&amp;quot;, &amp;quot;Beats&amp;quot;, &amp;quot;Bounce FM&amp;quot;, &amp;quot;SFUR&amp;quot;, &amp;quot;Radio Los Santos&amp;quot;, &amp;quot;Radio X&amp;quot;, &amp;quot;CSR&amp;quot;, &amp;quot;K-JAH&amp;quot;, &amp;quot;Master Sounds&amp;quot;, &amp;quot;WCTR&amp;quot;.&lt;br /&gt;
*'''trackId :''' The radio track id within the radio station audio file&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example plays a firealarm sound (looped).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if not playSFX(&amp;quot;script&amp;quot;, 7, 1, true) then&lt;br /&gt;
    outputChatBox(&amp;quot;You have to install some missing audio files to hear the sound&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=39576</id>
		<title>PlaySFX</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=39576"/>
		<updated>2014-05-23T11:02:33Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: r6443 Update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0134|1.3.4|5731|&lt;br /&gt;
This function plays a sound from GTA's big sound containers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|There is a tool available which allows you to find bank and sound IDs easily: [[https://community.mtasa.com/index.php?p=resources&amp;amp;s=details&amp;amp;id=7549 sfxBrowser:Download]]}}&lt;br /&gt;
{{Warning|Many players use versions of GTA:SA (especially pirated versions) that have audio files full of zeros so that they can compresses better in their ''AUDIO\SFX\'' folder. (They lack any data) &lt;br /&gt;
In case of these invalid audio files, this function returns ''false''|true}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string containerName, int bankId, int soundId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''containerName:''' The name of the audio container. Possible values are: &amp;quot;feet&amp;quot;, &amp;quot;genrl&amp;quot;, &amp;quot;pain_a&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;spc_ea&amp;quot;, &amp;quot;spc_fa&amp;quot;, &amp;quot;spc_ga&amp;quot;, spc_na&amp;quot;, &amp;quot;spc_pa&amp;quot;&lt;br /&gt;
*'''bankId:''' The audio bank id&lt;br /&gt;
*'''soundId:''' The sound id within the audio bank&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{New feature/item|4.0140|1.4|6443|&lt;br /&gt;
==Syntax 2==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string &amp;quot;radio&amp;quot;, string radioStation, int trackId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''radio:''' The string &amp;quot;radio&amp;quot; (used to differentiate to the first syntax) &lt;br /&gt;
*'''radioStation:''' The radio station. Possible values are &amp;quot;Adverts&amp;quot;, &amp;quot;Ambience&amp;quot;, &amp;quot;Police&amp;quot;, &amp;quot;Playback FM&amp;quot;, &amp;quot;KROSE&amp;quot;, &amp;quot;K-DST&amp;quot;, &amp;quot;Cutscene&amp;quot;, &amp;quot;Beats&amp;quot;, &amp;quot;Bounce FM&amp;quot;, &amp;quot;SFUR&amp;quot;, &amp;quot;Radio Los Santos&amp;quot;, &amp;quot;Radio X&amp;quot;, &amp;quot;CSR&amp;quot;, &amp;quot;K-JAH&amp;quot;, &amp;quot;Master Sounds&amp;quot;, &amp;quot;WCTR&amp;quot;.&lt;br /&gt;
*'''trackId :''' The radio track id within the radio station audio file&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example plays a firealarm sound (looped).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if not playSFX(&amp;quot;script&amp;quot;, 7, 1, true) then&lt;br /&gt;
    outputChatBox(&amp;quot;You have to install some missing audio files to hear the sound&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Client_Scripting_Events&amp;diff=39432</id>
		<title>Client Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Client_Scripting_Events&amp;diff=39432"/>
		<updated>2014-04-22T04:46:10Z</updated>

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

		<summary type="html">&lt;p&gt;Sbx320: Undo revision 39429 by Domtheo (talk) Spambot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
This is a list of GTA:SA's vehicle ID numbers, as listed in the vehicles.ide file. These vehicle ID numbers are used for several vehicle scripting functions.&lt;br /&gt;
&lt;br /&gt;
Lua table of all the valid vehicle IDs listed on this page:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;vehicleIDS = { 602, 545, 496, 517, 401, 410, 518, 600, 527, 436, 589, 580, 419, 439, 533, 549, 526, 491, 474, 445, 467, 604, 426, 507, 547, 585,&lt;br /&gt;
405, 587, 409, 466, 550, 492, 566, 546, 540, 551, 421, 516, 529, 592, 553, 577, 488, 511, 497, 548, 563, 512, 476, 593, 447, 425, 519, 520, 460,&lt;br /&gt;
417, 469, 487, 513, 581, 510, 509, 522, 481, 461, 462, 448, 521, 468, 463, 586, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 485, 552, 431, &lt;br /&gt;
438, 437, 574, 420, 525, 408, 416, 596, 433, 597, 427, 599, 490, 432, 528, 601, 407, 428, 544, 523, 470, 598, 499, 588, 609, 403, 498, 514, 524, &lt;br /&gt;
423, 532, 414, 578, 443, 486, 515, 406, 531, 573, 456, 455, 459, 543, 422, 583, 482, 478, 605, 554, 530, 418, 572, 582, 413, 440, 536, 575, 534, &lt;br /&gt;
567, 535, 576, 412, 402, 542, 603, 475, 449, 537, 538, 441, 464, 501, 465, 564, 568, 557, 424, 471, 504, 495, 457, 539, 483, 508, 571, 500, &lt;br /&gt;
444, 556, 429, 411, 541, 559, 415, 561, 480, 560, 562, 506, 565, 451, 434, 558, 494, 555, 502, 477, 503, 579, 400, 404, 489, 505, 479, 442, 458, &lt;br /&gt;
606, 607, 610, 590, 569, 611, 584, 608, 435, 450, 591, 594 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lua table of vehicles that are not lockable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;notLockableVehicles = {594, 606, 607, 611, 584, 608, 435, 450, 591, 539, 441, 464, 501, 465, 564, 472, 473, 493, 595, 484, 430, &lt;br /&gt;
453, 452, 446, 454, 581, 509, 481, 462, 521, 463, 510, 522, 461, 448, 468, 586, 425, 520}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lua table of vehicles without number plates:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;noNumberPlates = { 592, 553, 577, 488, 511, 497, 548, 563, 512, 476, 593, 447, 425, 519, 520, 460, 417, 469, 487, 513, 509, 481, &lt;br /&gt;
510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2-Door and Compact cars==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Alpha&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;602&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Hustler&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;545&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Blista Compact&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;496&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Majestic&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;517&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bravura&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;401&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Manana&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;410&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buccaneer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;518&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Picador&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;600&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Cadrona&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;527&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Previon&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;436&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Club&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;589&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stafford&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;580&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Esperanto&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;419&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stallion&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;439&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Feltzer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;533&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tampa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;549&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Fortune&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;526&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Virgo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;491&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hermes&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;474&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4-Door and Luxury cars==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Admiral&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;445&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Oceanic&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;467&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Damaged Glendale&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;604&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Premier&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;426&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Elegant&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;507&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Primo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;547&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Emperor&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;585&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sentinel&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;405&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Euros&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;587&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stretch&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;409&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Glendale&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;466&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sunrise&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;550&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Greenwood&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;492&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tahoma&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;566&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Intruder&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;546&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Vincent&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;540&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Merit&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;551&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Washington&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;421&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Nebula&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;516&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Willard&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;529&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;&lt;br /&gt;
  Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Andromada&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;592&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Nevada&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;553&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;AT-400&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;577&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    News Chopper&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;488&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Beagle&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;511&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Police Maverick&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;497&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Cargobob&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;548&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Raindance&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;563&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Cropduster&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;512&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Rustler&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;476&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dodo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;593&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Seasparrow&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;447&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hunter&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;425&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Shamal&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;519&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hydra&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;520&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    Skimmer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;460&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Leviathan&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;417&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Sparrow&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;469&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Maverick&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;487&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
    Stuntplane&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;513&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bikes==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BF-400&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;581&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Mountain Bike&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;510&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bike&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;509&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;NRG-500&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;522&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BMX&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;481&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;PCJ-600&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;461&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Faggio&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;462&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Pizza Boy&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;448&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;FCR-900&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;521&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sanchez&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; 468&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Freeway&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;463&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wayfarer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;586&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Boats==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Coastguard&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;472&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dinghy&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;473&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Jetmax&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;493&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Launch&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;595&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Marquis&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;484&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Predator&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;430&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Reefer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;453&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Speeder&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;452&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Squalo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;446&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Tropic&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;454&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Civil Servant / Public Transportation (Road Vehicles)==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Baggage&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;485&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Utility Van&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;552&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bus&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;431&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Cabbie&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;438&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Coach&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;437&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Sweeper&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;574&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Taxi&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;420&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Towtruck&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;525&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Trashmaster&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;408&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Government Vehicles==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Ambulance&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;416&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Police Car (Los Santos)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;596&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Barracks&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;433&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Police Car (San Fierro)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;597&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Enforcer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;427&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Police Ranger&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;599&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;FBI Rancher&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;490&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Rhino&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;432&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;FBI Truck&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;528&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;S.W.A.T.&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;601&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Fire Truck&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;407&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Securicar&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;428&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Fire Truck (Ladder)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;544&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;HPV1000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;523&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Patriot&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;470&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Police Car (Las Venturas)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;598&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Heavy and Utility Trucks==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Benson&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;499&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Hotdog&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;588&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Black Boxville&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;609&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Linerunner&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;403&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Boxville&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;498&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Linerunner (From &amp;quot;Tanker Commando&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;514&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Cement Truck&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;524&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Mr. Whoopee&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;423&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Combine Harvester&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;532&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Mule&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;414&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;DFT-30&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;578&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Packer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;443&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dozer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;486&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Roadtrain&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;515&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dumper&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;406&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tractor&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;531&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Dune&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;573&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Yankee&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;456&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Flatbed&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;455&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Light Trucks and Vans==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Berkley's RC Van&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;459&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sadler&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;543&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bobcat&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;422&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tug&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;583&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Burrito&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;482&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Walton&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;478&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Damaged Sadler&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;605&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Yosemite&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;554&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Forklift&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;530&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Moonbeam&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;418&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Mower&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;572&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;News Van&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;582&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Pony&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;413&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Rumpo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;440&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lowriders==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Blade&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;536&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Broadway&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;575&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Remington&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;534&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Savanna&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;567&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Slamvan&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;535&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Tornado&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;576&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Voodoo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;412&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Muscle Cars==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buffalo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;402&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Clover&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;542&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Phoenix&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;603&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Sabre&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;475&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trains and Railroad Cars==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Notes&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Tram&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;449&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Freight&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;537&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Brown Streak&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;538&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Brown Streak Carriage&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;570&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Removed in version [https://code.google.com/p/mtasa-blue/source/detail?r=2880 1.1-r2880], but available from [https://code.google.com/p/mtasa-blue/source/detail?r=5934 1.3.4-r5934] and forth.&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Flat Freight&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;569&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Box Freight&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;590&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RC Vehicles==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;RC Bandit&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;441&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;RC Baron&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;464&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;RC Goblin&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;501&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;RC Raider&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;465&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;RC Tiger&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;564&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Recreational==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bandito&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;568&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Monster 3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;557&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;BF Injection&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;424&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Quadbike&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;471&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bloodring Banger&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;504&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sandking&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;495&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Caddy&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;457&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Vortex&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;539&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Camper&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;483&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Journey&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;508&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Kart&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;571&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Mesa&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;500&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Monster&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;444&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Monster 2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;556&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Street Racers==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Banshee&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;429&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Infernus&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;411&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Bullet&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;541&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Jester&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;559&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Cheetah&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;415&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Stratum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;561&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Comet&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;480&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sultan&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;560&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Elegy&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;562&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Super GT&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;506&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Flash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;565&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Turismo&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;451&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hotknife&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;434&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Uranus&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;558&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hotring Racer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;494&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Windsor&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;555&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hotring Racer 2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;502&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ZR-350&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;477&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hotring Racer 3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;503&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SUVs and Wagons==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Huntley&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;579&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Landstalker&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;400&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Perennial&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;404&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Rancher&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;489&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Rancher (From &amp;quot;Lure&amp;quot;)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;505&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Regina&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;479&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Romero&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;442&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Solair&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;458&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trailers==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th width=&amp;quot;218&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th width=&amp;quot;24&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Baggage Trailer (covered)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;606&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Baggage Trailer (Uncovered)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;607&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Farm Trailer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;610&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;quot;Street Clean&amp;quot; Trailer&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;611&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Trailer (From &amp;quot;Tanker Commando&amp;quot;)(*PRONE TO CRASHES*)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;584&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Trailer (Stairs)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;608&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Trailer 1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;435&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Trailer 2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;450&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Trailer 3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;591&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Misc==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; class=&amp;quot;unnamed1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th width=&amp;quot;218&amp;quot;&amp;gt;Name&amp;lt;/th&amp;gt;&amp;lt;th width=&amp;quot;24&amp;quot;&amp;gt;ID&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;RC Cam (flower pot)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;594&amp;lt;/td&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vehicle Functions==&lt;br /&gt;
{{Vehicle functions}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[id|ID Lists]]&lt;br /&gt;
[[it:ID Veicoli]]&lt;br /&gt;
[[ru:Vehicle IDs]]&lt;br /&gt;
[[de:Fahrzeug IDs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ID Lists]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SpawnPlayer&amp;diff=39252</id>
		<title>SpawnPlayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SpawnPlayer&amp;diff=39252"/>
		<updated>2014-04-06T10:50:52Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function spawns the player at an arbitary point on the map.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Note|[[setCameraTarget]] must be used to focus on the player. Also, all players have their camera initially faded out after connect. To ensure that the camera is faded in, please do a [[fadeCamera]] after.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Do not use [[spawnPlayer]] within an event handler remotely called from [[onClientPlayerWasted]]. See Issue #8148 for details.}}&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 spawnPlayer ( player thePlayer, float x, float y, float z, [ int rotation = 0, int skinID = 0, int interior = 0, int dimension = 0, team theTeam = nil ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''thePlayer:''' The player you want to spawn.&lt;br /&gt;
*'''x:''' The x co-ordinate to spawn the player at.&lt;br /&gt;
*'''y:''' The y co-ordinate to spawn the player at.&lt;br /&gt;
*'''z:''' The z co-ordinate to spawn the player at.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''rotation:''' rotation of the player on spawn.&lt;br /&gt;
*'''skinID:''' player's skin on spawn. [[Character Skins]]&lt;br /&gt;
*'''interior:''' interior the player will spawn into. [[Interior IDs]]&lt;br /&gt;
*'''dimension:''' The ID of the [[dimension]] that the player should be in.&lt;br /&gt;
*'''theTeam:''' the team the player will join.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the player was spawned successfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example spawns all the players in the middle of the game map.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Get a table of all the players&lt;br /&gt;
players = getElementsByType ( &amp;quot;player&amp;quot; )&lt;br /&gt;
-- Go through every player&lt;br /&gt;
for playerKey, playerValue in ipairs(players) do&lt;br /&gt;
	-- Spawn them at the desired coordinates&lt;br /&gt;
	spawnPlayer ( playerValue, 0.0, 0.0, 5.0, 90.0, 0 )&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example spawns a player when he logs in.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
spawnTeam = createTeam (&amp;quot;Teamname&amp;quot;, 255, 0, 0) -- Create team to spawn.&lt;br /&gt;
function spawnOnLogin (prevA, curA, autoLogin)&lt;br /&gt;
	outputChatBox (&amp;quot;Welcome to ...&amp;quot;, source, 255, 0, 0, false)&lt;br /&gt;
	spawnPlayer (source, 0, 0, 5, 0, math.random (0,288), 0, 0, spawnTeam) -- spawns player with random skin&lt;br /&gt;
	fadeCamera (source, true)&lt;br /&gt;
	setCameraTarget (source, source)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerLogin&amp;quot;, getRootElement(), spawnOnLogin)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Player_functions}}&lt;br /&gt;
[[ru:spawnPlayer]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SpawnPlayer&amp;diff=39251</id>
		<title>SpawnPlayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SpawnPlayer&amp;diff=39251"/>
		<updated>2014-04-06T10:50:00Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Added note about Issue #8148&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function spawns the player at an arbitary point on the map.&amp;lt;br&amp;gt;&lt;br /&gt;
{{Note|[[setCameraTarget]] must be used to focus on the player. Also, all players have their camera initially faded out after connect. To ensure that the camera is faded in, please do a [[fadeCamera]] after.}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Do not use [[spawnPlayer]] within an event handler remotely called from [[onClientPlayerWasted]]. See http://bugs.mtasa.com/view.php?id=8148 for details.}}&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 spawnPlayer ( player thePlayer, float x, float y, float z, [ int rotation = 0, int skinID = 0, int interior = 0, int dimension = 0, team theTeam = nil ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''thePlayer:''' The player you want to spawn.&lt;br /&gt;
*'''x:''' The x co-ordinate to spawn the player at.&lt;br /&gt;
*'''y:''' The y co-ordinate to spawn the player at.&lt;br /&gt;
*'''z:''' The z co-ordinate to spawn the player at.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''rotation:''' rotation of the player on spawn.&lt;br /&gt;
*'''skinID:''' player's skin on spawn. [[Character Skins]]&lt;br /&gt;
*'''interior:''' interior the player will spawn into. [[Interior IDs]]&lt;br /&gt;
*'''dimension:''' The ID of the [[dimension]] that the player should be in.&lt;br /&gt;
*'''theTeam:''' the team the player will join.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the player was spawned successfully, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example spawns all the players in the middle of the game map.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Get a table of all the players&lt;br /&gt;
players = getElementsByType ( &amp;quot;player&amp;quot; )&lt;br /&gt;
-- Go through every player&lt;br /&gt;
for playerKey, playerValue in ipairs(players) do&lt;br /&gt;
	-- Spawn them at the desired coordinates&lt;br /&gt;
	spawnPlayer ( playerValue, 0.0, 0.0, 5.0, 90.0, 0 )&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example spawns a player when he logs in.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
spawnTeam = createTeam (&amp;quot;Teamname&amp;quot;, 255, 0, 0) -- Create team to spawn.&lt;br /&gt;
function spawnOnLogin (prevA, curA, autoLogin)&lt;br /&gt;
	outputChatBox (&amp;quot;Welcome to ...&amp;quot;, source, 255, 0, 0, false)&lt;br /&gt;
	spawnPlayer (source, 0, 0, 5, 0, math.random (0,288), 0, 0, spawnTeam) -- spawns player with random skin&lt;br /&gt;
	fadeCamera (source, true)&lt;br /&gt;
	setCameraTarget (source, source)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerLogin&amp;quot;, getRootElement(), spawnOnLogin)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Player_functions}}&lt;br /&gt;
[[ru:spawnPlayer]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MergeToDoList&amp;diff=38829</id>
		<title>MergeToDoList</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MergeToDoList&amp;diff=38829"/>
		<updated>2014-02-09T19:55:41Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Merge/SVN things that need doing==&lt;br /&gt;
All devs with commit access should add stuff to these lists so it doesn't get lost&lt;br /&gt;
&lt;br /&gt;
==Things that need merging from trunk to current release==&lt;br /&gt;
====Important bug fixes for 1.3.4====&lt;br /&gt;
&lt;br /&gt;
==Things that need merging from trunk for next point release==&lt;br /&gt;
====New features for 1.3.5====&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6122 6122] TODO * Fixed #8044 (ElementFrozen for Players is desynced after spawnPlayer)'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6097 6097] Added setInteriorFurnitureEnabled, getInteriorFurnitureEnabled&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6094 6094] Fixed GUIScrollPaneSetHorizontalScrollPosition and GUIScrollPaneSetVerticalScrollPosition not correctly using floating point numbers&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6093 6093] Fixed #8006 ([Request] Make an mtasa:// protocol typo handler)'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6061 6061] TODO * Update for r5934 - Some fixes'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6051 6051] Updated date&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6050 6050] Fixed #7953 (Add rotation parameter for dxDrawText)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6047 6047] Fixed #7965 (Cannot bind num_enter key)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6045 6045] Make glitches more compatible with latency_reduction mode.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6043 6043] Fixed crouch roll glitch&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6042 6042] Fixed r7964 (getVehicleComponentPosition seems to return wrong positions on some vehicles)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6041 6041] Addendum to r6039 (Added add/removeDebugHook for client)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6040 6040] Fixed #7632: Bullet sync for sniper rifle. Fixed #7614: rifle has not damage without aim.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6039 6039] Added add/removeDebugHook for client&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6036 6036] Fix gui skin change crash&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6033 6033] Fixed vehicle color desync caused by setting paintjob. Fixed crash caused...&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6032 6032] TODO * Update for r5934 - See below. Fixed some streaming issues if train chain is...'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6031 6031] Added upgrade message to uninstaller. Added disk space checks.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6030 6030] Fixed #7962 (Vehicle wheel states are not synced properly)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6029 6029] Improved client error messages, esp. when loading fonts and images&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6028 6028] Fixed #7956 (Several vehicle colours result into black ones)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6011 6011] Fixed synced health and armor values so the fractional part is more consistent&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6009 6009] Fixed #7389 (Problem with network floaters)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6008 6008] Addendum to r5999 (Added getCamera function to get the camera element) &lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6001 6001] Fixed #5854 (Client runs with reduced mathematical precision compared to the server.) &lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6000 6000] Disabled destroyElement and setElementParent for the camera element&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5999 5999] Added getCamera function to get the camera element&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5969 5969] TODO * Update for r5934 - Fixed some streaming issues (It's nearly finished)'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5967 5967] TODO * Update for r5934 - Fixed a desync (train will be teleported when driving from...'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5963 5963] Fixed onClientSoundStopped sometimes being late&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5962 5962] Fixed includes failing when a resource changes.&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5935 5935] TODO * Update for r5934 - Some/more fixes'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5934 5934] TODO * Fixed train carriages and re-enabled the Brownstreak Carriage (ID: 570)'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5924 5924] Added guiEditGetCaretIndex and guiMemoGetCaretIndex&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5889 5889] Added onClientVehicleDamage event&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5882 5882] Added dxSetTextureEdge (allows you to set the texture edge for other texture types such as renderTargets + setting the border color) ('''NOTE:''' ''This commit needs to be partially merged since it contains a compile fix for 1.4'')&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5867 5867] Fixed #7413 (Damage proof boats still take collision damage)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5924 5924] Added guiEditGetCaretIndex and guiMemoGetCaretIndex, ...&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5852 5852] + [https://code.google.com/p/mtasa-blue/source/detail?r=5853 5853] Fixed an inconsistence (isPedDead is server-only; isPlayerDead available on the&lt;br /&gt;
client, but on the server deprecated)&lt;br /&gt;
*'''[https://https://code.google.com/p/mtasa-blue/source/detail?r=5318 5318] TODO * Fixed train spawning&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5289 5289] TODO * Added train rail position, rail speed, rail track and direction to sync should&lt;br /&gt;
make trains smoother&lt;br /&gt;
* teaEncode etc&lt;br /&gt;
* preg stuff&lt;br /&gt;
==Reminders for 1.4==&lt;br /&gt;
http://code.google.com/p/mtasa-blue/source/detail?r=5324&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=FileIsEOF&amp;diff=38650</id>
		<title>FileIsEOF</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=FileIsEOF&amp;diff=38650"/>
		<updated>2014-01-28T16:35:27Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
&lt;br /&gt;
Checks if the file position is at the end of the file.&lt;br /&gt;
{{Note|Due to underlying C API restrictions this function may return false until an attempt to read further than the end of the file is made.}}&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 fileIsEOF ( file theFile )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theFile:''' A handle to the file you wish to check.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the file position of the specified file is at the end of the file, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example opens the file test.txt and outputs its contents to the console.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local hFile = fileOpen(&amp;quot;test.txt&amp;quot;, true)       -- attempt to open the file (read only)&lt;br /&gt;
if hFile then                                  -- check if it was successfully opened&lt;br /&gt;
    local buffer&lt;br /&gt;
    while not fileIsEOF(hFile) do              -- as long as we're not at the end of the file...&lt;br /&gt;
        buffer = fileRead(hFile, 500)          -- ... read the next 500 bytes...&lt;br /&gt;
        outputConsole(buffer)                  -- ... and output them to the console&lt;br /&gt;
    end&lt;br /&gt;
    fileClose(hFile)                           -- close the file once we're done with it&lt;br /&gt;
else&lt;br /&gt;
    outputConsole(&amp;quot;Unable to open test.txt&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you open a file, its file position is set to the beginning of the file. Each call to [[fileRead]] or [[fileWrite]] moves the position ahead by the amount of bytes that were read/written. This way, by using ''fileIsEOF'' you can check if you've passed through the whole file.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{File functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MergeToDoList&amp;diff=38642</id>
		<title>MergeToDoList</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MergeToDoList&amp;diff=38642"/>
		<updated>2014-01-25T14:30:39Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Merge/SVN things that need doing==&lt;br /&gt;
All devs with commit access should add stuff to these lists so it doesn't get lost&lt;br /&gt;
&lt;br /&gt;
==Things that need merging from trunk to current release==&lt;br /&gt;
====Important bug fixes for 1.3.4====&lt;br /&gt;
&lt;br /&gt;
==Things that need merging from trunk for next point release==&lt;br /&gt;
====New features for 1.3.5====&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6094 6094] TODO * Fixed GUIScrollPaneSetHorizontalScrollPosition and GUIScrollPaneSetVerticalScrollPosition not correctly using floating point numbers'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6093 6093] TODO * Fixed #8006 ([Request] Make an mtasa:// protocol typo handler)'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6061 6061] TODO * Update for r5934 - Some fixes'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6051 6051] Updated date&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6050 6050] Fixed #7953 (Add rotation parameter for dxDrawText)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6047 6047] Fixed #7965 (Cannot bind num_enter key)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6045 6045] Make glitches more compatible with latency_reduction mode.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6043 6043] Fixed crouch roll glitch&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6042 6042] Fixed r7964 (getVehicleComponentPosition seems to return wrong positions on some vehicles)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6041 6041] Addendum to r6039 (Added add/removeDebugHook for client)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6040 6040] Fixed #7632: Bullet sync for sniper rifle. Fixed #7614: rifle has not damage without aim.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6039 6039] Added add/removeDebugHook for client&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6036 6036] Fix gui skin change crash&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6033 6033] Fixed vehicle color desync caused by setting paintjob. Fixed crash caused...&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6032 6032] TODO * Update for r5934 - See below. Fixed some streaming issues if train chain is...'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6031 6031] Added upgrade message to uninstaller. Added disk space checks.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6030 6030] Fixed #7962 (Vehicle wheel states are not synced properly)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6029 6029] Improved client error messages, esp. when loading fonts and images&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6028 6028] Fixed #7956 (Several vehicle colours result into black ones)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6011 6011] Fixed synced health and armor values so the fractional part is more consistent&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6009 6009] Fixed #7389 (Problem with network floaters)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6008 6008] Addendum to r5999 (Added getCamera function to get the camera element) &lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6001 6001] Fixed #5854 (Client runs with reduced mathematical precision compared to the server.) &lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6000 6000] Disabled destroyElement and setElementParent for the camera element&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5999 5999] Added getCamera function to get the camera element&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5969 5969] TODO * Update for r5934 - Fixed some streaming issues (It's nearly finished)'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5967 5967] TODO * Update for r5934 - Fixed a desync (train will be teleported when driving from...'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5963 5963] Fixed onClientSoundStopped sometimes being late&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5962 5962] Fixed includes failing when a resource changes.&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5935 5935] TODO * Update for r5934 - Some/more fixes'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5934 5934] TODO * Fixed train carriages and re-enabled the Brownstreak Carriage (ID: 570)'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5924 5924] Added guiEditGetCaretIndex and guiMemoGetCaretIndex&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5889 5889] Added onClientVehicleDamage event&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5882 5882] Added dxSetTextureEdge (allows you to set the texture edge for other texture types such as renderTargets + setting the border color) ('''NOTE:''' ''This commit needs to be partially merged since it contains a compile fix for 1.4'')&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5867 5867] Fixed #7413 (Damage proof boats still take collision damage)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5924 5924] Added guiEditGetCaretIndex and guiMemoGetCaretIndex, ...&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5852 5852] + [https://code.google.com/p/mtasa-blue/source/detail?r=5853 5853] Fixed an inconsistence (isPedDead is server-only; isPlayerDead available on the&lt;br /&gt;
client, but on the server deprecated)&lt;br /&gt;
*'''[https://https://code.google.com/p/mtasa-blue/source/detail?r=5318 5318] TODO * Fixed train spawning&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5289 5289] TODO * Added train rail position, rail speed, rail track and direction to sync should&lt;br /&gt;
make trains smoother&lt;br /&gt;
* teaEncode etc&lt;br /&gt;
* preg stuff&lt;br /&gt;
==Reminders for 1.4==&lt;br /&gt;
http://code.google.com/p/mtasa-blue/source/detail?r=5324&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MergeToDoList&amp;diff=38641</id>
		<title>MergeToDoList</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MergeToDoList&amp;diff=38641"/>
		<updated>2014-01-25T14:21:18Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Merge/SVN things that need doing==&lt;br /&gt;
All devs with commit access should add stuff to these lists so it doesn't get lost&lt;br /&gt;
&lt;br /&gt;
==Things that need merging from trunk to current release==&lt;br /&gt;
====Important bug fixes for 1.3.4====&lt;br /&gt;
&lt;br /&gt;
==Things that need merging from trunk for next point release==&lt;br /&gt;
====New features for 1.3.5====&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6092 6092] TODO * Fixed #7944 (Server can crash when calling setControlState with a ped)'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6061 6061] TODO * Update for r5934 - Some fixes'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6051 6051] Updated date&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6050 6050] Fixed #7953 (Add rotation parameter for dxDrawText)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6047 6047] Fixed #7965 (Cannot bind num_enter key)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6045 6045] Make glitches more compatible with latency_reduction mode.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6043 6043] Fixed crouch roll glitch&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6042 6042] Fixed r7964 (getVehicleComponentPosition seems to return wrong positions on some vehicles)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6041 6041] Addendum to r6039 (Added add/removeDebugHook for client)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6040 6040] Fixed #7632: Bullet sync for sniper rifle. Fixed #7614: rifle has not damage without aim.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6039 6039] Added add/removeDebugHook for client&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6036 6036] Fix gui skin change crash&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6033 6033] Fixed vehicle color desync caused by setting paintjob. Fixed crash caused...&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=6032 6032] TODO * Update for r5934 - See below. Fixed some streaming issues if train chain is...'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6031 6031] Added upgrade message to uninstaller. Added disk space checks.&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6030 6030] Fixed #7962 (Vehicle wheel states are not synced properly)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6029 6029] Improved client error messages, esp. when loading fonts and images&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6028 6028] Fixed #7956 (Several vehicle colours result into black ones)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6011 6011] Fixed synced health and armor values so the fractional part is more consistent&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6009 6009] Fixed #7389 (Problem with network floaters)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6008 6008] Addendum to r5999 (Added getCamera function to get the camera element) &lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6001 6001] Fixed #5854 (Client runs with reduced mathematical precision compared to the server.) &lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=6000 6000] Disabled destroyElement and setElementParent for the camera element&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5999 5999] Added getCamera function to get the camera element&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5969 5969] TODO * Update for r5934 - Fixed some streaming issues (It's nearly finished)'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5967 5967] TODO * Update for r5934 - Fixed a desync (train will be teleported when driving from...'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5963 5963] Fixed onClientSoundStopped sometimes being late&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5962 5962] Fixed includes failing when a resource changes.&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5935 5935] TODO * Update for r5934 - Some/more fixes'''&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5934 5934] TODO * Fixed train carriages and re-enabled the Brownstreak Carriage (ID: 570)'''&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5924 5924] Added guiEditGetCaretIndex and guiMemoGetCaretIndex&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5889 5889] Added onClientVehicleDamage event&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5882 5882] Added dxSetTextureEdge (allows you to set the texture edge for other texture types such as renderTargets + setting the border color) ('''NOTE:''' ''This commit needs to be partially merged since it contains a compile fix for 1.4'')&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5867 5867] Fixed #7413 (Damage proof boats still take collision damage)&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5924 5924] Added guiEditGetCaretIndex and guiMemoGetCaretIndex, ...&lt;br /&gt;
*[https://code.google.com/p/mtasa-blue/source/detail?r=5852 5852] + [https://code.google.com/p/mtasa-blue/source/detail?r=5853 5853] Fixed an inconsistence (isPedDead is server-only; isPlayerDead available on the&lt;br /&gt;
client, but on the server deprecated)&lt;br /&gt;
*'''[https://https://code.google.com/p/mtasa-blue/source/detail?r=5318 5318] TODO * Fixed train spawning&lt;br /&gt;
*'''[https://code.google.com/p/mtasa-blue/source/detail?r=5289 5289] TODO * Added train rail position, rail speed, rail track and direction to sync should&lt;br /&gt;
make trains smoother&lt;br /&gt;
* teaEncode etc&lt;br /&gt;
* preg stuff&lt;br /&gt;
==Reminders for 1.4==&lt;br /&gt;
http://code.google.com/p/mtasa-blue/source/detail?r=5324&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetPedOccupiedVehicleSeat&amp;diff=37661</id>
		<title>GetPedOccupiedVehicleSeat</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetPedOccupiedVehicleSeat&amp;diff=37661"/>
		<updated>2013-11-26T17:59:39Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function gets the seat that a specific ped is sitting in in a vehicle.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getPedOccupiedVehicleSeat ( ped thePed )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''thePed''': The [[ped]] whose vehicle seat you're looking up.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an integer containing the number of the seat that the ped is currently in, if any. Seat 0 represents the driver's seat, any higher represents a passenger seat. Returns ''false'' if the ped is on foot, or the ped doesn't exist.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example finds what seat a random player is sitting in and outputs it to the chat box.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
thePed = getRandomPlayer()&lt;br /&gt;
theVehicle = getPedOccupiedVehicle ( thePed )&lt;br /&gt;
if ( theVehicle ) then&lt;br /&gt;
    outputChatBox ( getPlayerName(thePed)..&amp;quot; is in a vehicle in seat number &amp;quot; .. getPedOccupiedVehicleSeat ( thePed ) .. &amp;quot;.&amp;quot; )&lt;br /&gt;
else&lt;br /&gt;
    outputChatBox ( getPlayerName(thePed)..&amp;quot; is not in a vehicle.&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Ped functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetPedOccupiedVehicleSeat&amp;diff=37660</id>
		<title>GetPedOccupiedVehicleSeat</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetPedOccupiedVehicleSeat&amp;diff=37660"/>
		<updated>2013-11-26T17:58:59Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Clarification for seat ids&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function gets the seat that a specific ped is sitting in in a vehicle.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getPedOccupiedVehicleSeat ( ped thePed )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''thePed''': The [[ped]] whose vehicle seat you're looking up.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an integer containing the number of the seat that the ped is currently in, if any. Seat 0 represents the driver, any higher represents a passenger seat. Returns ''false'' if the ped is on foot, or the ped doesn't exist.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example finds what seat a random player is sitting in and outputs it to the chat box.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
thePed = getRandomPlayer()&lt;br /&gt;
theVehicle = getPedOccupiedVehicle ( thePed )&lt;br /&gt;
if ( theVehicle ) then&lt;br /&gt;
    outputChatBox ( getPlayerName(thePed)..&amp;quot; is in a vehicle in seat number &amp;quot; .. getPedOccupiedVehicleSeat ( thePed ) .. &amp;quot;.&amp;quot; )&lt;br /&gt;
else&lt;br /&gt;
    outputChatBox ( getPlayerName(thePed)..&amp;quot; is not in a vehicle.&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Ped functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=36965</id>
		<title>PlaySFX</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX&amp;diff=36965"/>
		<updated>2013-08-25T00:13:17Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Changed some wordings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0134|1.3.4|5731|&lt;br /&gt;
This function plays a sound from GTA's big sound containers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|There is a tool available which allows you to find bank and sound IDs easily: [[https://community.mtasa.com/index.php?p=resources&amp;amp;s=details&amp;amp;id=7549 sfxBrowser:Download]]}}&lt;br /&gt;
{{Warning|Many players use versions of GTA:SA (especially pirated versions) which do not have any audio files in their ''AUDIO\SFX\'' folder. In case of missing audio files, this function returns ''false''|true}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
element playSFX ( string containerName, int bankId, int soundId [, bool looped = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''containerName:''' The name of the audio container. Possible values are: &amp;quot;feet&amp;quot;, &amp;quot;genrl&amp;quot;, &amp;quot;pain_a&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;spc_ea&amp;quot;, &amp;quot;spc_fa&amp;quot;, &amp;quot;spc_ga&amp;quot;, spc_na&amp;quot;, &amp;quot;spc_pa&amp;quot;&lt;br /&gt;
*'''bankId:''' The audio bank id&lt;br /&gt;
*'''soundId:''' The sound id within the audio bank&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''looped:''' A [[boolean]] representing whether the sound will be looped&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a [[sound]] element if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
The following example plays a firealarm sound (looped).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
if not playSFX(&amp;quot;script&amp;quot;, 7, 1, true) then&lt;br /&gt;
    outputChatBox(&amp;quot;You have to install some missing audio files to hear the sound&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnPlayerWasted&amp;diff=36925</id>
		<title>OnPlayerWasted</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnPlayerWasted&amp;diff=36925"/>
		<updated>2013-08-16T11:40:27Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Undo revision 36915 by Soner Sayakci (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server event}}&lt;br /&gt;
This event is triggered when a player is killed or dies.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
{{New feature/item|3|1.0||&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int totalAmmo, element killer, int killerWeapon, int bodypart [, bool stealth ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Deprecated_feature|3|1.0|&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int totalAmmo, element killer, int killerWeapon, int bodypart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
*'''totalAmmo''': an integer representing the total ammo the victim had when he died.&lt;br /&gt;
*'''killer''': an [[element]] representing the player or vehicle who was the killer.  If there was no killer this is ''false''.&lt;br /&gt;
*'''killerWeapon''': an integer representing the [[Weapons|killer weapon]] or the [[Death Reasons|death reason]].&lt;br /&gt;
*'''bodypart''': an integer representing the bodypart ID the victim was hit on when he died.&lt;br /&gt;
{{BodyParts}}&lt;br /&gt;
*{{New feature/item|3|1.0||'''stealth''': boolean value representing whether or not this was a stealth kill}}&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The [[event system#Event source|source]] of this event is the [[player]] that died or got killed.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example prints the killer and bodypart to the chat when a player dies.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- register player_Wasted as a handler for onPlayerWasted&lt;br /&gt;
function player_Wasted ( ammo, attacker, weapon, bodypart )&lt;br /&gt;
	-- if there was an attacker&lt;br /&gt;
	if ( attacker ) then&lt;br /&gt;
		-- we declare our variable outside the following checks&lt;br /&gt;
		local tempString&lt;br /&gt;
		-- if the element that killed him was a player,&lt;br /&gt;
		if ( getElementType ( attacker ) == &amp;quot;player&amp;quot; ) then&lt;br /&gt;
			-- put the attacker, victim and weapon info in the string&lt;br /&gt;
			tempString = getPlayerName ( attacker )..&amp;quot; killed &amp;quot;..getPlayerName ( source )..&amp;quot; (&amp;quot;..getWeaponNameFromID ( weapon )..&amp;quot;)&amp;quot;&lt;br /&gt;
		-- else, if it was a vehicle,&lt;br /&gt;
		elseif ( getElementType ( attacker ) == &amp;quot;vehicle&amp;quot; ) then&lt;br /&gt;
			-- we'll get the name from the attacker vehicle's driver&lt;br /&gt;
			local tempString = getPlayerName ( getVehicleController ( attacker ) )..&amp;quot; killed &amp;quot;..getPlayerName ( source )..&amp;quot; (&amp;quot;..getWeaponNameFromID ( weapon )..&amp;quot;)&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		-- if the victim was shot in the head, append a special message&lt;br /&gt;
		if ( bodypart == 9 ) then&lt;br /&gt;
			tempString = tempString..&amp;quot; (HEADSHOT!)&amp;quot;&lt;br /&gt;
		-- else, just append the bodypart name&lt;br /&gt;
		else&lt;br /&gt;
			tempString = tempString..&amp;quot; (&amp;quot;..getBodyPartName ( bodypart )..&amp;quot;)&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		-- display the message&lt;br /&gt;
		outputChatBox ( tempString )&lt;br /&gt;
	-- if there was no attacker,&lt;br /&gt;
	else&lt;br /&gt;
		-- output a death message without attacker info&lt;br /&gt;
		outputChatBox ( getPlayerName ( source )..&amp;quot; died. (&amp;quot;..getWeaponNameFromID ( weapon )..&amp;quot;) (&amp;quot;..getBodyPartName ( bodypart )..&amp;quot;)&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerWasted&amp;quot;, getRootElement(), player_Wasted )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And another example, this will spawn you in the middle of GTA SA world (x=0, y=0, z=3) after 2 seconds of your death&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler( &amp;quot;onPlayerWasted&amp;quot;, getRootElement( ),&lt;br /&gt;
	function()&lt;br /&gt;
		setTimer( spawnPlayer, 2000, 1, source, 0, 0, 3 )&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{See also/Server event|Player events}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnPlayerWasted&amp;diff=36924</id>
		<title>OnPlayerWasted</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnPlayerWasted&amp;diff=36924"/>
		<updated>2013-08-16T11:40:04Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Undo revision 36914 by Soner Sayakci (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server event}}&lt;br /&gt;
This event is triggered when a player is killed or dies.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
{{New feature/item|3|1.0||&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int totalAmmo, element killer, int killerWeapon, int bodypart [, bool stealth ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Deprecated_feature|3|1.0|&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
int totalAmmo, element killer, int killerWeapon, int bodypart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
*'''totalAmmo''': an integer representing the total ammo the victim had when he died.&lt;br /&gt;
*'''killer''': an [[element]] representing the player or vehicle who was the killer.  If there was no killer this is ''false''.&lt;br /&gt;
*'''killerWeapon''': an integer representing the [[Weapons|killer weapon]] or the [[Death Reasons|death reason]].&lt;br /&gt;
*'''bodypart''': an integer representing the bodypart ID the victim was hit on when he died.&lt;br /&gt;
{{BodyParts}}&lt;br /&gt;
*{{New feature/item|3|1.0||'''stealth''': boolean value representing whether or not this was a stealth kill}}&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The [[event system#Event source|source]] of this event is the [[player]] that died or got killed.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example prints the killer and bodypart to the chat when a player dies.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- register player_Wasted as a handler for onPlayerWasted&lt;br /&gt;
function player_Wasted ( attacker, weapon, bodypart )&lt;br /&gt;
	-- if there was an attacker&lt;br /&gt;
	if ( attacker ) then&lt;br /&gt;
		-- we declare our variable outside the following checks&lt;br /&gt;
		local tempString&lt;br /&gt;
		-- if the element that killed him was a player,&lt;br /&gt;
		if ( getElementType ( attacker ) == &amp;quot;player&amp;quot; ) then&lt;br /&gt;
			-- put the attacker, victim and weapon info in the string&lt;br /&gt;
			tempString = getPlayerName ( attacker )..&amp;quot; killed &amp;quot;..getPlayerName ( source )..&amp;quot; (&amp;quot;..getWeaponNameFromID ( weapon )..&amp;quot;)&amp;quot;&lt;br /&gt;
		-- else, if it was a vehicle,&lt;br /&gt;
		elseif ( getElementType ( attacker ) == &amp;quot;vehicle&amp;quot; ) then&lt;br /&gt;
			-- we'll get the name from the attacker vehicle's driver&lt;br /&gt;
			local tempString = getPlayerName ( getVehicleController ( attacker ) )..&amp;quot; killed &amp;quot;..getPlayerName ( source )..&amp;quot; (&amp;quot;..getWeaponNameFromID ( weapon )..&amp;quot;)&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		-- if the victim was shot in the head, append a special message&lt;br /&gt;
		if ( bodypart == 9 ) then&lt;br /&gt;
			tempString = tempString..&amp;quot; (HEADSHOT!)&amp;quot;&lt;br /&gt;
		-- else, just append the bodypart name&lt;br /&gt;
		else&lt;br /&gt;
			tempString = tempString..&amp;quot; (&amp;quot;..getBodyPartName ( bodypart )..&amp;quot;)&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		-- display the message&lt;br /&gt;
		outputChatBox ( tempString )&lt;br /&gt;
	-- if there was no attacker,&lt;br /&gt;
	else&lt;br /&gt;
		-- output a death message without attacker info&lt;br /&gt;
		outputChatBox ( getPlayerName ( source )..&amp;quot; died. (&amp;quot;..getWeaponNameFromID ( weapon )..&amp;quot;) (&amp;quot;..getBodyPartName ( bodypart )..&amp;quot;)&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerWasted&amp;quot;, getRootElement(), player_Wasted )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And another example, this will spawn you in the middle of GTA SA world (x=0, y=0, z=3) after 2 seconds of your death&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler( &amp;quot;onPlayerWasted&amp;quot;, getRootElement( ),&lt;br /&gt;
	function()&lt;br /&gt;
		setTimer( spawnPlayer, 2000, 1, source, 0, 0, 3 )&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{See also/Server event|Player events}}&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Client_vehicle_events&amp;diff=36081</id>
		<title>Template:Client vehicle events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Client_vehicle_events&amp;diff=36081"/>
		<updated>2013-05-23T17:15:46Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: onClientVehicleDrown does not exist in the trunk, but only in jb-contrib&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[onClientVehicleRespawn]]&lt;br /&gt;
*[[onClientVehicleEnter]]&lt;br /&gt;
*[[onClientVehicleExit]]&lt;br /&gt;
*[[onClientVehicleExplode]]&lt;br /&gt;
*[[onClientVehicleStartEnter]]&lt;br /&gt;
*[[onClientVehicleStartExit]]&lt;br /&gt;
*[[onClientTrailerAttach]]&lt;br /&gt;
*[[onClientTrailerDetach]]&lt;br /&gt;
{{New feature/item|3.0130|1.3|3653|&lt;br /&gt;
*[[onClientVehicleCollision]]&lt;br /&gt;
}}&lt;br /&gt;
{{New feature/item|4.0132|1.3.1|5012|&lt;br /&gt;
*[[onClientVehicleNitroStateChange]]&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>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PowerupManager&amp;diff=35982</id>
		<title>PowerupManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PowerupManager&amp;diff=35982"/>
		<updated>2013-05-12T13:31:29Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Seems to be a resource and not a module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Outdated|}}&lt;br /&gt;
&lt;br /&gt;
The [[PowerupManager|powerupManager]] library was created to ease the use of advanced, more custom pickups (powerups). &lt;br /&gt;
&lt;br /&gt;
It exists out of server and client scripts to create, handle and destroy custom powerup items.&lt;br /&gt;
&lt;br /&gt;
Advanced features contain: custom clientside animations (spin, up-down), custom collision element for triggering, server side triggering (to prevent cheating), change powerup object on the fly (for example triggering such a powerup gives a random advantage based on current modelID), ...&lt;br /&gt;
&lt;br /&gt;
Also since it allows you to set a custom colShape, you can use it to create tripmines, ...&lt;br /&gt;
=Used by=&lt;br /&gt;
=Exported scripting functions=&lt;br /&gt;
==Server==&lt;br /&gt;
{{PowerupManager/ExportedServerFunctions}}&lt;br /&gt;
==Client==&lt;br /&gt;
{{PowerupManager/ExportedClientFunctions}}&lt;br /&gt;
=Events=&lt;br /&gt;
Events prefixed with pum are ceated for internal usage only. You still can hook them, but we suggest you don't.&lt;br /&gt;
==Server==&lt;br /&gt;
{{PowerupManager/ServerEvents}}&lt;br /&gt;
==Client==&lt;br /&gt;
{{PowerupManager/ClientEvents}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ru:PowerupManager]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PT-BR/M%C3%B3dulos&amp;diff=35981</id>
		<title>PT-BR/Módulos</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/M%C3%B3dulos&amp;diff=35981"/>
		<updated>2013-05-12T13:30:27Z</updated>

		<summary type="html">&lt;p&gt;Sbx320: Removed inclusion to english pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Os módulos funcionam como extenções para o sistema Lua do Multi Theft Auto. Eles podem utilizar recursos nativos do MTA já escritas em C++ para desempenhar diversas funções que ainda não foram programadas no modo multiplayer. Todos os módulos podem ser encontrados na lista abaixo. Vale lembrar que estes não são distribuidos pelo Multi Theft Auto, portanto terão que ser instalados pelo próprio usuário.&lt;br /&gt;
&lt;br /&gt;
==Lista dos módulos==&lt;br /&gt;
Você pode ver uma lista com as páginas totalmente documentadas [[:Category:Modules|aqui]].&lt;br /&gt;
&lt;br /&gt;
==SDK para módulos==&lt;br /&gt;
Para que você possa criar seus próprios módulos, você deve usar o SDK fornecido abaixo para ambos os sistemas operacionais Linux e Windows.&lt;br /&gt;
&lt;br /&gt;
* Linux&lt;br /&gt;
** Disponível em nosso [http://files.mtasa.com/apps/1.0/dm/ml_devkit.tar.gz link official]&lt;br /&gt;
* Microsoft Windows&lt;br /&gt;
** Disponível no site do [http://www.mediafire.com/?b8b3asgegn0xkm4 Mediafire]&lt;br /&gt;
&lt;br /&gt;
===Funções do SDK===&lt;br /&gt;
*Por enquanto são essas:&lt;br /&gt;
**Funções Nativas:&lt;br /&gt;
***HelloWorld&lt;br /&gt;
**Funções do MySQL:&lt;br /&gt;
***MySQLCreate&lt;br /&gt;
***MySQLOpen&lt;br /&gt;
***MySQLDestroy&lt;br /&gt;
***MySQLQuery&lt;br /&gt;
***MySQLSafeString&lt;br /&gt;
&lt;br /&gt;
[[en:Modules]]&lt;br /&gt;
[[ru:Modules]]&lt;/div&gt;</summary>
		<author><name>Sbx320</name></author>
	</entry>
</feed>