<?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=Lars</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=Lars"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Lars"/>
	<updated>2026-05-07T15:55:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Element_functions&amp;diff=52690</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=52690"/>
		<updated>2017-10-29T00:56:07Z</updated>

		<summary type="html">&lt;p&gt;Lars: isElementWaitingForGroundToLoad is a client-only function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[clearElementVisibleTo]]&lt;br /&gt;
*[[cloneElement]]&lt;br /&gt;
*[[createElement]]&lt;br /&gt;
*[[destroyElement]]&lt;br /&gt;
*[[getAllElementData]]&lt;br /&gt;
*[[getAttachedElements]]&lt;br /&gt;
*[[getElementAlpha]]&lt;br /&gt;
*[[getElementAttachedOffsets]]&lt;br /&gt;
*[[getElementCollisionsEnabled]]&lt;br /&gt;
*[[getElementAttachedTo]]&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;
*[[getElementParent]]&lt;br /&gt;
*[[getElementPosition]]&lt;br /&gt;
*[[getElementRotation]]&lt;br /&gt;
*[[getElementsByType]]&lt;br /&gt;
*[[getElementsWithinColShape]]&lt;br /&gt;
*[[getElementType]]&lt;br /&gt;
*[[getElementVelocity]]&lt;br /&gt;
*[[getElementZoneName]]&lt;br /&gt;
*[[getRootElement]]&lt;br /&gt;
*[[isElement]]&lt;br /&gt;
*[[isElementAttached]]&lt;br /&gt;
*[[isElementCallPropagationEnabled]]&lt;br /&gt;
*[[isElementDoubleSided]]&lt;br /&gt;
*[[isElementFrozen]]&lt;br /&gt;
*[[isElementVisibleTo]]&lt;br /&gt;
*[[isElementWithinColShape]]&lt;br /&gt;
*[[removeElementData]]&lt;br /&gt;
*[[setElementAlpha]]&lt;br /&gt;
*[[setElementCallPropagationEnabled]]&lt;br /&gt;
*[[setElementCollisionsEnabled]]&lt;br /&gt;
*[[setElementData]]&lt;br /&gt;
*[[setElementDoubleSided]]&lt;br /&gt;
*[[setElementDimension]]&lt;br /&gt;
*[[setElementFrozen]]&lt;br /&gt;
*[[setElementHealth]]&lt;br /&gt;
*[[setElementID]]&lt;br /&gt;
*[[setElementInterior]]&lt;br /&gt;
*[[setElementParent]]&lt;br /&gt;
*[[setElementPosition]]&lt;br /&gt;
*[[setElementSyncer]]&lt;br /&gt;
*[[setElementRotation]]&lt;br /&gt;
*[[setElementVelocity]]&lt;br /&gt;
*[[setElementVisibleTo]]&lt;br /&gt;
*[[attachElements]]&lt;br /&gt;
*[[detachElements]]&lt;br /&gt;
*[[getElementModel]]&lt;br /&gt;
*[[getElementSyncer]]&lt;br /&gt;
*[[isElementInWater]]&lt;br /&gt;
*[[setElementAttachedOffsets]]&lt;br /&gt;
*[[setElementModel]]&lt;br /&gt;
*[[setLowLODElement]]&lt;br /&gt;
*[[getLowLODElement]]&lt;br /&gt;
*[[isElementLowLOD]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=IsElementWaitingForGroundToLoad&amp;diff=52689</id>
		<title>IsElementWaitingForGroundToLoad</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=IsElementWaitingForGroundToLoad&amp;diff=52689"/>
		<updated>2017-10-29T00:54:29Z</updated>

		<summary type="html">&lt;p&gt;Lars: It's not a shared, it's a client-only function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{New feature/item|3.0140|1.4.0|6715|This function checks whether MTA has frozen an element because it is above map objects which are still loading or not.}}&lt;br /&gt;
{{Note|When vehicles are frozen waiting for collisions to load they '''do not''' overwrite the frozen status set by [[setElementFrozen]].}}&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 isElementWaitingForGroundToLoad ( element theElement )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{New feature/item|3.0141|1.4.0|6987|{{OOP||[[element]]:isWaitingForGroundToLoad|waitingForGroundToLoad}}}}&lt;br /&gt;
&lt;br /&gt;
===Required arguments===&lt;br /&gt;
* '''theElement:''' the element to check its frozen waiting for custom map objects to load status. It can be a [[vehicle]], [[ped]] or [[player]].&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'' if the specified [[element]] is frozen waiting for collisions of custom map objects to load. Returns ''false'' if it's not or if the specified [[element]] is invalid.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;section name=&amp;quot;Serverside example&amp;quot; class=&amp;quot;server&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
The next code snippet outputs a message when a vehicle respawns far away from players, above an [[object]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function notifyFarRespawnOnMap()&lt;br /&gt;
    if isElementWaitingForGroundToLoad(source) then&lt;br /&gt;
        outputChatBox(&amp;quot;* A &amp;quot; .. getVehicleName(source) .. &amp;quot; respawned above an object which is far away! Find it quick!&amp;quot;, root, 128, 255, 0)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onClientVehicleRespawn&amp;quot;, root, notifyFarRespawnOnMap)&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;
{{Element functions}}&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Authorized_Serial_Account_Protection&amp;diff=50896</id>
		<title>Authorized Serial Account Protection</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Authorized_Serial_Account_Protection&amp;diff=50896"/>
		<updated>2017-05-08T16:11:01Z</updated>

		<summary type="html">&lt;p&gt;Lars: fixed wrong ending xml-tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FAQ=&lt;br /&gt;
==Help, I can't login (game)==&lt;br /&gt;
To allow the last attempted serial, use the '''authserial''' command in the server console.&amp;lt;br/&amp;gt;&lt;br /&gt;
For example, to allow the last attempted serial for account ''MrBob'', enter the following command in the server console:&lt;br /&gt;
 authserial MrBob&lt;br /&gt;
==Help, I can't login (HTTP)==&lt;br /&gt;
To login to the HTTP web interface, the IP address has to be authorized.&lt;br /&gt;
To authorize an IP address:&lt;br /&gt;
* Join the MTA server&lt;br /&gt;
* Login to the account&lt;br /&gt;
* Disconnect from MTA server (optional)&lt;br /&gt;
* Login via HTTP&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=Main documentation=&lt;br /&gt;
==Introduction==&lt;br /&gt;
New from 1.5.3, Authorized Serial Account Protection provides a way to prevent password reuse causing damage to your server.&lt;br /&gt;
==How to enable==&lt;br /&gt;
Open '''mtaserver.conf''' and find ''&amp;lt;auth_serial_groups&amp;gt;'' and change to below.&lt;br /&gt;
(If ''&amp;lt;auth_serial_groups&amp;gt;'' does not exist, then add it)&lt;br /&gt;
 &amp;lt;auth_serial_groups&amp;gt;Admin&amp;lt;/auth_serial_groups&amp;gt;&lt;br /&gt;
If you wish to protect other ACL groups, then add them separated by commas, e.g.:&lt;br /&gt;
 &amp;lt;auth_serial_groups&amp;gt;Admin,SuperModerator&amp;lt;/auth_serial_groups&amp;gt;&lt;br /&gt;
==How to disable==&lt;br /&gt;
Open '''mtaserver.conf''' and find ''&amp;lt;auth_serial_groups&amp;gt;'' and change to below&lt;br /&gt;
 &amp;lt;auth_serial_groups&amp;gt;&amp;lt;/auth_serial_groups&amp;gt;&lt;br /&gt;
'''Note''': Authorized Serial Account Protection helps prevent your server from getting hacked. If there is a chance any of your admins are using the same password on other servers, then do not disable this feature.&lt;br /&gt;
==How to use==&lt;br /&gt;
To allow the last attempted serial for an account, enter the following command in the server console:&lt;br /&gt;
 authserial &amp;lt;account_name&amp;gt;&lt;br /&gt;
To view authorized serials for an account:&lt;br /&gt;
 authserial &amp;lt;account_name&amp;gt; list&lt;br /&gt;
To remove the newest authorized serial for an account:&lt;br /&gt;
 authserial &amp;lt;account_name&amp;gt; remove&lt;br /&gt;
To enable HTTP login from an unauthorized IP, use the following command to get a 7 digit code which should be appended to the HTTP login password ''(Requires server version 1.5.4-9.11302)''&lt;br /&gt;
 authserial &amp;lt;account_name&amp;gt; httppass&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:Client_world_functions&amp;diff=50773</id>
		<title>Template:Client world functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:Client_world_functions&amp;diff=50773"/>
		<updated>2017-04-22T14:08:35Z</updated>

		<summary type="html">&lt;p&gt;Lars: added setVehiclesLODDistance, getVehiclesLODDistanceand resetVehiclesLODDistance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[areTrafficLightsLocked]]&lt;br /&gt;
* [[createSWATRope]]&lt;br /&gt;
* [[getAircraftMaxHeight]]&lt;br /&gt;
* [[getAircraftMaxVelocity]]&lt;br /&gt;
* [[getBirdsEnabled]]&lt;br /&gt;
* [[getCloudsEnabled]]&lt;br /&gt;
* [[getFarClipDistance]]&lt;br /&gt;
* [[getFogDistance]]&lt;br /&gt;
* [[getGameSpeed]]&lt;br /&gt;
* [[getGarageBoundingBox]]&lt;br /&gt;
* [[getGaragePosition]]&lt;br /&gt;
* [[getGarageSize]]&lt;br /&gt;
* [[getGravity]]&lt;br /&gt;
* [[getGroundPosition]]&lt;br /&gt;
* [[getHeatHaze]]&lt;br /&gt;
* [[getInteriorFurnitureEnabled]]&lt;br /&gt;
* [[getInteriorSoundsEnabled]]&lt;br /&gt;
* [[getJetpackMaxHeight]]&lt;br /&gt;
* [[getMinuteDuration]]&lt;br /&gt;
* [[getMoonSize]]&lt;br /&gt;
{{New feature/item|3.0141|1.4.1|6948|&lt;br /&gt;
* [[getNearClipDistance]]&lt;br /&gt;
}}&lt;br /&gt;
* [[getOcclusionsEnabled]]&lt;br /&gt;
* [[getPlayerBlurLevel]]&lt;br /&gt;
* [[getRainLevel]]&lt;br /&gt;
* [[getScreenFromWorldPosition]]&lt;br /&gt;
* [[getSunColor]]&lt;br /&gt;
* [[getSunSize]]&lt;br /&gt;
* [[getTime]]&lt;br /&gt;
* [[getTrafficLightState]]&lt;br /&gt;
* [[getVehiclesLODDistance]]&lt;br /&gt;
* [[getWeather]]&lt;br /&gt;
* [[getWindVelocity]]&lt;br /&gt;
* [[getWorldFromScreenPosition]]&lt;br /&gt;
* [[getZoneName]]&lt;br /&gt;
* [[isAmbientSoundEnabled]]&lt;br /&gt;
* [[isGarageOpen]]&lt;br /&gt;
* [[isLineOfSightClear]]&lt;br /&gt;
* [[isWorldSoundEnabled]]&lt;br /&gt;
* [[isWorldSpecialPropertyEnabled]]&lt;br /&gt;
* [[processLineOfSight]]&lt;br /&gt;
* [[removeWorldModel]]&lt;br /&gt;
* [[resetAmbientSounds]]&lt;br /&gt;
* [[resetFarClipDistance]]&lt;br /&gt;
* [[resetFogDistance]]&lt;br /&gt;
* [[resetHeatHaze]]&lt;br /&gt;
* [[resetMoonSize]]&lt;br /&gt;
* [[resetRainLevel]]&lt;br /&gt;
* [[resetSkyGradient]]&lt;br /&gt;
* [[resetSunColor]]&lt;br /&gt;
* [[resetSunSize]]&lt;br /&gt;
* [[resetVehiclesLODDistance]]&lt;br /&gt;
* [[resetWindVelocity]]&lt;br /&gt;
* [[resetWorldSounds]]&lt;br /&gt;
* [[restoreAllWorldModels]]&lt;br /&gt;
* [[restoreWorldModel]]&lt;br /&gt;
* [[setAircraftMaxHeight]]&lt;br /&gt;
* [[setAircraftMaxVelocity]]&lt;br /&gt;
* [[setAmbientSoundEnabled]]&lt;br /&gt;
* [[setBirdsEnabled]]&lt;br /&gt;
* [[setCloudsEnabled]]&lt;br /&gt;
* [[setFarClipDistance]]&lt;br /&gt;
* [[setFogDistance]]&lt;br /&gt;
* [[setGameSpeed]]&lt;br /&gt;
* [[setGarageOpen]]&lt;br /&gt;
* [[setGravity]]&lt;br /&gt;
* [[setHeatHaze]]&lt;br /&gt;
* [[setInteriorFurnitureEnabled]]&lt;br /&gt;
* [[setInteriorSoundsEnabled]]&lt;br /&gt;
* [[setJetpackMaxHeight]]&lt;br /&gt;
* [[setMinuteDuration]]&lt;br /&gt;
* [[setMoonSize]]&lt;br /&gt;
{{New feature/item|3.0141|1.4.1|6948|&lt;br /&gt;
* [[setNearClipDistance]]&lt;br /&gt;
}}&lt;br /&gt;
* [[setOcclusionsEnabled]]&lt;br /&gt;
* [[setPlayerBlurLevel]]&lt;br /&gt;
* [[setRainLevel]]&lt;br /&gt;
* [[setSkyGradient]]&lt;br /&gt;
* [[setSunColor]]&lt;br /&gt;
* [[setSunSize]]&lt;br /&gt;
* [[setTime]]&lt;br /&gt;
* [[setTrafficLightState]]&lt;br /&gt;
* [[setTrafficLightsLocked]]&lt;br /&gt;
* [[setVehiclesLODDistance]]&lt;br /&gt;
* [[setWeather]]&lt;br /&gt;
* [[setWeatherBlended]]&lt;br /&gt;
* [[setWindVelocity]]&lt;br /&gt;
* [[setWorldSoundEnabled]]&lt;br /&gt;
* [[setWorldSpecialPropertyEnabled]]&lt;br /&gt;
* [[testLineAgainstWater]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:Functions templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Changes_in_1.5.4&amp;diff=50772</id>
		<title>Changes in 1.5.4</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Changes_in_1.5.4&amp;diff=50772"/>
		<updated>2017-04-22T14:04:41Z</updated>

		<summary type="html">&lt;p&gt;Lars: get/set VehiclesLODDistance insted of get/set VehicleLODDistance, added resetVehiclesLODDistance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Changelogs}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
* Changelog on Mantis: https://bugs.mtasa.com/changelog_page.php&lt;br /&gt;
* Full changelog: https://github.com/multitheftauto/mtasa-blue/commits/master?page=1&lt;br /&gt;
&lt;br /&gt;
== Main Additions / Changes ==&lt;br /&gt;
* Security tweaks for both server and client&lt;br /&gt;
* Enabled ''Authorized Serial Protection'' by default&lt;br /&gt;
* Code refactoring and improvements to our build system (also added Clang support)&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Client ===&lt;br /&gt;
* Added &amp;quot;sniper moon&amp;quot;, &amp;quot;random foliage&amp;quot; and &amp;quot;extra air resistance&amp;quot; properties to [[setWorldSpecialPropertyEnabled]] (thanks to '''ZReC''')&lt;br /&gt;
* Added [[getVehiclesLODDistance]], [[setVehiclesLODDistance]] and [[resetVehiclesLODDistance]] (thanks to '''lopezloo''')&lt;br /&gt;
* Added [[setDebugViewActive]]&lt;br /&gt;
&lt;br /&gt;
=== Shared (''Client &amp;amp; Server side'') ===&lt;br /&gt;
* Added [[passwordHash]] and [[passwordVerify]]&lt;br /&gt;
* Added ''queue'' name parameter to [[fetchRemote]] to support parallel downloads&lt;br /&gt;
* [[setElementDimension]] now supports element omnipresence, which means that an element can be in all dimensions at once (thanks to '''zneext''')&lt;br /&gt;
&lt;br /&gt;
== Client ==&lt;br /&gt;
&lt;br /&gt;
=== Client: Additions ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Client: Bugfixes &amp;amp; Changes ===&lt;br /&gt;
* Corona markers should now have a correct attach offset position (thanks to '''lopezloo''')&lt;br /&gt;
* Fixed very lage radar areas not being visible (thanks to '''ZReC''')&lt;br /&gt;
* Disabled CEF sandbox due to problems (might be re-enabled soon)&lt;br /&gt;
* Updated CEF and other 3rd party dependencies&lt;br /&gt;
* Fixes for some crashes and improvements for error handling for installation and startup issues&lt;br /&gt;
* Removed max password length limit for server account passwords (thanks to '''4O4''')&lt;br /&gt;
* Improved multi-monitor support in windowed fullscreen mode&lt;br /&gt;
* Improved performance of [[dxGetPixelsSize]]&lt;br /&gt;
* Tweaked joystick support&lt;br /&gt;
* Fixed [[playSound]] not supporting unicode in URLs&lt;br /&gt;
* Increased default max streaming memory&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
=== Server: Additions ===&lt;br /&gt;
* Added ''fakelag'' command&lt;br /&gt;
* Added option to allow locally modified (gta3.img) vehicles &lt;br /&gt;
&lt;br /&gt;
=== Server: Bugfixes &amp;amp; Changes ===&lt;br /&gt;
* Enabled ''Authorized Serial Account Protection'' by default&lt;br /&gt;
* Enabled ''Database Credentials Protection'' by default&lt;br /&gt;
* Fixes for weapons/fists desync&lt;br /&gt;
* SQLite or MySQL no longer makes the server freeze if the connection is lost&lt;br /&gt;
* Goggles no longer stay after player was killed (thanks to '''ArranTuna''')&lt;br /&gt;
* Fixed console input via pipe on Windows&lt;br /&gt;
* Added option &amp;quot;-u&amp;quot; to server command line to disable stdout buffering (useful for screenlog)&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Added new special detections to ''acpanel''&lt;br /&gt;
* Added anti-command spam to ''freeroam'' (thanks to '''dutchman101''')&lt;br /&gt;
* Fixed vehicle kills not being displayed properly (thanks to '''ArranTuna''')&lt;br /&gt;
* Fixed abusable glitch in /anim command in ''freeroam'' (thanks to '''dutchman101''')&lt;br /&gt;
* Added graceful exitting to ''webbrowser''&lt;br /&gt;
* Fixed run commands overwritng 'results' global variable in ''runcode''&lt;br /&gt;
&lt;br /&gt;
== Editor ==&lt;br /&gt;
* Disabled breathing sounds&lt;br /&gt;
&lt;br /&gt;
== Extra information ==&lt;br /&gt;
''More detailed information available on [https://bugs.multitheftauto.com/changelog_page.php Bug tracker Changelog] and 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>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:GUI_functions&amp;diff=50769</id>
		<title>Template:GUI functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:GUI_functions&amp;diff=50769"/>
		<updated>2017-04-22T13:36:22Z</updated>

		<summary type="html">&lt;p&gt;Lars: Added setDebugViewActive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
* [[getChatboxLayout]]&lt;br /&gt;
* [[guiBringToFront]]&lt;br /&gt;
* [[guiCreateFont]]&lt;br /&gt;
* [[guiGetAlpha]]&lt;br /&gt;
* [[guiGetEnabled]]&lt;br /&gt;
* [[guiGetFont]]&lt;br /&gt;
* [[guiGetInputEnabled]]&lt;br /&gt;
* [[guiGetInputMode]]&lt;br /&gt;
* [[guiGetPosition]]&lt;br /&gt;
* [[guiGetProperties]]&lt;br /&gt;
* [[guiGetProperty]]&lt;br /&gt;
* [[guiGetScreenSize]]&lt;br /&gt;
* [[guiGetSize]]&lt;br /&gt;
* [[guiGetText]]&lt;br /&gt;
* [[guiGetVisible]]&lt;br /&gt;
* [[guiMoveToBack]]&lt;br /&gt;
* [[guiSetAlpha]]&lt;br /&gt;
* [[guiSetEnabled]]&lt;br /&gt;
* [[guiSetFont]]&lt;br /&gt;
* [[guiSetInputEnabled]]&lt;br /&gt;
* [[guiSetInputMode]]&lt;br /&gt;
* [[guiSetPosition]]&lt;br /&gt;
* [[guiSetProperty]]&lt;br /&gt;
* [[guiSetSize]]&lt;br /&gt;
* [[guiSetText]]&lt;br /&gt;
* [[guiSetVisible]]&lt;br /&gt;
* [[isChatBoxInputActive]]&lt;br /&gt;
* [[isConsoleActive]]&lt;br /&gt;
* [[isDebugViewActive]]&lt;br /&gt;
* [[isMainMenuActive]]&lt;br /&gt;
* [[isMTAWindowActive]]&lt;br /&gt;
* [[isTransferBoxActive]]&lt;br /&gt;
* [[setDebugViewActive]]&lt;br /&gt;
&lt;br /&gt;
===Browsers=== &amp;lt;!-- Please see the Template:CEF when updating this --&amp;gt;&lt;br /&gt;
* [[guiCreateBrowser]]&lt;br /&gt;
* [[guiGetBrowser]]&lt;br /&gt;
&lt;br /&gt;
===Buttons===&lt;br /&gt;
* [[guiCreateButton]]&lt;br /&gt;
&lt;br /&gt;
===Checkboxes===&lt;br /&gt;
* [[guiCheckBoxGetSelected]]&lt;br /&gt;
* [[guiCheckBoxSetSelected]]&lt;br /&gt;
* [[guiCreateCheckBox]]&lt;br /&gt;
&lt;br /&gt;
===Comboboxes===&lt;br /&gt;
* [[guiCreateComboBox]]&lt;br /&gt;
* [[guiComboBoxAddItem]]&lt;br /&gt;
* [[guiComboBoxClear]]&lt;br /&gt;
* [[guiComboBoxGetItemText]]&lt;br /&gt;
* [[guiComboBoxSetItemText]]&lt;br /&gt;
* [[guiComboBoxRemoveItem]]&lt;br /&gt;
* [[guiComboBoxGetSelected]]&lt;br /&gt;
* [[guiComboBoxSetSelected]]&lt;br /&gt;
&lt;br /&gt;
===Edit Fields===&lt;br /&gt;
* [[guiCreateEdit]]&lt;br /&gt;
* [[guiEditSetMasked]]&lt;br /&gt;
* [[guiEditSetMaxLength]]&lt;br /&gt;
* [[guiEditSetReadOnly]]&lt;br /&gt;
* [[guiEditSetCaretIndex]]&lt;br /&gt;
{{New feature/item|3.0135|1.3.5|6054|&lt;br /&gt;
* [[guiEditGetCaretIndex]]&lt;br /&gt;
}}&lt;br /&gt;
===Gridlists===&lt;br /&gt;
* [[guiCreateGridList]]&lt;br /&gt;
* [[guiGridListAddColumn]]&lt;br /&gt;
* [[guiGridListAddRow]]&lt;br /&gt;
* [[guiGridListAutoSizeColumn]]&lt;br /&gt;
* [[guiGridListClear]]&lt;br /&gt;
* [[guiGridListGetItemData]]&lt;br /&gt;
* [[guiGridListGetItemText]]&lt;br /&gt;
* [[guiGridListGetRowCount]]&lt;br /&gt;
* [[guiGridListGetSelectedItem]]&lt;br /&gt;
* [[guiGridListInsertRowAfter]]&lt;br /&gt;
* [[guiGridListRemoveColumn]]&lt;br /&gt;
* [[guiGridListRemoveRow]]&lt;br /&gt;
* [[guiGridListSetItemData]]&lt;br /&gt;
* [[guiGridListSetItemText]]&lt;br /&gt;
* [[guiGridListSetScrollBars]]&lt;br /&gt;
* [[guiGridListSetSelectedItem]]&lt;br /&gt;
* [[guiGridListSetSelectionMode]]&lt;br /&gt;
* [[guiGridListSetSortingEnabled]]&lt;br /&gt;
* [[guiGridListGetSelectedCount]]&lt;br /&gt;
* [[guiGridListGetSelectedItems]]&lt;br /&gt;
* [[guiGridListSetColumnWidth]]&lt;br /&gt;
* [[guiGridListGetColumnCount]]&lt;br /&gt;
* [[guiGridListGetItemColor]]&lt;br /&gt;
* [[guiGridListSetItemColor]]&lt;br /&gt;
* [[guiGridListGetColumnTitle]]&lt;br /&gt;
* [[guiGridListSetColumnTitle]]&lt;br /&gt;
* [[guiGridListGetHorizontalScrollPosition]]&lt;br /&gt;
* [[guiGridListSetHorizontalScrollPosition]]&lt;br /&gt;
* [[guiGridListGetVerticalScrollPosition]]&lt;br /&gt;
* [[guiGridListSetVerticalScrollPosition]]&lt;br /&gt;
{{New feature/item|3.0141|1.4.1|6926|&lt;br /&gt;
* [[guiGridListGetColumnWidth]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Memos===&lt;br /&gt;
* [[guiCreateMemo]]&lt;br /&gt;
* [[guiMemoSetReadOnly]]&lt;br /&gt;
* [[guiMemoSetCaretIndex]]&lt;br /&gt;
{{New feature/item|3.0135|1.3.5|6054|&lt;br /&gt;
* [[guiMemoGetCaretIndex]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Progressbars===&lt;br /&gt;
* [[guiCreateProgressBar]]&lt;br /&gt;
* [[guiProgressBarGetProgress]]&lt;br /&gt;
* [[guiProgressBarSetProgress]]&lt;br /&gt;
&lt;br /&gt;
===Radio Buttons===&lt;br /&gt;
* [[guiCreateRadioButton]]&lt;br /&gt;
* [[guiRadioButtonGetSelected]]&lt;br /&gt;
* [[guiRadioButtonSetSelected]]&lt;br /&gt;
&lt;br /&gt;
===Scrollbars===&lt;br /&gt;
* [[guiCreateScrollBar]]&lt;br /&gt;
* [[guiScrollBarGetScrollPosition]]&lt;br /&gt;
* [[guiScrollBarSetScrollPosition]]&lt;br /&gt;
&lt;br /&gt;
===Scrollpanes===&lt;br /&gt;
* [[guiCreateScrollPane]]&lt;br /&gt;
* [[guiScrollPaneGetHorizontalScrollPosition]]&lt;br /&gt;
* [[guiScrollPaneGetVerticalScrollPosition]]&lt;br /&gt;
* [[guiScrollPaneSetHorizontalScrollPosition]]&lt;br /&gt;
* [[guiScrollPaneSetScrollBars]]&lt;br /&gt;
* [[guiScrollPaneSetVerticalScrollPosition]]&lt;br /&gt;
&lt;br /&gt;
===Static Images===&lt;br /&gt;
* [[guiCreateStaticImage]]&lt;br /&gt;
* [[guiStaticImageGetNativeSize]]&lt;br /&gt;
* [[guiStaticImageLoadImage]]&lt;br /&gt;
&lt;br /&gt;
===Tab Panels===&lt;br /&gt;
* [[guiCreateTabPanel]]&lt;br /&gt;
* [[guiGetSelectedTab]]&lt;br /&gt;
* [[guiSetSelectedTab]]&lt;br /&gt;
&lt;br /&gt;
===Tabs===&lt;br /&gt;
* [[guiCreateTab]]&lt;br /&gt;
* [[guiDeleteTab]]&lt;br /&gt;
&lt;br /&gt;
===Text Labels===&lt;br /&gt;
* [[guiCreateLabel]]&lt;br /&gt;
* [[guiLabelGetFontHeight]]&lt;br /&gt;
* [[guiLabelGetTextExtent]]&lt;br /&gt;
* [[guiLabelSetColor]]&lt;br /&gt;
* [[guiLabelSetHorizontalAlign]]&lt;br /&gt;
* [[guiLabelSetVerticalAlign]]&lt;br /&gt;
{{New feature/item|3.0132|1.3.1|4670|&lt;br /&gt;
* [[guiLabelGetColor]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
* [[guiCreateWindow]]&lt;br /&gt;
* [[guiWindowSetMovable]]&lt;br /&gt;
* [[guiWindowSetSizable]]&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>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetDebugViewActive&amp;diff=50768</id>
		<title>SetDebugViewActive</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetDebugViewActive&amp;diff=50768"/>
		<updated>2017-04-22T13:34:44Z</updated>

		<summary type="html">&lt;p&gt;Lars: Created page with &amp;quot;{{Client function}} __NOTOC__ This function enables or disables the debug window.  ==Syntax==  &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt; bool setDebugViewActive ( bool enabled ) &amp;lt;/syntaxhi...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Client function}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
This function enables or disables the debug window.&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 setDebugViewActive ( bool enabled )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
* '''enabled:''' true if debug window should be visible, false otherwise.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns ''true'', ''false'' if invalid parameters are passed.&lt;br /&gt;
&lt;br /&gt;
==Example== &lt;br /&gt;
This example enables or disables the debug window.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function enableDebug()&lt;br /&gt;
	local state = not isDebugViewEnabled()&lt;br /&gt;
	setDebugViewActive(state)&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;debug&amp;quot;, enableDebug)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{GUI_functions}}&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Template:CEF_functions&amp;diff=50618</id>
		<title>Template:CEF functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Template:CEF_functions&amp;diff=50618"/>
		<updated>2017-04-09T18:00:47Z</updated>

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

		<summary type="html">&lt;p&gt;Lars: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Useful Function}}&amp;lt;lowercasetitle/&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{Warning|This function is not working anymore due to Google blocking non-user calls to their TTS API. Plase feel free to fix it by using another public and reliable TTS API.|1}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This useful shared function converts some text to audible speech using Google's TTS.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;boolean, element, string convertTextToSpeech ( string text [, table/element broadcastTo = root, string language = &amp;quot;en&amp;quot; ] )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Required arguments==&lt;br /&gt;
* ''text'': the text to convert to speech.&lt;br /&gt;
&lt;br /&gt;
==Optional arguments==&lt;br /&gt;
* ''broadcastTo'': if it's a regular indexed table, the speech will be broadcasted to the players contained in it. If it's a element, the speech will be heard by the players which are children of that element. This parameter is '''ONLY''' serverside; if you're using this function clientside this will be considered as the ''language'' argument.&lt;br /&gt;
* ''language'': defines the language of the TTS output.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
* This function returns ''[[nil]]'' and outputs an error if an argument it's not valid.&lt;br /&gt;
* If called serverside and if all arguments are valid, this function returns ''true'' if the client was successully told to play the TTS (althrough this doesn't mean that the client will always play the speech); ''false'' otherwise.&lt;br /&gt;
* If called clientside and if all arguments are valid, this function returns ''true'', the corresponding [[sound]] element and its URL if the sound could theorically be played (althrough it may not play); ''[[nil]]'' otherwise.&lt;br /&gt;
&lt;br /&gt;
==Function source==&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;
addEvent(&amp;quot;playTTS&amp;quot;, true) -- Add the event&lt;br /&gt;
&lt;br /&gt;
local function playTTS(text, lang)&lt;br /&gt;
    --local URL = &amp;quot;http://translate.google.com/translate_tts?tl=&amp;quot; .. lang .. &amp;quot;&amp;amp;q=&amp;quot; .. text&lt;br /&gt;
    local URL = &amp;quot;https://code.responsivevoice.org/getvoice.php?tl=&amp;quot; .. lang .. &amp;quot;&amp;amp;t=&amp;quot; .. text&lt;br /&gt;
    -- Play the TTS. BASS returns the sound element even if it can not be played.&lt;br /&gt;
    return true, playSound(URL), URL&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;playTTS&amp;quot;, root, playTTS)&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;Shared (server and client)&amp;quot; class=&amp;quot;both&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function convertTextToSpeech(text, broadcastTo, lang)&lt;br /&gt;
    -- Ensure first argument is valid&lt;br /&gt;
    assert(type(text) == &amp;quot;string&amp;quot;, &amp;quot;Bad argument 1 @ convertTextToSpeech [ string expected, got &amp;quot; .. type(text) .. &amp;quot;]&amp;quot;)&lt;br /&gt;
    assert(#text &amp;lt;= 100, &amp;quot;Bad argument 1 @ convertTextToSpeech [ too long string; 100 characters maximum ]&amp;quot;)&lt;br /&gt;
    if triggerClientEvent then -- Is this function called serverside?&lt;br /&gt;
        -- Ensure second and third arguments are valid&lt;br /&gt;
        assert(broadcastTo == nil or type(broadcastTo) == &amp;quot;table&amp;quot; or isElement(broadcastTo), &amp;quot;Bad argument 2 @ convertTextToSpeech [ table/element expected, got &amp;quot; .. type(broadcastTo) .. &amp;quot;]&amp;quot;)&lt;br /&gt;
        assert(lang == nil or type(lang) == &amp;quot;string&amp;quot;, &amp;quot;Bad argument 3 @ convertTextToSpeech [ string expected, got &amp;quot; .. type(lang) .. &amp;quot;]&amp;quot;)&lt;br /&gt;
        -- Tell the client to play the speech&lt;br /&gt;
        return triggerClientEvent(broadcastTo or root, &amp;quot;playTTS&amp;quot;, root, text, lang or &amp;quot;en&amp;quot;)&lt;br /&gt;
    else -- This function is executed clientside&lt;br /&gt;
        local lang = broadcastTo&lt;br /&gt;
        -- Ensure second argument is valid&lt;br /&gt;
        assert(lang == nil or type(lang) == &amp;quot;string&amp;quot;, &amp;quot;Bad argument 2 @ convertTextToSpeech [ string expected, got &amp;quot; .. type(lang) .. &amp;quot;]&amp;quot;)&lt;br /&gt;
        return playTTS(text, lang or &amp;quot;en&amp;quot;)&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;
*Original author: ''Has[S]oN''.&lt;br /&gt;
*Skype: ''hassan.saad2000''&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This example disables text chat and converts that text to a speech audible to nearby players. '''NOTE''': this example requires 1.4 in order to work.&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 function tellClientsToPlayTTS(text, type)&lt;br /&gt;
    if type == 0 and #text &amp;lt;= 100 then -- We only want to replace normal chat if possible&lt;br /&gt;
        local x, y, z = getElementPosition(source)&lt;br /&gt;
        local col = createColSphere(x, y, z, 30) -- We need this to get nearby players&lt;br /&gt;
        triggerClientEvent(getElementsWithinColShape(col, &amp;quot;player&amp;quot;), &amp;quot;playChatTTS&amp;quot;, source, text) -- Tell the nearby clients to play the sound&lt;br /&gt;
        destroyElement(col)&lt;br /&gt;
        cancelEvent() -- Replace text chat&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;onPlayerChat&amp;quot;, root, tellClientsToPlayTTS)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&amp;lt;section name=&amp;quot;Client&amp;quot; class=&amp;quot;client&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
addEvent(&amp;quot;playChatTTS&amp;quot;, true) -- Add the event&lt;br /&gt;
&lt;br /&gt;
local function playChatTTS(text)&lt;br /&gt;
    local lang = (getLocalization().code):sub(1, 2) -- Output the TTS in the local player language, but don't bother about variants&lt;br /&gt;
    local _, speech, URL = convertTextToSpeech(text, lang)&lt;br /&gt;
    -- Convert that speech to a 3D sound&lt;br /&gt;
    destroyElement(speech)&lt;br /&gt;
    local x, y, z = getElementPosition(source)&lt;br /&gt;
    local speech = playSound3D(URL, x, y, z)&lt;br /&gt;
    attachElements(speech, source) -- Make the sound follow the player&lt;br /&gt;
    setElementDimension(speech, getElementDimension(source))&lt;br /&gt;
    setSoundMinDistance(speech, 15)&lt;br /&gt;
    setSoundMaxDistance(speech, 30)&lt;br /&gt;
    -- Tricky thing ahead: make the player mouth move, but without rendering him unable to move&lt;br /&gt;
    setPedAnimation(source, &amp;quot;ped&amp;quot;, &amp;quot;factalk&amp;quot;, 0, true)&lt;br /&gt;
    setPedAnimation(source, &amp;quot;ped&amp;quot;, &amp;quot;factalk&amp;quot;, 0, true)&lt;br /&gt;
    -- Reset the player mouth after the speech has ended&lt;br /&gt;
    setTimer(function(player)&lt;br /&gt;
        if isElement(player) then&lt;br /&gt;
            setPedAnimation(player) -- Clear the animation&lt;br /&gt;
        end&lt;br /&gt;
    end, math.max(getSoundLength(speech) * 1000, 50), 1, source)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler(&amp;quot;playChatTTS&amp;quot;, root, playChatTTS)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Useful Functions}}&lt;/div&gt;</summary>
		<author><name>Lars</name></author>
	</entry>
</feed>