<?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=Jaysds</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=Jaysds"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Jaysds"/>
	<updated>2026-04-13T20:04:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Version_History&amp;diff=42184</id>
		<title>Version History</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Version_History&amp;diff=42184"/>
		<updated>2014-09-27T02:44:25Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|If you just want to download [[Multi Theft Auto]] go here:&lt;br /&gt;
* [http://mtasa.com Download MTA: San Andreas {{Current Version|full}}]&lt;br /&gt;
* [[Archive|Download Multi Theft Auto 0.5r2 (GTA3 and Vice City)]]&lt;br /&gt;
}}&lt;br /&gt;
An overview of the (released) MTA versions.&lt;br /&gt;
&lt;br /&gt;
== List of (released) versions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ List of Multi Theft Auto Versions&lt;br /&gt;
|-&lt;br /&gt;
! Release&lt;br /&gt;
! Version&lt;br /&gt;
! Date&lt;br /&gt;
! GTA: III&lt;br /&gt;
! GTA: Vice City&lt;br /&gt;
! GTA: San Andreas&lt;br /&gt;
! License&lt;br /&gt;
|-&lt;br /&gt;
! GTA3:AM&lt;br /&gt;
| 0.1&lt;br /&gt;
| February 9, 2003&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | GTA3:MTA&lt;br /&gt;
| 0.2a&lt;br /&gt;
| February 28, 2003&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.3b&lt;br /&gt;
| May 29, 2003&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | MTA:VC&lt;br /&gt;
| 0.1&lt;br /&gt;
| August 2, 2003&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| September 20, 2003&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| December 25, 2003&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.3r2&lt;br /&gt;
| January 1, 2004&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;6&amp;quot; | MTA&lt;br /&gt;
| 0.4&lt;br /&gt;
| July 27, 2004&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.4.1&lt;br /&gt;
| July 31, 2004&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| January 31, 2005&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #FFD6BF;&amp;quot; | [http://files.mtasa.com/web/mta_0.5_launch/051.htm 0.5.1 (2005)]&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #FFEC99;&amp;quot; | [http://forum.mtasa.com/viewtopic.php?f=31&amp;amp;t=31692#p336938 0.5r2]&lt;br /&gt;
| January 31, 2011&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #B2BDFF;&amp;quot; | [http://www.projectredivivus.com/ 0.5.1 (2013)]&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;1&amp;quot; | MTA:VC&lt;br /&gt;
| style=&amp;quot;background: #FFD6BF;&amp;quot; | [http://files.mtasa.com/web/mtablue.info/ Blue]&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | MTA:SA Race&lt;br /&gt;
| 1.0&lt;br /&gt;
| January 22, 2006&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| March 16, 2006&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| March 18, 2006&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| May 18, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | MTA:SA Deathmatch&lt;br /&gt;
| 1.0 DP1.0&lt;br /&gt;
| January 3, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.0&lt;br /&gt;
| January 10, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.1&lt;br /&gt;
| May 23, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.2&lt;br /&gt;
| August 4, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.3&lt;br /&gt;
| August 6, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;16&amp;quot; | MTA:SA&lt;br /&gt;
| 1.0&lt;br /&gt;
| August 21, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.1&lt;br /&gt;
| October 2, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.2&lt;br /&gt;
| October 24, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| December 18, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.4&lt;br /&gt;
| June 9, 2010&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.5&lt;br /&gt;
| March 28, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| August 25, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| September 19, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.2&lt;br /&gt;
| December 17, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3&lt;br /&gt;
| January 24, 2012&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.1&lt;br /&gt;
| September 3, 2012&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.2&lt;br /&gt;
| May 5, 2013&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.3&lt;br /&gt;
| July 2, 2013&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.4&lt;br /&gt;
| September 7, 2013&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.5&lt;br /&gt;
| February 24, 2014&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #99FF99;&amp;quot; | 1.4&lt;br /&gt;
| July 30, 2014&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Previous Version, Unsupported&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #99FF99;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Current Version, Supported&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #B2BDFF;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| In Development / Future Release&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #FFEC99;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Released by Community&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #FFD6BF;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Never Released&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* AM = Alternative Multiplayer&lt;br /&gt;
* DP = Developer Preview&lt;br /&gt;
** MTA:San Andreas 1.0 was also known as Developer Preview 3.0, this was later dropped because the 'new' 1.0 was a major release.&lt;br /&gt;
&lt;br /&gt;
{{Comparison of Versions}}&lt;br /&gt;
&lt;br /&gt;
== MTA 0.5 ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto 0.5|&lt;br /&gt;
image = [[File:Clientwelcome_nick.jpg|MTA 0.5 Client|center|230px]]|&lt;br /&gt;
status = Supported by community|&lt;br /&gt;
release = January 31, 2005|&lt;br /&gt;
core = 0.3|&lt;br /&gt;
license = Freeware|&lt;br /&gt;
}}&lt;br /&gt;
The latest stable release for GTA III and GTA: Vice City bundled in one client and server. This release was also the first version that had a server browser build in the client.&lt;br /&gt;
[[File:800px-Robber.jpg|Spawnscreen in Vice City at Robbers spawn|right|thumb|230px]]&lt;br /&gt;
&lt;br /&gt;
=== Gamemodes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! GTA&lt;br /&gt;
! Gamemode Name&lt;br /&gt;
! Uses Spawnscreen&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |GTA: Vice City&lt;br /&gt;
| [[MTA:VC Deathmatch Gamemode|Deathmatch]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[MTA:VC Stunt Gamemode|Stunt]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; |GTA III&lt;br /&gt;
| [[GTA3 Portland|Portland]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
|[[GTA3 SSV|Shoreside Vale]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
|[[GTA3 Staunton|Staunton]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Spawns ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ MTA:Vice City Deathmatch&lt;br /&gt;
|-&lt;br /&gt;
! Team/Spawn Name/Mode&lt;br /&gt;
! Spawn Location&lt;br /&gt;
|-&lt;br /&gt;
| Robbers&lt;br /&gt;
| Phil's Place - Little Haiti&lt;br /&gt;
|-&lt;br /&gt;
| Mexicans&lt;br /&gt;
| Escobar International Airport's terminal&lt;br /&gt;
|-&lt;br /&gt;
| Sailors&lt;br /&gt;
| Vice City Docks - Vice Port&lt;br /&gt;
|-&lt;br /&gt;
| Vice City Crusader&lt;br /&gt;
| Random Location in Vice City&lt;br /&gt;
|-&lt;br /&gt;
| Secret Service&lt;br /&gt;
| Under a shelter - Ocean Beach&lt;br /&gt;
|-&lt;br /&gt;
| Cops&lt;br /&gt;
| Police Stations in Vice City&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| Spectator&lt;br /&gt;
| Allows to watch other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ colspan=&amp;quot;2&amp;quot; | MTA:Vice City Stunt&lt;br /&gt;
|-&lt;br /&gt;
! Team/Spawn Name/Mode&lt;br /&gt;
! Spawn Location&lt;br /&gt;
|-&lt;br /&gt;
| Yuppies&lt;br /&gt;
| Spawn inside the multistory parking garage in Ocean Beach&lt;br /&gt;
|-&lt;br /&gt;
| Dirt Racers&lt;br /&gt;
| Spawn outside of the Stadium&lt;br /&gt;
|-&lt;br /&gt;
| Bikers&lt;br /&gt;
| Spawn in the parking lot behind the Malibu club&lt;br /&gt;
|-&lt;br /&gt;
| Speeders&lt;br /&gt;
| Spawn at the parking lot near the Escobar International Airport&lt;br /&gt;
|-&lt;br /&gt;
| Packer Driver&lt;br /&gt;
| Spawn at Downtown in the large parking lot near the Biker Bar&lt;br /&gt;
|-&lt;br /&gt;
| Fun House Dept.&lt;br /&gt;
| Spawns at North Point Mall's multistory parking garage&lt;br /&gt;
|-&lt;br /&gt;
| Heli Pilot&lt;br /&gt;
| Spawn at the Escobar International Airport runway&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| Spectator&lt;br /&gt;
| Allows to watch other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ GTA3:MTA Shoreside Vale&lt;br /&gt;
|-&lt;br /&gt;
! Team/Spawn Name&lt;br /&gt;
! Spawn Location&lt;br /&gt;
|-&lt;br /&gt;
| Yakuza&lt;br /&gt;
| Pike Creek&lt;br /&gt;
|-&lt;br /&gt;
| Southside Hoods&lt;br /&gt;
| Witchita Gardens&lt;br /&gt;
|-&lt;br /&gt;
| Columbians&lt;br /&gt;
| Cedar Grove&lt;br /&gt;
|-&lt;br /&gt;
| Cops&lt;br /&gt;
| Pike Creek&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Huge increase in stability. Using the errors reported to us using the Error Report Tool, we've managed to fix a large number of the common crashes.&lt;br /&gt;
* New Staunton Island map available for GTA3, which includes a race mode and deathmatch.&lt;br /&gt;
* New Shoreside Vale map available for GTA3, which includes several gamemodes. &lt;br /&gt;
* Lots of changes to the existing maps.&lt;br /&gt;
* A server browser has been added to the client along with an area to store your favourites and a list of servers you've played on recently (History). &lt;br /&gt;
* New Client design - The client has been redesigned to make it easier to use. Error messages are now more self explanatory and checks are added to help users ensure their game is set up correctly. &lt;br /&gt;
* Added an in-client server that allows you to quickly configure and host a server straight from the MTA Client.&lt;br /&gt;
* Integrated the MTA Protocol handler - now mta:// links will work for all MTA 0.5 users.&lt;br /&gt;
* Redesigned MTA Admin Tool to make it easier and more logical to use. &lt;br /&gt;
* In client global MOTD so that you can hear about news from MTA immediately.&lt;br /&gt;
* A rich text welcome message that the server can show to players when they join. This can contain much more information than the normal Message of the Day and is visible in the client the entire time the user is on the server.&lt;br /&gt;
* New installation and configuration scripts for easy setup for Linux dedicated servers. &lt;br /&gt;
* More platforms supported for the dedicated server, including FreeBSD and OpenBSD. &lt;br /&gt;
* Improved error report tool is now installed by default (though optionally).&lt;br /&gt;
* Chat box in the client now scrolls properly, as most chat programs do (scroll up to stop auto-scroll). &lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
&lt;br /&gt;
* '''Patch 1''': A server [http://forum.multitheftauto.com/viewtopic.php?f=31&amp;amp;t=13923#p198981 patch] was released; the Message of The Day feature could be exploited.&lt;br /&gt;
* '''0.5.1 (2005)''': In February 2005 MTA 0.5.1 [http://files.mtasa.com/web/mta_0.5_launch/051.htm preview] was shown to the public, addressing known issues and adding new features. 0.5.1 was never released.&lt;br /&gt;
* '''0.5r2''': Members of the MTA community released a minor update called 0.5r2 for 0.5, this also includes a new (external) server browser, the included server browser in 0.5 client is non-functional since 2008.&lt;br /&gt;
** [http://forum.mtasa.com/viewtopic.php?f=31&amp;amp;t=31692#p336938 Download]&lt;br /&gt;
** [http://forum.mtasa.com/viewtopic.php?f=31&amp;amp;t=31692#p336939 Changelog for 0.5r2]&lt;br /&gt;
* '''0.5.1 (2013)''': In 2013 members of the MTA community called ''Project Redivivus'' are developing a minor update for 0.5 with major changes. This is likely to become open source. &lt;br /&gt;
** [http://www.projectredivivus.com/ Website]&lt;br /&gt;
&lt;br /&gt;
=== Archived Wiki pages ===&lt;br /&gt;
* [[MTA_0.5_EULA|EULA]]&lt;br /&gt;
* [[MTA_0.5_Installation|Installation]]&lt;br /&gt;
* [[MTA_0.5_Known_Issues|Known Issues]]&lt;br /&gt;
* [[MTA:VC_0.5|0.5 Vice City]]&lt;br /&gt;
* [[MTA:VC_Deathmatch_Gamemode|Vice City Deathmatch Gamemode]]&lt;br /&gt;
* [[MTA:VC_Stunt_Gamemode|Vice City Stunt Gamemode]]&lt;br /&gt;
* [[MTA:mA]]&lt;br /&gt;
* [[Using_A_0.5_Server_With_Screen|Using the server with screen utility]]&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
*[[MTA Vault]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas Race ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto: San Andreas Race|&lt;br /&gt;
image = [[File:MTASA-Race-Mainmenu.png|Multi Theft Auto± San Andreas Race Main Menu|center|230px]]|&lt;br /&gt;
status = Unsupported/Obsolete|&lt;br /&gt;
release = May 18, 2008|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = Freeware|&lt;br /&gt;
}}&lt;br /&gt;
MTA:SA Race is the first release that was made with the blue framework, a new approach to control the game (GTA). The sync was also better over the previous releases and the client is in game not an external application. Notice the blue GUI in the screenshot.&lt;br /&gt;
&lt;br /&gt;
A new slogan was introduced: &amp;quot;Stop Playing With Yourself.&amp;quot;&lt;br /&gt;
[[File:Mtavcbluelaunching.png|MTA Loading screen with the new slogan: &amp;quot;Stop Playing With Yourself.&amp;quot;|thumb|230px]]&lt;br /&gt;
&lt;br /&gt;
=== Gamemodes ===&lt;br /&gt;
As the name suggests it is only race (you cannot get out of your vehicle).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
!Gamemode&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Race&lt;br /&gt;
|-&lt;br /&gt;
|Freeroam&lt;br /&gt;
|-&lt;br /&gt;
|Destruction Derby&lt;br /&gt;
|The goal is to survive, last player that is still alive wins.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
[[File:MTASA-Race-Racing.jpg|Racing in MTA:SA|right|thumb|230px]]&lt;br /&gt;
* In game client.&lt;br /&gt;
* Map Editor to create a map in game.&lt;br /&gt;
* Optimised netcode results in reduced lag.&lt;br /&gt;
* Blue loads a DLL with the game instead of injecting code into its memory process. This improves stability and means that custom SCM files do not have to be moved to the game's directory when it is started. &lt;br /&gt;
* Full integration means that Blue's server list is directly integrated into GTA's GUI.&lt;br /&gt;
* Fewer glitches. This is achieved by synchronizing every animation, implementing a custom pause menu so that people can't pause to escape death, and forcing the frame limiter on so that everyone's game runs at the same maximum speed. &lt;br /&gt;
* Greater synchronization, this means that MTA players can finally use boats.&lt;br /&gt;
* Anti cheat. &lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* '''1.1'''&lt;br /&gt;
** New mappack&lt;br /&gt;
** New map nomination voting system&lt;br /&gt;
** Respawning during map&lt;br /&gt;
** Map timelimit added in map files and server config&lt;br /&gt;
** New player animation sync&lt;br /&gt;
** Admins can PM players from remote admin&lt;br /&gt;
** The 255 map limit has been fixed&lt;br /&gt;
** Fixed various admin stability issues&lt;br /&gt;
* '''1.1.1'''&lt;br /&gt;
** Fixed: Freezes that occurred frequently for some users (and not at all for others)&lt;br /&gt;
** Fixed: Nothing would happen after the splash screen appeared for some users&lt;br /&gt;
** Fixed: All players getting kicked from a server with a &amp;quot;protocol error 92&amp;quot; message&lt;br /&gt;
** Fixed: Players getting stuck in &amp;quot;You will respawn in 1 second&amp;quot; mode, if a race starts before they join completely&lt;br /&gt;
** Fixed: Issue where error reporter would sometimes fail to find core dump&lt;br /&gt;
** Fixed: Occasional crash when connecting to a server through the server browser&lt;br /&gt;
** Fixes: Various other crashes&lt;br /&gt;
** Added: An error message is now displayed if you try to use the ′order checkpoints′ option in the map editor if you have no checkpoints in your map&lt;br /&gt;
** Added: DefaultMapDuration and DefaultRespawnTime to server config&lt;br /&gt;
* '''1.1.2'''&lt;br /&gt;
** All-Seeing Eye server-browser has been removed in favour of a more reliable and faster replacement&lt;br /&gt;
** Removed redundant &amp;quot;MTA Center&amp;quot; references&lt;br /&gt;
** Removed support for built-in error reporter&lt;br /&gt;
&lt;br /&gt;
No more releases for MTA:SA Race, the new MTA release made the race version obsolete, a new resource called 'race' which could read the race maps replaced it.&lt;br /&gt;
&lt;br /&gt;
=== Archived Wiki pages ===&lt;br /&gt;
*[[MTA:SA Race FAQ]]&lt;br /&gt;
*[[Blue]]&lt;br /&gt;
*[[MTA:SA R1]]&lt;br /&gt;
*[[MTA:SA Race-Windows Server Guide]]&lt;br /&gt;
*[[MTA General FAQ]]&lt;br /&gt;
*[[MTA R1 remote administration_protocol]]&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Upgrading from MTA:Race]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas (Deathmatch) 1.0.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto: San Andreas (Deathmatch) 1.0.x|&lt;br /&gt;
image = [[File:MTA_Main_Menu_1.0.x.png|Multi Theft Auto: San Andreas (Deathmatch) Main Menu|center|230px]]|&lt;br /&gt;
status = Unsupported|&lt;br /&gt;
release = March 28, 2011|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = Freeware (Until DP2.3) GPLv3 (since 1.0 (August 21, 2009))|&lt;br /&gt;
}}&lt;br /&gt;
MTA:San Andreas Deathmatch Developer Preview 1 was the first release that featured on-foot synchronization for San Andreas. The name deathmatch refers to the ability to shoot with weapons and get on-foot unlike the race version. The tag deathmatch has been dropped in later releases because this version allowed customized gamemodes with LUA scripting and confused players. While the first 5 releases were called 'Developer Preview' it was very popular. In August 21, 2009 version 1.0.x was released with the GPLv3 license this allowed to work with more people on the next release when it became open source.&lt;br /&gt;
&lt;br /&gt;
=== Gamemodes ===&lt;br /&gt;
This was the first released that allowed to create customized gamemodes with the LUA scripting language. No static gamemodes. &lt;br /&gt;
Scripted gamemodes and utilities packed together are called resources.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* On-foot synchronization.&lt;br /&gt;
* Improved vehicle synchronization.&lt;br /&gt;
* LUA scripting.&lt;br /&gt;
* New map editor with EDF (Editor Definition File) allowed to edit custom gamemodes created with LUA.&lt;br /&gt;
* Included web server in server side for remote administration or statistics.&lt;br /&gt;
* Client side scripting with LUA, allowing to transfer files to the client which can be used to create GUI on the client for example.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* 1.0.1&lt;br /&gt;
* 1.0.2&lt;br /&gt;
* 1.0.3&lt;br /&gt;
* 1.0.4&lt;br /&gt;
* 1.0.5&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.0]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue/ Subversion on Google Code]&lt;br /&gt;
* [[Scripting Introduction]]&lt;br /&gt;
* [http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot; Manual]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.1.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto: San Andreas 1.1.x|&lt;br /&gt;
image = [[File:MTA_Main_Menu_1.1.x.png|Multi Theft Auto: San Andreas 1.1.x Main Menu|center|230px]]|&lt;br /&gt;
status = Unsupported|&lt;br /&gt;
release = September 19, 2011|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Vehicle handling can be modified by servers&lt;br /&gt;
* Custom fonts&lt;br /&gt;
* Special skins&lt;br /&gt;
* Improved server browser&lt;br /&gt;
* Voice chat (on servers that support it)&lt;br /&gt;
* Improved sound support, including streaming audio&lt;br /&gt;
* Increased maximum player count&lt;br /&gt;
* Custom shaders&lt;br /&gt;
* Cars can now have any color you want, not just the ones GTA has normally&lt;br /&gt;
* GUI Skin switching&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* 1.1.1&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.1]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.2.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto:San Andreas 1.2.x|&lt;br /&gt;
status = Unsupported|&lt;br /&gt;
release = December 17, 2011|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Major bandwidth usage reductions&lt;br /&gt;
* Ability to replace ped models&lt;br /&gt;
* Ability to replace weapon models&lt;br /&gt;
* Threaded database access functions&lt;br /&gt;
* Custom weapon stats&lt;br /&gt;
* Synced and controllable vehicle variants&lt;br /&gt;
* Improved bullet accuracy synchronization&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* None&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.2]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.3.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto:San Andreas 1.3.x|&lt;br /&gt;
status = Stable|&lt;br /&gt;
release = February 7, 2014|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
This version was released quickly because 1.2 had several network related issues, that were fixed in this release.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Fixes for various network problems which occured in 1.1 and 1.2 series. (including a fix for &amp;quot;Map download breaking often on large transfers&amp;quot; issue)&lt;br /&gt;
* Added new scripting functions for removal of default GTASA map objects. (including breakable ones)&lt;br /&gt;
* Introduced a new scripting event. - [[onClientVehicleCollision]]&lt;br /&gt;
* Implemented a new scripting function. - [[takePlayerScreenShot]]&lt;br /&gt;
* Fixes for various crashes and issues. (including &amp;quot;warp glitch&amp;quot;, inaccurate heat seekers sync, createProjectile() velocity desync between clients, custom models texture crash, &amp;quot;white models&amp;quot; when using custom models and more)&lt;br /&gt;
* Added functionality to protect client-side scripts which pre-compiles them before being sent and stops resources from being saved on disk. This is configurable in the resource's meta.xml.&lt;br /&gt;
* Added pixel manipulation functionality.&lt;br /&gt;
* Introduced new client-side scripting functions - [[setBirdsEnabled]] and [[getBirdsEnabled]]&lt;br /&gt;
* Included a new gui skin - [http://forum.mtasa.com/viewtopic.php?f=139&amp;amp;t=36010#p371815 Lighter black] - contributed by Aibo&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* 1.3.1&lt;br /&gt;
* 1.3.2&lt;br /&gt;
* 1.3.3&lt;br /&gt;
* 1.3.4&lt;br /&gt;
* 1.3.5&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.3]]&lt;br /&gt;
* [[Changes in 1.3.1]]&lt;br /&gt;
* [[Changes in 1.3.2]]&lt;br /&gt;
* [[Changes in 1.3.3]]&lt;br /&gt;
* [[Changes in 1.3.4]]&lt;br /&gt;
* [[Changes in 1.3.5]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.4 ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto:San Andreas 1.4|&lt;br /&gt;
status = Stable|&lt;br /&gt;
release = July 30, 2014|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Localization of MTA's Menu&lt;br /&gt;
* Introduced [[OOP]]&lt;br /&gt;
* Introduced Matrices and Vectors&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.4]]&lt;br /&gt;
* [[Changes in 1.4.1]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://code.google.com/p/mtasa-blue/source/browse/trunk/CHANGELOG Changelog] - Overview of all the changes since MTA: San Andreas 1.0dp1.&lt;br /&gt;
* [[MTA Vault]] - Overview of releases before MTA 0.5.&lt;br /&gt;
* [[Archive]] - Multi Theft Auto Archive.&lt;br /&gt;
&lt;br /&gt;
[[Category: Historical]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Version_History&amp;diff=42183</id>
		<title>Version History</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Version_History&amp;diff=42183"/>
		<updated>2014-09-27T02:41:16Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|If you just want to download [[Multi Theft Auto]] go here:&lt;br /&gt;
* [http://mtasa.com Download MTA: San Andreas {{Current Version|full}}]&lt;br /&gt;
* [[Archive|Download Multi Theft Auto 0.5r2 (GTA3 and Vice City)]]&lt;br /&gt;
}}&lt;br /&gt;
An overview of the (released) MTA versions.&lt;br /&gt;
&lt;br /&gt;
== List of (released) versions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ List of Multi Theft Auto Versions&lt;br /&gt;
|-&lt;br /&gt;
! Release&lt;br /&gt;
! Version&lt;br /&gt;
! Date&lt;br /&gt;
! GTA: III&lt;br /&gt;
! GTA: Vice City&lt;br /&gt;
! GTA: San Andreas&lt;br /&gt;
! License&lt;br /&gt;
|-&lt;br /&gt;
! GTA3:AM&lt;br /&gt;
| 0.1&lt;br /&gt;
| February 9, 2003&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | GTA3:MTA&lt;br /&gt;
| 0.2a&lt;br /&gt;
| February 28, 2003&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.3b&lt;br /&gt;
| May 29, 2003&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | MTA:VC&lt;br /&gt;
| 0.1&lt;br /&gt;
| August 2, 2003&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.2&lt;br /&gt;
| September 20, 2003&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.3&lt;br /&gt;
| December 25, 2003&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.3r2&lt;br /&gt;
| January 1, 2004&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;6&amp;quot; | MTA&lt;br /&gt;
| 0.4&lt;br /&gt;
| July 27, 2004&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.4.1&lt;br /&gt;
| July 31, 2004&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 0.5&lt;br /&gt;
| January 31, 2005&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #FFD6BF;&amp;quot; | [http://files.mtasa.com/web/mta_0.5_launch/051.htm 0.5.1 (2005)]&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #FFEC99;&amp;quot; | [http://forum.mtasa.com/viewtopic.php?f=31&amp;amp;t=31692#p336938 0.5r2]&lt;br /&gt;
| January 31, 2011&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #B2BDFF;&amp;quot; | [http://www.projectredivivus.com/ 0.5.1 (2013)]&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;1&amp;quot; | MTA:VC&lt;br /&gt;
| style=&amp;quot;background: #FFD6BF;&amp;quot; | [http://files.mtasa.com/web/mtablue.info/ Blue]&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{n/a}}&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;4&amp;quot; | MTA:SA Race&lt;br /&gt;
| 1.0&lt;br /&gt;
| January 22, 2006&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| March 16, 2006&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| March 18, 2006&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| May 18, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;5&amp;quot; | MTA:SA Deathmatch&lt;br /&gt;
| 1.0 DP1.0&lt;br /&gt;
| January 3, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.0&lt;br /&gt;
| January 10, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.1&lt;br /&gt;
| May 23, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.2&lt;br /&gt;
| August 4, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
| 1.0 DP2.3&lt;br /&gt;
| August 6, 2008&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| Freeware&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;16&amp;quot; | MTA:SA&lt;br /&gt;
| 1.0&lt;br /&gt;
| August 21, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.1&lt;br /&gt;
| October 2, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.2&lt;br /&gt;
| October 24, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| December 18, 2009&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.4&lt;br /&gt;
| June 9, 2010&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.0.5&lt;br /&gt;
| March 28, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.1&lt;br /&gt;
| August 25, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| September 19, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.2&lt;br /&gt;
| December 17, 2011&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3&lt;br /&gt;
| January 24, 2012&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.1&lt;br /&gt;
| September 3, 2012&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.2&lt;br /&gt;
| May 5, 2013&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.3&lt;br /&gt;
| July 2, 2013&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.4&lt;br /&gt;
| September 7, 2013&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| 1.3.5&lt;br /&gt;
| February 24, 2014&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #99FF99;&amp;quot; | 1.4&lt;br /&gt;
| July 30, 2014&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| GPLv3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Previous Version, Unsupported&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #99FF99;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Current Version, Supported&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #B2BDFF;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| In Development / Future Release&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #FFEC99;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Released by Community&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;20px;&amp;quot; style=&amp;quot;background: #FFD6BF;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| Never Released&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* AM = Alternative Multiplayer&lt;br /&gt;
* DP = Developer Preview&lt;br /&gt;
** MTA:San Andreas 1.0 was also known as Developer Preview 3.0, this was later dropped because the 'new' 1.0 was a major release.&lt;br /&gt;
&lt;br /&gt;
{{Comparison of Versions}}&lt;br /&gt;
&lt;br /&gt;
== MTA 0.5 ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto 0.5|&lt;br /&gt;
image = [[File:Clientwelcome_nick.jpg|MTA 0.5 Client|center|230px]]|&lt;br /&gt;
status = Supported by community|&lt;br /&gt;
release = January 31, 2005|&lt;br /&gt;
core = 0.3|&lt;br /&gt;
license = Freeware|&lt;br /&gt;
}}&lt;br /&gt;
The latest stable release for GTA III and GTA: Vice City bundled in one client and server. This release was also the first version that had a server browser build in the client.&lt;br /&gt;
[[File:800px-Robber.jpg|Spawnscreen in Vice City at Robbers spawn|right|thumb|230px]]&lt;br /&gt;
&lt;br /&gt;
=== Gamemodes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! GTA&lt;br /&gt;
! Gamemode Name&lt;br /&gt;
! Uses Spawnscreen&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; |GTA: Vice City&lt;br /&gt;
| [[MTA:VC Deathmatch Gamemode|Deathmatch]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| [[MTA:VC Stunt Gamemode|Stunt]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;3&amp;quot; |GTA III&lt;br /&gt;
| [[GTA3 Portland|Portland]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
|[[GTA3 SSV|Shoreside Vale]]&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
|[[GTA3 Staunton|Staunton]]&lt;br /&gt;
| {{No}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Spawns ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ MTA:Vice City Deathmatch&lt;br /&gt;
|-&lt;br /&gt;
! Team/Spawn Name/Mode&lt;br /&gt;
! Spawn Location&lt;br /&gt;
|-&lt;br /&gt;
| Robbers&lt;br /&gt;
| Phil's Place - Little Haiti&lt;br /&gt;
|-&lt;br /&gt;
| Mexicans&lt;br /&gt;
| Escobar International Airport's terminal&lt;br /&gt;
|-&lt;br /&gt;
| Sailors&lt;br /&gt;
| Vice City Docks - Vice Port&lt;br /&gt;
|-&lt;br /&gt;
| Vice City Crusader&lt;br /&gt;
| Random Location in Vice City&lt;br /&gt;
|-&lt;br /&gt;
| Secret Service&lt;br /&gt;
| Under a shelter - Ocean Beach&lt;br /&gt;
|-&lt;br /&gt;
| Cops&lt;br /&gt;
| Police Stations in Vice City&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| Spectator&lt;br /&gt;
| Allows to watch other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ colspan=&amp;quot;2&amp;quot; | MTA:Vice City Stunt&lt;br /&gt;
|-&lt;br /&gt;
! Team/Spawn Name/Mode&lt;br /&gt;
! Spawn Location&lt;br /&gt;
|-&lt;br /&gt;
| Yuppies&lt;br /&gt;
| Spawn inside the multistory parking garage in Ocean Beach&lt;br /&gt;
|-&lt;br /&gt;
| Dirt Racers&lt;br /&gt;
| Spawn outside of the Stadium&lt;br /&gt;
|-&lt;br /&gt;
| Bikers&lt;br /&gt;
| Spawn in the parking lot behind the Malibu club&lt;br /&gt;
|-&lt;br /&gt;
| Speeders&lt;br /&gt;
| Spawn at the parking lot near the Escobar International Airport&lt;br /&gt;
|-&lt;br /&gt;
| Packer Driver&lt;br /&gt;
| Spawn at Downtown in the large parking lot near the Biker Bar&lt;br /&gt;
|-&lt;br /&gt;
| Fun House Dept.&lt;br /&gt;
| Spawns at North Point Mall's multistory parking garage&lt;br /&gt;
|-&lt;br /&gt;
| Heli Pilot&lt;br /&gt;
| Spawn at the Escobar International Airport runway&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| Spectator&lt;br /&gt;
| Allows to watch other players&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
|+ GTA3:MTA Shoreside Vale&lt;br /&gt;
|-&lt;br /&gt;
! Team/Spawn Name&lt;br /&gt;
! Spawn Location&lt;br /&gt;
|-&lt;br /&gt;
| Yakuza&lt;br /&gt;
| Pike Creek&lt;br /&gt;
|-&lt;br /&gt;
| Southside Hoods&lt;br /&gt;
| Witchita Gardens&lt;br /&gt;
|-&lt;br /&gt;
| Columbians&lt;br /&gt;
| Cedar Grove&lt;br /&gt;
|-&lt;br /&gt;
| Cops&lt;br /&gt;
| Pike Creek&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Huge increase in stability. Using the errors reported to us using the Error Report Tool, we've managed to fix a large number of the common crashes.&lt;br /&gt;
* New Staunton Island map available for GTA3, which includes a race mode and deathmatch.&lt;br /&gt;
* New Shoreside Vale map available for GTA3, which includes several gamemodes. &lt;br /&gt;
* Lots of changes to the existing maps.&lt;br /&gt;
* A server browser has been added to the client along with an area to store your favourites and a list of servers you've played on recently (History). &lt;br /&gt;
* New Client design - The client has been redesigned to make it easier to use. Error messages are now more self explanatory and checks are added to help users ensure their game is set up correctly. &lt;br /&gt;
* Added an in-client server that allows you to quickly configure and host a server straight from the MTA Client.&lt;br /&gt;
* Integrated the MTA Protocol handler - now mta:// links will work for all MTA 0.5 users.&lt;br /&gt;
* Redesigned MTA Admin Tool to make it easier and more logical to use. &lt;br /&gt;
* In client global MOTD so that you can hear about news from MTA immediately.&lt;br /&gt;
* A rich text welcome message that the server can show to players when they join. This can contain much more information than the normal Message of the Day and is visible in the client the entire time the user is on the server.&lt;br /&gt;
* New installation and configuration scripts for easy setup for Linux dedicated servers. &lt;br /&gt;
* More platforms supported for the dedicated server, including FreeBSD and OpenBSD. &lt;br /&gt;
* Improved error report tool is now installed by default (though optionally).&lt;br /&gt;
* Chat box in the client now scrolls properly, as most chat programs do (scroll up to stop auto-scroll). &lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
&lt;br /&gt;
* '''Patch 1''': A server [http://forum.multitheftauto.com/viewtopic.php?f=31&amp;amp;t=13923#p198981 patch] was released; the Message of The Day feature could be exploited.&lt;br /&gt;
* '''0.5.1 (2005)''': In February 2005 MTA 0.5.1 [http://files.mtasa.com/web/mta_0.5_launch/051.htm preview] was shown to the public, addressing known issues and adding new features. 0.5.1 was never released.&lt;br /&gt;
* '''0.5r2''': Members of the MTA community released a minor update called 0.5r2 for 0.5, this also includes a new (external) server browser, the included server browser in 0.5 client is non-functional since 2008.&lt;br /&gt;
** [http://forum.mtasa.com/viewtopic.php?f=31&amp;amp;t=31692#p336938 Download]&lt;br /&gt;
** [http://forum.mtasa.com/viewtopic.php?f=31&amp;amp;t=31692#p336939 Changelog for 0.5r2]&lt;br /&gt;
* '''0.5.1 (2013)''': In 2013 members of the MTA community called ''Project Redivivus'' are developing a minor update for 0.5 with major changes. This is likely to become open source. &lt;br /&gt;
** [http://www.projectredivivus.com/ Website]&lt;br /&gt;
&lt;br /&gt;
=== Archived Wiki pages ===&lt;br /&gt;
* [[MTA_0.5_EULA|EULA]]&lt;br /&gt;
* [[MTA_0.5_Installation|Installation]]&lt;br /&gt;
* [[MTA_0.5_Known_Issues|Known Issues]]&lt;br /&gt;
* [[MTA:VC_0.5|0.5 Vice City]]&lt;br /&gt;
* [[MTA:VC_Deathmatch_Gamemode|Vice City Deathmatch Gamemode]]&lt;br /&gt;
* [[MTA:VC_Stunt_Gamemode|Vice City Stunt Gamemode]]&lt;br /&gt;
* [[MTA:mA]]&lt;br /&gt;
* [[Using_A_0.5_Server_With_Screen|Using the server with screen utility]]&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
*[[MTA Vault]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas Race ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto: San Andreas Race|&lt;br /&gt;
image = [[File:MTASA-Race-Mainmenu.png|Multi Theft Auto± San Andreas Race Main Menu|center|230px]]|&lt;br /&gt;
status = Unsupported/Obsolete|&lt;br /&gt;
release = May 18, 2008|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = Freeware|&lt;br /&gt;
}}&lt;br /&gt;
MTA:SA Race is the first release that was made with the blue framework, a new approach to control the game (GTA). The sync was also better over the previous releases and the client is in game not an external application. Notice the blue GUI in the screenshot.&lt;br /&gt;
&lt;br /&gt;
A new slogan was introduced: &amp;quot;Stop Playing With Yourself.&amp;quot;&lt;br /&gt;
[[File:Mtavcbluelaunching.png|MTA Loading screen with the new slogan: &amp;quot;Stop Playing With Yourself.&amp;quot;|thumb|230px]]&lt;br /&gt;
&lt;br /&gt;
=== Gamemodes ===&lt;br /&gt;
As the name suggests it is only race (you cannot get out of your vehicle).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: auto; text-align: center; table-layout: fixed;&amp;quot;&lt;br /&gt;
!Gamemode&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Race&lt;br /&gt;
|-&lt;br /&gt;
|Freeroam&lt;br /&gt;
|-&lt;br /&gt;
|Destruction Derby&lt;br /&gt;
|The goal is to survive, last player that is still alive wins.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
[[File:MTASA-Race-Racing.jpg|Racing in MTA:SA|right|thumb|230px]]&lt;br /&gt;
* In game client.&lt;br /&gt;
* Map Editor to create a map in game.&lt;br /&gt;
* Optimised netcode results in reduced lag.&lt;br /&gt;
* Blue loads a DLL with the game instead of injecting code into its memory process. This improves stability and means that custom SCM files do not have to be moved to the game's directory when it is started. &lt;br /&gt;
* Full integration means that Blue's server list is directly integrated into GTA's GUI.&lt;br /&gt;
* Fewer glitches. This is achieved by synchronizing every animation, implementing a custom pause menu so that people can't pause to escape death, and forcing the frame limiter on so that everyone's game runs at the same maximum speed. &lt;br /&gt;
* Greater synchronization, this means that MTA players can finally use boats.&lt;br /&gt;
* Anti cheat. &lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* '''1.1'''&lt;br /&gt;
** New mappack&lt;br /&gt;
** New map nomination voting system&lt;br /&gt;
** Respawning during map&lt;br /&gt;
** Map timelimit added in map files and server config&lt;br /&gt;
** New player animation sync&lt;br /&gt;
** Admins can PM players from remote admin&lt;br /&gt;
** The 255 map limit has been fixed&lt;br /&gt;
** Fixed various admin stability issues&lt;br /&gt;
* '''1.1.1'''&lt;br /&gt;
** Fixed: Freezes that occurred frequently for some users (and not at all for others)&lt;br /&gt;
** Fixed: Nothing would happen after the splash screen appeared for some users&lt;br /&gt;
** Fixed: All players getting kicked from a server with a &amp;quot;protocol error 92&amp;quot; message&lt;br /&gt;
** Fixed: Players getting stuck in &amp;quot;You will respawn in 1 second&amp;quot; mode, if a race starts before they join completely&lt;br /&gt;
** Fixed: Issue where error reporter would sometimes fail to find core dump&lt;br /&gt;
** Fixed: Occasional crash when connecting to a server through the server browser&lt;br /&gt;
** Fixes: Various other crashes&lt;br /&gt;
** Added: An error message is now displayed if you try to use the ′order checkpoints′ option in the map editor if you have no checkpoints in your map&lt;br /&gt;
** Added: DefaultMapDuration and DefaultRespawnTime to server config&lt;br /&gt;
* '''1.1.2'''&lt;br /&gt;
** All-Seeing Eye server-browser has been removed in favour of a more reliable and faster replacement&lt;br /&gt;
** Removed redundant &amp;quot;MTA Center&amp;quot; references&lt;br /&gt;
** Removed support for built-in error reporter&lt;br /&gt;
&lt;br /&gt;
No more releases for MTA:SA Race, the new MTA release made the race version obsolete, a new resource called 'race' which could read the race maps replaced it.&lt;br /&gt;
&lt;br /&gt;
=== Archived Wiki pages ===&lt;br /&gt;
*[[MTA:SA Race FAQ]]&lt;br /&gt;
*[[Blue]]&lt;br /&gt;
*[[MTA:SA R1]]&lt;br /&gt;
*[[MTA:SA Race-Windows Server Guide]]&lt;br /&gt;
*[[MTA General FAQ]]&lt;br /&gt;
*[[MTA R1 remote administration_protocol]]&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Upgrading from MTA:Race]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas (Deathmatch) 1.0.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto: San Andreas (Deathmatch) 1.0.x|&lt;br /&gt;
image = [[File:MTA_Main_Menu_1.0.x.png|Multi Theft Auto: San Andreas (Deathmatch) Main Menu|center|230px]]|&lt;br /&gt;
status = Unsupported|&lt;br /&gt;
release = March 28, 2011|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = Freeware (Until DP2.3) GPLv3 (since 1.0 (August 21, 2009))|&lt;br /&gt;
}}&lt;br /&gt;
MTA:San Andreas Deathmatch Developer Preview 1 was the first release that featured on-foot synchronization for San Andreas. The name deathmatch refers to the ability to shoot with weapons and get on-foot unlike the race version. The tag deathmatch has been dropped in later releases because this version allowed customized gamemodes with LUA scripting and confused players. While the first 5 releases were called 'Developer Preview' it was very popular. In August 21, 2009 version 1.0.x was released with the GPLv3 license this allowed to work with more people on the next release when it became open source.&lt;br /&gt;
&lt;br /&gt;
=== Gamemodes ===&lt;br /&gt;
This was the first released that allowed to create customized gamemodes with the LUA scripting language. No static gamemodes. &lt;br /&gt;
Scripted gamemodes and utilities packed together are called resources.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* On-foot synchronization.&lt;br /&gt;
* Improved vehicle synchronization.&lt;br /&gt;
* LUA scripting.&lt;br /&gt;
* New map editor with EDF (Editor Definition File) allowed to edit custom gamemodes created with LUA.&lt;br /&gt;
* Included web server in server side for remote administration or statistics.&lt;br /&gt;
* Client side scripting with LUA, allowing to transfer files to the client which can be used to create GUI on the client for example.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* 1.0.1&lt;br /&gt;
* 1.0.2&lt;br /&gt;
* 1.0.3&lt;br /&gt;
* 1.0.4&lt;br /&gt;
* 1.0.5&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.0]]&lt;br /&gt;
* [http://code.google.com/p/mtasa-blue/ Subversion on Google Code]&lt;br /&gt;
* [[Scripting Introduction]]&lt;br /&gt;
* [http://www.lua.org/pil/index.html &amp;quot;Programming in Lua&amp;quot; Manual]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.1.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto: San Andreas 1.1.x|&lt;br /&gt;
image = [[File:MTA_Main_Menu_1.1.x.png|Multi Theft Auto: San Andreas 1.1.x Main Menu|center|230px]]|&lt;br /&gt;
status = Unsupported|&lt;br /&gt;
release = September 19, 2011|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Vehicle handling can be modified by servers&lt;br /&gt;
* Custom fonts&lt;br /&gt;
* Special skins&lt;br /&gt;
* Improved server browser&lt;br /&gt;
* Voice chat (on servers that support it)&lt;br /&gt;
* Improved sound support, including streaming audio&lt;br /&gt;
* Increased maximum player count&lt;br /&gt;
* Custom shaders&lt;br /&gt;
* Cars can now have any color you want, not just the ones GTA has normally&lt;br /&gt;
* GUI Skin switching&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* 1.1.1&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.1]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.2.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto:San Andreas 1.2.x|&lt;br /&gt;
status = Unsupported|&lt;br /&gt;
release = December 17, 2011|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Major bandwidth usage reductions&lt;br /&gt;
* Ability to replace ped models&lt;br /&gt;
* Ability to replace weapon models&lt;br /&gt;
* Threaded database access functions&lt;br /&gt;
* Custom weapon stats&lt;br /&gt;
* Synced and controllable vehicle variants&lt;br /&gt;
* Improved bullet accuracy synchronization&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* None&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.2]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.3.x ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto:San Andreas 1.3.x|&lt;br /&gt;
status = Stable|&lt;br /&gt;
release = February 7, 2014|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
This version was released quickly because 1.2 had several network related issues, that were fixed in this release.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Fixes for various network problems which occured in 1.1 and 1.2 series. (including a fix for &amp;quot;Map download breaking often on large transfers&amp;quot; issue)&lt;br /&gt;
* Added new scripting functions for removal of default GTASA map objects. (including breakable ones)&lt;br /&gt;
* Introduced a new scripting event. - [[onClientVehicleCollision]]&lt;br /&gt;
* Implemented a new scripting function. - [[takePlayerScreenShot]]&lt;br /&gt;
* Fixes for various crashes and issues. (including &amp;quot;warp glitch&amp;quot;, inaccurate heat seekers sync, createProjectile() velocity desync between clients, custom models texture crash, &amp;quot;white models&amp;quot; when using custom models and more)&lt;br /&gt;
* Added functionality to protect client-side scripts which pre-compiles them before being sent and stops resources from being saved on disk. This is configurable in the resource's meta.xml.&lt;br /&gt;
* Added pixel manipulation functionality.&lt;br /&gt;
* Introduced new client-side scripting functions - [[setBirdsEnabled]] and [[getBirdsEnabled]]&lt;br /&gt;
* Included a new gui skin - [http://forum.mtasa.com/viewtopic.php?f=139&amp;amp;t=36010#p371815 Lighter black] - contributed by Aibo&lt;br /&gt;
&lt;br /&gt;
=== Minor Updates ===&lt;br /&gt;
* 1.3.1&lt;br /&gt;
* 1.3.2&lt;br /&gt;
* 1.3.3&lt;br /&gt;
* 1.3.4&lt;br /&gt;
* 1.3.5&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
* [[Changes in 1.3]]&lt;br /&gt;
* [[Changes in 1.3.1]]&lt;br /&gt;
* [[Changes in 1.3.2]]&lt;br /&gt;
* [[Changes in 1.3.3]]&lt;br /&gt;
* [[Changes in 1.3.4]]&lt;br /&gt;
* [[Changes in 1.3.5]]&lt;br /&gt;
&lt;br /&gt;
== MTA:San Andreas 1.4 ==&lt;br /&gt;
{{versionbox|&lt;br /&gt;
versionname = Multi Theft Auto:San Andreas 1.4|&lt;br /&gt;
status = Stable|&lt;br /&gt;
release = July 30, 2014|&lt;br /&gt;
core = Blue|&lt;br /&gt;
license = GPLv3|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Localization of MTA's Menu&lt;br /&gt;
* Introduced [[OOP]]&lt;br /&gt;
* Introduced Matrices and Vectors&lt;br /&gt;
&lt;br /&gt;
See [[Changes in 1.4]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://code.google.com/p/mtasa-blue/source/browse/trunk/CHANGELOG Changelog] - Overview of all the changes since MTA: San Andreas 1.0dp1.&lt;br /&gt;
* [[MTA Vault]] - Overview of releases before MTA 0.5.&lt;br /&gt;
* [[Archive]] - Multi Theft Auto Archive.&lt;br /&gt;
&lt;br /&gt;
[[Category: Historical]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetPedOxygenLevel&amp;diff=41711</id>
		<title>SetPedOxygenLevel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetPedOxygenLevel&amp;diff=41711"/>
		<updated>2014-09-02T19:13:07Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Example */ No need for section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
This function allows you to set the oxygen level of a [[ped]].&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool setPedOxygenLevel ( ped thePed, float oxygen )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''thePed''': the [[ped]] whose oxygen level you want to modify.&lt;br /&gt;
*'''oxygen''': the amount of oxygen you want to set on the [[ped]]. Native values are from 0 to 1000. Each of the stamina (22) and underwater stamina (225) [[Template:Stats|stat]] maximum adds a bonus of 1500. So the maximum oxygen level is 4000.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the oxygen level was changed succesfully. Returns ''false'' if an invalid ped and/or oxygen level was specified.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example fills the local player's oxygen.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function fillOxygen ( command )&lt;br /&gt;
	local maxOxygen = math.floor ( 1000 + getPedStat ( localPlayer, 22 ) * 1.5 + getPedStat ( localPlayer, 225 ) * 1.5 )&lt;br /&gt;
	setPedOxygenLevel ( localPlayer, maxOxygen )&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;filloxygen&amp;quot;, fillOxygen )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_ped_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41639</id>
		<title>ConvertTextToSpeech</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41639"/>
		<updated>2014-08-25T19:25:56Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Example: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
*only Server Side&lt;br /&gt;
*Author: Has[S]oN&lt;br /&gt;
&lt;br /&gt;
This function converts any word to sound &lt;br /&gt;
==Syntax:==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;convertWordsToSound(string text)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Required Arguments: ==&lt;br /&gt;
* text: the Text you want to convert it from word to sound&lt;br /&gt;
&lt;br /&gt;
== Code: ==&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;
function convertWordsToSound(str)&lt;br /&gt;
local str2 = &amp;quot;&amp;quot;&lt;br /&gt;
str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&lt;br /&gt;
triggerClientEvent(source,&amp;quot;VoiceClient&amp;quot;,source,str2)&lt;br /&gt;
end&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;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example: ==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&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;addEventHandler(&amp;quot;onPlayerChat&amp;quot;,root,&lt;br /&gt;
function (messag)&lt;br /&gt;
convertWordsToSound(messag)&lt;br /&gt;
end)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Info==&lt;br /&gt;
For do the function work with arabic please replace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=ar&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
thx and sorry for bad english :)&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41638</id>
		<title>ConvertTextToSpeech</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41638"/>
		<updated>2014-08-25T19:24:16Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Example: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Useful Function}}&lt;br /&gt;
&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
*only Server Side&lt;br /&gt;
*Author: Has[S]oN&lt;br /&gt;
&lt;br /&gt;
This function converts any word to sound &lt;br /&gt;
==Syntax:==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;convertWordsToSound(string text)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Required Arguments: ==&lt;br /&gt;
* text: the Text you want to convert it from word to sound&lt;br /&gt;
&lt;br /&gt;
== Code: ==&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;
function convertWordsToSound(str)&lt;br /&gt;
local str2 = &amp;quot;&amp;quot;&lt;br /&gt;
str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&lt;br /&gt;
triggerClientEvent(source,&amp;quot;VoiceClient&amp;quot;,source,str2)&lt;br /&gt;
end&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;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example: ==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&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;addEventHandler(&amp;quot;onPlayerChat&amp;quot;,root,&lt;br /&gt;
function (messag)&lt;br /&gt;
convertWordsToSound(messag)&lt;br /&gt;
end)&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;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;function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Info==&lt;br /&gt;
For do the function work with arabic please replace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=ar&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
thx and sorry for bad english :)&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41637</id>
		<title>ConvertTextToSpeech</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41637"/>
		<updated>2014-08-25T19:22:25Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: &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;
&lt;br /&gt;
*only Server Side&lt;br /&gt;
*Author: Has[S]oN&lt;br /&gt;
&lt;br /&gt;
This function converts any word to sound &lt;br /&gt;
==Syntax:==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;convertWordsToSound(string text)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Required Arguments: ==&lt;br /&gt;
* text: the Text you want to convert it from word to sound&lt;br /&gt;
&lt;br /&gt;
== Code: ==&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;
function convertWordsToSound(str)&lt;br /&gt;
local str2 = &amp;quot;&amp;quot;&lt;br /&gt;
str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&lt;br /&gt;
triggerClientEvent(source,&amp;quot;VoiceClient&amp;quot;,source,str2)&lt;br /&gt;
end&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;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example: ==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&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;function convertWordsToSound(str)&lt;br /&gt;
local str2 = &amp;quot;&amp;quot;&lt;br /&gt;
str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&lt;br /&gt;
triggerClientEvent(source,&amp;quot;VoiceClient&amp;quot;,source,str2)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
addEventHandler(&amp;quot;onPlayerChat&amp;quot;,root,&lt;br /&gt;
function (messag)&lt;br /&gt;
convertWordsToSound(messag)&lt;br /&gt;
end)&amp;lt;/syntaxhighlight&amp;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;function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
==More Info==&lt;br /&gt;
For do the function work with arabic please replace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=ar&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
thx and sorry for bad english :)&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Multi_Theft_Auto:_Wiki:Useful_Functions/convertWordsToSound&amp;diff=41636</id>
		<title>Multi Theft Auto: Wiki:Useful Functions/convertWordsToSound</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Multi_Theft_Auto:_Wiki:Useful_Functions/convertWordsToSound&amp;diff=41636"/>
		<updated>2014-08-25T19:16:09Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Jaysds moved page Multi Theft Auto: Wiki:Useful Functions/convertWordsToSound to ConvertWordsToSound&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ConvertWordsToSound]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41635</id>
		<title>ConvertTextToSpeech</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertTextToSpeech&amp;diff=41635"/>
		<updated>2014-08-25T19:16:09Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Jaysds moved page Multi Theft Auto: Wiki:Useful Functions/convertWordsToSound to ConvertWordsToSound&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
== * convertWordsToSound ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
*only Server Side&lt;br /&gt;
*Author: Has[S]oN&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;convertWordsToSound(string text)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Required Arguments: ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
* text: the Text you want to convert it from word to sound&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
== Code: ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;--Server Side&lt;br /&gt;
 &lt;br /&gt;
function convertWordsToSound(str)&lt;br /&gt;
local str2 = &amp;quot;&amp;quot;&lt;br /&gt;
str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&lt;br /&gt;
triggerClientEvent(source,&amp;quot;VoiceClient&amp;quot;,source,str2)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
--Client Side&lt;br /&gt;
 &lt;br /&gt;
function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
== Example: ==&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Server Side:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;function convertWordsToSound(str)&lt;br /&gt;
local str2 = &amp;quot;&amp;quot;&lt;br /&gt;
str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&lt;br /&gt;
triggerClientEvent(source,&amp;quot;VoiceClient&amp;quot;,source,str2)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
addEventHandler(&amp;quot;onPlayerChat&amp;quot;,root,&lt;br /&gt;
function (messag)&lt;br /&gt;
convertWordsToSound(messag)&lt;br /&gt;
end)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Client Side:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;function sayVoice(str)&lt;br /&gt;
currentVoice = playSound(str)&lt;br /&gt;
end&lt;br /&gt;
addEvent(&amp;quot;VoiceClient&amp;quot;,true)&lt;br /&gt;
addEventHandler(&amp;quot;VoiceClient&amp;quot;,localPlayer,sayVoice)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Of course the function Very clear from his name&lt;br /&gt;
convert any word to sound &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For do the function work with arabic please replace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=en&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;str2 = &amp;quot;http://translate.google.com/translate_tts?tl=ar&amp;amp;q=&amp;quot;..str..&amp;quot;&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
thx and sorry for bad english :)&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetPlayerHudComponentVisible&amp;diff=41628</id>
		<title>SetPlayerHudComponentVisible</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetPlayerHudComponentVisible&amp;diff=41628"/>
		<updated>2014-08-24T16:14:35Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Undo revision 41627 by Jaysds (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
{{Note|This function is identical to showPlayerHudComponent}}&lt;br /&gt;
This function will show or hide a part of the player's HUD. &lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&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 setPlayerHudComponentVisible ( player thePlayer, string component, bool show )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Player class.|[[player]]:setHudComponentVisible||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player element for which you wish to show/hide a HUD component&lt;br /&gt;
*'''component:''' The component you wish to show or hide. Valid values are:&lt;br /&gt;
:*'''all:''' All of the following at the same time&lt;br /&gt;
:*'''ammo:''' The display showing how much ammo the player has in their weapon&lt;br /&gt;
:*'''area_name:''' The text that appears containing the name of the area a player has entered&lt;br /&gt;
:*'''armour:''' The display showing the player's armor&lt;br /&gt;
:*'''breath:''' The display showing the player's breath&lt;br /&gt;
:*'''clock:''' The display showing the in-game time&lt;br /&gt;
:*'''health:''' The display showing the player's health&lt;br /&gt;
:*'''money:''' The display showing how much money the player has&lt;br /&gt;
:*'''radar:''' The bottom-left corner miniradar&lt;br /&gt;
:*'''vehicle_name:''' The text that appears containing the player's vehicle name when the player enters a vehicle&lt;br /&gt;
:*'''weapon:''' The display showing the player's weapon&lt;br /&gt;
{{New feature|3.0110|1.1|&lt;br /&gt;
:*'''radio:''' The display showing the radio label&lt;br /&gt;
:*'''wanted:''' The display showing the player's wanted level&lt;br /&gt;
:*'''crosshair:''' The weapon crosshair and sniper scope&lt;br /&gt;
}}&lt;br /&gt;
*'''show:''' Specify if the component should be shown (''true'') or hidden (''false'')&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 setPlayerHudComponentVisible ( string component, bool show )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''component:''' The component you wish to show or hide. Valid values are:&lt;br /&gt;
:*'''all:''' All of the following at the same time&lt;br /&gt;
:*'''ammo:''' The display showing how much ammo the player has in their weapon&lt;br /&gt;
:*'''area_name:''' The text that appears containing the name of the area a player has entered&lt;br /&gt;
:*'''armour:''' The display showing the player's armor&lt;br /&gt;
:*'''breath:''' The display showing the player's breath&lt;br /&gt;
:*'''clock:''' The display showing the in-game time&lt;br /&gt;
:*'''health:''' The display showing the player's health&lt;br /&gt;
:*'''money:''' The display showing how much money the player has&lt;br /&gt;
:*'''radar:''' The bottom-left corner miniradar&lt;br /&gt;
:*'''vehicle_name:''' The text that appears containing the player's vehicle name when the player enters a vehicle&lt;br /&gt;
:*'''weapon:''' The display showing the player's weapon&lt;br /&gt;
{{New feature/item|3.0110|1.1||&lt;br /&gt;
:*'''radio:''' The display showing the radio label&lt;br /&gt;
:*'''wanted:''' The display showing the player's wanted level&lt;br /&gt;
:*'''crosshair:''' The weapon crosshair and sniper scope&lt;br /&gt;
}}&lt;br /&gt;
*'''show:''' Specify if the component should be shown (''true'') or hidden (''false'')&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the component was shown or hidden succesfully, ''false'' if an invalid argument was specified.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.3.2|1.3.2}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example hides the ammo and weapon displays for players when they join.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Hide some of the hud components when a player joins the server&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerJoin&amp;quot;, root, &lt;br /&gt;
    function ()&lt;br /&gt;
        setPlayerHudComponentVisible ( source, &amp;quot;ammo&amp;quot;, false )    -- Hide the ammo displays for the newly joined player&lt;br /&gt;
        setPlayerHudComponentVisible ( source, &amp;quot;weapon&amp;quot;, false )  -- Hide the weapon displays for the newly joined player&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;
==See Also==&lt;br /&gt;
{{Player_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetPlayerHudComponentVisible&amp;diff=41627</id>
		<title>SetPlayerHudComponentVisible</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetPlayerHudComponentVisible&amp;diff=41627"/>
		<updated>2014-08-24T16:05:21Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
{{Note|This function is identical to [[showPlayerHudComponent]]}}&lt;br /&gt;
This function will show or hide a part of the player's HUD. &lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&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 setPlayerHudComponentVisible ( player thePlayer, string component, bool show )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Player class.|[[player]]:setHudComponentVisible||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player element for which you wish to show/hide a HUD component&lt;br /&gt;
*'''component:''' The component you wish to show or hide. Valid values are:&lt;br /&gt;
:*'''all:''' All of the following at the same time&lt;br /&gt;
:*'''ammo:''' The display showing how much ammo the player has in their weapon&lt;br /&gt;
:*'''area_name:''' The text that appears containing the name of the area a player has entered&lt;br /&gt;
:*'''armour:''' The display showing the player's armor&lt;br /&gt;
:*'''breath:''' The display showing the player's breath&lt;br /&gt;
:*'''clock:''' The display showing the in-game time&lt;br /&gt;
:*'''health:''' The display showing the player's health&lt;br /&gt;
:*'''money:''' The display showing how much money the player has&lt;br /&gt;
:*'''radar:''' The bottom-left corner miniradar&lt;br /&gt;
:*'''vehicle_name:''' The text that appears containing the player's vehicle name when the player enters a vehicle&lt;br /&gt;
:*'''weapon:''' The display showing the player's weapon&lt;br /&gt;
{{New feature|3.0110|1.1|&lt;br /&gt;
:*'''radio:''' The display showing the radio label&lt;br /&gt;
:*'''wanted:''' The display showing the player's wanted level&lt;br /&gt;
:*'''crosshair:''' The weapon crosshair and sniper scope&lt;br /&gt;
}}&lt;br /&gt;
*'''show:''' Specify if the component should be shown (''true'') or hidden (''false'')&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 setPlayerHudComponentVisible ( string component, bool show )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''component:''' The component you wish to show or hide. Valid values are:&lt;br /&gt;
:*'''all:''' All of the following at the same time&lt;br /&gt;
:*'''ammo:''' The display showing how much ammo the player has in their weapon&lt;br /&gt;
:*'''area_name:''' The text that appears containing the name of the area a player has entered&lt;br /&gt;
:*'''armour:''' The display showing the player's armor&lt;br /&gt;
:*'''breath:''' The display showing the player's breath&lt;br /&gt;
:*'''clock:''' The display showing the in-game time&lt;br /&gt;
:*'''health:''' The display showing the player's health&lt;br /&gt;
:*'''money:''' The display showing how much money the player has&lt;br /&gt;
:*'''radar:''' The bottom-left corner miniradar&lt;br /&gt;
:*'''vehicle_name:''' The text that appears containing the player's vehicle name when the player enters a vehicle&lt;br /&gt;
:*'''weapon:''' The display showing the player's weapon&lt;br /&gt;
{{New feature/item|3.0110|1.1||&lt;br /&gt;
:*'''radio:''' The display showing the radio label&lt;br /&gt;
:*'''wanted:''' The display showing the player's wanted level&lt;br /&gt;
:*'''crosshair:''' The weapon crosshair and sniper scope&lt;br /&gt;
}}&lt;br /&gt;
*'''show:''' Specify if the component should be shown (''true'') or hidden (''false'')&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the component was shown or hidden succesfully, ''false'' if an invalid argument was specified.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.3.2|1.3.2}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example hides the ammo and weapon displays for players when they join.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Hide some of the hud components when a player joins the server&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerJoin&amp;quot;, root, &lt;br /&gt;
    function ()&lt;br /&gt;
        setPlayerHudComponentVisible ( source, &amp;quot;ammo&amp;quot;, false )    -- Hide the ammo displays for the newly joined player&lt;br /&gt;
        setPlayerHudComponentVisible ( source, &amp;quot;weapon&amp;quot;, false )  -- Hide the weapon displays for the newly joined player&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;
==See Also==&lt;br /&gt;
{{Player_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetPlayerHudComponentVisible&amp;diff=41626</id>
		<title>SetPlayerHudComponentVisible</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetPlayerHudComponentVisible&amp;diff=41626"/>
		<updated>2014-08-24T16:04:49Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
{{Note|This function is identical to showPlayerHudComponent}}&lt;br /&gt;
This function will show or hide a part of the player's HUD. &lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&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 setPlayerHudComponentVisible ( player thePlayer, string component, bool show )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Player class.|[[player]]:setHudComponentVisible||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player element for which you wish to show/hide a HUD component&lt;br /&gt;
*'''component:''' The component you wish to show or hide. Valid values are:&lt;br /&gt;
:*'''all:''' All of the following at the same time&lt;br /&gt;
:*'''ammo:''' The display showing how much ammo the player has in their weapon&lt;br /&gt;
:*'''area_name:''' The text that appears containing the name of the area a player has entered&lt;br /&gt;
:*'''armour:''' The display showing the player's armor&lt;br /&gt;
:*'''breath:''' The display showing the player's breath&lt;br /&gt;
:*'''clock:''' The display showing the in-game time&lt;br /&gt;
:*'''health:''' The display showing the player's health&lt;br /&gt;
:*'''money:''' The display showing how much money the player has&lt;br /&gt;
:*'''radar:''' The bottom-left corner miniradar&lt;br /&gt;
:*'''vehicle_name:''' The text that appears containing the player's vehicle name when the player enters a vehicle&lt;br /&gt;
:*'''weapon:''' The display showing the player's weapon&lt;br /&gt;
{{New feature|3.0110|1.1|&lt;br /&gt;
:*'''radio:''' The display showing the radio label&lt;br /&gt;
:*'''wanted:''' The display showing the player's wanted level&lt;br /&gt;
:*'''crosshair:''' The weapon crosshair and sniper scope&lt;br /&gt;
}}&lt;br /&gt;
*'''show:''' Specify if the component should be shown (''true'') or hidden (''false'')&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 setPlayerHudComponentVisible ( string component, bool show )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''component:''' The component you wish to show or hide. Valid values are:&lt;br /&gt;
:*'''all:''' All of the following at the same time&lt;br /&gt;
:*'''ammo:''' The display showing how much ammo the player has in their weapon&lt;br /&gt;
:*'''area_name:''' The text that appears containing the name of the area a player has entered&lt;br /&gt;
:*'''armour:''' The display showing the player's armor&lt;br /&gt;
:*'''breath:''' The display showing the player's breath&lt;br /&gt;
:*'''clock:''' The display showing the in-game time&lt;br /&gt;
:*'''health:''' The display showing the player's health&lt;br /&gt;
:*'''money:''' The display showing how much money the player has&lt;br /&gt;
:*'''radar:''' The bottom-left corner miniradar&lt;br /&gt;
:*'''vehicle_name:''' The text that appears containing the player's vehicle name when the player enters a vehicle&lt;br /&gt;
:*'''weapon:''' The display showing the player's weapon&lt;br /&gt;
{{New feature/item|3.0110|1.1||&lt;br /&gt;
:*'''radio:''' The display showing the radio label&lt;br /&gt;
:*'''wanted:''' The display showing the player's wanted level&lt;br /&gt;
:*'''crosshair:''' The weapon crosshair and sniper scope&lt;br /&gt;
}}&lt;br /&gt;
*'''show:''' Specify if the component should be shown (''true'') or hidden (''false'')&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the component was shown or hidden succesfully, ''false'' if an invalid argument was specified.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.3.2|1.3.2}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This example hides the ammo and weapon displays for players when they join.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Hide some of the hud components when a player joins the server&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerJoin&amp;quot;, root, &lt;br /&gt;
    function ()&lt;br /&gt;
        setPlayerHudComponentVisible ( source, &amp;quot;ammo&amp;quot;, false )    -- Hide the ammo displays for the newly joined player&lt;br /&gt;
        setPlayerHudComponentVisible ( source, &amp;quot;weapon&amp;quot;, false )  -- Hide the weapon displays for the newly joined player&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;
==See Also==&lt;br /&gt;
{{Player_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetTimer&amp;diff=41623</id>
		<title>SetTimer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetTimer&amp;diff=41623"/>
		<updated>2014-08-24T01:09:43Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function allows you to trigger a function after a number of milliseconds have elapsed. You can call one of your own functions or a built-in function. For example, you could set a timer to spawn a player after a number of seconds have elapsed.&lt;br /&gt;
&lt;br /&gt;
Once a timer has finished repeating, it no longer exists.&lt;br /&gt;
&lt;br /&gt;
'''The minimum accepted interval is 50ms.'''&lt;br /&gt;
&lt;br /&gt;
Multi Theft Auto guarantees that the timer will be triggered after ''at least'' the interval you specify. The resolution of the timer is tied to the frame rate (server side and client-side). All the overdue timers are triggered at a single point each frame. This means that if, for example, the player is running at 30 frames per second, then two timers specified to occur after 100ms and 110ms would more than likely occur during the same frame, as the difference in time between the two timers (10ms) is less than half the length of the frame (33ms). As with most timers provided by other languages, you shouldn't rely on the timer triggering at an exact point in the future. &lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
timer setTimer ( function theFunction, int timeInterval, int timesToExecute, [ var arguments... ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||Timer.create||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theFunction:''' The function you wish the timer to call. (Notice: Do not use a 'local' function, it must be global!)&lt;br /&gt;
{{New feature/item|3.0141|1.4.1|6773|&lt;br /&gt;
Added ''sourceTimer'' global variable to timer's callback function&lt;br /&gt;
}}&lt;br /&gt;
*'''timeInterval:''' The number of milliseconds that should elapse before the function is called. (the minimum is 50)(1000 milliseconds = 1 second)&lt;br /&gt;
*'''timesToExecute:''' The number of times you want the timer to execute, or 0 for infinite repetitions.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''arguments:''' Any arguments you wish to pass to the function can be listed after the ''timesToExecute'' argument. Note that any tables you want to pass will get cloned, whereas metatables will get lost. Also changes you make in the original table before the function gets called won't get transferred.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a [[timer]] pointer if the timer was set successfully, ''false'' if the arguments are invalid or the timer could not be set.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example will output some text after a small delay.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- define function to be called&lt;br /&gt;
function delayedChat ( text )&lt;br /&gt;
	outputChatBox ( &amp;quot;Delayed text: &amp;quot; .. text )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- set a timer so the function is called after 1 second&lt;br /&gt;
setTimer ( delayedChat, 1000, 1, &amp;quot;Hello, World!&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1 second after the line above has been executed, the text ''Delayed text: Hello, World!'' will be displayed in the chat box.&lt;br /&gt;
&lt;br /&gt;
This example will nest a whole function within a timer. This is nice for things like setting variables without having to call a function outside of your code block.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function mainFunction()&lt;br /&gt;
        outputChatBox (&amp;quot;Instant text!&amp;quot;)&lt;br /&gt;
	setTimer ( function()&lt;br /&gt;
		outputChatBox ( &amp;quot;5 second delay text!&amp;quot; )&lt;br /&gt;
	end, 5000, 1 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
mainFunction() --call function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Utility functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiCreateWindow&amp;diff=41618</id>
		<title>GuiCreateWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiCreateWindow&amp;diff=41618"/>
		<updated>2014-08-23T20:21:39Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
This function is for creating a new GUI window.  This provides a base for other gui elements to be created within.  However, windows do not have a parent and cannot be created in any GUI elements.&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 guiCreateWindow ( float x, float y, float width, float height, string titleBarText, bool relative )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
[[Image:gui-window.png|frame|Example Window.]]&lt;br /&gt;
*'''x:''' A float of the 2D x position of the GUI window on a player's screen.  This is affected by the ''relative'' argument.&lt;br /&gt;
*'''y:''' A float of the 2D y position of the GUI window on a player's screen. This is affected by the ''relative'' argument.&lt;br /&gt;
*'''width:''' A float of the width of the GUI window. This is affected by the ''relative'' argument.&lt;br /&gt;
*'''height:''' A float of the height of the GUI window. This is affected by the ''relative'' argument.&lt;br /&gt;
*'''titleBarText:''' A string of the text that will be displayed in the title bar of the window.&lt;br /&gt;
*'''relative:''' This is whether sizes and positioning are relative.  If this is ''true'', then all x,y,width,height floats must be between 0 and 1, representing sizes/positions as a fraction of the screen size. If ''false'', then the size and co-ordinates are based on client's resolution, accessible using [[guiGetScreenSize]].&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a gui window element if it was created successfully, false otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
'''Example 1:''' This example creates a information window and adds two tabs to a &amp;quot;tabPanel&amp;quot; tabpanel, and adds some other gui elements to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local myWindow = guiCreateWindow ( 0, 0, 0.5, 0.4, &amp;quot;Information&amp;quot;, true )  -- create a window which has &amp;quot;Information&amp;quot; in the title bar.&lt;br /&gt;
local tabPanel = guiCreateTabPanel ( 0, 0.1, 1, 1, true, myWindow )       -- create a tab panel which fills the whole window&lt;br /&gt;
local tabMap = guiCreateTab( &amp;quot;Map Information&amp;quot;, tabPanel )                -- create a tab named &amp;quot;Map Information&amp;quot; on 'tabPanel'&lt;br /&gt;
local tabHelp = guiCreateTab( &amp;quot;Help&amp;quot;, tabPanel )                          -- create another tab named &amp;quot;Help&amp;quot; on 'tabPanel'&lt;br /&gt;
&lt;br /&gt;
-- adds a label (text) to each tab&lt;br /&gt;
guiCreateLabel(0.02, 0.04, 0.94, 0.2, &amp;quot;This is information about the current map&amp;quot;, true, tabMap)&lt;br /&gt;
guiCreateLabel(0.02, 0.04, 0.94, 0.92, &amp;quot;This is help text.&amp;quot;, true, tabHelp)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 2:''' This example creates a weapon selection screen, complete with a window, gridlist and a button. Users can select a shotgun or a machine gun. The window is not movable or sizable.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
--Setup some tables&lt;br /&gt;
&lt;br /&gt;
shotguns = {&lt;br /&gt;
      &amp;quot;chrome&amp;quot;,&lt;br /&gt;
      &amp;quot;sawn-off&amp;quot;,&lt;br /&gt;
      &amp;quot;combat&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
machineGun = {&lt;br /&gt;
      &amp;quot;m4&amp;quot;,&lt;br /&gt;
      &amp;quot;ak-47&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setupWeaponSelection ( theResource )&lt;br /&gt;
      -- getResourceRootElement(getThisResource()) at the bottom means it will only create the gui on this resource start&lt;br /&gt;
      -- Create a window for our spawnscreen, with the title &amp;quot;Select your weapons&amp;quot;.&lt;br /&gt;
      spawnScreenMenu = guiCreateWindow ( 0.15, 0.33, 0.7, 0.34, &amp;quot;Select your weapons&amp;quot;, true )&lt;br /&gt;
      -- create an OK button to allow the user to confirm their selections, and attach it to the confirmSelection function&lt;br /&gt;
      spawnScreenOKButton = guiCreateButton ( 0.4, 0.85, 0.20, 0.15, &amp;quot;OK&amp;quot;, true, spawnScreenMenu )&lt;br /&gt;
      -- ensure the user can't move or resize our spawnscreen.&lt;br /&gt;
      guiWindowSetMovable ( spawnScreenMenu, false )&lt;br /&gt;
      guiWindowSetSizable ( spawnScreenMenu, false )&lt;br /&gt;
      -- create our gridlist, which fills up most of the window.&lt;br /&gt;
      spawnScreenGridList = guiCreateGridList ( 0, 0.1, 1, 0.9, true, spawnScreenMenu )&lt;br /&gt;
      guiGridListSetSelectionMode ( spawnScreenGridList, 2 ) -- ensure the selection mode is one per column&lt;br /&gt;
      -- Since we have 2 sets of weapons, create a column for shotguns and one for machine guns&lt;br /&gt;
      guiGridListAddColumn ( spawnScreenGridList, &amp;quot;Shotguns&amp;quot;, 0.3 )&lt;br /&gt;
      guiGridListAddColumn ( spawnScreenGridList, &amp;quot;Machine guns&amp;quot;, 0.3 )&lt;br /&gt;
      -- next, we loop through our handguns table to add handgun items to the gridlist&lt;br /&gt;
      for key,weaponName in pairs(shotguns) do&lt;br /&gt;
            -- add a new row to our gridlist each time&lt;br /&gt;
            local row = guiGridListAddRow ( spawnScreenGridList )&lt;br /&gt;
            -- next, we set that row's text to the weapon name. Column is 1 since the &amp;quot;Shotguns&amp;quot; column was created first.&lt;br /&gt;
            guiGridListSetItemText ( spawnScreenGridList, row, 1, weaponName, false, false )&lt;br /&gt;
      end&lt;br /&gt;
      -- we repeat the process for other weapon list, changing the column number&lt;br /&gt;
      row = 0&lt;br /&gt;
      for key,weaponName in pairs(machineGun) do&lt;br /&gt;
            -- we don't need to create new rows as that was done in the previous loop&lt;br /&gt;
            -- we just set the row's text to the weapon name. Column is 2 since the &amp;quot;Machine guns&amp;quot; column was created second.&lt;br /&gt;
            guiGridListSetItemText ( spawnScreenGridList, row, 2, weaponName, false, false )&lt;br /&gt;
            row = row + 1 -- increase the row number&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientResourceStart&amp;quot;, getResourceRootElement(getThisResource()), setupWeaponSelection )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{GUI_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiCreateScrollPane&amp;diff=41617</id>
		<title>GuiCreateScrollPane</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiCreateScrollPane&amp;diff=41617"/>
		<updated>2014-08-23T20:18:24Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This creates a GUI scroll pane.&lt;br /&gt;
[[Image:gui-scrollpane.png|frame|Example GUI ScrollPane.]]&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 guiCreateScrollPane( float x, float y, float width, float height, bool relative, [gui-element parent = nil])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''x:''' the 2D x offset of the GUI scrollpane from its parent. This is affected by the relative argument.&lt;br /&gt;
*'''y:''' the 2D y offset of the GUI scrollbar from its parent. This is affected by the relative argument.&lt;br /&gt;
*'''width:''' the width of the GUI scrollpane. This is affected by the relative argument.&lt;br /&gt;
*'''height:''' the height of the GUI scrollpane. This is affected by the relative argument.&lt;br /&gt;
*'''relative:''' whether sizes and positions are relative to their parent's. If this is true, then all measures must be between 0 and 1, representing sizes/positions as a fraction of the parent widget's size.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''parent:''' the gui-element this scrollpane is attached to. By default, it is nil, meaning the widget is attached to the background.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
The gui-element if created, otherwise false.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates a small window with a scrollpane on. Using the /fill command you can populate the scrollpane with the names of every player in the server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;,resourceRoot,&lt;br /&gt;
	function()&lt;br /&gt;
		-- create a window and create a scrollpane on it&lt;br /&gt;
		local window = guiCreateWindow(5,5,130,150,&amp;quot;&amp;quot;,false)&lt;br /&gt;
		-- the width and height values here are largely irrelevant as the scrollpane will automatically resize when needed&lt;br /&gt;
		scrollpane = guiCreateScrollPane(0,0,130,150,false,window)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;fill&amp;quot;,&lt;br /&gt;
	function()&lt;br /&gt;
		-- if the scrollpane exists&lt;br /&gt;
		if scrollpane then&lt;br /&gt;
			-- delete all the existing labels&lt;br /&gt;
			for i,v in ipairs(getElementChildren(scrollpane)) do&lt;br /&gt;
				destroyElement(v)&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			-- for every player in the server&lt;br /&gt;
			for i,v in ipairs(getElementsByType(&amp;quot;player&amp;quot;)) do&lt;br /&gt;
				-- create a label with their name on the scrollpane&lt;br /&gt;
				guiCreateLabel(5,i*20,90,20,tostring(getPlayerName(v)),false,scrollpane)&lt;br /&gt;
			end&lt;br /&gt;
		end&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;
{{GUI functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiCreateScrollPane&amp;diff=41616</id>
		<title>GuiCreateScrollPane</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiCreateScrollPane&amp;diff=41616"/>
		<updated>2014-08-23T20:16:51Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Example Image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This creates a GUI scroll pane.&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 guiCreateScrollPane( float x, float y, float width, float height, bool relative, [gui-element parent = nil])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
[[Image:gui-scrollpane.png|frame|Example GUI ScrollPane.]]&lt;br /&gt;
*'''x:''' the 2D x offset of the GUI scrollpane from its parent. This is affected by the relative argument.&lt;br /&gt;
*'''y:''' the 2D y offset of the GUI scrollbar from its parent. This is affected by the relative argument.&lt;br /&gt;
*'''width:''' the width of the GUI scrollpane. This is affected by the relative argument.&lt;br /&gt;
*'''height:''' the height of the GUI scrollpane. This is affected by the relative argument.&lt;br /&gt;
*'''relative:''' whether sizes and positions are relative to their parent's. If this is true, then all measures must be between 0 and 1, representing sizes/positions as a fraction of the parent widget's size.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''parent:''' the gui-element this scrollpane is attached to. By default, it is nil, meaning the widget is attached to the background.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
The gui-element if created, otherwise false.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates a small window with a scrollpane on. Using the /fill command you can populate the scrollpane with the names of every player in the server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;,resourceRoot,&lt;br /&gt;
	function()&lt;br /&gt;
		-- create a window and create a scrollpane on it&lt;br /&gt;
		local window = guiCreateWindow(5,5,130,150,&amp;quot;&amp;quot;,false)&lt;br /&gt;
		-- the width and height values here are largely irrelevant as the scrollpane will automatically resize when needed&lt;br /&gt;
		scrollpane = guiCreateScrollPane(0,0,130,150,false,window)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;fill&amp;quot;,&lt;br /&gt;
	function()&lt;br /&gt;
		-- if the scrollpane exists&lt;br /&gt;
		if scrollpane then&lt;br /&gt;
			-- delete all the existing labels&lt;br /&gt;
			for i,v in ipairs(getElementChildren(scrollpane)) do&lt;br /&gt;
				destroyElement(v)&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			-- for every player in the server&lt;br /&gt;
			for i,v in ipairs(getElementsByType(&amp;quot;player&amp;quot;)) do&lt;br /&gt;
				-- create a label with their name on the scrollpane&lt;br /&gt;
				guiCreateLabel(5,i*20,90,20,tostring(getPlayerName(v)),false,scrollpane)&lt;br /&gt;
			end&lt;br /&gt;
		end&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;
{{GUI functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=File:Gui-scrollpane.png&amp;diff=41615</id>
		<title>File:Gui-scrollpane.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=File:Gui-scrollpane.png&amp;diff=41615"/>
		<updated>2014-08-23T20:16:33Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Example of Gui ScrollPane&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example of Gui ScrollPane&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiCreateTab&amp;diff=41614</id>
		<title>GuiCreateTab</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiCreateTab&amp;diff=41614"/>
		<updated>2014-08-23T19:44:50Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Example Image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
This function creates a tab on a pre-existing tab panel. A tab is a button as well as a 'dimension' that can be used to switch between information by clicking on the tabs.  Tabs are sorted on a tab panel in the order that they are created.&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 guiCreateTab ( string text, element parent )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
[[Image:gui-tabpanelandtab.png|frame|Example GUI tab panel with two tabs.]]&lt;br /&gt;
*'''text:''' The caption for the tab&lt;br /&gt;
*'''parent:''' The parent tab panel, as a tab panel [[element]] type&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a tab element if successful, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates a information window and adds two tabs to a &amp;quot;tabPanel&amp;quot; tabpanel, and adds some other gui elements to it.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local myWindow = guiCreateWindow ( 0, 0, 0.5, 0.4, &amp;quot;Information&amp;quot;, true )--create a window which has &amp;quot;Information&amp;quot; in the title bar.&lt;br /&gt;
local tabPanel = guiCreateTabPanel ( 0, 0.1, 1, 1, true, myWindow ) --create a tab panel which fills the whole window&lt;br /&gt;
local tabMap = guiCreateTab( &amp;quot;Map Information&amp;quot;, tabPanel ) -- create a tab named &amp;quot;Map Information&amp;quot; on 'tabPanel'&lt;br /&gt;
local tabHelp = guiCreateTab( &amp;quot;Help&amp;quot;, tabPanel ) -- create another tab named &amp;quot;Help&amp;quot; on 'tabPanel'&lt;br /&gt;
&lt;br /&gt;
-- adds a label (text) to each tab&lt;br /&gt;
guiCreateLabel(0.02,0.04,0.94,0.2,&amp;quot;This is information about the current map&amp;quot;,true,tabMap)&lt;br /&gt;
guiCreateLabel(0.02,0.04,0.94,0.92,&amp;quot;This is help text.&amp;quot;,true,tabHelp)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{GUI functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GuiCreateScrollPane&amp;diff=41613</id>
		<title>GuiCreateScrollPane</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GuiCreateScrollPane&amp;diff=41613"/>
		<updated>2014-08-23T19:36:54Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Example */ No need for section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This creates a GUI scroll pane.&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 guiCreateScrollPane( float x, float y, float width, float height, bool relative, [gui-element parent = nil])&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''x:''' the 2D x offset of the GUI scrollpane from its parent. This is affected by the relative argument.&lt;br /&gt;
*'''y:''' the 2D y offset of the GUI scrollbar from its parent. This is affected by the relative argument.&lt;br /&gt;
*'''width:''' the width of the GUI scrollpane. This is affected by the relative argument.&lt;br /&gt;
*'''height:''' the height of the GUI scrollpane. This is affected by the relative argument.&lt;br /&gt;
*'''relative:''' whether sizes and positions are relative to their parent's. If this is true, then all measures must be between 0 and 1, representing sizes/positions as a fraction of the parent widget's size.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''parent:''' the gui-element this scrollpane is attached to. By default, it is nil, meaning the widget is attached to the background.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
The gui-element if created, otherwise false.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates a small window with a scrollpane on. Using the /fill command you can populate the scrollpane with the names of every player in the server.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;,resourceRoot,&lt;br /&gt;
	function()&lt;br /&gt;
		-- create a window and create a scrollpane on it&lt;br /&gt;
		local window = guiCreateWindow(5,5,130,150,&amp;quot;&amp;quot;,false)&lt;br /&gt;
		-- the width and height values here are largely irrelevant as the scrollpane will automatically resize when needed&lt;br /&gt;
		scrollpane = guiCreateScrollPane(0,0,130,150,false,window)&lt;br /&gt;
	end&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;fill&amp;quot;,&lt;br /&gt;
	function()&lt;br /&gt;
		-- if the scrollpane exists&lt;br /&gt;
		if scrollpane then&lt;br /&gt;
			-- delete all the existing labels&lt;br /&gt;
			for i,v in ipairs(getElementChildren(scrollpane)) do&lt;br /&gt;
				destroyElement(v)&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			-- for every player in the server&lt;br /&gt;
			for i,v in ipairs(getElementsByType(&amp;quot;player&amp;quot;)) do&lt;br /&gt;
				-- create a label with their name on the scrollpane&lt;br /&gt;
				guiCreateLabel(5,i*20,90,20,tostring(getPlayerName(v)),false,scrollpane)&lt;br /&gt;
			end&lt;br /&gt;
		end&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;
{{GUI functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroup&amp;diff=41610</id>
		<title>AclGroup</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroup&amp;diff=41610"/>
		<updated>2014-08-22T16:24:57Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: Created page with &amp;quot;ACL Groups are groups that holds objects such as accounts, and resources which allows them to do some things depending on the permission the group has/holds.  (Referring to ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ACL Groups are groups that holds objects such as accounts, and resources which allows them to do some things depending on the permission the group has/holds.&lt;br /&gt;
&lt;br /&gt;
(Referring to [[ACL#Default_Groups]])&lt;br /&gt;
===Default Groups===&lt;br /&gt;
MTA has provided some default groups with increasing permissions. These groups are:&lt;br /&gt;
*'''Everyone'''&lt;br /&gt;
*'''Moderator'''&lt;br /&gt;
*'''SuperModerator'''&lt;br /&gt;
*'''Admin'''&lt;br /&gt;
*'''Console''' - This controls permissions of people who are using the console through '''&amp;lt;object name=&amp;quot;user.Console&amp;quot; /&amp;gt;'''&lt;br /&gt;
*'''RPC''' - Remote Procedure Call. Specifically grants access to [[callRemote]] only and disables commands of default resources. Check the function for details.&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To explain further, I will use the Everyone group as an example. By default it looks like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;    &amp;lt;group name=&amp;quot;Everyone&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;acl name=&amp;quot;Default&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;object name=&amp;quot;user.*&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;object name=&amp;quot;resource.*&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
You will first notice the acl name inside the group. It defines what permissions the group has. Users and resources in this group will have the permissions specified on the &amp;quot;Default&amp;quot; acl name list. ''Note: You will notice this group is special, in that it includes every user and resource by using a '''wildcard (*)''' where the user or resource name would be.''&lt;br /&gt;
&lt;br /&gt;
Now, scroll further down the ACL and you will see the '''&amp;lt;acl name=&amp;quot;Default&amp;quot; /&amp;gt;''' listing. Note I have trimmed this list dramatically due to its length.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;    &amp;lt;acl name=&amp;quot;Default&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;command.start&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;command.stop&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;command.stopall&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        ...etc etc...&lt;br /&gt;
        &amp;lt;right name=&amp;quot;function.executeCommandHandler&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;function.restartResource&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        ...etc etc...&lt;br /&gt;
        &amp;lt;right name=&amp;quot;general.adminpanel&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;general.tab_players&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;general.tab_resources&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        ...etc etc...&lt;br /&gt;
        &amp;lt;right name=&amp;quot;command.freeze&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;command.shout&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;command.spectate&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
        ...etc etc...&lt;br /&gt;
    &amp;lt;/acl&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
*'''Function''' entries are MTA scripting functions. For example, if a resource needed to use restartResource and was only in the 'Everyone' group (with the 'Default' list), it would be denied access to restartResource and fail to work correctly.&lt;br /&gt;
*'''Commands''' are created when a resource uses [[addCommandHandler]]. An example would be typing '''/createvehicle [vehicle]''' in the chatbox for the freeroam resource. This controls whether users in the group using this ACL can use the command. ''Note: commands have no effect on resources within the group. Commands are only related to users.''&lt;br /&gt;
**''General is a custom right name group created by the admin resource but it works on the same principles. The script works with them by using [[hasObjectPermissionTo]]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will notice some groups such as admin have multiple '''&amp;lt;acl name=&amp;quot;&amp;quot; /&amp;gt;''' nodes. An example is the admin group:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;group name=&amp;quot;Admin&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;acl name=&amp;quot;Moderator&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;acl name=&amp;quot;SuperModerator&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;acl name=&amp;quot;Admin&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;acl name=&amp;quot;RPC&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;object name=&amp;quot;resource.admin&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;object name=&amp;quot;resource.webadmin&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;object name=&amp;quot;user.Ransom&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This gives all the permissions defined in each '''&amp;lt;acl name=&amp;quot;&amp;quot; /&amp;gt;''' node in order of listing. So for example, the admin group makes sure all the permissions are given to admins by using all the lists. If there are any conflicts, the lowest entry wins. For example, pretend these 2 acls were in a group in the following order:&lt;br /&gt;
&lt;br /&gt;
'''1.''' '''&amp;lt;acl name=&amp;quot;Default&amp;quot;&amp;gt;''' sets &amp;lt;right name=&amp;quot;general.ModifyOtherObjects&amp;quot; access=&amp;quot;false&amp;quot; /&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
'''2.''' '''&amp;lt;acl name=&amp;quot;Admin&amp;quot;&amp;gt;''' sets &amp;lt;right name=&amp;quot;general.ModifyOtherObjects&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt; &amp;lt;br\&amp;gt;&lt;br /&gt;
'''3.''' For all users and resources in group admin: &amp;lt;right name=&amp;quot;general.ModifyOtherObjects&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&amp;lt;br\&amp;gt;&lt;br /&gt;
&amp;lt;br\&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetAccountPassword&amp;diff=41609</id>
		<title>SetAccountPassword</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetAccountPassword&amp;diff=41609"/>
		<updated>2014-08-22T16:15:17Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function sets the password of the specified [[account]].&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 setAccountPassword ( account theAccount, string password )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:setPassword|password|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' the account whos password you want to set&lt;br /&gt;
*'''password:''' the password&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the password was set correctly, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
===Limits===&lt;br /&gt;
* Minimal account password length is 1 character.&lt;br /&gt;
* Maximum account password length is 30 characters.&lt;br /&gt;
* Account password can not be equal to &amp;quot;*****&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;!-- Explain what the example is in a single sentance --&amp;gt;&lt;br /&gt;
This example allows a user to change their password with a command.&lt;br /&gt;
&amp;lt;!-- Add the code below, an emphasis should be on making it clear, not optimized. You could provide two versions if you wish, one clear and well commented, the other optimized --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function ChangePlayerPassword(player,command,oldpass,newpass)&lt;br /&gt;
	-- get the account the player is currently logged into&lt;br /&gt;
	local account = getPlayerAccount(player)&lt;br /&gt;
	if (account) then&lt;br /&gt;
		-- if its only a guest account, do not allow the password to be changed&lt;br /&gt;
		if (isGuestAccount(account)) then&lt;br /&gt;
			outputChatBox(&amp;quot;You must be logged into an account to change your password.&amp;quot;,player) &lt;br /&gt;
			-- end the function&lt;br /&gt;
			return&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- check that the old password is correct&lt;br /&gt;
		local password_check = getAccount(getPlayerUserName(player),oldpass)&lt;br /&gt;
		if (oldpass==password_check) then&lt;br /&gt;
			-- check the length of the new password&lt;br /&gt;
			if (string.len(newpass)&amp;gt;=5) then&lt;br /&gt;
				setAccountPassword(account,newpass)&lt;br /&gt;
			else&lt;br /&gt;
				outputChatBox(&amp;quot;Your new password must be at least 5 characters long.&amp;quot;,player)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			outputChatBox(&amp;quot;Old password invalid.&amp;quot;,player)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;changepass&amp;quot;,ChangePlayerPassword)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:setAccountPassword]]&lt;br /&gt;
[[es:setAccountPassword]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetAccountData&amp;diff=41608</id>
		<title>SetAccountData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetAccountData&amp;diff=41608"/>
		<updated>2014-08-22T16:14:37Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Note_box|It is strongly recommended that you use the standard ''module.key'' naming for your keys, as shown in the example below. This prevents collisions between different scripts.}}&lt;br /&gt;
This function sets a string to be stored in an [[account]]. This can then be retrieved using [[getAccountData]]. Data stored as account data is persistent across user's sessions and maps, unless they are logged into a guest account. Even if logged into a guest account, account data can be useful as a way to store a reference to your own account system, though it's persistence is equivalent to that of using [[setElementData]] on the player's element.&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 setAccountData ( account theAccount, string key, string value )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:setData||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to retrieve the data from.&lt;br /&gt;
*'''key:''' The key under which you wish to store the data&lt;br /&gt;
*'''value:''' The value you wish to store. Set to false to remove the data. '''NOTE:''' you cannot store tables as values, but you can use [[toJSON]] strings.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a ''true'' if the account data was set, ''false'' if an invalid argument was specified.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
For a pirate roleplaying gametype, the amount of money a player has is made persistent by storing it in his account. Note the code uses &amp;quot;piraterpg.money&amp;quot; as key instead of just &amp;quot;money&amp;quot;, as the player may be participating in other gametypes that also save his money amount to his account. If both gametypes would use &amp;quot;money&amp;quot; as the account key, they'd overwrite each other's data.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function onPlayerQuit ( )&lt;br /&gt;
      -- when a player leaves, store his current money amount in his account data&lt;br /&gt;
      local playeraccount = getPlayerAccount ( source )&lt;br /&gt;
      if ( playeraccount ) and not isGuestAccount ( playeraccount ) then -- if the player is logged in&lt;br /&gt;
            local playermoney = getPlayerMoney ( source ) -- get the player money&lt;br /&gt;
            setAccountData ( playeraccount, &amp;quot;piraterpg.money&amp;quot;, playermoney ) -- save it in his account&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
function onPlayerLogin (_, playeraccount )&lt;br /&gt;
      -- when a player logins, retrieve his money amount from his account data and set it&lt;br /&gt;
      if ( playeraccount ) then&lt;br /&gt;
            local playermoney = getAccountData ( playeraccount, &amp;quot;piraterpg.money&amp;quot; )&lt;br /&gt;
            -- make sure there was actually a value saved under this key (check if playermoney is not false).&lt;br /&gt;
            -- this will for example not be the case when a player plays the gametype for the first time&lt;br /&gt;
            if ( playermoney ) then&lt;br /&gt;
                  setPlayerMoney ( source, playermoney )&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerQuit&amp;quot;, getRootElement ( ), onPlayerQuit )&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerLogin&amp;quot;, getRootElement ( ), onPlayerLogin )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
{{Issues|&lt;br /&gt;
{{Issue|7757|[Fixed in 1.3.4-7757] setAccountData clips the digits after the decimal point}}&lt;br /&gt;
}}&lt;br /&gt;
===Workaround for issue 7757===&lt;br /&gt;
Convert your floating point number to a string.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
setAccountData(account, &amp;quot;myKey&amp;quot;, tostring(0.123))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:setAccountData]]&lt;br /&gt;
[[es:setAccountData]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RemoveAccount&amp;diff=41607</id>
		<title>RemoveAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RemoveAccount&amp;diff=41607"/>
		<updated>2014-08-22T16:14:05Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function is used to delete existing player [[account]]s.&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 removeAccount ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:remove||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to remove&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if account was successfully removed, ''false'' if the account does not exist.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example does...&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function onCmdDeregister ( playerSource, commandName )&lt;br /&gt;
	-- grab the account&lt;br /&gt;
	local sourceAccount = getPlayerAccount ( playerSource )&lt;br /&gt;
	if sourceAccount then&lt;br /&gt;
		removeAccount ( sourceAccount )&lt;br /&gt;
		outputChatBox ( &amp;quot;Account deregistered for &amp;quot; .. getPlayerName ( playerSource ) )&lt;br /&gt;
	else &lt;br /&gt;
		outputChatBox ( &amp;quot;Unable to get your account, make sure you are logged in&amp;quot;, playerSource )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
addCommandHandler(&amp;quot;deregister&amp;quot;,onCmdDeregister)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:setAccountPassword]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=LogIn&amp;diff=41606</id>
		<title>LogIn</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=LogIn&amp;diff=41606"/>
		<updated>2014-08-22T16:13:39Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
This functions logs the given player in to the given [[account]]. You need to provide the password needed to log into that account.&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 logIn ( player thePlayer, account theAccount, string thePassword )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[player]]:logIn||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player to log into an account&lt;br /&gt;
*'''theAccount:''' The account to log the player into&lt;br /&gt;
*'''thePassword:''' The password needed to sign into this account&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the player was successfully logged into the given account. Returns ''false'' or ''nil'' if the log in failed for some reason, ie. the player was already logged in to some account (use [[logOut]] first), if the account was already in use or if it failed for some other reason.&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 loginPlayer ( thePlayer, command, username, password )&lt;br /&gt;
	local account = getAccount ( username, password ) -- Return the account&lt;br /&gt;
		if ( account ~= false ) then -- If the account exists.&lt;br /&gt;
			logIn ( thePlayer, account, password ) -- Log them in.&lt;br /&gt;
		else&lt;br /&gt;
			outputChatBox ( &amp;quot;Wrong username or password!&amp;quot;, thePlayer, 255, 255, 0 ) -- Output they got the details wrong.&lt;br /&gt;
		end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;log-in&amp;quot;, loginPlayer ) -- Make it trigger for &amp;quot;/log-in&amp;quot;, NOTE: /login is hardcored and cannot be used.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
[[ar:logIn]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=LogOut&amp;diff=41605</id>
		<title>LogOut</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=LogOut&amp;diff=41605"/>
		<updated>2014-08-22T16:13:17Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function logs the given player out of his current [[account]].&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 logOut ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[player]]:logPlayerOut||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player to log out of his current account&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the player was successfully logged out, ''false'' or ''nil'' if it failed for some reason, ie. the player was never logged in.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example logs every player out of their account when the resource is (re)started. This would be handy for resources that show a login screen onClientResourceStart.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function logoutAll ()&lt;br /&gt;
	local players = getElementsByType ( &amp;quot;player&amp;quot; ) -- Get every player&lt;br /&gt;
		for k, player in ipairs ( players ) do -- For every player do the following...&lt;br /&gt;
			account = getPlayerAccount ( player ) -- Get every player's account&lt;br /&gt;
				if ( not isGuestAccount ( account ) ) then -- For every player that's logged in....&lt;br /&gt;
					logOut ( player ) -- Log them out.&lt;br /&gt;
				end&lt;br /&gt;
		end&lt;br /&gt;
end&lt;br /&gt;
 -- Trigger it when the resource (re)starts&lt;br /&gt;
addEventHandler ( &amp;quot;onResourceStart&amp;quot;, getResourceRootElement(getThisResource()), logoutAll )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:setAccountPassword]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=LogIn&amp;diff=41604</id>
		<title>LogIn</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=LogIn&amp;diff=41604"/>
		<updated>2014-08-22T16:12:06Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
This functions logs the given player in to the given [[account]]. You need to provide the password needed to log into that account.&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 logIn ( player thePlayer, account theAccount, string thePassword )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Player and Account class.|[[player]]:logIn||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePlayer:''' The player to log into an account&lt;br /&gt;
*'''theAccount:''' The account to log the player into&lt;br /&gt;
*'''thePassword:''' The password needed to sign into this account&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the player was successfully logged into the given account. Returns ''false'' or ''nil'' if the log in failed for some reason, ie. the player was already logged in to some account (use [[logOut]] first), if the account was already in use or if it failed for some other reason.&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 loginPlayer ( thePlayer, command, username, password )&lt;br /&gt;
	local account = getAccount ( username, password ) -- Return the account&lt;br /&gt;
		if ( account ~= false ) then -- If the account exists.&lt;br /&gt;
			logIn ( thePlayer, account, password ) -- Log them in.&lt;br /&gt;
		else&lt;br /&gt;
			outputChatBox ( &amp;quot;Wrong username or password!&amp;quot;, thePlayer, 255, 255, 0 ) -- Output they got the details wrong.&lt;br /&gt;
		end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;log-in&amp;quot;, loginPlayer ) -- Make it trigger for &amp;quot;/log-in&amp;quot;, NOTE: /login is hardcored and cannot be used.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
[[ar:logIn]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsGuestAccount&amp;diff=41603</id>
		<title>IsGuestAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsGuestAccount&amp;diff=41603"/>
		<updated>2014-08-22T16:11:02Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function checks to see if an [[account]] is a guest account. A guest account is an account automatically created for a user when they join the server and deleted when they quit or login to another account. Data stored in a guest account is not stored after the player has left the server. As a consequence, this function will check if a player is logged in or not.&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 isGuestAccount ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:isGuest|guest|}} &lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you want to check to see if it is a guest account.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the account is a guest account, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example shows how you could create a ''call_admin'' function that only could be run by registered users.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function callAdmin ( playerSource )&lt;br /&gt;
    -- get the account of the user trying to use this function first&lt;br /&gt;
    sourceAccount = getPlayerAccount ( playerSource )&lt;br /&gt;
    -- if they're a guest&lt;br /&gt;
    if isGuestAccount ( sourceAccount ) then&lt;br /&gt;
        -- tell them to register&lt;br /&gt;
        outputConsole ( &amp;quot;Please register to use this function!&amp;quot;, playerSource )&lt;br /&gt;
    else&lt;br /&gt;
        -- your code to call the admin would go here&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
-- attach the function 'callAdmin' as a handler to the command &amp;quot;call_admin&amp;quot;&lt;br /&gt;
addCommandHandler ( &amp;quot;call_admin&amp;quot;, callAdmin )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
[[ar:isGuestAccount]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccountSerial&amp;diff=41602</id>
		<title>GetAccountSerial</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccountSerial&amp;diff=41602"/>
		<updated>2014-08-22T16:10:28Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
{{New items|4.0132|1.4|&lt;br /&gt;
This function returns the last [[serial]] that logged onto the specified [[account]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getAccountSerial ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getSerial|serial|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The [[account]] to get serial from&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''string'' containing the serial, the string is empty if the account was never used. Returns ''false'' if invalid arguments were specified.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example adds command ''getaccserial'' that outputs the given account's serial in the chat box.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;getaccserial&amp;quot;, &lt;br /&gt;
	function (player, cmd, account)&lt;br /&gt;
		account = getAccount(account)&lt;br /&gt;
		if (account) then&lt;br /&gt;
			outputChatBox(&amp;quot;Serial: &amp;quot; .. getAccountSerial(account))&lt;br /&gt;
		else&lt;br /&gt;
			outputChatBox(&amp;quot;Account not found&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccountPlayer&amp;diff=41601</id>
		<title>GetAccountPlayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccountPlayer&amp;diff=41601"/>
		<updated>2014-08-22T16:09:55Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
&lt;br /&gt;
This function returns the [[player]] element that is currently using a specified [[account]], i.e. is logged into it. Only one player can use an account at a time.&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
player getAccountPlayer ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getPlayer|player|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The [[account]] you wish to get the [[player]] of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a [[player]] element if the account is currently in use, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example checks if the user attached to an account is a player, and if so if they're alive.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function isAccountUserAlive ( theAccount )&lt;br /&gt;
    local thePlayer = getAccountPlayer ( theAccount )       -- get the client attached to the account&lt;br /&gt;
    if ( getElementType ( thePlayer ) == &amp;quot;player&amp;quot; ) then    -- see if it really is a player (rather than a console admin for example)&lt;br /&gt;
        return not isPedDead(thePlayer)             -- if the player's health is greater than 0 &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;
==See Also==&lt;br /&gt;
{{Account functions}}&lt;br /&gt;
[[ar:getAccountPlayer]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccountName&amp;diff=41600</id>
		<title>GetAccountName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccountName&amp;diff=41600"/>
		<updated>2014-08-22T16:08:59Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function retrieves the name of an [[account]].&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getAccountName ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getName|name|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to get the name of&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a string containing the account's name, ''false'' if the account does not exist or an invalid argument was passed to the function.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example announces into the console when a player logs into his account.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function outputOnLogin ( previous_account, current_account, auto_login ) --when a player logs in&lt;br /&gt;
	outputConsole(getAccountName(previous_account)..&amp;quot; Logged into &amp;quot;..getAccountName(current_account)) -- announce it into the console&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerLogin&amp;quot;,getRootElement(),outputOnLogin ) --add an event handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[es:getAccountName]]&lt;br /&gt;
[[ar:getAccountName]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetPlayerAccount&amp;diff=41599</id>
		<title>GetPlayerAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetPlayerAccount&amp;diff=41599"/>
		<updated>2014-08-22T16:05:43Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function returns the specified player's [[account]] object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
account getPlayerAccount ( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getFromPlayer||}}&lt;br /&gt;
{{OOP||[[player]]:getAccount||}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''thePlayer:''' The [[player]] element you want to get the [[account]] of.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns the player's account object, or ''false'' if the player passed to the function is invalid.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example sets a player's money and also stores the value is his account.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function setMoney(thePlayer,key,amount)&lt;br /&gt;
    setPlayerMoney (thePlayer,amount)&lt;br /&gt;
    local account = getPlayerAccount(thePlayer)&lt;br /&gt;
    if account and tonumber(amount) then&lt;br /&gt;
        setAccountData(account,&amp;quot;money&amp;quot;,amount)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;setmoney&amp;quot;,setMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
[[ar:getPlayerAccount]]&lt;br /&gt;
[[ru:getPlayerAccount]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccountData&amp;diff=41598</id>
		<title>GetAccountData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccountData&amp;diff=41598"/>
		<updated>2014-08-22T16:03:00Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Note_box|It is strongly recommended that you use the standard ''module.key'' naming for your keys, as shown in the example below. This prevents collisions between different scripts.}}&lt;br /&gt;
This function retrieves a string that has been stored using [[setAccountData]]. Data stored as account data is persistent across user's sessions and maps, unless they are logged into a guest account.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string getAccountData ( account theAccount, string key )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getData||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to retrieve the data from.&lt;br /&gt;
*'''key:''' The key under which the data is stored&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a [[string]] containing the stored data or ''false'' if no data was stored under that key.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
For a pirate roleplaying gametype, the amount of money a player has is made persistent by storing it in his account. Note the code uses &amp;quot;piraterpg.money&amp;quot; as key instead of just &amp;quot;money&amp;quot;, as the player may be participating in other gametypes that also save his money amount to his account. If both gametypes would use &amp;quot;money&amp;quot; as the account key, they'd overwrite each other's data.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function onPlayerQuit()&lt;br /&gt;
      local playerAccount = getPlayerAccount(source) -- get his account&lt;br /&gt;
      if (playerAccount) then -- if we got the account then&lt;br /&gt;
            local playerMoney = getPlayerMoney(source) -- get his money amount&lt;br /&gt;
            setAccountData(playerAccount, &amp;quot;piraterpg.money&amp;quot;, playerMoney) -- store his current money amount in his account data&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerQuit&amp;quot;, getRootElement(), onPlayerQuit) -- add an event handler&lt;br /&gt;
&lt;br /&gt;
function onPlayerLogin()&lt;br /&gt;
      -- when a player logins, retrieve his money amount from his account data and set it&lt;br /&gt;
      local playerAccount = getPlayerAccount(source) -- get his account&lt;br /&gt;
      if (playerAccount) then -- if we got the account then&lt;br /&gt;
            local playerMoney = getAccountData(playerAccount, &amp;quot;piraterpg.money&amp;quot;) -- get the money amount was store in his account data&lt;br /&gt;
            -- make sure there was actually a value saved under this key (check if playerMoney is not false).&lt;br /&gt;
            -- this will for example not be the case when a player plays the gametype for the first time&lt;br /&gt;
            if (playerMoney) then&lt;br /&gt;
                  setPlayerMoney(source, playerMoney)&lt;br /&gt;
            end&lt;br /&gt;
      end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerLogin&amp;quot;, getRootElement(), onPlayerLogin) -- add an event handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:getAccountData]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAllAccountData&amp;diff=41597</id>
		<title>GetAllAccountData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAllAccountData&amp;diff=41597"/>
		<updated>2014-08-22T16:02:36Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function returns a table containing all the user data for the [[account]] provided&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table getAllAccountData ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getAllData|data|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to retrieve all data from.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
A [[table]] containing all the user data. This table might be empty.&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 printAllData ( thePlayer )&lt;br /&gt;
    local playerAccount = getPlayerAccount( thePlayer ) -- get his account&lt;br /&gt;
    if ( playerAccount ) then -- if we got the account then&lt;br /&gt;
        local data = getAllAccountData( playerAccount ) -- get data&lt;br /&gt;
        count = 0&lt;br /&gt;
        for _ in pairs(data) do count = count + 1 end -- get the count&lt;br /&gt;
        outputChatBox ( &amp;quot;table holds &amp;quot; .. count .. &amp;quot; entries&amp;quot; ) -- output number of rows&lt;br /&gt;
        if ( data ) then&lt;br /&gt;
            for k,v in pairs ( data ) do&lt;br /&gt;
                outputChatBox(k..&amp;quot;: &amp;quot;..v) -- print the key and value of each entry of data&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler( &amp;quot;getall&amp;quot;, printAllData ) -- add a command handler for command 'getall'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.3.0-9.03804|n/a|}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAllAccountData&amp;diff=41596</id>
		<title>GetAllAccountData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAllAccountData&amp;diff=41596"/>
		<updated>2014-08-22T16:02:24Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function returns a table containing all the user data for the [[account]] provided&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table getAllAccountData ( account theAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getAllData|data|}}&lt;br /&gt;
{{OOP||[[account]]:getAllData|data|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to retrieve all data from.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
A [[table]] containing all the user data. This table might be empty.&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 printAllData ( thePlayer )&lt;br /&gt;
    local playerAccount = getPlayerAccount( thePlayer ) -- get his account&lt;br /&gt;
    if ( playerAccount ) then -- if we got the account then&lt;br /&gt;
        local data = getAllAccountData( playerAccount ) -- get data&lt;br /&gt;
        count = 0&lt;br /&gt;
        for _ in pairs(data) do count = count + 1 end -- get the count&lt;br /&gt;
        outputChatBox ( &amp;quot;table holds &amp;quot; .. count .. &amp;quot; entries&amp;quot; ) -- output number of rows&lt;br /&gt;
        if ( data ) then&lt;br /&gt;
            for k,v in pairs ( data ) do&lt;br /&gt;
                outputChatBox(k..&amp;quot;: &amp;quot;..v) -- print the key and value of each entry of data&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler( &amp;quot;getall&amp;quot;, printAllData ) -- add a command handler for command 'getall'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.3.0-9.03804|n/a|}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccountsBySerial&amp;diff=41595</id>
		<title>GetAccountsBySerial</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccountsBySerial&amp;diff=41595"/>
		<updated>2014-08-22T16:01:36Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
{{New items|4.0132|1.4|&lt;br /&gt;
This function returns a [[table]] containing all accounts that were logged onto from specified [[serial]]. If the serial is empty string, it will return all accounts that were never logged onto.&lt;br /&gt;
}}&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;
table getAccountsBySerial ( string serial )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getAllBySerial||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''serial:''' The [[serial]] to get accounts from&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''[[table]]'' containing the accounts associated with specified serial. Returns ''false'' if invalid arguments were specified.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example adds command ''getAccounts'' that outputs the number of accounts a player has in the chat box.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;getAccounts&amp;quot;, &lt;br /&gt;
	function (player, cmd)&lt;br /&gt;
		local serial = getPlayerSerial(player)&lt;br /&gt;
		local accounts = getAccountsBySerial(serial)&lt;br /&gt;
		outputChatBox(&amp;quot;You have &amp;quot; .. #accounts .. &amp;quot; accounts.&amp;quot;, player)&lt;br /&gt;
	end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccounts&amp;diff=41594</id>
		<title>GetAccounts</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccounts&amp;diff=41594"/>
		<updated>2014-08-22T16:00:57Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function returns a table over all the [[account]]s that exist in the server internal.db file. (Note: accounts.xml is no longer used after version 1.0.4)&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table getAccounts ()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:getAll||}}&lt;br /&gt;
===Returns===&lt;br /&gt;
A [[table]] over the accounts that exist in the server internal.db file. This table might be empty.&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 printAmountOfAccounts ( thePlayer )&lt;br /&gt;
    local accountTable = getAccounts () -- return the table over accounts&lt;br /&gt;
    if #accountTable == 0 then -- if the table is empty&lt;br /&gt;
        outputChatBox( &amp;quot;There are no accounts. :(&amp;quot;, thePlayer )&lt;br /&gt;
    else -- table isn't empty&lt;br /&gt;
        outputChatBox( &amp;quot;There are &amp;quot; .. #accountTable .. &amp;quot; accounts in this server!&amp;quot;, thePlayer )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler( &amp;quot;accountcount&amp;quot;, printAmountOfAccounts ) -- add a command handler for command 'accountcount'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAccount&amp;diff=41593</id>
		<title>GetAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAccount&amp;diff=41593"/>
		<updated>2014-08-22T16:00:15Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function returns an [[account]] for a specific user. &lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
account getAccount ( string username, [ string password ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:create||}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''username:''' The username of the account you want to retrieve&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
*'''password:''' The password for the account. If this argument is not specified, you can get the account whatever password it is, otherwise the password must match the account's.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an [[account]] or ''false'' if an account matching the username specified (and password, if specified) could not be found.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;addEventHandler(&amp;quot;onPlayerJoin&amp;quot;,root,function()&lt;br /&gt;
    if getAccount(getPlayerName(source)) then&lt;br /&gt;
        outputChatBox(&amp;quot;Please Login!&amp;quot;,source)&lt;br /&gt;
    else&lt;br /&gt;
        outputChatBox(&amp;quot;Please Register!&amp;quot;,source)&lt;br /&gt;
    end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:getAccount]]&lt;br /&gt;
[[es:getAccount]]&lt;br /&gt;
[[pl:GetAccount]]&lt;br /&gt;
[[ru:GetAccount]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CopyAccountData&amp;diff=41592</id>
		<title>CopyAccountData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CopyAccountData&amp;diff=41592"/>
		<updated>2014-08-22T15:56:49Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
This function copies all of the data from one [[account]] to another.&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 copyAccountData ( account theAccount, account fromAccount )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class. This method transfers the data from sourceAccount to targetAccount.|[[account]]:copyDataTo||}}&lt;br /&gt;
{{OOP|This is vice-versa; transfers data from targetAccount to sourceAccount.|[[account]]:copyDataFrom||}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to copy the data ''to''.&lt;br /&gt;
*'''fromAccount:''' The account you wish to copy the data ''from''.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a ''true'' if the accounts were valid, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example copies the account data from the 'guest' to a registered account when they login&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function copyDataOnLogin ( previousAccount, currentAccount, autoLogin)&lt;br /&gt;
  copyAccountData ( currentAccount, previousAccount )&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onPlayerLogin&amp;quot;, getRootElement(), copyDataOnLogin )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
[[ru:copyAccountData]]&lt;br /&gt;
[[ar:copyAccountData]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;diff=41591</id>
		<title>AddAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;diff=41591"/>
		<updated>2014-08-22T15:51:11Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function adds an [[account]] to the list of registered accounts of the current server.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
account addAccount ( string name, string pass )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:add||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''name:''' The name of the account you wish to make, this normally is the player's name.&lt;br /&gt;
*'''pass:''' The password to set for this account for future logins.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an [[account]] or ''false'' if the account already exists or an error occured.&lt;br /&gt;
&lt;br /&gt;
===Limits===&lt;br /&gt;
*'''name:'''&lt;br /&gt;
** Minimal account name length is 1 character.&lt;br /&gt;
** Account names are case-sensitive.&lt;br /&gt;
** Account name can not be equal to &amp;quot;*****&amp;quot;&lt;br /&gt;
*'''pass:'''&lt;br /&gt;
** Minimal account password length is 1 character.&lt;br /&gt;
** Maximum account password length is 30 characters.&lt;br /&gt;
** Account password can not be equal to &amp;quot;*****&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
'''Example 1:''' This enables players to register on your server by using /register &amp;lt;password&amp;gt; in the chat window.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function registerPlayer ( source, commandName, password )&lt;br /&gt;
	-- Check if the password field is blank or not (only blank if they didnt enter one)&lt;br /&gt;
	if ( password ~= &amp;quot;&amp;quot; and password ~= nil ) then&lt;br /&gt;
		--Attempt to add the account, and save its value in a var&lt;br /&gt;
		local accountAdded = addAccount( getPlayerName(source), password )&lt;br /&gt;
		if ( accountAdded ) then&lt;br /&gt;
			--  Tell the user all is done&lt;br /&gt;
			outputChatBox ( &amp;quot;Thank you &amp;quot; .. getPlayerName(source) .. &amp;quot;, you're now registed, you can login with /login&amp;quot;, source )&lt;br /&gt;
		else&lt;br /&gt;
			-- There was an error making the account, tell the user&lt;br /&gt;
			outputChatBox ( &amp;quot;Error creating account, contact the server admin&amp;quot;, source )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- There was an error in the syntax, tell the user the correct syntax.&lt;br /&gt;
		outputChatBox ( &amp;quot;Error creating account, correct syntax: /register &amp;lt;password&amp;gt;&amp;quot;, source )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;register&amp;quot;, registerPlayer ) -- add the command handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''This code differs by allowing the user to change their username that they wish to use.'''&lt;br /&gt;
&lt;br /&gt;
'''Example 2:''' This enables players to register on your server by using /register &amp;lt;username&amp;gt; &amp;lt;password&amp;gt; in the chat window.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function registerPlayer ( source, commandName, username, password )&lt;br /&gt;
        if(password ~= &amp;quot;&amp;quot; and password ~= nil and username ~= &amp;quot;&amp;quot; and username ~= nil) then&lt;br /&gt;
                local accountAdded = addAccount(username,password)&lt;br /&gt;
                if(accountAdded) then&lt;br /&gt;
                        outputChatBox(&amp;quot;Thank you &amp;quot; .. getPlayerName(source) .. &amp;quot;, you're now registed, you can login with /login&amp;quot;,source)&lt;br /&gt;
                else&lt;br /&gt;
                        outputChatBox(&amp;quot;Error creating account, contact the server admin.&amp;quot;,source)&lt;br /&gt;
                end&lt;br /&gt;
        else&lt;br /&gt;
                outputChatBox(&amp;quot;Error creating account, correct syntax: /register &amp;lt;nick&amp;gt; &amp;lt;pass&amp;gt;&amp;quot;,source)&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;register&amp;quot;, registerPlayer ) -- add the command handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 3:''' This code differs again so the user can only register once /register &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local bRegisteredOnce = false&lt;br /&gt;
&lt;br /&gt;
function registerPlayer ( source, commandName, username, password )&lt;br /&gt;
        if(password ~= &amp;quot;&amp;quot; and password ~= nil and username ~= &amp;quot;&amp;quot; and username ~= nil and bRegisteredOnce == false) then&lt;br /&gt;
                local accountAdded = addAccount(username,password)&lt;br /&gt;
                if(accountAdded) then&lt;br /&gt;
                        outputChatBox(&amp;quot;Thank you &amp;quot; .. getPlayerName(source) .. &amp;quot;, you're now registed, you can login with /login&amp;quot;,source)&lt;br /&gt;
                        bRegisteredOnce = true&lt;br /&gt;
                else&lt;br /&gt;
                        outputChatBox(&amp;quot;Error creating account, contact the server admin.&amp;quot;,source)&lt;br /&gt;
                end&lt;br /&gt;
        else&lt;br /&gt;
                if bRegisteredOnce == true then&lt;br /&gt;
                    outputChatBox(&amp;quot;You already registered on this server!&amp;quot;,source)&lt;br /&gt;
                else&lt;br /&gt;
                    outputChatBox(&amp;quot;Error creating account, correct syntax: /register &amp;lt;nick&amp;gt; &amp;lt;pass&amp;gt;&amp;quot;,source)&lt;br /&gt;
                end&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;register&amp;quot;, registerPlayer ) -- add the command handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:addAcount]]&lt;br /&gt;
[[es:addAcount]]&lt;br /&gt;
[[ru:addAccount]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;diff=41590</id>
		<title>AddAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;diff=41590"/>
		<updated>2014-08-22T15:50:26Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function adds an [[account]] to the list of registered accounts of the current server.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
account addAccount ( string name, string pass )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is also a static function underneath the Account class.|[[account]]:add||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''name:''' The name of the account you wish to make, this normally is the player's name.&lt;br /&gt;
*'''pass:''' The password to set for this account for future logins.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an [[account]] or ''false'' if the account already exists or an error occured.&lt;br /&gt;
&lt;br /&gt;
===Limits===&lt;br /&gt;
*'''name:'''&lt;br /&gt;
** Minimal account name length is 1 character.&lt;br /&gt;
** Account names are case-sensitive.&lt;br /&gt;
** Account name can not be equal to &amp;quot;*****&amp;quot;&lt;br /&gt;
*'''pass:'''&lt;br /&gt;
** Minimal account password length is 1 character.&lt;br /&gt;
** Maximum account password length is 30 characters.&lt;br /&gt;
** Account password can not be equal to &amp;quot;*****&amp;quot;&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 enables players to register on your server by using /register &amp;lt;password&amp;gt; in the chat window.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function registerPlayer ( source, commandName, password )&lt;br /&gt;
	-- Check if the password field is blank or not (only blank if they didnt enter one)&lt;br /&gt;
	if ( password ~= &amp;quot;&amp;quot; and password ~= nil ) then&lt;br /&gt;
		--Attempt to add the account, and save its value in a var&lt;br /&gt;
		local accountAdded = addAccount( getPlayerName(source), password )&lt;br /&gt;
		if ( accountAdded ) then&lt;br /&gt;
			--  Tell the user all is done&lt;br /&gt;
			outputChatBox ( &amp;quot;Thank you &amp;quot; .. getPlayerName(source) .. &amp;quot;, you're now registed, you can login with /login&amp;quot;, source )&lt;br /&gt;
		else&lt;br /&gt;
			-- There was an error making the account, tell the user&lt;br /&gt;
			outputChatBox ( &amp;quot;Error creating account, contact the server admin&amp;quot;, source )&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- There was an error in the syntax, tell the user the correct syntax.&lt;br /&gt;
		outputChatBox ( &amp;quot;Error creating account, correct syntax: /register &amp;lt;password&amp;gt;&amp;quot;, source )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;register&amp;quot;, registerPlayer ) -- add the command handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''This code differs by allowing the user to change their username that they wish to use.'''&lt;br /&gt;
&lt;br /&gt;
'''Example 2:''' This enables players to register on your server by using /register &amp;lt;username&amp;gt; &amp;lt;password&amp;gt; in the chat window.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function registerPlayer ( source, commandName, username, password )&lt;br /&gt;
        if(password ~= &amp;quot;&amp;quot; and password ~= nil and username ~= &amp;quot;&amp;quot; and username ~= nil) then&lt;br /&gt;
                local accountAdded = addAccount(username,password)&lt;br /&gt;
                if(accountAdded) then&lt;br /&gt;
                        outputChatBox(&amp;quot;Thank you &amp;quot; .. getPlayerName(source) .. &amp;quot;, you're now registed, you can login with /login&amp;quot;,source)&lt;br /&gt;
                else&lt;br /&gt;
                        outputChatBox(&amp;quot;Error creating account, contact the server admin.&amp;quot;,source)&lt;br /&gt;
                end&lt;br /&gt;
        else&lt;br /&gt;
                outputChatBox(&amp;quot;Error creating account, correct syntax: /register &amp;lt;nick&amp;gt; &amp;lt;pass&amp;gt;&amp;quot;,source)&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;register&amp;quot;, registerPlayer ) -- add the command handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 3:''' This code differs again so the user can only register once /register &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local bRegisteredOnce = false&lt;br /&gt;
&lt;br /&gt;
function registerPlayer ( source, commandName, username, password )&lt;br /&gt;
        if(password ~= &amp;quot;&amp;quot; and password ~= nil and username ~= &amp;quot;&amp;quot; and username ~= nil and bRegisteredOnce == false) then&lt;br /&gt;
                local accountAdded = addAccount(username,password)&lt;br /&gt;
                if(accountAdded) then&lt;br /&gt;
                        outputChatBox(&amp;quot;Thank you &amp;quot; .. getPlayerName(source) .. &amp;quot;, you're now registed, you can login with /login&amp;quot;,source)&lt;br /&gt;
                        bRegisteredOnce = true&lt;br /&gt;
                else&lt;br /&gt;
                        outputChatBox(&amp;quot;Error creating account, contact the server admin.&amp;quot;,source)&lt;br /&gt;
                end&lt;br /&gt;
        else&lt;br /&gt;
                if bRegisteredOnce == true then&lt;br /&gt;
                    outputChatBox(&amp;quot;You already registered on this server!&amp;quot;,source)&lt;br /&gt;
                else&lt;br /&gt;
                    outputChatBox(&amp;quot;Error creating account, correct syntax: /register &amp;lt;nick&amp;gt; &amp;lt;pass&amp;gt;&amp;quot;,source)&lt;br /&gt;
                end&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;register&amp;quot;, registerPlayer ) -- add the command handler&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;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ar:addAcount]]&lt;br /&gt;
[[es:addAcount]]&lt;br /&gt;
[[ru:addAccount]]&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateVehicle&amp;diff=41589</id>
		<title>CreateVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateVehicle&amp;diff=41589"/>
		<updated>2014-08-22T15:48:46Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Needs_Checking|&lt;br /&gt;
* Explain the direction parameter which should always be false and what is the point of having a parameter whose value need to be the same all the time. --[[User:MTA SE|MTA SE]] 20:05, 5 July 2012 (UTC)&lt;br /&gt;
}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
{{note_box|Vehicles (and other elements) created client-side are only seen by the client that created them, aren't synced and players cannot enter them. They are essentially for display only.}}&lt;br /&gt;
This function creates a vehicle at the specified location.&lt;br /&gt;
&lt;br /&gt;
Its worth noting that the position of the vehicle is the center point of the vehicle, not its base. As such, you need to ensure that the z value (vertical axis) is some height above the ground. You can find the exact height using the client side function [[getElementDistanceFromCentreOfMassToBaseOfModel]], or you can estimate it yourself and just spawn the vehicle so it drops to the ground.&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;
vehicle createVehicle ( int model, 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;
{{OOP|This function is also a static function underneath the Vehicle class.|[[vehicle]]:create||}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''model''': The [[Vehicle IDs|vehicle ID]] of the vehicle being created.&lt;br /&gt;
* '''x''': A floating point number representing the X coordinate on the map.&lt;br /&gt;
* '''y''': A floating point number representing the Y coordinate on the map.&lt;br /&gt;
* '''z''': A floating point number representing the Z coordinate on the map.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
* '''rx''': A floating point number representing the rotation about the X axis in degrees.&lt;br /&gt;
* '''ry''': A floating point number representing the rotation about the Y axis in degrees.&lt;br /&gt;
* '''rz''': A floating point number representing the rotation about the Z axis in degrees.&lt;br /&gt;
* '''numberplate''': A string that will go on the number plate of the car (max 8 characters). This is only applicable to cars.&lt;br /&gt;
* '''direction''': A boolean which should be set to false. *SERVER ONLY*&lt;br /&gt;
{{New feature/item|3.0120|1.2|| &lt;br /&gt;
* '''variant1''': An integer for the first vehicle variant see [[Vehicle variants]]&lt;br /&gt;
* '''variant2''': An integer for the second vehicle variant see [[Vehicle variants]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns the [[vehicle]] element that was created. Returns ''false'' if the arguments are incorrect, or if the vehicle limit of 65535 is exceeded.&lt;br /&gt;
&lt;br /&gt;
==Using trains==&lt;br /&gt;
Trains are created using the createVehicle function. They are placed at the nearest point of the GTASA train pathing (railroad tracks) from their spawning point. &lt;br /&gt;
&lt;br /&gt;
==Example==&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;
This script spawns a Rhino on top of one lucky individual.&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 2: Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This script spawns a Rhino on top of the local player.&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;
&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;
This example creates a vehicle five units to the right of a player when they type ''createvehicle'' and its name in the 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 = getPedRotation ( 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;
&lt;br /&gt;
{{New items|4.0132|1.4|&lt;br /&gt;
This is an example of how this function is executed in an OOP environment.&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;
==See Also==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Vehicle functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupRemoveObject&amp;diff=41588</id>
		<title>AclGroupRemoveObject</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupRemoveObject&amp;diff=41588"/>
		<updated>2014-08-22T15:47:16Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}} &lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function removes the given object (string) from the given ACL group. The object can be a resource or a player. See [[aclGroupAddObject]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool aclGroupRemoveObject ( aclgroup theGroup, string theObjectString )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:removeObject||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''theGroup:''' The ACL group to remove the object string from&lt;br /&gt;
*'''theObjectString:''' The object to remove from the ACL group&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns ''true'' if the object existed in the ACL and could be remoevd, ''false'' if it could not be removed for some reason, ie. it did not exist in the given ACL group.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;!-- Explain what the example is in a single sentance --&amp;gt;&lt;br /&gt;
This example does...&lt;br /&gt;
&amp;lt;!-- Add the code below, an emphasis should be on making it clear, not optimized. You could provide two versions if you wish, one clear and well commented, the other optimized --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function deladm (playerSource, commandName, accountName)&lt;br /&gt;
	if accountName then --Make the script able to detect if a user is given.&lt;br /&gt;
		aclGroupRemoveObject (aclGetGroup(&amp;quot;Admin&amp;quot;), &amp;quot;user.&amp;quot;..accountName) --Removing the admin.&lt;br /&gt;
		outputChatBox (&amp;quot;ACL: Account '&amp;quot;..accountName..&amp;quot;' succesfully removed as admin.&amp;quot;, playerSource) -- Giving you a messsage.&lt;br /&gt;
		outputChatBox (&amp;quot;ACL: Someone have removed you as admin.&amp;quot;, accountName) -- giving the poor removed guy a message.&lt;br /&gt;
	else --Make the Syntax display.&lt;br /&gt;
		outputChatBox (&amp;quot;ACL: No account name specified.&amp;quot;, playerSource)&lt;br /&gt;
		outputChatBox (&amp;quot;ACL: Syntax: /deladmin [accountName]&amp;quot;, playerSource)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler (&amp;quot;deladmin&amp;quot;, deladm)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupListObjects&amp;diff=41587</id>
		<title>AclGroupListObjects</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupListObjects&amp;diff=41587"/>
		<updated>2014-08-22T15:46:14Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
&amp;lt;!-- Change this to &amp;quot;Client function&amp;quot; or &amp;quot;Server function&amp;quot; appropriately--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function returns a table over all the objects that exist in a given ACL group. These are objects like players and resources.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table of string aclGroupListObjects ( aclgroup theGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:listObjects|objects|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''theGroup:''' The ACL group to get the objects from&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns a table over the objects in the given ACL group. This table might be empty. Returns ''false'' or ''nil'' if theGroup is invalid or it fails for some other reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example outputs a list of Objects if the ACL Group is given. (TESTED!)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;addCommandHandler(&amp;quot;aclObjectList&amp;quot;,function(player,command,aclGroup)&lt;br /&gt;
	if(aclGroup~=&amp;quot;&amp;quot;)then&lt;br /&gt;
		table = aclGroupListObjects(aclGetGroup(aclGroup))&lt;br /&gt;
		count = 0&lt;br /&gt;
		for objects,name in pairs(table)do&lt;br /&gt;
			outputChatBox(&amp;quot;ACL LIST: &amp;quot;..aclGroup..&amp;quot; #&amp;quot;..tostring(count)..&amp;quot; Object: &amp;quot;..name..&amp;quot;.&amp;quot;,player)&lt;br /&gt;
			count = count + 1&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		outputChatBox(&amp;quot;Please add the aclGroup you want the list of.&amp;quot;,player)&lt;br /&gt;
		outputChatBox(&amp;quot;Syntax: /aclObjectList aclGroup&amp;quot;,player)&lt;br /&gt;
	end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupListACL&amp;diff=41586</id>
		<title>AclGroupListACL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupListACL&amp;diff=41586"/>
		<updated>2014-08-22T15:42:09Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&amp;lt;!-- Change this to &amp;quot;Client function&amp;quot; or &amp;quot;Server function&amp;quot; appropriately--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function returns a table over all the ACL's that exist in a given ACL group.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table of acl aclGroupListACL ( aclgroup theGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:listACL|aclList|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''theGroup:''' The ACL group to get the ACL elements from&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns a table over the ACL elements in the given ACL group. This table might be empty. Returns ''false'' or ''nil'' if theGroup is invalid or it fails for some other reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example outputs the list of ACL's if the aclGroup name is given. (TESTED!)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;addCommandHandler(&amp;quot;aclList&amp;quot;,function(player,command,aclGroup)&lt;br /&gt;
	if(aclGroup~=&amp;quot;&amp;quot;)then&lt;br /&gt;
		tables = aclGroupListACL(aclGetGroup(aclGroup))&lt;br /&gt;
		count = 0&lt;br /&gt;
		for list,nam in pairs(tables) do&lt;br /&gt;
			outputChatBox(&amp;quot;ACL LIST: &amp;quot;..aclGroup..&amp;quot;Line: &amp;quot;..tostring(count)..&amp;quot; ACL: &amp;quot;..aclGetName(nam)..&amp;quot;.&amp;quot;,player)&lt;br /&gt;
			count = count + 1&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		outputChatBox(&amp;quot;Please add the aclGroup you want the list of.&amp;quot;,player)&lt;br /&gt;
		outputChatBox(&amp;quot;Syntax: /aclList aclGroup&amp;quot;,player)&lt;br /&gt;
	end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupListACL&amp;diff=41585</id>
		<title>AclGroupListACL</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupListACL&amp;diff=41585"/>
		<updated>2014-08-22T15:39:30Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&amp;lt;!-- Change this to &amp;quot;Client function&amp;quot; or &amp;quot;Server function&amp;quot; appropriately--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function returns a table over all the ACL's that exist in a given ACL group.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table of acl aclGroupListACL ( aclgroup theGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:listACL|aclList|}}&lt;br /&gt;
{{OOP||[[aclgroup]]:listACL|aclList|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''theGroup:''' The ACL group to get the ACL elements from&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns a table over the ACL elements in the given ACL group. This table might be empty. Returns ''false'' or ''nil'' if theGroup is invalid or it fails for some other reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example outputs the list of ACL's if the aclGroup name is given. (TESTED!)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;addCommandHandler(&amp;quot;aclList&amp;quot;,function(player,command,aclGroup)&lt;br /&gt;
	if(aclGroup~=&amp;quot;&amp;quot;)then&lt;br /&gt;
		tables = aclGroupListACL(aclGetGroup(aclGroup))&lt;br /&gt;
		count = 0&lt;br /&gt;
		for list,nam in pairs(tables) do&lt;br /&gt;
			outputChatBox(&amp;quot;ACL LIST: &amp;quot;..aclGroup..&amp;quot;Line: &amp;quot;..tostring(count)..&amp;quot; ACL: &amp;quot;..aclGetName(nam)..&amp;quot;.&amp;quot;,player)&lt;br /&gt;
			count = count + 1&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		outputChatBox(&amp;quot;Please add the aclGroup you want the list of.&amp;quot;,player)&lt;br /&gt;
		outputChatBox(&amp;quot;Syntax: /aclList aclGroup&amp;quot;,player)&lt;br /&gt;
	end&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupList&amp;diff=41584</id>
		<title>AclGroupList</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupList&amp;diff=41584"/>
		<updated>2014-08-22T15:38:47Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}} &lt;br /&gt;
This function returns a table of all the ACL groups.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table aclGroupList ()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:list||}}&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a table of all the ACL groups if successful, returns an empty table if no ACL groups exist. ''false''/''nil'' can be returned if this function fails for some other reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;!-- Explain what the example is in a single sentance --&amp;gt;&lt;br /&gt;
This example shows, how to output all ACL Group Names by ''showAclGroups''&lt;br /&gt;
&amp;lt;!-- Add the code below, an emphasis should be on making it clear, not optimized. You could provide two versions if you wish, one clear and well commented, the other optimized --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showGroups(player)&lt;br /&gt;
	local groups = {}&lt;br /&gt;
	groups = aclGroupList()&lt;br /&gt;
	for i,v in ipairs(groups) do&lt;br /&gt;
		local name = aclGroupGetName(v)&lt;br /&gt;
		outputChatBox(tostring(name),player)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;showAclGroups&amp;quot;,showGroups)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupGetName&amp;diff=41583</id>
		<title>AclGroupGetName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupGetName&amp;diff=41583"/>
		<updated>2014-08-22T15:38:00Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function is used to get the name of the given ACL group.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string aclGroupGetName ( aclGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:getName|name|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''aclGroup:''' The ACL group to get the name of&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns the name of the given ACL group as a string if successfull, ''false''/''nil'' if the aclGroup is invalid or it fails for some other reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example outputs to the console that &amp;quot;Admin's are ready to watch&amp;quot;. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;addEventHandler(&amp;quot;onResourceStart&amp;quot;,resourceRoot,function()&lt;br /&gt;
	outputConsole(aclGroupGetName(aclGetGroup(&amp;quot;Admin&amp;quot;))..&amp;quot;'s are ready to watch :)&amp;quot;,root)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGroupGetName&amp;diff=41582</id>
		<title>AclGroupGetName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGroupGetName&amp;diff=41582"/>
		<updated>2014-08-22T15:37:08Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}}&lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function is used to get the name of the given ACL group.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
string aclGroupGetName ( aclGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:getName|name|}}&lt;br /&gt;
{{OOP||[[aclgroup]]:getName|name|}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''aclGroup:''' The ACL group to get the name of&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns the name of the given ACL group as a string if successfull, ''false''/''nil'' if the aclGroup is invalid or it fails for some other reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example outputs to the console that &amp;quot;Admin's are ready to watch&amp;quot;. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;addEventHandler(&amp;quot;onResourceStart&amp;quot;,resourceRoot,function()&lt;br /&gt;
	outputConsole(aclGroupGetName(aclGetGroup(&amp;quot;Admin&amp;quot;))..&amp;quot;'s are ready to watch :)&amp;quot;,root)&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclGetGroup&amp;diff=41581</id>
		<title>AclGetGroup</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclGetGroup&amp;diff=41581"/>
		<updated>2014-08-22T15:35:42Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}} &lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function is used to get the ACL group with the given name. If you need most of the groups you should consider using [[aclGroupList]] instead to get a table containing them all.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
aclgroup aclGetGroup ( string groupName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:get||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''groupName:''' The name to get the ACL group from&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns the ACL group if it could be found. Returns ''false''/''nil'' if it did not exist or failed for some reason.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&lt;br /&gt;
'''Example 1:''' This example makes every player able to use a command named &amp;quot;giveAccountAdminRights&amp;quot; that will add a specific accountname as an ACL object to the &amp;quot;Admin&amp;quot; group.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function giveAdminRights (playerSource, commandName, accountName) --add the function giveAdminRights and specify its arguments&lt;br /&gt;
	if accountName then --if there was an accountName entered then&lt;br /&gt;
		aclGroupAddObject (aclGetGroup(&amp;quot;Admin&amp;quot;), &amp;quot;user.&amp;quot;..accountName)) --add an ACL object using the form &amp;quot;user.[accountName]&amp;quot; to the ACL group &amp;quot;Admin&amp;quot;&lt;br /&gt;
		outputChatBox (&amp;quot;Account '&amp;quot;..accountName..&amp;quot;' succesfully added to the admin group&amp;quot;, playerSource) --output a notification to the player who entered the command that the acocunt was successfully added&lt;br /&gt;
	else --else output an error message and the correct syntax of the command to the player who entered it&lt;br /&gt;
		outputChatBox (&amp;quot;No account name specified.&amp;quot;, playerSource)&lt;br /&gt;
		outputChatBox (&amp;quot;Correct syntax: /giveAccountAdminRights [accountName]&amp;quot;, playerSource)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler (&amp;quot;giveAccountAdminRights&amp;quot;, giveAdminRights) --add a command &amp;quot;giveAccountAdminRights&amp;quot; and attch the function &amp;quot;giveAdminRights&amp;quot; to it &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 2:''' This example displays a list of all the online admins in the chat box (assuming your administrator's group in your ACL is called 'admin'):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
players = getElementsByType ( &amp;quot;player&amp;quot; )&lt;br /&gt;
admins = &amp;quot;&amp;quot;&lt;br /&gt;
for k,v in ipairs(players) do&lt;br /&gt;
   local accountname = &amp;quot;&amp;quot;&lt;br /&gt;
   if (isGuestAccount(getPlayerAccount(v)) == false) then&lt;br /&gt;
      accountname = getAccountName (getPlayerAccount(v))&lt;br /&gt;
      if isObjectInACLGroup ( &amp;quot;user.&amp;quot; .. accountname, aclGetGroup ( &amp;quot;admin&amp;quot; ) ) then&lt;br /&gt;
         if (admins == &amp;quot;&amp;quot;) then&lt;br /&gt;
            admins = getPlayerName(v)&lt;br /&gt;
         else&lt;br /&gt;
            admins = admins .. &amp;quot;, &amp;quot; .. getPlayerName(v)&lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
outputChatBox( &amp;quot;Online Admins:&amp;quot;, getRootElement(), 255, 255, 0)&lt;br /&gt;
outputChatBox( &amp;quot; &amp;quot; .. tostring ( admins ), getRootElement(), 255, 255, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsObjectInACLGroup&amp;diff=41580</id>
		<title>IsObjectInACLGroup</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsObjectInACLGroup&amp;diff=41580"/>
		<updated>2014-08-22T15:34:59Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}} &lt;br /&gt;
{{Note_box|It's recommended ''not'' to use this function to limit features to users that belong to specific groups. Instead use [[hasObjectPermissionTo]]. Using this function forces the server owner to name their group a certain way, whereas using hasObjectPermissionTo allows the owner to give permission for whatever features you restrict to whatever groups they have set up in their ACL.}}&lt;br /&gt;
This function is used to determine if an object is in a group.&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 isObjectInACLGroup ( string theObject, aclgroup theGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:doesContainObject||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theObject:''' the name of the object to check. Examples: &amp;quot;resource.ctf&amp;quot;, &amp;quot;user.Jim&amp;quot;.&lt;br /&gt;
*'''theGroup:''' the [[ACL group]] pointer of the group from which the object should be found.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the object is in the specified group, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
''' Example 1:''' This example adds a ''jetpack'' command that is only available to admins.  When entering the command, it will toggle the player's jetpack.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler ( &amp;quot;jetpack&amp;quot;,&lt;br /&gt;
    function ( thePlayer )&lt;br /&gt;
        if doesPedHaveJetPack ( thePlayer ) then -- If the player have a jetpack already, remove it&lt;br /&gt;
            removePedJetPack ( thePlayer ) -- Remove the jetpack&lt;br /&gt;
            return -- And stop the function here&lt;br /&gt;
        end&lt;br /&gt;
		&lt;br /&gt;
     -- Otherwise, give him one if he has access&lt;br /&gt;
&lt;br /&gt;
     local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) -- get his account name&lt;br /&gt;
     if isObjectInACLGroup (&amp;quot;user.&amp;quot;..accName, aclGetGroup ( &amp;quot;Admin&amp;quot; ) ) then -- Does he have access to Admin functions?&lt;br /&gt;
          if not doesPedHaveJetPack ( thePlayer ) then -- If the player doesn't have a jetpack give it.&lt;br /&gt;
               givePedJetPack ( thePlayer )  -- Give the jetpack&lt;br /&gt;
          end&lt;br /&gt;
     end&lt;br /&gt;
end&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 2:''' This example displays a list of all the online admins in the chat box (assuming your administrator's group in your ACL is called 'admin'):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
players = getElementsByType ( &amp;quot;player&amp;quot; )&lt;br /&gt;
admins = &amp;quot;&amp;quot;&lt;br /&gt;
for k,v in ipairs(players) do&lt;br /&gt;
   local accountname = &amp;quot;&amp;quot;&lt;br /&gt;
   if (isGuestAccount(getPlayerAccount(v)) == false) then&lt;br /&gt;
      accountname = getAccountName (getPlayerAccount(v))&lt;br /&gt;
      if isObjectInACLGroup ( &amp;quot;user.&amp;quot; .. accountname, aclGetGroup ( &amp;quot;admin&amp;quot; ) ) then&lt;br /&gt;
         if (admins == &amp;quot;&amp;quot;) then&lt;br /&gt;
            admins = getPlayerName(v)&lt;br /&gt;
         else&lt;br /&gt;
            admins = admins .. &amp;quot;, &amp;quot; .. getPlayerName(v)&lt;br /&gt;
         end&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
outputChatBox( &amp;quot;Online Admins:&amp;quot;, getRootElement(), 255, 255, 0)&lt;br /&gt;
outputChatBox( &amp;quot; &amp;quot; .. tostring ( admins ), getRootElement(), 255, 255, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AclDestroyGroup&amp;diff=41579</id>
		<title>AclDestroyGroup</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AclDestroyGroup&amp;diff=41579"/>
		<updated>2014-08-22T15:31:43Z</updated>

		<summary type="html">&lt;p&gt;Jaysds: /* Syntax */ OOP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server function}} &lt;br /&gt;
&amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt;&lt;br /&gt;
This function destroys the given ACL group. The destroyed ACL group will no longer be valid.&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;!-- NOTE: don't use 'special' names for variable names, e.g. you shouldn't be writing things like 'player player, vehicle vehicle', instead write something like 'player thePlayer, vehicle vehicleToGetInto'. This is less confusing and prevents the syntax highlighting being odd --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool aclDestroyGroup ( aclgroup aclGroup )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP|This function is also a static function underneath the ACL Group class.|[[aclgroup]]:destroy||}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
&amp;lt;!-- List each argument one per line. This should be the argument's name as in the argument list above, NOT the argument's data type --&amp;gt;&lt;br /&gt;
*'''aclGroup:''' The [[aclgroup]] element to destroy&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&amp;lt;!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check --&amp;gt;&lt;br /&gt;
Returns ''true'' if the ACL group was successfully deleted, ''false'' if it could not be deleted for some reason (ie. invalid argument).&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;!-- Explain what the example is in a single sentance --&amp;gt;&lt;br /&gt;
This example allows admins to remove an ACL group they specify.&lt;br /&gt;
&amp;lt;!-- Add the code below, an emphasis should be on making it clear, not optimized. You could provide two versions if you wish, one clear and well commented, the other optimized --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function removeACLGroup ( source, command, groupName )&lt;br /&gt;
-- Check if they're an admin...&lt;br /&gt;
	if ( isObjectInACLGroup ( &amp;quot;user.&amp;quot; .. getAccountName ( getPlayerAccount ( source )), aclGetGroup ( &amp;quot;Admin&amp;quot; ) ) ) then&lt;br /&gt;
		if ( groupName ) then -- Check if they specified the group name&lt;br /&gt;
			local group = aclGetGroup ( groupName ) -- Return any groups matching the name&lt;br /&gt;
				if ( group ) then -- If any were returned then...&lt;br /&gt;
					aclDestroyGroup ( group ) -- Destroy that group&lt;br /&gt;
				else&lt;br /&gt;
					-- Tell them if no groups with that name were found...&lt;br /&gt;
					outputChatBox ( &amp;quot;No group with that name was found.&amp;quot;, source, 255, 0, 0 )&lt;br /&gt;
				end&lt;br /&gt;
	&lt;br /&gt;
		else -- If they didn't specify the group&lt;br /&gt;
			outputChatBox ( &amp;quot;Please specify the group name.&amp;quot;, source, 255, 0, 0 ) -- Tell them that they must&lt;br /&gt;
		end&lt;br /&gt;
	else -- If they're not an admin....&lt;br /&gt;
		outputChatBox ( &amp;quot;You must be an admin to use this command&amp;quot;, source, 255, 0, 0 ) -- Tell them it's restricted&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;removeACL&amp;quot;, removeACLGroup ) -- Make it happen when somebody types &amp;quot;/removeACL&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&amp;lt;!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc --&amp;gt;&lt;br /&gt;
{{ACL_functions}}&lt;/div&gt;</summary>
		<author><name>Jaysds</name></author>
	</entry>
</feed>