<?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=Qaisjp</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=Qaisjp"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Qaisjp"/>
	<updated>2026-05-14T08:04:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingRestoreMemorySize&amp;diff=82709</id>
		<title>EngineStreamingRestoreMemorySize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingRestoreMemorySize&amp;diff=82709"/>
		<updated>2026-01-19T21:58:42Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6.0|21874|Restores the maximum amount of RAM [in bytes] that can be used for streaming to the default value}}&lt;br /&gt;
{{Tip|The function to manipulate the memory size is [[engineStreamingSetMemorySize]]}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
nil engineStreamingRestoreMemorySize()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[EngineStreaming]]:restoreMemorySize||}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example adds a command that can be used to change the streaming memory size, and display the previous value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;rsms&amp;quot;, function()&lt;br /&gt;
    local prevMB = math.floor(engineStreamingGetMemorySize() / 1024 / 1024)&lt;br /&gt;
    engineStreamingRestoreMemorySize()&lt;br /&gt;
    outputChatBox(&amp;quot;The maximum streaming memory available has been restored to the original value of &amp;quot; .. math.floor(engineGetStreamingMemorySize() / 1024 / 1024) .. &amp;quot; MB [Was &amp;quot; .. prevMB .. &amp;quot; MB]&amp;quot;)&lt;br /&gt;
end, false, false)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingRestoreMemorySize&amp;diff=82708</id>
		<title>EngineStreamingRestoreMemorySize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingRestoreMemorySize&amp;diff=82708"/>
		<updated>2026-01-19T21:58:27Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6.0|21874|Restores the maximum amount of RAM [in bytes] that can be used for streaming to the default value}}&lt;br /&gt;
{{Tip|The function to manipulate the memory size is [[engineStreamingSetMemorySize]]}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
nil engineStreamingRestoreMemorySize()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[EngineStreaming]]:restoreMemorySize||}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example adds a command that can be used to change the streaming memory size, and display the previous value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;rsms&amp;quot;, function()&lt;br /&gt;
    local prevMB = math.floor(engineGetStreamingMemorySize() / 1024 / 1024)&lt;br /&gt;
    engineStreamingRestoreMemorySize()&lt;br /&gt;
    outputChatBox(&amp;quot;The maximum streaming memory available has been restored to the original value of &amp;quot; .. math.floor(engineGetStreamingMemorySize() / 1024 / 1024) .. &amp;quot; MB [Was &amp;quot; .. prevMB .. &amp;quot; MB]&amp;quot;)&lt;br /&gt;
end, false, false)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=EngineStreamingRestoreMemorySize&amp;diff=82707</id>
		<title>EngineStreamingRestoreMemorySize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=EngineStreamingRestoreMemorySize&amp;diff=82707"/>
		<updated>2026-01-19T21:58:13Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0160|1.6.0|21874|Restores the maximum amount of RAM [in bytes] that can be used for streaming to the default value}}&lt;br /&gt;
{{Tip|The function to manipulate the memory size is [[engineStreamingSetMemorySize]]}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
nil engineStreamingRestoreMemorySize()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[EngineStreaming]]:restoreMemorySize||}}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example adds a command that can be used to change the streaming memory size, and display the previous value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;rsms&amp;quot;, function()&lt;br /&gt;
    local prevMB = math.floor(engineGetStreamingMemorySize() / 1024 / 1024)&lt;br /&gt;
    engineStreamingRestoreMemorySize()&lt;br /&gt;
    outputChatbox(&amp;quot;The maximum streaming memory available has been restored to the original value of &amp;quot; .. math.floor(engineGetStreamingMemorySize() / 1024 / 1024) .. &amp;quot; MB [Was &amp;quot; .. prevMB .. &amp;quot; MB]&amp;quot;)&lt;br /&gt;
end, false, false)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Engine functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetPedEnterVehicle&amp;diff=82691</id>
		<title>SetPedEnterVehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetPedEnterVehicle&amp;diff=82691"/>
		<updated>2026-01-06T00:49:43Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{Added feature/item|1.5.9|1.5.8|20740|This function makes a [[ped]] enter a [[vehicle]], similar to the enter_exit control state.}}&lt;br /&gt;
{{Note|This function only works on synced peds and vehicles (ie. created serverside).}}&lt;br /&gt;
{{Note|This function only works within the following limits:&lt;br /&gt;
* If forced to enter as a passenger, it doesn't work if all passenger seats are occupied. Only the driver seat can be jacked.&lt;br /&gt;
* If forced to enter as a driver, the ped can carjack the current driver.&lt;br /&gt;
** If the driver's door is blocked by something, the ped can use the opposite front door to reach the driver's seat, jacking the passenger in the process.&lt;br /&gt;
* If a vehicle is not specified:&lt;br /&gt;
** The ped will search for a vehicle door within 20 m.&lt;br /&gt;
** If the vehicle has a driver, the limit becomes 10 m.&lt;br /&gt;
* If a vehicle is specified:&lt;br /&gt;
** The vehicle has to be within 50 m. The doors aren't taken into account. It means that it doesn't work if the vehicle's door is in range but the vehicle itself is not.&lt;br /&gt;
** If the vehicle has a driver, the limit becomes 10 m.&lt;br /&gt;
* When entering, the ped will run toward a vehicle if it is less than 50 m away.&lt;br /&gt;
* The ped reserves the seat it is trying to use. It means nobody can enter the respective seat while the ped is running toward it.&lt;br /&gt;
** Exception: If the ped is forced to enter as a passenger and is going to use the front door, the ped can wait if someone is using it to go the driver seat.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setPedEnterVehicle ( ped thePed [, vehicle theVehicle = nil, bool passenger = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''thePed:''' The [[player]] or [[ped]] to enter the vehicle.&lt;br /&gt;
**''Note: The player must be the local player.''&lt;br /&gt;
**''Note: The ped must be synced by the client. Use [[isElementSyncer]] clientside to check if the client is syncing. Use [[setElementSyncer]] serverside to change the syncer manually.''&lt;br /&gt;
*'''vehicle:''' The [[vehicle]] to enter. If no vehicle is set, the ped will enter the nearest vehicle within 20 m.&lt;br /&gt;
*'''passenger:''' If set to ''true'', the ped will enter as passenger in the nearest available seat, otherwise he will enter as driver.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the function was successful, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
When this function returns ''true'', the client will ask server for permission to enter a vehicle. Actually entering can still fail in the following cases&lt;br /&gt;
*Another player or ped is already entering, exiting or jacking the same vehicle and seat.&lt;br /&gt;
*Movement input or damage can interrupt the task. Use [[getPedTask]] to monitor what the ped is doing.&lt;br /&gt;
&lt;br /&gt;
This function returns ''false'' in the following cases&lt;br /&gt;
*Invalid arguments were parsed.&lt;br /&gt;
*Time passed since last enter/exit for this ped is less than 1500 ms.&lt;br /&gt;
*[[onClientVehicleStartEnter]] was cancelled by a script.&lt;br /&gt;
*The ped has an active TASK_PRIMARY [[task]]. Use [[getPedTask]] to monitor what the ped is doing.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
Make [[ped]] Sweet enter his car:&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;
local sweet = createPed (270, 0, 0, 3)&lt;br /&gt;
setElementID (sweet, &amp;quot;sweet&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local sweetscar = createVehicle (492, 3, 0, 3)&lt;br /&gt;
setElementID (sweetscar, &amp;quot;sweetscar&amp;quot;)&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;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;
-- Code works only if client is syncing ped Sweet&lt;br /&gt;
addCommandHandler (&amp;quot;sweetentercar&amp;quot;,&lt;br /&gt;
function()&lt;br /&gt;
    local sweet = getElementByID (&amp;quot;sweet&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if isElementSyncer (sweet) then&lt;br /&gt;
        setPedEnterVehicle (sweet, getElementByID(&amp;quot;sweetscar&amp;quot;), true)&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;
{{Client ped functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ResetMapInfo&amp;diff=82690</id>
		<title>ResetMapInfo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ResetMapInfo&amp;diff=82690"/>
		<updated>2026-01-06T00:38:33Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix gender&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function is used to reset the state of a player.  It is intended to restore a player to their default state as if they had just joined the server, without any scripts affecting the player.&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 resetMapInfo ( [ player thePlayer = root ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{OptionalArg}}&lt;br /&gt;
*'''thePlayer:''' The specific player you wish to restore the state of.  Not specifying this will result in all players map info being reset.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns ''true'' if the map info was reset successfully, otherwise ''false''.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This will reset all map info when the resource is stopped.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function onResourceStop()&lt;br /&gt;
	resetMapInfo()&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onResourceStop&amp;quot;, resourceRoot, onResourceStop)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Map_functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Compiling_MTASA&amp;diff=82689</id>
		<title>Compiling MTASA</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Compiling_MTASA&amp;diff=82689"/>
		<updated>2026-01-03T23:17:49Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: 2022 -&amp;gt; 2026&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to successfully build Multi Theft Auto from source, it is necessary to perform a number of steps, which we will explain below.&lt;br /&gt;
&lt;br /&gt;
Please read the instructions carefully and do not skip parts of it, if you have no experience.&lt;br /&gt;
&lt;br /&gt;
= [[File:Dialog-warning.svg|32px]] Prerequisites =&lt;br /&gt;
&lt;br /&gt;
Compiling the Multi Theft Auto client &amp;amp; server is supported on Windows 10 and 11. On Linux, you can also compile the Multi Theft Auto server ([[Building MTASA Server on GNU Linux|check this article]]).&lt;br /&gt;
&lt;br /&gt;
[[File:Emblem-important.svg|24px]] '''Skipping any prerequisite steps will lead to unexpected build failures. Read the sections below carefully to understand the entire developer workflow.'''&lt;br /&gt;
&lt;br /&gt;
[[File:Process-stop.svg|24px]] '''There are solutions to common problems you may encounter in the [[#Error Troubleshooting]] section below.'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have the following software and SDKs installed:&lt;br /&gt;
&lt;br /&gt;
== Visual Studio 2026 ==&lt;br /&gt;
[[File:Visual_Studio_Community.PNG|right|150px|link=https://www.visualstudio.com/vs/]]&lt;br /&gt;
# Download  and install '''[https://visualstudio.microsoft.com/vs/ Microsoft Visual Studio 2026]''' - make sure you get the Community Edition, that one is free.&lt;br /&gt;
# On the installation checklist, [[:File:VsFoundationClasses.png|make sure you tick these 2 items]]:&lt;br /&gt;
## ''Desktop development with C++''&lt;br /&gt;
## Optional component ''C++ MFC for latest v145 build tools (x86 &amp;amp; x64)''&lt;br /&gt;
&lt;br /&gt;
If you've made a mistake, you can run the ''Visual Studio Installer'' app to modify your current installation. There is no need to uninstall and reinstall.&lt;br /&gt;
&lt;br /&gt;
== Microsoft DirectX SDK ==&lt;br /&gt;
[[File:DirectX_SDK.jpg|right|150px|link=http://web.archive.org/web/20200804044856/https://www.microsoft.com/en-us/download/details.aspx?id=23549]]&lt;br /&gt;
'''Download and install Microsoft DirectX SDK (August 2009) (DXSDK_Aug09.exe):'''&lt;br /&gt;
* [https://archive.org/download/dxsdk_aug09/DXSDK_Aug09.exe Mirror 1 (archive.org)]&lt;br /&gt;
* [https://mega.nz/file/pQJCiAJY#jBcYT6ZP4DMBpnm12BLRto9EQ-RjjpP3BWkSPanpvLI Mirror 2 (mega.nz)]&lt;br /&gt;
&lt;br /&gt;
Restart your computer after installing ''Microsoft DirectX SDK'', because otherwise the environment variable '''DXSDK_DIR''' won't be available yet. After restarting it re-run '''create-projects.bat'''&lt;br /&gt;
&lt;br /&gt;
See [[Compiling_MTASA/DXSDK_Aug09_Hashes|DXSDK Aug09 Hashes]] for file hashes of the installer.&lt;br /&gt;
&lt;br /&gt;
==[[File:Git_logo.png|left|32px|link=https://git-scm.com/]] Git Client==&lt;br /&gt;
&lt;br /&gt;
If you would like to contribute to MTA, you should use Git. This will allow you to collaborate with us by creating branches and pushing changes to [https://github.com/multitheftauto/ GitHub].&lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/en-us/visualstudio/version-control/git-with-visual-studio '''Visual Studio''' comes with a Git client] that you can use to manage your local repository. You should fork the [https://github.com/multitheftauto/mtasa-blue mtasa-blue repository] and clone on your machine.&lt;br /&gt;
&lt;br /&gt;
If you only want to compile the source code and are not interested in contributing to MTA, you can download the source directly (see below).&lt;br /&gt;
&lt;br /&gt;
=[[File:Document-save.svg|32px]] Getting the latest source code=&lt;br /&gt;
&lt;br /&gt;
To get the latest code, you will have to download the latest copy of our Git repository.&amp;lt;br&amp;gt;&lt;br /&gt;
We recommend cloning the repository in your Git client because you can pull any updates from there easily.&lt;br /&gt;
&lt;br /&gt;
* '''Repository:''' [https://github.com/multitheftauto/mtasa-blue multitheftauto/mtasa-blue]&lt;br /&gt;
* '''.zip:''' [https://github.com/multitheftauto/mtasa-blue/archive/master.zip master.zip]&lt;br /&gt;
* '''.tar.gz:''' [https://github.com/multitheftauto/mtasa-blue/archive/master.tar.gz master.tar.gz]&lt;br /&gt;
&lt;br /&gt;
=[[File:Media-floppy.svg|32px]] Compiling the code=&lt;br /&gt;
&lt;br /&gt;
Follow these steps to successfully build the '''mtasa-blue''' project.&lt;br /&gt;
&lt;br /&gt;
# Execute the script '''win-create-projects.bat'''. This installs dependencies and generates the Visual Studio project files that are mandatory to compile the code.&lt;br /&gt;
# Open the solution file '''MTASA.sln''' in the '''Build''' directory. If you are asked to upgrade the project, click '''Cancel'''.&lt;br /&gt;
# Select '''Debug''' - '''Win32''' configuration in Visual Studio, then press Build &amp;gt; Build Solution (may take some minutes).&lt;br /&gt;
# Alternatively, you may execute the script '''win-build.bat''', which runs the previous mentioned steps, without the need to open Visual Studio.&lt;br /&gt;
# Finally, execute the script '''win-install-data.bat'''. This copies important files to the Bin directory that are required for MTA to function. It gives you the option to '''Install the official resources''', which you can read about in the [[#Running the dedicated server]] section below.&lt;br /&gt;
&lt;br /&gt;
=[[File:Input-gaming.svg|40px]] Running the software=&lt;br /&gt;
&lt;br /&gt;
This section contains information on how to run the Multi Theft Auto client and server separately.&lt;br /&gt;
&lt;br /&gt;
== Running the client ==&lt;br /&gt;
&lt;br /&gt;
You can start your client in the '''Bin''' directory. You might find there a ''Multi Theft Auto.exe'' and/or ''Multi Theft Auto_d.exe'' executable. The ''_d'' suffix indicates a debug build of the software.&amp;lt;br&amp;gt;&lt;br /&gt;
Furthermore, you can also run your client inside the debugger from Visual Studio if you want to investigate a stack trace or set breakpoints in interesting code regions (read more in the section Debugging below).&lt;br /&gt;
&lt;br /&gt;
== Running the dedicated server ==&lt;br /&gt;
&lt;br /&gt;
If you already have run '''win-install-data.bat''' and selected &amp;quot;''Install resources''&amp;quot; then you can go to [[#Starting the server]].&lt;br /&gt;
&lt;br /&gt;
=== Installing the latest resources ===&lt;br /&gt;
If you want to run the Multi Theft Auto dedicated server, you will have to install the official resources. This default package includes resources that implmenent the most basic functionality (e.g. spawning players) in order to play.&lt;br /&gt;
&lt;br /&gt;
Our official resources repository is [https://github.com/multitheftauto/mtasa-resources hosted on GitHub]. You can download the latest resources from there or [http://mirror.multitheftauto.com/mtasa/resources/ download a zipped version]. Make sure that you have the latest resources package.&lt;br /&gt;
&lt;br /&gt;
=== Starting the server ===&lt;br /&gt;
To run the server, open the ''MTA Server.exe'' executable in the '''Bin/server''' directory. The ''_d'' suffix indicates a debug build of the software.&amp;lt;br&amp;gt;&lt;br /&gt;
You can also run the debug build ''MTA Server_d.exe'' with the Visual Studio Debugger (as of writing, you can do that by right-clicking on the Server's Launcher project and selecting ''Start a local instance'' in the ''Debugger'' menu), but you can also attach to a running debug build MTA server (see more in the section Debugging below).&lt;br /&gt;
&lt;br /&gt;
= [[File:Preferences-system.svg|32px]] Debugging =&lt;br /&gt;
If you already compiled the code in the '''Debug''' configuration then continue reading, if not, then go up to ''Compiling the code'' and follow the steps for a ''Debug'' build.&amp;lt;br&amp;gt;&lt;br /&gt;
To compile in '''Release''', click on the '''Debug''' list and switch to '''Release'''.&amp;lt;br&amp;gt;&lt;br /&gt;
You can either launch MTA yourself and attach any debugger you want to use (also applies to the Visual Studio debugger) or you start a local debugging session in Visual Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Local_Windows_Debugger.PNG]]&lt;br /&gt;
&lt;br /&gt;
== How to enable breakpoints ==&lt;br /&gt;
If you choose to run MTA with Visual Studio then you should also attach the debugger to the executable '''gta_sa.exe''' (press ''CTRL + ALT + P'' in Visual Studio) - otherwise, your&lt;br /&gt;
breakpoints will not work for anything besides the MTA Launcher project.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Attach_to_Process.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Extending timeout duration ==&lt;br /&gt;
When you use breakpoints during debugging, you may get kicked by the server due to timeout, because the client is frozen. To prevent this, create the '''timeout.longtime''' file in your ''Bin/server/'' directory.  &lt;br /&gt;
The content of the file is the new timeout duration in seconds&amp;lt;!--&lt;br /&gt;
Actually, its 60 milliseconds? When setting the content to &amp;quot;600&amp;quot;, it should be 600 seconds (10 minutes) but the timeout is being set to 36000 seconds (36000 / 600 = 60 ms)&lt;br /&gt;
--&amp;gt;, so make sure you type a huge number in there. If you keep the file empty, the timeout will be set to 120 seconds.&lt;br /&gt;
&lt;br /&gt;
== ReAttach for Visual Studio ==&lt;br /&gt;
You can use [https://marketplace.visualstudio.com/items?itemName=ErlandR.ReAttach ReAttach] to re-attach the debugger to the '''gta_sa.exe''' executable whenever you start your local debugger in Visual Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ReAttach_to_GTASA.PNG]]&lt;br /&gt;
&lt;br /&gt;
= [[File:System-users.svg|32px]] Getting involved =&lt;br /&gt;
Please see our [[Coding guidelines]] for information on the coding practice.&lt;br /&gt;
&lt;br /&gt;
= [[File:Mail-reply-all.svg|32px]] Additional information =&lt;br /&gt;
If you need more information, try our [https://github.com/multitheftauto/mtasa-blue/issues bug tracker] or [https://discord.com/invite/mtasa Discord].&lt;br /&gt;
&lt;br /&gt;
= Error Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
==Cannot open include file 'afxres.h'==&lt;br /&gt;
This error is caused by your incomplete Visual Studio configuration. Use the Visual Studio Installer to enable Optional component ''C++ MFC for latest v143 build tools (x86 &amp;amp; x64)''.&lt;br /&gt;
&lt;br /&gt;
==Cant find d3dx9.h==&lt;br /&gt;
Add the '''$(DXSDK_DIR)Include;''' to the VC++ Directories in DirectX9GuiRenderer, GUI and Client Core projects.&lt;br /&gt;
You can find the VC++ Directories list by selecting a project, then pressing the shortcut ALT + ENTER (without the +), then under the 'Configuration properties' you can find 'VC++ Directories', and in there you can find the 'Include Directories' field, click on it and add ''';$(DXSDK_DIR)Include;''' at the end of it. &lt;br /&gt;
'''Note: You need to do the same thing in Release mode as well'''&lt;br /&gt;
&lt;br /&gt;
==Cant find d3dx9.lib==&lt;br /&gt;
Do do same as in the error above, but instead of ''';$(DXSDK_DIR)Include;''' you must add ''';$(DXSDK_DIR)Lib/x86;''' to the '''Library directories''' field&lt;br /&gt;
'''Note: You need to do the same thing in Release mode as well'''&lt;br /&gt;
&lt;br /&gt;
==S1023 Error==&lt;br /&gt;
[https://support.microsoft.com/en-us/kb/2728613 &amp;quot;S1023&amp;quot; error when you install the DirectX SDK (June 2010)]&amp;lt;br style=&amp;quot;clear:both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cannot open source file &amp;quot;xxx.h&amp;quot; after upgrading to Visual Studio 2022==&lt;br /&gt;
If you've just upgraded to Visual Studio 2022 and were working on MTA using a previous version, you may receive errors about header files not being found (stdio.h, stddef.h, etc) when building the project. &lt;br /&gt;
&lt;br /&gt;
Make sure you have the latest Windows 10 SDK installed (via the Visual Studio Installer) and restart your PC. &lt;br /&gt;
&lt;br /&gt;
If that doesn't work - close Visual Studio, go into the `Build` folder (where your mtasa-blue is located) and delete the `.vs` folder. Start Visual Studio and everything should be fixed.&lt;br /&gt;
&lt;br /&gt;
== CL38 error. [netc_d.dll not found] ==&lt;br /&gt;
Solution: Delete '''Multi Theft Auto_d.exe''' and hit compile again.&lt;br /&gt;
&lt;br /&gt;
== After cloning the repository, it doesn't compile the project ==&lt;br /&gt;
Solution: Execute '''win-create-projects.bat''' in main directory.&lt;br /&gt;
&lt;br /&gt;
== CL17 Load field. Please ensure that the latest data files have been installed correctly ==&lt;br /&gt;
Solution: Execute '''win-install-data.bat''' in main directory.&lt;br /&gt;
&lt;br /&gt;
== ERROR: Loading network library (net_d.dll) failed! ==&lt;br /&gt;
Solution: Execute '''win-install-data.bat''' in main directory.&lt;br /&gt;
&lt;br /&gt;
[[pl:Compiling MTASA]]&lt;br /&gt;
[[pt-br:Compilando o MTASA]]&lt;br /&gt;
[[ru:Compiling MTASA]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Vehicle_functions&amp;diff=68118</id>
		<title>Template:Vehicle functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Vehicle_functions&amp;diff=68118"/>
		<updated>2020-12-29T14:40:12Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: hide train functison&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[addVehicleSirens]]&lt;br /&gt;
*[[addVehicleUpgrade]]&lt;br /&gt;
*[[attachTrailerToVehicle]]&lt;br /&gt;
*[[blowVehicle]]&lt;br /&gt;
*[[createVehicle]]&lt;br /&gt;
*[[detachTrailerFromVehicle]]&lt;br /&gt;
*[[fixVehicle]]&lt;br /&gt;
*[[getModelHandling]]&lt;br /&gt;
*[[getOriginalHandling]]&lt;br /&gt;
*[[getTrainDirection]]&lt;br /&gt;
*[[getTrainPosition]]&lt;br /&gt;
*[[getTrainSpeed]]&lt;br /&gt;
&amp;lt;!-- {{New items|3.0160|1.6|&lt;br /&gt;
*[[getTrainTrack]]&lt;br /&gt;
|7485}} --&amp;gt;&lt;br /&gt;
*[[getVehicleColor]]&lt;br /&gt;
*[[getVehicleCompatibleUpgrades]]&lt;br /&gt;
*[[getVehicleController]]&lt;br /&gt;
*[[getVehicleDoorOpenRatio]]&lt;br /&gt;
*[[getVehicleDoorState]]&lt;br /&gt;
*[[getVehicleEngineState]]&lt;br /&gt;
*[[getVehicleHandling]]&lt;br /&gt;
*[[getVehicleHeadLightColor]]&lt;br /&gt;
*[[getVehicleLandingGearDown]]&lt;br /&gt;
*[[getVehicleLightState]]&lt;br /&gt;
*[[getVehicleMaxPassengers]]&lt;br /&gt;
*[[getVehicleModelFromName]]&lt;br /&gt;
*[[getVehicleName]]&lt;br /&gt;
*[[getVehicleNameFromModel]]&lt;br /&gt;
*[[getVehicleOccupant]]&lt;br /&gt;
*[[getVehicleOccupants]]&lt;br /&gt;
*[[getVehicleOverrideLights]]&lt;br /&gt;
*[[getVehiclePaintjob]]&lt;br /&gt;
*[[getVehiclePanelState]]&lt;br /&gt;
*[[getVehiclePlateText]]&lt;br /&gt;
{{New items|3.0156|1.5.5|&lt;br /&gt;
*[[getVehicleRespawnPosition]]&lt;br /&gt;
*[[getVehicleRespawnRotation]]&lt;br /&gt;
|14053}}&lt;br /&gt;
*[[getVehicleSirenParams]]&lt;br /&gt;
*[[getVehicleSirens]]&lt;br /&gt;
*[[getVehicleSirensOn]]&lt;br /&gt;
*[[getVehicleTowedByVehicle]]&lt;br /&gt;
*[[getVehicleTowingVehicle]]&lt;br /&gt;
{{Deprecated items|3.0156|1.5.6|&lt;br /&gt;
*[[getVehicleTurnVelocity]]&lt;br /&gt;
}}&lt;br /&gt;
*[[getVehicleTurretPosition]]&lt;br /&gt;
*[[getVehicleType]]&lt;br /&gt;
*[[getVehicleUpgradeOnSlot]]&lt;br /&gt;
*[[getVehicleUpgradeSlotName]]&lt;br /&gt;
*[[getVehicleUpgrades]]&lt;br /&gt;
*[[getVehicleVariant]]&lt;br /&gt;
*[[getVehicleWheelStates]]&lt;br /&gt;
*[[getVehiclesOfType]]&lt;br /&gt;
*[[isTrainDerailable]]&lt;br /&gt;
*[[isTrainDerailed]]&lt;br /&gt;
*[[isVehicleBlown]]&lt;br /&gt;
*[[isVehicleDamageProof]]&lt;br /&gt;
*[[isVehicleFuelTankExplodable]]&lt;br /&gt;
*[[isVehicleLocked]]&lt;br /&gt;
*[[isVehicleOnGround]]&lt;br /&gt;
*[[isVehicleTaxiLightOn]]&lt;br /&gt;
*[[removeVehicleSirens]]&lt;br /&gt;
*[[removeVehicleUpgrade]]&lt;br /&gt;
*[[resetVehicleExplosionTime]]&lt;br /&gt;
*[[resetVehicleIdleTime]]&lt;br /&gt;
*[[respawnVehicle]]&lt;br /&gt;
*[[setModelHandling]]&lt;br /&gt;
*[[setTrainDerailable]]&lt;br /&gt;
*[[setTrainDerailed]]&lt;br /&gt;
*[[setTrainDirection]]&lt;br /&gt;
*[[setTrainPosition]]&lt;br /&gt;
*[[setTrainSpeed]]&lt;br /&gt;
&amp;lt;!-- {{New items|3.0160|1.6|&lt;br /&gt;
*[[setTrainTrack]]&lt;br /&gt;
|7485}} --&amp;gt;&lt;br /&gt;
*[[setVehicleColor]]&lt;br /&gt;
*[[setVehicleDamageProof]]&lt;br /&gt;
*[[setVehicleDoorOpenRatio]]&lt;br /&gt;
*[[setVehicleDoorState]]&lt;br /&gt;
*[[setVehicleDoorsUndamageable]]&lt;br /&gt;
*[[setVehicleEngineState]]&lt;br /&gt;
*[[setVehicleFuelTankExplodable]]&lt;br /&gt;
*[[setVehicleHandling]]&lt;br /&gt;
*[[setVehicleHeadLightColor]]&lt;br /&gt;
*[[setVehicleIdleRespawnDelay]]&lt;br /&gt;
*[[setVehicleLandingGearDown]]&lt;br /&gt;
*[[setVehicleLightState]]&lt;br /&gt;
*[[setVehicleLocked]]&lt;br /&gt;
*[[setVehicleOverrideLights]]&lt;br /&gt;
*[[setVehiclePaintjob]]&lt;br /&gt;
*[[setVehiclePanelState]]&lt;br /&gt;
*[[setVehiclePlateText]]&lt;br /&gt;
*[[setVehicleRespawnDelay]]&lt;br /&gt;
*[[setVehicleRespawnPosition]]&lt;br /&gt;
{{New items|3.0156|1.5.5|&lt;br /&gt;
*[[setVehicleRespawnRotation]]&lt;br /&gt;
|14280}}&lt;br /&gt;
*[[setVehicleSirens]]&lt;br /&gt;
*[[setVehicleSirensOn]]&lt;br /&gt;
*[[setVehicleTaxiLightOn]]&lt;br /&gt;
*[[setVehicleTurretPosition]]&lt;br /&gt;
{{Deprecated items|3.0156|1.5.6|&lt;br /&gt;
*[[setVehicleTurnVelocity]]&lt;br /&gt;
}}&lt;br /&gt;
*[[setVehicleVariant]]&lt;br /&gt;
*[[setVehicleWheelStates]]&lt;br /&gt;
*[[spawnVehicle]]&lt;br /&gt;
*[[toggleVehicleRespawn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Coding_guidelines&amp;diff=68081</id>
		<title>Coding guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Coding_guidelines&amp;diff=68081"/>
		<updated>2020-12-22T16:43:15Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: anchor link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [https://github.com/multitheftauto/mtasa-blue/blob/master/CONTRIBUTING.md#contributors-guide These guidelines are now on GitHub] =&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Coding_guidelines&amp;diff=68080</id>
		<title>Coding guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Coding_guidelines&amp;diff=68080"/>
		<updated>2020-12-22T16:42:29Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: CONTRIBUTING.md has been merged and replaces this page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= [https://github.com/multitheftauto/mtasa-blue/blob/master/CONTRIBUTING.md These guidelines are now on GitHub] =&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAnalogControlState&amp;diff=67771</id>
		<title>GetAnalogControlState</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAnalogControlState&amp;diff=67771"/>
		<updated>2020-11-20T21:49:31Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
This retrieves the analog control state of a control.  This is useful for detecting sensitive controls, such as those used on a joypad.&lt;br /&gt;
&lt;br /&gt;
To get the analog control state for a [[ped]], please use [[getPedAnalogControlState]].&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;float getAnalogControlState ( string control [, bool rawValue ] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''control:''' The control that you want to get the state of. See [[control names]] for a list of possible controls.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
{{New feature/item|3.0157|1.5.7|20383|&lt;br /&gt;
*'''rawValue:''' A bool indicating whether to poll for raw controller state, which ignores keyboard input and any overrides from [[setAnalogControlState]] and others. When set to true, and a controller is not used, the function will always return 0.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a [[float]] between 0 and 1 indicating the amount the control is pressed.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This creates an ''/forwards'' command, which toggles your ''forwards'' control state between 0 and 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler( &amp;quot;forwards&amp;quot;,&lt;br /&gt;
    function( )&lt;br /&gt;
        if ( getAnalogControlState( &amp;quot;forwards&amp;quot; ) == 0 ) then&lt;br /&gt;
            setAnalogControlState( &amp;quot;forwards&amp;quot;, 1 )&lt;br /&gt;
        else&lt;br /&gt;
            setAnalogControlState( &amp;quot;forwards&amp;quot;, 0 )&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;
{{Client input functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MacOS&amp;diff=67728</id>
		<title>MacOS</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MacOS&amp;diff=67728"/>
		<updated>2020-11-08T00:43:57Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: make warning bigger for people that can't read&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 2em; line-height: 1em;&amp;quot;&amp;gt;{{Warning|This page is intended for developers. If you are here looking for instructions to install the client on macOS, [https://gist.github.com/qaisjp/778ed99ac8a8dcb93f797a28ba5f8303 please read this page!]}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page is incomplete, and is still being updated by developers. If you are here to learn how to run MTA on OS X, you only need to read the first section &amp;quot;[[#Making_Your_Own_Wrapper|Making Your Own Wrapper]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Contact [[User:qaisjp]] if you need any help with anything on this page.&lt;br /&gt;
&lt;br /&gt;
=== User Experience ===&lt;br /&gt;
This section outlines what our automated version will do.&lt;br /&gt;
&lt;br /&gt;
A ''.dmg'' file will be distributed. EULAs can be embedded within ''.dmg'' files.&lt;br /&gt;
&lt;br /&gt;
This file will contain a link to the Applications folder and the Multi Theft Auto application. The user is expected to transfer the application to the applications directory before running.&lt;br /&gt;
&lt;br /&gt;
'''The application will''':&lt;br /&gt;
* confirm we are not running from an img file&lt;br /&gt;
* check if there is currently a valid GTA:SA directory&lt;br /&gt;
** if not, prompt for a directory.&lt;br /&gt;
** Wineskin does not support symbolic links. Once the directory has been chosen, we copy the gta_sa.exe file over and directory junction the rest of the files.&lt;br /&gt;
* start Multi Theft Auto for us automatically&lt;br /&gt;
&lt;br /&gt;
== Making Your Own Wrapper ==&lt;br /&gt;
This section is written like a tutorial for public consumption, but is intended to serve as working documentation to aid the automated version in development. It is recommended that you read through this entire section (including the &amp;quot;Tips&amp;quot; section at the bottom) before following the tutorial, if you wish to build your own Wineskin wrapper. You do not need to read any other sections.&lt;br /&gt;
&lt;br /&gt;
=== Grabbing the Winery===&lt;br /&gt;
* Grab the [http://wineskin.urgesoftware.com/tiki-index.php?page=Downloads Wineskin Winery]. At the time of writing, v1.7. This allows you to create your own wrapper.&lt;br /&gt;
* Open ''Wineskin Winery.app'', and [[Media:MacOS_wineskin_tut1.png|click &amp;quot;Update&amp;quot; underneath &amp;quot;No Wrapper Installed&amp;quot; to download the master wrapper.]].&lt;br /&gt;
* Now click the + plus button. This will bring up a new window titled &amp;quot;Add Engine&amp;quot;.&lt;br /&gt;
* Select the latest engine (at the time of writing, WS9Wine1.9.15) and [[Media:MacOS_wineskin_tut2.png|click the blue &amp;quot;Download and Install&amp;quot; button]].&lt;br /&gt;
* Now you can [[Media:MacOS_wineskin_tut3.png|click &amp;quot;Create New Blank Wrapper&amp;quot; button at the bottom of the &amp;quot;Wineskin Winery&amp;quot; window]].&lt;br /&gt;
* Call the application whatever you like, &amp;quot;Multi Theft Auto&amp;quot; is a good name to use.&lt;br /&gt;
* [[Media:MacOS_wineskin_tut4.png|You may receive a firewall dialog.]] Press &amp;quot;Yes&amp;quot;.&lt;br /&gt;
* Allow the wrapper to be created. This will take some time.&lt;br /&gt;
* A new wrapper will be generated in the Applications folder '''in your home folder'''. It will not appear in your main Applications folder (which resides in the root of your drive, for all the users).&lt;br /&gt;
 &lt;br /&gt;
Now we have generated an empty wrapper, we need to add GTA, install MTA, and configure some other settings.&lt;br /&gt;
&lt;br /&gt;
=== Running San Andreas ===&lt;br /&gt;
Firstly, we will test out Grand Theft Auto: San Andreas. For the sake of this tutorial we will assume that you already have a folder containing your GTA:SA files (copied over from a Windows installation). You ''may'' need a no-cd version of the exe.&lt;br /&gt;
&lt;br /&gt;
* Right click your main wrapper app (in my case, &amp;quot;MTASA.app&amp;quot;) and press &amp;quot;Show package contents&amp;quot;&lt;br /&gt;
* [[Media:MacOS_wineskin_tut5.png|There should be three items inside here.]] Open the ''drive_c'' shortcut, open ''Program Files'', and create a folder called ''Rockstar Games''.&lt;br /&gt;
* Copy (or move) your ''GTA San Andreas'' folder here.&lt;br /&gt;
* [[Media:MacOS_wineskin_tut6.png|Your drive_c folder should now look a bit like this.]]&lt;br /&gt;
* Now select ''Wineskin.app'' (which inside our main app). [[Media:MacOS_wineskin_tut7.png|This application allows us to configure our wrapper.]]&lt;br /&gt;
* Select &amp;quot;Advanced&amp;quot; to bring up a window titled &amp;quot;Wineskin Advanced&amp;quot;.&lt;br /&gt;
* Click the &amp;quot;Browse&amp;quot; button next to the &amp;quot;Windows EXE&amp;quot; field and navigate to ''gta_sa.exe''. [[Media:MacOS_wineskin_tut8.png|The window should now look like this.]]&lt;br /&gt;
* Press &amp;quot;Set Screen Options&amp;quot; at the bottom of the window, and make sure you deselect &amp;quot;Decorate windows&amp;quot;, and select &amp;quot;Use Direct3D boost&amp;quot;. [[Media:MacOS_wineskin_tut9.png|It should be configured like this.]] '''[http://wineskin.urgesoftware.com/tiki-view_blog_post.php?postId=87 High Sierra (and above) users must read these instructions.]'''&lt;br /&gt;
* Click Done. On the &amp;quot;Wineskin Advanced&amp;quot; window, press &amp;quot;Test Run&amp;quot; and San Andreas will begin to run. Note that it will take some time for it to run.&lt;br /&gt;
* After the two GTASA startup logos display, press any key to skip the splash screen.&lt;br /&gt;
* After you've tried the game a little, quit. You may close (press Cancel) the dialog box that asks you whether you want to view logs.&lt;br /&gt;
&lt;br /&gt;
=== Running Multi Theft Auto ===&lt;br /&gt;
Now we need to install Multi Theft Auto.&lt;br /&gt;
* Some font files are required for MTA to run. Copy the font files (''.ttf'') from {{WineFonts}} and extract them to `drive_c/windows/fonts` (inside our wrapper). You may have to create the fonts folder yourself if it does not exist.&lt;br /&gt;
* Download the installer from [https://multitheftauto.com the homepage].&lt;br /&gt;
* Open Wineskin.app (inside our wrapper) and select &amp;quot;Install Software&amp;quot;, and then select &amp;quot;Choose Setup Executable&amp;quot;.&lt;br /&gt;
* Navigate to the ''.exe'' installer (that should be inside your Downloads folder) and allow Wineskin to load it.&lt;br /&gt;
* Proceed with the installer as usual. '''Do not change the Destination Folder for where MTA will be installed.'''&lt;br /&gt;
* The installer may encounter errors ''Unable to install Microsoft Visual Studio 20xx redistributable''. It is okay to ignore these.&lt;br /&gt;
* Deselect ''Run MTA'' when you have finished installing.&lt;br /&gt;
* Press &amp;quot;Advanced&amp;quot; on the Wineskin window, and now browse to the ''Multi Theft Auto.exe'' file.&lt;br /&gt;
* Perform a Test Run, and hopefully Multi Theft Auto should run!&lt;br /&gt;
&lt;br /&gt;
=== Tips ===&lt;br /&gt;
* You can use the keybind Cmd+Opt+A at any time to switch between windowed &amp;amp; fullscreen. You may need to use this if you cmd+tab out of the app, and the app ends up moving to windowed mode.&lt;br /&gt;
* If you are asked at any time to install Gecko or Mono, simply press yes. &lt;br /&gt;
* If you receive the message &amp;quot;Warning: Could not detect anti-virus product&amp;quot; when starting MTA, simply check the box saying &amp;quot;I will not install an anti-virus&amp;quot;, and press OK. This message occurs because MTA cannot detect OS X antiviruses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&amp;lt;lowercasetitle&amp;gt;&amp;lt;/lowercasetitle&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Anti-cheat_guide&amp;diff=67657</id>
		<title>Anti-cheat guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Anti-cheat_guide&amp;diff=67657"/>
		<updated>2020-10-31T04:29:37Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: remove incorrect wiki syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide explains how you can fine-tune MTA's anti-cheat on your server using [[Server_mtaserver.conf|'''mtaserver.conf''']]. It does not allow players to modify their own AC settings.&lt;br /&gt;
&lt;br /&gt;
An anti-cheat helper resource, '''acpanel''', is included as a default resource. This shows the current anti-cheat status of your server, along with an option to keep your clients up to date and a basic implementation of [[onPlayerModInfo]] to block modified img files.&lt;br /&gt;
&lt;br /&gt;
You may want to fine-tune AC to prevent certain players have from having an unfair advantage or to ensure competitive integrity. The settings you provide depends entirely on the kind of server you run. Here are some examples on what can be achieved:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Alice tries to ram the vehicle of Eve, and Alice can clearly see the collision, but Eve's vehicle is not really moving.&lt;br /&gt;
: '''Explanation:''' Eve has changed their vehicle model to a much smaller vehicle, or a model with a tiny hitbox or (nearly absent) collisions.&lt;br /&gt;
: '''Solution:''' Disallow non-standard gta3.img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Eve seems to be using wallhacks! She even seems to even be shooting through them!&lt;br /&gt;
:  '''Explanation:''' Eve has replaced buildings so that they are either invisible (textures) or tiny (models).&lt;br /&gt;
:  '''Solution:''' Disallow non-standard gta3.img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Mallory seems to be solving complex maths questions instantly! It should take at least a couple of seconds... for humans.&lt;br /&gt;
:  '''Explanation:''' Mallory is injecting keyboard input via something like AutoHotkey&lt;br /&gt;
:  '''Solution:''' Enable SD #31 to prevent users from injecting keyboard input. You can use SD #32 for injected mouse input (e.g. for scripts that require natural skill from mouse input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Mallory seems to be spamming my commands and GUI... and it lags my entire server!&lt;br /&gt;
: '''Explanation:''' You are running expensive user-initiated code without rate limiting players.&lt;br /&gt;
: '''Solution:''' You should write code that prevents players from spamming certain actions.&lt;br /&gt;
: '''Lazy Solution:''' Enable SD #31/#32 to make it more difficult for players to spam certain actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;==&lt;br /&gt;
Comma separated list of disabled anti-cheats. This setting disables specific AC codes. If a detection is triggered and it's not disabled by the server, a player will get kicked and be shown the AC code corresponding to that detection. '''Note that the list is incomplete''' (it doesn't cover all AC codes that exist) because not all AC codes can be disabled for security reasons, e.g they are critical part of the anti-cheat and likewise we will also never provide information about what exactly they mean.&lt;br /&gt;
&lt;br /&gt;
'''DISCLAIMER''':&lt;br /&gt;
Please note that disableac will only void the AC # kick for using GTA singleplayer cheats and some very basic, outdated and patched MP cheats (such as s0beit). Hacks &amp;amp; cheats designed for MTA or other general hacking tools may still trigger a Global ban or kick.&lt;br /&gt;
If you try to use a typical MTA cheat or hacktool under the belief using disableAC will save your day, and get banned for a while, it's your own fault, regardless of this setting being used to disable any of the AC classifications that it may fall under.&lt;br /&gt;
&lt;br /&gt;
There is also a good chance that disabling certain detections won't enable your players to (even) use the majority of 'basic' GTA:SA trainers, but result in a kick only.&lt;br /&gt;
Due to the current state of MTA anti-cheat, and its advanced heuristics, it's simply not feasible to try and create a freehaven for cheaters. You can experiment, but we don't recommend using '''disableac''' for these reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''': With '''trainer''', cheats (for MTA or GTA) or forbidden cheat tools are meant. This is especially true for AC #4.&lt;br /&gt;
Please note that getting kicked for anything listed here isn't neccesarily (intended) hacking, someone can open hacktools that they plan to use for another game, while both that game and MTA are opened, and be kicked.&lt;br /&gt;
It's also possible that someone isn't aware of certain software containing hack/tamper features (making it prohibited) when they run it and get kicked.&lt;br /&gt;
Basically, (the intent of) cheating on MTA or your server can never be proven by triggering these detections alone.&lt;br /&gt;
&lt;br /&gt;
Available codes are:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Code for &amp;lt;disableac&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Displayed on detect&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Required server version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Required &amp;lt;minclientversion&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Notes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #1&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Classic health/armour hack detector&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #2&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Corrupted dll files&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #4&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects presence of trainer. This is the most common AC code for attempted cheating, mostly with cheats designed for MTA.&lt;br /&gt;
Note: disabling this code is unlikely to produce expected results, in accordance with what is mentioned in the &amp;quot;DISCLAIMER&amp;quot; part. &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #5&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer.        &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''6'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer incl.: player movement, health/damage, weapons, money, gamespeed, game cheats, aimbot   &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''7'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer.   &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''8'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #8&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects unauthorized mods&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot;|'''11'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #11&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| More trainers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #11&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Dll injector / Trainer&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''13'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #13&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Data files issue&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''17'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #17&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Speed / wall hacks&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot;|'''21'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #21&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| More trainers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #21&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Custom gta_sa.exe&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''26'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #26&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05858 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Anti-cheat component blocked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;enablesd&amp;gt;&amp;lt;/enablesd&amp;gt;==&lt;br /&gt;
Comma separated list of enabled Special Detections (SD #). A special detection is a type of anti-cheat for (usually) harmless game modifications. Competitive servers or servers dealing with a certain problem structurally may wish to enable special detections, but most servers should leave this setting blank. Available codes are:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Code for &amp;lt;enablesd&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Displayed on detect&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Required server version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Required &amp;lt;minclientversion&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''12'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #12&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow custom D3D9.DLL&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''14'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #14&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04605&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04605&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow virtual machines such as VMWare&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''15'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #15&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04791&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04791&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow disabled driver signing &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''16'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #16&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow disabled anti-cheat components. This is triggered when an anti-cheat component can not start. It is usually due to some problem with the PC and might be fixed by a reboot. Can also be triggered by a virus.&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''20'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #20&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow non-standard gta3.img or gta_int.img (For servers not using [[onPlayerModInfo]])&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''22'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #22&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow resource download errors/corruption (Lua script files)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''23'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #23&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.2-9.07911&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow resource download errors/corruption (Non-Lua files e.g. png,dff)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''28'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #28&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow Linux Wine&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''31'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #31&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3-9.11204&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Ignore injected keyboard inputs (e.g. from AutoHotkey, macro's and on screen keyboard)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''32'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #32&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.4-9.11528&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Ignore injected mouse button inputs and movement (this detection can prevent an ambigious type of aim hacks (bullet spread/recoil manipulation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''33'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #33&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow software of the category 'Net limiter' (ideal for lagswitching or causing structural lag, but may also be used for benign purposes)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''34'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #34&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow internet café users ('''only''' use as last resort to combat mass ban evasion using café PC's)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''35'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #35&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow certain software with &amp;quot;FPS locking&amp;quot; capabilities, for example Fraps recorder.&lt;br /&gt;
&lt;br /&gt;
Particularly racing gamemodes are impacted by players that use FPS lock hotkey at times they need an unfair advantage (like, to drive through a loop faster) or a small speed boost.&lt;br /&gt;
&lt;br /&gt;
'''Note''': it would be better if you use this SD in a custom implementation only (using [[onPlayerACInfo]]) instead of kick in mtaserver.conf. For example so that it would only kick when they approach a loop, or are playing a map sensitive to this abuse. Because you'll have to tread carefully, since Fraps is also a popular recording tool.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''36'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #36&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow AutoHotKey base application (used to load .ahk files) and Ahk2Exe binaries with embedded scripts.&lt;br /&gt;
&lt;br /&gt;
The possibilities for AutoHotKey are endless and it would be futile for the MTA anti-cheat or scripts to try to cover every case. MTA does not scan the content of .ahk files loaded into the AutoHotKey application, so this special detection allows server owners to stop all uses of AutoHotKey.&lt;br /&gt;
&lt;br /&gt;
Most servers won't need this (cancelling the input sent into GTA with SD #31 and #32 would be sufficient), but some competitive servers have problems with AutoHotKey's interaction with Windows rather than with MTA (which is already ignored by the game). Examples of these toggling firewall rules for lag switching, or toggling of effects that can cause small freezes.&lt;br /&gt;
&lt;br /&gt;
The abuse scripts currently in circulation are mostly AHK-based, so keep in mind that they can easily migrate to a different system. MTA isn't guaranteed to add an SD for that as well. If you're experiencing abuse that consists of lag switching, a scripted solution (such as [https://github.com/Lpsd/ConGuard ConGuard]) is the recommended approach.&lt;br /&gt;
&lt;br /&gt;
Finally, remember that the AutoHotKey base application has many legitimate uses, so only use this when you have no other options for ensuring competitive balance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are constantly working on keeping the definitions for above SD (special detections) up-to-date, so as to ensure all violating software or circumstances that you opt-in to disable gets detected once used. While we are pro-actively checking if new or unknown software/tools are still being detected under the same signature, it's possible that something slips through the cracks. Therefore, you can help us if you come across anything that should be detectable using SD # but is not currently; send a forum PM to Dutchman101 or ccw with your report.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;client_file name=&amp;quot;data/carmods.dat&amp;quot; verify=&amp;quot;0&amp;quot;/&amp;gt;==&lt;br /&gt;
By default, clients may not join a server if they have customized GTA:SA data files. Adding one or more of the above lines excludes files from validation. The file names that can be used are:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;anim/ped.ifp&amp;quot;&lt;br /&gt;
* &amp;quot;data/animgrp.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/ar_stats.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/carmods.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/clothes.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/default.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/default.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/furnitur.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/gta.dat&amp;quot;&lt;br /&gt;
* &amp;lt;strike&amp;gt;&amp;quot;data/handling.cfg&amp;quot;&amp;lt;/strike&amp;gt; - this is unavailable because MTA always ignores this file so that [[setVehicleHandling]] works correctly. [[Handling.cfg|Click here]]'' if you want to load custom handling.cfg files.&lt;br /&gt;
* &amp;quot;data/maps&amp;quot; - this applies to all files within this folder&lt;br /&gt;
* &amp;quot;data/melee.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/object.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/peds.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/pedstats.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/plants.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/procobj.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/surface.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/surfinfo.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/timecyc.dat&amp;quot; - minimum server version 1.5.6-9.18322&lt;br /&gt;
* &amp;quot;data/txdcut.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/vehicles.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/water1.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/water.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/weapon.dat&amp;quot;&lt;br /&gt;
* &amp;quot;models/coll/weapons.col&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;hideac&amp;gt;&amp;lt;/hideac&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
You can use this setting in mtaserver.conf to hide the AC info from the client, showing the following line upon join:&lt;br /&gt;
 Server AC info: [Undisclosed]&lt;br /&gt;
&lt;br /&gt;
Values: 0 - disabled, 1 - enabled; default value: 0.&lt;br /&gt;
&lt;br /&gt;
=Client=&lt;br /&gt;
When joining a server, the server AC info is displayed in the client console (F8), for example:&lt;br /&gt;
&lt;br /&gt;
 Server AC Info: [Allowed client files: None] [Disabled AC: None] [Enabled SD: None]&lt;br /&gt;
&lt;br /&gt;
''Disabled AC'' contains the contents of the server setting from &amp;lt;code&amp;gt;&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;&amp;lt;/code&amp;gt;, and ''Enabled SD'' contains the contents of the server setting from &amp;lt;code&amp;gt;&amp;lt;enablesd&amp;gt;&amp;lt;/enablesd&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Allowed client files contains numbers to indicate which client files the server allows to be modified. The numbers represent these files:&lt;br /&gt;
&lt;br /&gt;
*1 - &amp;quot;data/carmods.dat&amp;quot;&lt;br /&gt;
*2 - &amp;quot;data/animgrp.dat&amp;quot;&lt;br /&gt;
*4 - &amp;quot;data/ar_stats.dat&amp;quot;&lt;br /&gt;
*5 - &amp;quot;data/melee.dat&amp;quot;&lt;br /&gt;
*6 - &amp;quot;data/clothes.dat&amp;quot;&lt;br /&gt;
*7 - &amp;quot;data/object.dat&amp;quot;&lt;br /&gt;
*8 - &amp;quot;data/default.dat&amp;quot;&lt;br /&gt;
*9 - &amp;quot;data/surface.dat&amp;quot;&lt;br /&gt;
*10 - &amp;quot;data/default.ide&amp;quot;&lt;br /&gt;
*12 - &amp;quot;data/gta.dat&amp;quot;&lt;br /&gt;
*13 - &amp;quot;data/surfinfo.dat&amp;quot;&lt;br /&gt;
*14 - &amp;quot;data/peds.ide&amp;quot;&lt;br /&gt;
*15 - &amp;quot;data/vehicles.ide&amp;quot;&lt;br /&gt;
*16 - &amp;quot;data/pedstats.dat&amp;quot;&lt;br /&gt;
*17 - &amp;quot;data/water.dat&amp;quot;&lt;br /&gt;
*18 - &amp;quot;data/txdcut.ide&amp;quot;&lt;br /&gt;
*19 - &amp;quot;data/water1.dat&amp;quot;&lt;br /&gt;
*20 - &amp;quot;models/coll/weapons.col&amp;quot;&lt;br /&gt;
*21 - &amp;quot;data/weapon.dat&amp;quot;&lt;br /&gt;
*22 - &amp;quot;data/plants.dat&amp;quot;&lt;br /&gt;
*23 - &amp;quot;anim/ped.ifp&amp;quot;&lt;br /&gt;
*24 - &amp;quot;data/furnitur.dat&amp;quot;&lt;br /&gt;
*25 - &amp;quot;data/procobj.dat&amp;quot;&lt;br /&gt;
*26 - &amp;quot;data/maps&amp;quot;&lt;br /&gt;
*27 - &amp;quot;data/timecyc.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' ''If the info is marked &amp;quot;Undisclosed&amp;quot;, it means that the server has decided not to disclose the AC info to the client.''&lt;br /&gt;
&lt;br /&gt;
===Using modified files===&lt;br /&gt;
If you want to use modified data files from your GTA:SA install directory, check this check box:&lt;br /&gt;
&lt;br /&gt;
 Settings -&amp;gt; Multiplayer -&amp;gt; Use customized GTA:SA files&lt;br /&gt;
&lt;br /&gt;
The checkbox only appears if your GTA:SA data files are customized.&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' ''This will restrict your access to some public servers as most do not allow customized data files.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Support]]&lt;br /&gt;
[[ru:Anti-cheat guide]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Anti-cheat_guide&amp;diff=67656</id>
		<title>Anti-cheat guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Anti-cheat_guide&amp;diff=67656"/>
		<updated>2020-10-31T04:29:02Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: improve grammar, clarity and english&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide explains how you can fine-tune MTA's anti-cheat on your server using [[Server_mtaserver.conf|'''mtaserver.conf''']]. It does not allow players to modify their own AC settings.&lt;br /&gt;
&lt;br /&gt;
An anti-cheat helper resource, '''acpanel''', is included as a default resource. This shows the current anti-cheat status of your server, along with an option to keep your clients up to date and a basic implementation of [[onPlayerModInfo]] to block modified img files.&lt;br /&gt;
&lt;br /&gt;
You may want to fine-tune AC to prevent certain players have from having an unfair advantage or to ensure competitive integrity. The settings you provide depends entirely on the kind of server you run. Here are some examples on what can be achieved:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Alice tries to ram the vehicle of Eve, and Alice can clearly see the collision, but Eve's vehicle is not really moving.&lt;br /&gt;
: '''Explanation:''' Eve has changed their vehicle model to a much smaller vehicle, or a model with a tiny hitbox or (nearly absent) collisions.&lt;br /&gt;
: '''Solution:''' Disallow non-standard gta3.img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Eve seems to be using wallhacks! She even seems to even be shooting through them!&lt;br /&gt;
:  '''Explanation:''' Eve has replaced buildings so that they are either invisible (textures) or tiny (models).&lt;br /&gt;
:  '''Solution:''' Disallow non-standard gta3.img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Mallory seems to be solving complex maths questions instantly! It should take at least a couple of seconds... for humans.&lt;br /&gt;
:  '''Explanation:''' Mallory is injecting keyboard input via something like AutoHotkey&lt;br /&gt;
:  '''Solution:''' Enable SD #31 to prevent users from injecting keyboard input. You can use SD #32 for injected mouse input (e.g. for scripts that require natural skill from mouse input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Mallory seems to be spamming my commands and GUI... and it lags my entire server!&lt;br /&gt;
: '''Explanation:''' You are running expensive user-initiated code without rate limiting players.&lt;br /&gt;
: '''Solution:''' You should write code that prevents players from spamming certain actions.&lt;br /&gt;
: '''Lazy Solution:''' Enable SD #31/#32 to make it more difficult for players to spam certain actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;==&lt;br /&gt;
Comma separated list of disabled anti-cheats. This setting disables specific AC codes. If a detection is triggered and it's not disabled by the server, a player will get kicked and be shown the AC code corresponding to that detection. '''Note that the list is incomplete''' (it doesn't cover all AC codes that exist) because not all AC codes can be disabled for security reasons, e.g they are critical part of the anti-cheat and likewise we will also never provide information about what exactly they mean.&lt;br /&gt;
&lt;br /&gt;
'''DISCLAIMER''':&lt;br /&gt;
Please note that disableac will only void the AC # kick for using GTA singleplayer cheats and some very basic, outdated and patched MP cheats (such as s0beit). Hacks &amp;amp; cheats designed for MTA or other general hacking tools may still trigger a Global ban or kick.&lt;br /&gt;
If you try to use a typical MTA cheat or hacktool under the belief using disableAC will save your day, and get banned for a while, it's your own fault, regardless of this setting being used to disable any of the AC classifications that it may fall under.&lt;br /&gt;
&lt;br /&gt;
There is also a good chance that disabling certain detections won't enable your players to (even) use the majority of 'basic' GTA:SA trainers, but result in a kick only.&lt;br /&gt;
Due to the current state of MTA anti-cheat, and its advanced heuristics, it's simply not feasible to try and create a freehaven for cheaters. You can experiment, but we don't recommend using '''disableac''' for these reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''': With '''trainer''', cheats (for MTA or GTA) or forbidden cheat tools are meant. This is especially true for AC #4.&lt;br /&gt;
Please note that getting kicked for anything listed here isn't neccesarily (intended) hacking, someone can open hacktools that they plan to use for another game, while both that game and MTA are opened, and be kicked.&lt;br /&gt;
It's also possible that someone isn't aware of certain software containing hack/tamper features (making it prohibited) when they run it and get kicked.&lt;br /&gt;
Basically, (the intent of) cheating on MTA or your server can never be proven by triggering these detections alone.&lt;br /&gt;
&lt;br /&gt;
Available codes are:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Code for &amp;lt;disableac&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Displayed on detect&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Required server version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Required &amp;lt;minclientversion&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Notes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #1&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Classic health/armour hack detector&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #2&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Corrupted dll files&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #4&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects presence of trainer. This is the most common AC code for attempted cheating, mostly with cheats designed for MTA.&lt;br /&gt;
Note: disabling this code is unlikely to produce expected results, in accordance with what is mentioned in the &amp;quot;DISCLAIMER&amp;quot; part. &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #5&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer.        &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''6'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer incl.: player movement, health/damage, weapons, money, gamespeed, game cheats, aimbot   &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''7'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer.   &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''8'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #8&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects unauthorized mods&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot;|'''11'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #11&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| More trainers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #11&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Dll injector / Trainer&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''13'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #13&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Data files issue&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''17'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #17&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Speed / wall hacks&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot;|'''21'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #21&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| More trainers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #21&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Custom gta_sa.exe&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''26'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #26&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05858 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Anti-cheat component blocked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;enablesd&amp;gt;&amp;lt;/enablesd&amp;gt;==&lt;br /&gt;
Comma separated list of enabled Special Detections (SD #). A special detection is a type of anti-cheat for (usually) harmless game modifications. Competitive servers or servers dealing with a certain problem structurally may wish to enable special detections, but most servers should leave this setting blank. Available codes are:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Code for &amp;lt;enablesd&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Displayed on detect&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Required server version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Required &amp;lt;minclientversion&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''12'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #12&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow custom D3D9.DLL&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''14'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #14&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04605&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04605&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow virtual machines such as VMWare&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''15'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #15&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04791&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04791&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow disabled driver signing &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''16'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #16&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow disabled anti-cheat components. This is triggered when an anti-cheat component can not start. It is usually due to some problem with the PC and might be fixed by a reboot. Can also be triggered by a virus.&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''20'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #20&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow non-standard gta3.img or gta_int.img (For servers not using [[onPlayerModInfo]])&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''22'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #22&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow resource download errors/corruption (Lua script files)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''23'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #23&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.2-9.07911&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow resource download errors/corruption (Non-Lua files e.g. png,dff)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''28'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #28&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow Linux Wine&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''31'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #31&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3-9.11204&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Ignore injected keyboard inputs (e.g. from AutoHotkey, macro's and on screen keyboard)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''32'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #32&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.4-9.11528&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Ignore injected mouse button inputs and movement (this detection can prevent an ambigious type of aim hacks (bullet spread/recoil manipulation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''33'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #33&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow software of the category 'Net limiter' (ideal for lagswitching or causing structural lag, but may also be used for benign purposes)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''34'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #34&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow internet café users ('''only''' use as last resort to combat mass ban evasion using café PC's)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''35'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #35&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| &amp;lt;br/&amp;gt;Disallow certain software with &amp;quot;FPS locking&amp;quot; capabilities, for example Fraps recorder.&amp;lt;br/&amp;gt;&lt;br /&gt;
Particularly racing gamemodes are impacted by players that use FPS lock hotkey at times they need an unfair advantage (like, to drive through a loop faster) or a small speed boost. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt; '''Note''': it would be better if you use this SD in a custom implementation only (using [[onPlayerACInfo]]) instead of kick in mtaserver.conf. For example so that it would only kick when they approach a loop, or are playing a map sensitive to this abuse. Because you'll have to tread carefully, since Fraps is also a popular recording tool. &amp;lt;br/&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''36'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #36&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow AutoHotKey base application (used to load .ahk files) and Ahk2Exe binaries with embedded scripts.&lt;br /&gt;
&lt;br /&gt;
The possibilities for AutoHotKey are endless and it would be futile for the MTA anti-cheat or scripts to try to cover every case. MTA does not scan the content of .ahk files loaded into the AutoHotKey application, so this special detection allows server owners to stop all uses of AutoHotKey.&lt;br /&gt;
&lt;br /&gt;
Most servers won't need this (cancelling the input sent into GTA with SD #31 and #32 would be sufficient), but some competitive servers have problems with AutoHotKey's interaction with Windows rather than with MTA (which is already ignored by the game). Examples of these toggling firewall rules for lag switching, or toggling of effects that can cause small freezes.&lt;br /&gt;
&lt;br /&gt;
The abuse scripts currently in circulation are mostly AHK-based, so keep in mind that they can easily migrate to a different system. MTA isn't guaranteed to add an SD for that as well. If you're experiencing abuse that consists of lag switching, a scripted solution (such as [https://github.com/Lpsd/ConGuard ConGuard]) is the recommended approach.&lt;br /&gt;
&lt;br /&gt;
Finally, remember that the AutoHotKey base application has many legitimate uses, so only use this when you have no other options for ensuring competitive balance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are constantly working on keeping the definitions for above SD (special detections) up-to-date, so as to ensure all violating software or circumstances that you opt-in to disable gets detected once used. While we are pro-actively checking if new or unknown software/tools are still being detected under the same signature, it's possible that something slips through the cracks. Therefore, you can help us if you come across anything that should be detectable using SD # but is not currently; send a forum PM to Dutchman101 or ccw with your report.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;client_file name=&amp;quot;data/carmods.dat&amp;quot; verify=&amp;quot;0&amp;quot;/&amp;gt;==&lt;br /&gt;
By default, clients may not join a server if they have customized GTA:SA data files. Adding one or more of the above lines excludes files from validation. The file names that can be used are:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;anim/ped.ifp&amp;quot;&lt;br /&gt;
* &amp;quot;data/animgrp.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/ar_stats.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/carmods.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/clothes.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/default.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/default.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/furnitur.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/gta.dat&amp;quot;&lt;br /&gt;
* &amp;lt;strike&amp;gt;&amp;quot;data/handling.cfg&amp;quot;&amp;lt;/strike&amp;gt; - this is unavailable because MTA always ignores this file so that [[setVehicleHandling]] works correctly. [[Handling.cfg|Click here]]'' if you want to load custom handling.cfg files.&lt;br /&gt;
* &amp;quot;data/maps&amp;quot; - this applies to all files within this folder&lt;br /&gt;
* &amp;quot;data/melee.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/object.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/peds.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/pedstats.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/plants.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/procobj.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/surface.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/surfinfo.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/timecyc.dat&amp;quot; - minimum server version 1.5.6-9.18322&lt;br /&gt;
* &amp;quot;data/txdcut.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/vehicles.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/water1.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/water.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/weapon.dat&amp;quot;&lt;br /&gt;
* &amp;quot;models/coll/weapons.col&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;hideac&amp;gt;&amp;lt;/hideac&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
You can use this setting in mtaserver.conf to hide the AC info from the client, showing the following line upon join:&lt;br /&gt;
 Server AC info: [Undisclosed]&lt;br /&gt;
&lt;br /&gt;
Values: 0 - disabled, 1 - enabled; default value: 0.&lt;br /&gt;
&lt;br /&gt;
=Client=&lt;br /&gt;
When joining a server, the server AC info is displayed in the client console (F8), for example:&lt;br /&gt;
&lt;br /&gt;
 Server AC Info: [Allowed client files: None] [Disabled AC: None] [Enabled SD: None]&lt;br /&gt;
&lt;br /&gt;
''Disabled AC'' contains the contents of the server setting from &amp;lt;code&amp;gt;&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;&amp;lt;/code&amp;gt;, and ''Enabled SD'' contains the contents of the server setting from &amp;lt;code&amp;gt;&amp;lt;enablesd&amp;gt;&amp;lt;/enablesd&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Allowed client files contains numbers to indicate which client files the server allows to be modified. The numbers represent these files:&lt;br /&gt;
&lt;br /&gt;
*1 - &amp;quot;data/carmods.dat&amp;quot;&lt;br /&gt;
*2 - &amp;quot;data/animgrp.dat&amp;quot;&lt;br /&gt;
*4 - &amp;quot;data/ar_stats.dat&amp;quot;&lt;br /&gt;
*5 - &amp;quot;data/melee.dat&amp;quot;&lt;br /&gt;
*6 - &amp;quot;data/clothes.dat&amp;quot;&lt;br /&gt;
*7 - &amp;quot;data/object.dat&amp;quot;&lt;br /&gt;
*8 - &amp;quot;data/default.dat&amp;quot;&lt;br /&gt;
*9 - &amp;quot;data/surface.dat&amp;quot;&lt;br /&gt;
*10 - &amp;quot;data/default.ide&amp;quot;&lt;br /&gt;
*12 - &amp;quot;data/gta.dat&amp;quot;&lt;br /&gt;
*13 - &amp;quot;data/surfinfo.dat&amp;quot;&lt;br /&gt;
*14 - &amp;quot;data/peds.ide&amp;quot;&lt;br /&gt;
*15 - &amp;quot;data/vehicles.ide&amp;quot;&lt;br /&gt;
*16 - &amp;quot;data/pedstats.dat&amp;quot;&lt;br /&gt;
*17 - &amp;quot;data/water.dat&amp;quot;&lt;br /&gt;
*18 - &amp;quot;data/txdcut.ide&amp;quot;&lt;br /&gt;
*19 - &amp;quot;data/water1.dat&amp;quot;&lt;br /&gt;
*20 - &amp;quot;models/coll/weapons.col&amp;quot;&lt;br /&gt;
*21 - &amp;quot;data/weapon.dat&amp;quot;&lt;br /&gt;
*22 - &amp;quot;data/plants.dat&amp;quot;&lt;br /&gt;
*23 - &amp;quot;anim/ped.ifp&amp;quot;&lt;br /&gt;
*24 - &amp;quot;data/furnitur.dat&amp;quot;&lt;br /&gt;
*25 - &amp;quot;data/procobj.dat&amp;quot;&lt;br /&gt;
*26 - &amp;quot;data/maps&amp;quot;&lt;br /&gt;
*27 - &amp;quot;data/timecyc.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' ''If the info is marked &amp;quot;Undisclosed&amp;quot;, it means that the server has decided not to disclose the AC info to the client.''&lt;br /&gt;
&lt;br /&gt;
===Using modified files===&lt;br /&gt;
If you want to use modified data files from your GTA:SA install directory, check this check box:&lt;br /&gt;
&lt;br /&gt;
 Settings -&amp;gt; Multiplayer -&amp;gt; Use customized GTA:SA files&lt;br /&gt;
&lt;br /&gt;
The checkbox only appears if your GTA:SA data files are customized.&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' ''This will restrict your access to some public servers as most do not allow customized data files.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Support]]&lt;br /&gt;
[[ru:Anti-cheat guide]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetKeyboardLayout&amp;diff=67565</id>
		<title>GetKeyboardLayout</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetKeyboardLayout&amp;diff=67565"/>
		<updated>2020-10-18T11:23:34Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: copy from https://docs.microsoft.com/en-us/windows/win32/intl/locale-ireadinglayout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Client function}}&lt;br /&gt;
{{New feature/item|3.0157|1.5.6|18866|This function gets the player's keyboard layout settings, which they are currently (keyboard layout can be changed at any moment) using at the time of invocation.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;table getKeyboardLayout ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a ''table'' with keyboard layout properties:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;cellpadding: 10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property || Values and description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readingLayout&amp;lt;/code&amp;gt; ||&lt;br /&gt;
    {| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
    |-&lt;br /&gt;
    | &amp;lt;code&amp;gt;&amp;quot;ltr&amp;quot;&amp;lt;/code&amp;gt; || Left to right (English)&lt;br /&gt;
    |-&lt;br /&gt;
    | &amp;lt;code&amp;gt;&amp;quot;rtl&amp;quot;&amp;lt;/code&amp;gt; || Right to left (Arabic, Hebrew)&lt;br /&gt;
    |-&lt;br /&gt;
    | &amp;lt;code&amp;gt;&amp;quot;ttb-rtl-ltr&amp;quot;&amp;lt;/code&amp;gt; || Either read vertically from top to bottom with columns going from right to left, or read in horizontal rows from left to right, as for the Japanese (Japan) locale.&lt;br /&gt;
    |-&lt;br /&gt;
    | &amp;lt;code&amp;gt;&amp;quot;ttb-ltr&amp;quot;&amp;lt;/code&amp;gt; || Read vertically from top to bottom with columns going from left to right, as for the Mongolian (Mongolian) locale.&lt;br /&gt;
    |}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;layout&amp;quot;, function()&lt;br /&gt;
    outputConsole( inspect( getKeyboardLayout() ) )--output keyboard layout in console (F8)&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;
{{Client_utility_functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Drawing_functions&amp;diff=67558</id>
		<title>Template:Drawing functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Drawing_functions&amp;diff=67558"/>
		<updated>2020-10-16T18:32:10Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[dxConvertPixels]]&lt;br /&gt;
*[[dxCreateFont]]&lt;br /&gt;
*[[dxCreateRenderTarget]]&lt;br /&gt;
*[[dxCreateScreenSource]]&lt;br /&gt;
*[[dxCreateShader]]&lt;br /&gt;
*[[dxCreateTexture]]&lt;br /&gt;
{{New items|3.0156|1.5.5|&lt;br /&gt;
*[[dxDrawCircle]]&lt;br /&gt;
|13977}}&lt;br /&gt;
*[[dxDrawImage]]&lt;br /&gt;
*[[dxDrawImageSection]]&lt;br /&gt;
*[[dxDrawLine]]&lt;br /&gt;
*[[dxDrawLine3D]]&lt;br /&gt;
*[[dxDrawMaterialLine3D]]&lt;br /&gt;
{{New items|3.0157|1.5.6|&lt;br /&gt;
*[[dxDrawMaterialPrimitive]]&lt;br /&gt;
*[[dxDrawPrimitive]]&lt;br /&gt;
|14203}}&lt;br /&gt;
{{New items|3.0157|1.5.7|&lt;br /&gt;
*[[dxDrawMaterialPrimitive3D]]&lt;br /&gt;
*[[dxDrawPrimitive3D]]&lt;br /&gt;
|19626}}&lt;br /&gt;
*[[dxDrawMaterialSectionLine3D]]&lt;br /&gt;
*[[dxDrawRectangle]]&lt;br /&gt;
*[[dxDrawText]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[dxDrawWiredSphere]]&lt;br /&gt;
|20328}}&lt;br /&gt;
*[[dxGetBlendMode]]&lt;br /&gt;
*[[dxGetFontHeight]]&lt;br /&gt;
*[[dxGetMaterialSize]]&lt;br /&gt;
*[[dxGetPixelColor]]&lt;br /&gt;
*[[dxGetPixelsSize]]&lt;br /&gt;
*[[dxGetPixelsFormat]]&lt;br /&gt;
*[[dxGetStatus]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[dxGetTextSize]]&lt;br /&gt;
|20447}}&lt;br /&gt;
*[[dxGetTextWidth]]&lt;br /&gt;
*[[dxGetTexturePixels]]&lt;br /&gt;
*[[dxIsAspectRatioAdjustmentEnabled]]&lt;br /&gt;
*[[dxSetAspectRatioAdjustmentEnabled]]&lt;br /&gt;
*[[dxSetBlendMode]]&lt;br /&gt;
*[[dxSetPixelColor]]&lt;br /&gt;
*[[dxSetRenderTarget]]&lt;br /&gt;
*[[dxSetShaderValue]]&lt;br /&gt;
*[[dxSetShaderTessellation]]&lt;br /&gt;
*[[dxSetShaderTransform]]&lt;br /&gt;
*[[dxSetTestMode]]&lt;br /&gt;
*[[dxSetTextureEdge]]&lt;br /&gt;
*[[dxSetTexturePixels]]&lt;br /&gt;
*[[dxUpdateScreenSource]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetAccountName&amp;diff=67556</id>
		<title>SetAccountName</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetAccountName&amp;diff=67556"/>
		<updated>2020-10-16T16:44:19Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New feature/item|3.0155|1.5.5|11747|&lt;br /&gt;
This function sets the name of an [[account]].&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
bool setAccountName ( account theAccount, string name [, bool allowCaseVariations = false] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[account]]:setName|name|getAccountName}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''theAccount:''' The account you wish to change the name.&lt;br /&gt;
*'''name:''' The new name.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''allowCaseVariations:''' Whether the username is case sensitive (if this is set to true, usernames &amp;quot;Bob&amp;quot; and &amp;quot;bob&amp;quot; will refer to different accounts)&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a ''true'' if the account name was set, ''false'' if an invalid argument was specified.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
Change the name of an account.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addCommandHandler(&amp;quot;changeaccountname&amp;quot;, function(player, _, oldname, newname)&lt;br /&gt;
    if not oldname or not newname then&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
    local account = getAccount(oldname)&lt;br /&gt;
    if not account then&lt;br /&gt;
        return &lt;br /&gt;
    end&lt;br /&gt;
    setAccountName(account, newname)&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>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySFX3D&amp;diff=67548</id>
		<title>PlaySFX3D</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySFX3D&amp;diff=67548"/>
		<updated>2020-10-12T20:18:43Z</updated>

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

		<summary type="html">&lt;p&gt;Qaisjp: fix rev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20307|&lt;br /&gt;
Aborts a [[FetchRemote|fetchRemote]] or [[CallRemote|callRemote]] request.&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 abortRemoteRequest( request theRequest )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''theRequest''': returned from [[FetchRemote|fetchRemote]], [[CallRemote|callRemote]] or [[GetRemoteRequests|getRemoteRequests]]&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns true on success, false when invalid request was provided&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
this example aborts all pending requests of currently running resource.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CMD_abortRequests()&lt;br /&gt;
    local requests = getRemoteRequests()&lt;br /&gt;
	&lt;br /&gt;
    for _, request in ipairs(requests) do&lt;br /&gt;
        abortRemoteRequest()&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;abortrequests&amp;quot;, CMD_abortRequests)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Requirements|1.5.7-9.20307|1.5.7-9.20307}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Resource functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetRemoteRequestInfo&amp;diff=67503</id>
		<title>GetRemoteRequestInfo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetRemoteRequestInfo&amp;diff=67503"/>
		<updated>2020-10-10T19:52:02Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix rev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20307|&lt;br /&gt;
Gets informations of an [[FetchRemote|fetchRemote]] or [[CallRemote|callRemote]] request info.&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 getRemoteRequestInfo ( request theRequest [, int postDataLength = 0 [, bool includeHeaders = false ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''theRequest''': returned from [[FetchRemote|fetchRemote]], [[CallRemote|callRemote]] or [[GetRemoteRequests|getRemoteRequests]]&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a table when valid, false otherwise&lt;br /&gt;
The table contains:&lt;br /&gt;
*'''bytesReceived:''' A number specifying the amount of data received so far. Zero means the download is queued&lt;br /&gt;
*'''bytesTotal:''' A number specifying the final download size. Will be zero if the remote HTTP server has not set the 'Content-Length' header&lt;br /&gt;
*'''currentAttempt:''' A number specifying the current connection attempt&lt;br /&gt;
*'''type:''' A string specifying either &amp;quot;fetch&amp;quot; or &amp;quot;call&amp;quot;&lt;br /&gt;
*'''url:''' A string specifying the URL&lt;br /&gt;
*'''resource:''' The resource which started the request, or false if the resource has since been stopped/restarted&lt;br /&gt;
*'''queue:''' A string specifying the queue name&lt;br /&gt;
*'''method:''' A string specifying the HTTP method. e.g. &amp;quot;GET&amp;quot; or &amp;quot;POST&amp;quot;&lt;br /&gt;
*'''connectionAttempts:''' A number specifying max number connection attempts as declared in the fetchRemote call&lt;br /&gt;
*'''connectionTimeout:''' A number specifying connection attempt timeout as declared in the fetchRemote call&lt;br /&gt;
*'''postData:''' A string containing the request post data as declared in the fetchRemote call&lt;br /&gt;
*'''headers:''' A table containing the request HTTP headers as declared in the fetchRemote call&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 gets infos about all pending requests and prints them in debugscript&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CMD_requestInfo(player, _, resourceName)&lt;br /&gt;
    local res = resourceName and getResourceFromName(resourceName) or not resourceName and nil&lt;br /&gt;
	&lt;br /&gt;
    if(res == false) then&lt;br /&gt;
        outputServerLog(&amp;quot;There is no resource named '&amp;quot; .. resourceName .. &amp;quot;'&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    elseif(res and getResourceState(res) ~= &amp;quot;running&amp;quot;) then&lt;br /&gt;
        outputServerLog(&amp;quot;The provided resource '&amp;quot; .. resourceName .. &amp;quot;' is not running&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
    local requests = getRemoteRequests(res)&lt;br /&gt;
	&lt;br /&gt;
    for _, request in ipairs(requests) do&lt;br /&gt;
        local requestInfo = getRemoteRequestInfo(request)&lt;br /&gt;
		&lt;br /&gt;
        if(requestInfo) then&lt;br /&gt;
            iprint(requestInfo)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;requestinfo&amp;quot;, CMD_requestInfo)&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;
This example gets infos about all pending requests and prints them in debugscript&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CMD_requestInfo(player, _, resourceName)&lt;br /&gt;
    local res = resourceName and getResourceFromName(resourceName) or not resourceName and nil&lt;br /&gt;
	&lt;br /&gt;
    if(res == false) then&lt;br /&gt;
        outputChatBox(&amp;quot;There is no resource named '&amp;quot; .. resourceName .. &amp;quot;'&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    elseif(res and getResourceState(res) ~= &amp;quot;running&amp;quot;) then&lt;br /&gt;
        outputChatBox(&amp;quot;The provided resource '&amp;quot; .. resourceName .. &amp;quot;' is not running&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
	&lt;br /&gt;
    local requests = getRemoteRequests(res)&lt;br /&gt;
	&lt;br /&gt;
    for _, request in ipairs(requests) do&lt;br /&gt;
        local requestInfo = getRemoteRequestInfo(request)&lt;br /&gt;
		&lt;br /&gt;
        if(requestInfo) then&lt;br /&gt;
            iprint(requestInfo)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;requestinfo&amp;quot;, CMD_requestInfo)&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;
{{Requirements|1.5.7-9.20307|1.5.7-9.20307}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Resource functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetRemoteRequests&amp;diff=67502</id>
		<title>GetRemoteRequests</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetRemoteRequests&amp;diff=67502"/>
		<updated>2020-10-10T19:51:53Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix rev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Server client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20307|&lt;br /&gt;
Gets all [[FetchRemote|fetchRemote]] and [[CallRemote|callRemote]] requests currently running.&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 getRemoteRequests ( [ resource theResource = nil ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
* '''theResource''': the resource to get all requests from&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a table with all requests, false if an invalid resource was provided&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 prints how many request are currently pending.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CMD_requestInfo(player, _, resourceName)&lt;br /&gt;
    local res = resourceName and getResourceFromName(resourceName) or not resourceName and nil&lt;br /&gt;
	&lt;br /&gt;
    if(res == false) then&lt;br /&gt;
        outputChatBox(&amp;quot;There is no resource named '&amp;quot; .. resourceName .. &amp;quot;'&amp;quot;, player)&lt;br /&gt;
        return&lt;br /&gt;
    elseif(res and getResourceState(res) ~= &amp;quot;running&amp;quot;) then&lt;br /&gt;
        outputChatBox(&amp;quot;The provided resource '&amp;quot; .. resourceName .. &amp;quot;' is not running&amp;quot;, player)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local requests = getRemoteRequests(res)&lt;br /&gt;
	&lt;br /&gt;
    outputChatBox((&amp;quot;There are %d request%s running&amp;quot;):format(#requests, #requests == 1 and '' or 's'), player)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;requestinfo&amp;quot;, CMD_requestInfo)&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;
This example prints how many request are currently pending.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function CMD_requestInfo(_, resourceName)&lt;br /&gt;
    local res = resourceName and getResourceFromName(resourceName) or not resourceName and nil&lt;br /&gt;
	&lt;br /&gt;
    if(res == false) then&lt;br /&gt;
        outputChatBox(&amp;quot;There is no resource named '&amp;quot; .. resourceName .. &amp;quot;'&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    elseif(res and getResourceState(res) ~= &amp;quot;running&amp;quot;) then&lt;br /&gt;
        outputChatBox(&amp;quot;The provided resource '&amp;quot; .. resourceName .. &amp;quot;' is not running&amp;quot;)&lt;br /&gt;
        return&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local requests = getRemoteRequests(res)&lt;br /&gt;
	&lt;br /&gt;
    outputChatBox((&amp;quot;There are %d request%s running&amp;quot;):format(#requests, #requests == 1 and '' or 's'))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;requestinfo&amp;quot;, CMD_requestInfo)&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;
{{Requirements|1.5.7-9.20307|1.5.7-9.20307}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Resource functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Resource_functions&amp;diff=67501</id>
		<title>Template:Resource functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Resource_functions&amp;diff=67501"/>
		<updated>2020-10-10T19:50:06Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[addResourceConfig]]&lt;br /&gt;
*[[addResourceMap]]&lt;br /&gt;
*[[call]]&lt;br /&gt;
*[[callRemote]]&lt;br /&gt;
*[[copyResource]]&lt;br /&gt;
*[[createResource]]&lt;br /&gt;
*[[deleteResource]]&lt;br /&gt;
*[[fetchRemote]]&lt;br /&gt;
*[[getResourceACLRequests]]&lt;br /&gt;
*[[getResourceConfig]]&lt;br /&gt;
*[[getResourceDynamicElementRoot]]&lt;br /&gt;
*[[getResourceExportedFunctions]]&lt;br /&gt;
*[[getResourceFromName]]&lt;br /&gt;
*[[getResourceInfo]]&lt;br /&gt;
*[[getResourceLastStartTime]]&lt;br /&gt;
*[[getResourceLoadFailureReason]]&lt;br /&gt;
*[[getResourceLoadTime]]&lt;br /&gt;
*[[getResourceMapRootElement]]&lt;br /&gt;
*[[getResourceName]]&lt;br /&gt;
*[[getResourceOrganizationalPath]]&lt;br /&gt;
*[[getResourceRootElement]]&lt;br /&gt;
*[[getResourceState]]&lt;br /&gt;
*[[getResources]]&lt;br /&gt;
*[[getThisResource]]&lt;br /&gt;
*[[isResourceArchived]]&lt;br /&gt;
{{New items|3.0160|1.5.7|&lt;br /&gt;
* [[isResourceProtected]]&lt;br /&gt;
|20468}}&lt;br /&gt;
*[[refreshResources]]&lt;br /&gt;
*[[removeResourceFile]]&lt;br /&gt;
*[[renameResource]]&lt;br /&gt;
*[[restartResource]]&lt;br /&gt;
*[[setResourceInfo]]&lt;br /&gt;
*[[startResource]]&lt;br /&gt;
*[[stopResource]]&lt;br /&gt;
*[[updateResourceACLRequest]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[getRemoteRequests]]&lt;br /&gt;
*[[getRemoteRequestInfo]]&lt;br /&gt;
*[[abortRemoteRequest]]&lt;br /&gt;
|20307|}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Client_resource_functions&amp;diff=67500</id>
		<title>Template:Client resource functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Client_resource_functions&amp;diff=67500"/>
		<updated>2020-10-10T19:45:21Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[call]]&lt;br /&gt;
*[[fetchRemote]]&lt;br /&gt;
*[[getResourceConfig]]&lt;br /&gt;
*[[getResourceDynamicElementRoot]]&lt;br /&gt;
*[[getResourceExportedFunctions]]&lt;br /&gt;
*[[getResourceFromName]]&lt;br /&gt;
*[[getResourceGUIElement]]&lt;br /&gt;
*[[getResourceName]]&lt;br /&gt;
*[[getResourceRootElement]]&lt;br /&gt;
*[[getResourceState]]&lt;br /&gt;
*[[getThisResource]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[getRemoteRequests]]&lt;br /&gt;
*[[getRemoteRequestInfo]]&lt;br /&gt;
*[[abortRemoteRequest]]&lt;br /&gt;
|20307|}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Client_resource_functions&amp;diff=67499</id>
		<title>Template:Client resource functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Client_resource_functions&amp;diff=67499"/>
		<updated>2020-10-10T19:45:12Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[call]]&lt;br /&gt;
*[[fetchRemote]]&lt;br /&gt;
*[[getResourceConfig]]&lt;br /&gt;
*[[getResourceDynamicElementRoot]]&lt;br /&gt;
*[[getResourceExportedFunctions]]&lt;br /&gt;
*[[getResourceFromName]]&lt;br /&gt;
*[[getResourceGUIElement]]&lt;br /&gt;
*[[getResourceName]]&lt;br /&gt;
*[[getResourceRootElement]]&lt;br /&gt;
*[[getResourceState]]&lt;br /&gt;
*[[getThisResource]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[getRemoteRequests]]&lt;br /&gt;
*[[getRemoteRequestInfo]]&lt;br /&gt;
*[[abortRemoteRequest]]&lt;br /&gt;
20307|}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySound&amp;diff=67498</id>
		<title>PlaySound</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySound&amp;diff=67498"/>
		<updated>2020-10-10T19:33:31Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix rev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
Creates a [[sound]] [[element]] and plays it immediately after creation for the local player.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Note|&lt;br /&gt;
*The only supported audio formats are MP3, WAV, OGG, RIFF, MOD, XM, IT, S3M and PLS (e.g. Webstream).&lt;br /&gt;
*For performance reasons, when using playSound for effects that will be played lots (i.e. weapon fire), it is recommend that you convert your audio file to a one channel (mono) WAV with sample rate of 22050 Hz or less. Also consider adding a limit on how often the effect can be played e.g. once every 50ms.}}&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;element playSound ( string soundPath, [ bool looped = false, bool throttled = true ] )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[Sound]]}}&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''soundPath:''' the [[filepath]] or URL (http://, https:// or ftp://) of the sound file you want to play. ('''Note:''' Playing sound files from other resources requires the target resource to be in the running state)&lt;br /&gt;
{{New items|5.0157|1.5.7|&lt;br /&gt;
*'''soundPath:''' Can also be raw sound data.&lt;br /&gt;
|20460}}&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''looped:''' a [[boolean]] representing whether the sound will be looped. To loop the sound, use ''true''. Loop is not available for streaming sounds, only for sound files.&lt;br /&gt;
{{New feature/item|3.0150|1.5||&lt;br /&gt;
*'''throttled:''' a [[boolean]] representing whether the sound will be throttled (i.e. given reduced download bandwidth). To throttle the sound, use ''true''. Sounds will be throttled per default and only for URLs.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a [[sound]] [[element]] if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function wasted (killer, weapon, bodypart) &lt;br /&gt;
	local sound = playSound(&amp;quot;sounds/wasted.mp3&amp;quot;) --Play wasted.mp3 from the sounds folder&lt;br /&gt;
	setSoundVolume(sound, 0.5) -- set the sound volume to 50%&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addEventHandler(&amp;quot;onClientPlayerWasted&amp;quot;, localPlayer, wasted) --add the event handler&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_audio_functions}}&lt;br /&gt;
[[HU:playSound]]&lt;br /&gt;
[[AR:playSound]]&lt;br /&gt;
[[DE:playSound]]&lt;br /&gt;
[[RO:playSound]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PlaySound3D&amp;diff=67497</id>
		<title>PlaySound3D</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PlaySound3D&amp;diff=67497"/>
		<updated>2020-10-10T19:33:17Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix rev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
Creates a [[sound]] [[element]] in the GTA world and plays it immediately after creation for the local player. [[setElementPosition]] can be used to move the [[sound]] element around after it has been created. Remember to use [[setElementDimension]] after creating the sound to play it outside of dimension 0.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
{{Note|&lt;br /&gt;
*The only supported audio formats are MP3, WAV, OGG, RIFF, MOD, XM, IT and S3M.&lt;br /&gt;
*For performance reasons, when using playSound3D for effects that will be played lots (i.e. weapon fire), it is recommend that you convert your audio file to a one channel (mono) WAV with sample rate of 22050 Hz or less. Also consider adding a limit on how often the effect can be played e.g. once every 50ms.}}&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;element playSound3D ( string soundPath, float x, float y, float z, [ bool looped = false ] )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;element playSound3D ( string soundURL, float x, float y, float z, [ bool looped = false, bool throttled = true ] )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[Sound|Sound3D]]}}&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''soundPath:''' the [[filepath]] to the sound file you want to play. ('''Note:''' Playing sound files from other resources requires the target resource to be in the running state)&lt;br /&gt;
{{New items|5.0157|1.5.7|&lt;br /&gt;
*'''soundPath:''' Can also be raw sound data.&lt;br /&gt;
|20460}}&lt;br /&gt;
*'''soundURL:''' the URL (http://, https:// or ftp://) of the sound file you want to play. (In this version the file does not have to be predefined in the [[meta.xml]])&lt;br /&gt;
*'''x:''' a [[float]]ing point number representing the X coordinate on the map.&lt;br /&gt;
*'''y:''' a [[float]]ing point number representing the Y coordinate on the map.&lt;br /&gt;
*'''z:''' a [[float]]ing point number representing the Z coordinate on the map.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''looped:''' a [[boolean]] representing whether the sound will be looped. To loop the sound, use ''true''.&lt;br /&gt;
{{New feature/item|3.0150|1.5||&lt;br /&gt;
*'''throttled:''' a [[boolean]] representing whether the sound will be throttled (i.e. given reduced download bandwidth). To throttle the sound, use ''true''.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a [[sound]] [[element]] if the sound was successfully created, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example creates a looping sound within a pizza shop. The pizza shop is in san fierro near pier 69&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function onResourceStart()&lt;br /&gt;
	local sound = playSound3D(&amp;quot;sounds/song.mp3&amp;quot;, 373.14, -125.21, 1001, true) &lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientResourceStart&amp;quot;, resourceRoot, onResourceStart)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
This example play internet radio in groove street.&lt;br /&gt;
&amp;lt;section name=&amp;quot;Example 2&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler('onClientResourceStart', resourceRoot,&lt;br /&gt;
	function()&lt;br /&gt;
		local uSound = playSound3D('http://977music.com/itunes/80s.pls', 2498, -1659, 12) &lt;br /&gt;
		setSoundMaxDistance(uSound, 100)&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;
{{Client_audio_functions}}&lt;br /&gt;
[[HU:playSound3D]]&lt;br /&gt;
[[AR:playSound3D]]&lt;br /&gt;
[[DE:playSound3D]]&lt;br /&gt;
[[RU:playSound3D]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Engine_functions&amp;diff=67339</id>
		<title>Template:Engine functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Engine_functions&amp;diff=67339"/>
		<updated>2020-08-30T13:24:55Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: comment out engine model visible time&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[engineApplyShaderToWorldTexture]]&lt;br /&gt;
* [[engineGetModelIDFromName]]&lt;br /&gt;
* [[engineGetModelLODDistance]]&lt;br /&gt;
* [[engineGetModelNameFromID]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
* [[engineGetModelPhysicalPropertiesGroup]]&lt;br /&gt;
* [[engineRestoreModelPhysicalPropertiesGroup]]&lt;br /&gt;
* [[engineSetModelPhysicalPropertiesGroup]]&lt;br /&gt;
* [[engineGetObjectGroupPhysicalProperty]]&lt;br /&gt;
* [[engineRestoreObjectGroupPhysicalProperties]]&lt;br /&gt;
* [[engineSetObjectGroupPhysicalProperty]]&lt;br /&gt;
|19626}}&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
* [[engineRequestModel]]&lt;br /&gt;
* [[engineFreeModel]]&lt;br /&gt;
|20147}}&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
* [[engineGetModelTextures]]&lt;br /&gt;
|20416}}&lt;br /&gt;
* [[engineGetModelTextureNames]]&lt;br /&gt;
* [[engineGetVisibleTextureNames]]&lt;br /&gt;
* [[engineImportTXD]]&lt;br /&gt;
* [[engineLoadCOL]]&lt;br /&gt;
* [[engineLoadDFF]]&lt;br /&gt;
* [[engineLoadIFP]]&lt;br /&gt;
* [[engineLoadTXD]]&lt;br /&gt;
* [[engineRemoveShaderFromWorldTexture]]&lt;br /&gt;
* [[engineReplaceAnimation]]&lt;br /&gt;
* [[engineReplaceCOL]]&lt;br /&gt;
* [[engineReplaceModel]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
* [[engineResetModelLODDistance]]&lt;br /&gt;
|20383}}&lt;br /&gt;
* [[engineRestoreAnimation]]&lt;br /&gt;
* [[engineRestoreCOL]]&lt;br /&gt;
* [[engineRestoreModel]]&lt;br /&gt;
* [[engineSetAsynchronousLoading]]&lt;br /&gt;
* [[engineSetModelLODDistance]]&lt;br /&gt;
* [[engineSetSurfaceProperties]]&lt;br /&gt;
* [[engineGetSurfaceProperties]]&lt;br /&gt;
* [[engineResetSurfaceProperties]]&lt;br /&gt;
&amp;lt;!-- {{New items|3.0158|1.5.7|&lt;br /&gt;
* [[engineGetModelVisibleTime]]&lt;br /&gt;
* [[engineSetModelVisibleTime]]&lt;br /&gt;
|20477}} --&amp;gt; &amp;lt;!-- Commented because it was reverted in https://github.com/multitheftauto/mtasa-blue/pull/1588 --&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Character_Skins&amp;diff=67311</id>
		<title>Character Skins</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Character_Skins&amp;diff=67311"/>
		<updated>2020-08-27T18:25:54Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: clarify that the models are ephemeral&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Skins that the player may use (pedestrian skins).&lt;br /&gt;
&lt;br /&gt;
*[[All Skins Page]] - Not recommended for slow Internet&lt;br /&gt;
*[[Special Skins Page]] - New skins available after MTA 1.1&lt;br /&gt;
*[[Gang Skins]]&lt;br /&gt;
*[[Female Skins]]&lt;br /&gt;
*[[Male Skins]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Skin tables:'''&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- a complete table&lt;br /&gt;
allSkins = getValidPedModels()&lt;br /&gt;
-- separate tables&lt;br /&gt;
maleSkins = {0, 1, 2, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 58, 59, 60, 61, 62, 66, 67, 68, 70, 71, 72, 73, 78, 79, 80, 81, 82, 83, 84, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146, 147, 153, 154, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 170, 171, 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 200, 202, 203, 204, 206, 209, 210, 212, 213, 217, 220, 221, 222, 223, 227, 228, 229, 230, 234, 235, 236, 239, 240, 241, 242, 247, 248, 249, 250, 252, 253, 254, 255, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 290, 291, 292, 293, 294, 295, 296, 297, 299, 300, 301, 302, 303, 305, 306, 307, 308, 309, 310, 311, 312}&lt;br /&gt;
femaleSkins = {9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 69, 75, 76, 77, 85, 87, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 139, 140, 141, 145, 148, 150, 151, 152, 157, 169, 172, 178, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 218, 219, 224, 225, 226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251, 256, 257, 263, 298, 304}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{New items|3.0160|1.5.7|&lt;br /&gt;
* The following ID's were unused by GTA:SA, so in MTA:SA using [[engineRequestModel]] it is ''possible'' to allocate the following IDs as character skins. This allows servers to apply skin mods to these new IDs. These are the new 236 ID's that ''can'' be used for new skins:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 273, 289, 329, 340, 382, 383, 398, 399,&lt;br /&gt;
612, 613, 614, 662, 663, 665, 666, 667, 668, 699, 793, 794, 795, 796, 797, 798, 799, 907,&lt;br /&gt;
908, 909, 965, 999, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205,&lt;br /&gt;
1206, 1326, 1573, 1699, 2883, 2884, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 3144,&lt;br /&gt;
3145, 3146, 3147, 3148, 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159,&lt;br /&gt;
3160, 3161, 3162, 3163, 3164, 3165, 3166, 3176, 3177, 3179, 3180, 3181, 3182, 3183,&lt;br /&gt;
3184, 3185, 3186, 3188, 3189, 3190, 3191, 3192, 3194, 3195, 3196, 3197, 3198, 3199, 3200,&lt;br /&gt;
3201, 3202, 3203, 3204, 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3215,&lt;br /&gt;
3216, 3217, 3218, 3219, 3220, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3229, 3230, 3231,&lt;br /&gt;
3232, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3245, 3247, 3248, 3251, 3254,&lt;br /&gt;
3266, 3348, 3349, 3416, 3429, 3610, 3611, 3784, 3870, 3871, 3883, 3889, 3974, 4542, 4543,&lt;br /&gt;
4544, 4545, 4546, 4547, 4548, 4549, 4763, 4764, 4765, 4766, 4767, 4768, 4769, 4770, 4771,&lt;br /&gt;
4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786,&lt;br /&gt;
4787, 4788, 4789, 4790, 4791, 4792, 4793, 4794, 4795, 4796, 4797, 4798, 4799, 4800, 4801,&lt;br /&gt;
4802, 4803, 4804, 4805, 5090, 5104, 5376, 5377, 5378, 5379, 5380, 5381, 5382, 5383,&lt;br /&gt;
5384, 5385, 5386, 5387, 5388, 5389&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Note that [[engineRequestModel]] requires you specify which element type you would like to request an ID for. In the future it may be possible to request vehicle or object IDs, so [[engineRequestModel]] may return some of the above IDs for non-ped models. This means you should be careful about including the above IDs in your code and treating it as a list of valid skins, as those IDs '''are not guaranteed to be valid''' and '''can be reused as vehicle or object model IDs'''.&lt;br /&gt;
|20147}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Sectioned Skin Pages:'''&lt;br /&gt;
----&lt;br /&gt;
*[[Skins Page 1]]: 7, 9-29&lt;br /&gt;
*[[Skins Page 2]]: 30-41, 43-52&lt;br /&gt;
*[[Skins Page 3]]: 53-64, 66-73, 75-76&lt;br /&gt;
*[[Skins Page 4]]: 77-85, 87-99&lt;br /&gt;
*[[Skins Page 5]]: 100-118, 120-122&lt;br /&gt;
*[[Skins Page 6]]: 123-144&lt;br /&gt;
*[[Skins Page 7]]: 145-148, 150-167&lt;br /&gt;
*[[Skins Page 8]]: 168-189&lt;br /&gt;
*[[Skins Page 9]]: 190-207, 209-212&lt;br /&gt;
*[[Skins Page 10]]: 213-234&lt;br /&gt;
*[[Skins Page 11]]: 235-238, 240-257&lt;br /&gt;
*[[Skins Page 12]]: 258-264, 274-288&lt;br /&gt;
*[[Skins Page 13]]: 290-312&lt;br /&gt;
&lt;br /&gt;
==Notes:==&lt;br /&gt;
*Last valid skin ID: 312&lt;br /&gt;
&lt;br /&gt;
*The following pairs of IDs produce same character (1st ID used in lists, 2nd disabled)&lt;br /&gt;
**118:119 &lt;br /&gt;
**148:149&lt;br /&gt;
&lt;br /&gt;
*Non-working IDs&lt;br /&gt;
**3 4 5 6 8 42 65 74 86 119 149 208 273 289&lt;br /&gt;
&lt;br /&gt;
==Skin functions==&lt;br /&gt;
{{Template:Skin_functions}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[id|ID Lists]]&lt;br /&gt;
&lt;br /&gt;
[[hu:Character Skins]]&lt;br /&gt;
[[uk:Character Skins]]&lt;br /&gt;
[[tr:Karakter Tipleri]]&lt;br /&gt;
[[it:Skin Personaggi]]&lt;br /&gt;
[[ru:Character Skins]]&lt;br /&gt;
[[es:Skins de Personajes]]&lt;br /&gt;
[[de:Charakterskins]]&lt;br /&gt;
[[zh-cn:角色皮肤]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ID Lists]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=User_talk:Violence&amp;diff=67293</id>
		<title>User talk:Violence</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=User_talk:Violence&amp;diff=67293"/>
		<updated>2020-08-22T14:16:41Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: /* Please stop translating pages in the main section (English) only to Turkish */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Please stop translating pages in the main section (English) only to Turkish ==&lt;br /&gt;
&lt;br /&gt;
Please stop translating pages in the main section to Turkish. The main section is only intended for English.&lt;br /&gt;
&lt;br /&gt;
For example, please do not do these changes in the main space:&lt;br /&gt;
&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;amp;diff=prev&amp;amp;oldid=67287&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Functions&amp;amp;diff=prev&amp;amp;oldid=67276&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=OnBan&amp;amp;diff=prev&amp;amp;oldid=67280&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;amp;diff=prev&amp;amp;oldid=67277&lt;br /&gt;
&lt;br /&gt;
If you'd like to translate things to Turkish, copy the page content. e.g. From &amp;lt;code&amp;gt;AddAccount&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;TR/AddAccount&amp;lt;/code&amp;gt;, as shown here for Spanish:&lt;br /&gt;
&lt;br /&gt;
* https://wiki.multitheftauto.com/wiki/AddAccount&lt;br /&gt;
* https://wiki.multitheftauto.com/wiki/ES/AddAccount&lt;br /&gt;
&lt;br /&gt;
[[User:Qaisjp|- qaisjp]] ([[User talk:Qaisjp|talk]]) 14:16, 22 August 2020 (UTC)&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=User_talk:Violence&amp;diff=67292</id>
		<title>User talk:Violence</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=User_talk:Violence&amp;diff=67292"/>
		<updated>2020-08-22T14:16:33Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=User_talk:Violence&amp;diff=67291</id>
		<title>User talk:Violence</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=User_talk:Violence&amp;diff=67291"/>
		<updated>2020-08-22T14:16:16Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Created page with &amp;quot;= Please stop translating pages in the main section (English) only to Turkish=  Please stop translating pages in the main section to Turkish. The main section is only intended...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Please stop translating pages in the main section (English) only to Turkish=&lt;br /&gt;
&lt;br /&gt;
Please stop translating pages in the main section to Turkish. The main section is only intended for English.&lt;br /&gt;
&lt;br /&gt;
For example, please do not do these changes in the main space:&lt;br /&gt;
&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;amp;diff=prev&amp;amp;oldid=67287&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Functions&amp;amp;diff=prev&amp;amp;oldid=67276&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=OnBan&amp;amp;diff=prev&amp;amp;oldid=67280&lt;br /&gt;
* https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;amp;diff=prev&amp;amp;oldid=67277&lt;br /&gt;
&lt;br /&gt;
If you'd like to translate things to Turkish, copy the page content. e.g. From &amp;lt;code&amp;gt;AddAccount&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;TR/AddAccount&amp;lt;/code&amp;gt;, as shown here for Spanish:&lt;br /&gt;
&lt;br /&gt;
* https://wiki.multitheftauto.com/wiki/AddAccount&lt;br /&gt;
* https://wiki.multitheftauto.com/wiki/ES/AddAccount&lt;br /&gt;
&lt;br /&gt;
[[User:Qaisjp|- qaisjp]] ([[User talk:Qaisjp|talk]]) 14:16, 22 August 2020 (UTC)&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnBan&amp;diff=67290</id>
		<title>OnBan</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnBan&amp;diff=67290"/>
		<updated>2020-08-22T14:11:19Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Reverted edits by Violence (talk) to last revision by Botder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server event}}&lt;br /&gt;
This event is triggered when an IP address or serial is banned from the server.&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
ban theBan&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*'''theBan''': the [[ban]] which was added.&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
The [[event system#Event source|source]] of this event is the [[element]] that was responsible for the banning. If no responsible was specified, the source is the global root element.&lt;br /&gt;
&lt;br /&gt;
==Cancel effect==&lt;br /&gt;
This event cannot be canceled.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example outputs a simple message to all players when a player added a ban.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function announceBan( theBan )&lt;br /&gt;
   if ( isElement( source ) ) and ( getElementType( source ) == &amp;quot;player&amp;quot; ) then -- Check if the element responsible for the ban is a player element&lt;br /&gt;
	outputChatBox( getPlayerName( source ) .. &amp;quot; banned &amp;quot; .. ( getBanSerial( theBan ) or getBanIP( theBan ) ) ) -- Output to the chatbox saying the player has banned the IP/Serial&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler( &amp;quot;onBan&amp;quot;, root, announceBan ) -- Adds the event handler for &amp;quot;onBan&amp;quot; and must be bound to root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{See also/Server event|Server events}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=67289</id>
		<title>Server Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=67289"/>
		<updated>2020-08-22T14:11:12Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Reverted edits by Violence (talk) to last revision by Qaisjp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This page lists all '''server-side''' scripting [[event]]s that have been implemented and are available in the Deathmatch mod.&lt;br /&gt;
&lt;br /&gt;
To request a function or event, use [[Requested Functions and Events]].&lt;br /&gt;
&lt;br /&gt;
'''Client-side scripting events can be found here: [[Client Scripting Events]]&lt;br /&gt;
&lt;br /&gt;
==Account events==&lt;br /&gt;
{{Account_events}}&lt;br /&gt;
&lt;br /&gt;
==Client events==&lt;br /&gt;
{{Client_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape events==&lt;br /&gt;
{{Colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==Element events==&lt;br /&gt;
{{Element_events}}&lt;br /&gt;
&lt;br /&gt;
==Marker events==&lt;br /&gt;
{{Marker_events}}&lt;br /&gt;
&lt;br /&gt;
==Pickup events==&lt;br /&gt;
{{Pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==Player events==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
==Ped events==&lt;br /&gt;
{{Ped_events}}&lt;br /&gt;
&lt;br /&gt;
==Resource events==&lt;br /&gt;
{{Resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Server events==&lt;br /&gt;
{{Server_events}}&lt;br /&gt;
&lt;br /&gt;
==Vehicle events==&lt;br /&gt;
{{Vehicle_events}}&lt;br /&gt;
&lt;br /&gt;
==Weapon events==&lt;br /&gt;
{{Weapon_events}}&lt;br /&gt;
&lt;br /&gt;
[[hu:Server Scripting Events]]&lt;br /&gt;
[[tr:Server Scripting Events]]&lt;br /&gt;
[[pt-br:Eventos de Scripting do Servidor]]&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[fr:Server Scripting Events]]&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[ar:Server Scripting Events]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;diff=67288</id>
		<title>AddAccount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=AddAccount&amp;diff=67288"/>
		<updated>2020-08-22T14:11:01Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Reverted edits by Violence (talk) to last revision by Danilo&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;account addAccount ( string name, string pass [, bool allowCaseVariations = false ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP|This function is a static function underneath the Account class.|[[Account]].add ||}}&lt;br /&gt;
===Required Arguments=== &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;
===Optional Arguments===&lt;br /&gt;
*'''allowCaseVariations:''' Whether the username is case sensitive (if this is set to true, usernames &amp;quot;Bob&amp;quot; and &amp;quot;bob&amp;quot; will refer to different accounts)&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 if allowCaseVariations is ''true''.&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;
bRegisteredOnce = {}&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 not bRegisteredOnce[source]) 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[source] = 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[source] == 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;
&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;
[[pl:addAccount]]&lt;br /&gt;
[[ru:addAccount]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=67286</id>
		<title>Server Scripting Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Events&amp;diff=67286"/>
		<updated>2020-08-22T14:10:37Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Reverted edits by Violence (talk) to last revision by A7MeDx666&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This page lists all '''server-side''' scripting [[event]]s that have been implemented and are available in the Deathmatch mod.&lt;br /&gt;
&lt;br /&gt;
To request a function or event, use [[Requested Functions and Events]].&lt;br /&gt;
&lt;br /&gt;
'''Client-side scripting events can be found here: [[Client Scripting Events]]&lt;br /&gt;
&lt;br /&gt;
==Account events==&lt;br /&gt;
{{Account_events}}&lt;br /&gt;
&lt;br /&gt;
==Client events==&lt;br /&gt;
{{Client_events}}&lt;br /&gt;
&lt;br /&gt;
==Colshape events==&lt;br /&gt;
{{Colshape_events}}&lt;br /&gt;
&lt;br /&gt;
==Element events==&lt;br /&gt;
{{Element_events}}&lt;br /&gt;
&lt;br /&gt;
==Marker events==&lt;br /&gt;
{{Marker_events}}&lt;br /&gt;
&lt;br /&gt;
==Pickup events==&lt;br /&gt;
{{Pickup_events}}&lt;br /&gt;
&lt;br /&gt;
==Player events==&lt;br /&gt;
{{Player_events}}&lt;br /&gt;
&lt;br /&gt;
==Ped events==&lt;br /&gt;
{{Ped_events}}&lt;br /&gt;
&lt;br /&gt;
==Resource events==&lt;br /&gt;
{{Resource_events}}&lt;br /&gt;
&lt;br /&gt;
==Server events==&lt;br /&gt;
{{Server_events}}&lt;br /&gt;
&lt;br /&gt;
==Vehicle events==&lt;br /&gt;
{{Vehicle_events}}&lt;br /&gt;
&lt;br /&gt;
==Weapon events==&lt;br /&gt;
{{Weapon_events}}&lt;br /&gt;
&lt;br /&gt;
[[hu:Server Scripting Events]]&lt;br /&gt;
[[tr:Server Scripting Events]]&lt;br /&gt;
[[pt-br:Eventos de Scripting do Servidor]]&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[fr:Server Scripting Events]]&lt;br /&gt;
[[ru:Server Scripting Events]]&lt;br /&gt;
[[ar:Server Scripting Events]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Functions&amp;diff=67285</id>
		<title>Server Scripting Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Server_Scripting_Functions&amp;diff=67285"/>
		<updated>2020-08-22T14:10:34Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Reverted edits by Violence (talk) to last revision by Botder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
{{Adding_Pages_to_Categories_and_Templates}}&lt;br /&gt;
This page lists all the '''server-side''' scripting functions that have been implemented and are available as native functions. To request a function or event, use [[Requested Functions and Events]] or https://bugs.mtasa.com.&lt;br /&gt;
&lt;br /&gt;
Please note that the scripting functions can also be extended by loading in dynamic modules that provide new functionality, such as utility functions. These scripting functions are non-native and require the module to be loaded in order to work.&lt;br /&gt;
&lt;br /&gt;
Head over to [[Modules]] for a list of non-native serverside functions and modules that are available.&lt;br /&gt;
&lt;br /&gt;
For more functions, check the [[Useful_Functions|useful functions page]].&lt;br /&gt;
&lt;br /&gt;
'''Client-side scripting functions can be found here: [[Client Scripting Functions]].'''&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Account functions==&lt;br /&gt;
{{Account_functions}}&lt;br /&gt;
&lt;br /&gt;
==ACL functions==&lt;br /&gt;
{{ACL_functions}}&lt;br /&gt;
&lt;br /&gt;
==Admin functions==&lt;br /&gt;
{{Admin_functions}}&lt;br /&gt;
&lt;br /&gt;
==Audio functions==&lt;br /&gt;
{{Audio_functions}}&lt;br /&gt;
&lt;br /&gt;
==Announcement functions==&lt;br /&gt;
{{Announce_functions}}&lt;br /&gt;
&lt;br /&gt;
==Blip functions==&lt;br /&gt;
{{Blip_functions}}&lt;br /&gt;
&lt;br /&gt;
==Camera functions==&lt;br /&gt;
{{Camera_functions}}&lt;br /&gt;
&lt;br /&gt;
==Clothes and body functions==&lt;br /&gt;
{{Clothes_and_body_functions}}&lt;br /&gt;
&lt;br /&gt;
==Collision shape functions==&lt;br /&gt;
{{Collision_shape_functions}}&lt;br /&gt;
&lt;br /&gt;
==Cursor functions==&lt;br /&gt;
{{Cursor_functions}}&lt;br /&gt;
&lt;br /&gt;
==Element functions==&lt;br /&gt;
{{Element_functions}}&lt;br /&gt;
&lt;br /&gt;
==Event functions==&lt;br /&gt;
{{Event_functions}}&lt;br /&gt;
&lt;br /&gt;
==Explosion functions==&lt;br /&gt;
{{Explosion_functions}}&lt;br /&gt;
&lt;br /&gt;
==File functions==&lt;br /&gt;
{{File_functions}}&lt;br /&gt;
&lt;br /&gt;
==HTTP functions==&lt;br /&gt;
{{HTTP_functions}}&lt;br /&gt;
&lt;br /&gt;
==Input functions==&lt;br /&gt;
{{Input_functions}}&lt;br /&gt;
&lt;br /&gt;
==Map functions==&lt;br /&gt;
{{Map_functions}}&lt;br /&gt;
&lt;br /&gt;
==Marker functions==&lt;br /&gt;
{{Marker_functions}}&lt;br /&gt;
&lt;br /&gt;
==Matrix functions==&lt;br /&gt;
{{Shared_matrix_functions}}&lt;br /&gt;
&lt;br /&gt;
==Module functions==&lt;br /&gt;
{{Module_functions}}&lt;br /&gt;
&lt;br /&gt;
==Object functions==&lt;br /&gt;
{{Object_functions}}&lt;br /&gt;
&lt;br /&gt;
==Output functions==&lt;br /&gt;
{{Output_functions}}&lt;br /&gt;
&lt;br /&gt;
==Ped functions==&lt;br /&gt;
{{Ped_functions}}&lt;br /&gt;
&lt;br /&gt;
==Pickup functions==&lt;br /&gt;
{{Pickup_functions}}&lt;br /&gt;
&lt;br /&gt;
==Player functions==&lt;br /&gt;
{{Player_functions}}&lt;br /&gt;
&lt;br /&gt;
==Projectile functions==&lt;br /&gt;
{{Projectile_functions}}&lt;br /&gt;
&lt;br /&gt;
==Radar area functions==&lt;br /&gt;
{{Radar_area_functions}}&lt;br /&gt;
&lt;br /&gt;
==Resource functions==&lt;br /&gt;
{{Resource_functions}}&lt;br /&gt;
&lt;br /&gt;
==Server functions==&lt;br /&gt;
{{Server_functions}}&lt;br /&gt;
&lt;br /&gt;
==Settings registry functions==&lt;br /&gt;
{{Settings_registry_functions}}&lt;br /&gt;
&lt;br /&gt;
==SQL functions==&lt;br /&gt;
{{SQL_functions}}&lt;br /&gt;
&lt;br /&gt;
==Team functions==&lt;br /&gt;
{{Team_functions}}&lt;br /&gt;
&lt;br /&gt;
==Text functions==&lt;br /&gt;
{{Text_functions}}&lt;br /&gt;
&lt;br /&gt;
==Utility functions==&lt;br /&gt;
{{Utility_functions}}&lt;br /&gt;
&lt;br /&gt;
==UTF8 Library==&lt;br /&gt;
{{UTF8_functions}}&lt;br /&gt;
&lt;br /&gt;
==Vehicle functions==&lt;br /&gt;
{{Vehicle_functions}}&lt;br /&gt;
&lt;br /&gt;
==Water functions==&lt;br /&gt;
{{Water_functions}}&lt;br /&gt;
&lt;br /&gt;
==Weapon functions==&lt;br /&gt;
{{Weapon_functions}}&lt;br /&gt;
&lt;br /&gt;
==World functions==&lt;br /&gt;
{{World_functions}}&lt;br /&gt;
&lt;br /&gt;
==XML functions==&lt;br /&gt;
{{XML_functions}}&lt;br /&gt;
&lt;br /&gt;
[[hu:Server Scripting Functions]]&lt;br /&gt;
[[ar:Server Scripting Functions]]&lt;br /&gt;
[[de:Server-Seitige Scripting Funktionen]]&lt;br /&gt;
[[es:Funciones_del_Server]]&lt;br /&gt;
[[pl:Server Scripting Functions]]&lt;br /&gt;
[[pt-br:Funções de Scripting do Servidor]]&lt;br /&gt;
[[ru:Server Scripting Functions]]&lt;br /&gt;
[[tr:Server Scripting Functions]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Anti-cheat_guide&amp;diff=67069</id>
		<title>Anti-cheat guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Anti-cheat_guide&amp;diff=67069"/>
		<updated>2020-07-20T21:15:08Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Replace &amp;lt;/br&amp;gt; with a blank line / remove unnecessary newlines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide explains how you can fine-tune MTA's anti-cheat on your server using [[Server_mtaserver.conf|'''mtaserver.conf''']]. It does not allow players to modify their own AC settings.&lt;br /&gt;
&lt;br /&gt;
An anti-cheat helper resource, '''acpanel''', is included as a default resource. This shows the current anti-cheat status of your server, along with an option to keep your clients up to date and a basic implementation of [[onPlayerModInfo]] to block modified img files.&lt;br /&gt;
&lt;br /&gt;
You may want to fine-tune AC to prevent certain players have from having an unfair advantage or to ensure competitive integrity. The settings you provide depends entirely on the kind of server you run. Here are some examples on what can be achieved:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Alice tries to ram the vehicle of Eve, and Alice can clearly see the collision, but Eve's vehicle is not really moving.&lt;br /&gt;
: '''Explanation:''' Eve has changed their vehicle model to a much smaller vehicle, or a model with a tiny hitbox or (nearly absent) collisions.&lt;br /&gt;
: '''Solution:''' Disallow non-standard gta3.img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Eve seems to be using wallhacks! She even seems to even be shooting through them!&lt;br /&gt;
:  '''Explanation:''' Eve has replaced buildings so that they are either invisible (textures) or tiny (models).&lt;br /&gt;
:  '''Solution:''' Disallow non-standard gta3.img&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Mallory seems to be solving complex maths questions instantly! It should take at least a couple of seconds... for humans.&lt;br /&gt;
:  '''Explanation:''' Mallory is injecting keyboard input via something like AutoHotkey&lt;br /&gt;
:  '''Solution:''' Enable SD #31 to prevent users from injecting keyboard input. You can use SD #32 for injected mouse input (e.g. for scripts that require natural skill from mouse input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem:''' Mallory seems to be spamming my commands and GUI... and it lags my entire server!&lt;br /&gt;
: '''Explanation:''' You are running expensive user-initiated code without rate limiting players.&lt;br /&gt;
: '''Solution:''' You should write code that prevents players from spamming certain actions.&lt;br /&gt;
: '''Lazy Solution:''' Enable SD #31/#32 to make it more difficult for players to spam certain actions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;==&lt;br /&gt;
Comma separated list of disabled anti-cheats. This setting disables specific AC codes. If a detection is triggered and it's not disabled by the server, a player will get kicked and be shown the AC code corresponding to that detection. '''Note that the list is incomplete''' (it doesn't cover all AC codes that exist) because not all AC codes can be disabled for security reasons, e.g they are critical part of the anti-cheat and likewise we will also never provide information about what exactly they mean.&lt;br /&gt;
&lt;br /&gt;
'''DISCLAIMER''':&lt;br /&gt;
Please note that disableac will only void the AC # kick for using GTA singleplayer cheats and some very basic, outdated and patched MP cheats (such as s0beit). Hacks &amp;amp; cheats designed for MTA or other general hacking tools may still trigger a Global ban or kick.&lt;br /&gt;
If you try to use a typical MTA cheat or hacktool under the belief using disableAC will save your day, and get banned for a while, it's your own fault, regardless of this setting being used to disable any of the AC classifications that it may fall under.&lt;br /&gt;
&lt;br /&gt;
There is also a good chance that disabling certain detections won't enable your players to (even) use the majority of 'basic' GTA:SA trainers, but result in a kick only.&lt;br /&gt;
Due to the current state of MTA anti-cheat, and its advanced heuristics, it's simply not feasible to try and create a freehaven for cheaters. You can experiment, but we don't recommend using '''disableac''' for these reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''': With '''trainer''', cheats (for MTA or GTA) or forbidden cheat tools are meant. This is especially true for AC #4.&lt;br /&gt;
Please note that getting kicked for anything listed here isn't neccesarily (intended) hacking, someone can open hacktools that they plan to use for another game, while both that game and MTA are opened, and be kicked.&lt;br /&gt;
It's also possible that someone isn't aware of certain software containing hack/tamper features (making it prohibited) when they run it and get kicked.&lt;br /&gt;
Basically, (the intent of) cheating on MTA or your server can never be proven by triggering these detections alone.&lt;br /&gt;
&lt;br /&gt;
Available codes are:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Code for &amp;lt;disableac&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Displayed on detect&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Required server version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Required &amp;lt;minclientversion&amp;gt; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;| Notes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''1'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #1&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Classic health/armour hack detector&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''2'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #2&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Corrupted dll files&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''4'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #4&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects presence of trainer. This is the most common AC code for attempted cheating, mostly with cheats designed for MTA.&lt;br /&gt;
Note: disabling this code is unlikely to produce expected results, in accordance with what is mentioned in the &amp;quot;DISCLAIMER&amp;quot; part. &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''5'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #5&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer.        &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''6'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer incl.: player movement, health/damage, weapons, money, gamespeed, game cheats, aimbot   &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''7'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects use of trainer.   &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''8'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #8&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Detects unauthorized mods&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot;|'''11'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #11&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| More trainers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #11&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Dll injector / Trainer&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''13'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #13&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Data files issue&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''17'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #17&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Speed / wall hacks&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot; rowspan=&amp;quot;2&amp;quot;|'''21'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|AC #21&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| More trainers&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|VF #21&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Custom gta_sa.exe&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''26'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #26&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05858 &lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Anti-cheat component blocked&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;enablesd&amp;gt;&amp;lt;/enablesd&amp;gt;==&lt;br /&gt;
Comma separated list of enabled Special Detections (SD #). A special detection is a type of anti-cheat for (usually) harmless game modifications. Competitive servers or servers dealing with a certain problem structurally may wish to enable special detections, but most servers should leave this setting blank. Available codes are:&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Code for &amp;lt;enablesd&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Displayed on detect&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Required server version&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Required &amp;lt;minclientversion&amp;gt;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#d0d0d0;&amp;quot;|Notes&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''12'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #12&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|any&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow custom D3D9.DLL&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''14'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #14&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04605&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04605&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow virtual machines such as VMWare&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''15'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #15&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04791&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.04791&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow disabled driver signing &lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''16'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #16&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow disabled anti-cheat components. This is triggered when an anti-cheat component can not start. It is usually due to some problem with the PC and might be fixed by a reboot. Can also be triggered by a virus.&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''20'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #20&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.1-9.05097&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow non-standard gta3.img or gta_int.img (For servers not using [[onPlayerModInfo]])&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''22'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #22&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow resource download errors/corruption (Lua script files)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''23'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #23&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.2-9.07911&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow resource download errors/corruption (Non-Lua files e.g. png,dff)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''28'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #28&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.3.4-9.05884&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow Linux Wine&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''31'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #31&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3-9.11204&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Ignore injected keyboard inputs (e.g. from AutoHotkey, macro's and on screen keyboard)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''32'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #32&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.3&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.4-9.11528&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Ignore injected mouse button inputs and movement (this detection can prevent an ambigious type of aim hacks (bullet spread/recoil manipulation)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''33'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #33&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow software of the category 'Net limiter' (ideal for lagswitching or causing structural lag, but may also be used for benign purposes)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''34'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #34&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow internet café users ('''only''' use as last resort to combat mass ban evasion using café PC's)&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''35'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #35&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.6&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| &amp;lt;br/&amp;gt;Disallow certain software with &amp;quot;FPS locking&amp;quot; capabilities, for example Fraps recorder.&amp;lt;br/&amp;gt;&lt;br /&gt;
Particularly racing gamemodes are impacted by players that use FPS lock hotkey at times they need an unfair advantage (like, to drive through a loop faster) or a small speed boost. &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt; '''Note''': it would be better if you use this SD in a custom implementation only (using [[onPlayerACInfo]]) instead of kick in mtaserver.conf. For example so that it would only kick when they approach a loop, or are playing a map sensitive to this abuse. Because you'll have to tread carefully, since Fraps is also a popular recording tool. &amp;lt;br/&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| scope=&amp;quot;row&amp;quot; style=&amp;quot;background:#e0e0e0;&amp;quot; align=&amp;quot;center&amp;quot;|'''36'''&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|SD #36&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot; align=&amp;quot;center&amp;quot;|1.5.7&lt;br /&gt;
| style=&amp;quot;background:#f0f0f0;&amp;quot;| Disallow AutoHotKey base application (used to load .ahk files) and Ahk2Exe binaries with embedded scripts&amp;lt;br/&amp;gt;&lt;br /&gt;
Most servers won't need this (cancelling the input sent into GTA with SD #31 and #32 would be sufficient), but some competitive servers have problems with AutoHotKey interfacing with Windows rather than MTA (which would get ignored by the game), for example toggling firewall rules for lag switching, and pure hotkey toggling of effects that give unfair advantage (e.g causing small freezes). As you can see, the possibilities are endless (including things MTA or scripting can't be expected to stop from the roots). &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
MTA won't scan the content of .ahk files loaded into the AutoHotKey application (and invididual signatures for abusive ones would be too much work for MTA), so with SD #36 server owners are still in power should they decide to stop it this way. If the abuse consists of lag switching, a scripted solution (example: https://github.com/Lpsd/ConGuard) would still be the recommended approach.&amp;lt;br/&amp;gt;&lt;br /&gt;
Because note that, while the currently circulating abuse scripts are mostly AHK-based, they can easily migrate (and MTA isn't guaranteed to add SD # for that as well). &lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Also, remember that the AutoHotKey base application can have legitimate uses, so only use when you have no other options for competitive balance&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are constantly working on keeping the definitions for above SD (special detections) up-to-date, so as to ensure all violating software or circumstances that you opt-in to disable gets detected once used. While we are pro-actively checking if new or unknown software/tools are still being detected under the same signature, it's possible that something slips through the cracks. Therefore, you can help us if you come across anything that should be detectable using SD # but is not currently; send a forum PM to Dutchman101 or ccw with your report.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;client_file name=&amp;quot;data/carmods.dat&amp;quot; verify=&amp;quot;0&amp;quot;/&amp;gt;==&lt;br /&gt;
By default, clients may not join a server if they have customized GTA:SA data files. Adding one or more of the above lines excludes files from validation. The file names that can be used are:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;anim/ped.ifp&amp;quot;&lt;br /&gt;
* &amp;quot;data/animgrp.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/ar_stats.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/carmods.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/clothes.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/default.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/default.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/furnitur.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/gta.dat&amp;quot;&lt;br /&gt;
* &amp;lt;strike&amp;gt;&amp;quot;data/handling.cfg&amp;quot;&amp;lt;/strike&amp;gt; - this is unavailable because MTA always ignores this file so that [[setVehicleHandling]] works correctly. [[Handling.cfg|Click here]]'' if you want to load custom handling.cfg files.&lt;br /&gt;
* &amp;quot;data/maps&amp;quot; - this applies to all files within this folder&lt;br /&gt;
* &amp;quot;data/melee.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/object.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/peds.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/pedstats.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/plants.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/procobj.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/surface.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/surfinfo.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/timecyc.dat&amp;quot; - minimum server version 1.5.6-9.18322&lt;br /&gt;
* &amp;quot;data/txdcut.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/vehicles.ide&amp;quot;&lt;br /&gt;
* &amp;quot;data/water1.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/water.dat&amp;quot;&lt;br /&gt;
* &amp;quot;data/weapon.dat&amp;quot;&lt;br /&gt;
* &amp;quot;models/coll/weapons.col&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;hideac&amp;gt;&amp;lt;/hideac&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
You can use this setting in mtaserver.conf to hide the AC info from the client, showing the following line upon join:&lt;br /&gt;
 Server AC info: [Undisclosed]&lt;br /&gt;
&lt;br /&gt;
Values: 0 - disabled, 1 - enabled; default value: 0.&lt;br /&gt;
&lt;br /&gt;
=Client=&lt;br /&gt;
When joining a server, the server AC info is displayed in the client console (F8), for example:&lt;br /&gt;
&lt;br /&gt;
 Server AC Info: [Allowed client files: None] [Disabled AC: None] [Enabled SD: None]&lt;br /&gt;
&lt;br /&gt;
''Disabled AC'' contains the contents of the server setting from &amp;lt;code&amp;gt;&amp;lt;disableac&amp;gt;&amp;lt;/disableac&amp;gt;&amp;lt;/code&amp;gt;, and ''Enabled SD'' contains the contents of the server setting from &amp;lt;code&amp;gt;&amp;lt;enablesd&amp;gt;&amp;lt;/enablesd&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Allowed client files contains numbers to indicate which client files the server allows to be modified. The numbers represent these files:&lt;br /&gt;
&lt;br /&gt;
*1 - &amp;quot;data/carmods.dat&amp;quot;&lt;br /&gt;
*2 - &amp;quot;data/animgrp.dat&amp;quot;&lt;br /&gt;
*4 - &amp;quot;data/ar_stats.dat&amp;quot;&lt;br /&gt;
*5 - &amp;quot;data/melee.dat&amp;quot;&lt;br /&gt;
*6 - &amp;quot;data/clothes.dat&amp;quot;&lt;br /&gt;
*7 - &amp;quot;data/object.dat&amp;quot;&lt;br /&gt;
*8 - &amp;quot;data/default.dat&amp;quot;&lt;br /&gt;
*9 - &amp;quot;data/surface.dat&amp;quot;&lt;br /&gt;
*10 - &amp;quot;data/default.ide&amp;quot;&lt;br /&gt;
*12 - &amp;quot;data/gta.dat&amp;quot;&lt;br /&gt;
*13 - &amp;quot;data/surfinfo.dat&amp;quot;&lt;br /&gt;
*14 - &amp;quot;data/peds.ide&amp;quot;&lt;br /&gt;
*15 - &amp;quot;data/vehicles.ide&amp;quot;&lt;br /&gt;
*16 - &amp;quot;data/pedstats.dat&amp;quot;&lt;br /&gt;
*17 - &amp;quot;data/water.dat&amp;quot;&lt;br /&gt;
*18 - &amp;quot;data/txdcut.ide&amp;quot;&lt;br /&gt;
*19 - &amp;quot;data/water1.dat&amp;quot;&lt;br /&gt;
*20 - &amp;quot;models/coll/weapons.col&amp;quot;&lt;br /&gt;
*21 - &amp;quot;data/weapon.dat&amp;quot;&lt;br /&gt;
*22 - &amp;quot;data/plants.dat&amp;quot;&lt;br /&gt;
*23 - &amp;quot;anim/ped.ifp&amp;quot;&lt;br /&gt;
*24 - &amp;quot;data/furnitur.dat&amp;quot;&lt;br /&gt;
*25 - &amp;quot;data/procobj.dat&amp;quot;&lt;br /&gt;
*26 - &amp;quot;data/maps&amp;quot;&lt;br /&gt;
*27 - &amp;quot;data/timecyc.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' ''If the info is marked &amp;quot;Undisclosed&amp;quot;, it means that the server has decided not to disclose the AC info to the client.''&lt;br /&gt;
&lt;br /&gt;
===Using modified files===&lt;br /&gt;
If you want to use modified data files from your GTA:SA install directory, check this check box:&lt;br /&gt;
&lt;br /&gt;
 Settings -&amp;gt; Multiplayer -&amp;gt; Use customized GTA:SA files&lt;br /&gt;
&lt;br /&gt;
The checkbox only appears if your GTA:SA data files are customized.&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' ''This will restrict your access to some public servers as most do not allow customized data files.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Support]]&lt;br /&gt;
[[ru:Anti-cheat guide]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsLineOfSightClear&amp;diff=66929</id>
		<title>IsLineOfSightClear</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsLineOfSightClear&amp;diff=66929"/>
		<updated>2020-06-14T09:57:41Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix unnecessary line break&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Client function}}&lt;br /&gt;
This function checks if there are obstacles between two points of the game world, optionally ignoring certain kinds of elements. Use [[processLineOfSight]] if you want more information about what the ray hits.&lt;br /&gt;
&lt;br /&gt;
{{Note|This function does currently NOT support collisions with the &amp;quot;shootthrough&amp;quot; flag enabled. That means: isLineOfSightClear will never collide with such collisions and this can lead to unreliabilities. The &amp;quot;shootthrough&amp;quot; flag is used by many beach/sand/underwater objects.}}&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 isLineOfSightClear ( float startX, float startY, float startZ, float endX, float endY, float endZ, [ bool checkBuildings = true, bool checkVehicles = true, bool checkPeds = true,&lt;br /&gt;
                          bool checkObjects = true, bool checkDummies = true, bool seeThroughStuff = false, bool ignoreSomeObjectsForCamera = false, element ignoredElement = nil ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''startX:''' The first point's world X coordinate.&lt;br /&gt;
*'''startY:''' The first point's world Y coordinate.&lt;br /&gt;
*'''startZ:''' The first point's world Z coordinate.&lt;br /&gt;
*'''endX:''' The second point's world X coordinate.&lt;br /&gt;
*'''endY:''' The second point's world Y coordinate.&lt;br /&gt;
*'''endZ:''' The second point's world Z coordinate.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments=== &lt;br /&gt;
{{OptionalArg}} &lt;br /&gt;
*'''checkBuildings:''' Allow the line of sight to be blocked by GTA's internally placed buildings, i.e. the world map.&lt;br /&gt;
*'''checkVehicles:''' Allow the line of sight to be blocked by [[Vehicle|vehicles]].&lt;br /&gt;
*'''checkPeds:''' Allow the line of sight to be blocked by peds, i.e. [[Player|players]].&lt;br /&gt;
*'''checkObjects:''' Allow the line of sight to be blocked by [[Object|objects]].&lt;br /&gt;
*'''checkDummies:''' Allow the line of sight to be blocked by GTA's internal dummies.  These are not used in the current MTA version so this argument can be set to ''false''.&lt;br /&gt;
*'''seeThroughStuff:''' Allow the line of sight to be blocked by collision materials that have this flag enabled (By default material IDs 52, 55 and 66 which are some fences). This flag originally allows some objects to be walked on but you can shoot throug them.&lt;br /&gt;
*'''ignoreSomeObjectsForCamera:''' Allow the line of sight to pass through objects that have (K) property enabled in &amp;quot;object.dat&amp;quot; data file. (i.e. Most dynamic objects like boxes or barrels)&lt;br /&gt;
*'''ignoredElement:''' Allow the line of sight to pass through a certain specified element.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the line between the specified points is clear, ''false'' if there's an obstacle or if invalid parameters are passed.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
isLineOfSightClear is the economical way to cast a ray in the world. &lt;br /&gt;
This example demonstrates how you can easily implement basic NPC behaviour such as jumping obstacles. A 3D line is drawn connecting the two points in the ray.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local t_Data = {}&lt;br /&gt;
&lt;br /&gt;
local function updateNPC ()&lt;br /&gt;
    if (not isElement(t_Data.ped) or (getElementHealth(t_Data.ped) == 0)) then&lt;br /&gt;
        return toggleNPCFollower ()&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local t_PlayerPos = {getElementPosition(localPlayer)}&lt;br /&gt;
    local t_PedPos = {getElementPosition(t_Data.ped)}&lt;br /&gt;
    &lt;br /&gt;
    local intDistance = getDistanceBetweenPoints3D (t_PedPos[1], t_PedPos[2], t_PedPos[3], unpack(t_PlayerPos))&lt;br /&gt;
    if (intDistance &amp;lt; 4) then&lt;br /&gt;
        setPedControlState (t_Data.ped, 'forwards', false)&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Calculate the rotation between ped and player position&lt;br /&gt;
    local intPedRot = -math.deg (math.atan2(t_PlayerPos[1] - t_PedPos[1], t_PlayerPos[2] - t_PedPos[2]))&lt;br /&gt;
    if intPedRot &amp;lt; 0 then intPedRot = intPedRot + 360 end;&lt;br /&gt;
    &lt;br /&gt;
    setElementRotation (t_Data.ped, 0, 0, intPedRot, 'default', true)&lt;br /&gt;
    -- At this point we know that the ped needs to move it&lt;br /&gt;
    setPedControlState (t_Data.ped, 'forwards', true)&lt;br /&gt;
    &lt;br /&gt;
    local bPathClear = true&lt;br /&gt;
    local t_Matrix = getElementMatrix (t_Data.ped)&lt;br /&gt;
    &lt;br /&gt;
    -- Calculate a position 1m ahead of ped&lt;br /&gt;
    local int_RayX = t_Matrix[2][1] + t_Matrix[4][1]&lt;br /&gt;
    local int_RayY = t_Matrix[2][2] + t_Matrix[4][2]&lt;br /&gt;
    local int_RayZ = t_Matrix[2][3] + t_Matrix[4][3]&lt;br /&gt;
    &lt;br /&gt;
    -- We cast 10 rays 1m ahead of the ped&lt;br /&gt;
    for i = 1, 10 do&lt;br /&gt;
        local intSourceX, intSourceY, intSourceZ = t_PedPos[1], t_PedPos[2], t_PedPos[3]&lt;br /&gt;
        &lt;br /&gt;
        -- The target position height is identical to the center of the ped (1m above ground) &lt;br /&gt;
        -- We lower this value by 0.5m to detect short obstacles&lt;br /&gt;
        local intTargetX, intTargetY, intTargetZ = int_RayX, int_RayY, int_RayZ - 0.5 + i*0.2&lt;br /&gt;
        &lt;br /&gt;
        bPathClear = isLineOfSightClear (intSourceX, intSourceY, intSourceZ, intTargetX, intTargetY, intTargetZ, true, true, false, true)&lt;br /&gt;
        dxDrawLine3D (intSourceX, intSourceY, intSourceZ, intTargetX, intTargetY, intTargetZ, bPathClear and tocolor(255,255,255,255) or tocolor(255,0,0,255))&lt;br /&gt;
        &lt;br /&gt;
        if (not bPathClear) then&lt;br /&gt;
            break&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if (not bPathClear) then&lt;br /&gt;
        setPedControlState (t_Data.ped, 'jump', true)&lt;br /&gt;
    else&lt;br /&gt;
        setPedControlState (t_Data.ped, 'jump', false)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if (intDistance &amp;gt; 15) then&lt;br /&gt;
        setPedControlState (t_Data.ped, 'sprint', true)&lt;br /&gt;
    else&lt;br /&gt;
        setPedControlState (t_Data.ped, 'sprint', false)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function toggleNPCFollower ()&lt;br /&gt;
    if (t_Data.ped) then&lt;br /&gt;
        if (t_Data.updateNPCTimer) then&lt;br /&gt;
            if (isTimer(t_Data.updateNPCTimer)) then&lt;br /&gt;
                killTimer (t_Data.updateNPCTimer)&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if (isElement(t_Data.ped)) then&lt;br /&gt;
            destroyElement (t_Data.ped)&lt;br /&gt;
        end&lt;br /&gt;
        t_Data.ped = nil&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local intX, intY, intZ = getElementPosition (localPlayer)&lt;br /&gt;
    local _, _, intRZ = getElementRotation (localPlayer)&lt;br /&gt;
    local t_Matrix = getElementMatrix (localPlayer)&lt;br /&gt;
    &lt;br /&gt;
    -- Calculate a position 4m behind local player&lt;br /&gt;
    local intPedX = -4 * t_Matrix[2][1] + t_Matrix[4][1]&lt;br /&gt;
    local intPedY = -4 * t_Matrix[2][2] + t_Matrix[4][2]&lt;br /&gt;
    local intPedZ = -4 * t_Matrix[2][3] + t_Matrix[4][3]&lt;br /&gt;
    &lt;br /&gt;
    t_Data.ped = createPed (0, intPedX, intPedY, intPedZ, intRZ)&lt;br /&gt;
    t_Data.updateNPCTimer = setTimer (updateNPC, 50, 0)&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ('npc', toggleNPCFollower)&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;
{{Client world functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RemoveWorldModel&amp;diff=66899</id>
		<title>RemoveWorldModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RemoveWorldModel&amp;diff=66899"/>
		<updated>2020-06-12T15:20:15Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Fix default interior value (documentation was wrong)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
{{Server client function}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Note box|Pre r4844: There are two types of world objects Binary IPL (anything not in data/maps and in gta3.img) and data IPL (anything in data/maps) Binary IPL removal requires a stream out if you are deleting anything within 300 units (anything visible) you can just move the camera to do this. Data IPL are removed instantly and this is not required. Also LOD objects are not removed automatically so you need to remove them separately.}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
This function is used to remove a world object.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Tip|Pre r4844: It is strongly advised that you use this server side rather than client side because it will just function infinitely better as you should not need to handle streaming it out/back in.}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Syntax== &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool removeWorldModel ( int modelID, float radius, float x, float y, float z [, int interior = -1 ] )&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments=== &lt;br /&gt;
*'''modelID:''' A whole integer specifying the GTASA object model ID.&lt;br /&gt;
*'''radius:''' A floating point number representing the radius that will be eliminated.&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;
{{New items|3.0132|1.3.2|&lt;br /&gt;
*'''interior:''' The interior ID to apply the removal to. Some objects in interior 13 show in all interiors so if you want to remove everything in interior 0 also remove everything in interior 13. A value of -1 here will affect all interiors.}}&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the [[object]] was removed, ''false'' if invalid arguments were passed.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.2.0-9.03618|1.2.0-9.03618|}}&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example will removes buildings on BigEar:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
removeWorldModel(16617,1000,-300,1556,75) --lod&lt;br /&gt;
removeWorldModel(16616,1000,-300,1556,75) --lod&lt;br /&gt;
removeWorldModel(16615,1000,-300,1556,75) --lod&lt;br /&gt;
removeWorldModel(16138,1000,-300,1556,75) -- model&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example removes CJ house:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
for i=700,20000 do&lt;br /&gt;
    removeWorldModel(i,10,2494,-1696,17)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This server script example removes all models, everywhere:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
for i=550,20000 do&lt;br /&gt;
    removeWorldModel(i,10000,0,0,0)&lt;br /&gt;
end&lt;br /&gt;
setOcclusionsEnabled(false)  -- Also disable occlusions when removing certain models&lt;br /&gt;
setWaterLevel(-5000)         -- Also hide the default water as it will be full of holes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
{{ChangelogHeader}}&lt;br /&gt;
{{ChangelogItem|1.3.1-9.04636|Added interior argument}}&lt;br /&gt;
{{ChangelogItem|1.3.1-9.04844|Everything streams out fine now.}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Client_world_functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Meta.xml&amp;diff=66727</id>
		<title>Meta.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Meta.xml&amp;diff=66727"/>
		<updated>2020-06-02T07:55:20Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix aclrequest docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''meta.xml'' file presents MTA with a set of metadata, such as the resource's name, the scripts to include, and which files to precache for sending to clients among other things. It is also the scope of &amp;quot;elements&amp;quot;. It is written in XML, which is based on HTML and is the parent of XHTML.&lt;br /&gt;
&lt;br /&gt;
=Tags=&lt;br /&gt;
XML is a textual data format which is widely used for the representation of data. MTA uses an XML-based language to describe the metadata for resources by using the tags below:&lt;br /&gt;
&lt;br /&gt;
*'''&amp;lt;info /&amp;gt;''' Information about this resource, possible parameters include (any arbitrary parameters can be used and read using [[getResourceInfo]]):&lt;br /&gt;
** '''author:''' The author of this resource&lt;br /&gt;
** '''version:''' The version of this resource&lt;br /&gt;
** '''name:''' The name of this resource&lt;br /&gt;
** '''description:''' A brief description of this resource&lt;br /&gt;
** '''type:''' The type of this resource, that can be &amp;quot;gamemode&amp;quot;, &amp;quot;script&amp;quot;, &amp;quot;map&amp;quot; or &amp;quot;misc&amp;quot;.&lt;br /&gt;
** '''gamemodes:''' The gamemodes to be compatible with the resource. It must be the name of the gamemode resource, not the gamemode name. If you want it to be compatible with multiple gamemodes, it must be in a comma-separated list without spaces. (e.g. gamemodes=&amp;quot;test1,test2&amp;quot;). &lt;br /&gt;
*'''&amp;lt;script /&amp;gt;''' Source code for this resource, possible parameters are:&lt;br /&gt;
** '''src:''' The file name of the source code&lt;br /&gt;
** '''type:''' The type of source code: &amp;quot;client&amp;quot;, &amp;quot;server&amp;quot; or &amp;quot;shared&amp;quot;.&lt;br /&gt;
**'''cache:''' When the script file type is &amp;quot;client&amp;quot;, this setting controls whether the file is saved on the clients' hard drive. Default is &amp;quot;true&amp;quot;. Using &amp;quot;false&amp;quot; will mean the file is not saved. ''(Note: cache=false files are started at the client first, so lua file load order might differ when mixing cache settings)''&lt;br /&gt;
**'''validate:''' If set to &amp;quot;false&amp;quot;, compatibility checks are skipped.&lt;br /&gt;
*'''&amp;lt;map /&amp;gt;''' The map for a gamemode, possible parameters are:&lt;br /&gt;
**'''src:''' .map file name (can be path too eg. &amp;quot;maps/filename.map&amp;quot;)&lt;br /&gt;
**'''dimension:''' Dimension in which the map will be loaded (optional)&lt;br /&gt;
*'''&amp;lt;file /&amp;gt;''' A client-side file. Generally these are images, .txd, .col, .dff or .xml files. They'll be downloaded by clients when the resources is started (or on join)&lt;br /&gt;
**'''src:''' client-side file name (can be path too eg. &amp;quot;images/image.png&amp;quot;)&lt;br /&gt;
**'''download:''' Whether or not to be sent to the client automatically (optional). Default is &amp;quot;true&amp;quot;. Using &amp;quot;false&amp;quot; will mean they are not sent on resource start but could later be used by [[downloadFile]].&lt;br /&gt;
*'''&amp;lt;include /&amp;gt;''' Include resources that this resource will use&lt;br /&gt;
**'''resource:''' Resource name that you want to start with this resource&lt;br /&gt;
**'''minversion:''' Minimum version that '''resource''' needs to be (optional)&lt;br /&gt;
**'''maxversion:''' Maximum version that '''resource''' needs to be (optional)&lt;br /&gt;
*'''&amp;lt;config /&amp;gt;''' Config file (.xml) can be accessed by resource, possible parameters are:&lt;br /&gt;
**'''src:''' The file name of the config file&lt;br /&gt;
**'''type:''' The type of the config file: &amp;quot;client&amp;quot; or &amp;quot;server&amp;quot;&lt;br /&gt;
*'''&amp;lt;export /&amp;gt;''' This exports functions from this resource, so other resources can use them with [[call]]&lt;br /&gt;
**'''function:''' The function name&lt;br /&gt;
**'''type''' Whether function is exported server-side or client-side (valid values are: &amp;quot;client&amp;quot;, &amp;quot;server&amp;quot; and &amp;quot;shared&amp;quot;)&lt;br /&gt;
**'''http:''' Can the function be called via HTTP (true/false)&lt;br /&gt;
*'''&amp;lt;html /&amp;gt;'''&lt;br /&gt;
**'''src:''' The filename for the HTTP file (can be a path)&lt;br /&gt;
**'''default:''' The html file is one that is shown by default when visiting /resourceName/ on the server. Only one html can be default, the rest are ignored. (true/false)&lt;br /&gt;
**'''raw:''' The html file is not parsed by the Lua interpreter and is treated as binary data. Must be used for binary files (images mainly) (true/false)&lt;br /&gt;
*'''&amp;lt;settings /&amp;gt;''' Most gamemodes use [[settings system]] to let server admins to configure it how they like. For instance you could set round time and then use [[get]] and [[set]] to get the value or change it, respectively.&lt;br /&gt;
** '''&amp;lt;setting /&amp;gt;''' Resource settings can be accessed by resource and Admin panel, possible parameters are:&lt;br /&gt;
*** '''name:''' The setting name used by the scripts to get or set the setting value&lt;br /&gt;
*** '''value:''' The setting default value used by the scripts&lt;br /&gt;
*** '''friendlyname:''' A friendly name to the setting (optional)&lt;br /&gt;
*** '''accept:''' The values the setting could accept (optional)&lt;br /&gt;
*** '''examples:''' An Example of a value (optional)&lt;br /&gt;
*** '''desc:''' A description of the setting (optional)&lt;br /&gt;
*'''&amp;lt;min_mta_version /&amp;gt;''' Minimum version requirements for this resource to run correctly. When authoring resources, the minimum version should usually be set to the current released version of MTA:SA (which at the moment is &amp;quot;{{Current Version|full}}&amp;quot;). See example for example.&lt;br /&gt;
**'''client:''' The minimum client version&lt;br /&gt;
**'''server:''' The minimum server version&lt;br /&gt;
*'''&amp;lt;aclrequest /&amp;gt;''' A list of [[Access_Control_List|ACL]] rights this resource will need.&lt;br /&gt;
** '''&amp;lt;right /&amp;gt;''' an individual right&lt;br /&gt;
***'''name:''' The right name.&lt;br /&gt;
***'''access:''' Set to ''true'' to allow the resource to access this right. Set to ''false'' to deny the access to this right.&lt;br /&gt;
{{New items|3.0132|1.3.1 r4141|&lt;br /&gt;
*'''&amp;lt;sync_map_element_data /&amp;gt;''' Controls whether map [[Element_data|element data]] such as &amp;quot;PosX&amp;quot; and &amp;quot;DoubleSided&amp;quot; are transferred to the client. This data is usually not required by most gamemodes or resources. (Map Editor and Interiors require this to be not set to false to work). When set in a gamemode meta.xml, the setting will apply to all maps loaded by that resource.&lt;br /&gt;
**'''false:''' Disable transfer of map element data for all resources. This can reduce map download times considerably.&lt;br /&gt;
**'''true:''' Enable transfer of map element data for all resources. (If '''false''' and '''true''' are set in different resources, true will have priority and all resources will transfer map element data)&lt;br /&gt;
}}&lt;br /&gt;
{{New items|3.0140|1.4.0 r5313|&lt;br /&gt;
*'''&amp;lt;oop /&amp;gt;''' OOP - Please refer to [[OOP]] for documentation.&lt;br /&gt;
**'''false:''' Disable OOP.&lt;br /&gt;
**'''true:''' Enable OOP.&lt;br /&gt;
}}&lt;br /&gt;
{{New feature/item|3.0150|1.5.0|7308|&lt;br /&gt;
*'''&amp;lt;download_priority_group /&amp;gt;''' If not set, the download priority group for a resource defaults to 0. If this is set higher than 0, then the resource will be downloaded and started on the client earlier than other resources. If set to less than 0, the resource will be downloaded and started on the client later than other resources.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Here's an example of a meta file using some of the tags mentioned:&lt;br /&gt;
{{#tag:syntaxhighlight |&lt;br /&gt;
&amp;lt;meta&amp;gt;&lt;br /&gt;
    &amp;lt;info author=&amp;quot;Slothman&amp;quot; version=&amp;quot;1.0.2&amp;quot; name=&amp;quot;Stealth&amp;quot; description=&amp;quot;Allow scripts to insert a ped that simulates combat with a real player&amp;quot; type=&amp;quot;gamemode&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noiseblip.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;mission_timer.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_server.lua&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;gadgets_client.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;stealthmain_client.lua&amp;quot; type=&amp;quot;client&amp;quot; validate=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;noisebar.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;spycam.lua&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;riemann_z_demonstration.lua&amp;quot; type=&amp;quot;client&amp;quot; cache=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;map src=&amp;quot;base.map&amp;quot; dimension=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.txd&amp;quot; download=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.dff&amp;quot; download=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;riot_shield.col&amp;quot; download=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;armor.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;camera.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;cloak.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;goggles.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;mine.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;radar.png&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;file src=&amp;quot;shield.png&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;scoreboard&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;killmessages&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;include resource=&amp;quot;maplimits&amp;quot; /&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;config src=&amp;quot;help.xml&amp;quot; type=&amp;quot;client&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;export function=&amp;quot;exampleExport1&amp;quot; type=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;export function=&amp;quot;exampleExport2&amp;quot; type=&amp;quot;client&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;export function=&amp;quot;exampleExport3&amp;quot; type=&amp;quot;shared&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;settings&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;roundlimit&amp;quot; value=&amp;quot;[6]&amp;quot; /&amp;gt; &amp;lt;!-- round length in minutes --&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;teamdamage&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!-- 0 for team protection off, 1 for team protection on --&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;teambalance&amp;quot; value=&amp;quot;[1]&amp;quot; /&amp;gt; &amp;lt;!--  difference limit of amount of players between teams --&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;isAllowedToShoot&amp;quot; value=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;admingroup&amp;quot; value=&amp;quot;Admin,AdminPlus&amp;quot;&lt;br /&gt;
		friendlyname=&amp;quot;Admin group list&amp;quot;&lt;br /&gt;
		group=&amp;quot;_Advanced&amp;quot;&lt;br /&gt;
		accept=&amp;quot;*&amp;quot;&lt;br /&gt;
		examples=&amp;quot;Admin,Moderator,SuperModerator&amp;quot;&lt;br /&gt;
		desc=&amp;quot;To use this resource, the player must belong to one of the groups listed.&amp;quot;&lt;br /&gt;
		/&amp;gt; &amp;lt;!-- a setting example using all optional parameters --&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;spazammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt; &amp;lt;!-- ammo amounts --&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;m4ammo&amp;quot; value=&amp;quot;[100]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;shotgunammo&amp;quot; value=&amp;quot;[25]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;sniperammo&amp;quot; value=&amp;quot;[20]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;ak47ammo&amp;quot; value=&amp;quot;[120]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;rifleammo&amp;quot; value=&amp;quot;[40]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;deserteagleammo&amp;quot; value=&amp;quot;[45]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;pistolammo&amp;quot; value=&amp;quot;[132]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;uziammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;tec9ammo&amp;quot; value=&amp;quot;[150]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;silencedammo&amp;quot; value=&amp;quot;[65]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;grenadeammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;satchelammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;teargasammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;setting name=&amp;quot;molatovammo&amp;quot; value=&amp;quot;[4]&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/settings&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;min_mta_version server=&amp;quot;1.5.2-9.07903&amp;quot; client=&amp;quot;1.5.2-9.07903&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;aclrequest&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;function.startResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;function.stopResource&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;right name=&amp;quot;function.setPlayerMuted&amp;quot; access=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/aclrequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;sync_map_element_data&amp;gt;false&amp;lt;/sync_map_element_data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;oop&amp;gt;false&amp;lt;/oop&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;download_priority_group&amp;gt;0&amp;lt;/download_priority_group&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;&lt;br /&gt;
|lang=&amp;quot;xml&amp;quot;}}&lt;br /&gt;
[[Category:Scripting Concepts]]&lt;br /&gt;
[[hu:Meta.xml]]&lt;br /&gt;
[[cs:Meta.xml]]&lt;br /&gt;
[[de:Meta.xml]]&lt;br /&gt;
[[es:Sobre el archivo &amp;quot;meta.xml&amp;quot;]]&lt;br /&gt;
[[it:Meta.xml]]&lt;br /&gt;
[[pl:Meta.xml]]&lt;br /&gt;
[[ru:Meta.xml]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Changes_in_1.5.8&amp;diff=66721</id>
		<title>Changes in 1.5.8</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Changes_in_1.5.8&amp;diff=66721"/>
		<updated>2020-05-31T17:49:17Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: use my username&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass class=&amp;quot;#4286f4&amp;quot; subcaption=&amp;quot;Future release&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
{{Changelogs}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
* GitHub commit log: https://github.com/multitheftauto/mtasa-blue/compare/1.5.7...master&lt;br /&gt;
* GitHub milestone: https://github.com/multitheftauto/mtasa-blue/milestone/2&lt;br /&gt;
* So far https://github.com/multitheftauto/mtasa-blue/compare/632130e...master&lt;br /&gt;
&lt;br /&gt;
'''This changelog is partial and needs updating.'''&lt;br /&gt;
&lt;br /&gt;
== Main Additions / Changes ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
* Add [[dxDrawPrimitive3D]] and [[dxDrawMaterialPrimitive3D]] ([https://github.com/multitheftauto/mtasa-blue/pull/760 #760] by '''CrosRoad95''')&lt;br /&gt;
* Add functions to modify dynamic objects' behaviour ([https://github.com/multitheftauto/mtasa-blue/pull/784 #784] by '''forkerer''')&lt;br /&gt;
* Add dynamic ped ID allocating using [[engineRequestModel]] and [[engineFreeModel]] ([https://github.com/multitheftauto/mtasa-blue/commit/475544f1753ce1af24c4cdff7f0d0be48ede709b #349] by '''lopezloo''' + '''Neproify''' + '''Arran''' + '''qaisjp''')&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Statistics ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
These are some statistics since the [[Changes in 1.5.7|previous release]].&lt;br /&gt;
* This is the '''25&amp;lt;sup&amp;gt;th&amp;lt;/sup&amp;gt;''' 1.x.x release, planned to be released 6.6.2020&lt;br /&gt;
* '''{{date difference|2019|8|31}}''' days&lt;br /&gt;
* '''14''' new functions&lt;br /&gt;
* '''0''' new events&lt;br /&gt;
* '''0''' deprecations&lt;br /&gt;
* '''7''' bug fixes and changes&lt;br /&gt;
* '''111''' commits ([https://github.com/multitheftauto/mtasa-blue/compare/1.5.7...master see comparison])&lt;br /&gt;
* '''0''' new open Mantis issues&lt;br /&gt;
* '''0''' resolved Mantis issues&lt;br /&gt;
* '''5''' closed Mantis issues&lt;br /&gt;
* '''21''' new open GitHub issues ([https://github.com/multitheftauto/mtasa-blue/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aopen+is%3Aissue+created%3A%3E%3D2019-08-31 see list])&lt;br /&gt;
* '''12''' resolved GitHub issues ([https://github.com/multitheftauto/mtasa-blue/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aclosed+is%3Aissue+milestone%3A1.5.8 see list])&lt;br /&gt;
* '''9''' closed GitHub issues ([https://github.com/multitheftauto/mtasa-blue/issues?utf8=%E2%9C%93&amp;amp;q=is%3Aclosed+is%3Aissue+closed%3A%3E%3D2019-08-31+no%3Amilestone see list])&lt;br /&gt;
* '''4''' new open GitHub pull requests ([https://github.com/multitheftauto/mtasa-blue/pulls?utf8=%E2%9C%93&amp;amp;q=is%3Aopen+is%3Apr+created%3A%3E%3D2019-08-31 see list])&lt;br /&gt;
* '''15''' merged GitHub pull requests ([https://github.com/multitheftauto/mtasa-blue/pulls?q=is%3Apr+milestone%3A1.5.8+is%3Amerged see list])&lt;br /&gt;
* '''3''' closed GitHub pull requests ([https://github.com/multitheftauto/mtasa-blue/pulls?utf8=%E2%9C%93&amp;amp;q=is%3Apr+is%3Aunmerged+closed%3A%3E%3D2019-08-31 see list])&lt;br /&gt;
* '''15''' contributors of which '''2''' are new ([https://github.com/multitheftauto/mtasa-blue/graphs/contributors?from=2019-08-31&amp;amp;to=2020-08-31&amp;amp;type=c see list])&lt;br /&gt;
* '''67+''' total contributors ([https://github.com/multitheftauto/mtasa-blue/graphs/contributors see list])&lt;br /&gt;
* '''2''' vendor updates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
  We don't have the https://www.mediawiki.org/wiki/Extension:Variables extension installed,&lt;br /&gt;
  so remember to update the date in all parts below.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;sub&amp;gt;'''Note:''' Last update to these statistics was made&lt;br /&gt;
{{#ifeq: {{date difference|2019|10|9}} | 0 | today |&lt;br /&gt;
  {{#ifeq: {{date difference|2019|10|9}} | 1 | yesterday |&lt;br /&gt;
    {{date difference|2019|10|9}} days ago&lt;br /&gt;
  }}&lt;br /&gt;
}}.&amp;lt;/sub&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
=== 5 Backwards Incompatible Changes ===&lt;br /&gt;
These changes will take effect in 1.6:&lt;br /&gt;
* [[callRemote]] callbacks currently set the error code to '''nil''' when there is no error. In 1.6, to be consistent with [[fetchRemote]], the error code reported will be '''0'''. See [https://github.com/multitheftauto/mtasa-blue/issues/294 GitHub #294].&lt;br /&gt;
* Since July 2016 if you provide an invalid string like '''&amp;quot;randomstring&amp;quot;''' when a function expects a number, the string will be treated as '''0''' and raise a script warning. In 1.6 this will be an error. You will still be able to provide strings containing numbers (e.g. '''&amp;quot;100&amp;quot;''' and '''&amp;quot;12.34&amp;quot;'''), this change only affects invalid strings. See [https://github.com/multitheftauto/mtasa-blue/issues/1043 GitHub #1043].&lt;br /&gt;
* When providing a width and height of (0, 0) to [[createBrowser]] or [[guiCreateBrowser]] you will encounter a script error instead of a warning. The warning was introduced Feb 2019. See [https://github.com/multitheftauto/mtasa-blue/issues/1069 GitHub #1069].&lt;br /&gt;
* Some functions expect only unsigned integers (positive numbers), and since Jan 2016 providing negative numbers would be a warning. This will now be an error. See [https://github.com/multitheftauto/mtasa-blue/issues/1070 GitHub #1070].&lt;br /&gt;
* Since Aug 2015, we replaced the custom '''mtalocal://''' URL scheme with '''http://mta/resourceName/blah.html'''. This '''mtalocal://''' URL scheme will now be removed. See [https://github.com/multitheftauto/mtasa-blue/issues/1071 GitHub #1071].&lt;br /&gt;
&lt;br /&gt;
This list is inconclusive and we may introduce more changes later.&lt;br /&gt;
&lt;br /&gt;
=== Client ===&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
==== 11 New Functions ====&lt;br /&gt;
* Add [[setPedFightingStyle]] (previously available server-side only) ([https://github.com/multitheftauto/mtasa-blue/pull/810 #810] by '''StrixG''')&lt;br /&gt;
* Add [[setPedArmor]] (previously available server-side only) ([https://github.com/multitheftauto/mtasa-blue/pull/811 #811] by '''StrixG''')&lt;br /&gt;
* Add [[areVehicleLightsOn]] ([https://github.com/multitheftauto/mtasa-blue/pull/938 #938] by '''StrixG''')&lt;br /&gt;
* Add [[dxDrawPrimitive3D]] and [[dxDrawMaterialPrimitive3D]] ([https://github.com/multitheftauto/mtasa-blue/pull/760 #760] by '''CrosRoad95''')&lt;br /&gt;
* Add functions to modify dynamic objects' behaviour ([https://github.com/multitheftauto/mtasa-blue/pull/784 #784] by '''forkerer''')&lt;br /&gt;
** [[engineGetModelPhysicalPropertiesGroup]]&lt;br /&gt;
** [[engineRestoreModelPhysicalPropertiesGroup]]&lt;br /&gt;
** [[engineSetModelPhysicalPropertiesGroup]]&lt;br /&gt;
** [[engineGetObjectGroupPhysicalProperty]]&lt;br /&gt;
** [[engineRestoreObjectGroupPhysicalProperties]]&lt;br /&gt;
** [[engineSetObjectGroupPhysicalProperty]]&lt;br /&gt;
* Add dynamic ped ID allocating using [[engineRequestModel]] and [[engineFreeModel]] ([https://github.com/multitheftauto/mtasa-blue/commit/475544f1753ce1af24c4cdff7f0d0be48ede709b #349] by '''lopezloo''' + '''Neproify''' + '''Arran''' + '''qaisjp''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== New Events ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== Deprecations ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== New Arguments &amp;amp; Parameters ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== Bug Fixes &amp;amp; Changes ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Server ===&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
==== 2 New Functions ====&lt;br /&gt;
* Add [[setPlayerScriptDebugLevel]] and [[getPlayerScriptDebugLevel]] ([https://github.com/multitheftauto/mtasa-blue/pull/826 #826] by '''knitz12''')&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== New Events ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== Deprecations ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== New Arguments &amp;amp; Parameters ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==== Bug Fixes &amp;amp; Changes ====&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Fix [[callRemote]] to return 0 errno instead of nil upon success ([https://github.com/multitheftauto/mtasa-blue/pull/295 #295] by '''patrikjuvonen''')&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* Fix [[iprint]] to be able to read and output nil arguments properly ([https://github.com/multitheftauto/mtasa-blue/pull/1064 #1064] by '''TheNormalnij''')&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Shared (''Client &amp;amp; Server side'') ===&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
==== New Functions ====&lt;br /&gt;
* Add [[xmlLoadString]] ([https://github.com/multitheftauto/mtasa-blue/pull/809 #809] by '''LopSided''')&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==== New Events ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== Deprecations ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== New Arguments &amp;amp; Parameters ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
==== Bug Fixes &amp;amp; Changes ====&lt;br /&gt;
* Placeholder&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
=== 6 Bug Fixes &amp;amp; Changes ===&lt;br /&gt;
* Add new client setting to toggle external sounds ([https://github.com/multitheftauto/mtasa-blue/pull/834 #834] by '''patrikjuvonen''')&lt;br /&gt;
* Fix crash when attempting to stream out a sound that's not streamed in (See commit [https://github.com/multitheftauto/mtasa-blue/commit/e1b7c730448d12a5eeb452239e8053e86924294f e1b7c73] by '''sbx320''')&lt;br /&gt;
* Fix [[dxDrawCircle]] ''segments'' argument being wrongly offset by one ([https://github.com/multitheftauto/mtasa-blue/pull/1079 #1079] by '''ApeLsiN4eG''')&lt;br /&gt;
* Fix potential crash when moving objects (See commit [https://github.com/multitheftauto/mtasa-blue/commit/90895c221549893501f5f717af3ca56878e29b5d 90895c2] by '''botder''')&lt;br /&gt;
* Update credits (See commit [https://github.com/multitheftauto/mtasa-blue/commit/39227d795efafe940dc6c317c20b0162b1bd0bb3 39227d7] by '''qaisjp''')&lt;br /&gt;
* Don't apply damage to peds without a game entity (See commit [https://github.com/multitheftauto/mtasa-blue/commit/632130e36a96071290593fc3c677a536f7b19e1f 632130e] by '''botder''')&lt;br /&gt;
* Fix doors state with setElementModel ([https://github.com/multitheftauto/mtasa-blue/pull/599 #599] by '''FileEX''')&lt;br /&gt;
&lt;br /&gt;
=== 2 Vendor Updates ===&lt;br /&gt;
* Update BASS libraries (See commit [https://github.com/multitheftauto/mtasa-blue/commit/e5ede83b936e0e3c59d3670969e72b9583c0a219 e5ede83] by '''Dutchman101''')&lt;br /&gt;
* Update CEF from 76.1.13+gf19c584 (Chromium 76.0.3809.132) to 77.1.12+gc63c001 ([https://chromereleases.googleblog.com/2019/09/stable-channel-update-for-desktop_18.html Chromium 77.0.3865.90]) (See commit [https://github.com/multitheftauto/mtasa-blue/commit/28ba1da86b604ecfe36af957995cbda2d771a9b8 28ba1da] by '''Jusonex''')&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Server ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
=== Bug Fixes &amp;amp; Changes ===&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
=== Vendor Updates ===&lt;br /&gt;
* Placeholder&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Shared ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
=== Bug Fixes &amp;amp; Changes ===&lt;br /&gt;
* Placeholder&lt;br /&gt;
&lt;br /&gt;
=== Vendor Updates ===&lt;br /&gt;
* Placeholder&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&amp;lt;section show=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
* Placeholder&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Extra information ==&lt;br /&gt;
''More detailed information available on our GitHub repositories:&lt;br /&gt;
:* [https://github.com/multitheftauto/mtasa-blue MTA:SA Blue]&lt;br /&gt;
:* [https://github.com/multitheftauto/mtasa-resources MTA:SA Official Resources]&lt;br /&gt;
&lt;br /&gt;
[[Category:Changelog]]&lt;br /&gt;
[[Category:Incomplete]]&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsResourceProtected&amp;diff=66720</id>
		<title>IsResourceProtected</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsResourceProtected&amp;diff=66720"/>
		<updated>2020-05-31T17:31:01Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: Created page with &amp;quot;__NOTOC__  {{Server function}} &amp;lt;!-- Describe in plain english what this function does. Don't go into details, just give an overview --&amp;gt; {{New feature/item|3.0158|1.5.7|20468|...&amp;quot;&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;
{{New feature/item|3.0158|1.5.7|20468|&lt;br /&gt;
This will check if a resource is currently protected, as defined in [[Server_mtaserver.conf#resource|mtaserver.conf]].&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 isResourceProtected(resource theResource)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[resource]]:isProtected|protected}}&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;
*'''theResource:''' the resource to check&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 resource is 'protected', ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
{{Needs Example}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- todo&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;
{{Resource_functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Player_functions&amp;diff=66625</id>
		<title>Template:Player functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Player_functions&amp;diff=66625"/>
		<updated>2020-05-20T10:36:17Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[forcePlayerMap]]&lt;br /&gt;
* [[getAlivePlayers]]&lt;br /&gt;
* [[getDeadPlayers]]&lt;br /&gt;
* [[getPlayerACInfo]]&lt;br /&gt;
* [[getPlayerAnnounceValue]]&lt;br /&gt;
* [[getPlayerBlurLevel]]&lt;br /&gt;
* [[getPlayerCount]]&lt;br /&gt;
* [[getPlayerFromName]]&lt;br /&gt;
* [[getPlayerIdleTime]]&lt;br /&gt;
* [[getPlayerIP]]&lt;br /&gt;
* [[getPlayerMoney]]&lt;br /&gt;
* [[getPlayerName]]&lt;br /&gt;
* [[getPlayerNametagColor]]&lt;br /&gt;
* [[getPlayerNametagText]]&lt;br /&gt;
* [[getPlayerPing]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[getPlayerScriptDebugLevel]]&lt;br /&gt;
|19626}}&lt;br /&gt;
* [[getPlayerSerial]]&lt;br /&gt;
* [[getPlayerTeam]]&lt;br /&gt;
* [[getPlayerVersion]]&lt;br /&gt;
* [[getPlayerWantedLevel]]&lt;br /&gt;
* [[getRandomPlayer]]&lt;br /&gt;
* [[givePlayerMoney]]&lt;br /&gt;
* [[isPlayerMapForced]]&lt;br /&gt;
* [[isPlayerMuted]]&lt;br /&gt;
* [[isPlayerNametagShowing]]&lt;br /&gt;
* [[isVoiceEnabled]]&lt;br /&gt;
* [[redirectPlayer]]&lt;br /&gt;
{{New items|3.0152|1.5.1-7633|&lt;br /&gt;
*[[resendPlayerACInfo]]&lt;br /&gt;
}}&lt;br /&gt;
* [[resendPlayerModInfo]]&lt;br /&gt;
* [[setPlayerAnnounceValue]]&lt;br /&gt;
* [[setPlayerBlurLevel]]&lt;br /&gt;
* [[setPlayerHudComponentVisible]]&lt;br /&gt;
* [[setPlayerMoney]]&lt;br /&gt;
* [[setPlayerMuted]]&lt;br /&gt;
* [[setPlayerName]]&lt;br /&gt;
* [[setPlayerNametagColor]]&lt;br /&gt;
* [[setPlayerNametagShowing]]&lt;br /&gt;
* [[setPlayerNametagText]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[setPlayerScriptDebugLevel]]&lt;br /&gt;
|19626}}&lt;br /&gt;
* [[setPlayerTeam]]&lt;br /&gt;
* [[setPlayerVoiceBroadcastTo]]&lt;br /&gt;
* [[setPlayerVoiceIgnoreFrom]]&lt;br /&gt;
* [[setPlayerWantedLevel]]&lt;br /&gt;
* [[spawnPlayer]]&lt;br /&gt;
* [[takePlayerMoney]]&lt;br /&gt;
* [[takePlayerScreenShot]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetPlayerScriptDebugLevel&amp;diff=66624</id>
		<title>GetPlayerScriptDebugLevel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetPlayerScriptDebugLevel&amp;diff=66624"/>
		<updated>2020-05-20T10:36:12Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: ver&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;
{{New feature/item|3.0158|1.5.7|19626|&lt;br /&gt;
This will allow you to retrieve the player current debug script level.&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;
int getPlayerScriptDebugLevel( player thePlayer )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[player]]:getScriptDebugLevel|scriptDebugLevel}}&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;
*'''thePlayer:''' The person whose debug script level you want&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 an ''int'' with the player debug script level, ''false'' if the player is invalid.&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;
&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;
Displays a message in the chat what is the player's debug level.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showdebug (player)&lt;br /&gt;
    local level = getPlayerScriptDebugLevel( player )&lt;br /&gt;
    outputChatBox( &amp;quot;Your Script Debug Level: &amp;quot; .. level )&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler ( &amp;quot;showdebug&amp;quot;, showdebug )&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;
{{Player_functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetPlayerScriptDebugLevel&amp;diff=66623</id>
		<title>SetPlayerScriptDebugLevel</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetPlayerScriptDebugLevel&amp;diff=66623"/>
		<updated>2020-05-20T10:35:45Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: ver&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;
{{New feature/item|3.0158|1.5.7|19626|&lt;br /&gt;
This will set player's debug level, equivalent to [[Debugging|debugscript &amp;lt;level&amp;gt;]].&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 setPlayerScriptDebugLevel ( player thePlayer, int level )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
{{OOP||[[player]]:setScriptDebugLevel|scriptDebugLevel}}&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;
*'''thePlayer:''' The player whose debug level you wish to change&lt;br /&gt;
*'''level:''' 0: close debug console, 1: only errors, 2: errors and warnings, 3: errors, warnings and info messages&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 successful, ''false'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
&amp;lt;section name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
This code will set joining players debug level to (3), (It is no recommended to use it in production, specially if you have sensitive data in your logs).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEventHandler('onPlayerJoin', root, function()&lt;br /&gt;
    setPlayerScriptDebugLevel(source, 3)&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;
&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;
{{Player_functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Element_functions&amp;diff=66622</id>
		<title>Template:Element functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Element_functions&amp;diff=66622"/>
		<updated>2020-05-20T10:35:00Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[attachElements]]&lt;br /&gt;
*[[clearElementVisibleTo]]&lt;br /&gt;
*[[cloneElement]]&lt;br /&gt;
*[[createElement]]&lt;br /&gt;
*[[destroyElement]]&lt;br /&gt;
*[[detachElements]]&lt;br /&gt;
*[[getAllElementData]]&lt;br /&gt;
*[[getAttachedElements]]&lt;br /&gt;
*[[getElementAlpha]]&lt;br /&gt;
*[[getElementAttachedOffsets]]&lt;br /&gt;
*[[getElementAttachedTo]]&lt;br /&gt;
*[[getElementCollisionsEnabled]]&lt;br /&gt;
*[[getElementByID]]&lt;br /&gt;
*[[getElementByIndex]]&lt;br /&gt;
*[[getElementChild]]&lt;br /&gt;
*[[getElementChildren]]&lt;br /&gt;
*[[getElementChildrenCount]]&lt;br /&gt;
*[[getElementColShape]]&lt;br /&gt;
*[[getElementData]]&lt;br /&gt;
*[[getElementDimension]]&lt;br /&gt;
*[[getElementHealth]]&lt;br /&gt;
*[[getElementID]]&lt;br /&gt;
*[[getElementInterior]]&lt;br /&gt;
*[[getElementMatrix]]&lt;br /&gt;
*[[getElementModel]]&lt;br /&gt;
*[[getElementParent]]&lt;br /&gt;
*[[getElementPosition]]&lt;br /&gt;
*[[getElementRotation]]&lt;br /&gt;
*[[getElementSyncer]]&lt;br /&gt;
*[[getElementType]]&lt;br /&gt;
*[[getElementVelocity]]&lt;br /&gt;
*[[getElementZoneName]]&lt;br /&gt;
*[[getElementsByType]]&lt;br /&gt;
*[[getElementsWithinColShape]]&lt;br /&gt;
*[[getLowLODElement]]&lt;br /&gt;
*[[getRootElement]]&lt;br /&gt;
{{New items|3.0158|1.5.7|&lt;br /&gt;
*[[hasElementData]]&lt;br /&gt;
|20447}}&lt;br /&gt;
*[[isElement]]&lt;br /&gt;
*[[isElementAttached]]&lt;br /&gt;
*[[isElementCallPropagationEnabled]]&lt;br /&gt;
*[[isElementDoubleSided]]&lt;br /&gt;
*[[isElementFrozen]]&lt;br /&gt;
*[[isElementInWater]]&lt;br /&gt;
*[[isElementLowLOD]]&lt;br /&gt;
*[[isElementVisibleTo]]&lt;br /&gt;
*[[isElementWithinColShape]]&lt;br /&gt;
*[[isElementWithinMarker]]&lt;br /&gt;
*[[removeElementData]]&lt;br /&gt;
*[[setElementAlpha]]&lt;br /&gt;
{{New items|3.0156|1.5.5|&lt;br /&gt;
* [[setElementAngularVelocity]]&lt;br /&gt;
* [[getElementAngularVelocity]]&lt;br /&gt;
|14165}}&lt;br /&gt;
*[[setElementAttachedOffsets]]&lt;br /&gt;
*[[setElementCallPropagationEnabled]]&lt;br /&gt;
*[[setElementCollisionsEnabled]]&lt;br /&gt;
*[[setElementData]]&lt;br /&gt;
*[[setElementDimension]]&lt;br /&gt;
*[[setElementDoubleSided]]&lt;br /&gt;
*[[setElementFrozen]]&lt;br /&gt;
*[[setElementHealth]]&lt;br /&gt;
*[[setElementID]]&lt;br /&gt;
*[[setElementInterior]]&lt;br /&gt;
*[[setElementModel]]&lt;br /&gt;
*[[setElementParent]]&lt;br /&gt;
*[[setElementPosition]]&lt;br /&gt;
*[[setElementRotation]]&lt;br /&gt;
*[[setElementSyncer]]&lt;br /&gt;
*[[setElementVelocity]]&lt;br /&gt;
*[[setElementVisibleTo]]&lt;br /&gt;
*[[setLowLODElement]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=HasElementData&amp;diff=66621</id>
		<title>HasElementData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=HasElementData&amp;diff=66621"/>
		<updated>2020-05-20T10:34:47Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: ver&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
{{New feature/item|3.0158|1.5.7|20447|&lt;br /&gt;
This function checks if an element has [[element data]] available under a certain key.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool hasElementData ( element theElement, string key [, bool inherit = true] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[element]]:hasData}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theElement:''' This is the element with data you want to check.&lt;br /&gt;
*'''key:''' The name of the element data entry you want to check for. (Maximum 31 characters.)&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''inherit:''' - toggles whether or not the function should go up the hierarchy to find the requested key in case the specified element doesn't have it.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
This function returns ''true'' if the element contains element data for ''key'', or ''false'' if the element doesn't exist or there is no data associated with the ''key''.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example outputs a player's favorite animal using a console function 'favoriteAnimal' if they have one set.&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot; name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function favoriteAnimal ( source, commandName, playerName )&lt;br /&gt;
    local thePlayer = source&lt;br /&gt;
	if playerName then -- see if a player was specified&lt;br /&gt;
        thePlayer = getPlayerFromName (playerName) -- get the player element for the specified player&lt;br /&gt;
        if not thePlayer then -- if we still couldn't find a player with the specified name...&lt;br /&gt;
            outputChatBox ( &amp;quot;Couldn't find '&amp;quot; .. playerName .. &amp;quot;'&amp;quot;, source ) -- display an error&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if hasElementData ( thePlayer, &amp;quot;favoriteAnimal&amp;quot; ) then -- check if the player has a favorite animal set&lt;br /&gt;
        local favoriteAnimal = getElementData ( thePlayer, &amp;quot;favoriteAnimal&amp;quot; ) -- get the player's favorite animal&lt;br /&gt;
        outputChatBox ( getPlayerName ( thePlayer )..&amp;quot;'s favorite animal is: &amp;quot;..favoriteAnimal, source ) -- output the player's favorite animal&lt;br /&gt;
    else&lt;br /&gt;
        outputChatBox ( getPlayerName ( thePlayer )..&amp;quot; does not have a favorite animal!&amp;quot;, source ) -- output the player's lack of a favorite animal&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
-- Add a console command joinTime, that takes an optional parameter of a player's name&lt;br /&gt;
addCommandHandler ( &amp;quot;favoriteAnimal&amp;quot;, favoriteAnimal )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.5.7-9.20447|1.5.7-9.20447|}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Element functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Element_functions&amp;diff=66620</id>
		<title>Template:Element functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Element_functions&amp;diff=66620"/>
		<updated>2020-05-20T10:33:46Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[attachElements]]&lt;br /&gt;
*[[clearElementVisibleTo]]&lt;br /&gt;
*[[cloneElement]]&lt;br /&gt;
*[[createElement]]&lt;br /&gt;
*[[destroyElement]]&lt;br /&gt;
*[[detachElements]]&lt;br /&gt;
*[[getAllElementData]]&lt;br /&gt;
*[[getAttachedElements]]&lt;br /&gt;
*[[getElementAlpha]]&lt;br /&gt;
*[[getElementAttachedOffsets]]&lt;br /&gt;
*[[getElementAttachedTo]]&lt;br /&gt;
*[[getElementCollisionsEnabled]]&lt;br /&gt;
*[[getElementByID]]&lt;br /&gt;
*[[getElementByIndex]]&lt;br /&gt;
*[[getElementChild]]&lt;br /&gt;
*[[getElementChildren]]&lt;br /&gt;
*[[getElementChildrenCount]]&lt;br /&gt;
*[[getElementColShape]]&lt;br /&gt;
*[[getElementData]]&lt;br /&gt;
*[[getElementDimension]]&lt;br /&gt;
*[[getElementHealth]]&lt;br /&gt;
*[[getElementID]]&lt;br /&gt;
*[[getElementInterior]]&lt;br /&gt;
*[[getElementMatrix]]&lt;br /&gt;
*[[getElementModel]]&lt;br /&gt;
*[[getElementParent]]&lt;br /&gt;
*[[getElementPosition]]&lt;br /&gt;
*[[getElementRotation]]&lt;br /&gt;
*[[getElementSyncer]]&lt;br /&gt;
*[[getElementType]]&lt;br /&gt;
*[[getElementVelocity]]&lt;br /&gt;
*[[getElementZoneName]]&lt;br /&gt;
*[[getElementsByType]]&lt;br /&gt;
*[[getElementsWithinColShape]]&lt;br /&gt;
*[[getLowLODElement]]&lt;br /&gt;
*[[getRootElement]]&lt;br /&gt;
{{New items|3.0158|1.5.8|&lt;br /&gt;
*[[hasElementData]]&lt;br /&gt;
|20447}}&lt;br /&gt;
*[[isElement]]&lt;br /&gt;
*[[isElementAttached]]&lt;br /&gt;
*[[isElementCallPropagationEnabled]]&lt;br /&gt;
*[[isElementDoubleSided]]&lt;br /&gt;
*[[isElementFrozen]]&lt;br /&gt;
*[[isElementInWater]]&lt;br /&gt;
*[[isElementLowLOD]]&lt;br /&gt;
*[[isElementVisibleTo]]&lt;br /&gt;
*[[isElementWithinColShape]]&lt;br /&gt;
*[[isElementWithinMarker]]&lt;br /&gt;
*[[removeElementData]]&lt;br /&gt;
*[[setElementAlpha]]&lt;br /&gt;
{{New items|3.0156|1.5.5|&lt;br /&gt;
* [[setElementAngularVelocity]]&lt;br /&gt;
* [[getElementAngularVelocity]]&lt;br /&gt;
|14165}}&lt;br /&gt;
*[[setElementAttachedOffsets]]&lt;br /&gt;
*[[setElementCallPropagationEnabled]]&lt;br /&gt;
*[[setElementCollisionsEnabled]]&lt;br /&gt;
*[[setElementData]]&lt;br /&gt;
*[[setElementDimension]]&lt;br /&gt;
*[[setElementDoubleSided]]&lt;br /&gt;
*[[setElementFrozen]]&lt;br /&gt;
*[[setElementHealth]]&lt;br /&gt;
*[[setElementID]]&lt;br /&gt;
*[[setElementInterior]]&lt;br /&gt;
*[[setElementModel]]&lt;br /&gt;
*[[setElementParent]]&lt;br /&gt;
*[[setElementPosition]]&lt;br /&gt;
*[[setElementRotation]]&lt;br /&gt;
*[[setElementSyncer]]&lt;br /&gt;
*[[setElementVelocity]]&lt;br /&gt;
*[[setElementVisibleTo]]&lt;br /&gt;
*[[setLowLODElement]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=HasElementData&amp;diff=66619</id>
		<title>HasElementData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=HasElementData&amp;diff=66619"/>
		<updated>2020-05-20T10:33:29Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
{{New feature/item|3.0158|1.5.8|20447|&lt;br /&gt;
This function checks if an element has [[element data]] available under a certain key.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool hasElementData ( element theElement, string key [, bool inherit = true] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[element]]:hasData}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theElement:''' This is the element with data you want to check.&lt;br /&gt;
*'''key:''' The name of the element data entry you want to check for. (Maximum 31 characters.)&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''inherit:''' - toggles whether or not the function should go up the hierarchy to find the requested key in case the specified element doesn't have it.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
This function returns ''true'' if the element contains element data for ''key'', or ''false'' if the element doesn't exist or there is no data associated with the ''key''.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example outputs a player's favorite animal using a console function 'favoriteAnimal' if they have one set.&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot; name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function favoriteAnimal ( source, commandName, playerName )&lt;br /&gt;
    local thePlayer = source&lt;br /&gt;
	if playerName then -- see if a player was specified&lt;br /&gt;
        thePlayer = getPlayerFromName (playerName) -- get the player element for the specified player&lt;br /&gt;
        if not thePlayer then -- if we still couldn't find a player with the specified name...&lt;br /&gt;
            outputChatBox ( &amp;quot;Couldn't find '&amp;quot; .. playerName .. &amp;quot;'&amp;quot;, source ) -- display an error&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if hasElementData ( thePlayer, &amp;quot;favoriteAnimal&amp;quot; ) then -- check if the player has a favorite animal set&lt;br /&gt;
        local favoriteAnimal = getElementData ( thePlayer, &amp;quot;favoriteAnimal&amp;quot; ) -- get the player's favorite animal&lt;br /&gt;
        outputChatBox ( getPlayerName ( thePlayer )..&amp;quot;'s favorite animal is: &amp;quot;..favoriteAnimal, source ) -- output the player's favorite animal&lt;br /&gt;
    else&lt;br /&gt;
        outputChatBox ( getPlayerName ( thePlayer )..&amp;quot; does not have a favorite animal!&amp;quot;, source ) -- output the player's lack of a favorite animal&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
-- Add a console command joinTime, that takes an optional parameter of a player's name&lt;br /&gt;
addCommandHandler ( &amp;quot;favoriteAnimal&amp;quot;, favoriteAnimal )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.5.7-9.20447|1.5.7-9.20447|}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Element functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=HasElementData&amp;diff=66618</id>
		<title>HasElementData</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=HasElementData&amp;diff=66618"/>
		<updated>2020-05-20T10:33:05Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: fix version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ {{Server client function}}&lt;br /&gt;
{{New feature/item|3.0158|1.5.8|20447|&lt;br /&gt;
This function checks if an element has [[element data]] available under a certain key.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;bool hasElementData ( element theElement, string key [, bool inherit = true] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{OOP||[[element]]:hasData}}&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''theElement:''' This is the element with data you want to check.&lt;br /&gt;
*'''key:''' The name of the element data entry you want to check for. (Maximum 31 characters.)&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''inherit:''' - toggles whether or not the function should go up the hierarchy to find the requested key in case the specified element doesn't have it.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
This function returns ''true'' if the element contains element data for ''key'', or ''false'' if the element doesn't exist or there is no data associated with the ''key''.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example outputs a player's favorite animal using a console function 'favoriteAnimal' if they have one set.&lt;br /&gt;
&amp;lt;section show=&amp;quot;true&amp;quot; name=&amp;quot;Server&amp;quot; class=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function favoriteAnimal ( source, commandName, playerName )&lt;br /&gt;
    local thePlayer = source&lt;br /&gt;
	if playerName then -- see if a player was specified&lt;br /&gt;
        thePlayer = getPlayerFromName (playerName) -- get the player element for the specified player&lt;br /&gt;
        if not thePlayer then -- if we still couldn't find a player with the specified name...&lt;br /&gt;
            outputChatBox ( &amp;quot;Couldn't find '&amp;quot; .. playerName .. &amp;quot;'&amp;quot;, source ) -- display an error&lt;br /&gt;
            return&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if hasElementData ( thePlayer, &amp;quot;favoriteAnimal&amp;quot; ) then -- check if the player has a favorite animal set&lt;br /&gt;
        local favoriteAnimal = getElementData ( thePlayer, &amp;quot;favoriteAnimal&amp;quot; ) -- get the player's favorite animal&lt;br /&gt;
        outputChatBox ( getPlayerName ( thePlayer )..&amp;quot;'s favorite animal is: &amp;quot;..favoriteAnimal, source ) -- output the player's favorite animal&lt;br /&gt;
    else&lt;br /&gt;
        outputChatBox ( getPlayerName ( thePlayer )..&amp;quot; does not have a favorite animal!&amp;quot;, source ) -- output the player's lack of a favorite animal&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
-- Add a console command joinTime, that takes an optional parameter of a player's name&lt;br /&gt;
addCommandHandler ( &amp;quot;favoriteAnimal&amp;quot;, favoriteAnimal )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
{{Requirements|1.5.7-9.20447|1.5.7-9.20447|}}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Element functions}}&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Useful_Functions&amp;diff=66529</id>
		<title>Template:Useful Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Useful_Functions&amp;diff=66529"/>
		<updated>2020-05-13T00:58:59Z</updated>

		<summary type="html">&lt;p&gt;Qaisjp: /* Account functions */ deadlink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
=== Table functions ===&lt;br /&gt;
*[[isValueInTable]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns true if the value exists in the table, false if the value does not exist in the table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setTableToSql]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function is used to save the table in the database (sql).&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getTableFromSql]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This functionality is used to obtain saved tables using the function ([https://wiki.multitheftauto.com/wiki/SetTableToSql SetTableToSql ]).&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[rangeToTable]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts a string range to a table containing number values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setTableProtected]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function protects a table and makes it read-only.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[Sort_Functions]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» These functions are able to sort your tables by a key.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.compare]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether two given tables are equal.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.copy]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function copies a whole table and all the tables in that table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.empty]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether a table is empty.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.map]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function goes through a table and replaces every field with the return of the passed function, where the field's value is passed as first argument and optionally more arguments.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.merge]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function merges two or more tables together.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.random]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function retrieves a random value from a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.removeValue]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function removes a specified value from a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.size]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the absolute size of a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.getRandomRows]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns random rows from table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[table.element]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a new table with only userdata content.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ACL functions ===&lt;br /&gt;
*[[aclGroupClone]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function clone a group to another group with/without ACLs and/or objects.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInACLGroup]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns all players in an ACL group.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerAcls]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all ACL groups on a player.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerInACL]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a player element is in an ACL group.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[renameAclGroup]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gives an existing ACL group a new name.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Account functions ===&lt;br /&gt;
*[[getPlayerFromAccountName]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function is used to obtain a player by the name of his account.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Camera functions ===&lt;br /&gt;
*[[smoothMoveCamera]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to create a cinematic camera flight.&lt;br /&gt;
&lt;br /&gt;
=== Cursor functions ===&lt;br /&gt;
*[[getCursorMovedOn]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks in which way the cursor is currently moving.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Drawing functions ===&lt;br /&gt;
*[[dxDrawAnimWindow]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws an animated 2D window on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawBorderedRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a bordered rectangle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawBorderedText]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a bordered text.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawDashedLine]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a line with dashes.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRing]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a ring with dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawTextOnRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Esta funcion crea un rectangle con un texto dentro.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawGifImage]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function simulates the effect of a GIF image by using image sprites in 2D.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawImage3D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D image in GTA world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawSprite]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draw a sprite in the 3D world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawImageOnElement]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws an image on any element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawLinedRectangle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a rectangle outline with dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawLoading]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a loading bar on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawOctagon3D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function creates a 3D Octagon&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawPolygon]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a custom polygon on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRectangle3D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a 3D rectangle in GTA world.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawProgressBar]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function simulates a progress bar drawed using DirectDraw.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawTextOnElement]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function draws a text on any element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawTriangle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This is a function that will create a triangle with dx lines.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxGetFontSizeFromHeight]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the font size from given height.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxGetRealFontHeight]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the height of a font.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[wordWrap]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function breaks a long string into a table of separate lines limited to a specific length in pixels, for drawing separately.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[dxDrawRombo]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function creates a Rhombus.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Effects functions ===&lt;br /&gt;
*[[attachEffect]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you attach an effect to an element.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Elements functions === &lt;br /&gt;
*[[getElementSpeed]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the specified element's speed in m/s, km/h or mph.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementsInDimension]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of elements that are in the specified dimension.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getElementsWithinMarker]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of elements that are within a marker's collision shape.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementInPhotograph]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is in the player's camera picture area.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementInRange]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check if an element's range to a main point is within the maximum range.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementMoving]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is moving.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isElementWithinAColShape]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if an element is within a collision shape element.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[multi_check]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks one element to many, handy and clean.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setElementSpeed]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to set the speed of an element in kph or mph units.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Events ===&lt;br /&gt;
*[[onVehicleWeaponFire]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This code implements an event that is triggered when a player in a vehicle fires a vehicle's weapon.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Input functions ===&lt;br /&gt;
*[[bindControlKeys]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to bind each key bound to a control individually. Doing this bypasses a little MTA restriction.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getBoundControls]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of control names that are bound to the specified key.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[unbindControlKeys]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to unbind each key bound to a control individually. Use this function with [[bindControlKeys]].&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getClipboard]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This event returns the contents of the clipboard by pressing ctrl + v / ctrl + V. Event triggered ONLY if cursor is showing.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data functions === &lt;br /&gt;
*[[byte2human]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts an integer (number of bytes) into a human-readable unit.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[capitalize]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function capitalizes a given string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertServerTickToTimeStamp]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts server ticks to a unix timestamp.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertTextToSpeech]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts the provided text to a speech in the provided language which players can hear.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[findRotation]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function takes two points and returns the direction from point A to point B.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[findRotation3D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function takes two sets of XYZ coordinates. It returns the 3D direction from point A to point B.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[FormatDate]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function formats a date on the basis of a format string and returns it.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[formatNumber]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function formats large numbers by adding commas.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[generateString]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function generates a random string with any characters.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[generateRandomASCIIString]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a random string which uses ASCII characters. &amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getDistance]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Returns the distance between two elements.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getAge]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function calculates the age of a given birthday.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getDistanceBetweenPointAndSegment2D]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function takes point coordinates and line (a segment) starting and ending coordinates. It returns the shortest distance between the point and the line.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getEasterDate]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns easter date monthday and month for a given year.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getKeyFromValueInTable]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the key of the specified value in a table.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getOffsetFromXYZ]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to take an entity and a position and calculate the relative offset between them accounting for rotations.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPointFromDistanceRotation]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function finds a point based on a starting point, direction and distance.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRealMonthH]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function convert english months to arabic months&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRealMonthM]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gives you the real months name&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRGColorFromPercentage]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia', sans-serif; font-size:smaller;&amp;quot;&amp;gt;»This function returns two integers representing red and green colors according to the specified percentage.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getScreenRotationFromWorldPosition]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a screen relative rotation to a world position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getTimestamp]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the UNIX timestamp of a specified date and time.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isLeapYear]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a boolean representing if a given year is a leap year.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isValidMail]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether a provided e-mail string is valid.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[removeHex]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function is used to remove hexadecimal numbers (colors, for example) from strings.&lt;br /&gt;
*[[RGBToHex]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a string representing the color in hexadecimal.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[secondsToTimeDesc]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts a plain seconds-integer into a user-friendly time description.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.count]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function counts the amount of occurences of a string in a string.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[string.explode]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function splits a string at a given separator pattern and returns a table with the pieces.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[switch]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows the value of a variable or expression to control the flow of program execution via a multiway branch.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[toHex]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts a decimal number to a hexadecimal number, as a fix to be used client-side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[var dump]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function outputs information about one or more variables using outputConsole.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[wavelengthToRGBA]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts a physical wavelength of light to a RGBA color.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getDistanceBetweenElements]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Esta funcion sirve para obtener la distancia entre dos elementos.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GUI functions === &lt;br /&gt;
*[[centerWindow]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function centers a CEGUI window element responsively in any resolution.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiMoveElement]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function moves guiElement by/like using moveObject.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseOnGUICloseButton]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check whether the mouse cursor/pointer is within a gui-window's native close button.&amp;lt;/span&amp;gt;&lt;br /&gt;
=====Comboboxes=====&lt;br /&gt;
*[[guiComboBoxAdjustHeight]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function adjusts a CEGUI combobox element to have the correct height.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiComboBoxAddPlayersName]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function is add players name in combobox .&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Gridlists=====&lt;br /&gt;
*[[guiGridListAddPlayers]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function add all online players to a grid list.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListGetColumnIDFromTitle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gets a gridlist's column ID from the column title.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListSetColumnNonSortable]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function makes a gridlist column become non-sortable.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListSetColumnsFixedWidth]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function makes a gridlist have all its columns fixed width.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[guiGridListGetSelectedText]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a string containing the inner text of a selected gridlist item.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getGridListRowIndexFromText]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the GridList row index from the specified text.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isTextInGridList]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if some text exist or not in the GridList.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[convertGridListToText]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function converts grid list contents to text.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Labels=====&lt;br /&gt;
*[[guiLabelAddEffect]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function add an effects to the gui-label like (shadow, outline).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Marker functions ===&lt;br /&gt;
*[[createMarkerAttachedTo]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function creates a marker that is attached to an element.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Math functions ===&lt;br /&gt;
*[[mathNumber]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function is a workaround for the client-side floating-point precision of 24-bits.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.hypot]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the Hypotenuse of the triangle given by sides x and y.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.percent]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a percentage from two number values.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.round]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Rounds a number whereas the number of decimals to keep and the method may be set.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[reMap]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Re-maps a number from one range to another.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.isPointInPolygon]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Check if point is inside polygon or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.polygonArea]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Compute area of any polygon.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[math.randomDiff]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Generates a pseudo-random integer that's always different from the last random number generated.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Map functions ===&lt;br /&gt;
*[[assignLod]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function lets you conveniently generate and apply a LOD model to a mapping object&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ped functions ===&lt;br /&gt;
*[[getAlivePlayers (Client)|getAlivePlayers]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the alive players client-side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getAlivePlayersInTeam]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the alive players in a team.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInVehicles]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the players insides vehicles from a specified dimension.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getGuestPlayers]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gets a players not login or players Guest .&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getOnlineAdmins]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all logged-in administrators.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedEyesPosition]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to get peds eyes position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedMaxHealth]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a pedestrians's maximum health by converting it from their maximum health stat.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedMaxOxygenLevel]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a ped's maximum oxygen level by converting it from their maximum underwater stamina stat.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPedWeaponSkill]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a ped's corresponding weapon skill level name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerFromNamePart]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a player from partial name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayerFromSerial]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a player from their serial.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersByData]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of players that have the specified data name.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPlayersInPhotograph]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all players in photograph.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedAiming]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a pedestrian is aiming their weapon.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedAimingNearPed]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This is similar to isPedAiming but uses a colshape to be more precise.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPedDrivingVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a specified pedestrian is driving a vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isPlayerInTeam]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a player is in a specified team.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Player functions ===&lt;br /&gt;
*[[countPlayersInRange]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the number of players that are within a certain range of the specified coordinates.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[warpToPlayer]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function make player warp to another player.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resource functions ===&lt;br /&gt;
*[[getResourceScripts]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the resource scripts.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getResourceSettings]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of the resource settings.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[refreshResource]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function refreshes your resource if you changed any of the files&lt;br /&gt;
*[[setResourcePriority]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function set resource download priority group.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sound functions ===&lt;br /&gt;
*[[isSoundFinished]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a sound element has finished.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[stopSoundSlowly]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function stop your sound element slowly.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Browser functions ===&lt;br /&gt;
*[[playVideo]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function plays a video on the screen.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team functions ===&lt;br /&gt;
*[[getTeamFromColor]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a team element by the specified color.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getTeamWithFewestPlayers]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a team element with least players of all the specified teams.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vehicle functions ===&lt;br /&gt;
*[[findEmptyCarSeat]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function finds you the first empty seat in a vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getNearestVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gets the nearest vehicle to the specified player in a specified distance.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getRandomVehicle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gets a random vehicle.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getValidVehicleModels]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of all valid vehicle models.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getVehiclesCountByType]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the amount of vehicles by the given type as an integer value.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleEmpty]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether a vehicle is empty.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleOccupied]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a specified vehicle is occupied.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleOnRoof]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks whether vehicle is on roof.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleReversing]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a specified vehicle is moving backwards.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isVehicleUpgraded]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks is vehicle upgraded by upgrade ID.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setVehicleGravityPoint]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function sets a vehicle's gravity in the direction of a 3 dimensional coordinate with the strength specified.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getVehicleTurnVelocityCenterOfMass]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function gets a vehicle's turn velocity relative to the vehicle's center or mass.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[setVehicleTurnVelocityCenterOfMass]]&amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function sets a vehicle's turn velocity relative to the vehicle's center or mass.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Weapon functions === &lt;br /&gt;
*[[getJetpackWeaponsEnabled]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns a table of enabled weapons usable on a jetpack.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getPreviousAndNextWeapon]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the next weapon and previous.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XML functions ===&lt;br /&gt;
*[[getXMLNodes]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns all children of a XML node.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Utility ===&lt;br /&gt;
*[[animate]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to use interpolateBetween without render event and easily used.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[callClientFunction]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to call any client-side function from the server's side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[callServerFunction]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to call any server-side function from the client's side.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[check]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if its arguments are of the right type and calls the error-function if one is not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[coroutine.resume]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function applies a fix for hidden coroutine error messages.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getBanFromName]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This functions returns the ban of the given playername.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[getCurrentFPS]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns the frames per second at which GTA: SA is running.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[IfElse]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns one of two values based on a boolean expression.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseInCircle]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function checks if a cursor position is in circular area or not.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isMouseInPosition]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allows you to check whether the mouse cursor/pointer is within a rectangular position.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[isCharInString]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This shared function allows you to check if a char specified is in a string value.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[iterElements]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function returns ''a time-saving'' iterator for your for-loops.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[vector3:compare]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This method checks whether two vectors match, with optional precision.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[preprocessor]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» This function allow you to use gcc macros.&amp;lt;/span&amp;gt;&lt;br /&gt;
*[[PlotTrajectoryAtTime]] &amp;lt;span style=&amp;quot;color:gray; font-family:'Georgia',sans-serif; font-size:smaller;&amp;quot;&amp;gt;» Calculate projectile/water trajectory.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Useful Functions]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qaisjp</name></author>
	</entry>
</feed>