<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.gtaconnected.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mex</id>
	<title>GTA Connected - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gtaconnected.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mex"/>
	<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/Special:Contributions/Mex"/>
	<updated>2026-06-04T20:32:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=triggerNetworkEvent&amp;diff=11470</id>
		<title>triggerNetworkEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=triggerNetworkEvent&amp;diff=11470"/>
		<updated>2026-06-02T17:24:48Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem&lt;br /&gt;
|offline = false&lt;br /&gt;
|endpoint = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|name = triggerNetworkEvent&lt;br /&gt;
|usage = trigger a custom network event&lt;br /&gt;
|parametersSS = string networkEventName, null or Client client, [ ... ]&lt;br /&gt;
|parametersCS = string networkEventName, [ ... ]&lt;br /&gt;
|parameter1 = string networkEventName The name of the network event, case-insensitive.&lt;br /&gt;
|parameter2 = Client client Can be null. The client to trigger the network event for.&lt;br /&gt;
|parameter3 = vararg ... optional n/a Arguments to send to the scripting functions that are bound to the network event.&lt;br /&gt;
|callbackParametersSS = Client client, ...&lt;br /&gt;
|callbackParametersCS = ...&lt;br /&gt;
|return1 = void&lt;br /&gt;
|returnFail1 = void&lt;br /&gt;
|notes = When used in a server script, use null to send the event to all clients or specify a client object. See [[Shared/Functions/Network/addNetworkHandler|addNetworkHandler]] for information regarding custom event handler functions.&amp;lt;br&amp;gt;Network events are sent reliable and ordered.&amp;lt;br&amp;gt;Passing &amp;lt;code&amp;gt;vararg&amp;lt;/code&amp;gt; arguments that are not default types of GTA:C, the function will fail. Sending multidimensional arrays is supported.&lt;br /&gt;
|exampleJSSS = function makeCivilianWalkToPos(civilian, x, y, z) {&lt;br /&gt;
    triggerNetworkEvent(&amp;quot;walkToPos&amp;quot;, null, civilian, x, y);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=triggerNetworkEvent&amp;diff=11469</id>
		<title>triggerNetworkEvent</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=triggerNetworkEvent&amp;diff=11469"/>
		<updated>2026-06-02T17:22:22Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem&lt;br /&gt;
|offline = false&lt;br /&gt;
|endpoint = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|name = triggerNetworkEvent&lt;br /&gt;
|usage = trigger a custom network event&lt;br /&gt;
|parametersSS = string networkEventName, null or Client client, [ ... ]&lt;br /&gt;
|parametersCS = string networkEventName, [ ... ]&lt;br /&gt;
|parameter1 = string networkEventName The name of the network event, case-insensitive.&lt;br /&gt;
|parameter2 = Client client Can be null. The client to trigger the network event for.&lt;br /&gt;
|parameter3 = vararg ... optional n/a Arguments to send to the scripting functions that are bound to the network event.&lt;br /&gt;
|callbackParametersSS = Client client, ...&lt;br /&gt;
|callbackParametersCS = ...&lt;br /&gt;
|return1 = void&lt;br /&gt;
|returnFail1 = void&lt;br /&gt;
|notes = When used in a server script, use null to send the event to all clients or specify a client object. See [[Shared/Functions/Network/addNetworkHandler|addNetworkHandler]] for information regarding custom event handler functions.&amp;lt;br&amp;gt;Network events are sent reliable and ordered.&amp;lt;br&amp;gt;Passing &amp;lt;code&amp;gt;vararg&amp;lt;/code&amp;gt; arguments that are not default types of GTA:C, the function will fail.&lt;br /&gt;
|exampleJSSS = function makeCivilianWalkToPos(civilian, x, y, z) {&lt;br /&gt;
    triggerNetworkEvent(&amp;quot;walkToPos&amp;quot;, null, civilian, x, y);&lt;br /&gt;
}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=addEventHandler&amp;diff=11462</id>
		<title>addEventHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=addEventHandler&amp;diff=11462"/>
		<updated>2026-05-28T20:54:27Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem&lt;br /&gt;
|endpoint = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|name = addEventHandler&lt;br /&gt;
|parameters = string eventName, function handler&lt;br /&gt;
|parameter1 = string eventName The name of the event, case-insensitive.&lt;br /&gt;
|parameter2 = function handler The scripting function to call when the event occurs.&lt;br /&gt;
|return1 = void&lt;br /&gt;
|returnFail1 = void&lt;br /&gt;
|callback2Syntax = Event event, ... vararg&lt;br /&gt;
|callback2Parameter1 = Event event The event object.&lt;br /&gt;
|callback2Parameter2 = ... vararg The arguments specific to the &amp;lt;code&amp;gt;eventName&amp;lt;/code&amp;gt;.&lt;br /&gt;
|usage = add a handler to call when an event occurs.&amp;lt;br&amp;gt;If the event is not an event provided by GTAC, it must be registered first by calling [[addEvent|addEvent]].&lt;br /&gt;
|notes = [[Server/Events|Server Events]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Client/Events|Client Events]]&lt;br /&gt;
|exampleJS = addEventHandler(&#039;onPedWasted&#039;, function(event, ped, attacker, weapon, piece) {&lt;br /&gt;
	if(ped.isType(ELEMENT_PLAYER)) {&lt;br /&gt;
		message(ped.name + &#039; has died.&#039;);&lt;br /&gt;
	} else {&lt;br /&gt;
		message(&#039;A ped has died.&#039;);&lt;br /&gt;
	}&lt;br /&gt;
});&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=addCommandHandler&amp;diff=11461</id>
		<title>addCommandHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=addCommandHandler&amp;diff=11461"/>
		<updated>2026-05-28T20:51:39Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem2&lt;br /&gt;
|name = addCommandHandler&lt;br /&gt;
|side = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|games = iii vc sa iv&lt;br /&gt;
|desc = set a function to call when a player types the specified command in-game.&lt;br /&gt;
|arg1 = string command The command name to be typed in-game in the chat box.&lt;br /&gt;
|arg2 = function handler The scripting function to be called when a player types the command in-game in the chat box.&lt;br /&gt;
|arg3 = [bool replace = false] Whether to replace the handler for the command if one is already bound to the command.&lt;br /&gt;
|return = bool Whether the handler was bound to the command.&lt;br /&gt;
|freturn = bool false&lt;br /&gt;
|note = If replace is true, the existing callback function is replaced with the new callback function specified.&lt;br /&gt;
|note2 = Command names are case-insensitive.&amp;lt;br&amp;gt;If a function is already added for the command, the function is only set for the command if &#039;&#039;&#039;replace&#039;&#039;&#039; is &#039;&#039;&#039;bool true&#039;&#039;&#039;&lt;br /&gt;
|cb2argSS1 = string command The command that was typed.&lt;br /&gt;
|cb2argSS2 = string parameters The parameters string that was typed.&lt;br /&gt;
|cb2argSS3 = Client client The client that typed the command.&lt;br /&gt;
|cb2argCS1 = string command The command that was typed.&lt;br /&gt;
|cb2argCS2 = string parameters The parameters string that was typed.&lt;br /&gt;
|exampleJSSS = addCommandHandler(&#039;test&#039;, function(command, text, client)&lt;br /&gt;
{&lt;br /&gt;
	console.log(&#039;test message&#039;); // shown in server console&lt;br /&gt;
});&lt;br /&gt;
|exampleJSCS = addCommandHandler(&#039;test&#039;, function(command, text)&lt;br /&gt;
{&lt;br /&gt;
	console.log(&#039;test message&#039;); // shown in client console&lt;br /&gt;
});&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=addNetworkHandler&amp;diff=11460</id>
		<title>addNetworkHandler</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=addNetworkHandler&amp;diff=11460"/>
		<updated>2026-05-28T20:47:47Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem2&lt;br /&gt;
|name = addNetworkHandler&lt;br /&gt;
|side = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|games = iii vc sa iv&lt;br /&gt;
|desc = add a handler for a custom network event that can be triggered via a server or client script.&lt;br /&gt;
|arg1 = string networkEventName The name of the network event, case-insensitive.&lt;br /&gt;
|arg2 = function handler The scripting function to call when the network event occurs.&lt;br /&gt;
|return = void&lt;br /&gt;
|freturn = void&lt;br /&gt;
|note = Use [[triggerNetworkEvent|triggerNetworkEvent]] call a custom network event. Clients can only trigger server-side handlers, while the server can trigger a handler on either end.&lt;br /&gt;
|offline = false&lt;br /&gt;
|cb2argSS1 = Client client The client that triggered the network event.&lt;br /&gt;
|cb2argSS2 = ... vararg The arguments that were triggered with the network event.&lt;br /&gt;
|cb2argCS1 = ... vararg The arguments that were triggered with the network event.&lt;br /&gt;
|exampleJSCS = addNetworkHandler(&amp;quot;walkToPos&amp;quot;, function(civilian, x, y) {&lt;br /&gt;
    let walkToPos = new Vec2(x, y);&lt;br /&gt;
    civilian.walkTo(walkToPos);&lt;br /&gt;
});&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=NativeMultiplayer&amp;diff=11453</id>
		<title>NativeMultiplayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=NativeMultiplayer&amp;diff=11453"/>
		<updated>2026-05-08T13:50:28Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Native Multiplayer}}&lt;br /&gt;
{{AlertBox|This page only applies to Grand Theft Auto IV}}&lt;br /&gt;
&lt;br /&gt;
== tl;dr ==&lt;br /&gt;
* Native MP = GFWL modes&lt;br /&gt;
* Custom sync = Empty and scriptable like SA-MP, FiveM, etc&amp;lt;br /&amp;gt;&lt;br /&gt;
Making a roleplay server? Turn off native MP mode in [[ServerConfiguration|server.xml]]: {{InlineCode|&amp;lt;iv_nativemultiplayer&amp;gt;false&amp;lt;/iv_nativemultiplayer&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== What is native multiplayer? ==&lt;br /&gt;
Native multiplayer (sometimes referred to as native mp for short) is an alternative server/sync mode for GTA IV. &lt;br /&gt;
&lt;br /&gt;
While GTAC (and most other GTA multiplayer mods) provide a sandbox environment and custom-made sync, GTAC also allows the use of &amp;quot;native multiplayer&amp;quot; which is Rockstar&#039;s sync, just passed through the server instead of directly peer to peer.&lt;br /&gt;
&lt;br /&gt;
== How do I use it? ==&lt;br /&gt;
Players can&#039;t turn native multiplayer mode on or off, only a server can. If you are hosting a server, you can set the &amp;lt;iv_nativemultiplayer&amp;gt; tag in the server configuration to true or false. &lt;br /&gt;
&lt;br /&gt;
== When should I use it? ==&lt;br /&gt;
* If you&#039;re hosting a server that uses [[Resources/GTAIV/GameModes|built-in IV gamemodes]], you should use native multiplayer mode.&lt;br /&gt;
* If you&#039;re making a script that&#039;s similar to other MP mods like RAGEMP, MTA:SA, SA-MP, FiveM, etc, you should &#039;&#039;&#039;NOT&#039;&#039;&#039; use native multiplayer mode.&lt;br /&gt;
* If your scripts need to keep track of elements or attach data to them, like a vehicle&#039;s owner for example, you should &#039;&#039;&#039;NOT&#039;&#039;&#039; use native multiplayer mode.&lt;br /&gt;
* If your scripts need to control which [[element.dimension|world players are in]], you should &#039;&#039;&#039;NOT&#039;&#039;&#039; use native multiplayer mode.&lt;br /&gt;
&lt;br /&gt;
== Some notes and technical info ==&lt;br /&gt;
* Using native multiplayer mode presents a challenge when trying to script a gamemode that needs to track elements. For example, a roleplay server might provide vehicle ownership but if the server doesn&#039;t know the vehicle exists, tying that data to the vehicle would be an issue. You could tell a client to spawn it, then report back with the newly spawned vehicle&#039;s ID, but as soon as the session is destroyed and/or another one is created, those ID&#039;s are useless. The ID&#039;s also change if the element is streamed out for everybody and no client has it in memory anymore. If you need to attach persistent data to an element, you should disable native multiplayer on your server&lt;br /&gt;
&lt;br /&gt;
* When using native multiplayer mode, you can&#039;t force players to create or join specific sessions (also called lobbies) with scripting. Each session has a player hosting it. Even if you have the phone disabled, the game might still place some players in different sessions with different hosts, and they won&#039;t be able to see players from another session. If you&#039;re trying to script a gamemode that needs everybody in the same &amp;quot;world&amp;quot; or needs to control which world they&#039;re in then you should disable native multiplayer on your server.&lt;br /&gt;
&lt;br /&gt;
* If you want to use elements in the same way as other GTA multiplayer mods, or the older games here on GTA Connected, you&#039;ll need to turn off native MP mode in server config. This will force GTAC to use it&#039;s own custom sync. When using GTAC&#039;s custom sync, servers will be aware of elements and all can be handled using either GTAC functions or natives, although natives will only exist client-side. &lt;br /&gt;
&lt;br /&gt;
* When native multiplayer mode is &#039;&#039;disabled&#039;&#039;, some internal &amp;quot;events&amp;quot; that IV uses are not currently handled or synced. This means things like when a player shoots another player, the damage itself won&#039;t be synced. A small snippet of code added to a resource is needed to sync these events.&lt;br /&gt;
&lt;br /&gt;
* The [[element.id|element.id]] function is part of GTAC&#039;s own element handling and does not work on native multiplayer mode. If you&#039;re using native multiplayer mode, you will need to use natives to get the ID of an element.&lt;br /&gt;
&lt;br /&gt;
* When using native multiplayer mode, the server doesn&#039;t know how to read the sync packets, and only passes them along &#039;&#039;&#039;as-is&#039;&#039;&#039;. Any references to elements in this mode is handled by the games themselves.&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Client/Natives/IV&amp;diff=11452</id>
		<title>Client/Natives/IV</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Client/Natives/IV&amp;diff=11452"/>
		<updated>2026-04-14T22:43:29Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
{{DISPLAYTITLE:GTA IV - Native Functions}}&lt;br /&gt;
This is a list of all GTA IV natives that are supported in GTAC client-side scripting.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Natives ==&lt;br /&gt;
[[natives.abortAllGarageActivity|natives.abortAllGarageActivity(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.abortScriptedConversation|natives.abortScriptedConversation(bool abort) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.absf|natives.absf(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.absi|natives.absi(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.acos|natives.acos(float Unk496) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateCheat|natives.activateCheat(uint cheat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateFrontend|natives.activateFrontend(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateHeliSpeedCheat|natives.activateHeliSpeedCheat(Vehicle heli, int cheat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateInterior|natives.activateInterior(int interior, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateMenuItem|natives.activateMenuItem(int menuid, int item, bool activate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateNetworkSettingsMenu|natives.activateNetworkSettingsMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateReplayMenu|natives.activateReplayMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateSaveMenu|natives.activateSaveMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateScriptedCams|natives.activateScriptedCams(bool Unk538, bool Unk539) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateScriptPopulationZone|natives.activateScriptPopulationZone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateViewport|natives.activateViewport(int viewportid, bool activate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addAdditionalPopulationModel|natives.addAdditionalPopulationModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addAmmoToChar|natives.addAmmoToChar(Ped ped, uint weapon, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addArmourToChar|natives.addArmourToChar(Ped ped, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForCar|natives.addBlipForCar(Vehicle vehicle, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForChar|natives.addBlipForChar(Ped ped, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForContact|natives.addBlipForContact(Vec3 x, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForCoord|natives.addBlipForCoord(Vec3 x, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForGangTerritory|natives.addBlipForGangTerritory(Vec2 x0, Vec2 x1, int colour, [output] int blip, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForObject|natives.addBlipForObject(Object obj, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForPickup|natives.addBlipForPickup(Pickup pickup, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForRadius|natives.addBlipForRadius(Vec3 x, int type, [output] int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForWeapon|natives.addBlipForWeapon(Vec3 x, [output] int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addCamSplineNode|natives.addCamSplineNode(int cam, int camnode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addCarToMissionDeletionList|natives.addCarToMissionDeletionList(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addCharDecisionMakerEventResponse|natives.addCharDecisionMakerEventResponse(int dm, uint eventid, uint responseid, float param1, float param2, float param3, float param4, uint unknown0_1, uint unknown1_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addExplosion|natives.addExplosion(Vec3 x, int exptype, float radius, bool playsound, bool novisual, float camshake) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addFirstNCharactersOfStringToHtmlScriptObject|natives.addFirstNCharactersOfStringToHtmlScriptObject(int htmlobj, string str, int n) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addGroupDecisionMakerEventResponse|natives.addGroupDecisionMakerEventResponse(int dm, uint eventid, uint responseid, float param1, float param2, float param3, float param4, uint unknown0_1, uint unknown1_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addGroupToNetworkRestartNodeGroupList|natives.addGroupToNetworkRestartNodeGroupList(int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addHospitalRestart|natives.addHospitalRestart(Vec3 x, float radius, int islandnum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addLineToMobilePhoneCall|natives.addLineToMobilePhoneCall(int id, string name, string text) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addLineToScriptedConversation|natives.addLineToScriptedConversation(uint conversation, int Unk527, int Unk528) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNavmeshRequiredRegion|natives.addNavmeshRequiredRegion(Vec3 x) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNeededAtPosn|natives.addNeededAtPosn(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNewConversationSpeaker|natives.addNewConversationSpeaker(int id, int Unk529, [output] int Unk530) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNewFrontendConversationSpeaker|natives.addNewFrontendConversationSpeaker(int Unk531, int Unk532) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNextMessageToPreviousBriefs|natives.addNextMessageToPreviousBriefs(bool add) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addObjectToInteriorRoomByKey|natives.addObjectToInteriorRoomByKey(Object obj, uint roomKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addObjectToInteriorRoomByName|natives.addObjectToInteriorRoomByName(Object obj, string room_name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPedToCinematographyAi|natives.addPedToCinematographyAi(int Unk28, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPedToMissionDeletionList|natives.addPedToMissionDeletionList(Ped ped, bool Unk29) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPickupToInteriorRoomByKey|natives.addPickupToInteriorRoomByKey(Object pickup, uint room_hash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPickupToInteriorRoomByName|natives.addPickupToInteriorRoomByName(Pickup pickup, string roomName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPointToGpsRaceTrack|natives.addPointToGpsRaceTrack([output] Vec3 point) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPoliceRestart|natives.addPoliceRestart(Vec3 x, float radius, int islandnum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addScenarioBlockingArea|natives.addScenarioBlockingArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addScore|natives.addScore(Player playerIndex, int score) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addSimpleBlipForPickup|natives.addSimpleBlipForPickup(Pickup pickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStringToHtmlScriptObject|natives.addStringToHtmlScriptObject(int htmlobj, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStringToNewsScrollbar|natives.addStringToNewsScrollbar(string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStringWithThisTextLabelToPreviousBrief|natives.addStringWithThisTextLabelToPreviousBrief(string gxtname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStuckCarCheckWithWarp|natives.addStuckCarCheckWithWarp(Vehicle car, float stuckdif, int time, bool flag0, bool flag1, bool flag2, bool flag3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStuckCarCheck|natives.addStuckCarCheck(Vehicle car, float stuckdif, int timeout) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStuntJump|natives.addStuntJump(Vec3 x, Vec3 x0, Vec3 x1, Vec3 x2, Vec3 x3, int reward) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addToHtmlScriptObject|natives.addToHtmlScriptObject(int htmlobj, string htmlcode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addToPreviousBriefWithUnderscore|natives.addToPreviousBriefWithUnderscore(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addToPreviousBrief|natives.addToPreviousBrief(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addUpsidedownCarCheck|natives.addUpsidedownCarCheck(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allocateScriptToObject|natives.allocateScriptToObject(string ScriptName, uint model, int Unk602, float radius, int UnkTime) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allocateScriptToRandomPed|natives.allocateScriptToRandomPed(string ScriptName, uint model, int Unk603, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowAutoConversationLookats|natives.allowAutoConversationLookats(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowEmergencyServices|natives.allowEmergencyServices(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowGameToPauseForStreaming|natives.allowGameToPauseForStreaming(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowGangRelationshipsToBeChangedByNextCommand|natives.allowGangRelationshipsToBeChangedByNextCommand(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowLockonToFriendlyPlayers|natives.allowLockonToFriendlyPlayers(Player playerIndex, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowLockonToRandomPeds|natives.allowLockonToRandomPeds(Player playerIndex, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowMultipleDrivebyPickups|natives.allowMultipleDrivebyPickups(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowOneTimeOnlyCommandsToRun|natives.allowOneTimeOnlyCommandsToRun(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowPlayerToCarryNonMissionObjects|natives.allowPlayerToCarryNonMissionObjects(Player playerIndex, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowReactionAnims|natives.allowReactionAnims(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowScenarioPedsToBeReturnedByNextCommand|natives.allowScenarioPedsToBeReturnedByNextCommand(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowStuntJumpsToTrigger|natives.allowStuntJumpsToTrigger(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowTargetWhenInjured|natives.allowTargetWhenInjured(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowThisScriptToBePaused|natives.allowThisScriptToBePaused(bool allows) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.alterWantedLevelNoDrop|natives.alterWantedLevelNoDrop(Player playerIndex, uint level) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.alterWantedLevel|natives.alterWantedLevel(Player playerIndex, uint level) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.alwaysUseHeadOnHornAnimWhenDeadInCar|natives.alwaysUseHeadOnHornAnimWhenDeadInCar(Ped ped, bool use) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.ambientAudioBankNoLongerNeeded|natives.ambientAudioBankNoLongerNeeded(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.anchorBoat|natives.anchorBoat(Vehicle boat, bool anchor) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.anchorObject|natives.anchorObject(Object obj, bool anchor, uint flags) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyForceToCar|natives.applyForceToCar(Vehicle vehicle, uint unknown0_3, Vec3 x, float spinX, float spinY, float spinZ, uint unknown4_0, uint isForceRelative, uint unknown6_1, uint unknown7_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyForceToObject|natives.applyForceToObject(Object obj, uint uk0_3, float pX, float pY, float pZ, float spinX, float spinY, float spinZ, uint uk4_0, uint uk5_1, uint uk6_1, uint uk7_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyForceToPed|natives.applyForceToPed(Ped ped, uint unknown0_3, Vec3 x, float spinX, float spinY, float spinZ, uint unknown4_0, uint isForceRelative, uint unknown6_1, uint unknown7_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyWantedLevelChangeNow|natives.applyWantedLevelChangeNow(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areAllNavmeshRegionsLoaded|natives.areAllNavmeshRegionsLoaded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areAnyCharsNearChar|natives.areAnyCharsNearChar(Ped ped, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areCreditsFinished|natives.areCreditsFinished(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areEnemyPedsInArea|natives.areEnemyPedsInArea(Ped ped, Vec3 x, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areTaxiLightsOn|natives.areTaxiLightsOn(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areWidescreenBordersActive|natives.areWidescreenBordersActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.asciiIntToString|natives.asciiIntToString(int ascii) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.asin|natives.asin(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.atan2|natives.atan2(float Unk497, float Unk498) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.atan|natives.atan(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachAnimsToModel|natives.attachAnimsToModel(uint model, string anims) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToObject|natives.attachCamToObject(int cam, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToPed|natives.attachCamToPed(int cam, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToVehicle|natives.attachCamToVehicle(int cam, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToViewport|natives.attachCamToViewport(int cam, int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCarToCarPhysically|natives.attachCarToCarPhysically(int vehid1, int vehid2, bool Unk52, int Unk53, Vec3 xoffset, Vec3 xbuffer, Vec2 xrotateveh1, float Unk54, float Unk55, float Unk56, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCarToCar|natives.attachCarToCar(Vehicle car0, Vehicle car1, int Unk51, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCarToObject|natives.attachCarToObject(Vehicle car, Object obj, float Unk57, float Unk58, float Unk59, float Unk60, float Unk61, float Unk62, float Unk63) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToCar|natives.attachObjectToCar(Object obj, Vehicle v, uint unknown0_0, float pX, float pY, float pZ, float rX, float rY, float rZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToObject|natives.attachObjectToObject(Object obj0, Object obj1_attach_to, int Unk91, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToPedPhysically|natives.attachObjectToPedPhysically(Object obj, Ped c, bool unknown, uint bone, float pX, float pY, float pZ, float rX, float rY, float rZ, uint unknown1_0, uint unknown2_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToPed|natives.attachObjectToPed(Object obj, Ped c, uint bone, float pX, float pY, float pZ, float rX, float rY, float rZ, uint unknown1_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachParachuteModelToPlayer|natives.attachParachuteModelToPlayer(Ped ped, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToCarPhysically|natives.attachPedToCarPhysically(Ped ped, Vehicle car, int pedbone, Vec3 x, float angle, float Unk30, bool Unk31, bool Unk32) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToCar|natives.attachPedToCar(Ped ped, Vehicle vehicle, uint unknown0_0, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, bool Unk64, bool Unk65) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToObjectPhysically|natives.attachPedToObjectPhysically(Ped ped, Object obj, int pedbone, Vec3 x, float angle, float Unk36, bool Unk37, bool Unk38) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToObject|natives.attachPedToObject(Ped ped, Object obj, int pedbone, Vec3 x, float angle, float Unk33, bool Unk34, bool Unk35) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToShimmyEdge|natives.attachPedToShimmyEdge(Ped ped, Vec3 x, float Unk39) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.awardPlayerMissionRespect|natives.awardPlayerMissionRespect(float respect) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.beginCamCommands|natives.beginCamCommands([output] int Unk540) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.beginCharSearchCriteria|natives.beginCharSearchCriteria(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blendFromNmWithAnim|natives.blendFromNmWithAnim(Ped ped, string AnimName0, string AnimName1, int Unk1, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blendOutCharMoveAnims|natives.blendOutCharMoveAnims(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharAmbientAnims|natives.blockCharAmbientAnims(Ped ped, bool block) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharGestureAnims|natives.blockCharGestureAnims(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharHeadIk|natives.blockCharHeadIk(Ped ped, bool block) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharVisemeAnims|natives.blockCharVisemeAnims(Ped ped, bool block) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCoweringInCover|natives.blockCoweringInCover(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockPedWeaponSwitching|natives.blockPedWeaponSwitching(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockPeekingInCover|natives.blockPeekingInCover(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockStatsMenuActions|natives.blockStatsMenuActions(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.breakCarDoor|natives.breakCarDoor(Vehicle vehicle, uint door, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.burstCarTyre|natives.burstCarTyre(Vehicle vehicle, uint tyre) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.calculateTravelDistanceBetweenNodes|natives.calculateTravelDistanceBetweenNodes(Vec3 x0, Vec3 x1) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camIsSphereVisible|natives.camIsSphereVisible(int camera, float pX, float pY, float pZ, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camProcess|natives.camProcess(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camRestoreJumpcut|natives.camRestoreJumpcut(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camRestore|natives.camRestore(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceClose|natives.camSequenceClose(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceGetProgress|natives.camSequenceGetProgress(int Unk541, [output] int progress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceOpen|natives.camSequenceOpen(int Unk542) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceRemove|natives.camSequenceRemove(int Unk543) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceStart|natives.camSequenceStart(int Unk544) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceStop|natives.camSequenceStop(int Unk545) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceWait|natives.camSequenceWait(int cam, int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetCinematic|natives.camSetCinematic(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetDollyZoomLock|natives.camSetDollyZoomLock(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpGraphPos|natives.camSetInterpGraphPos(int cam, int Unk547) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpGraphRot|natives.camSetInterpGraphRot(int cam, int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpolationDetails|natives.camSetInterpolationDetails(int Unk546) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpStateSrc|natives.camSetInterpStateSrc(int cam, int Unk548) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpStateSrc|natives.camSetInterpStateSrc(int Unk549, int Unk550) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canBeDescribedAsACar|natives.canBeDescribedAsACar(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cancelCurrentlyPlayingAmbientSpeech|natives.cancelCurrentlyPlayingAmbientSpeech(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cancelCurrentlyPlayingAmbientSpeech|natives.cancelCurrentlyPlayingAmbientSpeech(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cancelOverrideRestart|natives.cancelOverrideRestart(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canCharSeeDeadChar|natives.canCharSeeDeadChar(Ped ped, Ped pednext) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canCreateRandomChar|natives.canCreateRandomChar(bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canFontBeLoaded|natives.canFontBeLoaded(int fontid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canPedShimmyInDirection|natives.canPedShimmyInDirection(Ped ped, int direction) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canPhoneBeSeenOnScreen|natives.canPhoneBeSeenOnScreen(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canPlayerStartMission|natives.canPlayerStartMission(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canRegisterMissionObject|natives.canRegisterMissionObject(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canRegisterMissionPed|natives.canRegisterMissionPed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canRegisterMissionVehicle|natives.canRegisterMissionVehicle(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canStartMissionPassedTune|natives.canStartMissionPassedTune(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canTheStatHaveString|natives.canTheStatHaveString(int stat) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.ceil|natives.ceil(float value) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamActivate|natives.cellCamActivate(bool Unk551, bool Unk552) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamIsCharVisibleNoFaceCheck|natives.cellCamIsCharVisibleNoFaceCheck(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamIsCharVisible|natives.cellCamIsCharVisible(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamSetCentrePos|natives.cellCamSetCentrePos(Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamSetColourBrightness|natives.cellCamSetColourBrightness(float Unk553, float Unk554, float Unk555, float Unk556) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamSetZoom|natives.cellCamSetZoom(float zoom) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipAlpha|natives.changeBlipAlpha(int blip, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipColour|natives.changeBlipColour(int blip, int colour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipDisplay|natives.changeBlipDisplay(int blip, uint display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipNameFromAscii|natives.changeBlipNameFromAscii(int blip, string blipName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipNameFromTextFile|natives.changeBlipNameFromTextFile(int blip, string gxtName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipNameToPlayerName|natives.changeBlipNameToPlayerName(int blip, Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipPriority|natives.changeBlipPriority(int blip, uint priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipRotation|natives.changeBlipRotation(int blip, int rotation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipScale|natives.changeBlipScale(int blip, float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipSprite|natives.changeBlipSprite(int blip, uint sprite) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipTeamRelevance|natives.changeBlipTeamRelevance(int blip, int relevance) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeCarColour|natives.changeCarColour(Vehicle vehicle, int colour1, int colour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeGarageType|natives.changeGarageType(int garage, int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipColour|natives.changePickupBlipColour(int colour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipDisplay|natives.changePickupBlipDisplay(int display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipPriority|natives.changePickupBlipPriority(int priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipScale|natives.changePickupBlipScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipSprite|natives.changePickupBlipSprite(int sprite) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlaybackToUseAi|natives.changePlaybackToUseAi(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlayerModel|natives.changePlayerModel(Player playerIndex, uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlayerPhoneModelOffsets|natives.changePlayerPhoneModelOffsets(Player playerIndex, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlayerPhoneModel|natives.changePlayerPhoneModel(Player playerIndex, uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeTerritoryBlipScale|natives.changeTerritoryBlipScale(int blip, float Unk632, float Unk633) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cheatHappenedRecently|natives.cheatHappenedRecently(int cheat, int time) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.checkNmFeedback|natives.checkNmFeedback(Ped ped, int id, bool Unk13) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.checkStuckTimer|natives.checkStuckTimer(Vehicle car, int timernum, int timeout) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAdditionalText|natives.clearAdditionalText(int textid, bool Unk634) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAllCharProps|natives.clearAllCharProps(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAllCharRelationships|natives.clearAllCharRelationships(Ped ped, int relgroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAngledAreaOfCars|natives.clearAngledAreaOfCars(Vec3 x0, Vec3 x1, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfCars|natives.clearAreaOfCars(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfChars|natives.clearAreaOfChars(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfCops|natives.clearAreaOfCops(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfObjects|natives.clearAreaOfObjects(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearArea|natives.clearArea(Vec3 x, float radius, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearBit|natives.clearBit([output] int val, int bit) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearBrief|natives.clearBrief(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCarLastDamageEntity|natives.clearCarLastDamageEntity(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCarLastWeaponDamage|natives.clearCarLastWeaponDamage(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharLastDamageBone|natives.clearCharLastDamageBone(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharLastDamageEntity|natives.clearCharLastDamageEntity(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharLastWeaponDamage|natives.clearCharLastWeaponDamage(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharProp|natives.clearCharProp(Ped ped, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharRelationship|natives.clearCharRelationship(Ped ped, int reltype, int relgroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharSecondaryTask|natives.clearCharSecondaryTask(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharTasksImmediately|natives.clearCharTasksImmediately(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharTasks|natives.clearCharTasks(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCutscene|natives.clearCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearGroupDecisionMakerEventResponse|natives.clearGroupDecisionMakerEventResponse(int dm, uint eventid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearHelp|natives.clearHelp(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearNamedCutscene|natives.clearNamedCutscene(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearNetworkRestartNodeGroupList|natives.clearNetworkRestartNodeGroupList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearNewsScrollbar|natives.clearNewsScrollbar(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearObjectLastDamageEntity|natives.clearObjectLastDamageEntity(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearObjectLastWeaponDamage|natives.clearObjectLastWeaponDamage(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearOnscreenCounter|natives.clearOnscreenCounter(int counterid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearOnscreenTimer|natives.clearOnscreenTimer(int timerid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPedNonCreationArea|natives.clearPedNonCreationArea(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPedNonRemovalArea|natives.clearPedNonRemovalArea(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPlayerHasDamagedAtLeastOnePed|natives.clearPlayerHasDamagedAtLeastOnePed(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPlayerHasDamagedAtLeastOneVehicle|natives.clearPlayerHasDamagedAtLeastOneVehicle(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPrints|natives.clearPrints(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRelationship|natives.clearRelationship(int p0, int p1, int p2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForCar|natives.clearRoomForCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForChar|natives.clearRoomForChar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForObject|natives.clearRoomForObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForViewport|natives.clearRoomForViewport(int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearScriptArrayFromScratchpad|natives.clearScriptArrayFromScratchpad(int Unk909) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearScriptedConversionCentre|natives.clearScriptedConversionCentre(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearSequenceTask|natives.clearSequenceTask(int taskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearShakePlayerpadWhenControllerDisabled|natives.clearShakePlayerpadWhenControllerDisabled(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearSmallPrints|natives.clearSmallPrints(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearTextLabel|natives.clearTextLabel(string label) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearThisBigPrint|natives.clearThisBigPrint(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearThisPrintBigNow|natives.clearThisPrintBigNow(bool Unk635) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearThisPrint|natives.clearThisPrint(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearTimecycleModifier|natives.clearTimecycleModifier(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearWantedLevel|natives.clearWantedLevel(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cloneCam|natives.cloneCam(int cam, [output] int camcopy) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeAllCarDoors|natives.closeAllCarDoors(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeDebugFile|natives.closeDebugFile(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeGarage|natives.closeGarage(string garageName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeMicPed|natives.closeMicPed(int id, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeSequenceTask|natives.closeSequenceTask(int taskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.codeWantsMobilePhoneRemovedForWeaponSwitching|natives.codeWantsMobilePhoneRemovedForWeaponSwitching(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.codeWantsMobilePhoneRemoved|natives.codeWantsMobilePhoneRemoved(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.compareString|natives.compareString(string str0, string str1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.compareTwoDates|natives.compareTwoDates(int date0_0, int date0_1, int date1_0, int date1_1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.connectLods|natives.connectLods(Object obj0, Object obj1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.controlCarDoor|natives.controlCarDoor(Vehicle vehicle, uint door, uint unknown_maybe_open, float angle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertIntToPlayerindex|natives.convertIntToPlayerindex(uint playerId) : Player]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertMetresToFeetInt|natives.convertMetresToFeetInt(int metres) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertMetresToFeet|natives.convertMetresToFeet(float metres) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertThenAddStringToHtmlScriptObject|natives.convertThenAddStringToHtmlScriptObject(int htmlobj, string strgxtkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyAnimations|natives.copyAnimations(Ped ped, Ped pednext, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyCharDecisionMaker|natives.copyCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyCombatDecisionMaker|natives.copyCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyGroupCharDecisionMaker|natives.copyGroupCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyGroupCombatDecisionMaker|natives.copyGroupCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copySharedCharDecisionMaker|natives.copySharedCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copySharedCombatDecisionMaker|natives.copySharedCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cos|natives.cos(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.countPickupsOfType|natives.countPickupsOfType(int type) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.countScriptCamsByTypeAndOrState|natives.countScriptCamsByTypeAndOrState(int type, int Unk536, int Unk537) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.countScriptCams|natives.countScriptCams(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCam|natives.createCam(uint camtype_usually14, [output] int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCarGenerator|natives.createCarGenerator(Vec3 x, float yaw, float pitch, float roll, uint model, uint color1, uint color2, uint spec1, uint spec2, int Unk66, bool alarm, bool doorlock, [output] int handle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCarsOnGeneratorsInArea|natives.createCarsOnGeneratorsInArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCar|natives.createCar(uint nameHash, Vec3 x, [output] Vehicle pVehicle, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCharAsPassenger|natives.createCharAsPassenger(Vehicle vehicle, uint charType, uint model, uint passengerIndex, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCharInsideCar|natives.createCharInsideCar(Vehicle vehicle, uint charType, uint model, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createChar|natives.createChar(int type, uint model, Vec3 x, [output] Ped pPed, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCheckpoint|natives.createCheckpoint(int type, Vec3 x, float Unk709, float Unk710) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createEmergencyServicesCarReturnDriver|natives.createEmergencyServicesCarReturnDriver(uint model, Vec3 x, [output] Vehicle car, [output] Ped cardriver, [output] Ped carpass) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createEmergencyServicesCarThenWalk|natives.createEmergencyServicesCarThenWalk(uint model, Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createEmergencyServicesCar|natives.createEmergencyServicesCar(uint model, Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createGroup|natives.createGroup(bool unknownFalse, [output] int pGroup, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createHtmlScriptObject|natives.createHtmlScriptObject(string objname) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createHtmlViewport|natives.createHtmlViewport([output] int htmlviewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createMissionTrain|natives.createMissionTrain(uint unknown1, Vec3 x, bool unknown2, [output] int pTrain) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createMobilePhone|natives.createMobilePhone(int Unk799) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createMoneyPickup|natives.createMoneyPickup(Vec3 x, uint amount, bool unknownTrue, [output] Pickup pPickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createNmMessage|natives.createNmMessage(bool Unk40, int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createObjectNoOffset|natives.createObjectNoOffset(uint model, Vec3 x, [output] Object pObj, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createObject|natives.createObject(uint model, Vec3 x, [output] Object pObj, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPickupRotate|natives.createPickupRotate(uint model, uint pickupType, uint unknown, Vec3 x, float rX, float rY, float rZ, [output] Pickup pPickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPickupWithAmmo|natives.createPickupWithAmmo(uint model, uint pickupType, uint unknown, Vec3 x, [output] Pickup pPickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPickup|natives.createPickup(uint model, uint pickupType, Vec3 x, [output] Pickup pPickup, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPlayer|natives.createPlayer(uint playerId, Vec3 x, [output] Player pPlayerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomCarForCarPark|natives.createRandomCarForCarPark(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomCharAsDriver|natives.createRandomCharAsDriver(Vehicle vehicle, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomCharAsPassenger|natives.createRandomCharAsPassenger(Vehicle vehicle, uint seat, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomChar|natives.createRandomChar(Vec3 x, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomFemaleChar|natives.createRandomFemaleChar(Vec3 x, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomMaleChar|natives.createRandomMaleChar(Vec3 x, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createTemporaryRadarBlipsForPickupsInArea|natives.createTemporaryRadarBlipsForPickupsInArea(Vec3 x, float radius, int bliptype) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createViewport|natives.createViewport([output] int viewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.damageCar|natives.damageCar(Vehicle car, Vec3 x, float unkforce0, float unkforce1, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.damageChar|natives.damageChar(Ped ped, uint hitPoints, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.damagePedBodyPart|natives.damagePedBodyPart(Ped ped, uint part, uint hitPoints) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deactivateFrontend|natives.deactivateFrontend(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deactivateNetworkSettingsMenu|natives.deactivateNetworkSettingsMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deactivateScriptPopulationZone|natives.deactivateScriptPopulationZone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.debugOff|natives.debugOff(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.decrementFloatStat|natives.decrementFloatStat(int stat, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.decrementIntStat|natives.decrementIntStat(uint stat, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.definePedGenerationConstraintArea|natives.definePedGenerationConstraintArea(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteAllHtmlScriptObjects|natives.deleteAllHtmlScriptObjects(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteAllTrains|natives.deleteAllTrains(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteCarGenerator|natives.deleteCarGenerator(int handle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteCar|natives.deleteCar([output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteChar|natives.deleteChar([output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteCheckpoint|natives.deleteCheckpoint(uint checkpoint) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteHtmlScriptObject|natives.deleteHtmlScriptObject(int htmlobj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteMenu|natives.deleteMenu(int menuid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteMissionTrains|natives.deleteMissionTrains(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteMissionTrain|natives.deleteMissionTrain([output] int pTrain) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteObject|natives.deleteObject([output] Object pObj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deletePlayer|natives.deletePlayer(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyAllCams|natives.destroyAllCams(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyAllScriptViewports|natives.destroyAllScriptViewports(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyCam|natives.destroyCam(int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyMobilePhone|natives.destroyMobilePhone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyPedGenerationConstraintArea|natives.destroyPedGenerationConstraintArea(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyThread|natives.destroyThread(int ScriptHandle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyViewport|natives.destroyViewport(int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachCamFromViewport|natives.detachCamFromViewport(int Unk557) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachCar|natives.detachCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachObjectNoCollide|natives.detachObjectNoCollide(Object obj, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachObject|natives.detachObject(Object obj, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachPed|natives.detachPed(Ped ped, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.didSaveCompleteSuccessfully|natives.didSaveCompleteSuccessfully(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dimBlip|natives.dimBlip(int blip, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableCarGeneratorsWithHeli|natives.disableCarGeneratorsWithHeli(bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableCarGenerators|natives.disableCarGenerators(bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableEndCreditsFade|natives.disableEndCreditsFade(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableFrontendRadio|natives.disableFrontendRadio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableGps|natives.disableGps(bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableHeliChaseCamBonnetNitroFix|natives.disableHeliChaseCamBonnetNitroFix(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableHeliChaseCamThisUpdate|natives.disableHeliChaseCamThisUpdate(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableIntermezzoCams|natives.disableIntermezzoCams(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableLocalPlayerPickups|natives.disableLocalPlayerPickups(bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePauseMenu|natives.disablePauseMenu(bool disabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerAutoVehicleExit|natives.disablePlayerAutoVehicleExit(Ped ped, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerLockon|natives.disablePlayerLockon(Player playerIndex, bool disabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerSprint|natives.disablePlayerSprint(Player playerIndex, bool disabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerVehicleEntry|natives.disablePlayerVehicleEntry(Player playerIndex, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePoliceScanner|natives.disablePoliceScanner(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableStickyBombActiveSound|natives.disableStickyBombActiveSound(Ped ped, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayAltimeterThisFrame|natives.displayAltimeterThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayAmmo|natives.displayAmmo(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayAreaName|natives.displayAreaName(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayCash|natives.displayCash(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayFrontendMapBlips|natives.displayFrontendMapBlips(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayGrimeThisFrame|natives.displayGrimeThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayHelpTextThisFrame|natives.displayHelpTextThisFrame(string gxtkey, bool Unk636) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayHud|natives.displayHud(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayLoadingThisFrameWithScriptSprites|natives.displayLoadingThisFrameWithScriptSprites(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayNonMinigameHelpMessages|natives.displayNonMinigameHelpMessages(bool Unk637) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayNthOnscreenCounterWithString|natives.displayNthOnscreenCounterWithString(int Unk638, int Unk639, int Unk640, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayOnscreenTimerWithString|natives.displayOnscreenTimerWithString(int timerid, bool Unk641, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayPlayerNames|natives.displayPlayerNames(bool bDisplay) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayRadar|natives.displayRadar(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displaySniperScopeThisFrame|natives.displaySniperScopeThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWith2Numbers|natives.displayTextWith2Numbers(Vec2 x, string gxtName, int number1, int number2, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWith3Numbers|natives.displayTextWith3Numbers(Vec2 x, string gxtentry, int Unk649, int Unk650, int Unk651, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithBlipName|natives.displayTextWithBlipName(Vec2 x, string str, int blip, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithFloat|natives.displayTextWithFloat(Vec2 x, string gxtName, float value, uint unknown, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithLiteralString|natives.displayTextWithLiteralString(Vec2 x, string gxtName, string literalStr, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithNumber|natives.displayTextWithNumber(Vec2 x, string gxtName, int value, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithStringAndInt|natives.displayTextWithStringAndInt(Vec2 x, string gxtname, string gxtnamenext, int val, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithString|natives.displayTextWithString(Vec2 x, string gxtName, string gxtStringName, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithSubstringGivenHashKey|natives.displayTextWithSubstringGivenHashKey(Vec2 x, string gxtkey, uint gxtkey0, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithTwoLiteralStrings|natives.displayTextWithTwoLiteralStrings(Vec2 x, string gxtName, string literalStr1, string literalStr2, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithTwoStrings|natives.displayTextWithTwoStrings(Vec2 x, string gxtName, string gxtStringName1, string gxtStringName2, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithTwoSubstringsGivenHashKeys|natives.displayTextWithTwoSubstringsGivenHashKeys(Vec2 x, string gxtkey, uint gxtkey0, uint gxtkey1, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayText|natives.displayText(Vec2 x, string gxtName, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doAutoSave|natives.doAutoSave(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesBlipExist|natives.doesBlipExist(int blip) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCamExist|natives.doesCamExist(int camera) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCarHaveHydraulics|natives.doesCarHaveHydraulics(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCarHaveRoof|natives.doesCarHaveRoof(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCarHaveStuckCarCheck|natives.doesCarHaveStuckCarCheck(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCharExist|natives.doesCharExist(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesDecisionMakerExist|natives.doesDecisionMakerExist(int dm) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesGameCodeWantToLeaveNetworkSession|natives.doesGameCodeWantToLeaveNetworkSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesGroupExist|natives.doesGroupExist(int group) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectExistWithNetworkId|natives.doesObjectExistWithNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectExist|natives.doesObjectExist(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectHavePhysics|natives.doesObjectHavePhysics(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectHaveThisModel|natives.doesObjectHaveThisModel(Object obj, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectOfTypeExistAtCoords|natives.doesObjectOfTypeExistAtCoords(Vec3 x, float radius, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesPedExistWithNetworkId|natives.doesPedExistWithNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesPickupExist|natives.doesPickupExist(Pickup pickup) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesPlayerHaveControlOfNetworkId|natives.doesPlayerHaveControlOfNetworkId(Player playerIndex, int id) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesScriptExist|natives.doesScriptExist(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesScriptFireExist|natives.doesScriptFireExist(int fire) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesTextLabelExist|natives.doesTextLabelExist(string gxtentry) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesThisMinigameScriptAllowNonMinigameHelpMessages|natives.doesThisMinigameScriptAllowNonMinigameHelpMessages(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesVehicleExistWithNetworkId|natives.doesVehicleExistWithNetworkId(int nedid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesVehicleExist|natives.doesVehicleExist(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesViewportExist|natives.doesViewportExist(int viewportid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesWebPageExist|natives.doesWebPageExist(string webaddress) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontAbortCarConversations|natives.dontAbortCarConversations(bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontDispatchCopsForPlayer|natives.dontDispatchCopsForPlayer(Player playerIndex, bool dont) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontDisplayLoadingOnFadeThisFrame|natives.dontDisplayLoadingOnFadeThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontRemoveChar|natives.dontRemoveChar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontRemoveObject|natives.dontRemoveObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressAnyCarModels|natives.dontSuppressAnyCarModels(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressAnyPedModels|natives.dontSuppressAnyPedModels(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressCarModel|natives.dontSuppressCarModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressPedModel|natives.dontSuppressPedModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeInUnhacked|natives.doScreenFadeInUnhacked(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeIn|natives.doScreenFadeIn(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeOutUnhacked|natives.doScreenFadeOutUnhacked(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeOut|natives.doScreenFadeOut(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCheckpointWithAlpha|natives.drawCheckpointWithAlpha(Vec3 x, float radius, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCheckpoint|natives.drawCheckpoint(Vec3 x, float radius, int r, int g, int b) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawColouredCylinder|natives.drawColouredCylinder(Vec3 x, float Unk712, float Unk713, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCurvedWindowNotext|natives.drawCurvedWindowNotext(float Unk723, float Unk724, float Unk725, float Unk726, int Unk727) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCurvedWindowText|natives.drawCurvedWindowText(float Unk728, float Unk729, float Unk730, int Unk731, int Unk732, string str0, string str1, int Unk733) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCurvedWindow|natives.drawCurvedWindow(float Unk719, float Unk720, float Unk721, float Unk722, uint alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawDebugSphere|natives.drawDebugSphere(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawFrontendHelperText|natives.drawFrontendHelperText(string str0, string str1, bool Unk734) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawLightWithRange|natives.drawLightWithRange(Vec3 x, int r, int g, int b, float width, float height) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawMovie|natives.drawMovie(float Unk735, float Unk736, float Unk737, float Unk738, float Unk739, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawRect|natives.drawRect(Vec2 x1, Vec2 x2, uint r, uint g, uint b, uint a, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSphere|natives.drawSphere(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteFrontBuff|natives.drawSpriteFrontBuff(Vec2 x0, Vec2 x1, float rotation, int r, int g, int b, int a, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpritePhoto|natives.drawSpritePhoto(Vec2 x0, Vec2 x1, float rotation, int r, int g, int b, int a, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteWithFixedRotation|natives.drawSpriteWithFixedRotation(uint texture, float Unk744, float Unk745, float Unk746, float Unk747, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteWithUvCoords|natives.drawSpriteWithUvCoords(uint texture, float Unk752, float Unk753, float Unk754, float Unk755, float Unk756, float Unk757, float Unk758, float Unk759, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteWithUv|natives.drawSpriteWithUv(uint texture, float Unk748, float Unk749, float Unk750, float Unk751, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSprite|natives.drawSprite(uint texture, float Unk740, float Unk741, float Unk742, float Unk743, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawToplevelSprite|natives.drawToplevelSprite(uint texture, float Unk760, float Unk761, float Unk762, float Unk763, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawWindowText|natives.drawWindowText(float Unk768, float Unk769, float Unk770, int Unk771, string str0, int Unk772) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawWindow|natives.drawWindow(float Unk764, float Unk765, float Unk766, float Unk767, string str, uint alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dropObject|natives.dropObject(Ped ped, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableAllPedHelmets|natives.enableAllPedHelmets(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableCamCollision|natives.enableCamCollision(int cam, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableChaseAudio|natives.enableChaseAudio(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableDebugCam|natives.enableDebugCam(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableDeferredLighting|natives.enableDeferredLighting(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableDisabledAttractorsOnObject|natives.enableDisabledAttractorsOnObject(Object obj, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableEndCreditsFade|natives.enableEndCreditsFade(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableFancyWater|natives.enableFancyWater(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableFovLodMultiplier|natives.enableFovLodMultiplier(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableFrontendRadio|natives.enableFrontendRadio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableGpsInVehicle|natives.enableGpsInVehicle(Vehicle veh, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableMaxAmmoCap|natives.enableMaxAmmoCap(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enablePedHelmet|natives.enablePedHelmet(Ped ped, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enablePoliceScanner|natives.enablePoliceScanner(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableSaveHouse|natives.enableSaveHouse(uint savehouse, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableSceneStreaming|natives.enableSceneStreaming(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableScriptControlledMicrophone|natives.enableScriptControlledMicrophone(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableShadows|natives.enableShadows(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.endCamCommands|natives.endCamCommands([output] int Unk558) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.endCharSearchCriteria|natives.endCharSearchCriteria(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.endWidgetGroup|natives.endWidgetGroup(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.evolvePtfx|natives.evolvePtfx(uint ptfx, string evolvetype, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCarInCutsceneShakeAndBit|natives.explodeCarInCutsceneShakeAndBit(Vehicle car, bool flag0, bool flag1, bool flag2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCarInCutscene|natives.explodeCarInCutscene(Vehicle car, bool explode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCar|natives.explodeCar(Vehicle vehicle, bool unknownTrue, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCharHead|natives.explodeCharHead(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.exp|natives.exp(float Unk1084) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishCarFire|natives.extinguishCarFire(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishCharFire|natives.extinguishCharFire(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishFireAtPoint|natives.extinguishFireAtPoint(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishObjectFire|natives.extinguishObjectFire(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.failKillFrenzy|natives.failKillFrenzy(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fakeDeatharrest|natives.fakeDeatharrest(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findMaxNumberOfGroupMembers|natives.findMaxNumberOfGroupMembers(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findNearestCollectableBinBags|natives.findNearestCollectableBinBags(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findNearestEntitiesWithSpecialAttribute|natives.findNearestEntitiesWithSpecialAttribute(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findNetworkKillerOfPlayer|natives.findNetworkKillerOfPlayer(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findPositionInRecording|natives.findPositionInRecording(Vehicle car) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findPrimaryPopulationZoneGroup|natives.findPrimaryPopulationZoneGroup([output] int groupparam0, [output] int groupparam1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findStaticEmitterIndex|natives.findStaticEmitterIndex(string StaticEmitterName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findStreetNameAtPosition|natives.findStreetNameAtPosition(float pX, float pY, float pZ, [output] uint strHash0, [output] uint strHash1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findTimePositionInRecording|natives.findTimePositionInRecording(Vehicle car) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findTrainDirection|natives.findTrainDirection(Vehicle train) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.finishStreamingRequestList|natives.finishStreamingRequestList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.firePedWeapon|natives.firePedWeapon(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fireSingleBullet|natives.fireSingleBullet(Vec3 x, float targetX, float targetY, float targetZ, uint unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixAmbienceOrientation|natives.fixAmbienceOrientation(bool fix) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixCarTyre|natives.fixCarTyre(Vehicle vehicle, uint tyre) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixCar|natives.fixCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixScriptMicToCurrentPosisition|natives.fixScriptMicToCurrentPosisition(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashBlipAlt|natives.flashBlipAlt(int blip, bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashBlip|natives.flashBlip(int blip, bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashRadar|natives.flashRadar(bool flash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashRoute|natives.flashRoute(bool flash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashWeaponIcon|natives.flashWeaponIcon(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.floor|natives.floor(float value) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushAllOutOfDateRadarBlipsFromMissionCleanupList|natives.flushAllOutOfDateRadarBlipsFromMissionCleanupList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushAllPlayerRespawnCoords|natives.flushAllPlayerRespawnCoords(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushAllSpawnBlockingAreas|natives.flushAllSpawnBlockingAreas(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushCoverBlockingAreas|natives.flushCoverBlockingAreas(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushPatrolRoute|natives.flushPatrolRoute(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushScenarioBlockingAreas|natives.flushScenarioBlockingAreas(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceAirDragMultForPlayersCar|natives.forceAirDragMultForPlayersCar(Player playerIndex, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceAllVehicleLightsOff|natives.forceAllVehicleLightsOff(bool off) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceCarLights|natives.forceCarLights(Vehicle car, int lights) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceCharToDropWeapon|natives.forceCharToDropWeapon(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceFullVoice|natives.forceFullVoice(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceGameTelescopeCam|natives.forceGameTelescopeCam(bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceGenerateParkedCarsTooCloseToOthers|natives.forceGenerateParkedCarsTooCloseToOthers(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceHighLod|natives.forceHighLod(bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceInitialPlayerStation|natives.forceInitialPlayerStation(string stationName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceInteriorLightingForPlayer|natives.forceInteriorLightingForPlayer(Player playerIndex, bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceLoadingScreen|natives.forceLoadingScreen(bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceNoCamPause|natives.forceNoCamPause(bool foce) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceNoiseOff|natives.forceNoiseOff(bool off) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePedPinnedDown|natives.forcePedPinnedDown(Ped ped, bool force, uint timerMaybe) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePedToFleeWhilstDrivingVehicle|natives.forcePedToFleeWhilstDrivingVehicle(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePedToLoadCover|natives.forcePedToLoadCover(Ped ped, bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePopulationInit|natives.forcePopulationInit(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceRadioTrack|natives.forceRadioTrack(string radiostation, string trackname, int Unk533, int Unk534) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceRandomCarModel|natives.forceRandomCarModel(uint hash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceRandomPedType|natives.forceRandomPedType(uint type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceSpawnScenarioPedsInArea|natives.forceSpawnScenarioPedsInArea(Vec3 x, float radius, int Unk41) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceTimeOfDay|natives.forceTimeOfDay(uint hour, uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceWeatherNow|natives.forceWeatherNow(uint weather) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceWeather|natives.forceWeather(uint weather) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceWind|natives.forceWind(float wind) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forwardToTimeOfDay|natives.forwardToTimeOfDay(uint hour, uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCarPositionAndDontLoadCollision|natives.freezeCarPositionAndDontLoadCollision(Vehicle vehicle, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCarPosition|natives.freezeCarPosition(Vehicle vehicle, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCharPositionAndDontLoadCollision|natives.freezeCharPositionAndDontLoadCollision(Ped ped, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCharPosition|natives.freezeCharPosition(Ped ped, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeObjectPositionAndDontLoadCollision|natives.freezeObjectPositionAndDontLoadCollision(Object obj, bool freeze) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeObjectPosition|natives.freezeObjectPosition(Object obj, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeObjectPosition|natives.freezeObjectPosition(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeOnscreenTimer|natives.freezeOnscreenTimer(bool freeze) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezePositionOfClosestObjectOfType|natives.freezePositionOfClosestObjectOfType(Vec3 x, float radius, uint model, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeRadioStation|natives.freezeRadioStation(string stationName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateDirections|natives.generateDirections(Vec3 x, [output] int direction, [output] Vec3 Unk811) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomFloatInRange|natives.generateRandomFloatInRange(float min, float max, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomFloat|natives.generateRandomFloat([output] float Unk1086) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomIntInRange|natives.generateRandomIntInRange(uint min, uint max, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomInt|natives.generateRandomInt([output] int Unk1087) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAcceptButton|natives.getAcceptButton(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAmmoInCharWeapon|natives.getAmmoInCharWeapon(Ped ped, uint weapon, [output] uint pAmmo) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAmmoInClip|natives.getAmmoInClip(Ped ped, uint weapon, [output] uint pAmmo) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAngleBetween2dVectors|natives.getAngleBetween2dVectors(Vec2 x1, Vec2 x2, [output] float pResult, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAnimGroupFromChar|natives.getAnimGroupFromChar(Ped ped) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAsciiJustPressed|natives.getAsciiJustPressed(int key, int Unk830) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAsciiPressed|natives.getAsciiPressed(int key, [output] int Unk820) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAspectRatio|natives.getAspectRatio(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAudibleMusicTrackTextId|natives.getAudibleMusicTrackTextId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAudioRoomId|natives.getAudioRoomId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBitsInRange|natives.getBitsInRange(int val, int rangebegin, int rangeend) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipAlpha|natives.getBlipAlpha(int blip, [output] int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipColour|natives.getBlipColour(int blip, [output] int pColour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipCoords|natives.getBlipCoords(int blip, [output] Vec3 pVector) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdCarIndex|natives.getBlipInfoIdCarIndex(int blip) : Vehicle]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdDisplay|natives.getBlipInfoIdDisplay(int blip) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdObjectIndex|natives.getBlipInfoIdObjectIndex(int blip) : Object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdPedIndex|natives.getBlipInfoIdPedIndex(int blip) : Ped]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdPickupIndex|natives.getBlipInfoIdPickupIndex(int blip) : Pickup]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdRotation|natives.getBlipInfoIdRotation(int blip) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdType|natives.getBlipInfoIdType(int blip) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipSprite|natives.getBlipSprite(int blip) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBufferedAscii|natives.getBufferedAscii(int key, [output] int Unk821) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCameraFromNetworkId|natives.getCameraFromNetworkId(int ned_id, [output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamFarClip|natives.getCamFarClip(int cam, [output] float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamFarDof|natives.getCamFarDof(int cam, [output] float fardof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamFov|natives.getCamFov(int camera, [output] float fov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamMotionBlur|natives.getCamMotionBlur(int cam, [output] int blur) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamNearClip|natives.getCamNearClip(int cam, [output] float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamNearDof|natives.getCamNearDof(int cam, [output] float dof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamPos|natives.getCamPos(int camera, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamRot|natives.getCamRot(int camera, [output] float angleX, [output] float angleY, [output] float angleZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamState|natives.getCamState(int cam) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarAnimCurrentTime|natives.getCarAnimCurrentTime(Vehicle car, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarAnimTotalTime|natives.getCarAnimTotalTime(Vehicle car, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarBlockingCar|natives.getCarBlockingCar(Vehicle car0, [output] Vehicle car1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarCharIsUsing|natives.getCarCharIsUsing(Ped ped, [output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarColours|natives.getCarColours(Vehicle vehicle, [output] int pColour1, [output] int pColour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarCoordinates|natives.getCarCoordinates(Vehicle vehicle, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarDeformationAtPos|natives.getCarDeformationAtPos(Vehicle vehicle, Vec3 x, [output] Vec3 pDeformation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarDoorLockStatus|natives.getCarDoorLockStatus(Vehicle vehicle, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarForwardVector|natives.getCarForwardVector(Vehicle car, [output] Vec3 vec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarForwardX|natives.getCarForwardX(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarForwardY|natives.getCarForwardY(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarHeading|natives.getCarHeading(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarHealth|natives.getCarHealth(Vehicle vehicle, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarLivery|natives.getCarLivery(Vehicle car, [output] int livery) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarMass|natives.getCarMass(Vehicle car, [output] float mass) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarModelValue|natives.getCarModelValue(Vehicle car, [output] int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarModel|natives.getCarModel(Vehicle vehicle, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarObjectIsAttachedTo|natives.getCarObjectIsAttachedTo(Object obj) : Vehicle]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarPitch|natives.getCarPitch(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarRoll|natives.getCarRoll(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarSirenHealth|natives.getCarSirenHealth(Vehicle car) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarSpeedVector|natives.getCarSpeedVector(Vehicle vehicle, [output] Vec3 pVector, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarSpeed|natives.getCarSpeed(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarUprightValue|natives.getCarUprightValue(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCellphoneRanked|natives.getCellphoneRanked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAllowedToRunOnBoats|natives.getCharAllowedToRunOnBoats(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimBlendAmount|natives.getCharAnimBlendAmount(Ped ped, string AnimName0, string AnimName1, [output] float amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimCurrentTime|natives.getCharAnimCurrentTime(Ped ped, string animGroup, string animName, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimIsEvent|natives.getCharAnimIsEvent(Ped ped, string AnimName0, string AnimName1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimTotalTime|natives.getCharAnimTotalTime(Ped ped, string animGroup, string animName, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharArmour|natives.getCharArmour(Ped ped, [output] uint pArmour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharCoordinates|natives.getCharCoordinates(Ped ped, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharDrawableVariation|natives.getCharDrawableVariation(Ped ped, uint component) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharExtractedDisplacement|natives.getCharExtractedDisplacement(Ped ped, bool unknown, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharExtractedVelocity|natives.getCharExtractedVelocity(Ped ped, bool Unk5, [output] Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharGravity|natives.getCharGravity(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHeading|natives.getCharHeading(Ped ped, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHealth|natives.getCharHealth(Ped ped, [output] uint pHealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHeightAboveGround|natives.getCharHeightAboveGround(Ped ped, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHighestPriorityEvent|natives.getCharHighestPriorityEvent(Ped ped, [output] int event) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharInCarPassengerSeat|natives.getCharInCarPassengerSeat(Vehicle vehicle, uint seatIndex, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMaxMoveBlendRatio|natives.getCharMaxMoveBlendRatio(Ped ped) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMeleeActionFlag0|natives.getCharMeleeActionFlag0(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMeleeActionFlag1|natives.getCharMeleeActionFlag1(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMeleeActionFlag2|natives.getCharMeleeActionFlag2(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharModel|natives.getCharModel(Ped ped, [output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMoney|natives.getCharMoney(Ped ped) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMoveAnimSpeedMultiplier|natives.getCharMoveAnimSpeedMultiplier(Ped ped, [output] float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMovementAnimsBlocked|natives.getCharMovementAnimsBlocked(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharPropIndex|natives.getCharPropIndex(Ped ped, bool unknown, [output] uint pIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharReadyToBeExecuted|natives.getCharReadyToBeExecuted(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharReadyToBeStunned|natives.getCharReadyToBeStunned(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharSpeed|natives.getCharSpeed(Ped ped, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharSwimState|natives.getCharSwimState(Ped ped, [output] int state) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharTextureVariation|natives.getCharTextureVariation(Ped ped, uint component) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharVelocity|natives.getCharVelocity(Ped ped, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWalkAlongsideLeaderWhenAppropriate|natives.getCharWalkAlongsideLeaderWhenAppropriate(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWeaponInSlot|natives.getCharWeaponInSlot(Ped ped, uint slot, [output] uint pWeapon, [output] uint pAmmo0, [output] uint pAmmo1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWillCowerInsteadOfFleeing|natives.getCharWillCowerInsteadOfFleeing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWillTryToLeaveBoatAfterLeader|natives.getCharWillTryToLeaveBoatAfterLeader(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWillTryToLeaveWater|natives.getCharWillTryToLeaveWater(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCinematicCam|natives.getCinematicCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCarNodeFavourDirection|natives.getClosestCarNodeFavourDirection(int Unk802, Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCarNodeWithHeading|natives.getClosestCarNodeWithHeading(Vec3 x, [output] float pResX, [output] float pResY, [output] float pResZ, [output] float pHeading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCarNode|natives.getClosestCarNode(Vec3 x, [output] float pResX, [output] float pResY, [output] float pResZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCar|natives.getClosestCar(Vec3 x, float radius, bool unknownFalse, uint unknown70) : Vehicle]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestChar|natives.getClosestChar(Vec3 x, float radius, bool unknown1, bool unknown2, [output] Ped pPed) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestMajorCarNode|natives.getClosestMajorCarNode(Vec3 x, [output] float pResX, [output] float pResY, [output] float pResZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestRoad|natives.getClosestRoad(Vec3 x, float Unk803, int Unk804, [output] Vec3 Unk805, [output] Vec3 Unk806, [output] float Unk807, [output] float Unk808, [output] float Unk809) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestStealableObject|natives.getClosestStealableObject(Vec3 x, float radius, [output] Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getConsoleCommandToken|natives.getConsoleCommandToken(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getControlValue|natives.getControlValue(int Unk831, int controlid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCoordinatesForNetworkRestartNode|natives.getCoordinatesForNetworkRestartNode(int i, [output] Vec3 pos, [output] float pHeading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCorrectedColour|natives.getCorrectedColour(uint r, uint g, uint b, [output] uint pR, [output] uint pG, [output] uint pB) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCreateRandomCops|natives.getCreateRandomCops(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentBasicCopModel|natives.getCurrentBasicCopModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentBasicPoliceCarModel|natives.getCurrentBasicPoliceCarModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentCharWeapon|natives.getCurrentCharWeapon(Ped ped, [output] uint pWeapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentCopModel|natives.getCurrentCopModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentDate|natives.getCurrentDate([output] uint day, [output] uint month) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentDayOfWeek|natives.getCurrentDayOfWeek(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentEpisode|natives.getCurrentEpisode(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentLanguage|natives.getCurrentLanguage(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentPlaybackNumberForCar|natives.getCurrentPlaybackNumberForCar(Vehicle car) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentPoliceCarModel|natives.getCurrentPoliceCarModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentPopulationZoneType|natives.getCurrentPopulationZoneType(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentScriptedConversationLine|natives.getCurrentScriptedConversationLine(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentStackSize|natives.getCurrentStackSize(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentStationForTrain|natives.getCurrentStationForTrain(int train) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentTaxiCarModel|natives.getCurrentTaxiCarModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentWeatherFull|natives.getCurrentWeatherFull([output] int weatherparam0, [output] int weatherparam1, [output] int weatherparam2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentWeather|natives.getCurrentWeather([output] uint pWeather) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentZoneScumminess|natives.getCurrentZoneScumminess(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutsceneAudioTimeMs|natives.getCutsceneAudioTimeMs(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutscenePedPosition|natives.getCutscenePedPosition(int unkped, [output] Vec3 pos) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutsceneSectionPlaying|natives.getCutsceneSectionPlaying(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutsceneTime|natives.getCutsceneTime(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDamageToPedBodyPart|natives.getDamageToPedBodyPart(Ped ped, uint part) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDeadCarCoordinates|natives.getDeadCarCoordinates(Vehicle vehicle, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDeadCharPickupCoords|natives.getDeadCharPickupCoords(Ped ped, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDebugCam|natives.getDebugCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDestroyerOfNetworkId|natives.getDestroyerOfNetworkId(Player playerIndex, int id) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDisplayNameFromVehicleModel|natives.getDisplayNameFromVehicleModel(uint model) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDistanceBetweenCoords2d|natives.getDistanceBetweenCoords2d(Vec2 x1, Vec2 x2, [output] float pDist, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDistanceBetweenCoords3d|natives.getDistanceBetweenCoords3d(Vec3 x1, Vec3 x2, [output] float pDist) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDoorAngleRatio|natives.getDoorAngleRatio(Vehicle vehicle, uint door, [output] float pAngleRatio) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDoorState|natives.getDoorState(Object obj, [output] uint Unk92, [output] float Unk93) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDriverOfCar|natives.getDriverOfCar(Vehicle vehicle, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getEngineHealth|natives.getEngineHealth(Vehicle vehicle) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getEpisodeIndexFromSummons|natives.getEpisodeIndexFromSummons(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getEpisodeName|natives.getEpisodeName(uint episodeIndex) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getExtraCarColours|natives.getExtraCarColours(Vehicle vehicle, [output] int pColour1, [output] int pColour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFilterMenuOn|natives.getFilterMenuOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFilterSaveSetting|natives.getFilterSaveSetting(int filterid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFirstBlipInfoId|natives.getFirstBlipInfoId(uint type) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFirstNCharactersOfLiteralString|natives.getFirstNCharactersOfLiteralString(string literalString, uint chars) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFirstNCharactersOfString|natives.getFirstNCharactersOfString(string gxtName, uint chars) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFloatStat|natives.getFloatStat(uint stat) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFollowVehicleCamSubmode|natives.getFollowVehicleCamSubmode([output] int mode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFragmentDamageHealthOfClosestObjectOfType|natives.getFragmentDamageHealthOfClosestObjectOfType(Vec3 x, float radius, uint Unk77, bool flag) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFrameCount|natives.getFrameCount(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFrameTime|natives.getFrameTime([output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFreeCam|natives.getFreeCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFrontendDesignValue|natives.getFrontendDesignValue(int frontendid, [output] float Unk499, [output] float Unk500) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameCamChild|natives.getGameCamChild([output] int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameCam|natives.getGameCam([output] int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGamerNetworkScore|natives.getGamerNetworkScore(Player playerIndex, int Unk888, int Unk889) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameTimer|natives.getGameTimer([output] uint pTimer) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameViewportId|natives.getGameViewportId([output] int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGfwlHasSafeHouse|natives.getGfwlHasSafeHouse(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGfwlIsReturningToSinglePlayer|natives.getGfwlIsReturningToSinglePlayer(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupCharDucksWhenAimedAt|natives.getGroupCharDucksWhenAimedAt(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupFormationSpacing|natives.getGroupFormationSpacing(int group, [output] float spacing) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupFormation|natives.getGroupFormation(int group, [output] int formation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupLeader|natives.getGroupLeader(int group, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupMember|natives.getGroupMember(int group, uint index, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupSize|natives.getGroupSize(int group, [output] uint pStartIndex, [output] uint pCount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHashKey|natives.getHashKey(string value) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHeadingFromVector2d|natives.getHeadingFromVector2d(Vec2 x, [output] float pHeading, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHeightOfVehicle|natives.getHeightOfVehicle(Vehicle vehicle, Vec3 x, bool unknownTrue1, bool unknownTrue2) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHelpMessageBoxSize|natives.getHelpMessageBoxSize([output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHostId|natives.getHostId(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHostMatchOn|natives.getHostMatchOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHoursOfDay|natives.getHoursOfDay(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHudColour|natives.getHudColour(uint type, [output] uint pR, [output] uint pG, [output] uint pB, [output] uint pA) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIdOfThisThread|natives.getIdOfThisThread(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorAtCoords|natives.getInteriorAtCoords(Vec3 x, [output] int pInterior) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorFromCar|natives.getInteriorFromCar(Vehicle vehicle, [output] int pInterior) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorFromChar|natives.getInteriorFromChar(Ped ped, [output] int pInterior) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorHeading|natives.getInteriorHeading(int interior, [output] float pHeading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIntStat|natives.getIntStat(uint stat) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsAutosaveOff|natives.getIsAutosaveOff(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsDepositAnimRunning|natives.getIsDepositAnimRunning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsDisplayingsavemessage|natives.getIsDisplayingsavemessage(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsHidef|natives.getIsHidef(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsProjectileTypeInArea|natives.getIsProjectileTypeInArea(Vec3 x0, Vec3 x1, int type) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsStickyBombStuckToObject|natives.getIsStickyBombStuckToObject(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsStickyBombStuckToVehicle|natives.getIsStickyBombStuckToVehicle(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsWidescreen|natives.getIsWidescreen(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyboardMoveInput|natives.getKeyboardMoveInput([output] int Unk832, [output] int Unk833) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyForCarInRoom|natives.getKeyForCarInRoom(Vehicle vehicle, [output] uint pKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyForCharInRoom|natives.getKeyForCharInRoom(Ped ped, [output] uint pKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyForViewportInRoom|natives.getKeyForViewportInRoom(int viewportid, [output] int roomkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLatestConsoleCommand|natives.getLatestConsoleCommand(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLeftPlayerCashToReachLevel|natives.getLeftPlayerCashToReachLevel(uint playerRank) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLengthOfLiteralString|natives.getLengthOfLiteralString(string literalString) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLengthOfStringWithThisHashKey|natives.getLengthOfStringWithThisHashKey(uint gxtkey) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLengthOfStringWithThisTextLabel|natives.getLengthOfStringWithThisTextLabel(string gxtName) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLevelDesignCoordsForObject|natives.getLevelDesignCoordsForObject(Object obj, int Unk78, [output] Vec3 x) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLineHeight|natives.getLineHeight(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLocalGamerlevelFromProfilesettings|natives.getLocalGamerlevelFromProfilesettings(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLocalPlayerMpCash|natives.getLocalPlayerMpCash(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLocalPlayerWeaponStat|natives.getLocalPlayerWeaponStat(int wtype, int wid) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMapAreaFromCoords|natives.getMapAreaFromCoords(Vec3 x) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaxAmmoInClip|natives.getMaxAmmoInClip(Ped ped, uint weapon, [output] uint pMaxAmmo) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaxAmmo|natives.getMaxAmmo(Ped ped, uint weapon, [output] uint pMaxAmmo) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaximumNumberOfPassengers|natives.getMaximumNumberOfPassengers(Vehicle vehicle, [output] uint pMax) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaxWantedLevel|natives.getMaxWantedLevel([output] uint pMaxWantedLevel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMenuItemAccepted|natives.getMenuItemAccepted(int menuid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMenuItemSelected|natives.getMenuItemSelected(int menuid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMenuPosition|natives.getMenuPosition(int menuid, [output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMinutesOfDay|natives.getMinutesOfDay(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMinutesToTimeOfDay|natives.getMinutesToTimeOfDay(uint hour, uint minute) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMissionFlag|natives.getMissionFlag(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMobilePhoneRenderId|natives.getMobilePhoneRenderId([output] uint pRenderId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMobilePhoneScale|natives.getMobilePhoneScale(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMobilePhoneTaskSubTask|natives.getMobilePhoneTaskSubTask(Ped ped, [output] int Unk798) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getModelDimensions|natives.getModelDimensions(uint model, [output] Vec3 pMinVector, [output] Vec3 pMaxVector) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getModelNameForDebug|natives.getModelNameForDebug(uint model) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getModelPedIsHolding|natives.getModelPedIsHolding(Ped ped) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMouseInput|natives.getMouseInput([output] int x, [output] int y) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMousePosition|natives.getMousePosition([output] int x, [output] int y) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMouseSensitivity|natives.getMouseSensitivity(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMouseWheel|natives.getMouseWheel([output] int Unk834) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNameOfInfoZone|natives.getNameOfInfoZone(Vec3 x) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNameOfZone|natives.getNameOfZone(Vec3 x) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNavmeshRouteResult|natives.getNavmeshRouteResult(int navmesh) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNearestCableCar|natives.getNearestCableCar(Vec3 x, float radius, [output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkIdFromObject|natives.getNetworkIdFromObject(Object obj, [output] int netid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkIdFromPed|natives.getNetworkIdFromPed(Ped ped, [output] int netid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkIdFromVehicle|natives.getNetworkIdFromVehicle(Vehicle vehicle, [output] int netid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkJoinFail|natives.getNetworkJoinFail(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkTimer|natives.getNetworkTimer([output] int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextBlipInfoId|natives.getNextBlipInfoId(uint type) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNodeFavourDirection|natives.getNextClosestCarNodeFavourDirection(Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float direction) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNodeWithHeadingOnIsland|natives.getNextClosestCarNodeWithHeadingOnIsland(Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNodeWithHeading|natives.getNextClosestCarNodeWithHeading(Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNode|natives.getNextClosestCarNode(Vec3 x, [output] float pX, [output] float pY, [output] float pZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextStationForTrain|natives.getNextStationForTrain(int train) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNoLawVehiclesDestroyedByLocalPlayer|natives.getNoLawVehiclesDestroyedByLocalPlayer(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNoOfPlayersInTeam|natives.getNoOfPlayersInTeam(int team) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNodeFavourDirection|natives.getNthClosestCarNodeFavourDirection(int Unk810, Vec3 x, int n, [output] float pX, [output] float pY, [output] float pZ, [output] float direction) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNodeWithHeadingOnIsland|natives.getNthClosestCarNodeWithHeadingOnIsland(Vec3 x, uint nodeNum, uint areaId, [output] float pResX, [output] float pResY, [output] float pResZ, [output] float pHeading, [output] uint pUnknownMaybeAreaId) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNodeWithHeading|natives.getNthClosestCarNodeWithHeading(Vec3 x, uint nodeNum, [output] float pResX, [output] float pResY, [output] float pResZ, [output] float pHeading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNode|natives.getNthClosestCarNode(Vec3 x, int n, [output] float pX, [output] float pY, [output] float pZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestWaterNodeWithHeading|natives.getNthClosestWaterNodeWithHeading(Vec3 x, bool flag0, bool flag1, [output] Vec3 node, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthGroupMember|natives.getNthGroupMember(int group, int n, [output] Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthIntegerInString|natives.getNthIntegerInString(string gxtName, uint index) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberLinesWithLiteralStrings|natives.getNumberLinesWithLiteralStrings(float Unk705, float Unk706, string str1, string str2, string str3) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberLinesWithSubstrings|natives.getNumberLinesWithSubstrings(float Unk707, float Unk708, string str1, string str2, string str3) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberLines|natives.getNumberLines(float Unk703, float Unk704, string str) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfActiveStickyBombsOwnedByPed|natives.getNumberOfActiveStickyBombsOwnedByPed(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfCharDrawableVariations|natives.getNumberOfCharDrawableVariations(Ped ped, uint component) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfCharTextureVariations|natives.getNumberOfCharTextureVariations(Ped ped, uint component, uint unknown1) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfFiresInArea|natives.getNumberOfFiresInArea(Vec3 x0, Vec3 x1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfFiresInRange|natives.getNumberOfFiresInRange(Vec3 x, float radius) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfFollowers|natives.getNumberOfFollowers(Ped ped, [output] int followers) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfInjuredPedsInRange|natives.getNumberOfInjuredPedsInRange(Vec3 x, float radius) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfInstancesOfStreamedScript|natives.getNumberOfInstancesOfStreamedScript(string scriptName) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfPassengers|natives.getNumberOfPassengers(Vehicle vehicle, [output] uint pNumPassengers) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfPlayers|natives.getNumberOfPlayers(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfStickyBombsStuckToObject|natives.getNumberOfStickyBombsStuckToObject(Object obj) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfStickyBombsStuckToVehicle|natives.getNumberOfStickyBombsStuckToVehicle(Vehicle veh) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfWebPageLinks|natives.getNumberOfWebPageLinks(int htmlviewport) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumCarColours|natives.getNumCarColours(Vehicle vehicle, [output] uint pNumColours) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumCarLiveries|natives.getNumCarLiveries(Vehicle car, [output] int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumOfModelsKilledByPlayer|natives.getNumOfModelsKilledByPlayer(Player playerIndex, uint model, [output] int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumStreamingRequests|natives.getNumStreamingRequests(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectAnimCurrentTime|natives.getObjectAnimCurrentTime(Object obj, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectAnimTotalTime|natives.getObjectAnimTotalTime(Object obj, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectCoordinates|natives.getObjectCoordinates(Object obj, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectFragmentDamageHealth|natives.getObjectFragmentDamageHealth(Object obj, bool unknown) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectFromNetworkId|natives.getObjectFromNetworkId(int netid, [output] Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectHeading|natives.getObjectHeading(Object obj, [output] float pHeading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectHealth|natives.getObjectHealth(Object obj, [output] float pHealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectMass|natives.getObjectMass(Object obj, [output] float mass) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectModel|natives.getObjectModel(Object obj, [output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectPedIsHolding|natives.getObjectPedIsHolding(Ped ped) : Object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectQuaternion|natives.getObjectQuaternion(Object obj, [output] Vec3 qx, [output] float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectRotationVelocity|natives.getObjectRotationVelocity(Object obj, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectSpeed|natives.getObjectSpeed(Object obj, [output] float pSpeed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectTurnMass|natives.getObjectTurnMass(Object obj, [output] float turnmass) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectVelocity|natives.getObjectVelocity(Object obj, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromCarGivenWorldCoords|natives.getOffsetFromCarGivenWorldCoords(Vehicle vehicle, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromCarInWorldCoords|natives.getOffsetFromCarInWorldCoords(Vehicle vehicle, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromCharInWorldCoords|natives.getOffsetFromCharInWorldCoords(Ped ped, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromInteriorInWorldCoords|natives.getOffsetFromInteriorInWorldCoords(int interior, Vec3 x, [output] float pOffset) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromObjectInWorldCoords|natives.getOffsetFromObjectInWorldCoords(Object obj, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetsForAttachCarToCar|natives.getOffsetsForAttachCarToCar(Vehicle car0, Vehicle car1, [output] Vec3 Unk67, [output] Vec3 Unk68) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOnlineLan|natives.getOnlineLan(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOnlineScore|natives.getOnlineScore(int Unk887) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPadPitchRoll|natives.getPadPitchRoll(uint padIndex, [output] float pPitch, [output] float pRoll) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPadState|natives.getPadState(int Unk835, int Unk836, [output] int Unk837) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedBonePosition|natives.getPedBonePosition(Ped ped, uint bone, Vec3 x, [output] Vec3 pPosition) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedClimbState|natives.getPedClimbState(Ped ped) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedFromNetworkId|natives.getPedFromNetworkId(int netid, [output] Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedGroupIndex|natives.getPedGroupIndex(Ped ped, [output] uint pIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedModelFromIndex|natives.getPedModelFromIndex(int index) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedObjectIsAttachedTo|natives.getPedObjectIsAttachedTo(Object obj) : Ped]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathMayDropFromHeight|natives.getPedPathMayDropFromHeight(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathMayUseClimbovers|natives.getPedPathMayUseClimbovers(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathMayUseLadders|natives.getPedPathMayUseLadders(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathWillAvoidDynamicObjects|natives.getPedPathWillAvoidDynamicObjects(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedSteersAroundObjects|natives.getPedSteersAroundObjects(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedSteersAroundPeds|natives.getPedSteersAroundPeds(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedType|natives.getPedType(Ped ped, [output] uint pType) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPetrolTankHealth|natives.getPetrolTankHealth(Vehicle vehicle) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPhysicalScreenResolution|natives.getPhysicalScreenResolution([output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPickupCoordinates|natives.getPickupCoordinates(Pickup pickup, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlaneUndercarriagePosition|natives.getPlaneUndercarriagePosition(Vehicle plane, [output] float pos) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerChar|natives.getPlayerChar(Player playerIndex, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerColour|natives.getPlayerColour(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerGroup|natives.getPlayerGroup(Player playerIndex, [output] int pGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerHasTracks|natives.getPlayerHasTracks(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerIdForThisPed|natives.getPlayerIdForThisPed(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerId|natives.getPlayerId(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerMaxArmour|natives.getPlayerMaxArmour(Player playerIndex, [output] uint pMaxArmour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerMaxHealth|natives.getPlayerMaxHealth(Player playerIndex, [output] int maxhealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerName|natives.getPlayerName(Player playerIndex) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioMode|natives.getPlayerRadioMode(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationIndex|natives.getPlayerRadioStationIndex(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationNameRoll|natives.getPlayerRadioStationNameRoll(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationName|natives.getPlayerRadioStationName(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationName|natives.getPlayerRadioStationName(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRankLevelDuringMp|natives.getPlayerRankLevelDuringMp(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRgbColour|natives.getPlayerRgbColour(Player playerIndex, [output] int r, [output] int g, [output] int b) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayersettingsModelChoice|natives.getPlayersettingsModelChoice(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayersLastCarNoSave|natives.getPlayersLastCarNoSave([output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerTeam|natives.getPlayerTeam(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerWantedLevelIncrement|natives.getPlayerWantedLevelIncrement(Player playerIndex, [output] int increment) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPositionOfAnalogueSticks|natives.getPositionOfAnalogueSticks(uint padIndex, [output] int pLeftX, [output] int pLeftY, [output] int pRightX, [output] int pRightY) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPositionOfCarRecordingAtTime|natives.getPositionOfCarRecordingAtTime(int CarRec, float time, [output] float pos) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getProfileSetting|natives.getProfileSetting(int settingid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getProgressPercentage|natives.getProgressPercentage(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRadarViewportId|natives.getRadarViewportId([output] int viewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRadioName|natives.getRadioName(int id) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarBackBumperInSphere|natives.getRandomCarBackBumperInSphere(Vec3 x, float radius, int Unk812, int Unk813, [output] Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarFrontBumperInSphereNoSave|natives.getRandomCarFrontBumperInSphereNoSave(Vec3 x, float radius, bool flag0, bool flag1, [output] int handle, bool flag2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarInSphereNoSave|natives.getRandomCarInSphereNoSave(Vec3 x, float radius, uint model, bool flag, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarInSphere|natives.getRandomCarInSphere(Vec3 x, float radius, uint model, int Unk814, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarModelInMemory|natives.getRandomCarModelInMemory(bool MustIncludeSpecialModels, [output] uint pHash, [output] int pErrorId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarNodeIncludeSwitchedOffNodes|natives.getRandomCarNodeIncludeSwitchedOffNodes(Vec3 x, float radius, bool flag0, bool flag1, bool flag2, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarNode|natives.getRandomCarNode(Vec3 x, float radius, bool flag0, bool flag1, bool flag2, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarOfTypeInAngledAreaNoSave|natives.getRandomCarOfTypeInAngledAreaNoSave(float Unk815, float Unk816, float Unk817, float Unk818, float Unk819, uint type, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarOfTypeInAreaNoSave|natives.getRandomCarOfTypeInAreaNoSave(Vec2 x0, Vec2 x1, uint model, [output] Vehicle car, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCharInAreaOffsetNoSave|natives.getRandomCharInAreaOffsetNoSave(Vec3 x, Vec3 sx, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomWaterNode|natives.getRandomWaterNode(Vec3 x, float radius, bool flag0, bool flag1, bool flag2, bool flag3, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getReturnToFilterMenu|natives.getReturnToFilterMenu(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRoomKeyFromObject|natives.getRoomKeyFromObject(Object obj, [output] uint pRoomKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRoomKeyFromPickup|natives.getRoomKeyFromPickup(int pickup, [output] uint hash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRootCam|natives.getRootCam([output] int rootcam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRouteSize|natives.getRouteSize(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSafePickupCoords|natives.getSafePickupCoords(Vec3 x, [output] float pSafeX, [output] float pSafeY, [output] float pSafeZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSafePositionForChar|natives.getSafePositionForChar(Vec3 x, bool unknownTrue, [output] float pSafeX, [output] float pSafeY, [output] float pSafeZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScreenFadeAlpha|natives.getScreenFadeAlpha(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScreenResolution|natives.getScreenResolution([output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScreenViewportId|natives.getScreenViewportId([output] int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptCam|natives.getScriptCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptDrawCam|natives.getScriptDrawCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptFireCoords|natives.getScriptFireCoords(int fire, [output] Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptRendertargetRenderId|natives.getScriptRendertargetRenderId([output] uint pRenderId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptTaskStatus|natives.getScriptTaskStatus(Ped ped, int task, [output] int status) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSequenceProgress|natives.getSequenceProgress(int seq, [output] int progress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getServerId|natives.getServerId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSimpleBlipId|natives.getSimpleBlipId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSoundId|natives.getSoundId(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSoundLevelAtCoords|natives.getSoundLevelAtCoords(Ped ped, Vec3 x, [output] int level) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSpeechForEmergencyServiceCall|natives.getSpeechForEmergencyServiceCall(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStartFromFilterMenu|natives.getStartFromFilterMenu(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStateOfClosestDoorOfType|natives.getStateOfClosestDoorOfType(uint model, Vec3 x, [output] int state, [output] float Unk94) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStatFrontendDisplayType|natives.getStatFrontendDisplayType(int stat) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStatFrontendVisibility|natives.getStatFrontendVisibility(int stat) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStaticEmitterPlaytime|natives.getStaticEmitterPlaytime(int StaticEmitterIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStationName|natives.getStationName(int train, uint station) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStreamBeatInfo|natives.getStreamBeatInfo([output] int Unk501, [output] int Unk502, [output] int Unk503) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStreamPlaytime|natives.getStreamPlaytime(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringFromHashKey|natives.getStringFromHashKey(uint hash) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringFromString|natives.getStringFromString(string str, int startsymb, int endsymb) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringFromTextFile|natives.getStringFromTextFile(string gxtentry) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidthWithNumber|natives.getStringWidthWithNumber(string gxtName, int number) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidthWithString|natives.getStringWidthWithString(string gxtName, string literalString) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidthWithTextAndInt|natives.getStringWidthWithTextAndInt(string gxtname, string gxtnamenext, int val) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidth|natives.getStringWidth(string gxtName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTaskPlaceCarBombUnsuccessful|natives.getTaskPlaceCarBombUnsuccessful(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTeamRgbColour|natives.getTeamRgbColour(int team, [output] int R, [output] int G, [output] int B) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTextInputActive|natives.getTextInputActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTextureFromStreamedTxd|natives.getTextureFromStreamedTxd(string txdName, string textureName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTextureResolution|natives.getTextureResolution(uint texture, [output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTexture|natives.getTexture(int dictionary, string textureName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeOfDay|natives.getTimeOfDay([output] uint hour, [output] uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSinceLastArrest|natives.getTimeSinceLastArrest(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSinceLastDeath|natives.getTimeSinceLastDeath(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerDroveAgainstTraffic|natives.getTimeSincePlayerDroveAgainstTraffic(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerDroveOnPavement|natives.getTimeSincePlayerDroveOnPavement(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitBuilding|natives.getTimeSincePlayerHitBuilding(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitCar|natives.getTimeSincePlayerHitCar(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitObject|natives.getTimeSincePlayerHitObject(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitPed|natives.getTimeSincePlayerHitPed(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerRanLight|natives.getTimeSincePlayerRanLight(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeTilNextStation|natives.getTimeTilNextStation(Vehicle train) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTotalDurationOfCarRecording|natives.getTotalDurationOfCarRecording(int CarRec) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTotalNumberOfStats|natives.getTotalNumberOfStats(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTrainCaboose|natives.getTrainCaboose(Vehicle train, [output] Vehicle caboose) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTrainCarriage|natives.getTrainCarriage(Vehicle train, int num, [output] Vehicle carriage) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTrainPlayerWouldEnter|natives.getTrainPlayerWouldEnter(Player playerIndex, [output] int train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTxd|natives.getTxd(string txdName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleComponentInfo|natives.getVehicleComponentInfo(Vehicle veh, int component_id, [output] Vec3 Unk45, [output] Vec3 Unk46, [output] int Unk47, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleDirtLevel|natives.getVehicleDirtLevel(Vehicle vehicle, [output] float pIntensity) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleEngineRevs|natives.getVehicleEngineRevs(Vehicle veh) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleFromNetworkId|natives.getVehicleFromNetworkId(int netid, [output] Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleGear|natives.getVehicleGear(Vehicle veh) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleModelFromIndex|natives.getVehicleModelFromIndex(int index) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehiclePlayerWouldEnter|natives.getVehiclePlayerWouldEnter(Player playerIndex, [output] Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleQuaternion|natives.getVehicleQuaternion(Vehicle veh, [output] Vec3 qx, [output] float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleTypeOfModel|natives.getVehicleTypeOfModel(uint model) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getViewportPosAndSize|natives.getViewportPosAndSize(int viewportid, [output] Vec3 x, [output] float ysize) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getViewportPositionOfCoord|natives.getViewportPositionOfCoord(Vec3 x, int viewportid, [output] Vec2 vx, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWaterHeightNoWaves|natives.getWaterHeightNoWaves(Vec3 x, [output] float height) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWaterHeight|natives.getWaterHeight(Vec3 x, [output] float pheight) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWeapontypeModel|natives.getWeapontypeModel(int weapontype, [output] uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWeapontypeSlot|natives.getWeapontypeSlot(int weapon, [output] int slot) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageHeight|natives.getWebPageHeight(int htmlviewport) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageLinkAtPosn|natives.getWebPageLinkAtPosn(int htmlviewport, Vec2 x, unknownType unknownArg1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageLinkHref|natives.getWebPageLinkHref(int htmlviewport, int linkid) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageLinkPosn|natives.getWebPageLinkPosn(int htmlviewport, int linkid, [output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWidthOfLiteralString|natives.getWidthOfLiteralString(string str) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.giveDelayedWeaponToChar|natives.giveDelayedWeaponToChar(Ped ped, int weapon, int delaytime, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedAmbientObject|natives.givePedAmbientObject(Ped ped, uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedFakeNetworkName|natives.givePedFakeNetworkName(Ped ped, string name, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedHelmetWithOpts|natives.givePedHelmetWithOpts(Ped ped, bool Unk42) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedHelmet|natives.givePedHelmet(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedPickupObject|natives.givePedPickupObject(Ped ped, Object obj, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePlayerRagdollControl|natives.givePlayerRagdollControl(Player playerIndex, bool give) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.giveWeaponToChar|natives.giveWeaponToChar(Ped ped, uint weapon, uint ammo, bool unknown0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.grabNearbyObjectWithSpecialAttribute|natives.grabNearbyObjectWithSpecialAttribute(int attribute, [output] Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.handleAudioAnimEvent|natives.handleAudioAnimEvent(Ped ped, string AudioAnimEventName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.handVehicleControlBackToPlayer|natives.handVehicleControlBackToPlayer(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasAchievementBeenPassed|natives.hasAchievementBeenPassed(uint achievement) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasAdditionalTextLoaded|natives.hasAdditionalTextLoaded(uint textIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDamagedByCar|natives.hasCarBeenDamagedByCar(Vehicle vehicle, Vehicle otherCar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDamagedByChar|natives.hasCarBeenDamagedByChar(Vehicle vehicle, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDamagedByWeapon|natives.hasCarBeenDamagedByWeapon(Vehicle vehicle, uint weapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDroppedOff|natives.hasCarBeenDroppedOff(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenResprayed|natives.hasCarBeenResprayed(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarRecordingBeenLoaded|natives.hasCarRecordingBeenLoaded(int CarRec) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarStoppedBecauseOfLight|natives.hasCarStoppedBecauseOfLight(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharAnimFinished|natives.hasCharAnimFinished(Ped ped, string AnimName0, string AnimName1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenArrested|natives.hasCharBeenArrested(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenDamagedByCar|natives.hasCharBeenDamagedByCar(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenDamagedByChar|natives.hasCharBeenDamagedByChar(Ped ped, Ped otherChar, bool unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenDamagedByWeapon|natives.hasCharBeenDamagedByWeapon(Ped ped, uint weapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenPhotographed|natives.hasCharBeenPhotographed(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharGotWeapon|natives.hasCharGotWeapon(Ped ped, uint weapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharSpottedCharInFront|natives.hasCharSpottedCharInFront(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharSpottedChar|natives.hasCharSpottedChar(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasClosestObjectOfTypeBeenDamagedByCar|natives.hasClosestObjectOfTypeBeenDamagedByCar(Vec3 x, float radius, uint type_or_model, Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasClosestObjectOfTypeBeenDamagedByChar|natives.hasClosestObjectOfTypeBeenDamagedByChar(Vec3 x, float radius, uint objectModel, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCollisionForModelLoaded|natives.hasCollisionForModelLoaded(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasControlOfNetworkId|natives.hasControlOfNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCutsceneFinished|natives.hasCutsceneFinished(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCutsceneLoaded|natives.hasCutsceneLoaded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasDeatharrestExecuted|natives.hasDeatharrestExecuted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasFragmentRootOfClosestObjectOfTypeBeenDamaged|natives.hasFragmentRootOfClosestObjectOfTypeBeenDamaged(Vec3 x, float radius, uint Unk70) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasGamerChangedNetworkModelSettings|natives.hasGamerChangedNetworkModelSettings(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasModelLoaded|natives.hasModelLoaded(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasNetworkPlayerLeftGame|natives.hasNetworkPlayerLeftGame(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamagedByCar|natives.hasObjectBeenDamagedByCar(Object obj, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamagedByChar|natives.hasObjectBeenDamagedByChar(Object obj, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamagedByWeapon|natives.hasObjectBeenDamagedByWeapon(Object obj, int Unk71) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamaged|natives.hasObjectBeenDamaged(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenPhotographed|natives.hasObjectBeenPhotographed(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenUprooted|natives.hasObjectBeenUprooted(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectCollidedWithAnything|natives.hasObjectCollidedWithAnything(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectFragmentRootBeenDamaged|natives.hasObjectFragmentRootBeenDamaged(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasOverridenSitIdleAnimFinished|natives.hasOverridenSitIdleAnimFinished(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPickupBeenCollected|natives.hasPickupBeenCollected(Pickup pickup) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPlayerCollectedPickup|natives.hasPlayerCollectedPickup(Player playerIndex, Pickup pikcup) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPlayerDamagedAtLeastOnePed|natives.hasPlayerDamagedAtLeastOnePed(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPlayerDamagedAtLeastOneVehicle|natives.hasPlayerDamagedAtLeastOneVehicle(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPoolObjectCollidedWithCushion|natives.hasPoolObjectCollidedWithCushion(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPoolObjectCollidedWithObject|natives.hasPoolObjectCollidedWithObject(Object obj, Object otherObj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasReloadedWithMotionControl|natives.hasReloadedWithMotionControl(int ukn0, [output] bool ukn) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasResprayHappened|natives.hasResprayHappened(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasScriptLoaded|natives.hasScriptLoaded(string scriptName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasSoundFinished|natives.hasSoundFinished(uint sound) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasStreamedTxdLoaded|natives.hasStreamedTxdLoaded(string txdName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasThisAdditionalTextLoaded|natives.hasThisAdditionalTextLoaded(string textName, uint textIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.haveAnimsLoaded|natives.haveAnimsLoaded(string animName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.haveRequestedPathNodesBeenLoaded|natives.haveRequestedPathNodesBeenLoaded(uint requestId) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.heliAudioShouldSkipStartup|natives.heliAudioShouldSkipStartup(Vehicle heli, bool skip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hideCharWeaponForScriptedCutscene|natives.hideCharWeaponForScriptedCutscene(Ped ped, bool hide) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hideHelpTextThisFrame|natives.hideHelpTextThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hideHudAndRadarThisFrame|natives.hideHudAndRadarThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.highFallScream|natives.highFallScream(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.highlightMenuItem|natives.highlightMenuItem(int menuid, int item, bool highlight) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hintCam|natives.hintCam(Vec3 x, int Unk559, int Unk560, int Unk561, int Unk562) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.howLongHasNetworkPlayerBeenDeadFor|natives.howLongHasNetworkPlayerBeenDeadFor(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.improveLowPerformanceMissionPerFrameFlag|natives.improveLowPerformanceMissionPerFrameFlag(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.increasePlayerMaxArmour|natives.increasePlayerMaxArmour(Player playerIndex, float armour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.increasePlayerMaxHealth|natives.increasePlayerMaxHealth(Player playerIndex, int maxhealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementFloatStatNoMessage|natives.incrementFloatStatNoMessage(uint stat, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementFloatStat|natives.incrementFloatStat(int stat, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementIntStatNoMessage|natives.incrementIntStatNoMessage(uint stat, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementIntStat|natives.incrementIntStat(uint stat, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.initCutscene|natives.initCutscene(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.initDebugWidgets|natives.initDebugWidgets(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.initFrontendHelperText|natives.initFrontendHelperText(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAmbientSpeechDisabled|natives.isAmbientSpeechDisabled(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAmbientSpeechPlaying|natives.isAmbientSpeechPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAnyCharShootingInArea|natives.isAnyCharShootingInArea(Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAnyPickupAtCoords|natives.isAnyPickupAtCoords(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAnySpeechPlaying|natives.isAnySpeechPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAreaOccupied|natives.isAreaOccupied(Vec3 x1, Vec3 x2, bool unknownFalse1, bool unknownTrue, bool unknownFalse2, bool unknownFalse3, bool unknownFalse4) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAutoAimingOn|natives.isAutoAimingOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAutoSaveInProgress|natives.isAutoSaveInProgress(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBigVehicle|natives.isBigVehicle(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBitSet|natives.isBitSet(int val, int bitnum) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBlipShortRange|natives.isBlipShortRange(int blip) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBulletInArea|natives.isBulletInArea(Vec3 x, float radius, bool unknownTrue) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBulletInBox|natives.isBulletInBox(Vec3 x1, Vec3 x2, bool unknown) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isButtonJustPressed|natives.isButtonJustPressed(uint padIndex, uint button) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isButtonPressed|natives.isButtonPressed(uint padIndex, uint button) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamActive|natives.isCamActive(int camera) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamHappy|natives.isCamHappy(int cam) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamInterpolating|natives.isCamInterpolating(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamPropagating|natives.isCamPropagating(int camera) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamSequenceComplete|natives.isCamSequenceComplete(int Unk535) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamShaking|natives.isCamShaking(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarAMissionCar|natives.isCarAMissionCar(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarAttached|natives.isCarAttached(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarDead|natives.isCarDead(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarDoorDamaged|natives.isCarDoorDamaged(Vehicle vehicle, uint door) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarDoorFullyOpen|natives.isCarDoorFullyOpen(Vehicle vehicle, uint door) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarHealthGreater|natives.isCarHealthGreater(Vehicle car, float health) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInAirProper|natives.isCarInAirProper(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInArea2d|natives.isCarInArea2d(Vehicle vehicle, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInArea3d|natives.isCarInArea3d(Vehicle vehicle, Vec3 x1, Vec3 x2, uint unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInGarageArea|natives.isCarInGarageArea(string garageName, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInWater|natives.isCarInWater(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarLowRider|natives.isCarLowRider(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarModel|natives.isCarModel(Vehicle vehicle, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarOnFire|natives.isCarOnFire(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarOnScreen|natives.isCarOnScreen(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarPassengerSeatFree|natives.isCarPassengerSeatFree(Vehicle vehicle, uint seatIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarPlayingAnim|natives.isCarPlayingAnim(Vehicle car, string animname0, string animname1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarSirenOn|natives.isCarSirenOn(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStoppedAtTrafficLights|natives.isCarStoppedAtTrafficLights(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStopped|natives.isCarStopped(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStreetRacer|natives.isCarStreetRacer(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStuckOnRoof|natives.isCarStuckOnRoof(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStuck|natives.isCarStuck(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarTouchingCar|natives.isCarTouchingCar(Vehicle vehicle, Vehicle otherCar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarTyreBurst|natives.isCarTyreBurst(Vehicle vehicle, uint tyre) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarUpright|natives.isCarUpright(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarUpsidedown|natives.isCarUpsidedown(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarWaitingForWorldCollision|natives.isCarWaitingForWorldCollision(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharArmed|natives.isCharArmed(Ped ped, uint slot) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharDead|natives.isCharDead(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharDucking|natives.isCharDucking(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharFacingChar|natives.isCharFacingChar(Ped ped, Ped otherChar, float angle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharFatallyInjured|natives.isCharFatallyInjured(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharGesturing|natives.isCharGesturing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharGettingInToACar|natives.isCharGettingInToACar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharGettingUp|natives.isCharGettingUp(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharHealthGreater|natives.isCharHealthGreater(Ped ped, uint health) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAir|natives.isCharInAir(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAngledArea2d|natives.isCharInAngledArea2d(Ped ped, Vec2 x1, Vec2 x2, float unknown, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAngledArea3d|natives.isCharInAngledArea3d(Ped ped, Vec3 x1, Vec3 x2, float unknown, bool unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyBoat|natives.isCharInAnyBoat(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyCar|natives.isCharInAnyCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyHeli|natives.isCharInAnyHeli(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyPlane|natives.isCharInAnyPlane(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyPoliceVehicle|natives.isCharInAnyPoliceVehicle(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyTrain|natives.isCharInAnyTrain(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInArea2d|natives.isCharInArea2d(Ped ped, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInArea3d|natives.isCharInArea3d(Ped ped, Vec3 x1, Vec3 x2, bool unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAreaOnFoot2d|natives.isCharInAreaOnFoot2d(Ped ped, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInCar|natives.isCharInCar(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInFlyingVehicle|natives.isCharInFlyingVehicle(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInjured|natives.isCharInjured(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInMeleeCombat|natives.isCharInMeleeCombat(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInModel|natives.isCharInModel(Ped ped, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInTaxi|natives.isCharInTaxi(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInWater|natives.isCharInWater(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInZone|natives.isCharInZone(Ped ped, string zonename) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharMale|natives.isCharMale(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharModel|natives.isCharModel(Ped ped, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnAnyBike|natives.isCharOnAnyBike(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnFire|natives.isCharOnFire(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnFoot|natives.isCharOnFoot(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnScreen|natives.isCharOnScreen(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharPlayingAnim|natives.isCharPlayingAnim(Ped ped, string animSet, string animName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharRespondingToAnyEvent|natives.isCharRespondingToAnyEvent(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharRespondingToEvent|natives.isCharRespondingToEvent(Ped ped, int eventid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharShootingInArea|natives.isCharShootingInArea(Ped ped, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharShooting|natives.isCharShooting(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSittingIdle|natives.isCharSittingIdle(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSittingInAnyCar|natives.isCharSittingInAnyCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSittingInCar|natives.isCharSittingInCar(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharStopped|natives.isCharStopped(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharStuckUnderCar|natives.isCharStuckUnderCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSwimming|natives.isCharSwimming(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingChar|natives.isCharTouchingChar(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingObjectOnFoot|natives.isCharTouchingObjectOnFoot(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingObject|natives.isCharTouchingObject(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingVehicle|natives.isCharTouchingVehicle(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTryingToEnterALockedCar|natives.isCharTryingToEnterALockedCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharUsingAnyScenario|natives.isCharUsingAnyScenario(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharUsingMapAttractor|natives.isCharUsingMapAttractor(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharUsingScenario|natives.isCharUsingScenario(Ped ped, string scenarioName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharVisible|natives.isCharVisible(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharWaitingForWorldCollision|natives.isCharWaitingForWorldCollision(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isClosestObjectOfTypeSmashedOrDamaged|natives.isClosestObjectOfTypeSmashedOrDamaged(Vec3 x, float radius, uint type_or_model, bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isControlJustPressed|natives.isControlJustPressed(int Unk822, int controlid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isControlPressed|natives.isControlPressed(int Unk823, int controlid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCopPedInArea3dNoSave|natives.isCopPedInArea3dNoSave(Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCopVehicleInArea3dNoSave|natives.isCopVehicleInArea3dNoSave(Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isDebugCameraOn|natives.isDebugCameraOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isEmergencyServicesVehicle|natives.isEmergencyServicesVehicle(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isEpisodeAvailable|natives.isEpisodeAvailable(int episode) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isEpisodicDiscBuild|natives.isEpisodicDiscBuild(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isExplosionInArea|natives.isExplosionInArea(int expnum, Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isExplosionInSphere|natives.isExplosionInSphere(int expnum, Vec3 x, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isFollowVehicleCamOffsetActive|natives.isFollowVehicleCamOffsetActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isFontLoaded|natives.isFontLoaded(uint font) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isFrontendFading|natives.isFrontendFading(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameInControlOfMusic|natives.isGameInControlOfMusic(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardKeyJustPressed|natives.isGameKeyboardKeyJustPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardKeyPressed|natives.isGameKeyboardKeyPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavDownPressed|natives.isGameKeyboardNavDownPressed(bool Unk824) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavLeftPressed|natives.isGameKeyboardNavLeftPressed(bool Unk825) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavRightPressed|natives.isGameKeyboardNavRightPressed(bool Unk826) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavUpPressed|natives.isGameKeyboardNavUpPressed(bool Unk827) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGarageClosed|natives.isGarageClosed(string garageName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGarageOpen|natives.isGarageOpen(string garageName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGroupLeader|natives.isGroupLeader(Ped ped, int group) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGroupMember|natives.isGroupMember(Ped ped, int group) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHeliPartBroken|natives.isHeliPartBroken(Vehicle heli, bool flag0, bool flag1, bool flag2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHelpMessageBeingDisplayed|natives.isHelpMessageBeingDisplayed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHintRunning|natives.isHintRunning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHudPreferenceSwitchedOn|natives.isHudPreferenceSwitchedOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHudReticuleComplex|natives.isHudReticuleComplex(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInCarFireButtonPressed|natives.isInCarFireButtonPressed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInLanMode|natives.isInLanMode(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInPlayerSettingsMenu|natives.isInPlayerSettingsMenu(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInSpectatorMode|natives.isInSpectatorMode(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInteriorScene|natives.isInteriorScene(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isJapaneseVersion|natives.isJapaneseVersion(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isKeyboardKeyJustPressed|natives.isKeyboardKeyJustPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isKeyboardKeyPressed|natives.isKeyboardKeyPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isLazlowStationLocked|natives.isLazlowStationLocked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isLcpdDataValid|natives.isLcpdDataValid(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isLookInverted|natives.isLookInverted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMemoryCardInUse|natives.isMemoryCardInUse(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMessageBeingDisplayed|natives.isMessageBeingDisplayed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMinigameInProgress|natives.isMinigameInProgress(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMissionCompletePlaying|natives.isMissionCompletePlaying(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMobilePhoneCallOngoing|natives.isMobilePhoneCallOngoing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMobilePhoneRadioActive|natives.isMobilePhoneRadioActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isModelInCdimage|natives.isModelInCdimage(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMoneyPickupAtCoords|natives.isMoneyPickupAtCoords(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMouseButtonJustPressed|natives.isMouseButtonJustPressed(int Unk828) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMouseButtonPressed|natives.isMouseButtonPressed(int Unk829) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMouseUsingVerticalInversion|natives.isMouseUsingVerticalInversion(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkGamePending|natives.isNetworkGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkGameRunning|natives.isNetworkGameRunning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkPlayerActive|natives.isNetworkPlayerActive(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkSession|natives.isNetworkSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNextStationAllowed|natives.isNextStationAllowed(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNonFragObjectSmashed|natives.isNonFragObjectSmashed(Vec3 x, float radius, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNumlockEnabled|natives.isNumlockEnabled(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectAttached|natives.isObjectAttached(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInAngledArea3d|natives.isObjectInAngledArea3d(Object obj, Vec3 x0, Vec3 x1, float Unk72, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInArea2d|natives.isObjectInArea2d(Object obj, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInArea3d|natives.isObjectInArea3d(Object obj, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInWater|natives.isObjectInWater(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectOnFire|natives.isObjectOnFire(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectOnScreen|natives.isObjectOnScreen(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectPlayingAnim|natives.isObjectPlayingAnim(Object obj, string animname0, string animname1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectReassignmentInProgress|natives.isObjectReassignmentInProgress(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectStatic|natives.isObjectStatic(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectTouchingObject|natives.isObjectTouchingObject(Object obj0, Object obj1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectUpright|natives.isObjectUpright(Object obj, float angle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectWithinBrainActivationRange|natives.isObjectWithinBrainActivationRange(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isOurPlayerHigherPriorityForCarGeneration|natives.isOurPlayerHigherPriorityForCarGeneration(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPainPlaying|natives.isPainPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPartyMode|natives.isPartyMode(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPauseMenuActive|natives.isPauseMenuActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPayNSprayActive|natives.isPayNSprayActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPcUsingJoypad|natives.isPcUsingJoypad(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPcVersion|natives.isPcVersion(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedAMissionPed|natives.isPedAMissionPed(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedAttachedToAnyCar|natives.isPedAttachedToAnyCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedAttachedToObject|natives.isPedAttachedToObject(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedBeingJacked|natives.isPedBeingJacked(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedClimbing|natives.isPedClimbing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedDoingDriveby|natives.isPedDoingDriveby(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedFleeing|natives.isPedFleeing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedHoldingAnObject|natives.isPedHoldingAnObject(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInCombat|natives.isPedInCombat(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInCover|natives.isPedInCover(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInCutsceneBlockingBounds|natives.isPedInCutsceneBlockingBounds(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInGroup|natives.isPedInGroup(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedJacking|natives.isPedJacking(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedLookingAtCar|natives.isPedLookingAtCar(Ped ped, Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedLookingAtObject|natives.isPedLookingAtObject(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedLookingAtPed|natives.isPedLookingAtPed(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedPinnedDown|natives.isPedPinnedDown(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedRagdoll|natives.isPedRagdoll(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedRetreating|natives.isPedRetreating(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedsVehicleHot|natives.isPedsVehicleHot(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlaceCarBombActive|natives.isPlaceCarBombActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlaybackGoingOnForCar|natives.isPlaybackGoingOnForCar(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerBeingArrested|natives.isPlayerBeingArrested(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerClimbing|natives.isPlayerClimbing(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerControlOn|natives.isPlayerControlOn(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerDead|natives.isPlayerDead(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerFreeAimingAtChar|natives.isPlayerFreeAimingAtChar(Player playerIndex, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerFreeForAmbientTask|natives.isPlayerFreeForAmbientTask(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerInRemoteMode|natives.isPlayerInRemoteMode(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerOnline|natives.isPlayerOnline(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPerformingStoppie|natives.isPlayerPerformingStoppie(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPerformingWheelie|natives.isPlayerPerformingWheelie(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPlaying|natives.isPlayerPlaying(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPressingHorn|natives.isPlayerPressingHorn(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerReadyForCutscene|natives.isPlayerReadyForCutscene(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerScriptControlOn|natives.isPlayerScriptControlOn(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerSignedInLocally|natives.isPlayerSignedInLocally(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerTargettingAnything|natives.isPlayerTargettingAnything(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerTargettingChar|natives.isPlayerTargettingChar(Player playerIndex, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerTargettingObject|natives.isPlayerTargettingObject(Player playerIndex, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerVehicleEntryDisabled|natives.isPlayerVehicleEntryDisabled(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPointObscuredByAMissionEntity|natives.isPointObscuredByAMissionEntity(float pX, float pY, float pZ, float sizeX, float sizeY, float sizeZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPosInCutsceneBlockingBounds|natives.isPosInCutsceneBlockingBounds(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isProjectileInArea|natives.isProjectileInArea(Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isRadioHudOn|natives.isRadioHudOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isRadioRetuning|natives.isRadioRetuning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isRelationshipSet|natives.isRelationshipSet(int Unk493, int Unk494, int Unk495) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isReplaySaving|natives.isReplaySaving(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isReplaySystemSaving|natives.isReplaySystemSaving(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScoreGreater|natives.isScoreGreater(Player playerIndex, uint score) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadedIn|natives.isScreenFadedIn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadedOut|natives.isScreenFadedOut(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadingIn|natives.isScreenFadingIn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadingOut|natives.isScreenFadingOut(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFading|natives.isScreenFading(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScriptedConversationOngoing|natives.isScriptedConversationOngoing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScriptedSpeechPlaying|natives.isScriptedSpeechPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScriptFireExtinguished|natives.isScriptFireExtinguished(int fire) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSittingObjectNear|natives.isSittingObjectNear(Vec3 x, int Unk73) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSniperInverted|natives.isSniperInverted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSpecificCamInterpolating|natives.isSpecificCamInterpolating(int cam) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStreamingAdditionalText|natives.isStreamingAdditionalText(uint textIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStreamingPriorityRequests|natives.isStreamingPriorityRequests(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStreamingThisAdditionalText|natives.isStreamingThisAdditionalText(string str0, int Unk597, int Unk598) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStringNull|natives.isStringNull(string str) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSystemUiShowing|natives.isSystemUiShowing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisAMinigameScript|natives.isThisAMinigameScript(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisHelpMessageBeingDisplayed|natives.isThisHelpMessageBeingDisplayed(string gxtentry) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisHelpMessageWithNumberBeingDisplayed|natives.isThisHelpMessageWithNumberBeingDisplayed(string gxtentry, int number) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisHelpMessageWithStringBeingDisplayed|natives.isThisHelpMessageWithStringBeingDisplayed(string gxtentry, string str) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisMachineTheServer|natives.isThisMachineTheServer(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelABike|natives.isThisModelABike(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelABoat|natives.isThisModelABoat(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelACar|natives.isThisModelACar(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAHeli|natives.isThisModelAHeli(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAPed|natives.isThisModelAPed(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAPlane|natives.isThisModelAPlane(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelATrain|natives.isThisModelATrain(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAVehicle|natives.isThisModelAVehicle(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisPedAPlayer|natives.isThisPedAPlayer(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThreadActive|natives.isThreadActive(uint threadId) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isUsingController|natives.isUsingController(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehDriveable|natives.isVehDriveable(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehicleExtraTurnedOn|natives.isVehicleExtraTurnedOn(Vehicle vehicle, uint extra) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehicleOnAllWheels|natives.isVehicleOnAllWheels(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehicleTouchingObject|natives.isVehicleTouchingObject(Vehicle veh, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehStuck|natives.isVehStuck(Vehicle veh, int time, bool flag0, bool flag1, bool flag2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehWindowIntact|natives.isVehWindowIntact(Vehicle vehicle, uint window) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isViewportActive|natives.isViewportActive(int viewportid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isWantedLevelGreater|natives.isWantedLevelGreater(Player playerIndex, uint level) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isWorldPointWithinBrainActivationRange|natives.isWorldPointWithinBrainActivationRange(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isXbox360Version|natives.isXbox360Version(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.knockPedOffBike|natives.knockPedOffBike(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.launchLocalPlayerInNetworkGame|natives.launchLocalPlayerInNetworkGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.limitAngle|natives.limitAngle(float angle, [output] float anglelimited) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.limitTwoPlayerDistance|natives.limitTwoPlayerDistance(float distance) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.line|natives.line(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.listenToPlayerGroupCommands|natives.listenToPlayerGroupCommands(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadAdditionalText|natives.loadAdditionalText(string textName, uint textIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadAllObjectsNow|natives.loadAllObjectsNow(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadAllPathNodes|natives.loadAllPathNodes(bool value) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadCharDecisionMaker|natives.loadCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadCombatDecisionMaker|natives.loadCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadPathNodesInArea|natives.loadPathNodesInArea(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadSceneForRoomByKey|natives.loadSceneForRoomByKey(int interior, uint roomhash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadScene|natives.loadScene(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadSettings|natives.loadSettings(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadTextFont|natives.loadTextFont(uint font) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadTxd|natives.loadTxd(string txdName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadWebPage|natives.loadWebPage(int htmlviewport, string webaddress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.localPlayerIsReadyToStartPlaying|natives.localPlayerIsReadyToStartPlaying(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCar2d|natives.locateCar2d(Vehicle car, Vec2 x0, Vec2 xUnk48, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCar3d|natives.locateCar3d(Vehicle car, Vec3 x, Vec3 xa, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeans2d|natives.locateCharAnyMeans2d(Ped ped, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeans3d|natives.locateCharAnyMeans3d(Ped ped, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansCar2d|natives.locateCharAnyMeansCar2d(Ped ped, Vehicle car, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansCar3d|natives.locateCharAnyMeansCar3d(Ped ped, Vehicle car, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansChar2d|natives.locateCharAnyMeansChar2d(Ped ped, Ped pednext, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansChar3d|natives.locateCharAnyMeansChar3d(Ped ped, Ped pednext, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansObject2d|natives.locateCharAnyMeansObject2d(Ped ped, Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansObject3d|natives.locateCharAnyMeansObject3d(Ped ped, Object obj, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCar2d|natives.locateCharInCar2d(Ped ped, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCar3d|natives.locateCharInCar3d(Ped ped, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarCar2d|natives.locateCharInCarCar2d(Ped ped, Vehicle car, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarCar3d|natives.locateCharInCarCar3d(Ped ped, Vehicle car, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarChar2d|natives.locateCharInCarChar2d(Ped ped, Ped pednext, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarChar3d|natives.locateCharInCarChar3d(Ped ped, Vehicle pednext, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarObject2d|natives.locateCharInCarObject2d(Ped ped, Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarObject3d|natives.locateCharInCarObject3d(Ped ped, Object obj, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFoot2d|natives.locateCharOnFoot2d(Ped ped, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFoot3d|natives.locateCharOnFoot3d(Ped ped, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootCar2d|natives.locateCharOnFootCar2d(Ped ped, Vehicle car, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootCar3d|natives.locateCharOnFootCar3d(Ped ped, Vehicle car, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootChar2d|natives.locateCharOnFootChar2d(Ped ped, Ped pednext, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootChar3d|natives.locateCharOnFootChar3d(Ped ped, Ped pednext, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootObject2d|natives.locateCharOnFootObject2d(Ped ped, Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootObject3d|natives.locateCharOnFootObject3d(Ped ped, Object obj, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateDeadCar3d|natives.locateDeadCar3d(Vehicle car, Vec3 x, Vec3 xa, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateObject2d|natives.locateObject2d(Object obj, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateObject3d|natives.locateObject3d(Object obj, Vec3 x, Vec3 xr, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.lockCarDoors|natives.lockCarDoors(Vehicle vehicle, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.lockLazlowStation|natives.lockLazlowStation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.lockPlayerSettingsGenreChange|natives.lockPlayerSettingsGenreChange(int lock_bit_mask) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loopRaceTrack|natives.loopRaceTrack(bool loop) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.maintainFlashingStarAfterOffence|natives.maintainFlashingStarAfterOffence(Player playerIndex, bool maintain) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makeObjectTargettable|natives.makeObjectTargettable(Object obj, bool targettable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerFireProof|natives.makePlayerFireProof(Player playerIndex, bool proof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerGangDisappear|natives.makePlayerGangDisappear(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerGangReappear|natives.makePlayerGangReappear(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerSafeForCutscene|natives.makePlayerSafeForCutscene(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markCarAsConvoyCar|natives.markCarAsConvoyCar(Vehicle vehicle, bool convoyCar) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markCarAsNoLongerNeeded|natives.markCarAsNoLongerNeeded([output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markCharAsNoLongerNeeded|natives.markCharAsNoLongerNeeded([output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markMissionTrainAsNoLongerNeeded|natives.markMissionTrainAsNoLongerNeeded(int train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markMissionTrainsAsNoLongerNeeded|natives.markMissionTrainsAsNoLongerNeeded(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markModelAsNoLongerNeeded|natives.markModelAsNoLongerNeeded(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markObjectAsNoLongerNeeded|natives.markObjectAsNoLongerNeeded([output] Object pObj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markRoadNodeAsDontWander|natives.markRoadNodeAsDontWander(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markScriptAsNoLongerNeeded|natives.markScriptAsNoLongerNeeded(string scriptName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markStreamedTxdAsNoLongerNeeded|natives.markStreamedTxdAsNoLongerNeeded(string txdName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.missionAudioBankNoLongerNeeded|natives.missionAudioBankNoLongerNeeded(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.modifyCharMoveState|natives.modifyCharMoveState(Ped ped, uint state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetAmountOfAnchorPoints|natives.mpGetAmountOfAnchorPoints(Ped ped, int id) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetAmountOfVariationComponent|natives.mpGetAmountOfVariationComponent(Ped ped, int componentid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetPreferenceValue|natives.mpGetPreferenceValue(int prefid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetPropSetup|natives.mpGetPropSetup(Ped ped, int ukn0, int ukn1, int ukn2, int ukn3) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetVariationSetup|natives.mpGetVariationSetup(Ped ped, int Unk890, int Unk891, int Unk892, int Unk893) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpSetPreferenceValue|natives.mpSetPreferenceValue(int prefid, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.muteGameworldAndPositionedRadioForTv|natives.muteGameworldAndPositionedRadioForTv(bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.muteGameworldAudio|natives.muteGameworldAudio(bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mutePositionedRadio|natives.mutePositionedRadio(bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.muteStaticEmitter|natives.muteStaticEmitter(int StaticEmitterIndex, bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.m|natives.m(int cam, int heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.newMobilePhoneCall|natives.newMobilePhoneCall(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.newScriptedConversation|natives.newScriptedConversation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.obfuscateInt|natives.obfuscateInt(int Unk941, int Unk942) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.obfuscateString|natives.obfuscateString(string str) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.onFireScream|natives.onFireScream(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openCarDoor|natives.openCarDoor(Vehicle vehicle, uint door) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openDebugFile|natives.openDebugFile(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openGarage|natives.openGarage(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openSequenceTask|natives.openSequenceTask([output] int pTaskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.overrideFreezeFlags|natives.overrideFreezeFlags(bool Unk504) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.overrideNextRestart|natives.overrideNextRestart(Vec3 x, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.overrideNumberOfParkedCars|natives.overrideNumberOfParkedCars(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.panicScream|natives.panicScream(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pauseGame|natives.pauseGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pausePlaybackRecordedCar|natives.pausePlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pauseScriptedConversation|natives.pauseScriptedConversation(bool pause) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueConsiderPedsWithFlagFalse|natives.pedQueueConsiderPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueConsiderPedsWithFlagTrue|natives.pedQueueConsiderPedsWithFlagTrue(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueRejectPedsWithFlagFalse|natives.pedQueueRejectPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueRejectPedsWithFlagTrue|natives.pedQueueRejectPedsWithFlagTrue(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pickupsPassTime|natives.pickupsPassTime(uint time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.placeObjectRelativeToCar|natives.placeObjectRelativeToCar(Object obj, Vehicle car, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.planeStartsInAir|natives.planeStartsInAir(Vehicle plane) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEventFromObject|natives.playAudioEventFromObject(string EventName, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEventFromPed|natives.playAudioEventFromPed(string name, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEventFromVehicle|natives.playAudioEventFromVehicle(string name, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEvent|natives.playAudioEvent(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playCarAnim|natives.playCarAnim(Vehicle car, string animname0, string animname1, float Unk50, bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerHasChar|natives.playerHasChar(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerHasFlashingStarsAboutToDrop|natives.playerHasFlashingStarsAboutToDrop(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerHasGreyedOutStars|natives.playerHasGreyedOutStars(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerIsInteractingWithGarage|natives.playerIsInteractingWithGarage(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerIsNearFirstPigeon|natives.playerIsNearFirstPigeon(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerIsPissedOff|natives.playerIsPissedOff(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerWantsToJoinNetworkGame|natives.playerWantsToJoinNetworkGame(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playFireSoundFromPosition|natives.playFireSoundFromPosition(int sound_id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playMovie|natives.playMovie(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playObjectAnim|natives.playObjectAnim(Object obj, string animname0, string animname1, float Unk74, bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playScriptedConversationFrontend|natives.playScriptedConversationFrontend(bool play) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromObject|natives.playSoundFromObject(int sound_id, string name, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromPed|natives.playSoundFromPed(int SoundId, string SoundName, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromPosition|natives.playSoundFromPosition(int sound_id, string name, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromVehicle|natives.playSoundFromVehicle(int SoundId, string SoundName, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFrontend|natives.playSoundFrontend(uint sound, string soundName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSound|natives.playSound(int SoundId, string SoundName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsCheat|natives.playstatsCheat(int stat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsFloat|natives.playstatsFloat(int Unk785, float Unk786) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionCancelled|natives.playstatsMissionCancelled(int Unk795) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionFailed|natives.playstatsMissionFailed(int Unk796) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionPassed|natives.playstatsMissionPassed(string str0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionStarted|natives.playstatsMissionStarted(int Unk797) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playStreamFromObject|natives.playStreamFromObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playStreamFromPed|natives.playStreamFromPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playStreamFrontend|natives.playStreamFrontend(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtCam|natives.pointCamAtCam(int cam, int camnext) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtCoord|natives.pointCamAtCoord(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtObject|natives.pointCamAtObject(int cam, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtPed|natives.pointCamAtPed(int cam, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtVehicle|natives.pointCamAtVehicle(int cam, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtObj|natives.pointFixedCamAtObj(Object obj, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtPed|natives.pointFixedCamAtPed(Ped ped, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtPos|natives.pointFixedCamAtPos(Vec3 x, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtVehicle|natives.pointFixedCamAtVehicle(Vehicle veh, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCam|natives.pointFixedCam(Vec3 x, int Unk563) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.popCarBoot|natives.popCarBoot(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.populateNow|natives.populateNow(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pow|natives.pow(float base, float power) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.preloadStreamWithStartOffset|natives.preloadStreamWithStartOffset(string StreamName, int StartOffset) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.preloadStream|natives.preloadStream(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.previewRingtone|natives.previewRingtone(int RingtoneId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printBigQ|natives.printBigQ(string gxtentry, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printBig|natives.printBig(string gxtName, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printfloat|natives.printfloat(float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithNumber|natives.printHelpForeverWithNumber(string gxtName, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithStringNoSound|natives.printHelpForeverWithStringNoSound(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithString|natives.printHelpForeverWithString(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithTwoNumbers|natives.printHelpForeverWithTwoNumbers(string gxtentry, int Unk658, int Unk659) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForever|natives.printHelpForever(string gxtName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpOverFrontend|natives.printHelpOverFrontend(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithNumber|natives.printHelpWithNumber(string gxtName, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithStringNoSound|natives.printHelpWithStringNoSound(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithString|natives.printHelpWithString(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithTwoNumbers|natives.printHelpWithTwoNumbers(string gxtentry, int Unk660, int Unk661) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelp|natives.printHelp(string gxtName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printint|natives.printint(int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printnl|natives.printnl(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printNow|natives.printNow(string gxtName, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringInStringNow|natives.printStringInStringNow(string gxtName, string gxtText, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringInString|natives.printStringInString(string gxtName, string gxtText, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithLiteralStringNow|natives.printStringWithLiteralStringNow(string gxtName, string text, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithLiteralString|natives.printStringWithLiteralString(string gxtentry, string string, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithSubstringGivenHashKeyNow|natives.printStringWithSubstringGivenHashKeyNow(string gxtkey0, uint gxtkey1, int time, int style) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithTwoLiteralStringsNow|natives.printStringWithTwoLiteralStringsNow(string gxtentry, string string1, string string2, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithTwoLiteralStrings|natives.printStringWithTwoLiteralStrings(string gxtentry, string string1, string string2, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printstring|natives.printstring(string value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printvector|natives.printvector(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith2NumbersBig|natives.printWith2NumbersBig(string gxtentry, int Unk662, int Unk663, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith2NumbersNow|natives.printWith2NumbersNow(string gxtName, int value1, int value2, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith2Numbers|natives.printWith2Numbers(string gxtName, int value1, int value2, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith3NumbersNow|natives.printWith3NumbersNow(string gxtentry, int Unk667, int Unk668, int Unk669, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith3Numbers|natives.printWith3Numbers(string gxtentry, int Unk664, int Unk665, int Unk666, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith4NumbersNow|natives.printWith4NumbersNow(string gxtentry, int Unk674, int Unk675, int Unk676, int Unk677, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith4Numbers|natives.printWith4Numbers(string gxtentry, int Unk670, int Unk671, int Unk672, int Unk673, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith5NumbersNow|natives.printWith5NumbersNow(string gxtentry, int Unk683, int Unk684, int Unk685, int Unk686, int Unk687, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith5Numbers|natives.printWith5Numbers(string gxtentry, int Unk678, int Unk679, int Unk680, int Unk681, int Unk682, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith6NumbersNow|natives.printWith6NumbersNow(string gxtentry, int Unk694, int Unk695, int Unk696, int Unk697, int Unk698, int Unk699, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith6Numbers|natives.printWith6Numbers(string gxtentry, int Unk688, int Unk689, int Unk690, int Unk691, int Unk692, int Unk693, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWithNumberBig|natives.printWithNumberBig(string gxtName, int value, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWithNumberNow|natives.printWithNumberNow(string gxtName, int value, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWithNumber|natives.printWithNumber(string gxtName, int value, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.print|natives.print(string gxtName, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.prioritizeStreamingRequest|natives.prioritizeStreamingRequest(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.processMissionDeletionList|natives.processMissionDeletionList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.prostituteCamActivate|natives.prostituteCamActivate(bool activate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.readKillFrenzyStatus|natives.readKillFrenzyStatus(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerBestPosition|natives.registerBestPosition(int Unk505, int position) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerFloatStat|natives.registerFloatStat(int stat, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerHatedTargetsAroundPed|natives.registerHatedTargetsAroundPed(Ped ped, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerHatedTargetsInArea|natives.registerHatedTargetsInArea(Ped ped, Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerIntStat|natives.registerIntStat(int stat, int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerKillInMultiplayerGame|natives.registerKillInMultiplayerGame(Player playerIndex, int id, uint ukn) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerMissionPassed|natives.registerMissionPassed(string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerMultiplayerGameWin|natives.registerMultiplayerGameWin(Player playerIndex, bool Unk949) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerNetworkBestGameScores|natives.registerNetworkBestGameScores(Player playerIndex, int Unk950, int Unk951) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerOddjobMissionPassed|natives.registerOddjobMissionPassed(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerPlayerRespawnCoords|natives.registerPlayerRespawnCoords(Player playerIndex, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerSaveHouse|natives.registerSaveHouse(Vec3 x, float unkf, string name, uint unk0) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerScriptWithAudio|natives.registerScriptWithAudio(bool reg) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerStringForFrontendStat|natives.registerStringForFrontendStat(int stat, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerTarget|natives.registerTarget(Ped ped, Ped target) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerTrackNumber|natives.registerTrackNumber(int number) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerWorldPointScriptBrain|natives.registerWorldPointScriptBrain(string ScriptName, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseMovie|natives.releaseMovie(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releasePathNodes|natives.releasePathNodes(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseScriptControlledMicrophone|natives.releaseScriptControlledMicrophone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseSoundId|natives.releaseSoundId(uint sound) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseTexture|natives.releaseTexture(int texture) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseTimeOfDay|natives.releaseTimeOfDay(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseWeather|natives.releaseWeather(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reloadWebPage|natives.reloadWebPage(int htmlviewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAdditionalPopulationModel|natives.removeAdditionalPopulationModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAllCharWeapons|natives.removeAllCharWeapons(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAllInactiveGroupsFromCleanupList|natives.removeAllInactiveGroupsFromCleanupList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAllPickupsOfType|natives.removeAllPickupsOfType(uint type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAnims|natives.removeAnims(string animName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeBlipAndClearIndex|natives.removeBlipAndClearIndex(int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeBlip|natives.removeBlip(int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCarRecording|natives.removeCarRecording(int CarRec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCarsFromGeneratorsInArea|natives.removeCarsFromGeneratorsInArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCarWindow|natives.removeCarWindow(Vehicle car, int windnum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharDefensiveArea|natives.removeCharDefensiveArea(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharElegantly|natives.removeCharElegantly(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharFromCarMaintainPosition|natives.removeCharFromCarMaintainPosition(Ped ped, Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharFromGroup|natives.removeCharFromGroup(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCloseMicPed|natives.removeCloseMicPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCoverPoint|natives.removeCoverPoint(int coverPoint) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeDecisionMaker|natives.removeDecisionMaker(int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeFakeNetworkNameFromPed|natives.removeFakeNetworkNameFromPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeGroup|natives.removeGroup(int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeIplDiscreetly|natives.removeIplDiscreetly(string iplname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeIpl|natives.removeIpl(string iplName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeNavmeshRequiredRegion|natives.removeNavmeshRequiredRegion(float Unk599, float Unk600) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePedHelmet|natives.removePedHelmet(Ped ped, bool removed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePickup|natives.removePickup(Pickup pickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePlayerHelmet|natives.removePlayerHelmet(Player playerIndex, bool remove) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeProjtexFromObject|natives.removeProjtexFromObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeProjtexInRange|natives.removeProjtexInRange(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfxFromObject|natives.removePtfxFromObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfxFromPed|natives.removePtfxFromPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfxFromVehicle|natives.removePtfxFromVehicle(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfx|natives.removePtfx(uint ptfx) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeScriptFire|natives.removeScriptFire(int fire) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeScriptMic|natives.removeScriptMic(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeStuckCarCheck|natives.removeStuckCarCheck(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeTemporaryRadarBlipsForPickups|natives.removeTemporaryRadarBlipsForPickups(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeTxd|natives.removeTxd(int txd) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeUpsidedownCarCheck|natives.removeUpsidedownCarCheck(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeWeaponFromChar|natives.removeWeaponFromChar(Ped ped, uint weapon) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.renderRaceTrack|natives.renderRaceTrack(bool render) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.renderWeaponPickupsBigger|natives.renderWeaponPickupsBigger(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportCrime|natives.reportCrime(Vec3 x, string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportDispatch|natives.reportDispatch(int id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportPoliceSpottingSuspect|natives.reportPoliceSpottingSuspect(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportSuspectArrested|natives.reportSuspectArrested(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportSuspectDown|natives.reportSuspectDown(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportTaggedRadioTrack|natives.reportTaggedRadioTrack(int TrackTextId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAdditionalText|natives.requestAdditionalText(string textName, uint textIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAllSlodsInWorld|natives.requestAllSlodsInWorld(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAmbientAudioBank|natives.requestAmbientAudioBank(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAnims|natives.requestAnims(string animName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestCarRecording|natives.requestCarRecording(int CarRecId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestCollisionAtPosn|natives.requestCollisionAtPosn(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestCollisionForModel|natives.requestCollisionForModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestControlOfNetworkId|natives.requestControlOfNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestInteriorModels|natives.requestInteriorModels(uint model, string interiorName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestIpl|natives.requestIpl(string iplName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestMissionAudioBank|natives.requestMissionAudioBank(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestModel|natives.requestModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestScript|natives.requestScript(string scriptName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestStreamedTxd|natives.requestStreamedTxd(string txdName, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionObjectsForHost|natives.reserveNetworkMissionObjectsForHost(int count) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionPedsForHost|natives.reserveNetworkMissionPedsForHost(int Unk952) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionVehiclesForHost|natives.reserveNetworkMissionVehiclesForHost(int Unk954) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionVehicles|natives.reserveNetworkMissionVehicles(int Unk953) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetAchievementsAward|natives.resetAchievementsAward(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetCamInterpCustomSpeedGraph|natives.resetCamInterpCustomSpeedGraph(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetCamSplineCustomSpeedGraph|natives.resetCamSplineCustomSpeedGraph(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetCarWheels|natives.resetCarWheels(Vehicle car, bool reset) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetLocalPlayerWeaponStat|natives.resetLocalPlayerWeaponStat(int wtype, int wid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetNoLawVehiclesDestroyedByLocalPlayer|natives.resetNoLawVehiclesDestroyedByLocalPlayer(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetNumOfModelsKilledByPlayer|natives.resetNumOfModelsKilledByPlayer(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetStuckTimer|natives.resetStuckTimer(Vehicle car, int timer_num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetVisiblePedDamage|natives.resetVisiblePedDamage(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.restartScriptedConversation|natives.restartScriptedConversation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resurrectNetworkPlayer|natives.resurrectNetworkPlayer(Player playerIndex, Vec3 x, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioDown|natives.retuneRadioDown(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioToStationIndex|natives.retuneRadioToStationIndex(uint radioStation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioToStationName|natives.retuneRadioToStationName(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioUp|natives.retuneRadioUp(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reviveInjuredPed|natives.reviveInjuredPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.rotateObject|natives.rotateObject(Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.round|natives.round(float Unk1085) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.saveNewlineToDebugFile|natives.saveNewlineToDebugFile(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.saveSettings|natives.saveSettings(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sayAmbientSpeechWithVoice|natives.sayAmbientSpeechWithVoice(Ped ped, string SpeechName, string VoiceName, bool flag0, bool flag1, int style) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sayAmbientSpeech|natives.sayAmbientSpeech(Ped ped, string phraseName, bool flag0, bool flag1, int style) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.scriptAssert|natives.scriptAssert(string text) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.scriptIsMovingMobilePhoneOffscreen|natives.scriptIsMovingMobilePhoneOffscreen(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.scriptIsUsingMobilePhone|natives.scriptIsUsingMobilePhone(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaConsiderPedsWithFlagFalse|natives.searchCriteriaConsiderPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaConsiderPedsWithFlagTrue|natives.searchCriteriaConsiderPedsWithFlagTrue(uint flagId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaRejectPedsWithFlagFalse|natives.searchCriteriaRejectPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaRejectPedsWithFlagTrue|natives.searchCriteriaRejectPedsWithFlagTrue(uint flagId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck1|natives.securomSpotCheck1(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck2|natives.securomSpotCheck2(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck3|natives.securomSpotCheck3(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck4|natives.securomSpotCheck4(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.selectWeaponsForVehicle|natives.selectWeaponsForVehicle(Vehicle veh, int weapon) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sendClientBroadcastVariablesNow|natives.sendClientBroadcastVariablesNow(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sendNmMessage|natives.sendNmMessage(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setActivateObjectPhysicsAsSoonAsItIsUnfrozen|natives.setActivateObjectPhysicsAsSoonAsItIsUnfrozen(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAdvancedBoolInDecisionMaker|natives.setAdvancedBoolInDecisionMaker(int dm, int Unk844, int Unk845, int Unk846, bool Unk847) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllCarGeneratorsBackToActive|natives.setAllCarGeneratorsBackToActive(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllCarsCanBeDamaged|natives.setAllCarsCanBeDamaged(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllowDummyConversions|natives.setAllowDummyConversions(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllPickupsOfTypeCollectableByCar|natives.setAllPickupsOfTypeCollectableByCar(int pickuptype, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllRandomPedsFlee|natives.setAllRandomPedsFlee(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAlwaysDisplayWeaponPickupMessage|natives.setAlwaysDisplayWeaponPickupMessage(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAmbientPlanesSpeedMultiplier|natives.setAmbientPlanesSpeedMultiplier(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAmbientVoiceName|natives.setAmbientVoiceName(Ped ped, string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAnimGroupForChar|natives.setAnimGroupForChar(Ped ped, string grname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setArmourPickupNetworkRegenTime|natives.setArmourPickupNetworkRegenTime(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBikeRiderWillPutFootDownWhenStopped|natives.setBikeRiderWillPutFootDownWhenStopped(Vehicle bike, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBitsInRange|natives.setBitsInRange([output] int Unk506, int rangebegin, int rangeend, int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBit|natives.setBit([output] int val, int bit) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipAsFriendly|natives.setBlipAsFriendly(int blip, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipAsShortRange|natives.setBlipAsShortRange(int blip, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipCoordinates|natives.setBlipCoordinates(int blip, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipMarkerLongDistance|natives.setBlipMarkerLongDistance(int blip, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipThrottleRandomly|natives.setBlipThrottleRandomly(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlockCameraToggle|natives.setBlockCameraToggle(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlockingOfNonTemporaryEvents|natives.setBlockingOfNonTemporaryEvents(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBriansMood|natives.setBriansMood(int mood) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamActive|natives.setCamActive(int camera, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamAttachOffsetIsRelative|natives.setCamAttachOffsetIsRelative(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamAttachOffset|natives.setCamAttachOffset(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamBehindPed|natives.setCamBehindPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamComponentShake|natives.setCamComponentShake(int cam, int componentid, int Unk564, int time, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamDofFocuspoint|natives.setCamDofFocuspoint(int cam, Vec3 x, float Unk565) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraAutoScriptActivation|natives.setCameraAutoScriptActivation(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraBeginCamCommandsRequired|natives.setCameraBeginCamCommandsRequired(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraControlsDisabledWithPlayerControls|natives.setCameraControlsDisabledWithPlayerControls(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraState|natives.setCameraState(int cam, int state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamFarClip|natives.setCamFarClip(int cam, float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamFarDof|natives.setCamFarDof(int cam, float fardof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamFov|natives.setCamFov(int camera, float fov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInFrontOfPed|natives.setCamInFrontOfPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInheritRollObject|natives.setCamInheritRollObject(int cam, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInheritRollPed|natives.setCamInheritRollPed(int cam, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInheritRollVehicle|natives.setCamInheritRollVehicle(int cam, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpCustomSpeedGraph|natives.setCamInterpCustomSpeedGraph(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpDetailRotStyleAngles|natives.setCamInterpDetailRotStyleAngles(int Unk566) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpDetailRotStyleQuats|natives.setCamInterpDetailRotStyleQuats(int Unk567) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpStyleCore|natives.setCamInterpStyleCore(int cam0, int cam1, int cam2, int time, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpStyleDetailed|natives.setCamInterpStyleDetailed(int cam, bool Unk568, bool Unk569, bool Unk570, bool Unk571) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamMotionBlur|natives.setCamMotionBlur(int cam, float blur) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamName|natives.setCamName(int cam, string camname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamNearClip|natives.setCamNearClip(int cam, float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamNearDof|natives.setCamNearDof(int cam, float dof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPointDampingParams|natives.setCamPointDampingParams(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPointOffsetIsRelative|natives.setCamPointOffsetIsRelative(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPointOffset|natives.setCamPointOffset(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPos|natives.setCamPos(int camera, float pX, float pY, float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPropagate|natives.setCamPropagate(int camera, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamRoll|natives.setCamRoll(int cam, float roll) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamRot|natives.setCamRot(int camera, float angleX, float angleY, float angleZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamShake|natives.setCamShake(int cam, bool Unk572, int shakeval) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineCustomSpeedGraph|natives.setCamSplineCustomSpeedGraph(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineDuration|natives.setCamSplineDuration(int cam, int duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineProgress|natives.setCamSplineProgress(int cam, float progress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineSpeedConstant|natives.setCamSplineSpeedConstant(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineSpeedGraph|natives.setCamSplineSpeedGraph(int cam, int Unk573) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamTargetPed|natives.setCamTargetPed(int camera, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCanBurstCarTyres|natives.setCanBurstCarTyres(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCanResprayCar|natives.setCanResprayCar(Vehicle car, bool can) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCanTargetCharWithoutLos|natives.setCanTargetCharWithoutLos(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAllowedToDrown|natives.setCarAllowedToDrown(Vehicle car, bool allowed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAlwaysCreateSkids|natives.setCarAlwaysCreateSkids(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAnimCurrentTime|natives.setCarAnimCurrentTime(Vehicle car, string animname0, string animname1, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAnimSpeed|natives.setCarAnimSpeed(Vehicle car, string animname0, string animname1, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAsMissionCar|natives.setCarAsMissionCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCanBeDamaged|natives.setCarCanBeDamaged(Vehicle vehicle, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCanBeVisiblyDamaged|natives.setCarCanBeVisiblyDamaged(Vehicle vehicle, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCollision|natives.setCarCollision(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarColourCombination|natives.setCarColourCombination(Vehicle car, int combination) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCoordinatesNoOffset|natives.setCarCoordinatesNoOffset(Vehicle car, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCoordinates|natives.setCarCoordinates(Vehicle vehicle, float pX, float pY, float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarDensityMultiplier|natives.setCarDensityMultiplier(float density) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarDistanceAheadMultiplier|natives.setCarDistanceAheadMultiplier(Vehicle car, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarDoorLatched|natives.setCarDoorLatched(Vehicle car, int door, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarEngineOn|natives.setCarEngineOn(Vehicle car, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarExistsOnAllMachines|natives.setCarExistsOnAllMachines(Vehicle vehicle, bool exists) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarForwardSpeed|natives.setCarForwardSpeed(Vehicle vehicle, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovFadeMult|natives.setCarFovFadeMult(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovMax|natives.setCarFovMax(float maxfov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovMin|natives.setCarFovMin(float minfov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovRate|natives.setCarFovRate(float rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovStartSpeedBoat|natives.setCarFovStartSpeedBoat(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovStartSpeed|natives.setCarFovStartSpeed(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarGeneratorsActiveInArea|natives.setCarGeneratorsActiveInArea(Vec3 x0, Vec3 x1, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarHeading|natives.setCarHeading(Vehicle vehicle, float dir) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarHealth|natives.setCarHealth(Vehicle vehicle, uint Value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarInCutscene|natives.setCarInCutscene(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarLaneShift|natives.setCarLaneShift(Vehicle car, float shift) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarLightMultiplier|natives.setCarLightMultiplier(Vehicle car, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarLivery|natives.setCarLivery(Vehicle car, int livery) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarMotionBlurEffectBoat|natives.setCarMotionBlurEffectBoat(float blur) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarNotDamagedByRelationshipGroup|natives.setCarNotDamagedByRelationshipGroup(Vehicle car, bool set, int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarOnlyDamagedByPlayer|natives.setCarOnlyDamagedByPlayer(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarOnlyDamagedByRelationshipGroup|natives.setCarOnlyDamagedByRelationshipGroup(Vehicle car, bool set, int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarProofs|natives.setCarProofs(Vehicle vehicle, bool bulletProof, bool fireProof, bool explosionProof, bool collisionProof, bool meleeProof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarRandomRouteSeed|natives.setCarRandomRouteSeed(Vehicle car, int seed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarStayInFastLane|natives.setCarStayInFastLane(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarStayInSlowLane|natives.setCarStayInSlowLane(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarStrong|natives.setCarStrong(Vehicle vehicle, bool strong) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarTraction|natives.setCarTraction(Vehicle car, float traction) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarVisible|natives.setCarVisible(Vehicle vehicle, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarWatertight|natives.setCarWatertight(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCellphoneRanked|natives.setCellphoneRanked(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAccuracy|natives.setCharAccuracy(Ped ped, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAllAnimsSpeed|natives.setCharAllAnimsSpeed(Ped ped, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAllowedToDuck|natives.setCharAllowedToDuck(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAllowedToRunOnBoats|natives.setCharAllowedToRunOnBoats(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAmmo|natives.setCharAmmo(Ped ped, uint weapon, uint ammo) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAngledDefensiveArea|natives.setCharAngledDefensiveArea(Ped ped, Vec3 x0, Vec3 x1, float angle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimBlendOutDelta|natives.setCharAnimBlendOutDelta(Ped ped, string AnimName0, string AnimName1, float delta) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimCurrentTime|natives.setCharAnimCurrentTime(Ped ped, string AnimName0, string AnimName1, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimPlayingFlag|natives.setCharAnimPlayingFlag(Ped ped, string AnimName0, string AnimName1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimSpeed|natives.setCharAnimSpeed(Ped ped, string AnimName0, string AnimName1, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAsEnemy|natives.setCharAsEnemy(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAsMissionChar|natives.setCharAsMissionChar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharBleeding|natives.setCharBleeding(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharBulletproofVest|natives.setCharBulletproofVest(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCanBeKnockedOffBike|natives.setCharCanBeKnockedOffBike(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCanBeShotInVehicle|natives.setCharCanBeShotInVehicle(Ped ped, bool enabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCanSmashGlass|natives.setCharCanSmashGlass(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCantBeDraggedOut|natives.setCharCantBeDraggedOut(Ped ped, bool enabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharClimbAnimRate|natives.setCharClimbAnimRate(Ped ped, float rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCollision|natives.setCharCollision(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharComponentVariation|natives.setCharComponentVariation(Ped ped, uint component, uint modelVariation, uint textureVariation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesDontClearPlayerTasks|natives.setCharCoordinatesDontClearPlayerTasks(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesDontWarpGangNoOffset|natives.setCharCoordinatesDontWarpGangNoOffset(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesDontWarpGang|natives.setCharCoordinatesDontWarpGang(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesNoOffset|natives.setCharCoordinatesNoOffset(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinates|natives.setCharCoordinates(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCurrentWeaponVisible|natives.setCharCurrentWeaponVisible(Ped ped, bool visble) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDecisionMakerToDefault|natives.setCharDecisionMakerToDefault(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDecisionMaker|natives.setCharDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDefaultComponentVariation|natives.setCharDefaultComponentVariation(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDefensiveAreaAttachedToPed|natives.setCharDefensiveAreaAttachedToPed(Ped ped, Ped pednext, Vec3 x0, Vec3 x1, int Unk7, int Unk8) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDesiredHeading|natives.setCharDesiredHeading(Ped ped, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDiesInstantlyInWater|natives.setCharDiesInstantlyInWater(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDropsWeaponsWhenDead|natives.setCharDropsWeaponsWhenDead(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDrownsInSinkingVehicle|natives.setCharDrownsInSinkingVehicle(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDrownsInWater|natives.setCharDrownsInWater(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDruggedUp|natives.setCharDruggedUp(Ped ped, bool drugged) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDuckingTimed|natives.setCharDuckingTimed(Ped ped, int timed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharFireDamageMultiplier|natives.setCharFireDamageMultiplier(Ped ped, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharForceDieInCar|natives.setCharForceDieInCar(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharGestureGroup|natives.setCharGestureGroup(Ped ped, string AnimGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharGetOutUpsideDownCar|natives.setCharGetOutUpsideDownCar(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharGravity|natives.setCharGravity(Ped ped, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharHeading|natives.setCharHeading(Ped ped, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharHealth|natives.setCharHealth(Ped ped, uint health) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharInCutscene|natives.setCharInCutscene(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharInvincible|natives.setCharInvincible(Ped ped, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharIsTargetPriority|natives.setCharIsTargetPriority(Ped ped, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharKeepTask|natives.setCharKeepTask(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxHealth|natives.setCharMaxHealth(Ped ped, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxMoveBlendRatio|natives.setCharMaxMoveBlendRatio(Ped ped, float ratio) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxTimeInWater|natives.setCharMaxTimeInWater(Ped ped, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxTimeUnderwater|natives.setCharMaxTimeUnderwater(Ped ped, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeActionFlag0|natives.setCharMeleeActionFlag0(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeActionFlag1|natives.setCharMeleeActionFlag1(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeActionFlag2|natives.setCharMeleeActionFlag2(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeMovementConstaintBox|natives.setCharMeleeMovementConstaintBox(Ped ped, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMoney|natives.setCharMoney(Ped ped, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMoveAnimSpeedMultiplier|natives.setCharMoveAnimSpeedMultiplier(Ped ped, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMovementAnimsBlocked|natives.setCharMovementAnimsBlocked(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNameDebug|natives.setCharNameDebug(Ped ped, string debugName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNeverLeavesGroup|natives.setCharNeverLeavesGroup(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNeverTargetted|natives.setCharNeverTargetted(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNotDamagedByRelationshipGroup|natives.setCharNotDamagedByRelationshipGroup(Ped ped, int relationshipGroup, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharOnlyDamagedByPlayer|natives.setCharOnlyDamagedByPlayer(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharOnlyDamagedByRelationshipGroup|natives.setCharOnlyDamagedByRelationshipGroup(Ped ped, bool set, int relgroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharProofs|natives.setCharProofs(Ped ped, bool unknown0, bool fallingDamage, bool unknown1, bool unknown2, bool unknown3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharPropIndexTexture|natives.setCharPropIndexTexture(Ped ped, uint propType, uint index, uint texture) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharPropIndex|natives.setCharPropIndex(Ped ped, uint propType, uint index) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharProvideCoveringFire|natives.setCharProvideCoveringFire(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRandomComponentVariation|natives.setCharRandomComponentVariation(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharReadyToBeExecuted|natives.setCharReadyToBeExecuted(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharReadyToBeStunned|natives.setCharReadyToBeStunned(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRelationshipGroup|natives.setCharRelationshipGroup(Ped ped, int relationshipGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRelationship|natives.setCharRelationship(Ped ped, uint relationshipLevel, int relationshipGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRotation|natives.setCharRotation(Ped ped, Vec3 xr) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharShootRate|natives.setCharShootRate(Ped ped, int rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharSignalAfterKill|natives.setCharSignalAfterKill(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharSphereDefensiveArea|natives.setCharSphereDefensiveArea(Ped ped, Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharStayInCarWhenJacked|natives.setCharStayInCarWhenJacked(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharSuffersCriticalHits|natives.setCharSuffersCriticalHits(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharUsesDeafultAnimGroupWhenFleeing|natives.setCharUsesDeafultAnimGroupWhenFleeing(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharUsesUpperbodyDamageAnimsOnly|natives.setCharUsesUpperbodyDamageAnimsOnly(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharVelocity|natives.setCharVelocity(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharVisible|natives.setCharVisible(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWalkAlongsideLeaderWhenAppropriate|natives.setCharWalkAlongsideLeaderWhenAppropriate(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWantedByPolice|natives.setCharWantedByPolice(Ped ped, bool wanted) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWatchMelee|natives.setCharWatchMelee(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWeaponSkill|natives.setCharWeaponSkill(Ped ped, int skill) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillCowerInsteadOfFleeing|natives.setCharWillCowerInsteadOfFleeing(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillDoDrivebys|natives.setCharWillDoDrivebys(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillFlyThroughWindscreen|natives.setCharWillFlyThroughWindscreen(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillLeaveCarInCombat|natives.setCharWillLeaveCarInCombat(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillMoveWhenInjured|natives.setCharWillMoveWhenInjured(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillOnlyFireWithClearLos|natives.setCharWillOnlyFireWithClearLos(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillRemainOnBoatAfterMissionEnds|natives.setCharWillRemainOnBoatAfterMissionEnds(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillTryToLeaveBoatAfterLeader|natives.setCharWillTryToLeaveBoatAfterLeader(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillTryToLeaveWater|natives.setCharWillTryToLeaveWater(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillUseCarsInCombat|natives.setCharWillUseCarsInCombat(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillUseCover|natives.setCharWillUseCover(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCinematicButtonEnabled|natives.setCinematicButtonEnabled(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setClearHelpInMissionCleanup|natives.setClearHelpInMissionCleanup(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setClearManifolds|natives.setClearManifolds(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCollectable1Total|natives.setCollectable1Total(int total) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCollideWithPeds|natives.setCollideWithPeds(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCombatDecisionMaker|natives.setCombatDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setConvertibleRoof|natives.setConvertibleRoof(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCreateRandomCops|natives.setCreateRandomCops(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCreditsToRenderBeforeFade|natives.setCreditsToRenderBeforeFade(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCurrentCharWeapon|natives.setCurrentCharWeapon(Ped ped, uint w, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCurrentMovie|natives.setCurrentMovie(string filename) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCutsceneExtraRoomPos|natives.setCutsceneExtraRoomPos(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDanceShakeActiveThisUpdate|natives.setDanceShakeActiveThisUpdate(float shake) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDanceShakeInactiveImmediately|natives.setDanceShakeInactiveImmediately(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDeadCharCoordinates|natives.setDeadCharCoordinates(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDeadPedsDropWeapons|natives.setDeadPedsDropWeapons(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDeathWeaponsPersist|natives.setDeathWeaponsPersist(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDebugTextVisible|natives.setDebugTextVisible(bool Unk1120) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeCanChangeTarget|natives.setDecisionMakerAttributeCanChangeTarget(int dm, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeCaution|natives.setDecisionMakerAttributeCaution(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeFireRate|natives.setDecisionMakerAttributeFireRate(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeLowHealth|natives.setDecisionMakerAttributeLowHealth(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeMovementStyle|natives.setDecisionMakerAttributeMovementStyle(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeNavigationStyle|natives.setDecisionMakerAttributeNavigationStyle(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeRetreatingBehaviour|natives.setDecisionMakerAttributeRetreatingBehaviour(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeSightRange|natives.setDecisionMakerAttributeSightRange(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeStandingStyle|natives.setDecisionMakerAttributeStandingStyle(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeTargetInjuredReaction|natives.setDecisionMakerAttributeTargetInjuredReaction(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeTargetLossResponse|natives.setDecisionMakerAttributeTargetLossResponse(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeTeamwork|natives.setDecisionMakerAttributeTeamwork(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeWeaponAccuracy|natives.setDecisionMakerAttributeWeaponAccuracy(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDefaultGlobalInstancePriority|natives.setDefaultGlobalInstancePriority(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDisablePlayerShoveAnimation|natives.setDisablePlayerShoveAnimation(Ped ped, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDisplayPlayerNameAndIcon|natives.setDisplayPlayerNameAndIcon(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDitchPoliceModels|natives.setDitchPoliceModels(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDoNotSpawnParkedCarsOnTop|natives.setDoNotSpawnParkedCarsOnTop(int pickup, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDontActivateRagdollFromPlayerImpact|natives.setDontActivateRagdollFromPlayerImpact(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDoorState|natives.setDoorState(Object door, bool flag, float Unk95) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDrawPlayerComponent|natives.setDrawPlayerComponent(int component, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDriveTaskCruiseSpeed|natives.setDriveTaskCruiseSpeed(Ped ped, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDrunkCam|natives.setDrunkCam(int cam, float val, int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEnableNearClipScan|natives.setEnableNearClipScan(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEnableRcDetonateOnContact|natives.setEnableRcDetonateOnContact(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEnableRcDetonate|natives.setEnableRcDetonate(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEngineHealth|natives.setEngineHealth(Vehicle vehicle, float health) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEveryoneIgnorePlayer|natives.setEveryoneIgnorePlayer(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setExtraCarColours|natives.setExtraCarColours(Vehicle vehicle, int colour1, int colour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setExtraHospitalRestartPoint|natives.setExtraHospitalRestartPoint(Vec3 x, float Unk489, float Unk490) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setExtraPoliceStationRestartPoint|natives.setExtraPoliceStationRestartPoint(Vec3 x, float Unk491, float Unk492) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFadeInAfterLoad|natives.setFadeInAfterLoad(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFakeWantedCircle|natives.setFakeWantedCircle(Vec2 x, float radius, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFakeWantedLevel|natives.setFakeWantedLevel(int lvl) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFilterMenuOn|natives.setFilterMenuOn(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFilterSaveSetting|natives.setFilterSaveSetting(int filterid, int setting) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFixedCamPos|natives.setFixedCamPos(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFloatStat|natives.setFloatStat(uint stat, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowPedPitchLimitDown|natives.setFollowPedPitchLimitDown(float pitchdownlim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowPedPitchLimitUp|natives.setFollowPedPitchLimitUp(float pitchuplim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehicleCamOffset|natives.setFollowVehicleCamOffset(bool Unk574, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehicleCamSubmode|natives.setFollowVehicleCamSubmode(int mode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehiclePitchLimitDown|natives.setFollowVehiclePitchLimitDown(float pitchdownlim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehiclePitchLimitUp|natives.setFollowVehiclePitchLimitUp(float pitchuplim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setForceLookBehind|natives.setForceLookBehind(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setForcePlayerToEnterThroughDirectDoor|natives.setForcePlayerToEnterThroughDirectDoor(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFovChannelScript|natives.setFovChannelScript(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFreebiesInVehicle|natives.setFreebiesInVehicle(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFreeHealthCare|natives.setFreeHealthCare(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFreeResprays|natives.setFreeResprays(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGameCameraControlsActive|natives.setGameCameraControlsActive(bool active) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGameCamHeading|natives.setGameCamHeading(float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGameCamPitch|natives.setGameCamPitch(float pitch) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGangCar|natives.setGangCar(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGarageLeaveCameraAlone|natives.setGarageLeaveCameraAlone(string garageName, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGfwlHasSafeHouse|natives.setGfwlHasSafeHouse(uint ukn) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGlobalInstancePriority|natives.setGlobalInstancePriority(int priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGlobalRenderFlags|natives.setGlobalRenderFlags(bool Unk507, bool Unk508, bool Unk509, bool Unk510) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGpsRemainsWhenTargetReachedFlag|natives.setGpsRemainsWhenTargetReachedFlag(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGpsTestIn3dFlag|natives.setGpsTestIn3dFlag(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGpsVoiceForVehicle|natives.setGpsVoiceForVehicle(Vehicle veh, int VoiceId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGravityOff|natives.setGravityOff(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupCharDecisionMaker|natives.setGroupCharDecisionMaker(int group, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupCharDucksWhenAimedAt|natives.setGroupCharDucksWhenAimedAt(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupCombatDecisionMaker|natives.setGroupCombatDecisionMaker(int group, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupFollowStatus|natives.setGroupFollowStatus(int group, uint status) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupFormationSpacing|natives.setGroupFormationSpacing(int group, float space) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupFormation|natives.setGroupFormation(int group, uint formation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupLeader|natives.setGroupLeader(int group, Ped leader) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupMember|natives.setGroupMember(int group, Ped member) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupSeparationRange|natives.setGroupSeparationRange(int group, float seperation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGunshotSenseRangeForRiot2|natives.setGunshotSenseRangeForRiot2(float range) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHasBeenOwnedByPlayer|natives.setHasBeenOwnedByPlayer(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHasBeenOwnedForCarGenerator|natives.setHasBeenOwnedForCarGenerator(int CarGen, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeadingLimitForAttachedPed|natives.setHeadingLimitForAttachedPed(Ped ped, float heading0, float heading1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeadingOfClosestObjectOfType|natives.setHeadingOfClosestObjectOfType(Vec3 x, float radius, uint type_or_model, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHealthPickupNetworkRegenTime|natives.setHealthPickupNetworkRegenTime(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeliBladesFullSpeed|natives.setHeliBladesFullSpeed(Vehicle heli) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeliForceEngineOn|natives.setHeliForceEngineOn(Vehicle heli, bool set) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeliStabiliser|natives.setHeliStabiliser(Vehicle heli, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHelpMessageBoxSizeF|natives.setHelpMessageBoxSizeF(float size) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHelpMessageBoxSize|natives.setHelpMessageBoxSize(float Unk773) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHideWeaponIcon|natives.setHideWeaponIcon(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintAdvancedParams|natives.setHintAdvancedParams(float Unk575, float Unk576, float Unk577, float Unk578, bool Unk579) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintFov|natives.setHintFov(float fov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintMoveInDistDefault|natives.setHintMoveInDistDefault(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintMoveInDist|natives.setHintMoveInDist(float dist) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintTimesDefault|natives.setHintTimesDefault(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintTimes|natives.setHintTimes(float Unk580, float Unk581, float Unk582) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHostMatchOn|natives.setHostMatchOn(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHotWeaponSwap|natives.setHotWeaponSwap(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIgnoreLowPriorityShockingEvents|natives.setIgnoreLowPriorityShockingEvents(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIgnoreNoGpsFlag|natives.setIgnoreNoGpsFlag(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIkDisabledForNetworkPlayer|natives.setIkDisabledForNetworkPlayer(Player playerIndex, bool Unk965) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInformRespectedFriends|natives.setInformRespectedFriends(Ped ped, int Unk43, int Unk44) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInMpTutorial|natives.setInMpTutorial(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInSpectatorMode|natives.setInSpectatorMode(bool spectate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInstantWidescreenBorders|natives.setInstantWidescreenBorders(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInterpFromGameToScript|natives.setInterpFromGameToScript(bool Unk604, int Unk605) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInterpFromScriptToGame|natives.setInterpFromScriptToGame(bool Unk606, int Unk607) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInterpInOutVehicleEnabledThisFrame|natives.setInterpInOutVehicleEnabledThisFrame(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIntStat|natives.setIntStat(uint stat, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setKillstreak|natives.setKillstreak(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoadCollisionForCarFlag|natives.setLoadCollisionForCarFlag(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoadCollisionForCharFlag|natives.setLoadCollisionForCharFlag(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoadCollisionForObjectFlag|natives.setLoadCollisionForObjectFlag(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLobbyMuteOverride|natives.setLobbyMuteOverride(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLocalPlayerPainVoice|natives.setLocalPlayerPainVoice(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLocalPlayerVoice|natives.setLocalPlayerVoice(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoudVehicleRadio|natives.setLoudVehicleRadio(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMask|natives.setMask(float Unk774, float Unk775, float Unk776, float Unk777) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMaxFireGenerations|natives.setMaxFireGenerations(int max) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMaxWantedLevel|natives.setMaxWantedLevel(uint lvl) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuColumnOrientation|natives.setMenuColumnOrientation(int menuid, int column, int orientation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuColumnWidth|natives.setMenuColumnWidth(int menuid, int column, float width) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuItemWith2Numbers|natives.setMenuItemWith2Numbers(int menuid, int item, int Unk880, string gxtkey, int number0, int number1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuItemWithNumber|natives.setMenuItemWithNumber(int menuid, int item, int Unk881, string gxtkey, int number) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMessageFormatting|natives.setMessageFormatting(bool Unk700, int Unk701, int Unk702) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMessagesWaiting|natives.setMessagesWaiting(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMinigameInProgress|natives.setMinigameInProgress(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMinMaxPedAccuracy|natives.setMinMaxPedAccuracy(Ped ped, float min, float max) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionFlag|natives.setMissionFlag(bool isMission) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionPassedCash|natives.setMissionPassedCash(bool add, int cash, int Unk511) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionPickupSound|natives.setMissionPickupSound(uint model, string SoundName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionRespectTotal|natives.setMissionRespectTotal(float respect) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionTrainCoordinates|natives.setMissionTrainCoordinates(Vehicle train, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhonePosition|natives.setMobilePhonePosition(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhoneRadioState|natives.setMobilePhoneRadioState(bool state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhoneRotation|natives.setMobilePhoneRotation(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhoneScale|natives.setMobilePhoneScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobileRadioEnabledDuringGameplay|natives.setMobileRadioEnabledDuringGameplay(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobileRingType|natives.setMobileRingType(int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMoneyCarriedByAllNewPeds|natives.setMoneyCarriedByAllNewPeds(int money) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMoneyCarriedByPedWithModel|natives.setMoneyCarriedByPedWithModel(uint model, int m0, int m1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMovieTime|natives.setMovieTime(float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMovieVolume|natives.setMovieVolume(float volume) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMsgForLoadingScreen|natives.setMsgForLoadingScreen(string label) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMultiplayerHudCash|natives.setMultiplayerHudCash(uint cash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMultiplayerHudTime|natives.setMultiplayerHudTime(string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNeedsToBeHotwired|natives.setNeedsToBeHotwired(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkIdCanMigrate|natives.setNetworkIdCanMigrate(int netid, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkIdExistsOnAllMachines|natives.setNetworkIdExistsOnAllMachines(int netID, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkIdStopCloning|natives.setNetworkIdStopCloning(int id, bool Unk966) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkJoinFail|natives.setNetworkJoinFail(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkPedUsingParachute|natives.setNetworkPedUsingParachute(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkPlayerAsVip|natives.setNetworkPlayerAsVip(Player playerIndex, bool Unk967) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkVehicleRespotTimer|natives.setNetworkVehicleRespotTimer(int id, int timer) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNextDesiredMoveState|natives.setNextDesiredMoveState(int state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmAnimPose|natives.setNmAnimPose(Ped ped, string AnimName0, string AnimName1, float pose) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageBool|natives.setNmMessageBool(int id, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageFloat|natives.setNmMessageFloat(int id, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageInstanceIndex|natives.setNmMessageInstanceIndex(int id, Ped ped, Vehicle car, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageInt|natives.setNmMessageInt(int id, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageString|natives.setNmMessageString(int id, string string) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageVec3|natives.setNmMessageVec3(int id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNoResprays|natives.setNoResprays(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAlpha|natives.setObjectAlpha(Object obj, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAnimCurrentTime|natives.setObjectAnimCurrentTime(Object obj, string animname0, string animname1, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAnimPlayingFlag|natives.setObjectAnimPlayingFlag(Object obj, string animname0, string animname1, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAnimSpeed|natives.setObjectAnimSpeed(Object obj, string animname0, string animname1, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAsStealable|natives.setObjectAsStealable(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectCcd|natives.setObjectCcd(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectCollision|natives.setObjectCollision(Object obj, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectCoordinates|natives.setObjectCoordinates(Object obj, float pX, float pY, float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectDrawLast|natives.setObjectDrawLast(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectDynamic|natives.setObjectDynamic(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectExistsOnAllMachines|natives.setObjectExistsOnAllMachines(Object obj, bool exists) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectHeading|natives.setObjectHeading(Object obj, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectHealth|natives.setObjectHealth(Object obj, float health) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectInitialRotationVelocity|natives.setObjectInitialRotationVelocity(Object obj, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectInitialVelocity|natives.setObjectInitialVelocity(Object obj, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectInvincible|natives.setObjectInvincible(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectLights|natives.setObjectLights(Object obj, bool lights) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectOnlyDamagedByPlayer|natives.setObjectOnlyDamagedByPlayer(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectPhysicsParams|natives.setObjectPhysicsParams(Object obj, float Unk96, float Unk97, Vec3 v0x, Vec3 v1x, uint flag0, uint flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectProofs|natives.setObjectProofs(Object obj, bool unknown0, bool fallingDamage, bool unknown1, bool unknown2, bool unknown3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectQuaternion|natives.setObjectQuaternion(Object obj, Vec3 qx, float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectRecordsCollisions|natives.setObjectRecordsCollisions(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectRenderScorched|natives.setObjectRenderScorched(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectRotation|natives.setObjectRotation(Object obj, float Pitch, float Roll, float Yaw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectScale|natives.setObjectScale(Object obj, float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectUsedInPoolGame|natives.setObjectUsedInPoolGame(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectVisible|natives.setObjectVisible(Object obj, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setOnlineLan|natives.setOnlineLan(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setOnscreenCounterFlashWhenFirstDisplayed|natives.setOnscreenCounterFlashWhenFirstDisplayed(int counterid, bool flash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setOverrideNoSprintingOnPhoneInMultiplayer|natives.setOverrideNoSprintingOnPhoneInMultiplayer(bool Unk969) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setParkedCarDensityMultiplier|natives.setParkedCarDensityMultiplier(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedAllowMissionOnlyDrivebyUse|natives.setPedAllowMissionOnlyDrivebyUse(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedAlpha|natives.setPedAlpha(Ped ped, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedComponentsToNetworkPlayersettingsModel|natives.setPedComponentsToNetworkPlayersettingsModel(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDensityMultiplier|natives.setPedDensityMultiplier(float density) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDiesWhenInjured|natives.setPedDiesWhenInjured(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDontDoEvasiveDives|natives.setPedDontDoEvasiveDives(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDontUseVehicleSpecificAnims|natives.setPedDontUseVehicleSpecificAnims(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedEnableLegIk|natives.setPedEnableLegIk(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedExistsOnAllMachines|natives.setPedExistsOnAllMachines(Ped ped, bool exists) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedFallOffBikesWhenShot|natives.setPedFallOffBikesWhenShot(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedFireFxLodScaler|natives.setPedFireFxLodScaler(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedForceFlyThroughWindscreen|natives.setPedForceFlyThroughWindscreen(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedForceVisualiseHeadDamageFromBullets|natives.setPedForceVisualiseHeadDamageFromBullets(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedGeneratesDeadBodyEvents|natives.setPedGeneratesDeadBodyEvents(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedHeedsTheEveryoneIgnorePlayerFlag|natives.setPedHeedsTheEveryoneIgnorePlayerFlag(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedHeliPilotRespectsMinimummHeight|natives.setPedHeliPilotRespectsMinimummHeight(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedHelmetTextureIndex|natives.setPedHelmetTextureIndex(Ped ped, int index) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedInstantBlendsWeaponAnims|natives.setPedInstantBlendsWeaponAnims(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedIsBlindRaging|natives.setPedIsBlindRaging(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedIsDrunk|natives.setPedIsDrunk(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedMobileRingType|natives.setPedMobileRingType(Ped ped, int RingtoneId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedMotionBlur|natives.setPedMotionBlur(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedNonCreationArea|natives.setPedNonCreationArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedNonRemovalArea|natives.setPedNonRemovalArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathMayDropFromHeight|natives.setPedPathMayDropFromHeight(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathMayUseClimbovers|natives.setPedPathMayUseClimbovers(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathMayUseLadders|natives.setPedPathMayUseLadders(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathWillAvoidDynamicObjects|natives.setPedPathWillAvoidDynamicObjects(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedSkipsComplexCoverCollisionChecks|natives.setPedSkipsComplexCoverCollisionChecks(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedSteersAroundObjects|natives.setPedSteersAroundObjects(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedSteersAroundPeds|natives.setPedSteersAroundPeds(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedWindyClothingScale|natives.setPedWindyClothingScale(Ped ped, float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedWithBrainCanBeConvertedToDummyPed|natives.setPedWithBrainCanBeConvertedToDummyPed(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedWontAttackPlayerWithoutWantedLevel|natives.setPedWontAttackPlayerWithoutWantedLevel(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPetrolTankHealth|natives.setPetrolTankHealth(Vehicle vehicle, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPetrolTankWeakpoint|natives.setPetrolTankWeakpoint(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPhoneHudItem|natives.setPhoneHudItem(int id, string gxttext, int Unk800) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPhysCcdHandlesRotation|natives.setPhysCcdHandlesRotation(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPickupCollectableByCar|natives.setPickupCollectableByCar(Object pickup, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPickupsFixCars|natives.setPickupsFixCars(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlaneThrottle|natives.setPlaneThrottle(Vehicle plane, float throttle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlaneUndercarriageUp|natives.setPlaneUndercarriageUp(Vehicle plain, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlaybackSpeed|natives.setPlaybackSpeed(Vehicle car, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerAsCop|natives.setPlayerAsCop(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerAsDamagedPlayer|natives.setPlayerAsDamagedPlayer(Player playerIndex, int Unk1057, bool Unk1058) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanBeHassledByGangs|natives.setPlayerCanBeHassledByGangs(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanDoDriveBy|natives.setPlayerCanDoDriveBy(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanDropWeaponsInCar|natives.setPlayerCanDropWeaponsInCar(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanUseCover|natives.setPlayerCanUseCover(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlAdvanced|natives.setPlayerControlAdvanced(Player playerIndex, bool unknown1, bool unknown2, bool unknown3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlForAmbientScript|natives.setPlayerControlForAmbientScript(Player playerIndex, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlForNetwork|natives.setPlayerControlForNetwork(Player playerIndex, bool unknownTrue, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlForTextChat|natives.setPlayerControlForTextChat(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlOnInMissionCleanup|natives.setPlayerControlOnInMissionCleanup(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControl|natives.setPlayerControl(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerDisableCrouch|natives.setPlayerDisableCrouch(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerDisableJump|natives.setPlayerDisableJump(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerFastReload|natives.setPlayerFastReload(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerForcedAim|natives.setPlayerForcedAim(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerGroupRecruitment|natives.setPlayerGroupRecruitment(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerGroupToFollowAlways|natives.setPlayerGroupToFollowAlways(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerGroupToFollowNever|natives.setPlayerGroupToFollowNever(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerIconColour|natives.setPlayerIconColour(int colour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerInvincible|natives.setPlayerInvincible(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerInvisibleToAi|natives.setPlayerInvisibleToAi(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerIsInStadium|natives.setPlayerIsInStadium(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerKeepsWeaponsWhenRespawned|natives.setPlayerKeepsWeaponsWhenRespawned(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMayOnlyEnterThisVehicle|natives.setPlayerMayOnlyEnterThisVehicle(Player playerIndex, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMoodNormal|natives.setPlayerMoodNormal(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMoodPissedOff|natives.setPlayerMoodPissedOff(Player playerIndex, uint unknown150) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMpModifier|natives.setPlayerMpModifier(Player playerIndex, int Unk12, float modifier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerNeverGetsTired|natives.setPlayerNeverGetsTired(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerPainRootBankName|natives.setPlayerPainRootBankName(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerPlayerTargetting|natives.setPlayerPlayerTargetting(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayersDropMoneyInNetworkGame|natives.setPlayersDropMoneyInNetworkGame(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerSettingsGenre|natives.setPlayerSettingsGenre(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayersettingsModelVariationsChoice|natives.setPlayersettingsModelVariationsChoice(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerTeam|natives.setPlayerTeam(Player playerIndex, int team) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPoliceFocusWillTrackCar|natives.setPoliceFocusWillTrackCar(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPoliceIgnorePlayer|natives.setPoliceIgnorePlayer(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPoliceRadarBlips|natives.setPoliceRadarBlips(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPtfxCamInsideVehicle|natives.setPtfxCamInsideVehicle(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRadarAsInteriorThisFrame|natives.setRadarAsInteriorThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRadarScale|natives.setRadarScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRadarZoom|natives.setRadarZoom(float zoom) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRailtrackResistanceMult|natives.setRailtrackResistanceMult(float resistance) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRandomCarDensityMultiplier|natives.setRandomCarDensityMultiplier(float density) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRandomSeed|natives.setRandomSeed(int seed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRecordingToPointNearestToCoors|natives.setRecordingToPointNearestToCoors(Vehicle cat, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setReducePedModelBudget|natives.setReducePedModelBudget(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setReduceVehicleModelBudget|natives.setReduceVehicleModelBudget(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRelationship|natives.setRelationship(uint relationshipLevel, int relationshipGroup1, int relationshipGroup2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRenderTrainAsDerailed|natives.setRenderTrainAsDerailed(Vehicle train, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setReturnToFilterMenu|natives.setReturnToFilterMenu(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplatefilter|natives.setRichPresenceTemplatefilter(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplatemp3|natives.setRichPresenceTemplatemp3(int Unk982, int Unk983) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplateparty|natives.setRichPresenceTemplateparty(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplatesp2|natives.setRichPresenceTemplatesp2(int Unk995) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRocketLauncherFreebieInHeli|natives.setRocketLauncherFreebieInHeli(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRomansMood|natives.setRomansMood(int moood) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCarByKey|natives.setRoomForCarByKey(Vehicle car, uint roomkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCarByName|natives.setRoomForCarByName(Vehicle car, string roomname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCharByKey|natives.setRoomForCharByKey(Ped ped, uint key) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCharByName|natives.setRoomForCharByName(Ped ped, string roomname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForViewportByKey|natives.setRoomForViewportByKey(int viewportid, uint roomkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForViewportByName|natives.setRoomForViewportByName(int viewportid, string roomname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRotationForAttachedPed|natives.setRotationForAttachedPed(Ped ped, Vec3 xr) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRotOrder|natives.setRotOrder(int order) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoute|natives.setRoute(int blip, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScenarioPedDensityMultiplier|natives.setScenarioPedDensityMultiplier(float density, float densitynext) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScreenFade|natives.setScreenFade(int viewportid, int Unk778, int Unk779, bool Unk780, int r, int g, int b, int a, int Unk781, float Unk782, float Unk783) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptedAnimSeatOffset|natives.setScriptedAnimSeatOffset(Ped ped, float offset) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptedConversionCentre|natives.setScriptedConversionCentre(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptLimitToGangSize|natives.setScriptLimitToGangSize(int size) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptMicLookAt|natives.setScriptMicLookAt(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptMicPosition|natives.setScriptMicPosition(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSelectedMenuItem|natives.setSelectedMenuItem(int menuid, int item) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSenseRange|natives.setSenseRange(Ped ped, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSequenceToRepeat|natives.setSequenceToRepeat(int seq, int repeat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setServerId|natives.setServerId(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSirenWithNoDriver|natives.setSirenWithNoDriver(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSleepModeActive|natives.setSleepModeActive(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSniperZoomFactor|natives.setSniperZoomFactor(float factor) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSpecificPassengerIndexToUseInGroups|natives.setSpecificPassengerIndexToUseInGroups(Ped ped, int index) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSpritesDrawBeforeFade|natives.setSpritesDrawBeforeFade(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStartFromFilterMenu|natives.setStartFromFilterMenu(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStateOfClosestDoorOfType|natives.setStateOfClosestDoorOfType(uint model, Vec3 x, int state, float Unk601) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendAlwaysVisible|natives.setStatFrontendAlwaysVisible(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendDisplayType|natives.setStatFrontendDisplayType(int stat, int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendNeverVisible|natives.setStatFrontendNeverVisible(int stat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendVisibility|natives.setStatFrontendVisibility(int stat, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendVisibleAfterIncremented|natives.setStatFrontendVisibleAfterIncremented(int stat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStreamingRequestListTime|natives.setStreamingRequestListTime(int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStreamParams|natives.setStreamParams(float rolloff, int UnkTime) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSuppressHeadlightSwitch|natives.setSuppressHeadlightSwitch(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSwimSpeed|natives.setSwimSpeed(Ped ped, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSyncWeatherAndGameTime|natives.setSyncWeatherAndGameTime(bool sync) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTargetCarForMissionGarage|natives.setTargetCarForMissionGarage(int garage, Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTaxiGarageRadioState|natives.setTaxiGarageRadioState(bool radiostate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTaxiLights|natives.setTaxiLights(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTelescopeCamAngleLimits|natives.setTelescopeCamAngleLimits(float Unk583, float Unk584, float Unk585, float Unk586, float Unk587, float Unk588) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextBackground|natives.setTextBackground(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextCentreWrapx|natives.setTextCentreWrapx(float wrapx) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextCentre|natives.setTextCentre(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextColour|natives.setTextColour(uint r, uint g, uint b, uint a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextDrawBeforeFade|natives.setTextDrawBeforeFade(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextDropshadow|natives.setTextDropshadow(bool displayShadow, uint r, uint g, uint b, uint a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextEdge|natives.setTextEdge(bool displayEdge, uint r, uint g, uint b, uint a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextFont|natives.setTextFont(uint font) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextInputActive|natives.setTextInputActive(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextJustify|natives.setTextJustify(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextLineDisplay|natives.setTextLineDisplay(uint unk1, uint unk2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextLineHeightMult|natives.setTextLineHeightMult(float lineHeight) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextProportional|natives.setTextProportional(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextRenderId|natives.setTextRenderId(uint renderId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextRightJustify|natives.setTextRightJustify(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextScale|natives.setTextScale(float w, float h) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextToUseTextFileColours|natives.setTextToUseTextFileColours(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextUseUnderscore|natives.setTextUseUnderscore(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextViewportId|natives.setTextViewportId(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextWrap|natives.setTextWrap(float unk1, float unk2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setThisMachineRunningServerScript|natives.setThisMachineRunningServerScript(bool host) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setThisScriptCanRemoveBlipsCreatedByAnyScript|natives.setThisScriptCanRemoveBlipsCreatedByAnyScript(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeCycleFarClipDisabled|natives.setTimeCycleFarClipDisabled(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimecycleModifier|natives.setTimecycleModifier(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOfDay|natives.setTimeOfDay(uint hour, uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOfNextAppointment|natives.setTimeOfNextAppointment(int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOneDayBack|natives.setTimeOneDayBack(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOneDayForward|natives.setTimeOneDayForward(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.settimera|natives.settimera(uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimerBeepCountdownTime|natives.setTimerBeepCountdownTime(int timerid, int beeptime) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.settimerb|natives.settimerb(uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.settimerc|natives.settimerc(int Unk1088) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeScale|natives.setTimeScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTotalNumberOfMissions|natives.setTotalNumberOfMissions(float floatstatval) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainAudioRolloff|natives.setTrainAudioRolloff(Vehicle train, float rolloff) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainCruiseSpeed|natives.setTrainCruiseSpeed(Vehicle train, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainForcedToSlowDown|natives.setTrainForcedToSlowDown(Vehicle train, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainIsStoppedAtStation|natives.setTrainIsStoppedAtStation(Vehicle train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainSpeed|natives.setTrainSpeed(Vehicle train, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainStopsForStations|natives.setTrainStopsForStations(Vehicle train, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUpsidedownCarNotDamaged|natives.setUpsidedownCarNotDamaged(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUseHighdof|natives.setUseHighdof(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUseLegIk|natives.setUseLegIk(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUsePoolGamePhysicsSettings|natives.setUsePoolGamePhysicsSettings(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUsesCollisionOfClosestObjectOfType|natives.setUsesCollisionOfClosestObjectOfType(Vec3 x, float radius, uint type_or_model, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVariableOnSound|natives.setVariableOnSound(uint sound, string varname, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehAlarmDuration|natives.setVehAlarmDuration(Vehicle veh, int duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehAlarm|natives.setVehAlarm(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehHasStrongAxles|natives.setVehHasStrongAxles(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehHazardlights|natives.setVehHazardlights(Vehicle vehicle, bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleAlpha|natives.setVehicleAlpha(Vehicle veh, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleAlwaysRender|natives.setVehicleAlwaysRender(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleCanBeTargetted|natives.setVehicleCanBeTargetted(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleDeformationMult|natives.setVehicleDeformationMult(Vehicle veh, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleDirtLevel|natives.setVehicleDirtLevel(Vehicle vehicle, float intensity) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleExplodesOnHighExplosionDamage|natives.setVehicleExplodesOnHighExplosionDamage(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleIsConsideredByPlayer|natives.setVehicleIsConsideredByPlayer(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleQuaternion|natives.setVehicleQuaternion(Vehicle veh, Vec3 qx, float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleRenderScorched|natives.setVehicleRenderScorched(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleSteerBias|natives.setVehicleSteerBias(Vehicle veh, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehIndicatorlights|natives.setVehIndicatorlights(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehInteriorlight|natives.setVehInteriorlight(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportDestination|natives.setViewportDestination(int viewportid, Vec3 x, float Unk593, int Unk594, int Unk595) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportMirrored|natives.setViewportMirrored(int viewportid, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportPriority|natives.setViewportPriority(int viewportid, int priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportShape|natives.setViewportShape(int cam, int shape) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewport|natives.setViewport(int viewportid, float Unk589, float Unk590, float Unk591, float Unk592) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVisibilityOfClosestObjectOfType|natives.setVisibilityOfClosestObjectOfType(Vec3 x, float radius, uint type_or_model, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVisibilityOfNearbyEntityWithSpecialAttribute|natives.setVisibilityOfNearbyEntityWithSpecialAttribute(int attribute, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVoiceIdFromHeadComponent|natives.setVoiceIdFromHeadComponent(Ped ped, int VoiceId, bool IsMale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWantedMultiplier|natives.setWantedMultiplier(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWeaponPickupNetworkRegenTime|natives.setWeaponPickupNetworkRegenTime(int weaponType, uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWebPageLinkActive|natives.setWebPageLinkActive(int htmlviewport, int linkid, bool active) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWebPageScroll|natives.setWebPageScroll(int htmlviewport, float scroll) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWidescreenBorders|natives.setWidescreenBorders(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWidescreenFormat|natives.setWidescreenFormat(int wideformatid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setZoneNoCops|natives.setZoneNoCops(string name, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setZonePopulationType|natives.setZonePopulationType(string zone, int poptype) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setZoneScumminess|natives.setZoneScumminess(string zone, int scumminess) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shakePadInCutscene|natives.shakePadInCutscene(int Unk841, int Unk842, int Unk843) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shakePad|natives.shakePad(int Unk838, int Unk839, int Unk840) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shakePlayerpadWhenControllerDisabled|natives.shakePlayerpadWhenControllerDisabled(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shiftLeft|natives.shiftLeft(int val, uint shifts) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shiftRight|natives.shiftRight(int val, uint shifts) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.showBlipOnAltimeter|natives.showBlipOnAltimeter(int blip, bool show) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.showSigninUi|natives.showSigninUi(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.showUpdateStats|natives.showUpdateStats(bool show) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shutCarDoor|natives.shutCarDoor(Vehicle vehicle, uint door) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shutdownAndLaunchNetworkGame|natives.shutdownAndLaunchNetworkGame(uint episode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shutdownAndLaunchSinglePlayerGame|natives.shutdownAndLaunchSinglePlayerGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.simulateUpdateLoadScene|natives.simulateUpdateLoadScene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sin|natives.sin(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipInPlaybackRecordedCar|natives.skipInPlaybackRecordedCar(Vehicle car, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipRadioForward|natives.skipRadioForward(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipTimeInPlaybackRecordedCar|natives.skipTimeInPlaybackRecordedCar(int CarRec, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipToEndAndStopPlaybackRecordedCar|natives.skipToEndAndStopPlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipToNextAllowedStation|natives.skipToNextAllowedStation(Vehicle train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipToNextScriptedConversationLine|natives.skipToNextScriptedConversationLine(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.slideObject|natives.slideObject(Object obj, Vec3 x, Vec3 xs, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.smashCarWindow|natives.smashCarWindow(Vehicle car, int windownum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.smashGlassOnObject|natives.smashGlassOnObject(Vec3 x, float Unk75, uint model, float Unk76) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.snapshotCam|natives.snapshotCam(int cam, int Unk596) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.soundCarHorn|natives.soundCarHorn(Vehicle vehicle, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneArea|natives.specifyScriptPopulationZoneArea(int Unk848, int Unk849, int Unk850, int Unk851, int Unk852, int Unk853) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneGroups|natives.specifyScriptPopulationZoneGroups(int Unk854, int Unk855, int Unk856, int Unk857, int Unk858) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumCars|natives.specifyScriptPopulationZoneNumCars(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumParkedCars|natives.specifyScriptPopulationZoneNumParkedCars(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumPeds|natives.specifyScriptPopulationZoneNumPeds(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumScenarioPeds|natives.specifyScriptPopulationZoneNumScenarioPeds(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZonePercentageCops|natives.specifyScriptPopulationZonePercentageCops(int percentage) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck5|natives.spotCheck5(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck6|natives.spotCheck6(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck7|natives.spotCheck7(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck8|natives.spotCheck8(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sqrt|natives.sqrt(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCarFire|natives.startCarFire(Vehicle vehicle) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCharFire|natives.startCharFire(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCredits|natives.startCredits(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCustomMobilePhoneRinging|natives.startCustomMobilePhoneRinging(int RingtoneId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCutsceneNow|natives.startCutsceneNow(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCutscene|natives.startCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startEndCreditsMusic|natives.startEndCreditsMusic(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startFiringAmnesty|natives.startFiringAmnesty(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startGpsRaceTrack|natives.startGpsRaceTrack(int trackid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startKillFrenzy|natives.startKillFrenzy(string gxtname, int Unk512, int Unk513, int Unk514, int Unk515, int Unk516, int Unk517, int Unk518, bool Unk519) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startLoadScene|natives.startLoadScene(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startMobilePhoneCalling|natives.startMobilePhoneCalling(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startMobilePhoneCall|natives.startMobilePhoneCall(Ped callfrom, string callfromvoice, Ped callto, string calltovoice, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startMobilePhoneRinging|natives.startMobilePhoneRinging(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startNewScript|natives.startNewScript(string scriptName, uint stacksize) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startNewWidgetCombo|natives.startNewWidgetCombo(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPedMobileRinging|natives.startPedMobileRinging(Ped ped, int Unk801) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCarLooped|natives.startPlaybackRecordedCarLooped(Vehicle car, int Unk69) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCarUsingAi|natives.startPlaybackRecordedCarUsingAi(Vehicle car, int CarRec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCarWithOffset|natives.startPlaybackRecordedCarWithOffset(Vehicle car, int CarRec, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCar|natives.startPlaybackRecordedCar(Vehicle car, int CarRec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnObjBone|natives.startPtfxOnObjBone(string name, Object obj, Vec3 x, float yaw, float pitch, float roll, int objbone, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnObj|natives.startPtfxOnObj(string name, Object obj, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnPedBone|natives.startPtfxOnPedBone(string name, Ped ped, Vec3 x, float yaw, float pitch, float roll, int pedbone, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnPed|natives.startPtfxOnPed(string name, Ped ped, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnVeh|natives.startPtfxOnVeh(string name, Vehicle veh, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfx|natives.startPtfx(string name, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startScriptConversation|natives.startScriptConversation(bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startScriptFire|natives.startScriptFire(Vec3 x, uint numGenerationsAllowed, uint strength) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startStreamingRequestList|natives.startStreamingRequestList(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopCarBreaking|natives.stopCarBreaking(Vehicle car, bool stop) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopCredits|natives.stopCredits(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopCutscene|natives.stopCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopEndCreditsMusic|natives.stopEndCreditsMusic(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopMobilePhoneRinging|natives.stopMobilePhoneRinging(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopMovie|natives.stopMovie(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedDoingFallOffTestsWhenShot|natives.stopPedDoingFallOffTestsWhenShot(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedMobileRinging|natives.stopPedMobileRinging(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedSpeaking|natives.stopPedSpeaking(Ped ped, bool stopspeaking) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedWeaponFiringWhenDropped|natives.stopPedWeaponFiringWhenDropped(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPlaybackRecordedCar|natives.stopPlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPreviewRingtone|natives.stopPreviewRingtone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPtfx|natives.stopPtfx(uint ptfx) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopSound|natives.stopSound(uint sound) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopStream|natives.stopStream(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopSyncingScriptAnimations|natives.stopSyncingScriptAnimations(bool Unk1061) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopVehicleAlwaysRender|natives.stopVehicleAlwaysRender(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.storeCarCharIsInNoSave|natives.storeCarCharIsInNoSave(Ped ped, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.storeScore|natives.storeScore(Player playerIndex, [output] uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.storeWantedLevel|natives.storeWantedLevel(Player playerIndex, [output] uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.streamCutscene|natives.streamCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stringDifference|natives.stringDifference(string str0, string str1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stringString|natives.stringString(string str0, string str1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stringToInt|natives.stringToInt(string str, [output] int intval) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.suppressCarModel|natives.suppressCarModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.suppressFadeInAfterDeathArrest|natives.suppressFadeInAfterDeathArrest(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.suppressPedModel|natives.suppressPedModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.swapNearestBuildingModel|natives.swapNearestBuildingModel(Vec3 x, float radius, uint modelfrom, uint modelto) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchAmbientPlanes|natives.switchAmbientPlanes(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchArrowAboveBlippedPickups|natives.switchArrowAboveBlippedPickups(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchCarGenerator|natives.switchCarGenerator(int handle, int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchCarSiren|natives.switchCarSiren(Vehicle car, bool siren) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchGarbageTrucks|natives.switchGarbageTrucks(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchMadDrivers|natives.switchMadDrivers(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchObjectBrains|natives.switchObjectBrains(int brain, bool switchstate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchOffWaypoint|natives.switchOffWaypoint(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedPathsOff|natives.switchPedPathsOff(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedPathsOn|natives.switchPedPathsOn(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedRoadsBackToOriginal|natives.switchPedRoadsBackToOriginal(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedToAnimated|natives.switchPedToAnimated(Ped ped, bool instantly) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedToRagdollWithFall|natives.switchPedToRagdollWithFall(Ped ped, int Unk15, int Unk16, int Unk17, float Unk18, float Unk19, int Unk20, float Unk21, float Unk22, float Unk23, float Unk24, float Unk25, float Unk26, float Unk27) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedToRagdoll|natives.switchPedToRagdoll(Ped ped, int Unk14, int time, bool flag0, bool flag1, bool flag2, bool flag3) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPoliceHelis|natives.switchPoliceHelis(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRandomBoats|natives.switchRandomBoats(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRandomTrains|natives.switchRandomTrains(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRoadsBackToOriginal|natives.switchRoadsBackToOriginal(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRoadsOff|natives.switchRoadsOff(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRoadsOn|natives.switchRoadsOn(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchStreaming|natives.switchStreaming(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.synchAmbientPlanes|natives.synchAmbientPlanes(int Unk520, int Unk521) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.synchRecordingWithWater|natives.synchRecordingWithWater(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.takeCarOutOfParkedCarsBudget|natives.takeCarOutOfParkedCarsBudget(Vehicle car, bool out) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.tan|natives.tan(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskAchieveHeading|natives.taskAchieveHeading(Ped ped, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskAimGunAtChar|natives.taskAimGunAtChar(Ped ped, Ped targetPed, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskAimGunAtCoord|natives.taskAimGunAtCoord(Ped ped, float tX, float tY, float tZ, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarDriveToCoord|natives.taskCarDriveToCoord(Ped ped, Vehicle veh, float Unk133, float Unk134, float Unk135, float Unk136, int Unk137, int Unk138, int Unk139, float Unk140, int Unk141) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarDriveWander|natives.taskCarDriveWander(Ped ped, Vehicle vehicle, float speed, uint drivingStyle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionCoorsTargetNotAgainstTraffic|natives.taskCarMissionCoorsTargetNotAgainstTraffic(Ped ped, Vehicle vehicle, Vec3 x, uint unknown0_4, float speed, uint unknown2_1, uint unknown3_5, uint unknown4_10) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionCoorsTarget|natives.taskCarMissionCoorsTarget(Ped ped, Vehicle vehicle, Vec3 x, uint unknown0_4, float speed, uint unknown2_1, uint unknown3_5, uint unknown4_10) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionNotAgainstTraffic|natives.taskCarMissionNotAgainstTraffic(Ped ped, Vehicle vehicle, uint targetEntity, uint missionType, float speed, uint drivingStyle, uint unknown6_10, uint unknown7_5) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionPedTarget|natives.taskCarMissionPedTarget(Ped ped, Vehicle vehicle, Ped target, uint unknown0_4, float speed, uint unknown2_1, uint unknown3_5, uint unknown4_10) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMission|natives.taskCarMission(Ped ped, Vehicle vehicle, uint targetEntity, uint missionType, float speed, uint drivingStyle, uint unknown6_10, uint unknown7_5) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarTempAction|natives.taskCarTempAction(Ped ped, Vehicle vehicle, uint action, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCharArrestChar|natives.taskCharArrestChar(Ped ped0, Ped ped1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskChatWithChar|natives.taskChatWithChar(Ped ped, Ped pednext, bool Unk183, bool Unk184) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskClearLookAt|natives.taskClearLookAt(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskClimb|natives.taskClimb(Ped ped, bool Unk185) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombatHatedTargetsAroundCharTimed|natives.taskCombatHatedTargetsAroundCharTimed(Ped ped, float radius, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombatHatedTargetsAroundChar|natives.taskCombatHatedTargetsAroundChar(Ped ped, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombatTimed|natives.taskCombatTimed(Ped ped, Ped target, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombat|natives.taskCombat(Ped ped, Ped target) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCower|natives.taskCower(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDead|natives.taskDead(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDestroyCar|natives.taskDestroyCar(Ped ped, Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDie|natives.taskDie(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDriveBy|natives.taskDriveBy(Ped ped, Ped pednext, int Unk192, Vec3 x, float angle, int Unk193, bool Unk194, int Unk195) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDrivePointRoute|natives.taskDrivePointRoute(Ped ped, int point, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskEnterCarAsDriver|natives.taskEnterCarAsDriver(Ped ped, Vehicle vehicle, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskEnterCarAsPassenger|natives.taskEnterCarAsPassenger(Ped ped, Vehicle vehicle, uint duration, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskEveryoneLeaveCar|natives.taskEveryoneLeaveCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFlushRoute|natives.taskFlushRoute(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshAndSlideToCoordHdgRate|natives.taskFollowNavMeshAndSlideToCoordHdgRate(Ped ped, Vec3 x, int Unk218, int Unk219, float Unk220, float angle, float rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshAndSlideToCoord|natives.taskFollowNavMeshAndSlideToCoord(Ped ped, Vec3 x, int Unk215, int Unk216, float Unk217, float angle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshToCoordNoStop|natives.taskFollowNavMeshToCoordNoStop(Ped ped, Vec3 x, uint unknown0_2, uint unknown1_minus1, float unknown2_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshToCoord|natives.taskFollowNavMeshToCoord(Ped ped, Vec3 x, uint unknown0_2, uint unknown1_minus1, float unknown2_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGetOffBoat|natives.taskGetOffBoat(Ped ped, int timeout) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGoStraightToCoord|natives.taskGoStraightToCoord(Ped ped, Vec3 x, uint unknown2, uint unknown45000) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGotoCharOffset|natives.taskGotoCharOffset(Ped ped, Ped target, uint duration, float offsetRight, float offsetFront) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGuardCurrentPosition|natives.taskGuardCurrentPosition(Ped ped, float unknown0_15, float unknown1_10, uint unknown2_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskHandsUp|natives.taskHandsUp(Ped ped, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskHeliMission|natives.taskHeliMission(Ped ped, Vehicle heli, uint uk0_0, uint uk1_0, float pX, float pY, float pZ, uint uk2_4, float speed, uint uk3_5, float uk4_minus1, uint uk5_round_z_plus_1, uint uk6_40) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskJump|natives.taskJump(Ped ped, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveAnyCar|natives.taskLeaveAnyCar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCarDontCloseDoor|natives.taskLeaveCarDontCloseDoor(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCarImmediately|natives.taskLeaveCarImmediately(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCarInDirection|natives.taskLeaveCarInDirection(Ped ped, Vehicle car, bool direction) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCar|natives.taskLeaveCar(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveGroup|natives.taskLeaveGroup(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtChar|natives.taskLookAtChar(Ped ped, Ped targetPed, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtCoord|natives.taskLookAtCoord(Ped ped, Vec3 x, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtObject|natives.taskLookAtObject(Ped ped, Object targetObject, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtVehicle|natives.taskLookAtVehicle(Ped ped, Vehicle targetVehicle, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskOpenDriverDoor|natives.taskOpenDriverDoor(Ped ped, Vehicle vehicle, uint unknown0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskOpenPassengerDoor|natives.taskOpenPassengerDoor(Ped ped, Vehicle vehicle, uint seatIndex, uint unknown0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPause|natives.taskPause(Ped ped, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPerformSequence|natives.taskPerformSequence(Ped ped, int taskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPlayAnimNonInterruptable|natives.taskPlayAnimNonInterruptable(Ped ped, string animname0, string animname1, float Unk320, int Unk321, int Unk322, int Unk323, int Unk324, int Unk325) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPlayAnimWithFlags|natives.taskPlayAnimWithFlags(Ped ped, string animName, string animSet, float unknown0_8, uint unknown1_0, uint flags) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSetCharDecisionMaker|natives.taskSetCharDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSetCombatDecisionMaker|natives.taskSetCombatDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSetIgnoreWeaponRangeFlag|natives.taskSetIgnoreWeaponRangeFlag(Ped ped, bool ignore) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShakeFist|natives.taskShakeFist(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShimmyClimbUp|natives.taskShimmyClimbUp(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShimmyLetGo|natives.taskShimmyLetGo(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShootAtChar|natives.taskShootAtChar(Ped shooter, Ped victim, int time, int shootmode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleeCharPreferringPavements|natives.taskSmartFleeCharPreferringPavements(Ped ped, Ped fleeFromPed, float unknown0_100, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleeChar|natives.taskSmartFleeChar(Ped ped, Ped fleeFromPed, float unknown0_100, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleePointPreferringPavements|natives.taskSmartFleePointPreferringPavements(Ped ped, Vec3 x, float radius, int time_prob) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleePoint|natives.taskSmartFleePoint(Ped ped, Vec3 x, float unknown0_100, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskStandGuard|natives.taskStandGuard(Ped ped, Vec3 x, float Unk460, float Unk461, bool Unk462, int Unk463) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskStandStill|natives.taskStandStill(Ped ped, int duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSwapWeapon|natives.taskSwapWeapon(Ped ped, uint weapon) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSwimToCoord|natives.taskSwimToCoord(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTired|natives.taskTired(Ped ped, int Unk471) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskToggleDuck|natives.taskToggleDuck(Ped ped, int Unk472) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTogglePedThreatScanner|natives.taskTogglePedThreatScanner(Ped ped, bool Unk473, bool Unk474, bool Unk475) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTurnCharToFaceChar|natives.taskTurnCharToFaceChar(Ped ped, Ped targetPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTurnCharToFaceCoord|natives.taskTurnCharToFaceCoord(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskUseMobilePhoneTimed|natives.taskUseMobilePhoneTimed(Ped ped, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskUseMobilePhone|natives.taskUseMobilePhone(Ped ped, bool use) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskWanderStandard|natives.taskWanderStandard(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskWarpCharIntoCarAsDriver|natives.taskWarpCharIntoCarAsDriver(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskWarpCharIntoCarAsPassenger|natives.taskWarpCharIntoCarAsPassenger(Ped ped, Vehicle vehicle, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.tellNetPlayerToStartPlaying|natives.tellNetPlayerToStartPlaying(Player playerIndex, bool Unk999) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.terminateAllScriptsForNetworkGame|natives.terminateAllScriptsForNetworkGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.terminateAllScriptsWithThisName|natives.terminateAllScriptsWithThisName(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.terminateThisScript|natives.terminateThisScript(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.thisScriptIsSafeForNetworkGame|natives.thisScriptIsSafeForNetworkGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.thisScriptShouldBeSaved|natives.thisScriptShouldBeSaved(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timera|natives.timera(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timerb|natives.timerb(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timerc|natives.timerc(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timestepunwarped|natives.timestepunwarped(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timestep|natives.timestep(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.toFloat|natives.toFloat(uint value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.toggleToplevelSprite|natives.toggleToplevelSprite(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.trainLeaveStation|natives.trainLeaveStation(Vehicle train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerLoadingMusicOnNextFade|natives.triggerLoadingMusicOnNextFade(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerMissionCompleteAudio|natives.triggerMissionCompleteAudio(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPoliceReport|natives.triggerPoliceReport(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnObjBone|natives.triggerPtfxOnObjBone(string name, Object obj, Vec3 x, float Unk1068, float Unk1069, float Unk1070, int objbone, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnObj|natives.triggerPtfxOnObj(string name, Object obj, Vec3 x, float Unk1065, float Unk1066, float Unk1067, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnPedBone|natives.triggerPtfxOnPedBone(string name, Ped ped, Vec3 x, float Unk1074, float Unk1075, float Unk1076, int pedbone, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnPed|natives.triggerPtfxOnPed(string name, Ped ped, Vec3 x, float Unk1071, float Unk1072, float Unk1073, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnVeh|natives.triggerPtfxOnVeh(string name, Vehicle veh, Vec3 x, float Unk1077, float Unk1078, float Unk1079, float Unk1080) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfx|natives.triggerPtfx(string name, Vec3 x, float Unk1062, float Unk1063, float Unk1064, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerVehAlarm|natives.triggerVehAlarm(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerVigilanteCrime|natives.triggerVigilanteCrime(int id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.turnCarToFaceCoord|natives.turnCarToFaceCoord(Vehicle car, Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.turnOffRadiohudInLobby|natives.turnOffRadiohudInLobby(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.turnOffVehicleExtra|natives.turnOffVehicleExtra(Vehicle veh, int extra, bool turnoff) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unattachCam|natives.unattachCam(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unfreezeRadioStation|natives.unfreezeRadioStation(string radiostation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.uninheritCamRoll|natives.uninheritCamRoll(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unloadTextFont|natives.unloadTextFont(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockGenericNewsStory|natives.unlockGenericNewsStory(int StoryId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockLazlowStation|natives.unlockLazlowStation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockMissionNewsStory|natives.unlockMissionNewsStory(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockRagdoll|natives.unlockRagdoll(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unmarkAllRoadNodesAsDontWander|natives.unmarkAllRoadNodesAsDontWander(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unobfuscateInt|natives.unobfuscateInt(int count, [output] int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unobfuscateString|natives.unobfuscateString(string str) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpauseGame|natives.unpauseGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpausePlaybackRecordedCar|natives.unpausePlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpauseRadio|natives.unpauseRadio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpointCam|natives.unpointCam(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unregisterScriptWithAudio|natives.unregisterScriptWithAudio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unsetCharMeleeMovementConstaintBox|natives.unsetCharMeleeMovementConstaintBox(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updateLoadScene|natives.updateLoadScene(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updateNetworkStatistics|natives.updateNetworkStatistics(Player playerIndex, int ukn0, int ukn1, int ukn2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updatePedPhysicalAttachmentPosition|natives.updatePedPhysicalAttachmentPosition(Ped ped, Vec3 x0, Vec2 x1, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updatePtfxOffsets|natives.updatePtfxOffsets(uint ptfx, Vec3 x, float Unk1081, float Unk1082, float Unk1083) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updatePtfxTint|natives.updatePtfxTint(uint ptfx, float r, float g, float b, float a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.useMask|natives.useMask(bool use) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.usePlayerColourInsteadOfTeamColour|natives.usePlayerColourInsteadOfTeamColour(bool Unk1005) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.usePreviousFontSettings|natives.usePreviousFontSettings(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.usingStandardControls|natives.usingStandardControls(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vdist2|natives.vdist2(Vec3 x0, Vec3 x1) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vdist|natives.vdist(Vec3 x0, Vec3 x1) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vehicleCanBeTargettedByHsMissile|natives.vehicleCanBeTargettedByHsMissile(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vehicleDoesProvideCover|natives.vehicleDoesProvideCover(Vehicle veh, bool cover) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vmag2|natives.vmag2(Vec3 x) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vmag|natives.vmag(Vec3 x) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wait|natives.wait(int timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wantedStarsAreFlashing|natives.wantedStarsAreFlashing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharFromCarToCar|natives.warpCharFromCarToCar(Ped ped, Vehicle vehicle, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharFromCarToCoord|natives.warpCharFromCarToCoord(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharIntoCarAsPassenger|natives.warpCharIntoCarAsPassenger(Ped ped, Vehicle vehicle, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharIntoCar|natives.warpCharIntoCar(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wasCutsceneSkipped|natives.wasCutsceneSkipped(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.washVehicleTextures|natives.washVehicleTextures(Vehicle vehicle, uint intensity) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wasPedKilledByHeadshot|natives.wasPedKilledByHeadshot(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wasPedSkeletonUpdated|natives.wasPedSkeletonUpdated(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.whatWillPlayerPickup|natives.whatWillPlayerPickup(Player playerIndex) : Object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.winchCanPickObjectUp|natives.winchCanPickObjectUp(Object obj, bool can) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network Natives ==&lt;br /&gt;
[[natives.network.acceptInvite|natives.network.acceptInvite(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.advertiseSession|natives.network.advertiseSession(bool advertise) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.allPartyMembersPresent|natives.network.allPartyMembersPresent(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.amIBlockedByPlayer|natives.network.amIBlockedByPlayer(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.amIMutedByPlayer|natives.network.amIMutedByPlayer(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.changeGameModePending|natives.network.changeGameModePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.changeGameModeSucceeded|natives.network.changeGameModeSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.changeGameMode|natives.network.changeGameMode(int gamemode, int maxplayers, int privateslots, int maxteams) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.checkInviteArrival|natives.network.checkInviteArrival(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.clearInviteArrival|natives.network.clearInviteArrival(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.clearSummons|natives.network.clearSummons(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.didInviteFriend|natives.network.didInviteFriend(string friendname) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.endSessionPending|natives.network.endSessionPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.endSession|natives.network.endSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.expandTo32Players|natives.network.expandTo32Players(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.findGamePending|natives.network.findGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.findGame|natives.network.findGame(int GameMode, bool bRanked, int Episode, int MaxTeams) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.finishExtendedSearch|natives.network.finishExtendedSearch(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getFriendCount|natives.network.getFriendCount(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getFriendName|natives.network.getFriendName(int id) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getGameMode|natives.network.getGameMode(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHealthReticuleOption|natives.network.getHealthReticuleOption(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostAverageRank|natives.network.getHostAverageRank(int host) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostLatency|natives.network.getHostLatency(int host) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostMatchProgress|natives.network.getHostMatchProgress(int host) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostServerName|natives.network.getHostServerName(int host) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getLanSession|natives.network.getLanSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getMaxPrivateSlots|natives.network.getMaxPrivateSlots(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getMaxSlots|natives.network.getMaxSlots(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNextTextChat|natives.network.getNextTextChat(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumberOfGames|natives.network.getNumberOfGames(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumOpenPublicSlots|natives.network.getNumOpenPublicSlots(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumPartyMembers|natives.network.getNumPartyMembers(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumPlayersMet|natives.network.getNumPlayersMet(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumUnacceptedInvites|natives.network.getNumUnacceptedInvites(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumUnfilledReservations|natives.network.getNumUnfilledReservations(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getPlayerIdOfNextTextChat|natives.network.getPlayerIdOfNextTextChat(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getRendezvousHostPlayerId|natives.network.getRendezvousHostPlayerId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getServerName|natives.network.getServerName(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getUnacceptedInviteEpisode|natives.network.getUnacceptedInviteEpisode(int invite) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getUnacceptedInviterName|natives.network.getUnacceptedInviterName(int invite) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hasStrictNat|natives.network.hasStrictNat(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.haveAcceptedInvite|natives.network.haveAcceptedInvite(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.haveOnlinePrivileges|natives.network.haveOnlinePrivileges(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.haveSummons|natives.network.haveSummons(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostGameE1|natives.network.hostGameE1(int Gamemode, bool Ranked, int Slots, int Private, int Episode, int MaxTeams) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostGamePending|natives.network.hostGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostGameSucceeded|natives.network.hostGameSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostRendezvousE1|natives.network.hostRendezvousE1(int Gamemode, int Slots, int Episode) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.inviteFriend|natives.network.inviteFriend(string friendname, string ukn) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isBeingKicked|natives.network.isBeingKicked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isCommonEpisode|natives.network.isCommonEpisode(int id) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFindResultUpdated|natives.network.isFindResultUpdated(int result) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFindResultValid|natives.network.isFindResultValid(int result) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFriendInSameTitle|natives.network.isFriendInSameTitle(string friendname) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFriendOnline|natives.network.isFriendOnline(string pszName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isGameRanked|natives.network.isGameRanked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isInviteeOnline|natives.network.isInviteeOnline(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isNetworkAvailable|natives.network.isNetworkAvailable(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isOperationPending|natives.network.isOperationPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerBlockedByMe|natives.network.isPlayerBlockedByMe(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerMutedByMe|natives.network.isPlayerMutedByMe(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerTalking|natives.network.isPlayerTalking(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerTyping|natives.network.isPlayerTyping(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isRendezvousHost|natives.network.isRendezvousHost(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isRendezvous|natives.network.isRendezvous(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isRockstartSessionIdValid|natives.network.isRockstartSessionIdValid(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isSessionAdvertise|natives.network.isSessionAdvertise(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isSessionInvitable|natives.network.isSessionInvitable(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isSessionStarted|natives.network.isSessionStarted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isTvt|natives.network.isTvt(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.joinGamePending|natives.network.joinGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.joinGameSucceeded|natives.network.joinGameSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.joinSummons|natives.network.joinSummons(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.kickPlayer|natives.network.kickPlayer(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.leaveGamePending|natives.network.leaveGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.leaveGame|natives.network.leaveGame(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.limitTo16Players|natives.network.limitTo16Players(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasCommPrivs|natives.network.playerHasCommPrivs(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasDiedRecently|natives.network.playerHasDiedRecently(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasHeadset|natives.network.playerHasHeadset(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasKeyboard|natives.network.playerHasKeyboard(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.resultMatchesSearchCriteria|natives.network.resultMatchesSearchCriteria(int result) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.returnToRendezvousPending|natives.network.returnToRendezvousPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.returnToRendezvousSucceeded|natives.network.returnToRendezvousSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.returnToRendezvous|natives.network.returnToRendezvous(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setHealthReticuleOption|natives.network.setHealthReticuleOption(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setLanSession|natives.network.setLanSession(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setLocalPlayerIsTyping|natives.network.setLocalPlayerIsTyping(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setMatchProgress|natives.network.setMatchProgress(float Unk930) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setPlayerMuted|natives.network.setPlayerMuted(Player playerIndex, bool value) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setServerName|natives.network.setServerName(string name) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setSessionInvitable|natives.network.setSessionInvitable(bool invitable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setTeamOnlyChat|natives.network.setTeamOnlyChat(bool Unk934) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.showMetPlayerFeedbackUi|natives.network.showMetPlayerFeedbackUi(Player metPlayerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.showPlayerFeedbackUi|natives.network.showPlayerFeedbackUi(Player payerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.showPlayerProfileUi|natives.network.showPlayerProfileUi(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.startSessionPending|natives.network.startSessionPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.startSessionSucceeded|natives.network.startSessionSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.startSession|natives.network.startSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.stringVerifyPending|natives.network.stringVerifyPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.stringVerifySucceeded|natives.network.stringVerifySucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Client/Natives/IV&amp;diff=11451</id>
		<title>Client/Natives/IV</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Client/Natives/IV&amp;diff=11451"/>
		<updated>2026-04-14T22:29:42Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
{{DISPLAYTITLE:GTA IV - Native Functions}}&lt;br /&gt;
This is a list of all GTA IV natives that are supported in GTAC client-side scripting.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Game Natives ==&lt;br /&gt;
[[natives.abortAllGarageActivity|natives.abortAllGarageActivity(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.abortScriptedConversation|natives.abortScriptedConversation(bool abort) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.absf|natives.absf(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.absi|natives.absi(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.acos|natives.acos(float Unk496) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateCheat|natives.activateCheat(uint cheat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateFrontend|natives.activateFrontend(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateHeliSpeedCheat|natives.activateHeliSpeedCheat(Vehicle heli, int cheat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateInterior|natives.activateInterior(int interior, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateMenuItem|natives.activateMenuItem(int menuid, int item, bool activate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateNetworkSettingsMenu|natives.activateNetworkSettingsMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateReplayMenu|natives.activateReplayMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateSaveMenu|natives.activateSaveMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateScriptPopulationZone|natives.activateScriptPopulationZone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateScriptedCams|natives.activateScriptedCams(bool Unk538, bool Unk539) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.activateViewport|natives.activateViewport(int viewportid, bool activate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addAdditionalPopulationModel|natives.addAdditionalPopulationModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addAmmoToChar|natives.addAmmoToChar(Ped ped, uint weapon, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addArmourToChar|natives.addArmourToChar(Ped ped, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForCar|natives.addBlipForCar(Vehicle vehicle, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForChar|natives.addBlipForChar(Ped ped, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForContact|natives.addBlipForContact(Vec3 x, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForCoord|natives.addBlipForCoord(Vec3 x, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForGangTerritory|natives.addBlipForGangTerritory(Vec2 x0, Vec2 x1, int colour, [output] int blip, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForObject|natives.addBlipForObject(Object obj, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForPickup|natives.addBlipForPickup(Pickup pickup, [output] int pBlip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForRadius|natives.addBlipForRadius(Vec3 x, int type, [output] int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addBlipForWeapon|natives.addBlipForWeapon(Vec3 x, [output] int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addCamSplineNode|natives.addCamSplineNode(int cam, int camnode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addCarToMissionDeletionList|natives.addCarToMissionDeletionList(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addCharDecisionMakerEventResponse|natives.addCharDecisionMakerEventResponse(int dm, uint eventid, uint responseid, float param1, float param2, float param3, float param4, uint unknown0_1, uint unknown1_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addExplosion|natives.addExplosion(Vec3 x, int exptype, float radius, bool playsound, bool novisual, float camshake) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addFirstNCharactersOfStringToHtmlScriptObject|natives.addFirstNCharactersOfStringToHtmlScriptObject(int htmlobj, string str, int n) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addGroupDecisionMakerEventResponse|natives.addGroupDecisionMakerEventResponse(int dm, uint eventid, uint responseid, float param1, float param2, float param3, float param4, uint unknown0_1, uint unknown1_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addGroupToNetworkRestartNodeGroupList|natives.addGroupToNetworkRestartNodeGroupList(int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addHospitalRestart|natives.addHospitalRestart(Vec3 x, float radius, int islandnum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addLineToMobilePhoneCall|natives.addLineToMobilePhoneCall(int id, string name, string text) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addLineToScriptedConversation|natives.addLineToScriptedConversation(uint conversation, int Unk527, int Unk528) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNavmeshRequiredRegion|natives.addNavmeshRequiredRegion(Vec3 x) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNeededAtPosn|natives.addNeededAtPosn(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNewConversationSpeaker|natives.addNewConversationSpeaker(int id, int Unk529, [output] int Unk530) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNewFrontendConversationSpeaker|natives.addNewFrontendConversationSpeaker(int Unk531, int Unk532) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addNextMessageToPreviousBriefs|natives.addNextMessageToPreviousBriefs(bool add) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addObjectToInteriorRoomByKey|natives.addObjectToInteriorRoomByKey(Object obj, uint roomKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addObjectToInteriorRoomByName|natives.addObjectToInteriorRoomByName(Object obj, string room_name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPedToCinematographyAi|natives.addPedToCinematographyAi(int Unk28, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPedToMissionDeletionList|natives.addPedToMissionDeletionList(Ped ped, bool Unk29) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPickupToInteriorRoomByKey|natives.addPickupToInteriorRoomByKey(Object pickup, uint room_hash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPickupToInteriorRoomByName|natives.addPickupToInteriorRoomByName(Pickup pickup, string roomName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPointToGpsRaceTrack|natives.addPointToGpsRaceTrack([output] Vec3 point) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addPoliceRestart|natives.addPoliceRestart(Vec3 x, float radius, int islandnum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addScenarioBlockingArea|natives.addScenarioBlockingArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addScore|natives.addScore(Player playerIndex, int score) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addSimpleBlipForPickup|natives.addSimpleBlipForPickup(Pickup pickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStringToHtmlScriptObject|natives.addStringToHtmlScriptObject(int htmlobj, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStringToNewsScrollbar|natives.addStringToNewsScrollbar(string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStringWithThisTextLabelToPreviousBrief|natives.addStringWithThisTextLabelToPreviousBrief(string gxtname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStuckCarCheckWithWarp|natives.addStuckCarCheckWithWarp(Vehicle car, float stuckdif, int time, bool flag0, bool flag1, bool flag2, bool flag3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStuckCarCheck|natives.addStuckCarCheck(Vehicle car, float stuckdif, int timeout) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addStuntJump|natives.addStuntJump(Vec3 x, Vec3 x0, Vec3 x1, Vec3 x2, Vec3 x3, int reward) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addToHtmlScriptObject|natives.addToHtmlScriptObject(int htmlobj, string htmlcode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addToPreviousBriefWithUnderscore|natives.addToPreviousBriefWithUnderscore(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addToPreviousBrief|natives.addToPreviousBrief(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.addUpsidedownCarCheck|natives.addUpsidedownCarCheck(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allocateScriptToObject|natives.allocateScriptToObject(string ScriptName, uint model, int Unk602, float radius, int UnkTime) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allocateScriptToRandomPed|natives.allocateScriptToRandomPed(string ScriptName, uint model, int Unk603, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowAutoConversationLookats|natives.allowAutoConversationLookats(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowEmergencyServices|natives.allowEmergencyServices(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowGameToPauseForStreaming|natives.allowGameToPauseForStreaming(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowGangRelationshipsToBeChangedByNextCommand|natives.allowGangRelationshipsToBeChangedByNextCommand(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowLockonToFriendlyPlayers|natives.allowLockonToFriendlyPlayers(Player playerIndex, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowLockonToRandomPeds|natives.allowLockonToRandomPeds(Player playerIndex, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowMultipleDrivebyPickups|natives.allowMultipleDrivebyPickups(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowOneTimeOnlyCommandsToRun|natives.allowOneTimeOnlyCommandsToRun(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowPlayerToCarryNonMissionObjects|natives.allowPlayerToCarryNonMissionObjects(Player playerIndex, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowReactionAnims|natives.allowReactionAnims(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowScenarioPedsToBeReturnedByNextCommand|natives.allowScenarioPedsToBeReturnedByNextCommand(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowStuntJumpsToTrigger|natives.allowStuntJumpsToTrigger(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowTargetWhenInjured|natives.allowTargetWhenInjured(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.allowThisScriptToBePaused|natives.allowThisScriptToBePaused(bool allows) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.alterWantedLevelNoDrop|natives.alterWantedLevelNoDrop(Player playerIndex, uint level) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.alterWantedLevel|natives.alterWantedLevel(Player playerIndex, uint level) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.alwaysUseHeadOnHornAnimWhenDeadInCar|natives.alwaysUseHeadOnHornAnimWhenDeadInCar(Ped ped, bool use) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.ambientAudioBankNoLongerNeeded|natives.ambientAudioBankNoLongerNeeded(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.anchorBoat|natives.anchorBoat(Vehicle boat, bool anchor) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.anchorObject|natives.anchorObject(Object obj, bool anchor, uint flags) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyForceToCar|natives.applyForceToCar(Vehicle vehicle, uint unknown0_3, Vec3 x, float spinX, float spinY, float spinZ, uint unknown4_0, uint isForceRelative, uint unknown6_1, uint unknown7_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyForceToObject|natives.applyForceToObject(Object obj, uint uk0_3, float pX, float pY, float pZ, float spinX, float spinY, float spinZ, uint uk4_0, uint uk5_1, uint uk6_1, uint uk7_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyForceToPed|natives.applyForceToPed(Ped ped, uint unknown0_3, Vec3 x, float spinX, float spinY, float spinZ, uint unknown4_0, uint isForceRelative, uint unknown6_1, uint unknown7_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.applyWantedLevelChangeNow|natives.applyWantedLevelChangeNow(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areAllNavmeshRegionsLoaded|natives.areAllNavmeshRegionsLoaded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areAnyCharsNearChar|natives.areAnyCharsNearChar(Ped ped, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areCreditsFinished|natives.areCreditsFinished(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areEnemyPedsInArea|natives.areEnemyPedsInArea(Ped ped, Vec3 x, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areTaxiLightsOn|natives.areTaxiLightsOn(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.areWidescreenBordersActive|natives.areWidescreenBordersActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.asciiIntToString|natives.asciiIntToString(int ascii) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.asin|natives.asin(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.atan2|natives.atan2(float Unk497, float Unk498) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.atan|natives.atan(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachAnimsToModel|natives.attachAnimsToModel(uint model, string anims) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToObject|natives.attachCamToObject(int cam, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToPed|natives.attachCamToPed(int cam, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToVehicle|natives.attachCamToVehicle(int cam, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCamToViewport|natives.attachCamToViewport(int cam, int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCarToCarPhysically|natives.attachCarToCarPhysically(int vehid1, int vehid2, bool Unk52, int Unk53, Vec3 xoffset, Vec3 xbuffer, Vec2 xrotateveh1, float Unk54, float Unk55, float Unk56, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCarToCar|natives.attachCarToCar(Vehicle car0, Vehicle car1, int Unk51, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachCarToObject|natives.attachCarToObject(Vehicle car, Object obj, float Unk57, float Unk58, float Unk59, float Unk60, float Unk61, float Unk62, float Unk63) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToCar|natives.attachObjectToCar(Object obj, Vehicle v, uint unknown0_0, float pX, float pY, float pZ, float rX, float rY, float rZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToObject|natives.attachObjectToObject(Object obj0, Object obj1_attach_to, int Unk91, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToPedPhysically|natives.attachObjectToPedPhysically(Object obj, Ped c, bool unknown, uint bone, float pX, float pY, float pZ, float rX, float rY, float rZ, uint unknown1_0, uint unknown2_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachObjectToPed|natives.attachObjectToPed(Object obj, Ped c, uint bone, float pX, float pY, float pZ, float rX, float rY, float rZ, uint unknown1_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachParachuteModelToPlayer|natives.attachParachuteModelToPlayer(Ped ped, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToCarPhysically|natives.attachPedToCarPhysically(Ped ped, Vehicle car, int pedbone, Vec3 x, float angle, float Unk30, bool Unk31, bool Unk32) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToCar|natives.attachPedToCar(Ped ped, Vehicle vehicle, uint unknown0_0, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, bool Unk64, bool Unk65) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToObjectPhysically|natives.attachPedToObjectPhysically(Ped ped, Object obj, int pedbone, Vec3 x, float angle, float Unk36, bool Unk37, bool Unk38) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToObject|natives.attachPedToObject(Ped ped, Object obj, int pedbone, Vec3 x, float angle, float Unk33, bool Unk34, bool Unk35) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.attachPedToShimmyEdge|natives.attachPedToShimmyEdge(Ped ped, Vec3 x, float Unk39) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.awardPlayerMissionRespect|natives.awardPlayerMissionRespect(float respect) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.beginCamCommands|natives.beginCamCommands([output] int Unk540) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.beginCharSearchCriteria|natives.beginCharSearchCriteria(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blendFromNmWithAnim|natives.blendFromNmWithAnim(Ped ped, string AnimName0, string AnimName1, int Unk1, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blendOutCharMoveAnims|natives.blendOutCharMoveAnims(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharAmbientAnims|natives.blockCharAmbientAnims(Ped ped, bool block) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharGestureAnims|natives.blockCharGestureAnims(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharHeadIk|natives.blockCharHeadIk(Ped ped, bool block) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCharVisemeAnims|natives.blockCharVisemeAnims(Ped ped, bool block) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockCoweringInCover|natives.blockCoweringInCover(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockPedWeaponSwitching|natives.blockPedWeaponSwitching(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockPeekingInCover|natives.blockPeekingInCover(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.blockStatsMenuActions|natives.blockStatsMenuActions(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.breakCarDoor|natives.breakCarDoor(Vehicle vehicle, uint door, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.burstCarTyre|natives.burstCarTyre(Vehicle vehicle, uint tyre) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.calculateTravelDistanceBetweenNodes|natives.calculateTravelDistanceBetweenNodes(Vec3 x0, Vec3 x1) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camIsSphereVisible|natives.camIsSphereVisible(int camera, float pX, float pY, float pZ, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camProcess|natives.camProcess(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camRestoreJumpcut|natives.camRestoreJumpcut(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camRestore|natives.camRestore(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceClose|natives.camSequenceClose(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceGetProgress|natives.camSequenceGetProgress(int Unk541, [output] int progress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceOpen|natives.camSequenceOpen(int Unk542) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceRemove|natives.camSequenceRemove(int Unk543) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceStart|natives.camSequenceStart(int Unk544) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceStop|natives.camSequenceStop(int Unk545) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSequenceWait|natives.camSequenceWait(int cam, int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetCinematic|natives.camSetCinematic(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetDollyZoomLock|natives.camSetDollyZoomLock(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpGraphPos|natives.camSetInterpGraphPos(int cam, int Unk547) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpGraphRot|natives.camSetInterpGraphRot(int cam, int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpStateSrc|natives.camSetInterpStateSrc(int Unk549, int Unk550) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpStateSrc|natives.camSetInterpStateSrc(int cam, int Unk548) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.camSetInterpolationDetails|natives.camSetInterpolationDetails(int Unk546) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canBeDescribedAsACar|natives.canBeDescribedAsACar(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canCharSeeDeadChar|natives.canCharSeeDeadChar(Ped ped, Ped pednext) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canCreateRandomChar|natives.canCreateRandomChar(bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canFontBeLoaded|natives.canFontBeLoaded(int fontid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canPedShimmyInDirection|natives.canPedShimmyInDirection(Ped ped, int direction) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canPhoneBeSeenOnScreen|natives.canPhoneBeSeenOnScreen(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canPlayerStartMission|natives.canPlayerStartMission(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canRegisterMissionObject|natives.canRegisterMissionObject(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canRegisterMissionPed|natives.canRegisterMissionPed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canRegisterMissionVehicle|natives.canRegisterMissionVehicle(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canStartMissionPassedTune|natives.canStartMissionPassedTune(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.canTheStatHaveString|natives.canTheStatHaveString(int stat) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cancelCurrentlyPlayingAmbientSpeech|natives.cancelCurrentlyPlayingAmbientSpeech(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cancelCurrentlyPlayingAmbientSpeech|natives.cancelCurrentlyPlayingAmbientSpeech(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cancelOverrideRestart|natives.cancelOverrideRestart(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.ceil|natives.ceil(float value) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamActivate|natives.cellCamActivate(bool Unk551, bool Unk552) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamIsCharVisibleNoFaceCheck|natives.cellCamIsCharVisibleNoFaceCheck(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamIsCharVisible|natives.cellCamIsCharVisible(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamSetCentrePos|natives.cellCamSetCentrePos(Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamSetColourBrightness|natives.cellCamSetColourBrightness(float Unk553, float Unk554, float Unk555, float Unk556) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cellCamSetZoom|natives.cellCamSetZoom(float zoom) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipAlpha|natives.changeBlipAlpha(int blip, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipColour|natives.changeBlipColour(int blip, int colour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipDisplay|natives.changeBlipDisplay(int blip, uint display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipNameFromAscii|natives.changeBlipNameFromAscii(int blip, string blipName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipNameFromTextFile|natives.changeBlipNameFromTextFile(int blip, string gxtName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipNameToPlayerName|natives.changeBlipNameToPlayerName(int blip, Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipPriority|natives.changeBlipPriority(int blip, uint priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipRotation|natives.changeBlipRotation(int blip, int rotation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipScale|natives.changeBlipScale(int blip, float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipSprite|natives.changeBlipSprite(int blip, uint sprite) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeBlipTeamRelevance|natives.changeBlipTeamRelevance(int blip, int relevance) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeCarColour|natives.changeCarColour(Vehicle vehicle, int colour1, int colour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeGarageType|natives.changeGarageType(int garage, int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipColour|natives.changePickupBlipColour(int colour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipDisplay|natives.changePickupBlipDisplay(int display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipPriority|natives.changePickupBlipPriority(int priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipScale|natives.changePickupBlipScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePickupBlipSprite|natives.changePickupBlipSprite(int sprite) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlaybackToUseAi|natives.changePlaybackToUseAi(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlayerModel|natives.changePlayerModel(Player playerIndex, uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlayerPhoneModelOffsets|natives.changePlayerPhoneModelOffsets(Player playerIndex, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changePlayerPhoneModel|natives.changePlayerPhoneModel(Player playerIndex, uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.changeTerritoryBlipScale|natives.changeTerritoryBlipScale(int blip, float Unk632, float Unk633) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cheatHappenedRecently|natives.cheatHappenedRecently(int cheat, int time) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.checkNmFeedback|natives.checkNmFeedback(Ped ped, int id, bool Unk13) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.checkStuckTimer|natives.checkStuckTimer(Vehicle car, int timernum, int timeout) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAdditionalText|natives.clearAdditionalText(int textid, bool Unk634) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAllCharProps|natives.clearAllCharProps(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAllCharRelationships|natives.clearAllCharRelationships(Ped ped, int relgroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAngledAreaOfCars|natives.clearAngledAreaOfCars(Vec3 x0, Vec3 x1, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfCars|natives.clearAreaOfCars(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfChars|natives.clearAreaOfChars(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfCops|natives.clearAreaOfCops(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearAreaOfObjects|natives.clearAreaOfObjects(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearArea|natives.clearArea(Vec3 x, float radius, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearBit|natives.clearBit([output] int val, int bit) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearBrief|natives.clearBrief(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCarLastDamageEntity|natives.clearCarLastDamageEntity(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCarLastWeaponDamage|natives.clearCarLastWeaponDamage(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharLastDamageBone|natives.clearCharLastDamageBone(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharLastDamageEntity|natives.clearCharLastDamageEntity(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharLastWeaponDamage|natives.clearCharLastWeaponDamage(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharProp|natives.clearCharProp(Ped ped, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharRelationship|natives.clearCharRelationship(Ped ped, int reltype, int relgroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharSecondaryTask|natives.clearCharSecondaryTask(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharTasksImmediately|natives.clearCharTasksImmediately(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCharTasks|natives.clearCharTasks(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearCutscene|natives.clearCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearGroupDecisionMakerEventResponse|natives.clearGroupDecisionMakerEventResponse(int dm, uint eventid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearHelp|natives.clearHelp(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearNamedCutscene|natives.clearNamedCutscene(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearNetworkRestartNodeGroupList|natives.clearNetworkRestartNodeGroupList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearNewsScrollbar|natives.clearNewsScrollbar(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearObjectLastDamageEntity|natives.clearObjectLastDamageEntity(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearObjectLastWeaponDamage|natives.clearObjectLastWeaponDamage(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearOnscreenCounter|natives.clearOnscreenCounter(int counterid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearOnscreenTimer|natives.clearOnscreenTimer(int timerid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPedNonCreationArea|natives.clearPedNonCreationArea(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPedNonRemovalArea|natives.clearPedNonRemovalArea(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPlayerHasDamagedAtLeastOnePed|natives.clearPlayerHasDamagedAtLeastOnePed(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPlayerHasDamagedAtLeastOneVehicle|natives.clearPlayerHasDamagedAtLeastOneVehicle(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearPrints|natives.clearPrints(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRelationship|natives.clearRelationship(int p0, int p1, int p2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForCar|natives.clearRoomForCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForChar|natives.clearRoomForChar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForObject|natives.clearRoomForObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearRoomForViewport|natives.clearRoomForViewport(int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearScriptArrayFromScratchpad|natives.clearScriptArrayFromScratchpad(int Unk909) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearScriptedConversionCentre|natives.clearScriptedConversionCentre(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearSequenceTask|natives.clearSequenceTask(int taskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearShakePlayerpadWhenControllerDisabled|natives.clearShakePlayerpadWhenControllerDisabled(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearSmallPrints|natives.clearSmallPrints(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearTextLabel|natives.clearTextLabel(string label) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearThisBigPrint|natives.clearThisBigPrint(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearThisPrintBigNow|natives.clearThisPrintBigNow(bool Unk635) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearThisPrint|natives.clearThisPrint(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearTimecycleModifier|natives.clearTimecycleModifier(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.clearWantedLevel|natives.clearWantedLevel(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cloneCam|natives.cloneCam(int cam, [output] int camcopy) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeAllCarDoors|natives.closeAllCarDoors(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeDebugFile|natives.closeDebugFile(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeGarage|natives.closeGarage(string garageName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeMicPed|natives.closeMicPed(int id, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.closeSequenceTask|natives.closeSequenceTask(int taskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.codeWantsMobilePhoneRemovedForWeaponSwitching|natives.codeWantsMobilePhoneRemovedForWeaponSwitching(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.codeWantsMobilePhoneRemoved|natives.codeWantsMobilePhoneRemoved(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.compareString|natives.compareString(string str0, string str1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.compareTwoDates|natives.compareTwoDates(int date0_0, int date0_1, int date1_0, int date1_1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.connectLods|natives.connectLods(Object obj0, Object obj1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.controlCarDoor|natives.controlCarDoor(Vehicle vehicle, uint door, uint unknown_maybe_open, float angle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertIntToPlayerindex|natives.convertIntToPlayerindex(uint playerId) : Player]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertMetresToFeetInt|natives.convertMetresToFeetInt(int metres) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertMetresToFeet|natives.convertMetresToFeet(float metres) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.convertThenAddStringToHtmlScriptObject|natives.convertThenAddStringToHtmlScriptObject(int htmlobj, string strgxtkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyAnimations|natives.copyAnimations(Ped ped, Ped pednext, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyCharDecisionMaker|natives.copyCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyCombatDecisionMaker|natives.copyCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyGroupCharDecisionMaker|natives.copyGroupCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copyGroupCombatDecisionMaker|natives.copyGroupCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copySharedCharDecisionMaker|natives.copySharedCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.copySharedCombatDecisionMaker|natives.copySharedCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.cos|natives.cos(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.countPickupsOfType|natives.countPickupsOfType(int type) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.countScriptCamsByTypeAndOrState|natives.countScriptCamsByTypeAndOrState(int type, int Unk536, int Unk537) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.countScriptCams|natives.countScriptCams(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCam|natives.createCam(uint camtype_usually14, [output] int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCarGenerator|natives.createCarGenerator(Vec3 x, float yaw, float pitch, float roll, uint model, uint color1, uint color2, uint spec1, uint spec2, int Unk66, bool alarm, bool doorlock, [output] int handle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCarsOnGeneratorsInArea|natives.createCarsOnGeneratorsInArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCar|natives.createCar(uint nameHash, Vec3 x, [output] Vehicle pVehicle, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCharAsPassenger|natives.createCharAsPassenger(Vehicle vehicle, uint charType, uint model, uint passengerIndex, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCharInsideCar|natives.createCharInsideCar(Vehicle vehicle, uint charType, uint model, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createChar|natives.createChar(int type, uint model, Vec3 x, [output] Ped pPed, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createCheckpoint|natives.createCheckpoint(int type, Vec3 x, float Unk709, float Unk710) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createEmergencyServicesCarReturnDriver|natives.createEmergencyServicesCarReturnDriver(uint model, Vec3 x, [output] Vehicle car, [output] Ped cardriver, [output] Ped carpass) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createEmergencyServicesCarThenWalk|natives.createEmergencyServicesCarThenWalk(uint model, Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createEmergencyServicesCar|natives.createEmergencyServicesCar(uint model, Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createGroup|natives.createGroup(bool unknownFalse, [output] int pGroup, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createHtmlScriptObject|natives.createHtmlScriptObject(string objname) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createHtmlViewport|natives.createHtmlViewport([output] int htmlviewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createMissionTrain|natives.createMissionTrain(uint unknown1, Vec3 x, bool unknown2, [output] int pTrain) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createMobilePhone|natives.createMobilePhone(int Unk799) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createMoneyPickup|natives.createMoneyPickup(Vec3 x, uint amount, bool unknownTrue, [output] Pickup pPickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createNmMessage|natives.createNmMessage(bool Unk40, int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createObjectNoOffset|natives.createObjectNoOffset(uint model, Vec3 x, [output] Object pObj, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createObject|natives.createObject(uint model, Vec3 x, [output] Object pObj, bool networked) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPickupRotate|natives.createPickupRotate(uint model, uint pickupType, uint unknown, Vec3 x, float rX, float rY, float rZ, [output] Pickup pPickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPickupWithAmmo|natives.createPickupWithAmmo(uint model, uint pickupType, uint unknown, Vec3 x, [output] Pickup pPickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPickup|natives.createPickup(uint model, uint pickupType, Vec3 x, [output] Pickup pPickup, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createPlayer|natives.createPlayer(uint playerId, Vec3 x, [output] Player pPlayerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomCarForCarPark|natives.createRandomCarForCarPark(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomCharAsDriver|natives.createRandomCharAsDriver(Vehicle vehicle, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomCharAsPassenger|natives.createRandomCharAsPassenger(Vehicle vehicle, uint seat, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomChar|natives.createRandomChar(Vec3 x, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomFemaleChar|natives.createRandomFemaleChar(Vec3 x, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createRandomMaleChar|natives.createRandomMaleChar(Vec3 x, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createTemporaryRadarBlipsForPickupsInArea|natives.createTemporaryRadarBlipsForPickupsInArea(Vec3 x, float radius, int bliptype) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.createViewport|natives.createViewport([output] int viewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.damageCar|natives.damageCar(Vehicle car, Vec3 x, float unkforce0, float unkforce1, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.damageChar|natives.damageChar(Ped ped, uint hitPoints, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.damagePedBodyPart|natives.damagePedBodyPart(Ped ped, uint part, uint hitPoints) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deactivateFrontend|natives.deactivateFrontend(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deactivateNetworkSettingsMenu|natives.deactivateNetworkSettingsMenu(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deactivateScriptPopulationZone|natives.deactivateScriptPopulationZone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.debugOff|natives.debugOff(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.decrementFloatStat|natives.decrementFloatStat(int stat, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.decrementIntStat|natives.decrementIntStat(uint stat, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.definePedGenerationConstraintArea|natives.definePedGenerationConstraintArea(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteAllHtmlScriptObjects|natives.deleteAllHtmlScriptObjects(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteAllTrains|natives.deleteAllTrains(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteCarGenerator|natives.deleteCarGenerator(int handle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteCar|natives.deleteCar([output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteChar|natives.deleteChar([output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteCheckpoint|natives.deleteCheckpoint(uint checkpoint) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteHtmlScriptObject|natives.deleteHtmlScriptObject(int htmlobj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteMenu|natives.deleteMenu(int menuid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteMissionTrains|natives.deleteMissionTrains(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteMissionTrain|natives.deleteMissionTrain([output] int pTrain) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deleteObject|natives.deleteObject([output] Object pObj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.deletePlayer|natives.deletePlayer(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyAllCams|natives.destroyAllCams(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyAllScriptViewports|natives.destroyAllScriptViewports(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyCam|natives.destroyCam(int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyMobilePhone|natives.destroyMobilePhone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyPedGenerationConstraintArea|natives.destroyPedGenerationConstraintArea(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyThread|natives.destroyThread(int ScriptHandle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.destroyViewport|natives.destroyViewport(int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachCamFromViewport|natives.detachCamFromViewport(int Unk557) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachCar|natives.detachCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachObjectNoCollide|natives.detachObjectNoCollide(Object obj, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachObject|natives.detachObject(Object obj, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.detachPed|natives.detachPed(Ped ped, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.didSaveCompleteSuccessfully|natives.didSaveCompleteSuccessfully(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dimBlip|natives.dimBlip(int blip, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableCarGeneratorsWithHeli|natives.disableCarGeneratorsWithHeli(bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableCarGenerators|natives.disableCarGenerators(bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableEndCreditsFade|natives.disableEndCreditsFade(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableFrontendRadio|natives.disableFrontendRadio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableGps|natives.disableGps(bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableHeliChaseCamBonnetNitroFix|natives.disableHeliChaseCamBonnetNitroFix(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableHeliChaseCamThisUpdate|natives.disableHeliChaseCamThisUpdate(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableIntermezzoCams|natives.disableIntermezzoCams(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableLocalPlayerPickups|natives.disableLocalPlayerPickups(bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePauseMenu|natives.disablePauseMenu(bool disabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerAutoVehicleExit|natives.disablePlayerAutoVehicleExit(Ped ped, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerLockon|natives.disablePlayerLockon(Player playerIndex, bool disabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerSprint|natives.disablePlayerSprint(Player playerIndex, bool disabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePlayerVehicleEntry|natives.disablePlayerVehicleEntry(Player playerIndex, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disablePoliceScanner|natives.disablePoliceScanner(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.disableStickyBombActiveSound|natives.disableStickyBombActiveSound(Ped ped, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayAltimeterThisFrame|natives.displayAltimeterThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayAmmo|natives.displayAmmo(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayAreaName|natives.displayAreaName(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayCash|natives.displayCash(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayFrontendMapBlips|natives.displayFrontendMapBlips(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayGrimeThisFrame|natives.displayGrimeThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayHelpTextThisFrame|natives.displayHelpTextThisFrame(string gxtkey, bool Unk636) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayHud|natives.displayHud(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayLoadingThisFrameWithScriptSprites|natives.displayLoadingThisFrameWithScriptSprites(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayNonMinigameHelpMessages|natives.displayNonMinigameHelpMessages(bool Unk637) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayNthOnscreenCounterWithString|natives.displayNthOnscreenCounterWithString(int Unk638, int Unk639, int Unk640, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayOnscreenTimerWithString|natives.displayOnscreenTimerWithString(int timerid, bool Unk641, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayPlayerNames|natives.displayPlayerNames(bool bDisplay) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayRadar|natives.displayRadar(bool display) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displaySniperScopeThisFrame|natives.displaySniperScopeThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWith2Numbers|natives.displayTextWith2Numbers(Vec2 x, string gxtName, int number1, int number2, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWith3Numbers|natives.displayTextWith3Numbers(Vec2 x, string gxtentry, int Unk649, int Unk650, int Unk651, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithBlipName|natives.displayTextWithBlipName(Vec2 x, string str, int blip, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithFloat|natives.displayTextWithFloat(Vec2 x, string gxtName, float value, uint unknown, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithLiteralString|natives.displayTextWithLiteralString(Vec2 x, string gxtName, string literalStr, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithNumber|natives.displayTextWithNumber(Vec2 x, string gxtName, int value, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithStringAndInt|natives.displayTextWithStringAndInt(Vec2 x, string gxtname, string gxtnamenext, int val, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithString|natives.displayTextWithString(Vec2 x, string gxtName, string gxtStringName, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithSubstringGivenHashKey|natives.displayTextWithSubstringGivenHashKey(Vec2 x, string gxtkey, uint gxtkey0, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithTwoLiteralStrings|natives.displayTextWithTwoLiteralStrings(Vec2 x, string gxtName, string literalStr1, string literalStr2, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithTwoStrings|natives.displayTextWithTwoStrings(Vec2 x, string gxtName, string gxtStringName1, string gxtStringName2, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayTextWithTwoSubstringsGivenHashKeys|natives.displayTextWithTwoSubstringsGivenHashKeys(Vec2 x, string gxtkey, uint gxtkey0, uint gxtkey1, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.displayText|natives.displayText(Vec2 x, string gxtName, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doAutoSave|natives.doAutoSave(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeInUnhacked|natives.doScreenFadeInUnhacked(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeIn|natives.doScreenFadeIn(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeOutUnhacked|natives.doScreenFadeOutUnhacked(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doScreenFadeOut|natives.doScreenFadeOut(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesBlipExist|natives.doesBlipExist(int blip) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCamExist|natives.doesCamExist(int camera) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCarHaveHydraulics|natives.doesCarHaveHydraulics(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCarHaveRoof|natives.doesCarHaveRoof(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCarHaveStuckCarCheck|natives.doesCarHaveStuckCarCheck(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesCharExist|natives.doesCharExist(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesDecisionMakerExist|natives.doesDecisionMakerExist(int dm) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesGameCodeWantToLeaveNetworkSession|natives.doesGameCodeWantToLeaveNetworkSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesGroupExist|natives.doesGroupExist(int group) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectExistWithNetworkId|natives.doesObjectExistWithNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectExist|natives.doesObjectExist(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectHavePhysics|natives.doesObjectHavePhysics(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectHaveThisModel|natives.doesObjectHaveThisModel(Object obj, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesObjectOfTypeExistAtCoords|natives.doesObjectOfTypeExistAtCoords(Vec3 x, float radius, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesPedExistWithNetworkId|natives.doesPedExistWithNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesPickupExist|natives.doesPickupExist(Pickup pickup) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesPlayerHaveControlOfNetworkId|natives.doesPlayerHaveControlOfNetworkId(Player playerIndex, int id) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesScriptExist|natives.doesScriptExist(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesScriptFireExist|natives.doesScriptFireExist(int fire) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesTextLabelExist|natives.doesTextLabelExist(string gxtentry) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesThisMinigameScriptAllowNonMinigameHelpMessages|natives.doesThisMinigameScriptAllowNonMinigameHelpMessages(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesVehicleExistWithNetworkId|natives.doesVehicleExistWithNetworkId(int nedid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesVehicleExist|natives.doesVehicleExist(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesViewportExist|natives.doesViewportExist(int viewportid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.doesWebPageExist|natives.doesWebPageExist(string webaddress) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontAbortCarConversations|natives.dontAbortCarConversations(bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontDispatchCopsForPlayer|natives.dontDispatchCopsForPlayer(Player playerIndex, bool dont) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontDisplayLoadingOnFadeThisFrame|natives.dontDisplayLoadingOnFadeThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontRemoveChar|natives.dontRemoveChar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontRemoveObject|natives.dontRemoveObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressAnyCarModels|natives.dontSuppressAnyCarModels(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressAnyPedModels|natives.dontSuppressAnyPedModels(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressCarModel|natives.dontSuppressCarModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dontSuppressPedModel|natives.dontSuppressPedModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCheckpointWithAlpha|natives.drawCheckpointWithAlpha(Vec3 x, float radius, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCheckpoint|natives.drawCheckpoint(Vec3 x, float radius, int r, int g, int b) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawColouredCylinder|natives.drawColouredCylinder(Vec3 x, float Unk712, float Unk713, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCurvedWindowNotext|natives.drawCurvedWindowNotext(float Unk723, float Unk724, float Unk725, float Unk726, int Unk727) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCurvedWindowText|natives.drawCurvedWindowText(float Unk728, float Unk729, float Unk730, int Unk731, int Unk732, string str0, string str1, int Unk733) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawCurvedWindow|natives.drawCurvedWindow(float Unk719, float Unk720, float Unk721, float Unk722, uint alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawDebugSphere|natives.drawDebugSphere(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawFrontendHelperText|natives.drawFrontendHelperText(string str0, string str1, bool Unk734) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawLightWithRange|natives.drawLightWithRange(Vec3 x, int r, int g, int b, float width, float height) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawMovie|natives.drawMovie(float Unk735, float Unk736, float Unk737, float Unk738, float Unk739, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawRect|natives.drawRect(Vec2 x1, Vec2 x2, uint r, uint g, uint b, uint a, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSphere|natives.drawSphere(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteFrontBuff|natives.drawSpriteFrontBuff(Vec2 x0, Vec2 x1, float rotation, int r, int g, int b, int a, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpritePhoto|natives.drawSpritePhoto(Vec2 x0, Vec2 x1, float rotation, int r, int g, int b, int a, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteWithFixedRotation|natives.drawSpriteWithFixedRotation(uint texture, float Unk744, float Unk745, float Unk746, float Unk747, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteWithUvCoords|natives.drawSpriteWithUvCoords(uint texture, float Unk752, float Unk753, float Unk754, float Unk755, float Unk756, float Unk757, float Unk758, float Unk759, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSpriteWithUv|natives.drawSpriteWithUv(uint texture, float Unk748, float Unk749, float Unk750, float Unk751, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawSprite|natives.drawSprite(uint texture, float Unk740, float Unk741, float Unk742, float Unk743, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawToplevelSprite|natives.drawToplevelSprite(uint texture, float Unk760, float Unk761, float Unk762, float Unk763, float angle, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawWindowText|natives.drawWindowText(float Unk768, float Unk769, float Unk770, int Unk771, string str0, int Unk772) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.drawWindow|natives.drawWindow(float Unk764, float Unk765, float Unk766, float Unk767, string str, uint alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.dropObject|natives.dropObject(Ped ped, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableAllPedHelmets|natives.enableAllPedHelmets(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableCamCollision|natives.enableCamCollision(int cam, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableChaseAudio|natives.enableChaseAudio(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableDebugCam|natives.enableDebugCam(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableDeferredLighting|natives.enableDeferredLighting(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableDisabledAttractorsOnObject|natives.enableDisabledAttractorsOnObject(Object obj, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableEndCreditsFade|natives.enableEndCreditsFade(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableFancyWater|natives.enableFancyWater(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableFovLodMultiplier|natives.enableFovLodMultiplier(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableFrontendRadio|natives.enableFrontendRadio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableGpsInVehicle|natives.enableGpsInVehicle(Vehicle veh, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableMaxAmmoCap|natives.enableMaxAmmoCap(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enablePedHelmet|natives.enablePedHelmet(Ped ped, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enablePoliceScanner|natives.enablePoliceScanner(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableSaveHouse|natives.enableSaveHouse(uint savehouse, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableSceneStreaming|natives.enableSceneStreaming(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableScriptControlledMicrophone|natives.enableScriptControlledMicrophone(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.enableShadows|natives.enableShadows(bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.endCamCommands|natives.endCamCommands([output] int Unk558) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.endCharSearchCriteria|natives.endCharSearchCriteria(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.endWidgetGroup|natives.endWidgetGroup(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.evolvePtfx|natives.evolvePtfx(uint ptfx, string evolvetype, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCarInCutsceneShakeAndBit|natives.explodeCarInCutsceneShakeAndBit(Vehicle car, bool flag0, bool flag1, bool flag2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCarInCutscene|natives.explodeCarInCutscene(Vehicle car, bool explode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCar|natives.explodeCar(Vehicle vehicle, bool unknownTrue, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.explodeCharHead|natives.explodeCharHead(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.exp|natives.exp(float Unk1084) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishCarFire|natives.extinguishCarFire(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishCharFire|natives.extinguishCharFire(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishFireAtPoint|natives.extinguishFireAtPoint(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.extinguishObjectFire|natives.extinguishObjectFire(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.failKillFrenzy|natives.failKillFrenzy(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fakeDeatharrest|natives.fakeDeatharrest(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findMaxNumberOfGroupMembers|natives.findMaxNumberOfGroupMembers(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findNearestCollectableBinBags|natives.findNearestCollectableBinBags(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findNearestEntitiesWithSpecialAttribute|natives.findNearestEntitiesWithSpecialAttribute(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findNetworkKillerOfPlayer|natives.findNetworkKillerOfPlayer(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findPositionInRecording|natives.findPositionInRecording(Vehicle car) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findPrimaryPopulationZoneGroup|natives.findPrimaryPopulationZoneGroup([output] int groupparam0, [output] int groupparam1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findStaticEmitterIndex|natives.findStaticEmitterIndex(string StaticEmitterName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findStreetNameAtPosition|natives.findStreetNameAtPosition(float pX, float pY, float pZ, [output] uint strHash0, [output] uint strHash1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findTimePositionInRecording|natives.findTimePositionInRecording(Vehicle car) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.findTrainDirection|natives.findTrainDirection(Vehicle train) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.finishStreamingRequestList|natives.finishStreamingRequestList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.firePedWeapon|natives.firePedWeapon(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fireSingleBullet|natives.fireSingleBullet(Vec3 x, float targetX, float targetY, float targetZ, uint unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixAmbienceOrientation|natives.fixAmbienceOrientation(bool fix) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixCarTyre|natives.fixCarTyre(Vehicle vehicle, uint tyre) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixCar|natives.fixCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.fixScriptMicToCurrentPosisition|natives.fixScriptMicToCurrentPosisition(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashBlipAlt|natives.flashBlipAlt(int blip, bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashBlip|natives.flashBlip(int blip, bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashRadar|natives.flashRadar(bool flash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashRoute|natives.flashRoute(bool flash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flashWeaponIcon|natives.flashWeaponIcon(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.floor|natives.floor(float value) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushAllOutOfDateRadarBlipsFromMissionCleanupList|natives.flushAllOutOfDateRadarBlipsFromMissionCleanupList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushAllPlayerRespawnCoords|natives.flushAllPlayerRespawnCoords(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushAllSpawnBlockingAreas|natives.flushAllSpawnBlockingAreas(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushCoverBlockingAreas|natives.flushCoverBlockingAreas(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushPatrolRoute|natives.flushPatrolRoute(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.flushScenarioBlockingAreas|natives.flushScenarioBlockingAreas(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceAirDragMultForPlayersCar|natives.forceAirDragMultForPlayersCar(Player playerIndex, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceAllVehicleLightsOff|natives.forceAllVehicleLightsOff(bool off) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceCarLights|natives.forceCarLights(Vehicle car, int lights) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceCharToDropWeapon|natives.forceCharToDropWeapon(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceFullVoice|natives.forceFullVoice(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceGameTelescopeCam|natives.forceGameTelescopeCam(bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceGenerateParkedCarsTooCloseToOthers|natives.forceGenerateParkedCarsTooCloseToOthers(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceHighLod|natives.forceHighLod(bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceInitialPlayerStation|natives.forceInitialPlayerStation(string stationName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceInteriorLightingForPlayer|natives.forceInteriorLightingForPlayer(Player playerIndex, bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceLoadingScreen|natives.forceLoadingScreen(bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceNoCamPause|natives.forceNoCamPause(bool foce) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceNoiseOff|natives.forceNoiseOff(bool off) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePedPinnedDown|natives.forcePedPinnedDown(Ped ped, bool force, uint timerMaybe) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePedToFleeWhilstDrivingVehicle|natives.forcePedToFleeWhilstDrivingVehicle(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePedToLoadCover|natives.forcePedToLoadCover(Ped ped, bool force) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forcePopulationInit|natives.forcePopulationInit(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceRadioTrack|natives.forceRadioTrack(string radiostation, string trackname, int Unk533, int Unk534) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceRandomCarModel|natives.forceRandomCarModel(uint hash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceRandomPedType|natives.forceRandomPedType(uint type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceSpawnScenarioPedsInArea|natives.forceSpawnScenarioPedsInArea(Vec3 x, float radius, int Unk41) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceTimeOfDay|natives.forceTimeOfDay(uint hour, uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceWeatherNow|natives.forceWeatherNow(uint weather) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceWeather|natives.forceWeather(uint weather) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forceWind|natives.forceWind(float wind) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.forwardToTimeOfDay|natives.forwardToTimeOfDay(uint hour, uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCarPositionAndDontLoadCollision|natives.freezeCarPositionAndDontLoadCollision(Vehicle vehicle, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCarPosition|natives.freezeCarPosition(Vehicle vehicle, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCharPositionAndDontLoadCollision|natives.freezeCharPositionAndDontLoadCollision(Ped ped, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeCharPosition|natives.freezeCharPosition(Ped ped, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeObjectPositionAndDontLoadCollision|natives.freezeObjectPositionAndDontLoadCollision(Object obj, bool freeze) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeObjectPosition|natives.freezeObjectPosition(Object obj, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeObjectPosition|natives.freezeObjectPosition(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeOnscreenTimer|natives.freezeOnscreenTimer(bool freeze) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezePositionOfClosestObjectOfType|natives.freezePositionOfClosestObjectOfType(Vec3 x, float radius, uint model, bool frozen) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.freezeRadioStation|natives.freezeRadioStation(string stationName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateDirections|natives.generateDirections(Vec3 x, [output] int direction, [output] Vec3 Unk811) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomFloatInRange|natives.generateRandomFloatInRange(float min, float max, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomFloat|natives.generateRandomFloat([output] float Unk1086) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomIntInRange|natives.generateRandomIntInRange(uint min, uint max, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.generateRandomInt|natives.generateRandomInt([output] int Unk1087) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAcceptButton|natives.getAcceptButton(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAmmoInCharWeapon|natives.getAmmoInCharWeapon(Ped ped, uint weapon, [output] uint pAmmo) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAmmoInClip|natives.getAmmoInClip(Ped ped, uint weapon, [output] uint pAmmo) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAngleBetween2dVectors|natives.getAngleBetween2dVectors(Vec2 x1, Vec2 x2, [output] float pResult, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAnimGroupFromChar|natives.getAnimGroupFromChar(Ped ped) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAsciiJustPressed|natives.getAsciiJustPressed(int key, int Unk830) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAsciiPressed|natives.getAsciiPressed(int key, [output] int Unk820) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAspectRatio|natives.getAspectRatio(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAudibleMusicTrackTextId|natives.getAudibleMusicTrackTextId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getAudioRoomId|natives.getAudioRoomId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBitsInRange|natives.getBitsInRange(int val, int rangebegin, int rangeend) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipAlpha|natives.getBlipAlpha(int blip, [output] int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipColour|natives.getBlipColour(int blip, [output] int pColour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipCoords|natives.getBlipCoords(int blip, [output] Vec3 pVector) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdCarIndex|natives.getBlipInfoIdCarIndex(int blip) : Vehicle]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdDisplay|natives.getBlipInfoIdDisplay(int blip) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdObjectIndex|natives.getBlipInfoIdObjectIndex(int blip) : Object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdPedIndex|natives.getBlipInfoIdPedIndex(int blip) : Ped]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdPickupIndex|natives.getBlipInfoIdPickupIndex(int blip) : Pickup]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdRotation|natives.getBlipInfoIdRotation(int blip) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipInfoIdType|natives.getBlipInfoIdType(int blip) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBlipSprite|natives.getBlipSprite(int blip) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getBufferedAscii|natives.getBufferedAscii(int key, [output] int Unk821) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamFarClip|natives.getCamFarClip(int cam, [output] float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamFarDof|natives.getCamFarDof(int cam, [output] float fardof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamFov|natives.getCamFov(int camera, [output] float fov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamMotionBlur|natives.getCamMotionBlur(int cam, [output] int blur) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamNearClip|natives.getCamNearClip(int cam, [output] float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamNearDof|natives.getCamNearDof(int cam, [output] float dof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamPos|natives.getCamPos(int camera, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamRot|natives.getCamRot(int camera, [output] float angleX, [output] float angleY, [output] float angleZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCamState|natives.getCamState(int cam) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCameraFromNetworkId|natives.getCameraFromNetworkId(int ned_id, [output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarAnimCurrentTime|natives.getCarAnimCurrentTime(Vehicle car, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarAnimTotalTime|natives.getCarAnimTotalTime(Vehicle car, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarBlockingCar|natives.getCarBlockingCar(Vehicle car0, [output] Vehicle car1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarCharIsUsing|natives.getCarCharIsUsing(Ped ped, [output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarColours|natives.getCarColours(Vehicle vehicle, [output] int pColour1, [output] int pColour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarCoordinates|natives.getCarCoordinates(Vehicle vehicle, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarDeformationAtPos|natives.getCarDeformationAtPos(Vehicle vehicle, Vec3 x, [output] Vec3 pDeformation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarDoorLockStatus|natives.getCarDoorLockStatus(Vehicle vehicle, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarForwardVector|natives.getCarForwardVector(Vehicle car, [output] Vec3 vec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarForwardX|natives.getCarForwardX(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarForwardY|natives.getCarForwardY(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarHeading|natives.getCarHeading(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarHealth|natives.getCarHealth(Vehicle vehicle, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarLivery|natives.getCarLivery(Vehicle car, [output] int livery) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarMass|natives.getCarMass(Vehicle car, [output] float mass) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarModelValue|natives.getCarModelValue(Vehicle car, [output] int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarModel|natives.getCarModel(Vehicle vehicle, [output] uint pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarObjectIsAttachedTo|natives.getCarObjectIsAttachedTo(Object obj) : Vehicle]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarPitch|natives.getCarPitch(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarRoll|natives.getCarRoll(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarSirenHealth|natives.getCarSirenHealth(Vehicle car) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarSpeedVector|natives.getCarSpeedVector(Vehicle vehicle, [output] Vec3 pVector, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarSpeed|natives.getCarSpeed(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCarUprightValue|natives.getCarUprightValue(Vehicle vehicle, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCellphoneRanked|natives.getCellphoneRanked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAllowedToRunOnBoats|natives.getCharAllowedToRunOnBoats(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimBlendAmount|natives.getCharAnimBlendAmount(Ped ped, string AnimName0, string AnimName1, [output] float amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimCurrentTime|natives.getCharAnimCurrentTime(Ped ped, string animGroup, string animName, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimIsEvent|natives.getCharAnimIsEvent(Ped ped, string AnimName0, string AnimName1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharAnimTotalTime|natives.getCharAnimTotalTime(Ped ped, string animGroup, string animName, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharArmour|natives.getCharArmour(Ped ped, [output] uint pArmour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharCoordinates|natives.getCharCoordinates(Ped ped, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharDrawableVariation|natives.getCharDrawableVariation(Ped ped, uint component) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharExtractedDisplacement|natives.getCharExtractedDisplacement(Ped ped, bool unknown, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharExtractedVelocity|natives.getCharExtractedVelocity(Ped ped, bool Unk5, [output] Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharGravity|natives.getCharGravity(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHeading|natives.getCharHeading(Ped ped, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHealth|natives.getCharHealth(Ped ped, [output] uint pHealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHeightAboveGround|natives.getCharHeightAboveGround(Ped ped, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharHighestPriorityEvent|natives.getCharHighestPriorityEvent(Ped ped, [output] int event) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharInCarPassengerSeat|natives.getCharInCarPassengerSeat(Vehicle vehicle, uint seatIndex, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMaxMoveBlendRatio|natives.getCharMaxMoveBlendRatio(Ped ped) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMeleeActionFlag0|natives.getCharMeleeActionFlag0(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMeleeActionFlag1|natives.getCharMeleeActionFlag1(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMeleeActionFlag2|natives.getCharMeleeActionFlag2(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharModel|natives.getCharModel(Ped ped, [output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMoney|natives.getCharMoney(Ped ped) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMoveAnimSpeedMultiplier|natives.getCharMoveAnimSpeedMultiplier(Ped ped, [output] float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharMovementAnimsBlocked|natives.getCharMovementAnimsBlocked(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharPropIndex|natives.getCharPropIndex(Ped ped, bool unknown, [output] uint pIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharReadyToBeExecuted|natives.getCharReadyToBeExecuted(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharReadyToBeStunned|natives.getCharReadyToBeStunned(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharSpeed|natives.getCharSpeed(Ped ped, [output] float pValue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharSwimState|natives.getCharSwimState(Ped ped, [output] int state) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharTextureVariation|natives.getCharTextureVariation(Ped ped, uint component) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharVelocity|natives.getCharVelocity(Ped ped, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWalkAlongsideLeaderWhenAppropriate|natives.getCharWalkAlongsideLeaderWhenAppropriate(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWeaponInSlot|natives.getCharWeaponInSlot(Ped ped, uint slot, [output] uint pWeapon, [output] uint pAmmo0, [output] uint pAmmo1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWillCowerInsteadOfFleeing|natives.getCharWillCowerInsteadOfFleeing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWillTryToLeaveBoatAfterLeader|natives.getCharWillTryToLeaveBoatAfterLeader(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCharWillTryToLeaveWater|natives.getCharWillTryToLeaveWater(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCinematicCam|natives.getCinematicCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCarNodeFavourDirection|natives.getClosestCarNodeFavourDirection(int Unk802, Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCarNodeWithHeading|natives.getClosestCarNodeWithHeading(Vec3 x, [output] float pResX, [output] float pResY, [output] float pResZ, [output] float pHeading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCarNode|natives.getClosestCarNode(Vec3 x, [output] float pResX, [output] float pResY, [output] float pResZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestCar|natives.getClosestCar(Vec3 x, float radius, bool unknownFalse, uint unknown70) : Vehicle]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestChar|natives.getClosestChar(Vec3 x, float radius, bool unknown1, bool unknown2, [output] Ped pPed) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestMajorCarNode|natives.getClosestMajorCarNode(Vec3 x, [output] float pResX, [output] float pResY, [output] float pResZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestRoad|natives.getClosestRoad(Vec3 x, float Unk803, int Unk804, [output] Vec3 Unk805, [output] Vec3 Unk806, [output] float Unk807, [output] float Unk808, [output] float Unk809) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getClosestStealableObject|natives.getClosestStealableObject(Vec3 x, float radius, [output] Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getConsoleCommandToken|natives.getConsoleCommandToken(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getControlValue|natives.getControlValue(int Unk831, int controlid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCoordinatesForNetworkRestartNode|natives.getCoordinatesForNetworkRestartNode(int i, [output] Vec3 pos, [output] float pHeading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCorrectedColour|natives.getCorrectedColour(uint r, uint g, uint b, [output] uint pR, [output] uint pG, [output] uint pB) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCreateRandomCops|natives.getCreateRandomCops(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentBasicCopModel|natives.getCurrentBasicCopModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentBasicPoliceCarModel|natives.getCurrentBasicPoliceCarModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentCharWeapon|natives.getCurrentCharWeapon(Ped ped, [output] uint pWeapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentCopModel|natives.getCurrentCopModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentDate|natives.getCurrentDate([output] uint day, [output] uint month) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentDayOfWeek|natives.getCurrentDayOfWeek(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentEpisode|natives.getCurrentEpisode(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentLanguage|natives.getCurrentLanguage(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentPlaybackNumberForCar|natives.getCurrentPlaybackNumberForCar(Vehicle car) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentPoliceCarModel|natives.getCurrentPoliceCarModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentPopulationZoneType|natives.getCurrentPopulationZoneType(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentScriptedConversationLine|natives.getCurrentScriptedConversationLine(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentStackSize|natives.getCurrentStackSize(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentStationForTrain|natives.getCurrentStationForTrain(int train) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentTaxiCarModel|natives.getCurrentTaxiCarModel([output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentWeatherFull|natives.getCurrentWeatherFull([output] int weatherparam0, [output] int weatherparam1, [output] int weatherparam2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentWeather|natives.getCurrentWeather([output] uint pWeather) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCurrentZoneScumminess|natives.getCurrentZoneScumminess(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutsceneAudioTimeMs|natives.getCutsceneAudioTimeMs(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutscenePedPosition|natives.getCutscenePedPosition(int unkped, [output] Vec3 pos) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutsceneSectionPlaying|natives.getCutsceneSectionPlaying(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getCutsceneTime|natives.getCutsceneTime(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDamageToPedBodyPart|natives.getDamageToPedBodyPart(Ped ped, uint part) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDeadCarCoordinates|natives.getDeadCarCoordinates(Vehicle vehicle, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDeadCharPickupCoords|natives.getDeadCharPickupCoords(Ped ped, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDebugCam|natives.getDebugCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDestroyerOfNetworkId|natives.getDestroyerOfNetworkId(Player playerIndex, int id) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDisplayNameFromVehicleModel|natives.getDisplayNameFromVehicleModel(uint model) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDistanceBetweenCoords2d|natives.getDistanceBetweenCoords2d(Vec2 x1, Vec2 x2, [output] float pDist, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDistanceBetweenCoords3d|natives.getDistanceBetweenCoords3d(Vec3 x1, Vec3 x2, [output] float pDist) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDoorAngleRatio|natives.getDoorAngleRatio(Vehicle vehicle, uint door, [output] float pAngleRatio) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDoorState|natives.getDoorState(Object obj, [output] uint Unk92, [output] float Unk93) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getDriverOfCar|natives.getDriverOfCar(Vehicle vehicle, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getEngineHealth|natives.getEngineHealth(Vehicle vehicle) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getEpisodeIndexFromSummons|natives.getEpisodeIndexFromSummons(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getEpisodeName|natives.getEpisodeName(uint episodeIndex) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getExtraCarColours|natives.getExtraCarColours(Vehicle vehicle, [output] int pColour1, [output] int pColour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFilterMenuOn|natives.getFilterMenuOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFilterSaveSetting|natives.getFilterSaveSetting(int filterid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFirstBlipInfoId|natives.getFirstBlipInfoId(uint type) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFirstNCharactersOfLiteralString|natives.getFirstNCharactersOfLiteralString(string literalString, uint chars) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFirstNCharactersOfString|natives.getFirstNCharactersOfString(string gxtName, uint chars) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFloatStat|natives.getFloatStat(uint stat) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFollowVehicleCamSubmode|natives.getFollowVehicleCamSubmode([output] int mode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFragmentDamageHealthOfClosestObjectOfType|natives.getFragmentDamageHealthOfClosestObjectOfType(Vec3 x, float radius, uint Unk77, bool flag) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFrameCount|natives.getFrameCount(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFrameTime|natives.getFrameTime([output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFreeCam|natives.getFreeCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getFrontendDesignValue|natives.getFrontendDesignValue(int frontendid, [output] float Unk499, [output] float Unk500) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameCamChild|natives.getGameCamChild([output] int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameCam|natives.getGameCam([output] int camera) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameTimer|natives.getGameTimer([output] uint pTimer) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGameViewportId|natives.getGameViewportId([output] int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGamerNetworkScore|natives.getGamerNetworkScore(Player playerIndex, int Unk888, int Unk889) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGfwlHasSafeHouse|natives.getGfwlHasSafeHouse(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGfwlIsReturningToSinglePlayer|natives.getGfwlIsReturningToSinglePlayer(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupCharDucksWhenAimedAt|natives.getGroupCharDucksWhenAimedAt(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupFormationSpacing|natives.getGroupFormationSpacing(int group, [output] float spacing) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupFormation|natives.getGroupFormation(int group, [output] int formation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupLeader|natives.getGroupLeader(int group, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupMember|natives.getGroupMember(int group, uint index, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getGroupSize|natives.getGroupSize(int group, [output] uint pStartIndex, [output] uint pCount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHashKey|natives.getHashKey(string value) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHeadingFromVector2d|natives.getHeadingFromVector2d(Vec2 x, [output] float pHeading, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHeightOfVehicle|natives.getHeightOfVehicle(Vehicle vehicle, Vec3 x, bool unknownTrue1, bool unknownTrue2) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHelpMessageBoxSize|natives.getHelpMessageBoxSize([output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHostId|natives.getHostId(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHostMatchOn|natives.getHostMatchOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHoursOfDay|natives.getHoursOfDay(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getHudColour|natives.getHudColour(uint type, [output] uint pR, [output] uint pG, [output] uint pB, [output] uint pA) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIdOfThisThread|natives.getIdOfThisThread(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIntStat|natives.getIntStat(uint stat) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorAtCoords|natives.getInteriorAtCoords(Vec3 x, [output] int pInterior) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorFromCar|natives.getInteriorFromCar(Vehicle vehicle, [output] int pInterior) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorFromChar|natives.getInteriorFromChar(Ped ped, [output] int pInterior) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getInteriorHeading|natives.getInteriorHeading(int interior, [output] float pHeading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsAutosaveOff|natives.getIsAutosaveOff(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsDepositAnimRunning|natives.getIsDepositAnimRunning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsDisplayingsavemessage|natives.getIsDisplayingsavemessage(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsHidef|natives.getIsHidef(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsProjectileTypeInArea|natives.getIsProjectileTypeInArea(Vec3 x0, Vec3 x1, int type) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsStickyBombStuckToObject|natives.getIsStickyBombStuckToObject(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsStickyBombStuckToVehicle|natives.getIsStickyBombStuckToVehicle(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getIsWidescreen|natives.getIsWidescreen(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyForCarInRoom|natives.getKeyForCarInRoom(Vehicle vehicle, [output] uint pKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyForCharInRoom|natives.getKeyForCharInRoom(Ped ped, [output] uint pKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyForViewportInRoom|natives.getKeyForViewportInRoom(int viewportid, [output] int roomkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getKeyboardMoveInput|natives.getKeyboardMoveInput([output] int Unk832, [output] int Unk833) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLatestConsoleCommand|natives.getLatestConsoleCommand(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLeftPlayerCashToReachLevel|natives.getLeftPlayerCashToReachLevel(uint playerRank) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLengthOfLiteralString|natives.getLengthOfLiteralString(string literalString) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLengthOfStringWithThisHashKey|natives.getLengthOfStringWithThisHashKey(uint gxtkey) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLengthOfStringWithThisTextLabel|natives.getLengthOfStringWithThisTextLabel(string gxtName) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLevelDesignCoordsForObject|natives.getLevelDesignCoordsForObject(Object obj, int Unk78, [output] Vec3 x) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLineHeight|natives.getLineHeight(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLocalGamerlevelFromProfilesettings|natives.getLocalGamerlevelFromProfilesettings(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLocalPlayerMpCash|natives.getLocalPlayerMpCash(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getLocalPlayerWeaponStat|natives.getLocalPlayerWeaponStat(int wtype, int wid) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMapAreaFromCoords|natives.getMapAreaFromCoords(Vec3 x) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaxAmmoInClip|natives.getMaxAmmoInClip(Ped ped, uint weapon, [output] uint pMaxAmmo) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaxAmmo|natives.getMaxAmmo(Ped ped, uint weapon, [output] uint pMaxAmmo) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaxWantedLevel|natives.getMaxWantedLevel([output] uint pMaxWantedLevel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMaximumNumberOfPassengers|natives.getMaximumNumberOfPassengers(Vehicle vehicle, [output] uint pMax) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMenuItemAccepted|natives.getMenuItemAccepted(int menuid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMenuItemSelected|natives.getMenuItemSelected(int menuid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMenuPosition|natives.getMenuPosition(int menuid, [output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMinutesOfDay|natives.getMinutesOfDay(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMinutesToTimeOfDay|natives.getMinutesToTimeOfDay(uint hour, uint minute) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMissionFlag|natives.getMissionFlag(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMobilePhoneRenderId|natives.getMobilePhoneRenderId([output] uint pRenderId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMobilePhoneScale|natives.getMobilePhoneScale(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMobilePhoneTaskSubTask|natives.getMobilePhoneTaskSubTask(Ped ped, [output] int Unk798) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getModelDimensions|natives.getModelDimensions(uint model, [output] Vec3 pMinVector, [output] Vec3 pMaxVector) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getModelNameForDebug|natives.getModelNameForDebug(uint model) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getModelPedIsHolding|natives.getModelPedIsHolding(Ped ped) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMouseInput|natives.getMouseInput([output] int x, [output] int y) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMousePosition|natives.getMousePosition([output] int x, [output] int y) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMouseSensitivity|natives.getMouseSensitivity(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getMouseWheel|natives.getMouseWheel([output] int Unk834) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNameOfInfoZone|natives.getNameOfInfoZone(Vec3 x) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNameOfZone|natives.getNameOfZone(Vec3 x) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNavmeshRouteResult|natives.getNavmeshRouteResult(int navmesh) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNearestCableCar|natives.getNearestCableCar(Vec3 x, float radius, [output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkIdFromObject|natives.getNetworkIdFromObject(Object obj, [output] int netid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkIdFromPed|natives.getNetworkIdFromPed(Ped ped, [output] int netid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkIdFromVehicle|natives.getNetworkIdFromVehicle(Vehicle vehicle, [output] int netid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkJoinFail|natives.getNetworkJoinFail(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNetworkTimer|natives.getNetworkTimer([output] int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextBlipInfoId|natives.getNextBlipInfoId(uint type) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNodeFavourDirection|natives.getNextClosestCarNodeFavourDirection(Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float direction) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNodeWithHeadingOnIsland|natives.getNextClosestCarNodeWithHeadingOnIsland(Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNodeWithHeading|natives.getNextClosestCarNodeWithHeading(Vec3 x, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextClosestCarNode|natives.getNextClosestCarNode(Vec3 x, [output] float pX, [output] float pY, [output] float pZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNextStationForTrain|natives.getNextStationForTrain(int train) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNoLawVehiclesDestroyedByLocalPlayer|natives.getNoLawVehiclesDestroyedByLocalPlayer(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNoOfPlayersInTeam|natives.getNoOfPlayersInTeam(int team) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNodeFavourDirection|natives.getNthClosestCarNodeFavourDirection(int Unk810, Vec3 x, int n, [output] float pX, [output] float pY, [output] float pZ, [output] float direction) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNodeWithHeadingOnIsland|natives.getNthClosestCarNodeWithHeadingOnIsland(Vec3 x, uint nodeNum, uint areaId, [output] float pResX, [output] float pResY, [output] float pResZ, [output] float pHeading, [output] uint pUnknownMaybeAreaId) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNodeWithHeading|natives.getNthClosestCarNodeWithHeading(Vec3 x, uint nodeNum, [output] float pResX, [output] float pResY, [output] float pResZ, [output] float pHeading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestCarNode|natives.getNthClosestCarNode(Vec3 x, int n, [output] float pX, [output] float pY, [output] float pZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthClosestWaterNodeWithHeading|natives.getNthClosestWaterNodeWithHeading(Vec3 x, bool flag0, bool flag1, [output] Vec3 node, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthGroupMember|natives.getNthGroupMember(int group, int n, [output] Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNthIntegerInString|natives.getNthIntegerInString(string gxtName, uint index) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumCarColours|natives.getNumCarColours(Vehicle vehicle, [output] uint pNumColours) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumCarLiveries|natives.getNumCarLiveries(Vehicle car, [output] int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumOfModelsKilledByPlayer|natives.getNumOfModelsKilledByPlayer(Player playerIndex, uint model, [output] int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumStreamingRequests|natives.getNumStreamingRequests(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberLinesWithLiteralStrings|natives.getNumberLinesWithLiteralStrings(float Unk705, float Unk706, string str1, string str2, string str3) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberLinesWithSubstrings|natives.getNumberLinesWithSubstrings(float Unk707, float Unk708, string str1, string str2, string str3) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberLines|natives.getNumberLines(float Unk703, float Unk704, string str) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfActiveStickyBombsOwnedByPed|natives.getNumberOfActiveStickyBombsOwnedByPed(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfCharDrawableVariations|natives.getNumberOfCharDrawableVariations(Ped ped, uint component) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfCharTextureVariations|natives.getNumberOfCharTextureVariations(Ped ped, uint component, uint unknown1) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfFiresInArea|natives.getNumberOfFiresInArea(Vec3 x0, Vec3 x1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfFiresInRange|natives.getNumberOfFiresInRange(Vec3 x, float radius) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfFollowers|natives.getNumberOfFollowers(Ped ped, [output] int followers) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfInjuredPedsInRange|natives.getNumberOfInjuredPedsInRange(Vec3 x, float radius) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfInstancesOfStreamedScript|natives.getNumberOfInstancesOfStreamedScript(string scriptName) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfPassengers|natives.getNumberOfPassengers(Vehicle vehicle, [output] uint pNumPassengers) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfPlayers|natives.getNumberOfPlayers(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfStickyBombsStuckToObject|natives.getNumberOfStickyBombsStuckToObject(Object obj) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfStickyBombsStuckToVehicle|natives.getNumberOfStickyBombsStuckToVehicle(Vehicle veh) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getNumberOfWebPageLinks|natives.getNumberOfWebPageLinks(int htmlviewport) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectAnimCurrentTime|natives.getObjectAnimCurrentTime(Object obj, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectAnimTotalTime|natives.getObjectAnimTotalTime(Object obj, string animname0, string animname1, [output] float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectCoordinates|natives.getObjectCoordinates(Object obj, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectFragmentDamageHealth|natives.getObjectFragmentDamageHealth(Object obj, bool unknown) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectFromNetworkId|natives.getObjectFromNetworkId(int netid, [output] Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectHeading|natives.getObjectHeading(Object obj, [output] float pHeading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectHealth|natives.getObjectHealth(Object obj, [output] float pHealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectMass|natives.getObjectMass(Object obj, [output] float mass) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectModel|natives.getObjectModel(Object obj, [output] uint pModel) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectPedIsHolding|natives.getObjectPedIsHolding(Ped ped) : Object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectQuaternion|natives.getObjectQuaternion(Object obj, [output] Vec3 qx, [output] float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectRotationVelocity|natives.getObjectRotationVelocity(Object obj, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectSpeed|natives.getObjectSpeed(Object obj, [output] float pSpeed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectTurnMass|natives.getObjectTurnMass(Object obj, [output] float turnmass) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getObjectVelocity|natives.getObjectVelocity(Object obj, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromCarGivenWorldCoords|natives.getOffsetFromCarGivenWorldCoords(Vehicle vehicle, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromCarInWorldCoords|natives.getOffsetFromCarInWorldCoords(Vehicle vehicle, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromCharInWorldCoords|natives.getOffsetFromCharInWorldCoords(Ped ped, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromInteriorInWorldCoords|natives.getOffsetFromInteriorInWorldCoords(int interior, Vec3 x, [output] float pOffset) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetFromObjectInWorldCoords|natives.getOffsetFromObjectInWorldCoords(Object obj, Vec3 x, [output] float pOffX, [output] float pOffY, [output] float pOffZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOffsetsForAttachCarToCar|natives.getOffsetsForAttachCarToCar(Vehicle car0, Vehicle car1, [output] Vec3 Unk67, [output] Vec3 Unk68) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOnlineLan|natives.getOnlineLan(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getOnlineScore|natives.getOnlineScore(int Unk887) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPadPitchRoll|natives.getPadPitchRoll(uint padIndex, [output] float pPitch, [output] float pRoll) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPadState|natives.getPadState(int Unk835, int Unk836, [output] int Unk837) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedBonePosition|natives.getPedBonePosition(Ped ped, uint bone, Vec3 x, [output] Vec3 pPosition) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedClimbState|natives.getPedClimbState(Ped ped) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedFromNetworkId|natives.getPedFromNetworkId(int netid, [output] Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedGroupIndex|natives.getPedGroupIndex(Ped ped, [output] uint pIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedModelFromIndex|natives.getPedModelFromIndex(int index) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedObjectIsAttachedTo|natives.getPedObjectIsAttachedTo(Object obj) : Ped]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathMayDropFromHeight|natives.getPedPathMayDropFromHeight(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathMayUseClimbovers|natives.getPedPathMayUseClimbovers(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathMayUseLadders|natives.getPedPathMayUseLadders(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedPathWillAvoidDynamicObjects|natives.getPedPathWillAvoidDynamicObjects(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedSteersAroundObjects|natives.getPedSteersAroundObjects(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedSteersAroundPeds|natives.getPedSteersAroundPeds(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPedType|natives.getPedType(Ped ped, [output] uint pType) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPetrolTankHealth|natives.getPetrolTankHealth(Vehicle vehicle) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPhysicalScreenResolution|natives.getPhysicalScreenResolution([output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPickupCoordinates|natives.getPickupCoordinates(Pickup pickup, [output] float pX, [output] float pY, [output] float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlaneUndercarriagePosition|natives.getPlaneUndercarriagePosition(Vehicle plane, [output] float pos) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerChar|natives.getPlayerChar(Player playerIndex, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerColour|natives.getPlayerColour(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerGroup|natives.getPlayerGroup(Player playerIndex, [output] int pGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerHasTracks|natives.getPlayerHasTracks(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerIdForThisPed|natives.getPlayerIdForThisPed(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerId|natives.getPlayerId(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerMaxArmour|natives.getPlayerMaxArmour(Player playerIndex, [output] uint pMaxArmour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerMaxHealth|natives.getPlayerMaxHealth(Player playerIndex, [output] int maxhealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerName|natives.getPlayerName(Player playerIndex) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioMode|natives.getPlayerRadioMode(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationIndex|natives.getPlayerRadioStationIndex(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationNameRoll|natives.getPlayerRadioStationNameRoll(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationName|natives.getPlayerRadioStationName(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRadioStationName|natives.getPlayerRadioStationName(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRankLevelDuringMp|natives.getPlayerRankLevelDuringMp(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerRgbColour|natives.getPlayerRgbColour(Player playerIndex, [output] int r, [output] int g, [output] int b) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerTeam|natives.getPlayerTeam(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayerWantedLevelIncrement|natives.getPlayerWantedLevelIncrement(Player playerIndex, [output] int increment) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayersLastCarNoSave|natives.getPlayersLastCarNoSave([output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPlayersettingsModelChoice|natives.getPlayersettingsModelChoice(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPositionOfAnalogueSticks|natives.getPositionOfAnalogueSticks(uint padIndex, [output] int pLeftX, [output] int pLeftY, [output] int pRightX, [output] int pRightY) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getPositionOfCarRecordingAtTime|natives.getPositionOfCarRecordingAtTime(int CarRec, float time, [output] float pos) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getProfileSetting|natives.getProfileSetting(int settingid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getProgressPercentage|natives.getProgressPercentage(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRadarViewportId|natives.getRadarViewportId([output] int viewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRadioName|natives.getRadioName(int id) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarBackBumperInSphere|natives.getRandomCarBackBumperInSphere(Vec3 x, float radius, int Unk812, int Unk813, [output] Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarFrontBumperInSphereNoSave|natives.getRandomCarFrontBumperInSphereNoSave(Vec3 x, float radius, bool flag0, bool flag1, [output] int handle, bool flag2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarInSphereNoSave|natives.getRandomCarInSphereNoSave(Vec3 x, float radius, uint model, bool flag, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarInSphere|natives.getRandomCarInSphere(Vec3 x, float radius, uint model, int Unk814, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarModelInMemory|natives.getRandomCarModelInMemory(bool MustIncludeSpecialModels, [output] uint pHash, [output] int pErrorId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarNodeIncludeSwitchedOffNodes|natives.getRandomCarNodeIncludeSwitchedOffNodes(Vec3 x, float radius, bool flag0, bool flag1, bool flag2, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarNode|natives.getRandomCarNode(Vec3 x, float radius, bool flag0, bool flag1, bool flag2, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarOfTypeInAngledAreaNoSave|natives.getRandomCarOfTypeInAngledAreaNoSave(float Unk815, float Unk816, float Unk817, float Unk818, float Unk819, uint type, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCarOfTypeInAreaNoSave|natives.getRandomCarOfTypeInAreaNoSave(Vec2 x0, Vec2 x1, uint model, [output] Vehicle car, unknownType unknownArg1, unknownType unknownArg2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomCharInAreaOffsetNoSave|natives.getRandomCharInAreaOffsetNoSave(Vec3 x, Vec3 sx, [output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRandomWaterNode|natives.getRandomWaterNode(Vec3 x, float radius, bool flag0, bool flag1, bool flag2, bool flag3, [output] float pX, [output] float pY, [output] float pZ, [output] float heading) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getReturnToFilterMenu|natives.getReturnToFilterMenu(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRoomKeyFromObject|natives.getRoomKeyFromObject(Object obj, [output] uint pRoomKey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRoomKeyFromPickup|natives.getRoomKeyFromPickup(int pickup, [output] uint hash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRootCam|natives.getRootCam([output] int rootcam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getRouteSize|natives.getRouteSize(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSafePickupCoords|natives.getSafePickupCoords(Vec3 x, [output] float pSafeX, [output] float pSafeY, [output] float pSafeZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSafePositionForChar|natives.getSafePositionForChar(Vec3 x, bool unknownTrue, [output] float pSafeX, [output] float pSafeY, [output] float pSafeZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScreenFadeAlpha|natives.getScreenFadeAlpha(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScreenResolution|natives.getScreenResolution([output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScreenViewportId|natives.getScreenViewportId([output] int viewportid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptCam|natives.getScriptCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptDrawCam|natives.getScriptDrawCam([output] int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptFireCoords|natives.getScriptFireCoords(int fire, [output] Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptRendertargetRenderId|natives.getScriptRendertargetRenderId([output] uint pRenderId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getScriptTaskStatus|natives.getScriptTaskStatus(Ped ped, int task, [output] int status) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSequenceProgress|natives.getSequenceProgress(int seq, [output] int progress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getServerId|natives.getServerId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSimpleBlipId|natives.getSimpleBlipId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSoundId|natives.getSoundId(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSoundLevelAtCoords|natives.getSoundLevelAtCoords(Ped ped, Vec3 x, [output] int level) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getSpeechForEmergencyServiceCall|natives.getSpeechForEmergencyServiceCall(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStartFromFilterMenu|natives.getStartFromFilterMenu(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStatFrontendDisplayType|natives.getStatFrontendDisplayType(int stat) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStatFrontendVisibility|natives.getStatFrontendVisibility(int stat) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStateOfClosestDoorOfType|natives.getStateOfClosestDoorOfType(uint model, Vec3 x, [output] int state, [output] float Unk94) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStaticEmitterPlaytime|natives.getStaticEmitterPlaytime(int StaticEmitterIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStationName|natives.getStationName(int train, uint station) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStreamBeatInfo|natives.getStreamBeatInfo([output] int Unk501, [output] int Unk502, [output] int Unk503) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStreamPlaytime|natives.getStreamPlaytime(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringFromHashKey|natives.getStringFromHashKey(uint hash) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringFromString|natives.getStringFromString(string str, int startsymb, int endsymb) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringFromTextFile|natives.getStringFromTextFile(string gxtentry) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidthWithNumber|natives.getStringWidthWithNumber(string gxtName, int number) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidthWithString|natives.getStringWidthWithString(string gxtName, string literalString) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidthWithTextAndInt|natives.getStringWidthWithTextAndInt(string gxtname, string gxtnamenext, int val) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getStringWidth|natives.getStringWidth(string gxtName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTaskPlaceCarBombUnsuccessful|natives.getTaskPlaceCarBombUnsuccessful(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTeamRgbColour|natives.getTeamRgbColour(int team, [output] int R, [output] int G, [output] int B) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTextInputActive|natives.getTextInputActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTextureFromStreamedTxd|natives.getTextureFromStreamedTxd(string txdName, string textureName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTextureResolution|natives.getTextureResolution(uint texture, [output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTexture|natives.getTexture(int dictionary, string textureName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeOfDay|natives.getTimeOfDay([output] uint hour, [output] uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSinceLastArrest|natives.getTimeSinceLastArrest(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSinceLastDeath|natives.getTimeSinceLastDeath(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerDroveAgainstTraffic|natives.getTimeSincePlayerDroveAgainstTraffic(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerDroveOnPavement|natives.getTimeSincePlayerDroveOnPavement(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitBuilding|natives.getTimeSincePlayerHitBuilding(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitCar|natives.getTimeSincePlayerHitCar(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitObject|natives.getTimeSincePlayerHitObject(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerHitPed|natives.getTimeSincePlayerHitPed(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeSincePlayerRanLight|natives.getTimeSincePlayerRanLight(Player playerIndex) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTimeTilNextStation|natives.getTimeTilNextStation(Vehicle train) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTotalDurationOfCarRecording|natives.getTotalDurationOfCarRecording(int CarRec) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTotalNumberOfStats|natives.getTotalNumberOfStats(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTrainCaboose|natives.getTrainCaboose(Vehicle train, [output] Vehicle caboose) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTrainCarriage|natives.getTrainCarriage(Vehicle train, int num, [output] Vehicle carriage) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTrainPlayerWouldEnter|natives.getTrainPlayerWouldEnter(Player playerIndex, [output] int train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getTxd|natives.getTxd(string txdName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleComponentInfo|natives.getVehicleComponentInfo(Vehicle veh, int component_id, [output] Vec3 Unk45, [output] Vec3 Unk46, [output] int Unk47, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleDirtLevel|natives.getVehicleDirtLevel(Vehicle vehicle, [output] float pIntensity) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleEngineRevs|natives.getVehicleEngineRevs(Vehicle veh) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleFromNetworkId|natives.getVehicleFromNetworkId(int netid, [output] Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleGear|natives.getVehicleGear(Vehicle veh) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleModelFromIndex|natives.getVehicleModelFromIndex(int index) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehiclePlayerWouldEnter|natives.getVehiclePlayerWouldEnter(Player playerIndex, [output] Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleQuaternion|natives.getVehicleQuaternion(Vehicle veh, [output] Vec3 qx, [output] float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getVehicleTypeOfModel|natives.getVehicleTypeOfModel(uint model) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getViewportPosAndSize|natives.getViewportPosAndSize(int viewportid, [output] Vec3 x, [output] float ysize) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getViewportPositionOfCoord|natives.getViewportPositionOfCoord(Vec3 x, int viewportid, [output] Vec2 vx, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWaterHeightNoWaves|natives.getWaterHeightNoWaves(Vec3 x, [output] float height) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWaterHeight|natives.getWaterHeight(Vec3 x, [output] float pheight) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWeapontypeModel|natives.getWeapontypeModel(int weapontype, [output] uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWeapontypeSlot|natives.getWeapontypeSlot(int weapon, [output] int slot) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageHeight|natives.getWebPageHeight(int htmlviewport) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageLinkAtPosn|natives.getWebPageLinkAtPosn(int htmlviewport, Vec2 x, unknownType unknownArg1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageLinkHref|natives.getWebPageLinkHref(int htmlviewport, int linkid) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWebPageLinkPosn|natives.getWebPageLinkPosn(int htmlviewport, int linkid, [output] Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.getWidthOfLiteralString|natives.getWidthOfLiteralString(string str) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.giveDelayedWeaponToChar|natives.giveDelayedWeaponToChar(Ped ped, int weapon, int delaytime, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedAmbientObject|natives.givePedAmbientObject(Ped ped, uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedFakeNetworkName|natives.givePedFakeNetworkName(Ped ped, string name, int r, int g, int b, int a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedHelmetWithOpts|natives.givePedHelmetWithOpts(Ped ped, bool Unk42) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedHelmet|natives.givePedHelmet(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePedPickupObject|natives.givePedPickupObject(Ped ped, Object obj, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.givePlayerRagdollControl|natives.givePlayerRagdollControl(Player playerIndex, bool give) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.giveWeaponToChar|natives.giveWeaponToChar(Ped ped, uint weapon, uint ammo, bool unknown0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.grabNearbyObjectWithSpecialAttribute|natives.grabNearbyObjectWithSpecialAttribute(int attribute, [output] Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.handVehicleControlBackToPlayer|natives.handVehicleControlBackToPlayer(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.handleAudioAnimEvent|natives.handleAudioAnimEvent(Ped ped, string AudioAnimEventName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasAchievementBeenPassed|natives.hasAchievementBeenPassed(uint achievement) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasAdditionalTextLoaded|natives.hasAdditionalTextLoaded(uint textIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDamagedByCar|natives.hasCarBeenDamagedByCar(Vehicle vehicle, Vehicle otherCar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDamagedByChar|natives.hasCarBeenDamagedByChar(Vehicle vehicle, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDamagedByWeapon|natives.hasCarBeenDamagedByWeapon(Vehicle vehicle, uint weapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenDroppedOff|natives.hasCarBeenDroppedOff(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarBeenResprayed|natives.hasCarBeenResprayed(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarRecordingBeenLoaded|natives.hasCarRecordingBeenLoaded(int CarRec) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCarStoppedBecauseOfLight|natives.hasCarStoppedBecauseOfLight(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharAnimFinished|natives.hasCharAnimFinished(Ped ped, string AnimName0, string AnimName1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenArrested|natives.hasCharBeenArrested(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenDamagedByCar|natives.hasCharBeenDamagedByCar(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenDamagedByChar|natives.hasCharBeenDamagedByChar(Ped ped, Ped otherChar, bool unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenDamagedByWeapon|natives.hasCharBeenDamagedByWeapon(Ped ped, uint weapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharBeenPhotographed|natives.hasCharBeenPhotographed(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharGotWeapon|natives.hasCharGotWeapon(Ped ped, uint weapon) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharSpottedCharInFront|natives.hasCharSpottedCharInFront(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCharSpottedChar|natives.hasCharSpottedChar(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasClosestObjectOfTypeBeenDamagedByCar|natives.hasClosestObjectOfTypeBeenDamagedByCar(Vec3 x, float radius, uint type_or_model, Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasClosestObjectOfTypeBeenDamagedByChar|natives.hasClosestObjectOfTypeBeenDamagedByChar(Vec3 x, float radius, uint objectModel, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCollisionForModelLoaded|natives.hasCollisionForModelLoaded(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasControlOfNetworkId|natives.hasControlOfNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCutsceneFinished|natives.hasCutsceneFinished(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasCutsceneLoaded|natives.hasCutsceneLoaded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasDeatharrestExecuted|natives.hasDeatharrestExecuted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasFragmentRootOfClosestObjectOfTypeBeenDamaged|natives.hasFragmentRootOfClosestObjectOfTypeBeenDamaged(Vec3 x, float radius, uint Unk70) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasGamerChangedNetworkModelSettings|natives.hasGamerChangedNetworkModelSettings(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasModelLoaded|natives.hasModelLoaded(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasNetworkPlayerLeftGame|natives.hasNetworkPlayerLeftGame(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamagedByCar|natives.hasObjectBeenDamagedByCar(Object obj, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamagedByChar|natives.hasObjectBeenDamagedByChar(Object obj, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamagedByWeapon|natives.hasObjectBeenDamagedByWeapon(Object obj, int Unk71) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenDamaged|natives.hasObjectBeenDamaged(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenPhotographed|natives.hasObjectBeenPhotographed(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectBeenUprooted|natives.hasObjectBeenUprooted(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectCollidedWithAnything|natives.hasObjectCollidedWithAnything(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasObjectFragmentRootBeenDamaged|natives.hasObjectFragmentRootBeenDamaged(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasOverridenSitIdleAnimFinished|natives.hasOverridenSitIdleAnimFinished(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPickupBeenCollected|natives.hasPickupBeenCollected(Pickup pickup) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPlayerCollectedPickup|natives.hasPlayerCollectedPickup(Player playerIndex, Pickup pikcup) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPlayerDamagedAtLeastOnePed|natives.hasPlayerDamagedAtLeastOnePed(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPlayerDamagedAtLeastOneVehicle|natives.hasPlayerDamagedAtLeastOneVehicle(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPoolObjectCollidedWithCushion|natives.hasPoolObjectCollidedWithCushion(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasPoolObjectCollidedWithObject|natives.hasPoolObjectCollidedWithObject(Object obj, Object otherObj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasReloadedWithMotionControl|natives.hasReloadedWithMotionControl(int ukn0, [output] bool ukn) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasResprayHappened|natives.hasResprayHappened(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasScriptLoaded|natives.hasScriptLoaded(string scriptName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasSoundFinished|natives.hasSoundFinished(uint sound) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasStreamedTxdLoaded|natives.hasStreamedTxdLoaded(string txdName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hasThisAdditionalTextLoaded|natives.hasThisAdditionalTextLoaded(string textName, uint textIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.haveAnimsLoaded|natives.haveAnimsLoaded(string animName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.haveRequestedPathNodesBeenLoaded|natives.haveRequestedPathNodesBeenLoaded(uint requestId) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.heliAudioShouldSkipStartup|natives.heliAudioShouldSkipStartup(Vehicle heli, bool skip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hideCharWeaponForScriptedCutscene|natives.hideCharWeaponForScriptedCutscene(Ped ped, bool hide) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hideHelpTextThisFrame|natives.hideHelpTextThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hideHudAndRadarThisFrame|natives.hideHudAndRadarThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.highFallScream|natives.highFallScream(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.highlightMenuItem|natives.highlightMenuItem(int menuid, int item, bool highlight) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.hintCam|natives.hintCam(Vec3 x, int Unk559, int Unk560, int Unk561, int Unk562) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.howLongHasNetworkPlayerBeenDeadFor|natives.howLongHasNetworkPlayerBeenDeadFor(Player playerIndex) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.improveLowPerformanceMissionPerFrameFlag|natives.improveLowPerformanceMissionPerFrameFlag(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.increasePlayerMaxArmour|natives.increasePlayerMaxArmour(Player playerIndex, float armour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.increasePlayerMaxHealth|natives.increasePlayerMaxHealth(Player playerIndex, int maxhealth) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementFloatStatNoMessage|natives.incrementFloatStatNoMessage(uint stat, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementFloatStat|natives.incrementFloatStat(int stat, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementIntStatNoMessage|natives.incrementIntStatNoMessage(uint stat, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.incrementIntStat|natives.incrementIntStat(uint stat, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.initCutscene|natives.initCutscene(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.initDebugWidgets|natives.initDebugWidgets(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.initFrontendHelperText|natives.initFrontendHelperText(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAmbientSpeechDisabled|natives.isAmbientSpeechDisabled(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAmbientSpeechPlaying|natives.isAmbientSpeechPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAnyCharShootingInArea|natives.isAnyCharShootingInArea(Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAnyPickupAtCoords|natives.isAnyPickupAtCoords(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAnySpeechPlaying|natives.isAnySpeechPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAreaOccupied|natives.isAreaOccupied(Vec3 x1, Vec3 x2, bool unknownFalse1, bool unknownTrue, bool unknownFalse2, bool unknownFalse3, bool unknownFalse4) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAutoAimingOn|natives.isAutoAimingOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isAutoSaveInProgress|natives.isAutoSaveInProgress(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBigVehicle|natives.isBigVehicle(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBitSet|natives.isBitSet(int val, int bitnum) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBlipShortRange|natives.isBlipShortRange(int blip) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBulletInArea|natives.isBulletInArea(Vec3 x, float radius, bool unknownTrue) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isBulletInBox|natives.isBulletInBox(Vec3 x1, Vec3 x2, bool unknown) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isButtonJustPressed|natives.isButtonJustPressed(uint padIndex, uint button) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isButtonPressed|natives.isButtonPressed(uint padIndex, uint button) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamActive|natives.isCamActive(int camera) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamHappy|natives.isCamHappy(int cam) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamInterpolating|natives.isCamInterpolating(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamPropagating|natives.isCamPropagating(int camera) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamSequenceComplete|natives.isCamSequenceComplete(int Unk535) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCamShaking|natives.isCamShaking(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarAMissionCar|natives.isCarAMissionCar(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarAttached|natives.isCarAttached(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarDead|natives.isCarDead(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarDoorDamaged|natives.isCarDoorDamaged(Vehicle vehicle, uint door) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarDoorFullyOpen|natives.isCarDoorFullyOpen(Vehicle vehicle, uint door) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarHealthGreater|natives.isCarHealthGreater(Vehicle car, float health) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInAirProper|natives.isCarInAirProper(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInArea2d|natives.isCarInArea2d(Vehicle vehicle, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInArea3d|natives.isCarInArea3d(Vehicle vehicle, Vec3 x1, Vec3 x2, uint unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInGarageArea|natives.isCarInGarageArea(string garageName, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarInWater|natives.isCarInWater(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarLowRider|natives.isCarLowRider(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarModel|natives.isCarModel(Vehicle vehicle, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarOnFire|natives.isCarOnFire(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarOnScreen|natives.isCarOnScreen(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarPassengerSeatFree|natives.isCarPassengerSeatFree(Vehicle vehicle, uint seatIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarPlayingAnim|natives.isCarPlayingAnim(Vehicle car, string animname0, string animname1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarSirenOn|natives.isCarSirenOn(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStoppedAtTrafficLights|natives.isCarStoppedAtTrafficLights(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStopped|natives.isCarStopped(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStreetRacer|natives.isCarStreetRacer(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStuckOnRoof|natives.isCarStuckOnRoof(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarStuck|natives.isCarStuck(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarTouchingCar|natives.isCarTouchingCar(Vehicle vehicle, Vehicle otherCar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarTyreBurst|natives.isCarTyreBurst(Vehicle vehicle, uint tyre) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarUpright|natives.isCarUpright(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarUpsidedown|natives.isCarUpsidedown(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCarWaitingForWorldCollision|natives.isCarWaitingForWorldCollision(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharArmed|natives.isCharArmed(Ped ped, uint slot) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharDead|natives.isCharDead(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharDucking|natives.isCharDucking(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharFacingChar|natives.isCharFacingChar(Ped ped, Ped otherChar, float angle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharFatallyInjured|natives.isCharFatallyInjured(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharGesturing|natives.isCharGesturing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharGettingInToACar|natives.isCharGettingInToACar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharGettingUp|natives.isCharGettingUp(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharHealthGreater|natives.isCharHealthGreater(Ped ped, uint health) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAir|natives.isCharInAir(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAngledArea2d|natives.isCharInAngledArea2d(Ped ped, Vec2 x1, Vec2 x2, float unknown, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAngledArea3d|natives.isCharInAngledArea3d(Ped ped, Vec3 x1, Vec3 x2, float unknown, bool unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyBoat|natives.isCharInAnyBoat(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyCar|natives.isCharInAnyCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyHeli|natives.isCharInAnyHeli(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyPlane|natives.isCharInAnyPlane(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyPoliceVehicle|natives.isCharInAnyPoliceVehicle(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAnyTrain|natives.isCharInAnyTrain(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInArea2d|natives.isCharInArea2d(Ped ped, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInArea3d|natives.isCharInArea3d(Ped ped, Vec3 x1, Vec3 x2, bool unknownFalse) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInAreaOnFoot2d|natives.isCharInAreaOnFoot2d(Ped ped, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInCar|natives.isCharInCar(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInFlyingVehicle|natives.isCharInFlyingVehicle(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInMeleeCombat|natives.isCharInMeleeCombat(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInModel|natives.isCharInModel(Ped ped, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInTaxi|natives.isCharInTaxi(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInWater|natives.isCharInWater(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInZone|natives.isCharInZone(Ped ped, string zonename) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharInjured|natives.isCharInjured(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharMale|natives.isCharMale(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharModel|natives.isCharModel(Ped ped, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnAnyBike|natives.isCharOnAnyBike(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnFire|natives.isCharOnFire(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnFoot|natives.isCharOnFoot(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharOnScreen|natives.isCharOnScreen(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharPlayingAnim|natives.isCharPlayingAnim(Ped ped, string animSet, string animName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharRespondingToAnyEvent|natives.isCharRespondingToAnyEvent(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharRespondingToEvent|natives.isCharRespondingToEvent(Ped ped, int eventid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharShootingInArea|natives.isCharShootingInArea(Ped ped, Vec2 x1, Vec2 x2, bool unknownFalse, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharShooting|natives.isCharShooting(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSittingIdle|natives.isCharSittingIdle(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSittingInAnyCar|natives.isCharSittingInAnyCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSittingInCar|natives.isCharSittingInCar(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharStopped|natives.isCharStopped(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharStuckUnderCar|natives.isCharStuckUnderCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharSwimming|natives.isCharSwimming(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingChar|natives.isCharTouchingChar(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingObjectOnFoot|natives.isCharTouchingObjectOnFoot(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingObject|natives.isCharTouchingObject(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTouchingVehicle|natives.isCharTouchingVehicle(Ped ped, Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharTryingToEnterALockedCar|natives.isCharTryingToEnterALockedCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharUsingAnyScenario|natives.isCharUsingAnyScenario(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharUsingMapAttractor|natives.isCharUsingMapAttractor(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharUsingScenario|natives.isCharUsingScenario(Ped ped, string scenarioName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharVisible|natives.isCharVisible(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCharWaitingForWorldCollision|natives.isCharWaitingForWorldCollision(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isClosestObjectOfTypeSmashedOrDamaged|natives.isClosestObjectOfTypeSmashedOrDamaged(Vec3 x, float radius, uint type_or_model, bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isControlJustPressed|natives.isControlJustPressed(int Unk822, int controlid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isControlPressed|natives.isControlPressed(int Unk823, int controlid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCopPedInArea3dNoSave|natives.isCopPedInArea3dNoSave(Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isCopVehicleInArea3dNoSave|natives.isCopVehicleInArea3dNoSave(Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isDebugCameraOn|natives.isDebugCameraOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isEmergencyServicesVehicle|natives.isEmergencyServicesVehicle(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isEpisodeAvailable|natives.isEpisodeAvailable(int episode) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isEpisodicDiscBuild|natives.isEpisodicDiscBuild(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isExplosionInArea|natives.isExplosionInArea(int expnum, Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isExplosionInSphere|natives.isExplosionInSphere(int expnum, Vec3 x, float radius) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isFollowVehicleCamOffsetActive|natives.isFollowVehicleCamOffsetActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isFontLoaded|natives.isFontLoaded(uint font) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isFrontendFading|natives.isFrontendFading(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameInControlOfMusic|natives.isGameInControlOfMusic(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardKeyJustPressed|natives.isGameKeyboardKeyJustPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardKeyPressed|natives.isGameKeyboardKeyPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavDownPressed|natives.isGameKeyboardNavDownPressed(bool Unk824) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavLeftPressed|natives.isGameKeyboardNavLeftPressed(bool Unk825) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavRightPressed|natives.isGameKeyboardNavRightPressed(bool Unk826) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGameKeyboardNavUpPressed|natives.isGameKeyboardNavUpPressed(bool Unk827) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGarageClosed|natives.isGarageClosed(string garageName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGarageOpen|natives.isGarageOpen(string garageName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGroupLeader|natives.isGroupLeader(Ped ped, int group) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isGroupMember|natives.isGroupMember(Ped ped, int group) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHeliPartBroken|natives.isHeliPartBroken(Vehicle heli, bool flag0, bool flag1, bool flag2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHelpMessageBeingDisplayed|natives.isHelpMessageBeingDisplayed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHintRunning|natives.isHintRunning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHudPreferenceSwitchedOn|natives.isHudPreferenceSwitchedOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isHudReticuleComplex|natives.isHudReticuleComplex(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInCarFireButtonPressed|natives.isInCarFireButtonPressed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInLanMode|natives.isInLanMode(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInPlayerSettingsMenu|natives.isInPlayerSettingsMenu(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInSpectatorMode|natives.isInSpectatorMode(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isInteriorScene|natives.isInteriorScene(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isJapaneseVersion|natives.isJapaneseVersion(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isKeyboardKeyJustPressed|natives.isKeyboardKeyJustPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isKeyboardKeyPressed|natives.isKeyboardKeyPressed(int key) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isLazlowStationLocked|natives.isLazlowStationLocked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isLcpdDataValid|natives.isLcpdDataValid(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isLookInverted|natives.isLookInverted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMemoryCardInUse|natives.isMemoryCardInUse(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMessageBeingDisplayed|natives.isMessageBeingDisplayed(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMinigameInProgress|natives.isMinigameInProgress(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMissionCompletePlaying|natives.isMissionCompletePlaying(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMobilePhoneCallOngoing|natives.isMobilePhoneCallOngoing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMobilePhoneRadioActive|natives.isMobilePhoneRadioActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isModelInCdimage|natives.isModelInCdimage(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMoneyPickupAtCoords|natives.isMoneyPickupAtCoords(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMouseButtonJustPressed|natives.isMouseButtonJustPressed(int Unk828) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMouseButtonPressed|natives.isMouseButtonPressed(int Unk829) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isMouseUsingVerticalInversion|natives.isMouseUsingVerticalInversion(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkGamePending|natives.isNetworkGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkGameRunning|natives.isNetworkGameRunning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkPlayerActive|natives.isNetworkPlayerActive(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNetworkSession|natives.isNetworkSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNextStationAllowed|natives.isNextStationAllowed(Vehicle veh) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNonFragObjectSmashed|natives.isNonFragObjectSmashed(Vec3 x, float radius, uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isNumlockEnabled|natives.isNumlockEnabled(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectAttached|natives.isObjectAttached(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInAngledArea3d|natives.isObjectInAngledArea3d(Object obj, Vec3 x0, Vec3 x1, float Unk72, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInArea2d|natives.isObjectInArea2d(Object obj, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInArea3d|natives.isObjectInArea3d(Object obj, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectInWater|natives.isObjectInWater(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectOnFire|natives.isObjectOnFire(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectOnScreen|natives.isObjectOnScreen(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectPlayingAnim|natives.isObjectPlayingAnim(Object obj, string animname0, string animname1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectReassignmentInProgress|natives.isObjectReassignmentInProgress(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectStatic|natives.isObjectStatic(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectTouchingObject|natives.isObjectTouchingObject(Object obj0, Object obj1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectUpright|natives.isObjectUpright(Object obj, float angle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isObjectWithinBrainActivationRange|natives.isObjectWithinBrainActivationRange(Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isOurPlayerHigherPriorityForCarGeneration|natives.isOurPlayerHigherPriorityForCarGeneration(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPainPlaying|natives.isPainPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPartyMode|natives.isPartyMode(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPauseMenuActive|natives.isPauseMenuActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPayNSprayActive|natives.isPayNSprayActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPcUsingJoypad|natives.isPcUsingJoypad(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPcVersion|natives.isPcVersion(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedAMissionPed|natives.isPedAMissionPed(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedAttachedToAnyCar|natives.isPedAttachedToAnyCar(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedAttachedToObject|natives.isPedAttachedToObject(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedBeingJacked|natives.isPedBeingJacked(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedClimbing|natives.isPedClimbing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedDoingDriveby|natives.isPedDoingDriveby(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedFleeing|natives.isPedFleeing(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedHoldingAnObject|natives.isPedHoldingAnObject(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInCombat|natives.isPedInCombat(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInCover|natives.isPedInCover(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInCutsceneBlockingBounds|natives.isPedInCutsceneBlockingBounds(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedInGroup|natives.isPedInGroup(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedJacking|natives.isPedJacking(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedLookingAtCar|natives.isPedLookingAtCar(Ped ped, Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedLookingAtObject|natives.isPedLookingAtObject(Ped ped, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedLookingAtPed|natives.isPedLookingAtPed(Ped ped, Ped otherChar) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedPinnedDown|natives.isPedPinnedDown(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedRagdoll|natives.isPedRagdoll(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedRetreating|natives.isPedRetreating(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPedsVehicleHot|natives.isPedsVehicleHot(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlaceCarBombActive|natives.isPlaceCarBombActive(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlaybackGoingOnForCar|natives.isPlaybackGoingOnForCar(Vehicle car) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerBeingArrested|natives.isPlayerBeingArrested(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerClimbing|natives.isPlayerClimbing(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerControlOn|natives.isPlayerControlOn(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerDead|natives.isPlayerDead(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerFreeAimingAtChar|natives.isPlayerFreeAimingAtChar(Player playerIndex, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerFreeForAmbientTask|natives.isPlayerFreeForAmbientTask(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerInRemoteMode|natives.isPlayerInRemoteMode(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerOnline|natives.isPlayerOnline(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPerformingStoppie|natives.isPlayerPerformingStoppie(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPerformingWheelie|natives.isPlayerPerformingWheelie(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPlaying|natives.isPlayerPlaying(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerPressingHorn|natives.isPlayerPressingHorn(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerReadyForCutscene|natives.isPlayerReadyForCutscene(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerScriptControlOn|natives.isPlayerScriptControlOn(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerSignedInLocally|natives.isPlayerSignedInLocally(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerTargettingAnything|natives.isPlayerTargettingAnything(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerTargettingChar|natives.isPlayerTargettingChar(Player playerIndex, Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerTargettingObject|natives.isPlayerTargettingObject(Player playerIndex, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPlayerVehicleEntryDisabled|natives.isPlayerVehicleEntryDisabled(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPointObscuredByAMissionEntity|natives.isPointObscuredByAMissionEntity(float pX, float pY, float pZ, float sizeX, float sizeY, float sizeZ) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isPosInCutsceneBlockingBounds|natives.isPosInCutsceneBlockingBounds(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isProjectileInArea|natives.isProjectileInArea(Vec3 x0, Vec3 x1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isRadioHudOn|natives.isRadioHudOn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isRadioRetuning|natives.isRadioRetuning(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isRelationshipSet|natives.isRelationshipSet(int Unk493, int Unk494, int Unk495) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isReplaySaving|natives.isReplaySaving(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isReplaySystemSaving|natives.isReplaySystemSaving(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScoreGreater|natives.isScoreGreater(Player playerIndex, uint score) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadedIn|natives.isScreenFadedIn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadedOut|natives.isScreenFadedOut(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadingIn|natives.isScreenFadingIn(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFadingOut|natives.isScreenFadingOut(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScreenFading|natives.isScreenFading(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScriptFireExtinguished|natives.isScriptFireExtinguished(int fire) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScriptedConversationOngoing|natives.isScriptedConversationOngoing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isScriptedSpeechPlaying|natives.isScriptedSpeechPlaying(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSittingObjectNear|natives.isSittingObjectNear(Vec3 x, int Unk73) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSniperInverted|natives.isSniperInverted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSpecificCamInterpolating|natives.isSpecificCamInterpolating(int cam) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStreamingAdditionalText|natives.isStreamingAdditionalText(uint textIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStreamingPriorityRequests|natives.isStreamingPriorityRequests(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStreamingThisAdditionalText|natives.isStreamingThisAdditionalText(string str0, int Unk597, int Unk598) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isStringNull|natives.isStringNull(string str) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isSystemUiShowing|natives.isSystemUiShowing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisAMinigameScript|natives.isThisAMinigameScript(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisHelpMessageBeingDisplayed|natives.isThisHelpMessageBeingDisplayed(string gxtentry) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisHelpMessageWithNumberBeingDisplayed|natives.isThisHelpMessageWithNumberBeingDisplayed(string gxtentry, int number) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisHelpMessageWithStringBeingDisplayed|natives.isThisHelpMessageWithStringBeingDisplayed(string gxtentry, string str) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisMachineTheServer|natives.isThisMachineTheServer(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelABike|natives.isThisModelABike(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelABoat|natives.isThisModelABoat(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelACar|natives.isThisModelACar(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAHeli|natives.isThisModelAHeli(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAPed|natives.isThisModelAPed(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAPlane|natives.isThisModelAPlane(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelATrain|natives.isThisModelATrain(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisModelAVehicle|natives.isThisModelAVehicle(uint model) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThisPedAPlayer|natives.isThisPedAPlayer(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isThreadActive|natives.isThreadActive(uint threadId) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isUsingController|natives.isUsingController(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehDriveable|natives.isVehDriveable(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehStuck|natives.isVehStuck(Vehicle veh, int time, bool flag0, bool flag1, bool flag2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehWindowIntact|natives.isVehWindowIntact(Vehicle vehicle, uint window) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehicleExtraTurnedOn|natives.isVehicleExtraTurnedOn(Vehicle vehicle, uint extra) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehicleOnAllWheels|natives.isVehicleOnAllWheels(Vehicle vehicle) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isVehicleTouchingObject|natives.isVehicleTouchingObject(Vehicle veh, Object obj) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isViewportActive|natives.isViewportActive(int viewportid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isWantedLevelGreater|natives.isWantedLevelGreater(Player playerIndex, uint level) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isWorldPointWithinBrainActivationRange|natives.isWorldPointWithinBrainActivationRange(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.isXbox360Version|natives.isXbox360Version(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.knockPedOffBike|natives.knockPedOffBike(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.launchLocalPlayerInNetworkGame|natives.launchLocalPlayerInNetworkGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.limitAngle|natives.limitAngle(float angle, [output] float anglelimited) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.limitTwoPlayerDistance|natives.limitTwoPlayerDistance(float distance) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.line|natives.line(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.listenToPlayerGroupCommands|natives.listenToPlayerGroupCommands(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadAdditionalText|natives.loadAdditionalText(string textName, uint textIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadAllObjectsNow|natives.loadAllObjectsNow(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadAllPathNodes|natives.loadAllPathNodes(bool value) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadCharDecisionMaker|natives.loadCharDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadCombatDecisionMaker|natives.loadCombatDecisionMaker(uint type, [output] int pDM) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadPathNodesInArea|natives.loadPathNodesInArea(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadSceneForRoomByKey|natives.loadSceneForRoomByKey(int interior, uint roomhash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadScene|natives.loadScene(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadSettings|natives.loadSettings(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadTextFont|natives.loadTextFont(uint font) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadTxd|natives.loadTxd(string txdName) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loadWebPage|natives.loadWebPage(int htmlviewport, string webaddress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.localPlayerIsReadyToStartPlaying|natives.localPlayerIsReadyToStartPlaying(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCar2d|natives.locateCar2d(Vehicle car, Vec2 x0, Vec2 xUnk48, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCar3d|natives.locateCar3d(Vehicle car, Vec3 x, Vec3 xa, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeans2d|natives.locateCharAnyMeans2d(Ped ped, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeans3d|natives.locateCharAnyMeans3d(Ped ped, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansCar2d|natives.locateCharAnyMeansCar2d(Ped ped, Vehicle car, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansCar3d|natives.locateCharAnyMeansCar3d(Ped ped, Vehicle car, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansChar2d|natives.locateCharAnyMeansChar2d(Ped ped, Ped pednext, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansChar3d|natives.locateCharAnyMeansChar3d(Ped ped, Ped pednext, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansObject2d|natives.locateCharAnyMeansObject2d(Ped ped, Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharAnyMeansObject3d|natives.locateCharAnyMeansObject3d(Ped ped, Object obj, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCar2d|natives.locateCharInCar2d(Ped ped, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCar3d|natives.locateCharInCar3d(Ped ped, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarCar2d|natives.locateCharInCarCar2d(Ped ped, Vehicle car, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarCar3d|natives.locateCharInCarCar3d(Ped ped, Vehicle car, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarChar2d|natives.locateCharInCarChar2d(Ped ped, Ped pednext, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarChar3d|natives.locateCharInCarChar3d(Ped ped, Vehicle pednext, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarObject2d|natives.locateCharInCarObject2d(Ped ped, Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharInCarObject3d|natives.locateCharInCarObject3d(Ped ped, Object obj, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFoot2d|natives.locateCharOnFoot2d(Ped ped, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFoot3d|natives.locateCharOnFoot3d(Ped ped, Vec3 x0, Vec3 x1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootCar2d|natives.locateCharOnFootCar2d(Ped ped, Vehicle car, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootCar3d|natives.locateCharOnFootCar3d(Ped ped, Vehicle car, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootChar2d|natives.locateCharOnFootChar2d(Ped ped, Ped pednext, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootChar3d|natives.locateCharOnFootChar3d(Ped ped, Ped pednext, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootObject2d|natives.locateCharOnFootObject2d(Ped ped, Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateCharOnFootObject3d|natives.locateCharOnFootObject3d(Ped ped, Object obj, Vec3 x, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateDeadCar3d|natives.locateDeadCar3d(Vehicle car, Vec3 x, Vec3 xa, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateObject2d|natives.locateObject2d(Object obj, Vec2 x0, Vec2 x1, bool flag, unknownType unknownArg1, unknownType unknownArg2) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.locateObject3d|natives.locateObject3d(Object obj, Vec3 x, Vec3 xr, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.lockCarDoors|natives.lockCarDoors(Vehicle vehicle, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.lockLazlowStation|natives.lockLazlowStation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.lockPlayerSettingsGenreChange|natives.lockPlayerSettingsGenreChange(int lock_bit_mask) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.loopRaceTrack|natives.loopRaceTrack(bool loop) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.maintainFlashingStarAfterOffence|natives.maintainFlashingStarAfterOffence(Player playerIndex, bool maintain) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makeObjectTargettable|natives.makeObjectTargettable(Object obj, bool targettable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerFireProof|natives.makePlayerFireProof(Player playerIndex, bool proof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerGangDisappear|natives.makePlayerGangDisappear(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerGangReappear|natives.makePlayerGangReappear(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.makePlayerSafeForCutscene|natives.makePlayerSafeForCutscene(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markCarAsConvoyCar|natives.markCarAsConvoyCar(Vehicle vehicle, bool convoyCar) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markCarAsNoLongerNeeded|natives.markCarAsNoLongerNeeded([output] Vehicle pVehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markCharAsNoLongerNeeded|natives.markCharAsNoLongerNeeded([output] Ped pPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markMissionTrainAsNoLongerNeeded|natives.markMissionTrainAsNoLongerNeeded(int train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markMissionTrainsAsNoLongerNeeded|natives.markMissionTrainsAsNoLongerNeeded(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markModelAsNoLongerNeeded|natives.markModelAsNoLongerNeeded(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markObjectAsNoLongerNeeded|natives.markObjectAsNoLongerNeeded([output] Object pObj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markRoadNodeAsDontWander|natives.markRoadNodeAsDontWander(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markScriptAsNoLongerNeeded|natives.markScriptAsNoLongerNeeded(string scriptName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.markStreamedTxdAsNoLongerNeeded|natives.markStreamedTxdAsNoLongerNeeded(string txdName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.missionAudioBankNoLongerNeeded|natives.missionAudioBankNoLongerNeeded(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.modifyCharMoveState|natives.modifyCharMoveState(Ped ped, uint state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetAmountOfAnchorPoints|natives.mpGetAmountOfAnchorPoints(Ped ped, int id) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetAmountOfVariationComponent|natives.mpGetAmountOfVariationComponent(Ped ped, int componentid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetPreferenceValue|natives.mpGetPreferenceValue(int prefid) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetPropSetup|natives.mpGetPropSetup(Ped ped, int ukn0, int ukn1, int ukn2, int ukn3) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpGetVariationSetup|natives.mpGetVariationSetup(Ped ped, int Unk890, int Unk891, int Unk892, int Unk893) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mpSetPreferenceValue|natives.mpSetPreferenceValue(int prefid, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.muteGameworldAndPositionedRadioForTv|natives.muteGameworldAndPositionedRadioForTv(bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.muteGameworldAudio|natives.muteGameworldAudio(bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.mutePositionedRadio|natives.mutePositionedRadio(bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.muteStaticEmitter|natives.muteStaticEmitter(int StaticEmitterIndex, bool mute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.m|natives.m(int cam, int heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.newMobilePhoneCall|natives.newMobilePhoneCall(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.newScriptedConversation|natives.newScriptedConversation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.obfuscateInt|natives.obfuscateInt(int Unk941, int Unk942) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.obfuscateString|natives.obfuscateString(string str) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.onFireScream|natives.onFireScream(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openCarDoor|natives.openCarDoor(Vehicle vehicle, uint door) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openDebugFile|natives.openDebugFile(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openGarage|natives.openGarage(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.openSequenceTask|natives.openSequenceTask([output] int pTaskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.overrideFreezeFlags|natives.overrideFreezeFlags(bool Unk504) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.overrideNextRestart|natives.overrideNextRestart(Vec3 x, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.overrideNumberOfParkedCars|natives.overrideNumberOfParkedCars(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.panicScream|natives.panicScream(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pauseGame|natives.pauseGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pausePlaybackRecordedCar|natives.pausePlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pauseScriptedConversation|natives.pauseScriptedConversation(bool pause) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueConsiderPedsWithFlagFalse|natives.pedQueueConsiderPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueConsiderPedsWithFlagTrue|natives.pedQueueConsiderPedsWithFlagTrue(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueRejectPedsWithFlagFalse|natives.pedQueueRejectPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pedQueueRejectPedsWithFlagTrue|natives.pedQueueRejectPedsWithFlagTrue(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pickupsPassTime|natives.pickupsPassTime(uint time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.placeObjectRelativeToCar|natives.placeObjectRelativeToCar(Object obj, Vehicle car, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.planeStartsInAir|natives.planeStartsInAir(Vehicle plane) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEventFromObject|natives.playAudioEventFromObject(string EventName, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEventFromPed|natives.playAudioEventFromPed(string name, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEventFromVehicle|natives.playAudioEventFromVehicle(string name, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playAudioEvent|natives.playAudioEvent(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playCarAnim|natives.playCarAnim(Vehicle car, string animname0, string animname1, float Unk50, bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playFireSoundFromPosition|natives.playFireSoundFromPosition(int sound_id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playMovie|natives.playMovie(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playObjectAnim|natives.playObjectAnim(Object obj, string animname0, string animname1, float Unk74, bool flag0, bool flag1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playScriptedConversationFrontend|natives.playScriptedConversationFrontend(bool play) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromObject|natives.playSoundFromObject(int sound_id, string name, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromPed|natives.playSoundFromPed(int SoundId, string SoundName, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromPosition|natives.playSoundFromPosition(int sound_id, string name, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFromVehicle|natives.playSoundFromVehicle(int SoundId, string SoundName, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSoundFrontend|natives.playSoundFrontend(uint sound, string soundName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playSound|natives.playSound(int SoundId, string SoundName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playStreamFromObject|natives.playStreamFromObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playStreamFromPed|natives.playStreamFromPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playStreamFrontend|natives.playStreamFrontend(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerHasChar|natives.playerHasChar(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerHasFlashingStarsAboutToDrop|natives.playerHasFlashingStarsAboutToDrop(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerHasGreyedOutStars|natives.playerHasGreyedOutStars(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerIsInteractingWithGarage|natives.playerIsInteractingWithGarage(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerIsNearFirstPigeon|natives.playerIsNearFirstPigeon(Vec3 x) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerIsPissedOff|natives.playerIsPissedOff(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playerWantsToJoinNetworkGame|natives.playerWantsToJoinNetworkGame(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsCheat|natives.playstatsCheat(int stat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsFloat|natives.playstatsFloat(int Unk785, float Unk786) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionCancelled|natives.playstatsMissionCancelled(int Unk795) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionFailed|natives.playstatsMissionFailed(int Unk796) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionPassed|natives.playstatsMissionPassed(string str0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.playstatsMissionStarted|natives.playstatsMissionStarted(int Unk797) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtCam|natives.pointCamAtCam(int cam, int camnext) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtCoord|natives.pointCamAtCoord(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtObject|natives.pointCamAtObject(int cam, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtPed|natives.pointCamAtPed(int cam, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointCamAtVehicle|natives.pointCamAtVehicle(int cam, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtObj|natives.pointFixedCamAtObj(Object obj, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtPed|natives.pointFixedCamAtPed(Ped ped, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtPos|natives.pointFixedCamAtPos(Vec3 x, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCamAtVehicle|natives.pointFixedCamAtVehicle(Vehicle veh, int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pointFixedCam|natives.pointFixedCam(Vec3 x, int Unk563) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.popCarBoot|natives.popCarBoot(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.populateNow|natives.populateNow(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.pow|natives.pow(float base, float power) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.preloadStreamWithStartOffset|natives.preloadStreamWithStartOffset(string StreamName, int StartOffset) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.preloadStream|natives.preloadStream(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.previewRingtone|natives.previewRingtone(int RingtoneId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printBigQ|natives.printBigQ(string gxtentry, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printBig|natives.printBig(string gxtName, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithNumber|natives.printHelpForeverWithNumber(string gxtName, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithStringNoSound|natives.printHelpForeverWithStringNoSound(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithString|natives.printHelpForeverWithString(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForeverWithTwoNumbers|natives.printHelpForeverWithTwoNumbers(string gxtentry, int Unk658, int Unk659) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpForever|natives.printHelpForever(string gxtName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpOverFrontend|natives.printHelpOverFrontend(string gxtentry) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithNumber|natives.printHelpWithNumber(string gxtName, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithStringNoSound|natives.printHelpWithStringNoSound(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithString|natives.printHelpWithString(string gxtName, string gxtText) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelpWithTwoNumbers|natives.printHelpWithTwoNumbers(string gxtentry, int Unk660, int Unk661) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printHelp|natives.printHelp(string gxtName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printNow|natives.printNow(string gxtName, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringInStringNow|natives.printStringInStringNow(string gxtName, string gxtText, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringInString|natives.printStringInString(string gxtName, string gxtText, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithLiteralStringNow|natives.printStringWithLiteralStringNow(string gxtName, string text, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithLiteralString|natives.printStringWithLiteralString(string gxtentry, string string, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithSubstringGivenHashKeyNow|natives.printStringWithSubstringGivenHashKeyNow(string gxtkey0, uint gxtkey1, int time, int style) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithTwoLiteralStringsNow|natives.printStringWithTwoLiteralStringsNow(string gxtentry, string string1, string string2, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printStringWithTwoLiteralStrings|natives.printStringWithTwoLiteralStrings(string gxtentry, string string1, string string2, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith2NumbersBig|natives.printWith2NumbersBig(string gxtentry, int Unk662, int Unk663, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith2NumbersNow|natives.printWith2NumbersNow(string gxtName, int value1, int value2, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith2Numbers|natives.printWith2Numbers(string gxtName, int value1, int value2, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith3NumbersNow|natives.printWith3NumbersNow(string gxtentry, int Unk667, int Unk668, int Unk669, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith3Numbers|natives.printWith3Numbers(string gxtentry, int Unk664, int Unk665, int Unk666, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith4NumbersNow|natives.printWith4NumbersNow(string gxtentry, int Unk674, int Unk675, int Unk676, int Unk677, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith4Numbers|natives.printWith4Numbers(string gxtentry, int Unk670, int Unk671, int Unk672, int Unk673, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith5NumbersNow|natives.printWith5NumbersNow(string gxtentry, int Unk683, int Unk684, int Unk685, int Unk686, int Unk687, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith5Numbers|natives.printWith5Numbers(string gxtentry, int Unk678, int Unk679, int Unk680, int Unk681, int Unk682, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith6NumbersNow|natives.printWith6NumbersNow(string gxtentry, int Unk694, int Unk695, int Unk696, int Unk697, int Unk698, int Unk699, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWith6Numbers|natives.printWith6Numbers(string gxtentry, int Unk688, int Unk689, int Unk690, int Unk691, int Unk692, int Unk693, int time, int flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWithNumberBig|natives.printWithNumberBig(string gxtName, int value, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWithNumberNow|natives.printWithNumberNow(string gxtName, int value, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printWithNumber|natives.printWithNumber(string gxtName, int value, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printfloat|natives.printfloat(float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printint|natives.printint(int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printnl|natives.printnl(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printstring|natives.printstring(string value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.printvector|natives.printvector(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.print|natives.print(string gxtName, uint timeMS, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.prioritizeStreamingRequest|natives.prioritizeStreamingRequest(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.processMissionDeletionList|natives.processMissionDeletionList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.prostituteCamActivate|natives.prostituteCamActivate(bool activate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.readKillFrenzyStatus|natives.readKillFrenzyStatus(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerBestPosition|natives.registerBestPosition(int Unk505, int position) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerFloatStat|natives.registerFloatStat(int stat, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerHatedTargetsAroundPed|natives.registerHatedTargetsAroundPed(Ped ped, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerHatedTargetsInArea|natives.registerHatedTargetsInArea(Ped ped, Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerIntStat|natives.registerIntStat(int stat, int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerKillInMultiplayerGame|natives.registerKillInMultiplayerGame(Player playerIndex, int id, uint ukn) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerMissionPassed|natives.registerMissionPassed(string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerMultiplayerGameWin|natives.registerMultiplayerGameWin(Player playerIndex, bool Unk949) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerNetworkBestGameScores|natives.registerNetworkBestGameScores(Player playerIndex, int Unk950, int Unk951) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerOddjobMissionPassed|natives.registerOddjobMissionPassed(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerPlayerRespawnCoords|natives.registerPlayerRespawnCoords(Player playerIndex, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerSaveHouse|natives.registerSaveHouse(Vec3 x, float unkf, string name, uint unk0) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerScriptWithAudio|natives.registerScriptWithAudio(bool reg) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerStringForFrontendStat|natives.registerStringForFrontendStat(int stat, string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerTarget|natives.registerTarget(Ped ped, Ped target) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerTrackNumber|natives.registerTrackNumber(int number) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.registerWorldPointScriptBrain|natives.registerWorldPointScriptBrain(string ScriptName, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseMovie|natives.releaseMovie(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releasePathNodes|natives.releasePathNodes(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseScriptControlledMicrophone|natives.releaseScriptControlledMicrophone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseSoundId|natives.releaseSoundId(uint sound) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseTexture|natives.releaseTexture(int texture) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseTimeOfDay|natives.releaseTimeOfDay(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.releaseWeather|natives.releaseWeather(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reloadWebPage|natives.reloadWebPage(int htmlviewport) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAdditionalPopulationModel|natives.removeAdditionalPopulationModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAllCharWeapons|natives.removeAllCharWeapons(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAllInactiveGroupsFromCleanupList|natives.removeAllInactiveGroupsFromCleanupList(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAllPickupsOfType|natives.removeAllPickupsOfType(uint type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeAnims|natives.removeAnims(string animName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeBlipAndClearIndex|natives.removeBlipAndClearIndex(int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeBlip|natives.removeBlip(int blip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCarRecording|natives.removeCarRecording(int CarRec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCarWindow|natives.removeCarWindow(Vehicle car, int windnum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCarsFromGeneratorsInArea|natives.removeCarsFromGeneratorsInArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharDefensiveArea|natives.removeCharDefensiveArea(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharElegantly|natives.removeCharElegantly(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharFromCarMaintainPosition|natives.removeCharFromCarMaintainPosition(Ped ped, Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCharFromGroup|natives.removeCharFromGroup(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCloseMicPed|natives.removeCloseMicPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeCoverPoint|natives.removeCoverPoint(int coverPoint) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeDecisionMaker|natives.removeDecisionMaker(int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeFakeNetworkNameFromPed|natives.removeFakeNetworkNameFromPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeGroup|natives.removeGroup(int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeIplDiscreetly|natives.removeIplDiscreetly(string iplname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeIpl|natives.removeIpl(string iplName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeNavmeshRequiredRegion|natives.removeNavmeshRequiredRegion(float Unk599, float Unk600) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePedHelmet|natives.removePedHelmet(Ped ped, bool removed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePickup|natives.removePickup(Pickup pickup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePlayerHelmet|natives.removePlayerHelmet(Player playerIndex, bool remove) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeProjtexFromObject|natives.removeProjtexFromObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeProjtexInRange|natives.removeProjtexInRange(Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfxFromObject|natives.removePtfxFromObject(Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfxFromPed|natives.removePtfxFromPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfxFromVehicle|natives.removePtfxFromVehicle(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removePtfx|natives.removePtfx(uint ptfx) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeScriptFire|natives.removeScriptFire(int fire) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeScriptMic|natives.removeScriptMic(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeStuckCarCheck|natives.removeStuckCarCheck(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeTemporaryRadarBlipsForPickups|natives.removeTemporaryRadarBlipsForPickups(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeTxd|natives.removeTxd(int txd) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeUpsidedownCarCheck|natives.removeUpsidedownCarCheck(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.removeWeaponFromChar|natives.removeWeaponFromChar(Ped ped, uint weapon) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.renderRaceTrack|natives.renderRaceTrack(bool render) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.renderWeaponPickupsBigger|natives.renderWeaponPickupsBigger(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportCrime|natives.reportCrime(Vec3 x, string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportDispatch|natives.reportDispatch(int id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportPoliceSpottingSuspect|natives.reportPoliceSpottingSuspect(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportSuspectArrested|natives.reportSuspectArrested(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportSuspectDown|natives.reportSuspectDown(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reportTaggedRadioTrack|natives.reportTaggedRadioTrack(int TrackTextId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAdditionalText|natives.requestAdditionalText(string textName, uint textIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAllSlodsInWorld|natives.requestAllSlodsInWorld(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAmbientAudioBank|natives.requestAmbientAudioBank(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestAnims|natives.requestAnims(string animName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestCarRecording|natives.requestCarRecording(int CarRecId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestCollisionAtPosn|natives.requestCollisionAtPosn(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestCollisionForModel|natives.requestCollisionForModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestControlOfNetworkId|natives.requestControlOfNetworkId(int netid) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestInteriorModels|natives.requestInteriorModels(uint model, string interiorName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestIpl|natives.requestIpl(string iplName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestMissionAudioBank|natives.requestMissionAudioBank(string name) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestModel|natives.requestModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestScript|natives.requestScript(string scriptName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.requestStreamedTxd|natives.requestStreamedTxd(string txdName, bool unknown) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionObjectsForHost|natives.reserveNetworkMissionObjectsForHost(int count) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionPedsForHost|natives.reserveNetworkMissionPedsForHost(int Unk952) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionVehiclesForHost|natives.reserveNetworkMissionVehiclesForHost(int Unk954) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reserveNetworkMissionVehicles|natives.reserveNetworkMissionVehicles(int Unk953) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetAchievementsAward|natives.resetAchievementsAward(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetCamInterpCustomSpeedGraph|natives.resetCamInterpCustomSpeedGraph(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetCamSplineCustomSpeedGraph|natives.resetCamSplineCustomSpeedGraph(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetCarWheels|natives.resetCarWheels(Vehicle car, bool reset) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetLocalPlayerWeaponStat|natives.resetLocalPlayerWeaponStat(int wtype, int wid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetNoLawVehiclesDestroyedByLocalPlayer|natives.resetNoLawVehiclesDestroyedByLocalPlayer(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetNumOfModelsKilledByPlayer|natives.resetNumOfModelsKilledByPlayer(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetStuckTimer|natives.resetStuckTimer(Vehicle car, int timer_num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resetVisiblePedDamage|natives.resetVisiblePedDamage(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.restartScriptedConversation|natives.restartScriptedConversation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.resurrectNetworkPlayer|natives.resurrectNetworkPlayer(Player playerIndex, Vec3 x, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioDown|natives.retuneRadioDown(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioToStationIndex|natives.retuneRadioToStationIndex(uint radioStation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioToStationName|natives.retuneRadioToStationName(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.retuneRadioUp|natives.retuneRadioUp(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.reviveInjuredPed|natives.reviveInjuredPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.rotateObject|natives.rotateObject(Object obj, Vec2 x, bool flag, unknownType unknownArg1) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.round|natives.round(float Unk1085) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.saveNewlineToDebugFile|natives.saveNewlineToDebugFile(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.saveSettings|natives.saveSettings(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sayAmbientSpeechWithVoice|natives.sayAmbientSpeechWithVoice(Ped ped, string SpeechName, string VoiceName, bool flag0, bool flag1, int style) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sayAmbientSpeech|natives.sayAmbientSpeech(Ped ped, string phraseName, bool flag0, bool flag1, int style) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.scriptAssert|natives.scriptAssert(string text) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.scriptIsMovingMobilePhoneOffscreen|natives.scriptIsMovingMobilePhoneOffscreen(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.scriptIsUsingMobilePhone|natives.scriptIsUsingMobilePhone(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaConsiderPedsWithFlagFalse|natives.searchCriteriaConsiderPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaConsiderPedsWithFlagTrue|natives.searchCriteriaConsiderPedsWithFlagTrue(uint flagId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaRejectPedsWithFlagFalse|natives.searchCriteriaRejectPedsWithFlagFalse(int flagid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.searchCriteriaRejectPedsWithFlagTrue|natives.searchCriteriaRejectPedsWithFlagTrue(uint flagId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck1|natives.securomSpotCheck1(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck2|natives.securomSpotCheck2(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck3|natives.securomSpotCheck3(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.securomSpotCheck4|natives.securomSpotCheck4(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.selectWeaponsForVehicle|natives.selectWeaponsForVehicle(Vehicle veh, int weapon) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sendClientBroadcastVariablesNow|natives.sendClientBroadcastVariablesNow(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sendNmMessage|natives.sendNmMessage(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setActivateObjectPhysicsAsSoonAsItIsUnfrozen|natives.setActivateObjectPhysicsAsSoonAsItIsUnfrozen(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAdvancedBoolInDecisionMaker|natives.setAdvancedBoolInDecisionMaker(int dm, int Unk844, int Unk845, int Unk846, bool Unk847) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllCarGeneratorsBackToActive|natives.setAllCarGeneratorsBackToActive(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllCarsCanBeDamaged|natives.setAllCarsCanBeDamaged(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllPickupsOfTypeCollectableByCar|natives.setAllPickupsOfTypeCollectableByCar(int pickuptype, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllRandomPedsFlee|natives.setAllRandomPedsFlee(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAllowDummyConversions|natives.setAllowDummyConversions(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAlwaysDisplayWeaponPickupMessage|natives.setAlwaysDisplayWeaponPickupMessage(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAmbientPlanesSpeedMultiplier|natives.setAmbientPlanesSpeedMultiplier(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAmbientVoiceName|natives.setAmbientVoiceName(Ped ped, string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setAnimGroupForChar|natives.setAnimGroupForChar(Ped ped, string grname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setArmourPickupNetworkRegenTime|natives.setArmourPickupNetworkRegenTime(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBikeRiderWillPutFootDownWhenStopped|natives.setBikeRiderWillPutFootDownWhenStopped(Vehicle bike, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBitsInRange|natives.setBitsInRange([output] int Unk506, int rangebegin, int rangeend, int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBit|natives.setBit([output] int val, int bit) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipAsFriendly|natives.setBlipAsFriendly(int blip, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipAsShortRange|natives.setBlipAsShortRange(int blip, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipCoordinates|natives.setBlipCoordinates(int blip, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipMarkerLongDistance|natives.setBlipMarkerLongDistance(int blip, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlipThrottleRandomly|natives.setBlipThrottleRandomly(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlockCameraToggle|natives.setBlockCameraToggle(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBlockingOfNonTemporaryEvents|natives.setBlockingOfNonTemporaryEvents(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setBriansMood|natives.setBriansMood(int mood) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamActive|natives.setCamActive(int camera, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamAttachOffsetIsRelative|natives.setCamAttachOffsetIsRelative(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamAttachOffset|natives.setCamAttachOffset(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamBehindPed|natives.setCamBehindPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamComponentShake|natives.setCamComponentShake(int cam, int componentid, int Unk564, int time, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamDofFocuspoint|natives.setCamDofFocuspoint(int cam, Vec3 x, float Unk565) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamFarClip|natives.setCamFarClip(int cam, float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamFarDof|natives.setCamFarDof(int cam, float fardof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamFov|natives.setCamFov(int camera, float fov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInFrontOfPed|natives.setCamInFrontOfPed(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInheritRollObject|natives.setCamInheritRollObject(int cam, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInheritRollPed|natives.setCamInheritRollPed(int cam, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInheritRollVehicle|natives.setCamInheritRollVehicle(int cam, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpCustomSpeedGraph|natives.setCamInterpCustomSpeedGraph(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpDetailRotStyleAngles|natives.setCamInterpDetailRotStyleAngles(int Unk566) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpDetailRotStyleQuats|natives.setCamInterpDetailRotStyleQuats(int Unk567) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpStyleCore|natives.setCamInterpStyleCore(int cam0, int cam1, int cam2, int time, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamInterpStyleDetailed|natives.setCamInterpStyleDetailed(int cam, bool Unk568, bool Unk569, bool Unk570, bool Unk571) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamMotionBlur|natives.setCamMotionBlur(int cam, float blur) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamName|natives.setCamName(int cam, string camname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamNearClip|natives.setCamNearClip(int cam, float clip) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamNearDof|natives.setCamNearDof(int cam, float dof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPointDampingParams|natives.setCamPointDampingParams(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPointOffsetIsRelative|natives.setCamPointOffsetIsRelative(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPointOffset|natives.setCamPointOffset(int cam, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPos|natives.setCamPos(int camera, float pX, float pY, float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamPropagate|natives.setCamPropagate(int camera, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamRoll|natives.setCamRoll(int cam, float roll) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamRot|natives.setCamRot(int camera, float angleX, float angleY, float angleZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamShake|natives.setCamShake(int cam, bool Unk572, int shakeval) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineCustomSpeedGraph|natives.setCamSplineCustomSpeedGraph(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineDuration|natives.setCamSplineDuration(int cam, int duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineProgress|natives.setCamSplineProgress(int cam, float progress) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineSpeedConstant|natives.setCamSplineSpeedConstant(int cam, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamSplineSpeedGraph|natives.setCamSplineSpeedGraph(int cam, int Unk573) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCamTargetPed|natives.setCamTargetPed(int camera, Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraAutoScriptActivation|natives.setCameraAutoScriptActivation(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraBeginCamCommandsRequired|natives.setCameraBeginCamCommandsRequired(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraControlsDisabledWithPlayerControls|natives.setCameraControlsDisabledWithPlayerControls(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCameraState|natives.setCameraState(int cam, int state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCanBurstCarTyres|natives.setCanBurstCarTyres(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCanResprayCar|natives.setCanResprayCar(Vehicle car, bool can) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCanTargetCharWithoutLos|natives.setCanTargetCharWithoutLos(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAllowedToDrown|natives.setCarAllowedToDrown(Vehicle car, bool allowed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAlwaysCreateSkids|natives.setCarAlwaysCreateSkids(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAnimCurrentTime|natives.setCarAnimCurrentTime(Vehicle car, string animname0, string animname1, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAnimSpeed|natives.setCarAnimSpeed(Vehicle car, string animname0, string animname1, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarAsMissionCar|natives.setCarAsMissionCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCanBeDamaged|natives.setCarCanBeDamaged(Vehicle vehicle, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCanBeVisiblyDamaged|natives.setCarCanBeVisiblyDamaged(Vehicle vehicle, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCollision|natives.setCarCollision(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarColourCombination|natives.setCarColourCombination(Vehicle car, int combination) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCoordinatesNoOffset|natives.setCarCoordinatesNoOffset(Vehicle car, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarCoordinates|natives.setCarCoordinates(Vehicle vehicle, float pX, float pY, float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarDensityMultiplier|natives.setCarDensityMultiplier(float density) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarDistanceAheadMultiplier|natives.setCarDistanceAheadMultiplier(Vehicle car, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarDoorLatched|natives.setCarDoorLatched(Vehicle car, int door, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarEngineOn|natives.setCarEngineOn(Vehicle car, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarExistsOnAllMachines|natives.setCarExistsOnAllMachines(Vehicle vehicle, bool exists) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarForwardSpeed|natives.setCarForwardSpeed(Vehicle vehicle, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovFadeMult|natives.setCarFovFadeMult(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovMax|natives.setCarFovMax(float maxfov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovMin|natives.setCarFovMin(float minfov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovRate|natives.setCarFovRate(float rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovStartSpeedBoat|natives.setCarFovStartSpeedBoat(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarFovStartSpeed|natives.setCarFovStartSpeed(float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarGeneratorsActiveInArea|natives.setCarGeneratorsActiveInArea(Vec3 x0, Vec3 x1, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarHeading|natives.setCarHeading(Vehicle vehicle, float dir) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarHealth|natives.setCarHealth(Vehicle vehicle, uint Value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarInCutscene|natives.setCarInCutscene(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarLaneShift|natives.setCarLaneShift(Vehicle car, float shift) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarLightMultiplier|natives.setCarLightMultiplier(Vehicle car, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarLivery|natives.setCarLivery(Vehicle car, int livery) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarMotionBlurEffectBoat|natives.setCarMotionBlurEffectBoat(float blur) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarNotDamagedByRelationshipGroup|natives.setCarNotDamagedByRelationshipGroup(Vehicle car, bool set, int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarOnlyDamagedByPlayer|natives.setCarOnlyDamagedByPlayer(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarOnlyDamagedByRelationshipGroup|natives.setCarOnlyDamagedByRelationshipGroup(Vehicle car, bool set, int group) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarProofs|natives.setCarProofs(Vehicle vehicle, bool bulletProof, bool fireProof, bool explosionProof, bool collisionProof, bool meleeProof) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarRandomRouteSeed|natives.setCarRandomRouteSeed(Vehicle car, int seed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarStayInFastLane|natives.setCarStayInFastLane(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarStayInSlowLane|natives.setCarStayInSlowLane(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarStrong|natives.setCarStrong(Vehicle vehicle, bool strong) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarTraction|natives.setCarTraction(Vehicle car, float traction) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarVisible|natives.setCarVisible(Vehicle vehicle, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCarWatertight|natives.setCarWatertight(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCellphoneRanked|natives.setCellphoneRanked(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAccuracy|natives.setCharAccuracy(Ped ped, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAllAnimsSpeed|natives.setCharAllAnimsSpeed(Ped ped, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAllowedToDuck|natives.setCharAllowedToDuck(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAllowedToRunOnBoats|natives.setCharAllowedToRunOnBoats(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAmmo|natives.setCharAmmo(Ped ped, uint weapon, uint ammo) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAngledDefensiveArea|natives.setCharAngledDefensiveArea(Ped ped, Vec3 x0, Vec3 x1, float angle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimBlendOutDelta|natives.setCharAnimBlendOutDelta(Ped ped, string AnimName0, string AnimName1, float delta) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimCurrentTime|natives.setCharAnimCurrentTime(Ped ped, string AnimName0, string AnimName1, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimPlayingFlag|natives.setCharAnimPlayingFlag(Ped ped, string AnimName0, string AnimName1, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAnimSpeed|natives.setCharAnimSpeed(Ped ped, string AnimName0, string AnimName1, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAsEnemy|natives.setCharAsEnemy(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharAsMissionChar|natives.setCharAsMissionChar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharBleeding|natives.setCharBleeding(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharBulletproofVest|natives.setCharBulletproofVest(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCanBeKnockedOffBike|natives.setCharCanBeKnockedOffBike(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCanBeShotInVehicle|natives.setCharCanBeShotInVehicle(Ped ped, bool enabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCanSmashGlass|natives.setCharCanSmashGlass(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCantBeDraggedOut|natives.setCharCantBeDraggedOut(Ped ped, bool enabled) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharClimbAnimRate|natives.setCharClimbAnimRate(Ped ped, float rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCollision|natives.setCharCollision(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharComponentVariation|natives.setCharComponentVariation(Ped ped, uint component, uint modelVariation, uint textureVariation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesDontClearPlayerTasks|natives.setCharCoordinatesDontClearPlayerTasks(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesDontWarpGangNoOffset|natives.setCharCoordinatesDontWarpGangNoOffset(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesDontWarpGang|natives.setCharCoordinatesDontWarpGang(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinatesNoOffset|natives.setCharCoordinatesNoOffset(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCoordinates|natives.setCharCoordinates(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharCurrentWeaponVisible|natives.setCharCurrentWeaponVisible(Ped ped, bool visble) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDecisionMakerToDefault|natives.setCharDecisionMakerToDefault(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDecisionMaker|natives.setCharDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDefaultComponentVariation|natives.setCharDefaultComponentVariation(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDefensiveAreaAttachedToPed|natives.setCharDefensiveAreaAttachedToPed(Ped ped, Ped pednext, Vec3 x0, Vec3 x1, int Unk7, int Unk8) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDesiredHeading|natives.setCharDesiredHeading(Ped ped, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDiesInstantlyInWater|natives.setCharDiesInstantlyInWater(Ped ped, bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDropsWeaponsWhenDead|natives.setCharDropsWeaponsWhenDead(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDrownsInSinkingVehicle|natives.setCharDrownsInSinkingVehicle(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDrownsInWater|natives.setCharDrownsInWater(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDruggedUp|natives.setCharDruggedUp(Ped ped, bool drugged) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharDuckingTimed|natives.setCharDuckingTimed(Ped ped, int timed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharFireDamageMultiplier|natives.setCharFireDamageMultiplier(Ped ped, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharForceDieInCar|natives.setCharForceDieInCar(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharGestureGroup|natives.setCharGestureGroup(Ped ped, string AnimGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharGetOutUpsideDownCar|natives.setCharGetOutUpsideDownCar(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharGravity|natives.setCharGravity(Ped ped, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharHeading|natives.setCharHeading(Ped ped, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharHealth|natives.setCharHealth(Ped ped, uint health) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharInCutscene|natives.setCharInCutscene(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharInvincible|natives.setCharInvincible(Ped ped, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharIsTargetPriority|natives.setCharIsTargetPriority(Ped ped, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharKeepTask|natives.setCharKeepTask(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxHealth|natives.setCharMaxHealth(Ped ped, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxMoveBlendRatio|natives.setCharMaxMoveBlendRatio(Ped ped, float ratio) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxTimeInWater|natives.setCharMaxTimeInWater(Ped ped, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMaxTimeUnderwater|natives.setCharMaxTimeUnderwater(Ped ped, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeActionFlag0|natives.setCharMeleeActionFlag0(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeActionFlag1|natives.setCharMeleeActionFlag1(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeActionFlag2|natives.setCharMeleeActionFlag2(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMeleeMovementConstaintBox|natives.setCharMeleeMovementConstaintBox(Ped ped, Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMoney|natives.setCharMoney(Ped ped, uint amount) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMoveAnimSpeedMultiplier|natives.setCharMoveAnimSpeedMultiplier(Ped ped, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharMovementAnimsBlocked|natives.setCharMovementAnimsBlocked(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNameDebug|natives.setCharNameDebug(Ped ped, string debugName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNeverLeavesGroup|natives.setCharNeverLeavesGroup(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNeverTargetted|natives.setCharNeverTargetted(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharNotDamagedByRelationshipGroup|natives.setCharNotDamagedByRelationshipGroup(Ped ped, int relationshipGroup, bool enable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharOnlyDamagedByPlayer|natives.setCharOnlyDamagedByPlayer(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharOnlyDamagedByRelationshipGroup|natives.setCharOnlyDamagedByRelationshipGroup(Ped ped, bool set, int relgroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharProofs|natives.setCharProofs(Ped ped, bool unknown0, bool fallingDamage, bool unknown1, bool unknown2, bool unknown3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharPropIndexTexture|natives.setCharPropIndexTexture(Ped ped, uint propType, uint index, uint texture) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharPropIndex|natives.setCharPropIndex(Ped ped, uint propType, uint index) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharProvideCoveringFire|natives.setCharProvideCoveringFire(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRandomComponentVariation|natives.setCharRandomComponentVariation(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharReadyToBeExecuted|natives.setCharReadyToBeExecuted(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharReadyToBeStunned|natives.setCharReadyToBeStunned(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRelationshipGroup|natives.setCharRelationshipGroup(Ped ped, int relationshipGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRelationship|natives.setCharRelationship(Ped ped, uint relationshipLevel, int relationshipGroup) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharRotation|natives.setCharRotation(Ped ped, Vec3 xr) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharShootRate|natives.setCharShootRate(Ped ped, int rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharSignalAfterKill|natives.setCharSignalAfterKill(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharSphereDefensiveArea|natives.setCharSphereDefensiveArea(Ped ped, Vec3 x, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharStayInCarWhenJacked|natives.setCharStayInCarWhenJacked(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharSuffersCriticalHits|natives.setCharSuffersCriticalHits(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharUsesDeafultAnimGroupWhenFleeing|natives.setCharUsesDeafultAnimGroupWhenFleeing(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharUsesUpperbodyDamageAnimsOnly|natives.setCharUsesUpperbodyDamageAnimsOnly(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharVelocity|natives.setCharVelocity(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharVisible|natives.setCharVisible(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWalkAlongsideLeaderWhenAppropriate|natives.setCharWalkAlongsideLeaderWhenAppropriate(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWantedByPolice|natives.setCharWantedByPolice(Ped ped, bool wanted) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWatchMelee|natives.setCharWatchMelee(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWeaponSkill|natives.setCharWeaponSkill(Ped ped, int skill) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillCowerInsteadOfFleeing|natives.setCharWillCowerInsteadOfFleeing(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillDoDrivebys|natives.setCharWillDoDrivebys(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillFlyThroughWindscreen|natives.setCharWillFlyThroughWindscreen(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillLeaveCarInCombat|natives.setCharWillLeaveCarInCombat(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillMoveWhenInjured|natives.setCharWillMoveWhenInjured(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillOnlyFireWithClearLos|natives.setCharWillOnlyFireWithClearLos(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillRemainOnBoatAfterMissionEnds|natives.setCharWillRemainOnBoatAfterMissionEnds(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillTryToLeaveBoatAfterLeader|natives.setCharWillTryToLeaveBoatAfterLeader(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillTryToLeaveWater|natives.setCharWillTryToLeaveWater(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillUseCarsInCombat|natives.setCharWillUseCarsInCombat(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCharWillUseCover|natives.setCharWillUseCover(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCinematicButtonEnabled|natives.setCinematicButtonEnabled(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setClearHelpInMissionCleanup|natives.setClearHelpInMissionCleanup(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setClearManifolds|natives.setClearManifolds(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCollectable1Total|natives.setCollectable1Total(int total) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCollideWithPeds|natives.setCollideWithPeds(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCombatDecisionMaker|natives.setCombatDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setConvertibleRoof|natives.setConvertibleRoof(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCreateRandomCops|natives.setCreateRandomCops(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCreditsToRenderBeforeFade|natives.setCreditsToRenderBeforeFade(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCurrentCharWeapon|natives.setCurrentCharWeapon(Ped ped, uint w, bool unknownTrue) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCurrentMovie|natives.setCurrentMovie(string filename) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setCutsceneExtraRoomPos|natives.setCutsceneExtraRoomPos(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDanceShakeActiveThisUpdate|natives.setDanceShakeActiveThisUpdate(float shake) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDanceShakeInactiveImmediately|natives.setDanceShakeInactiveImmediately(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDeadCharCoordinates|natives.setDeadCharCoordinates(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDeadPedsDropWeapons|natives.setDeadPedsDropWeapons(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDeathWeaponsPersist|natives.setDeathWeaponsPersist(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDebugTextVisible|natives.setDebugTextVisible(bool Unk1120) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeCanChangeTarget|natives.setDecisionMakerAttributeCanChangeTarget(int dm, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeCaution|natives.setDecisionMakerAttributeCaution(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeFireRate|natives.setDecisionMakerAttributeFireRate(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeLowHealth|natives.setDecisionMakerAttributeLowHealth(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeMovementStyle|natives.setDecisionMakerAttributeMovementStyle(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeNavigationStyle|natives.setDecisionMakerAttributeNavigationStyle(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeRetreatingBehaviour|natives.setDecisionMakerAttributeRetreatingBehaviour(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeSightRange|natives.setDecisionMakerAttributeSightRange(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeStandingStyle|natives.setDecisionMakerAttributeStandingStyle(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeTargetInjuredReaction|natives.setDecisionMakerAttributeTargetInjuredReaction(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeTargetLossResponse|natives.setDecisionMakerAttributeTargetLossResponse(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeTeamwork|natives.setDecisionMakerAttributeTeamwork(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDecisionMakerAttributeWeaponAccuracy|natives.setDecisionMakerAttributeWeaponAccuracy(int dm, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDefaultGlobalInstancePriority|natives.setDefaultGlobalInstancePriority(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDisablePlayerShoveAnimation|natives.setDisablePlayerShoveAnimation(Ped ped, bool disable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDisplayPlayerNameAndIcon|natives.setDisplayPlayerNameAndIcon(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDitchPoliceModels|natives.setDitchPoliceModels(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDoNotSpawnParkedCarsOnTop|natives.setDoNotSpawnParkedCarsOnTop(int pickup, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDontActivateRagdollFromPlayerImpact|natives.setDontActivateRagdollFromPlayerImpact(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDoorState|natives.setDoorState(Object door, bool flag, float Unk95) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDrawPlayerComponent|natives.setDrawPlayerComponent(int component, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDriveTaskCruiseSpeed|natives.setDriveTaskCruiseSpeed(Ped ped, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setDrunkCam|natives.setDrunkCam(int cam, float val, int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEnableNearClipScan|natives.setEnableNearClipScan(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEnableRcDetonateOnContact|natives.setEnableRcDetonateOnContact(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEnableRcDetonate|natives.setEnableRcDetonate(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEngineHealth|natives.setEngineHealth(Vehicle vehicle, float health) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setEveryoneIgnorePlayer|natives.setEveryoneIgnorePlayer(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setExtraCarColours|natives.setExtraCarColours(Vehicle vehicle, int colour1, int colour2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setExtraHospitalRestartPoint|natives.setExtraHospitalRestartPoint(Vec3 x, float Unk489, float Unk490) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setExtraPoliceStationRestartPoint|natives.setExtraPoliceStationRestartPoint(Vec3 x, float Unk491, float Unk492) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFadeInAfterLoad|natives.setFadeInAfterLoad(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFakeWantedCircle|natives.setFakeWantedCircle(Vec2 x, float radius, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFakeWantedLevel|natives.setFakeWantedLevel(int lvl) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFilterMenuOn|natives.setFilterMenuOn(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFilterSaveSetting|natives.setFilterSaveSetting(int filterid, int setting) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFixedCamPos|natives.setFixedCamPos(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFloatStat|natives.setFloatStat(uint stat, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowPedPitchLimitDown|natives.setFollowPedPitchLimitDown(float pitchdownlim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowPedPitchLimitUp|natives.setFollowPedPitchLimitUp(float pitchuplim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehicleCamOffset|natives.setFollowVehicleCamOffset(bool Unk574, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehicleCamSubmode|natives.setFollowVehicleCamSubmode(int mode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehiclePitchLimitDown|natives.setFollowVehiclePitchLimitDown(float pitchdownlim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFollowVehiclePitchLimitUp|natives.setFollowVehiclePitchLimitUp(float pitchuplim) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setForceLookBehind|natives.setForceLookBehind(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setForcePlayerToEnterThroughDirectDoor|natives.setForcePlayerToEnterThroughDirectDoor(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFovChannelScript|natives.setFovChannelScript(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFreeHealthCare|natives.setFreeHealthCare(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFreeResprays|natives.setFreeResprays(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setFreebiesInVehicle|natives.setFreebiesInVehicle(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGameCamHeading|natives.setGameCamHeading(float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGameCamPitch|natives.setGameCamPitch(float pitch) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGameCameraControlsActive|natives.setGameCameraControlsActive(bool active) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGangCar|natives.setGangCar(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGarageLeaveCameraAlone|natives.setGarageLeaveCameraAlone(string garageName, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGfwlHasSafeHouse|natives.setGfwlHasSafeHouse(uint ukn) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGlobalInstancePriority|natives.setGlobalInstancePriority(int priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGlobalRenderFlags|natives.setGlobalRenderFlags(bool Unk507, bool Unk508, bool Unk509, bool Unk510) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGpsRemainsWhenTargetReachedFlag|natives.setGpsRemainsWhenTargetReachedFlag(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGpsTestIn3dFlag|natives.setGpsTestIn3dFlag(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGpsVoiceForVehicle|natives.setGpsVoiceForVehicle(Vehicle veh, int VoiceId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGravityOff|natives.setGravityOff(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupCharDecisionMaker|natives.setGroupCharDecisionMaker(int group, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupCharDucksWhenAimedAt|natives.setGroupCharDucksWhenAimedAt(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupCombatDecisionMaker|natives.setGroupCombatDecisionMaker(int group, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupFollowStatus|natives.setGroupFollowStatus(int group, uint status) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupFormationSpacing|natives.setGroupFormationSpacing(int group, float space) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupFormation|natives.setGroupFormation(int group, uint formation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupLeader|natives.setGroupLeader(int group, Ped leader) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupMember|natives.setGroupMember(int group, Ped member) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGroupSeparationRange|natives.setGroupSeparationRange(int group, float seperation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setGunshotSenseRangeForRiot2|natives.setGunshotSenseRangeForRiot2(float range) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHasBeenOwnedByPlayer|natives.setHasBeenOwnedByPlayer(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHasBeenOwnedForCarGenerator|natives.setHasBeenOwnedForCarGenerator(int CarGen, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeadingLimitForAttachedPed|natives.setHeadingLimitForAttachedPed(Ped ped, float heading0, float heading1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeadingOfClosestObjectOfType|natives.setHeadingOfClosestObjectOfType(Vec3 x, float radius, uint type_or_model, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHealthPickupNetworkRegenTime|natives.setHealthPickupNetworkRegenTime(uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeliBladesFullSpeed|natives.setHeliBladesFullSpeed(Vehicle heli) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeliForceEngineOn|natives.setHeliForceEngineOn(Vehicle heli, bool set) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHeliStabiliser|natives.setHeliStabiliser(Vehicle heli, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHelpMessageBoxSizeF|natives.setHelpMessageBoxSizeF(float size) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHelpMessageBoxSize|natives.setHelpMessageBoxSize(float Unk773) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHideWeaponIcon|natives.setHideWeaponIcon(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintAdvancedParams|natives.setHintAdvancedParams(float Unk575, float Unk576, float Unk577, float Unk578, bool Unk579) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintFov|natives.setHintFov(float fov) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintMoveInDistDefault|natives.setHintMoveInDistDefault(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintMoveInDist|natives.setHintMoveInDist(float dist) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintTimesDefault|natives.setHintTimesDefault(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHintTimes|natives.setHintTimes(float Unk580, float Unk581, float Unk582) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHostMatchOn|natives.setHostMatchOn(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setHotWeaponSwap|natives.setHotWeaponSwap(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIgnoreLowPriorityShockingEvents|natives.setIgnoreLowPriorityShockingEvents(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIgnoreNoGpsFlag|natives.setIgnoreNoGpsFlag(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIkDisabledForNetworkPlayer|natives.setIkDisabledForNetworkPlayer(Player playerIndex, bool Unk965) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInMpTutorial|natives.setInMpTutorial(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInSpectatorMode|natives.setInSpectatorMode(bool spectate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInformRespectedFriends|natives.setInformRespectedFriends(Ped ped, int Unk43, int Unk44) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInstantWidescreenBorders|natives.setInstantWidescreenBorders(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setIntStat|natives.setIntStat(uint stat, uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInterpFromGameToScript|natives.setInterpFromGameToScript(bool Unk604, int Unk605) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInterpFromScriptToGame|natives.setInterpFromScriptToGame(bool Unk606, int Unk607) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setInterpInOutVehicleEnabledThisFrame|natives.setInterpInOutVehicleEnabledThisFrame(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setKillstreak|natives.setKillstreak(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoadCollisionForCarFlag|natives.setLoadCollisionForCarFlag(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoadCollisionForCharFlag|natives.setLoadCollisionForCharFlag(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoadCollisionForObjectFlag|natives.setLoadCollisionForObjectFlag(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLobbyMuteOverride|natives.setLobbyMuteOverride(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLocalPlayerPainVoice|natives.setLocalPlayerPainVoice(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLocalPlayerVoice|natives.setLocalPlayerVoice(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setLoudVehicleRadio|natives.setLoudVehicleRadio(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMask|natives.setMask(float Unk774, float Unk775, float Unk776, float Unk777) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMaxFireGenerations|natives.setMaxFireGenerations(int max) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMaxWantedLevel|natives.setMaxWantedLevel(uint lvl) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuColumnOrientation|natives.setMenuColumnOrientation(int menuid, int column, int orientation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuColumnWidth|natives.setMenuColumnWidth(int menuid, int column, float width) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuItemWith2Numbers|natives.setMenuItemWith2Numbers(int menuid, int item, int Unk880, string gxtkey, int number0, int number1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMenuItemWithNumber|natives.setMenuItemWithNumber(int menuid, int item, int Unk881, string gxtkey, int number) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMessageFormatting|natives.setMessageFormatting(bool Unk700, int Unk701, int Unk702) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMessagesWaiting|natives.setMessagesWaiting(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMinMaxPedAccuracy|natives.setMinMaxPedAccuracy(Ped ped, float min, float max) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMinigameInProgress|natives.setMinigameInProgress(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionFlag|natives.setMissionFlag(bool isMission) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionPassedCash|natives.setMissionPassedCash(bool add, int cash, int Unk511) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionPickupSound|natives.setMissionPickupSound(uint model, string SoundName) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionRespectTotal|natives.setMissionRespectTotal(float respect) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMissionTrainCoordinates|natives.setMissionTrainCoordinates(Vehicle train, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhonePosition|natives.setMobilePhonePosition(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhoneRadioState|natives.setMobilePhoneRadioState(bool state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhoneRotation|natives.setMobilePhoneRotation(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobilePhoneScale|natives.setMobilePhoneScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobileRadioEnabledDuringGameplay|natives.setMobileRadioEnabledDuringGameplay(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMobileRingType|natives.setMobileRingType(int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMoneyCarriedByAllNewPeds|natives.setMoneyCarriedByAllNewPeds(int money) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMoneyCarriedByPedWithModel|natives.setMoneyCarriedByPedWithModel(uint model, int m0, int m1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMovieTime|natives.setMovieTime(float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMovieVolume|natives.setMovieVolume(float volume) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMsgForLoadingScreen|natives.setMsgForLoadingScreen(string label) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMultiplayerHudCash|natives.setMultiplayerHudCash(uint cash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setMultiplayerHudTime|natives.setMultiplayerHudTime(string str) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNeedsToBeHotwired|natives.setNeedsToBeHotwired(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkIdCanMigrate|natives.setNetworkIdCanMigrate(int netid, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkIdExistsOnAllMachines|natives.setNetworkIdExistsOnAllMachines(int netID, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkIdStopCloning|natives.setNetworkIdStopCloning(int id, bool Unk966) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkJoinFail|natives.setNetworkJoinFail(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkPedUsingParachute|natives.setNetworkPedUsingParachute(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkPlayerAsVip|natives.setNetworkPlayerAsVip(Player playerIndex, bool Unk967) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNetworkVehicleRespotTimer|natives.setNetworkVehicleRespotTimer(int id, int timer) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNextDesiredMoveState|natives.setNextDesiredMoveState(int state) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmAnimPose|natives.setNmAnimPose(Ped ped, string AnimName0, string AnimName1, float pose) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageBool|natives.setNmMessageBool(int id, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageFloat|natives.setNmMessageFloat(int id, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageInstanceIndex|natives.setNmMessageInstanceIndex(int id, Ped ped, Vehicle car, Object obj) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageInt|natives.setNmMessageInt(int id, int value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageString|natives.setNmMessageString(int id, string string) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNmMessageVec3|natives.setNmMessageVec3(int id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setNoResprays|natives.setNoResprays(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAlpha|natives.setObjectAlpha(Object obj, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAnimCurrentTime|natives.setObjectAnimCurrentTime(Object obj, string animname0, string animname1, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAnimPlayingFlag|natives.setObjectAnimPlayingFlag(Object obj, string animname0, string animname1, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAnimSpeed|natives.setObjectAnimSpeed(Object obj, string animname0, string animname1, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectAsStealable|natives.setObjectAsStealable(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectCcd|natives.setObjectCcd(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectCollision|natives.setObjectCollision(Object obj, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectCoordinates|natives.setObjectCoordinates(Object obj, float pX, float pY, float pZ) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectDrawLast|natives.setObjectDrawLast(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectDynamic|natives.setObjectDynamic(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectExistsOnAllMachines|natives.setObjectExistsOnAllMachines(Object obj, bool exists) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectHeading|natives.setObjectHeading(Object obj, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectHealth|natives.setObjectHealth(Object obj, float health) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectInitialRotationVelocity|natives.setObjectInitialRotationVelocity(Object obj, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectInitialVelocity|natives.setObjectInitialVelocity(Object obj, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectInvincible|natives.setObjectInvincible(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectLights|natives.setObjectLights(Object obj, bool lights) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectOnlyDamagedByPlayer|natives.setObjectOnlyDamagedByPlayer(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectPhysicsParams|natives.setObjectPhysicsParams(Object obj, float Unk96, float Unk97, Vec3 v0x, Vec3 v1x, uint flag0, uint flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectProofs|natives.setObjectProofs(Object obj, bool unknown0, bool fallingDamage, bool unknown1, bool unknown2, bool unknown3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectQuaternion|natives.setObjectQuaternion(Object obj, Vec3 qx, float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectRecordsCollisions|natives.setObjectRecordsCollisions(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectRenderScorched|natives.setObjectRenderScorched(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectRotation|natives.setObjectRotation(Object obj, float Pitch, float Roll, float Yaw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectScale|natives.setObjectScale(Object obj, float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectUsedInPoolGame|natives.setObjectUsedInPoolGame(Object obj, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setObjectVisible|natives.setObjectVisible(Object obj, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setOnlineLan|natives.setOnlineLan(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setOnscreenCounterFlashWhenFirstDisplayed|natives.setOnscreenCounterFlashWhenFirstDisplayed(int counterid, bool flash) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setOverrideNoSprintingOnPhoneInMultiplayer|natives.setOverrideNoSprintingOnPhoneInMultiplayer(bool Unk969) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setParkedCarDensityMultiplier|natives.setParkedCarDensityMultiplier(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedAllowMissionOnlyDrivebyUse|natives.setPedAllowMissionOnlyDrivebyUse(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedAlpha|natives.setPedAlpha(Ped ped, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedComponentsToNetworkPlayersettingsModel|natives.setPedComponentsToNetworkPlayersettingsModel(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDensityMultiplier|natives.setPedDensityMultiplier(float density) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDiesWhenInjured|natives.setPedDiesWhenInjured(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDontDoEvasiveDives|natives.setPedDontDoEvasiveDives(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedDontUseVehicleSpecificAnims|natives.setPedDontUseVehicleSpecificAnims(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedEnableLegIk|natives.setPedEnableLegIk(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedExistsOnAllMachines|natives.setPedExistsOnAllMachines(Ped ped, bool exists) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedFallOffBikesWhenShot|natives.setPedFallOffBikesWhenShot(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedFireFxLodScaler|natives.setPedFireFxLodScaler(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedForceFlyThroughWindscreen|natives.setPedForceFlyThroughWindscreen(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedForceVisualiseHeadDamageFromBullets|natives.setPedForceVisualiseHeadDamageFromBullets(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedGeneratesDeadBodyEvents|natives.setPedGeneratesDeadBodyEvents(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedHeedsTheEveryoneIgnorePlayerFlag|natives.setPedHeedsTheEveryoneIgnorePlayerFlag(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedHeliPilotRespectsMinimummHeight|natives.setPedHeliPilotRespectsMinimummHeight(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedHelmetTextureIndex|natives.setPedHelmetTextureIndex(Ped ped, int index) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedInstantBlendsWeaponAnims|natives.setPedInstantBlendsWeaponAnims(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedIsBlindRaging|natives.setPedIsBlindRaging(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedIsDrunk|natives.setPedIsDrunk(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedMobileRingType|natives.setPedMobileRingType(Ped ped, int RingtoneId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedMotionBlur|natives.setPedMotionBlur(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedNonCreationArea|natives.setPedNonCreationArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedNonRemovalArea|natives.setPedNonRemovalArea(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathMayDropFromHeight|natives.setPedPathMayDropFromHeight(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathMayUseClimbovers|natives.setPedPathMayUseClimbovers(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathMayUseLadders|natives.setPedPathMayUseLadders(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedPathWillAvoidDynamicObjects|natives.setPedPathWillAvoidDynamicObjects(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedSkipsComplexCoverCollisionChecks|natives.setPedSkipsComplexCoverCollisionChecks(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedSteersAroundObjects|natives.setPedSteersAroundObjects(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedSteersAroundPeds|natives.setPedSteersAroundPeds(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedWindyClothingScale|natives.setPedWindyClothingScale(Ped ped, float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedWithBrainCanBeConvertedToDummyPed|natives.setPedWithBrainCanBeConvertedToDummyPed(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPedWontAttackPlayerWithoutWantedLevel|natives.setPedWontAttackPlayerWithoutWantedLevel(Ped ped, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPetrolTankHealth|natives.setPetrolTankHealth(Vehicle vehicle, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPetrolTankWeakpoint|natives.setPetrolTankWeakpoint(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPhoneHudItem|natives.setPhoneHudItem(int id, string gxttext, int Unk800) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPhysCcdHandlesRotation|natives.setPhysCcdHandlesRotation(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPickupCollectableByCar|natives.setPickupCollectableByCar(Object pickup, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPickupsFixCars|natives.setPickupsFixCars(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlaneThrottle|natives.setPlaneThrottle(Vehicle plane, float throttle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlaneUndercarriageUp|natives.setPlaneUndercarriageUp(Vehicle plain, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlaybackSpeed|natives.setPlaybackSpeed(Vehicle car, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerAsCop|natives.setPlayerAsCop(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerAsDamagedPlayer|natives.setPlayerAsDamagedPlayer(Player playerIndex, int Unk1057, bool Unk1058) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanBeHassledByGangs|natives.setPlayerCanBeHassledByGangs(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanDoDriveBy|natives.setPlayerCanDoDriveBy(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanDropWeaponsInCar|natives.setPlayerCanDropWeaponsInCar(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerCanUseCover|natives.setPlayerCanUseCover(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlAdvanced|natives.setPlayerControlAdvanced(Player playerIndex, bool unknown1, bool unknown2, bool unknown3) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlForAmbientScript|natives.setPlayerControlForAmbientScript(Player playerIndex, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlForNetwork|natives.setPlayerControlForNetwork(Player playerIndex, bool unknownTrue, bool unknownFalse) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlForTextChat|natives.setPlayerControlForTextChat(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControlOnInMissionCleanup|natives.setPlayerControlOnInMissionCleanup(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerControl|natives.setPlayerControl(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerDisableCrouch|natives.setPlayerDisableCrouch(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerDisableJump|natives.setPlayerDisableJump(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerFastReload|natives.setPlayerFastReload(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerForcedAim|natives.setPlayerForcedAim(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerGroupRecruitment|natives.setPlayerGroupRecruitment(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerGroupToFollowAlways|natives.setPlayerGroupToFollowAlways(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerGroupToFollowNever|natives.setPlayerGroupToFollowNever(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerIconColour|natives.setPlayerIconColour(int colour) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerInvincible|natives.setPlayerInvincible(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerInvisibleToAi|natives.setPlayerInvisibleToAi(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerIsInStadium|natives.setPlayerIsInStadium(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerKeepsWeaponsWhenRespawned|natives.setPlayerKeepsWeaponsWhenRespawned(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMayOnlyEnterThisVehicle|natives.setPlayerMayOnlyEnterThisVehicle(Player playerIndex, Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMoodNormal|natives.setPlayerMoodNormal(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMoodPissedOff|natives.setPlayerMoodPissedOff(Player playerIndex, uint unknown150) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerMpModifier|natives.setPlayerMpModifier(Player playerIndex, int Unk12, float modifier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerNeverGetsTired|natives.setPlayerNeverGetsTired(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerPainRootBankName|natives.setPlayerPainRootBankName(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerPlayerTargetting|natives.setPlayerPlayerTargetting(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerSettingsGenre|natives.setPlayerSettingsGenre(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayerTeam|natives.setPlayerTeam(Player playerIndex, int team) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayersDropMoneyInNetworkGame|natives.setPlayersDropMoneyInNetworkGame(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPlayersettingsModelVariationsChoice|natives.setPlayersettingsModelVariationsChoice(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPoliceFocusWillTrackCar|natives.setPoliceFocusWillTrackCar(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPoliceIgnorePlayer|natives.setPoliceIgnorePlayer(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPoliceRadarBlips|natives.setPoliceRadarBlips(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setPtfxCamInsideVehicle|natives.setPtfxCamInsideVehicle(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRadarAsInteriorThisFrame|natives.setRadarAsInteriorThisFrame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRadarScale|natives.setRadarScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRadarZoom|natives.setRadarZoom(float zoom) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRailtrackResistanceMult|natives.setRailtrackResistanceMult(float resistance) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRandomCarDensityMultiplier|natives.setRandomCarDensityMultiplier(float density) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRandomSeed|natives.setRandomSeed(int seed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRecordingToPointNearestToCoors|natives.setRecordingToPointNearestToCoors(Vehicle cat, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setReducePedModelBudget|natives.setReducePedModelBudget(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setReduceVehicleModelBudget|natives.setReduceVehicleModelBudget(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRelationship|natives.setRelationship(uint relationshipLevel, int relationshipGroup1, int relationshipGroup2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRenderTrainAsDerailed|natives.setRenderTrainAsDerailed(Vehicle train, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setReturnToFilterMenu|natives.setReturnToFilterMenu(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplatefilter|natives.setRichPresenceTemplatefilter(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplatemp3|natives.setRichPresenceTemplatemp3(int Unk982, int Unk983) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplateparty|natives.setRichPresenceTemplateparty(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRichPresenceTemplatesp2|natives.setRichPresenceTemplatesp2(int Unk995) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRocketLauncherFreebieInHeli|natives.setRocketLauncherFreebieInHeli(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRomansMood|natives.setRomansMood(int moood) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCarByKey|natives.setRoomForCarByKey(Vehicle car, uint roomkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCarByName|natives.setRoomForCarByName(Vehicle car, string roomname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCharByKey|natives.setRoomForCharByKey(Ped ped, uint key) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForCharByName|natives.setRoomForCharByName(Ped ped, string roomname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForViewportByKey|natives.setRoomForViewportByKey(int viewportid, uint roomkey) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoomForViewportByName|natives.setRoomForViewportByName(int viewportid, string roomname) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRotOrder|natives.setRotOrder(int order) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRotationForAttachedPed|natives.setRotationForAttachedPed(Ped ped, Vec3 xr) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setRoute|natives.setRoute(int blip, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScenarioPedDensityMultiplier|natives.setScenarioPedDensityMultiplier(float density, float densitynext) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScreenFade|natives.setScreenFade(int viewportid, int Unk778, int Unk779, bool Unk780, int r, int g, int b, int a, int Unk781, float Unk782, float Unk783) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptLimitToGangSize|natives.setScriptLimitToGangSize(int size) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptMicLookAt|natives.setScriptMicLookAt(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptMicPosition|natives.setScriptMicPosition(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptedAnimSeatOffset|natives.setScriptedAnimSeatOffset(Ped ped, float offset) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setScriptedConversionCentre|natives.setScriptedConversionCentre(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSelectedMenuItem|natives.setSelectedMenuItem(int menuid, int item) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSenseRange|natives.setSenseRange(Ped ped, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSequenceToRepeat|natives.setSequenceToRepeat(int seq, int repeat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setServerId|natives.setServerId(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSirenWithNoDriver|natives.setSirenWithNoDriver(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSleepModeActive|natives.setSleepModeActive(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSniperZoomFactor|natives.setSniperZoomFactor(float factor) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSpecificPassengerIndexToUseInGroups|natives.setSpecificPassengerIndexToUseInGroups(Ped ped, int index) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSpritesDrawBeforeFade|natives.setSpritesDrawBeforeFade(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStartFromFilterMenu|natives.setStartFromFilterMenu(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendAlwaysVisible|natives.setStatFrontendAlwaysVisible(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendDisplayType|natives.setStatFrontendDisplayType(int stat, int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendNeverVisible|natives.setStatFrontendNeverVisible(int stat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendVisibility|natives.setStatFrontendVisibility(int stat, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStatFrontendVisibleAfterIncremented|natives.setStatFrontendVisibleAfterIncremented(int stat) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStateOfClosestDoorOfType|natives.setStateOfClosestDoorOfType(uint model, Vec3 x, int state, float Unk601) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStreamParams|natives.setStreamParams(float rolloff, int UnkTime) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setStreamingRequestListTime|natives.setStreamingRequestListTime(int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSuppressHeadlightSwitch|natives.setSuppressHeadlightSwitch(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSwimSpeed|natives.setSwimSpeed(Ped ped, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setSyncWeatherAndGameTime|natives.setSyncWeatherAndGameTime(bool sync) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTargetCarForMissionGarage|natives.setTargetCarForMissionGarage(int garage, Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTaxiGarageRadioState|natives.setTaxiGarageRadioState(bool radiostate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTaxiLights|natives.setTaxiLights(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTelescopeCamAngleLimits|natives.setTelescopeCamAngleLimits(float Unk583, float Unk584, float Unk585, float Unk586, float Unk587, float Unk588) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextBackground|natives.setTextBackground(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextCentreWrapx|natives.setTextCentreWrapx(float wrapx) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextCentre|natives.setTextCentre(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextColour|natives.setTextColour(uint r, uint g, uint b, uint a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextDrawBeforeFade|natives.setTextDrawBeforeFade(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextDropshadow|natives.setTextDropshadow(bool displayShadow, uint r, uint g, uint b, uint a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextEdge|natives.setTextEdge(bool displayEdge, uint r, uint g, uint b, uint a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextFont|natives.setTextFont(uint font) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextInputActive|natives.setTextInputActive(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextJustify|natives.setTextJustify(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextLineDisplay|natives.setTextLineDisplay(uint unk1, uint unk2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextLineHeightMult|natives.setTextLineHeightMult(float lineHeight) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextProportional|natives.setTextProportional(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextRenderId|natives.setTextRenderId(uint renderId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextRightJustify|natives.setTextRightJustify(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextScale|natives.setTextScale(float w, float h) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextToUseTextFileColours|natives.setTextToUseTextFileColours(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextUseUnderscore|natives.setTextUseUnderscore(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextViewportId|natives.setTextViewportId(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTextWrap|natives.setTextWrap(float unk1, float unk2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setThisMachineRunningServerScript|natives.setThisMachineRunningServerScript(bool host) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setThisScriptCanRemoveBlipsCreatedByAnyScript|natives.setThisScriptCanRemoveBlipsCreatedByAnyScript(bool allow) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeCycleFarClipDisabled|natives.setTimeCycleFarClipDisabled(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOfDay|natives.setTimeOfDay(uint hour, uint minute) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOfNextAppointment|natives.setTimeOfNextAppointment(int time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOneDayBack|natives.setTimeOneDayBack(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeOneDayForward|natives.setTimeOneDayForward(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimeScale|natives.setTimeScale(float scale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimecycleModifier|natives.setTimecycleModifier(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTimerBeepCountdownTime|natives.setTimerBeepCountdownTime(int timerid, int beeptime) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTotalNumberOfMissions|natives.setTotalNumberOfMissions(float floatstatval) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainAudioRolloff|natives.setTrainAudioRolloff(Vehicle train, float rolloff) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainCruiseSpeed|natives.setTrainCruiseSpeed(Vehicle train, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainForcedToSlowDown|natives.setTrainForcedToSlowDown(Vehicle train, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainIsStoppedAtStation|natives.setTrainIsStoppedAtStation(Vehicle train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainSpeed|natives.setTrainSpeed(Vehicle train, float speed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setTrainStopsForStations|natives.setTrainStopsForStations(Vehicle train, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUpsidedownCarNotDamaged|natives.setUpsidedownCarNotDamaged(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUseHighdof|natives.setUseHighdof(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUseLegIk|natives.setUseLegIk(Player playerIndex, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUsePoolGamePhysicsSettings|natives.setUsePoolGamePhysicsSettings(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setUsesCollisionOfClosestObjectOfType|natives.setUsesCollisionOfClosestObjectOfType(Vec3 x, float radius, uint type_or_model, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVariableOnSound|natives.setVariableOnSound(uint sound, string varname, float value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehAlarmDuration|natives.setVehAlarmDuration(Vehicle veh, int duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehAlarm|natives.setVehAlarm(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehHasStrongAxles|natives.setVehHasStrongAxles(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehHazardlights|natives.setVehHazardlights(Vehicle vehicle, bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehIndicatorlights|natives.setVehIndicatorlights(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehInteriorlight|natives.setVehInteriorlight(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleAlpha|natives.setVehicleAlpha(Vehicle veh, int alpha) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleAlwaysRender|natives.setVehicleAlwaysRender(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleCanBeTargetted|natives.setVehicleCanBeTargetted(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleDeformationMult|natives.setVehicleDeformationMult(Vehicle veh, float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleDirtLevel|natives.setVehicleDirtLevel(Vehicle vehicle, float intensity) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleExplodesOnHighExplosionDamage|natives.setVehicleExplodesOnHighExplosionDamage(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleIsConsideredByPlayer|natives.setVehicleIsConsideredByPlayer(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleQuaternion|natives.setVehicleQuaternion(Vehicle veh, Vec3 qx, float qw) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleRenderScorched|natives.setVehicleRenderScorched(Vehicle veh, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVehicleSteerBias|natives.setVehicleSteerBias(Vehicle veh, float val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportDestination|natives.setViewportDestination(int viewportid, Vec3 x, float Unk593, int Unk594, int Unk595) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportMirrored|natives.setViewportMirrored(int viewportid, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportPriority|natives.setViewportPriority(int viewportid, int priority) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewportShape|natives.setViewportShape(int cam, int shape) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setViewport|natives.setViewport(int viewportid, float Unk589, float Unk590, float Unk591, float Unk592) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVisibilityOfClosestObjectOfType|natives.setVisibilityOfClosestObjectOfType(Vec3 x, float radius, uint type_or_model, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVisibilityOfNearbyEntityWithSpecialAttribute|natives.setVisibilityOfNearbyEntityWithSpecialAttribute(int attribute, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setVoiceIdFromHeadComponent|natives.setVoiceIdFromHeadComponent(Ped ped, int VoiceId, bool IsMale) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWantedMultiplier|natives.setWantedMultiplier(float multiplier) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWeaponPickupNetworkRegenTime|natives.setWeaponPickupNetworkRegenTime(int weaponType, uint timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWebPageLinkActive|natives.setWebPageLinkActive(int htmlviewport, int linkid, bool active) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWebPageScroll|natives.setWebPageScroll(int htmlviewport, float scroll) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWidescreenBorders|natives.setWidescreenBorders(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setWidescreenFormat|natives.setWidescreenFormat(int wideformatid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setZoneNoCops|natives.setZoneNoCops(string name, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setZonePopulationType|natives.setZonePopulationType(string zone, int poptype) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.setZoneScumminess|natives.setZoneScumminess(string zone, int scumminess) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.settimera|natives.settimera(uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.settimerb|natives.settimerb(uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.settimerc|natives.settimerc(int Unk1088) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shakePadInCutscene|natives.shakePadInCutscene(int Unk841, int Unk842, int Unk843) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shakePad|natives.shakePad(int Unk838, int Unk839, int Unk840) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shakePlayerpadWhenControllerDisabled|natives.shakePlayerpadWhenControllerDisabled(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shiftLeft|natives.shiftLeft(int val, uint shifts) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shiftRight|natives.shiftRight(int val, uint shifts) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.showBlipOnAltimeter|natives.showBlipOnAltimeter(int blip, bool show) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.showSigninUi|natives.showSigninUi(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.showUpdateStats|natives.showUpdateStats(bool show) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shutCarDoor|natives.shutCarDoor(Vehicle vehicle, uint door) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shutdownAndLaunchNetworkGame|natives.shutdownAndLaunchNetworkGame(uint episode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.shutdownAndLaunchSinglePlayerGame|natives.shutdownAndLaunchSinglePlayerGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.simulateUpdateLoadScene|natives.simulateUpdateLoadScene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sin|natives.sin(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipInPlaybackRecordedCar|natives.skipInPlaybackRecordedCar(Vehicle car, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipRadioForward|natives.skipRadioForward(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipTimeInPlaybackRecordedCar|natives.skipTimeInPlaybackRecordedCar(int CarRec, float time) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipToEndAndStopPlaybackRecordedCar|natives.skipToEndAndStopPlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipToNextAllowedStation|natives.skipToNextAllowedStation(Vehicle train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.skipToNextScriptedConversationLine|natives.skipToNextScriptedConversationLine(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.slideObject|natives.slideObject(Object obj, Vec3 x, Vec3 xs, bool flag) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.smashCarWindow|natives.smashCarWindow(Vehicle car, int windownum) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.smashGlassOnObject|natives.smashGlassOnObject(Vec3 x, float Unk75, uint model, float Unk76) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.snapshotCam|natives.snapshotCam(int cam, int Unk596) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.soundCarHorn|natives.soundCarHorn(Vehicle vehicle, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneArea|natives.specifyScriptPopulationZoneArea(int Unk848, int Unk849, int Unk850, int Unk851, int Unk852, int Unk853) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneGroups|natives.specifyScriptPopulationZoneGroups(int Unk854, int Unk855, int Unk856, int Unk857, int Unk858) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumCars|natives.specifyScriptPopulationZoneNumCars(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumParkedCars|natives.specifyScriptPopulationZoneNumParkedCars(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumPeds|natives.specifyScriptPopulationZoneNumPeds(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZoneNumScenarioPeds|natives.specifyScriptPopulationZoneNumScenarioPeds(int num) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.specifyScriptPopulationZonePercentageCops|natives.specifyScriptPopulationZonePercentageCops(int percentage) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck5|natives.spotCheck5(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck6|natives.spotCheck6(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck7|natives.spotCheck7(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.spotCheck8|natives.spotCheck8(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.sqrt|natives.sqrt(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCarFire|natives.startCarFire(Vehicle vehicle) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCharFire|natives.startCharFire(Ped ped) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCredits|natives.startCredits(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCustomMobilePhoneRinging|natives.startCustomMobilePhoneRinging(int RingtoneId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCutsceneNow|natives.startCutsceneNow(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startCutscene|natives.startCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startEndCreditsMusic|natives.startEndCreditsMusic(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startFiringAmnesty|natives.startFiringAmnesty(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startGpsRaceTrack|natives.startGpsRaceTrack(int trackid) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startKillFrenzy|natives.startKillFrenzy(string gxtname, int Unk512, int Unk513, int Unk514, int Unk515, int Unk516, int Unk517, int Unk518, bool Unk519) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startLoadScene|natives.startLoadScene(Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startMobilePhoneCalling|natives.startMobilePhoneCalling(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startMobilePhoneCall|natives.startMobilePhoneCall(Ped callfrom, string callfromvoice, Ped callto, string calltovoice, bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startMobilePhoneRinging|natives.startMobilePhoneRinging(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startNewScript|natives.startNewScript(string scriptName, uint stacksize) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startNewWidgetCombo|natives.startNewWidgetCombo(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPedMobileRinging|natives.startPedMobileRinging(Ped ped, int Unk801) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCarLooped|natives.startPlaybackRecordedCarLooped(Vehicle car, int Unk69) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCarUsingAi|natives.startPlaybackRecordedCarUsingAi(Vehicle car, int CarRec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCarWithOffset|natives.startPlaybackRecordedCarWithOffset(Vehicle car, int CarRec, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPlaybackRecordedCar|natives.startPlaybackRecordedCar(Vehicle car, int CarRec) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnObjBone|natives.startPtfxOnObjBone(string name, Object obj, Vec3 x, float yaw, float pitch, float roll, int objbone, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnObj|natives.startPtfxOnObj(string name, Object obj, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnPedBone|natives.startPtfxOnPedBone(string name, Ped ped, Vec3 x, float yaw, float pitch, float roll, int pedbone, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnPed|natives.startPtfxOnPed(string name, Ped ped, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfxOnVeh|natives.startPtfxOnVeh(string name, Vehicle veh, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startPtfx|natives.startPtfx(string name, Vec3 x, float yaw, float pitch, float roll, float scale) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startScriptConversation|natives.startScriptConversation(bool flag0, bool flag1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startScriptFire|natives.startScriptFire(Vec3 x, uint numGenerationsAllowed, uint strength) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.startStreamingRequestList|natives.startStreamingRequestList(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopCarBreaking|natives.stopCarBreaking(Vehicle car, bool stop) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopCredits|natives.stopCredits(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopCutscene|natives.stopCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopEndCreditsMusic|natives.stopEndCreditsMusic(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopMobilePhoneRinging|natives.stopMobilePhoneRinging(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopMovie|natives.stopMovie(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedDoingFallOffTestsWhenShot|natives.stopPedDoingFallOffTestsWhenShot(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedMobileRinging|natives.stopPedMobileRinging(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedSpeaking|natives.stopPedSpeaking(Ped ped, bool stopspeaking) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPedWeaponFiringWhenDropped|natives.stopPedWeaponFiringWhenDropped(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPlaybackRecordedCar|natives.stopPlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPreviewRingtone|natives.stopPreviewRingtone(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopPtfx|natives.stopPtfx(uint ptfx) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopSound|natives.stopSound(uint sound) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopStream|natives.stopStream(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopSyncingScriptAnimations|natives.stopSyncingScriptAnimations(bool Unk1061) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stopVehicleAlwaysRender|natives.stopVehicleAlwaysRender(Vehicle veh) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.storeCarCharIsInNoSave|natives.storeCarCharIsInNoSave(Ped ped, [output] Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.storeScore|natives.storeScore(Player playerIndex, [output] uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.storeWantedLevel|natives.storeWantedLevel(Player playerIndex, [output] uint value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.streamCutscene|natives.streamCutscene(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stringDifference|natives.stringDifference(string str0, string str1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stringString|natives.stringString(string str0, string str1) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.stringToInt|natives.stringToInt(string str, [output] int intval) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.suppressCarModel|natives.suppressCarModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.suppressFadeInAfterDeathArrest|natives.suppressFadeInAfterDeathArrest(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.suppressPedModel|natives.suppressPedModel(uint model) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.swapNearestBuildingModel|natives.swapNearestBuildingModel(Vec3 x, float radius, uint modelfrom, uint modelto) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchAmbientPlanes|natives.switchAmbientPlanes(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchArrowAboveBlippedPickups|natives.switchArrowAboveBlippedPickups(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchCarGenerator|natives.switchCarGenerator(int handle, int type) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchCarSiren|natives.switchCarSiren(Vehicle car, bool siren) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchGarbageTrucks|natives.switchGarbageTrucks(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchMadDrivers|natives.switchMadDrivers(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchObjectBrains|natives.switchObjectBrains(int brain, bool switchstate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchOffWaypoint|natives.switchOffWaypoint(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedPathsOff|natives.switchPedPathsOff(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedPathsOn|natives.switchPedPathsOn(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedRoadsBackToOriginal|natives.switchPedRoadsBackToOriginal(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedToAnimated|natives.switchPedToAnimated(Ped ped, bool instantly) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedToRagdollWithFall|natives.switchPedToRagdollWithFall(Ped ped, int Unk15, int Unk16, int Unk17, float Unk18, float Unk19, int Unk20, float Unk21, float Unk22, float Unk23, float Unk24, float Unk25, float Unk26, float Unk27) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPedToRagdoll|natives.switchPedToRagdoll(Ped ped, int Unk14, int time, bool flag0, bool flag1, bool flag2, bool flag3) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchPoliceHelis|natives.switchPoliceHelis(bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRandomBoats|natives.switchRandomBoats(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRandomTrains|natives.switchRandomTrains(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRoadsBackToOriginal|natives.switchRoadsBackToOriginal(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRoadsOff|natives.switchRoadsOff(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchRoadsOn|natives.switchRoadsOn(Vec3 x0, Vec3 x1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.switchStreaming|natives.switchStreaming(bool on) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.synchAmbientPlanes|natives.synchAmbientPlanes(int Unk520, int Unk521) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.synchRecordingWithWater|natives.synchRecordingWithWater(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.takeCarOutOfParkedCarsBudget|natives.takeCarOutOfParkedCarsBudget(Vehicle car, bool out) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.tan|natives.tan(float value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskAchieveHeading|natives.taskAchieveHeading(Ped ped, float heading) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskAimGunAtChar|natives.taskAimGunAtChar(Ped ped, Ped targetPed, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskAimGunAtCoord|natives.taskAimGunAtCoord(Ped ped, float tX, float tY, float tZ, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarDriveToCoord|natives.taskCarDriveToCoord(Ped ped, Vehicle veh, float Unk133, float Unk134, float Unk135, float Unk136, int Unk137, int Unk138, int Unk139, float Unk140, int Unk141) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarDriveWander|natives.taskCarDriveWander(Ped ped, Vehicle vehicle, float speed, uint drivingStyle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionCoorsTargetNotAgainstTraffic|natives.taskCarMissionCoorsTargetNotAgainstTraffic(Ped ped, Vehicle vehicle, Vec3 x, uint unknown0_4, float speed, uint unknown2_1, uint unknown3_5, uint unknown4_10) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionCoorsTarget|natives.taskCarMissionCoorsTarget(Ped ped, Vehicle vehicle, Vec3 x, uint unknown0_4, float speed, uint unknown2_1, uint unknown3_5, uint unknown4_10) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionNotAgainstTraffic|natives.taskCarMissionNotAgainstTraffic(Ped ped, Vehicle vehicle, uint targetEntity, uint missionType, float speed, uint drivingStyle, uint unknown6_10, uint unknown7_5) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMissionPedTarget|natives.taskCarMissionPedTarget(Ped ped, Vehicle vehicle, Ped target, uint unknown0_4, float speed, uint unknown2_1, uint unknown3_5, uint unknown4_10) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarMission|natives.taskCarMission(Ped ped, Vehicle vehicle, uint targetEntity, uint missionType, float speed, uint drivingStyle, uint unknown6_10, uint unknown7_5) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCarTempAction|natives.taskCarTempAction(Ped ped, Vehicle vehicle, uint action, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCharArrestChar|natives.taskCharArrestChar(Ped ped0, Ped ped1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskChatWithChar|natives.taskChatWithChar(Ped ped, Ped pednext, bool Unk183, bool Unk184) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskClearLookAt|natives.taskClearLookAt(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskClimb|natives.taskClimb(Ped ped, bool Unk185) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombatHatedTargetsAroundCharTimed|natives.taskCombatHatedTargetsAroundCharTimed(Ped ped, float radius, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombatHatedTargetsAroundChar|natives.taskCombatHatedTargetsAroundChar(Ped ped, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombatTimed|natives.taskCombatTimed(Ped ped, Ped target, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCombat|natives.taskCombat(Ped ped, Ped target) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskCower|natives.taskCower(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDead|natives.taskDead(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDestroyCar|natives.taskDestroyCar(Ped ped, Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDie|natives.taskDie(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDriveBy|natives.taskDriveBy(Ped ped, Ped pednext, int Unk192, Vec3 x, float angle, int Unk193, bool Unk194, int Unk195) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskDrivePointRoute|natives.taskDrivePointRoute(Ped ped, int point, float radius) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskEnterCarAsDriver|natives.taskEnterCarAsDriver(Ped ped, Vehicle vehicle, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskEnterCarAsPassenger|natives.taskEnterCarAsPassenger(Ped ped, Vehicle vehicle, uint duration, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskEveryoneLeaveCar|natives.taskEveryoneLeaveCar(Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFlushRoute|natives.taskFlushRoute(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshAndSlideToCoordHdgRate|natives.taskFollowNavMeshAndSlideToCoordHdgRate(Ped ped, Vec3 x, int Unk218, int Unk219, float Unk220, float angle, float rate) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshAndSlideToCoord|natives.taskFollowNavMeshAndSlideToCoord(Ped ped, Vec3 x, int Unk215, int Unk216, float Unk217, float angle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshToCoordNoStop|natives.taskFollowNavMeshToCoordNoStop(Ped ped, Vec3 x, uint unknown0_2, uint unknown1_minus1, float unknown2_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskFollowNavMeshToCoord|natives.taskFollowNavMeshToCoord(Ped ped, Vec3 x, uint unknown0_2, uint unknown1_minus1, float unknown2_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGetOffBoat|natives.taskGetOffBoat(Ped ped, int timeout) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGoStraightToCoord|natives.taskGoStraightToCoord(Ped ped, Vec3 x, uint unknown2, uint unknown45000) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGotoCharOffset|natives.taskGotoCharOffset(Ped ped, Ped target, uint duration, float offsetRight, float offsetFront) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskGuardCurrentPosition|natives.taskGuardCurrentPosition(Ped ped, float unknown0_15, float unknown1_10, uint unknown2_1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskHandsUp|natives.taskHandsUp(Ped ped, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskHeliMission|natives.taskHeliMission(Ped ped, Vehicle heli, uint uk0_0, uint uk1_0, float pX, float pY, float pZ, uint uk2_4, float speed, uint uk3_5, float uk4_minus1, uint uk5_round_z_plus_1, uint uk6_40) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskJump|natives.taskJump(Ped ped, bool flag) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveAnyCar|natives.taskLeaveAnyCar(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCarDontCloseDoor|natives.taskLeaveCarDontCloseDoor(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCarImmediately|natives.taskLeaveCarImmediately(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCarInDirection|natives.taskLeaveCarInDirection(Ped ped, Vehicle car, bool direction) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveCar|natives.taskLeaveCar(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLeaveGroup|natives.taskLeaveGroup(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtChar|natives.taskLookAtChar(Ped ped, Ped targetPed, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtCoord|natives.taskLookAtCoord(Ped ped, Vec3 x, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtObject|natives.taskLookAtObject(Ped ped, Object targetObject, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskLookAtVehicle|natives.taskLookAtVehicle(Ped ped, Vehicle targetVehicle, uint duration, uint unknown_0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskOpenDriverDoor|natives.taskOpenDriverDoor(Ped ped, Vehicle vehicle, uint unknown0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskOpenPassengerDoor|natives.taskOpenPassengerDoor(Ped ped, Vehicle vehicle, uint seatIndex, uint unknown0) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPause|natives.taskPause(Ped ped, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPerformSequence|natives.taskPerformSequence(Ped ped, int taskSequence) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPlayAnimNonInterruptable|natives.taskPlayAnimNonInterruptable(Ped ped, string animname0, string animname1, float Unk320, int Unk321, int Unk322, int Unk323, int Unk324, int Unk325) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskPlayAnimWithFlags|natives.taskPlayAnimWithFlags(Ped ped, string animName, string animSet, float unknown0_8, uint unknown1_0, uint flags) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSetCharDecisionMaker|natives.taskSetCharDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSetCombatDecisionMaker|natives.taskSetCombatDecisionMaker(Ped ped, int dm) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSetIgnoreWeaponRangeFlag|natives.taskSetIgnoreWeaponRangeFlag(Ped ped, bool ignore) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShakeFist|natives.taskShakeFist(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShimmyClimbUp|natives.taskShimmyClimbUp(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShimmyLetGo|natives.taskShimmyLetGo(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskShootAtChar|natives.taskShootAtChar(Ped shooter, Ped victim, int time, int shootmode) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleeCharPreferringPavements|natives.taskSmartFleeCharPreferringPavements(Ped ped, Ped fleeFromPed, float unknown0_100, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleeChar|natives.taskSmartFleeChar(Ped ped, Ped fleeFromPed, float unknown0_100, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleePointPreferringPavements|natives.taskSmartFleePointPreferringPavements(Ped ped, Vec3 x, float radius, int time_prob) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSmartFleePoint|natives.taskSmartFleePoint(Ped ped, Vec3 x, float unknown0_100, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskStandGuard|natives.taskStandGuard(Ped ped, Vec3 x, float Unk460, float Unk461, bool Unk462, int Unk463) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskStandStill|natives.taskStandStill(Ped ped, int duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSwapWeapon|natives.taskSwapWeapon(Ped ped, uint weapon) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskSwimToCoord|natives.taskSwimToCoord(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTired|natives.taskTired(Ped ped, int Unk471) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskToggleDuck|natives.taskToggleDuck(Ped ped, int Unk472) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTogglePedThreatScanner|natives.taskTogglePedThreatScanner(Ped ped, bool Unk473, bool Unk474, bool Unk475) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTurnCharToFaceChar|natives.taskTurnCharToFaceChar(Ped ped, Ped targetPed) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskTurnCharToFaceCoord|natives.taskTurnCharToFaceCoord(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskUseMobilePhoneTimed|natives.taskUseMobilePhoneTimed(Ped ped, uint duration) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskUseMobilePhone|natives.taskUseMobilePhone(Ped ped, bool use) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskWanderStandard|natives.taskWanderStandard(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskWarpCharIntoCarAsDriver|natives.taskWarpCharIntoCarAsDriver(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.taskWarpCharIntoCarAsPassenger|natives.taskWarpCharIntoCarAsPassenger(Ped ped, Vehicle vehicle, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.tellNetPlayerToStartPlaying|natives.tellNetPlayerToStartPlaying(Player playerIndex, bool Unk999) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.terminateAllScriptsForNetworkGame|natives.terminateAllScriptsForNetworkGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.terminateAllScriptsWithThisName|natives.terminateAllScriptsWithThisName(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.terminateThisScript|natives.terminateThisScript(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.thisScriptIsSafeForNetworkGame|natives.thisScriptIsSafeForNetworkGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.thisScriptShouldBeSaved|natives.thisScriptShouldBeSaved(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timera|natives.timera(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timerb|natives.timerb(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timerc|natives.timerc(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timestepunwarped|natives.timestepunwarped(void) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.timestep|natives.timestep(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.toFloat|natives.toFloat(uint value) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.toggleToplevelSprite|natives.toggleToplevelSprite(bool toggle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.trainLeaveStation|natives.trainLeaveStation(Vehicle train) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerLoadingMusicOnNextFade|natives.triggerLoadingMusicOnNextFade(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerMissionCompleteAudio|natives.triggerMissionCompleteAudio(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPoliceReport|natives.triggerPoliceReport(string name) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnObjBone|natives.triggerPtfxOnObjBone(string name, Object obj, Vec3 x, float Unk1068, float Unk1069, float Unk1070, int objbone, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnObj|natives.triggerPtfxOnObj(string name, Object obj, Vec3 x, float Unk1065, float Unk1066, float Unk1067, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnPedBone|natives.triggerPtfxOnPedBone(string name, Ped ped, Vec3 x, float Unk1074, float Unk1075, float Unk1076, int pedbone, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnPed|natives.triggerPtfxOnPed(string name, Ped ped, Vec3 x, float Unk1071, float Unk1072, float Unk1073, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfxOnVeh|natives.triggerPtfxOnVeh(string name, Vehicle veh, Vec3 x, float Unk1077, float Unk1078, float Unk1079, float Unk1080) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerPtfx|natives.triggerPtfx(string name, Vec3 x, float Unk1062, float Unk1063, float Unk1064, uint flags) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerVehAlarm|natives.triggerVehAlarm(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.triggerVigilanteCrime|natives.triggerVigilanteCrime(int id, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.turnCarToFaceCoord|natives.turnCarToFaceCoord(Vehicle car, Vec2 x, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.turnOffRadiohudInLobby|natives.turnOffRadiohudInLobby(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.turnOffVehicleExtra|natives.turnOffVehicleExtra(Vehicle veh, int extra, bool turnoff) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unattachCam|natives.unattachCam(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unfreezeRadioStation|natives.unfreezeRadioStation(string radiostation) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.uninheritCamRoll|natives.uninheritCamRoll(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unloadTextFont|natives.unloadTextFont(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockGenericNewsStory|natives.unlockGenericNewsStory(int StoryId) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockLazlowStation|natives.unlockLazlowStation(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockMissionNewsStory|natives.unlockMissionNewsStory(int id) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unlockRagdoll|natives.unlockRagdoll(Ped ped, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unmarkAllRoadNodesAsDontWander|natives.unmarkAllRoadNodesAsDontWander(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unobfuscateInt|natives.unobfuscateInt(int count, [output] int val) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unobfuscateString|natives.unobfuscateString(string str) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpauseGame|natives.unpauseGame(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpausePlaybackRecordedCar|natives.unpausePlaybackRecordedCar(Vehicle car) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpauseRadio|natives.unpauseRadio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unpointCam|natives.unpointCam(int cam) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unregisterScriptWithAudio|natives.unregisterScriptWithAudio(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.unsetCharMeleeMovementConstaintBox|natives.unsetCharMeleeMovementConstaintBox(Ped ped) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updateLoadScene|natives.updateLoadScene(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updateNetworkStatistics|natives.updateNetworkStatistics(Player playerIndex, int ukn0, int ukn1, int ukn2) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updatePedPhysicalAttachmentPosition|natives.updatePedPhysicalAttachmentPosition(Ped ped, Vec3 x0, Vec2 x1, unknownType unknownArg1) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updatePtfxOffsets|natives.updatePtfxOffsets(uint ptfx, Vec3 x, float Unk1081, float Unk1082, float Unk1083) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.updatePtfxTint|natives.updatePtfxTint(uint ptfx, float r, float g, float b, float a) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.useMask|natives.useMask(bool use) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.usePlayerColourInsteadOfTeamColour|natives.usePlayerColourInsteadOfTeamColour(bool Unk1005) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.usePreviousFontSettings|natives.usePreviousFontSettings(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.usingStandardControls|natives.usingStandardControls(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vdist2|natives.vdist2(Vec3 x0, Vec3 x1) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vdist|natives.vdist(Vec3 x0, Vec3 x1) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vehicleCanBeTargettedByHsMissile|natives.vehicleCanBeTargettedByHsMissile(Vehicle car, bool set) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vehicleDoesProvideCover|natives.vehicleDoesProvideCover(Vehicle veh, bool cover) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vmag2|natives.vmag2(Vec3 x) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.vmag|natives.vmag(Vec3 x) : float]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wait|natives.wait(int timeMS) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wantedStarsAreFlashing|natives.wantedStarsAreFlashing(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharFromCarToCar|natives.warpCharFromCarToCar(Ped ped, Vehicle vehicle, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharFromCarToCoord|natives.warpCharFromCarToCoord(Ped ped, Vec3 x) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharIntoCarAsPassenger|natives.warpCharIntoCarAsPassenger(Ped ped, Vehicle vehicle, uint seatIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.warpCharIntoCar|natives.warpCharIntoCar(Ped ped, Vehicle vehicle) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wasCutsceneSkipped|natives.wasCutsceneSkipped(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wasPedKilledByHeadshot|natives.wasPedKilledByHeadshot(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.wasPedSkeletonUpdated|natives.wasPedSkeletonUpdated(Ped ped) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.washVehicleTextures|natives.washVehicleTextures(Vehicle vehicle, uint intensity) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.whatWillPlayerPickup|natives.whatWillPlayerPickup(Player playerIndex) : Object]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.winchCanPickObjectUp|natives.winchCanPickObjectUp(Object obj, bool can) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Network Natives ==&lt;br /&gt;
[[natives.network.acceptInvite|natives.network.acceptInvite(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.advertiseSession|natives.network.advertiseSession(bool advertise) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.allPartyMembersPresent|natives.network.allPartyMembersPresent(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.amIBlockedByPlayer|natives.network.amIBlockedByPlayer(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.amIMutedByPlayer|natives.network.amIMutedByPlayer(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.changeGameModePending|natives.network.changeGameModePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.changeGameModeSucceeded|natives.network.changeGameModeSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.changeGameMode|natives.network.changeGameMode(int gamemode, int maxplayers, int privateslots, int maxteams) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.checkInviteArrival|natives.network.checkInviteArrival(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.clearInviteArrival|natives.network.clearInviteArrival(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.clearSummons|natives.network.clearSummons(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.didInviteFriend|natives.network.didInviteFriend(string friendname) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.endSessionPending|natives.network.endSessionPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.endSession|natives.network.endSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.expandTo32Players|natives.network.expandTo32Players(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.findGamePending|natives.network.findGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.findGame|natives.network.findGame(int GameMode, bool bRanked, int Episode, int MaxTeams) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.finishExtendedSearch|natives.network.finishExtendedSearch(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getFriendCount|natives.network.getFriendCount(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getFriendName|natives.network.getFriendName(int id) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getGameMode|natives.network.getGameMode(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHealthReticuleOption|natives.network.getHealthReticuleOption(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostAverageRank|natives.network.getHostAverageRank(int host) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostLatency|natives.network.getHostLatency(int host) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostMatchProgress|natives.network.getHostMatchProgress(int host) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getHostServerName|natives.network.getHostServerName(int host) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getLanSession|natives.network.getLanSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getMaxPrivateSlots|natives.network.getMaxPrivateSlots(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getMaxSlots|natives.network.getMaxSlots(void) : uint]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNextTextChat|natives.network.getNextTextChat(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumOpenPublicSlots|natives.network.getNumOpenPublicSlots(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumPartyMembers|natives.network.getNumPartyMembers(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumPlayersMet|natives.network.getNumPlayersMet(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumUnacceptedInvites|natives.network.getNumUnacceptedInvites(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumUnfilledReservations|natives.network.getNumUnfilledReservations(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getNumberOfGames|natives.network.getNumberOfGames(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getPlayerIdOfNextTextChat|natives.network.getPlayerIdOfNextTextChat(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getRendezvousHostPlayerId|natives.network.getRendezvousHostPlayerId(void) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getServerName|natives.network.getServerName(void) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getUnacceptedInviteEpisode|natives.network.getUnacceptedInviteEpisode(int invite) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.getUnacceptedInviterName|natives.network.getUnacceptedInviterName(int invite) : string]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hasStrictNat|natives.network.hasStrictNat(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.haveAcceptedInvite|natives.network.haveAcceptedInvite(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.haveOnlinePrivileges|natives.network.haveOnlinePrivileges(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.haveSummons|natives.network.haveSummons(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostGameE1|natives.network.hostGameE1(int Gamemode, bool Ranked, int Slots, int Private, int Episode, int MaxTeams) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostGamePending|natives.network.hostGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostGameSucceeded|natives.network.hostGameSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.hostRendezvousE1|natives.network.hostRendezvousE1(int Gamemode, int Slots, int Episode) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.inviteFriend|natives.network.inviteFriend(string friendname, string ukn) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isBeingKicked|natives.network.isBeingKicked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isCommonEpisode|natives.network.isCommonEpisode(int id) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFindResultUpdated|natives.network.isFindResultUpdated(int result) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFindResultValid|natives.network.isFindResultValid(int result) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFriendInSameTitle|natives.network.isFriendInSameTitle(string friendname) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isFriendOnline|natives.network.isFriendOnline(string pszName) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isGameRanked|natives.network.isGameRanked(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isInviteeOnline|natives.network.isInviteeOnline(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isNetworkAvailable|natives.network.isNetworkAvailable(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isOperationPending|natives.network.isOperationPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerBlockedByMe|natives.network.isPlayerBlockedByMe(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerMutedByMe|natives.network.isPlayerMutedByMe(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerTalking|natives.network.isPlayerTalking(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isPlayerTyping|natives.network.isPlayerTyping(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isRendezvousHost|natives.network.isRendezvousHost(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isRendezvous|natives.network.isRendezvous(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isRockstartSessionIdValid|natives.network.isRockstartSessionIdValid(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isSessionAdvertise|natives.network.isSessionAdvertise(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isSessionInvitable|natives.network.isSessionInvitable(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isSessionStarted|natives.network.isSessionStarted(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.isTvt|natives.network.isTvt(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.joinGamePending|natives.network.joinGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.joinGameSucceeded|natives.network.joinGameSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.joinSummons|natives.network.joinSummons(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.kickPlayer|natives.network.kickPlayer(Player playerIndex, bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.leaveGamePending|natives.network.leaveGamePending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.leaveGame|natives.network.leaveGame(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.limitTo16Players|natives.network.limitTo16Players(void) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasCommPrivs|natives.network.playerHasCommPrivs(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasDiedRecently|natives.network.playerHasDiedRecently(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasHeadset|natives.network.playerHasHeadset(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.playerHasKeyboard|natives.network.playerHasKeyboard(Player playerIndex) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.resultMatchesSearchCriteria|natives.network.resultMatchesSearchCriteria(int result) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.returnToRendezvousPending|natives.network.returnToRendezvousPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.returnToRendezvousSucceeded|natives.network.returnToRendezvousSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.returnToRendezvous|natives.network.returnToRendezvous(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setHealthReticuleOption|natives.network.setHealthReticuleOption(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setLanSession|natives.network.setLanSession(bool value) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setLocalPlayerIsTyping|natives.network.setLocalPlayerIsTyping(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setMatchProgress|natives.network.setMatchProgress(float Unk930) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setPlayerMuted|natives.network.setPlayerMuted(Player playerIndex, bool value) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setServerName|natives.network.setServerName(string name) : int]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setSessionInvitable|natives.network.setSessionInvitable(bool invitable) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.setTeamOnlyChat|natives.network.setTeamOnlyChat(bool Unk934) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.showMetPlayerFeedbackUi|natives.network.showMetPlayerFeedbackUi(Player metPlayerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.showPlayerFeedbackUi|natives.network.showPlayerFeedbackUi(Player payerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.showPlayerProfileUi|natives.network.showPlayerProfileUi(Player playerIndex) : unknownType]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.startSessionPending|natives.network.startSessionPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.startSessionSucceeded|natives.network.startSessionSucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.startSession|natives.network.startSession(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.stringVerifyPending|natives.network.stringVerifyPending(void) : bool]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[natives.network.stringVerifySucceeded|natives.network.stringVerifySucceeded(void) : bool]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=11446</id>
		<title>Module:ScriptItem2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=11446"/>
		<updated>2026-03-31T23:26:25Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
    [&#039;GTAIV&#039;]				= {&#039;OnAddIVNetworkEvent&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;GTAIV&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = text:find(&#039;]&#039;, 2, true)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(table.concat(tokens, &#039; &#039;, 3, #tokens)) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue, frame)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]]().&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry,id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Event&amp;diff=11440</id>
		<title>Template:Server/Functions/Event</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Event&amp;diff=11440"/>
		<updated>2026-03-20T20:16:14Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEvent|addEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEventHandler|addEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[bindEventHandler|bindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeEventHandler|removeEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerEvent|triggerEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[unbindEventHandler|unbindEventHandler]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.description|event.description]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.name|event.name]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Event&amp;diff=11439</id>
		<title>Template:Client/Functions/Event</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Event&amp;diff=11439"/>
		<updated>2026-03-20T20:15:56Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEvent|addEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEventHandler|addEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[bindEventHandler|bindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeEventHandler|removeEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerEvent|triggerEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[unbindEventHandler|unbindEventHandler]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.description|event.description]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.name|event.name]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions&amp;diff=11438</id>
		<title>Template:Client/Functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions&amp;diff=11438"/>
		<updated>2026-03-20T20:15:35Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== AI Functions ==&lt;br /&gt;
{{Client/Functions/AI}}&lt;br /&gt;
&lt;br /&gt;
== Audio Functions ==&lt;br /&gt;
{{Client/Functions/Audio}}&lt;br /&gt;
&lt;br /&gt;
== Blip Functions ==&lt;br /&gt;
{{Client/Functions/Blip}}&lt;br /&gt;
&lt;br /&gt;
== Building Functions ==&lt;br /&gt;
{{Client/Functions/Building}}&lt;br /&gt;
&lt;br /&gt;
== Camera Functions ==&lt;br /&gt;
{{Client/Functions/Camera}}&lt;br /&gt;
&lt;br /&gt;
== CancellableEvent Functions ==&lt;br /&gt;
{{Client/Functions/CancellableEvent}}&lt;br /&gt;
&lt;br /&gt;
== Chat Functions ==&lt;br /&gt;
{{Client/Functions/Chat}}&lt;br /&gt;
&lt;br /&gt;
== Cheat Functions ==&lt;br /&gt;
{{Client/Functions/Cheat}}&lt;br /&gt;
&lt;br /&gt;
== Client Functions ==&lt;br /&gt;
{{Client/Functions/Client}}&lt;br /&gt;
&lt;br /&gt;
== Command Functions ==&lt;br /&gt;
{{Client/Functions/Command}}&lt;br /&gt;
&lt;br /&gt;
== Computer Functions ==&lt;br /&gt;
{{Client/Functions/Computer}}&lt;br /&gt;
&lt;br /&gt;
== Control Functions ==&lt;br /&gt;
{{Client/Functions/Control}}&lt;br /&gt;
&lt;br /&gt;
== Cop Functions ==&lt;br /&gt;
{{Client/Functions/Cop}}&lt;br /&gt;
&lt;br /&gt;
== Drawing Functions ==&lt;br /&gt;
{{Client/Functions/Drawing}}&lt;br /&gt;
&lt;br /&gt;
== Element Functions ==&lt;br /&gt;
{{Client/Functions/Element}}&lt;br /&gt;
&lt;br /&gt;
== Entity Functions ==&lt;br /&gt;
{{Client/Functions/Entity}}&lt;br /&gt;
&lt;br /&gt;
== Event Functions ==&lt;br /&gt;
{{Client/Functions/Event}}&lt;br /&gt;
&lt;br /&gt;
== File Functions ==&lt;br /&gt;
{{Client/Functions/File}}&lt;br /&gt;
&lt;br /&gt;
== Font Functions ==&lt;br /&gt;
{{Client/Functions/Font}}&lt;br /&gt;
&lt;br /&gt;
== Game Functions ==&lt;br /&gt;
{{Client/Functions/Game}}&lt;br /&gt;
&lt;br /&gt;
== Game Stat Functions ==&lt;br /&gt;
{{Client/Functions/Game Stat}}&lt;br /&gt;
&lt;br /&gt;
== Gamemode Functions ==&lt;br /&gt;
{{Client/Functions/Gamemode}}&lt;br /&gt;
&lt;br /&gt;
== Gang Functions ==&lt;br /&gt;
{{Client/Functions/Gang}}&lt;br /&gt;
&lt;br /&gt;
== Garage Functions ==&lt;br /&gt;
{{Client/Functions/Garage}}&lt;br /&gt;
&lt;br /&gt;
== Graphics Functions ==&lt;br /&gt;
{{Client/Functions/Graphics}}&lt;br /&gt;
&lt;br /&gt;
== GroundSnow Functions ==&lt;br /&gt;
{{Client/Functions/GroundSnow}}&lt;br /&gt;
&lt;br /&gt;
== GTA Cutscene Functions ==&lt;br /&gt;
{{Client/Functions/GTA Cutscene}}&lt;br /&gt;
&lt;br /&gt;
== GTA File Functions ==&lt;br /&gt;
{{Client/Functions/GTA File}}&lt;br /&gt;
&lt;br /&gt;
== GTA Message Functions ==&lt;br /&gt;
{{Client/Functions/GTA Message}}&lt;br /&gt;
&lt;br /&gt;
== GTA Radar Functions ==&lt;br /&gt;
{{Client/Functions/GTA Radar}}&lt;br /&gt;
&lt;br /&gt;
== GTA Time Functions ==&lt;br /&gt;
{{Client/Functions/GTA Time}}&lt;br /&gt;
&lt;br /&gt;
== GTA Timer Functions ==&lt;br /&gt;
{{Client/Functions/GTA Timer}}&lt;br /&gt;
&lt;br /&gt;
== Gui Functions ==&lt;br /&gt;
{{Client/Functions/Gui}}&lt;br /&gt;
&lt;br /&gt;
== GUIElement Functions ==&lt;br /&gt;
{{Client/Functions/GUIElement}}&lt;br /&gt;
&lt;br /&gt;
== GUIHtmlElement Functions ==&lt;br /&gt;
{{Client/Functions/GUIHtmlElement}}&lt;br /&gt;
&lt;br /&gt;
== GUIHtmlView Functions ==&lt;br /&gt;
{{Client/Functions/GUIHtmlView}}&lt;br /&gt;
&lt;br /&gt;
== GUIPage Functions ==&lt;br /&gt;
{{Client/Functions/GUIPage}}&lt;br /&gt;
&lt;br /&gt;
== GUIWindow Functions ==&lt;br /&gt;
{{Client/Functions/GUIWindow}}&lt;br /&gt;
&lt;br /&gt;
== HUD Functions ==&lt;br /&gt;
{{Client/Functions/HUD}}&lt;br /&gt;
&lt;br /&gt;
== IPL Functions ==&lt;br /&gt;
{{Client/Functions/IPL}}&lt;br /&gt;
&lt;br /&gt;
== Island Functions ==&lt;br /&gt;
{{Client/Functions/Island}}&lt;br /&gt;
&lt;br /&gt;
== Key Functions ==&lt;br /&gt;
{{Client/Functions/Key}}&lt;br /&gt;
&lt;br /&gt;
== KeyEvent Functions ==&lt;br /&gt;
{{Client/Functions/KeyEvent}}&lt;br /&gt;
&lt;br /&gt;
== Kill Frenzy Functions ==&lt;br /&gt;
{{Client/Functions/Kill Frenzy}}&lt;br /&gt;
&lt;br /&gt;
== LucasFont Functions ==&lt;br /&gt;
{{Client/Functions/LucasFont}}&lt;br /&gt;
&lt;br /&gt;
== Marker Functions ==&lt;br /&gt;
{{Client/Functions/Marker}}&lt;br /&gt;
&lt;br /&gt;
== Matrix4x4 Functions ==&lt;br /&gt;
{{Client/Functions/Matrix4x4}}&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Functions ==&lt;br /&gt;
{{Client/Functions/Miscellaneous}}&lt;br /&gt;
&lt;br /&gt;
== Mission Functions ==&lt;br /&gt;
{{Client/Functions/Mission}}&lt;br /&gt;
&lt;br /&gt;
== Mouse Functions ==&lt;br /&gt;
{{Client/Functions/Mouse}}&lt;br /&gt;
&lt;br /&gt;
== NetFlags Functions ==&lt;br /&gt;
{{Client/Functions/NetFlags}}&lt;br /&gt;
&lt;br /&gt;
== Network Functions ==&lt;br /&gt;
{{Client/Functions/Network}}&lt;br /&gt;
&lt;br /&gt;
== Object Functions ==&lt;br /&gt;
{{Client/Functions/Object}}&lt;br /&gt;
&lt;br /&gt;
== Particle Functions ==&lt;br /&gt;
{{Client/Functions/Particle}}&lt;br /&gt;
&lt;br /&gt;
== Pause Functions ==&lt;br /&gt;
{{Client/Functions/Pause}}&lt;br /&gt;
&lt;br /&gt;
== Ped Functions ==&lt;br /&gt;
{{Client/Functions/Ped}}&lt;br /&gt;
&lt;br /&gt;
== Phone Functions ==&lt;br /&gt;
{{Client/Functions/Phone}}&lt;br /&gt;
&lt;br /&gt;
== Physical Functions ==&lt;br /&gt;
{{Client/Functions/Physical}}&lt;br /&gt;
&lt;br /&gt;
== Pickup Functions ==&lt;br /&gt;
{{Client/Functions/Pickup}}&lt;br /&gt;
&lt;br /&gt;
== Platform Functions ==&lt;br /&gt;
{{Client/Functions/Platform}}&lt;br /&gt;
&lt;br /&gt;
== Player Functions ==&lt;br /&gt;
{{Client/Functions/Player}}&lt;br /&gt;
&lt;br /&gt;
== Radio Functions ==&lt;br /&gt;
{{Client/Functions/Radio}}&lt;br /&gt;
&lt;br /&gt;
== Reflection Functions ==&lt;br /&gt;
{{Client/Functions/Reflection}}&lt;br /&gt;
&lt;br /&gt;
== Renderware Functions ==&lt;br /&gt;
{{Client/Functions/Renderware}}&lt;br /&gt;
&lt;br /&gt;
== Resource Functions ==&lt;br /&gt;
{{Client/Functions/Resource}}&lt;br /&gt;
&lt;br /&gt;
== RML Functions ==&lt;br /&gt;
{{Client/Functions/RML}}&lt;br /&gt;
&lt;br /&gt;
== Save Game Functions ==&lt;br /&gt;
{{Client/Functions/Save Game}}&lt;br /&gt;
&lt;br /&gt;
== Screen Functions ==&lt;br /&gt;
{{Client/Functions/Screen}}&lt;br /&gt;
&lt;br /&gt;
== Script Functions ==&lt;br /&gt;
{{Client/Functions/Script}}&lt;br /&gt;
&lt;br /&gt;
== Sdl Functions ==&lt;br /&gt;
{{Client/Functions/Sdl}}&lt;br /&gt;
&lt;br /&gt;
== Session Functions ==&lt;br /&gt;
{{Client/Functions/Session}}&lt;br /&gt;
&lt;br /&gt;
== Snow Functions ==&lt;br /&gt;
{{Client/Functions/Snow}}&lt;br /&gt;
&lt;br /&gt;
== Snowing Functions ==&lt;br /&gt;
{{Client/Functions/Snowing}}&lt;br /&gt;
&lt;br /&gt;
== Sound Functions ==&lt;br /&gt;
{{Client/Functions/Sound}}&lt;br /&gt;
&lt;br /&gt;
== Stream Functions ==&lt;br /&gt;
{{Client/Functions/Stream}}&lt;br /&gt;
&lt;br /&gt;
== Text Functions ==&lt;br /&gt;
{{Client/Functions/Text}}&lt;br /&gt;
&lt;br /&gt;
== TextReader Functions ==&lt;br /&gt;
{{Client/Functions/TextReader}}&lt;br /&gt;
&lt;br /&gt;
== Timer Functions ==&lt;br /&gt;
{{Client/Functions/Timer}}&lt;br /&gt;
&lt;br /&gt;
== Train Functions ==&lt;br /&gt;
{{Client/Functions/Train}}&lt;br /&gt;
&lt;br /&gt;
== Vec2 Functions ==&lt;br /&gt;
{{Client/Functions/Vec2}}&lt;br /&gt;
&lt;br /&gt;
== Vec3 Functions ==&lt;br /&gt;
{{Client/Functions/Vec3}}&lt;br /&gt;
&lt;br /&gt;
== Vehicle Functions ==&lt;br /&gt;
{{Client/Functions/Vehicle}}&lt;br /&gt;
&lt;br /&gt;
== Weather Functions ==&lt;br /&gt;
{{Client/Functions/Weather}}&lt;br /&gt;
&lt;br /&gt;
== World Functions ==&lt;br /&gt;
{{Client/Functions/World}}&lt;br /&gt;
&lt;br /&gt;
== XmlDocument Functions ==&lt;br /&gt;
{{Client/Functions/XmlDocument}}&lt;br /&gt;
&lt;br /&gt;
== XmlElement Functions ==&lt;br /&gt;
{{Client/Functions/XmlElement}}&lt;br /&gt;
&lt;br /&gt;
== Zone Functions ==&lt;br /&gt;
{{Client/Functions/Zone}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/RML&amp;diff=11437</id>
		<title>Template:Client/Functions/RML</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/RML&amp;diff=11437"/>
		<updated>2026-03-20T20:15:25Z</updated>

		<summary type="html">&lt;p&gt;Mex: Created page with &amp;quot;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} rml.loadDocument&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;  {{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} RmlDocument.show&amp;lt;br&amp;gt; {{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} RmlElement.ownerDocument&amp;lt;br&amp;gt; {{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} RmlElement.parentNode&amp;lt;br&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[rml.loadDocument|rml.loadDocument]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[RmlDocument.show|RmlDocument.show]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[RmlElement.ownerDocument|RmlElement.ownerDocument]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[RmlElement.parentNode|RmlElement.parentNode]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Resource&amp;diff=11436</id>
		<title>Template:Client/Functions/Resource</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Resource&amp;diff=11436"/>
		<updated>2026-03-20T20:12:14Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[findResourceByName|findResourceByName]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[getResources|getResources]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[thisResource|thisResource]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.author|resource.author]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.description|resource.description]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.exports|resource.exports]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.getExport|resource.getExport]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isReady|resource.isReady]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isStarted|resource.isStarted]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isStarting|resource.isStarting]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.name|resource.name]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.restart|resource.restart]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.start|resource.start]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.stop|resource.stop]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.version|resource.version]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Event&amp;diff=11435</id>
		<title>Template:Client/Functions/Event</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Event&amp;diff=11435"/>
		<updated>2026-03-20T20:11:37Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEvent|addEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEventHandler|addEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[bindEventHandler|bindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeEventHandler|removeEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerEvent|triggerEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[unbindEventHandler|unbindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.description|event.description]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.name|event.name]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Network&amp;diff=11434</id>
		<title>Template:Client/Functions/Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Network&amp;diff=11434"/>
		<updated>2026-03-20T20:10:58Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addNetworkHandler|addNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[connect|connect]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[disconnect|disconnect]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-placeholder}} {{icon-placeholder}} {{icon-placeholder}} {{icon-iv}} [[gta.shutdownAndLaunchNetworkGame|gta.shutdownAndLaunchNetworkGame]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[isConnected|isConnected]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[isConnecting|isConnecting]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeNetworkHandler|removeNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerNetworkEvent|triggerNetworkEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerNetworkEventUnreliable|triggerNetworkEventUnreliable]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Network&amp;diff=11433</id>
		<title>Template:Server/Functions/Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Network&amp;diff=11433"/>
		<updated>2026-03-20T19:59:53Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addNetworkHandler|addNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeNetworkHandler|removeNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerNetworkEvent|triggerNetworkEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerNetworkEventUnreliable|triggerNetworkEventUnreliable]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Events/GTAIV&amp;diff=11432</id>
		<title>Template:Server/Events/GTAIV</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Events/GTAIV&amp;diff=11432"/>
		<updated>2026-03-20T19:58:57Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iv}} [[OnAddIVNetworkEvent|OnAddIVNetworkEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iv}} [[OnRequestSession|OnRequestSession]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Events&amp;diff=11431</id>
		<title>Template:Server/Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Events&amp;diff=11431"/>
		<updated>2026-03-20T19:58:16Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Element Events ==&lt;br /&gt;
{{Server/Events/Element}}&lt;br /&gt;
&lt;br /&gt;
== GTA IV Events ==&lt;br /&gt;
{{Server/Events/GTAIV}}&lt;br /&gt;
&lt;br /&gt;
== Ped Events ==&lt;br /&gt;
{{Server/Events/Ped}}&lt;br /&gt;
&lt;br /&gt;
== Pickup Events ==&lt;br /&gt;
{{Server/Events/Pickup}}&lt;br /&gt;
&lt;br /&gt;
== Player Events ==&lt;br /&gt;
{{Server/Events/Player}}&lt;br /&gt;
&lt;br /&gt;
== Process Events ==&lt;br /&gt;
{{Server/Events/Process}}&lt;br /&gt;
&lt;br /&gt;
== Resource Events ==&lt;br /&gt;
{{Server/Events/Resource}}&lt;br /&gt;
&lt;br /&gt;
== Server Events ==&lt;br /&gt;
{{Server/Events/Server}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Client&amp;diff=11430</id>
		<title>Template:Server/Functions/Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Client&amp;diff=11430"/>
		<updated>2026-03-20T19:56:26Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[getClient|getClient]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[getClientFromPlayerElement|getClientFromPlayerElement]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[getClients|getClients]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[localClient|localClient]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.administrator|client.administrator]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.cameraInterior|client.cameraInterior]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.console|client.console]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.despawnPlayer|client.despawnPlayer]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.disconnect|client.disconnect]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.game|client.game]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.gameVersion|client.gameVersion]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.getData|client.getData]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.index|client.index]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.ip|client.ip]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.name|client.name]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.ping|client.ping]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.player|client.player]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.removeAllData|client.removeAllData]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.removeData|client.removeData]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.setData|client.setData]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[client.trainers|client.trainers]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Resource&amp;diff=11429</id>
		<title>Template:Server/Functions/Resource</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Resource&amp;diff=11429"/>
		<updated>2026-03-20T19:55:46Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[findResourceByName|findResourceByName]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[getResources|getResources]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[thisResource|thisResource]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.author|resource.author]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.description|resource.description]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.exports|resource.exports]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.getExport|resource.getExport]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isStarted|resource.isStarted]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isStarting|resource.isStarting]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.name|resource.name]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.restart|resource.restart]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.start|resource.start]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.stop|resource.stop]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.version|resource.version]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Event&amp;diff=11428</id>
		<title>Template:Server/Functions/Event</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Event&amp;diff=11428"/>
		<updated>2026-03-20T19:54:47Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEvent|addEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEventHandler|addEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[bindEventHandler|bindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeEventHandler|removeEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerEvent|triggerEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[unbindEventHandler|unbindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.description|event.description]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[event.name|event.name]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Resource&amp;diff=11427</id>
		<title>Template:Server/Functions/Resource</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Resource&amp;diff=11427"/>
		<updated>2026-03-20T19:53:50Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[findResourceByName|findResourceByName]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[getResources|getResources]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[thisResource|thisResource]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.author|resource.author]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.exports|resource.exports]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.getExport|resource.getExport]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isStarted|resource.isStarted]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.isStarting|resource.isStarting]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.name|resource.name]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.restart|resource.restart]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.start|resource.start]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.stop|resource.stop]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[resource.version|resource.version]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Resources&amp;diff=11425</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Resources&amp;diff=11425"/>
		<updated>2026-03-12T13:04:11Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a resource? ==&lt;br /&gt;
Resources contain content for a server. This can include scripts, audio, images, game files, etc. You can reload, start, and stop resources, and you can have more than 1 resource running at the same time. Resources would usually contain a script for game modes or can also contain other tasks to help control/manage the server, add commands, provide separate content, etc. &lt;br /&gt;
A resources&#039; content can be used in either a folder or zipped up in a [https://en.wikipedia.org/wiki/Tar_(computing) tar file].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using resources ==&lt;br /&gt;
Place the resource in your server&#039;s &amp;quot;resources&amp;quot; folder. To make the resource automatically start when running the server, open the [[ServerConfiguration|server config]] (default is server.xml) in Notepad or your preferred code editor, and find the &amp;lt;code&amp;gt;&amp;lt;resources&amp;gt;&amp;lt;/code&amp;gt; section. Add resources by inserting a new line containing the resource: &amp;lt;code&amp;gt;&amp;lt;resource src=&amp;quot;something&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;. This new line must be &#039;&#039;&#039;inside&#039;&#039;&#039; the resources section. Here&#039;s an example:&lt;br /&gt;
{{XMLCode|1=&amp;lt;resources&amp;gt;&lt;br /&gt;
	&amp;lt;resource src=&amp;quot;something&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;resource src=&amp;quot;something-else&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You can also start, stop, restart and refresh resources without restarting the server. To do this, type one of the commands (start, stop, refresh, or restart) in the server console. Example: &amp;lt;code&amp;gt;start something&amp;lt;/code&amp;gt;.  You can also use these commands in game, if your [[client.administrator|client.administrator]] is set to true (any running resource can set this).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a resource ==&lt;br /&gt;
To create a resource for the server you would simply create a new folder with the name of the resource. &lt;br /&gt;
Then to configure it you will need to create a file inside the resource folder named &amp;quot;meta.xml&amp;quot; (without the quotes) and open it in Notepad or your favorite code editor. See the Meta File section below to learn how to use it.&lt;br /&gt;
&lt;br /&gt;
Script files can be created with any of the supported languages: Lua, Squirrel, or JavaScript. These can be mixed in the same resource (although in different files). You can have one file running Lua, another with JavaScript, and another with Squirrel, all working together in the same resource.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example Directory Structure ==&lt;br /&gt;
&lt;br /&gt;
Server.exe&amp;lt;br&amp;gt;&lt;br /&gt;
Server.xml&amp;lt;br&amp;gt;&lt;br /&gt;
resources/&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource1/&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource1/meta.xml&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource1/ResourceScript.js&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource2/&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource2/meta.xml&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource2/ResourceScript.js&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource2/ResourceScript.lua&amp;lt;br&amp;gt;&lt;br /&gt;
resources/resource2/ResourceScript.nut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Meta.xml File ==&lt;br /&gt;
This is used to provide some basic information and what scripts/files it provides.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;All resources must have a meta.xml, or the resource won&#039;t load!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
{{XMLCode|1=&amp;lt;meta&amp;gt;&lt;br /&gt;
	&amp;lt;info author=&amp;quot;&amp;quot; type=&amp;quot;&amp;quot; version=&amp;quot;&amp;quot; description=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;script src=&amp;quot;&amp;quot; type=&amp;quot;&amp;quot; language=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;dependency src=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;map src=&amp;quot;&amp;quot; type=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;file src=&amp;quot;&amp;quot; type=&amp;quot;&amp;quot;  /&amp;gt;&lt;br /&gt;
&amp;lt;/meta&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* All &amp;quot;src&amp;quot; attributes are a relative path to the file, with the resource&#039;s folder as the root.&lt;br /&gt;
* The &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; node contains attributes that indicates who made the resource, it&#039;s type (custom description), custom version number, and a description of the resource&amp;lt;br&amp;gt;&lt;br /&gt;
* Every script file needs to have a &amp;lt;code&amp;gt;&amp;lt;script&amp;gt;&amp;lt;/code&amp;gt; node, each with a &amp;quot;type&amp;quot; attribute that refers to what side the script will run on (server or client), a language attribute that tells the server/client which language the script file uses (see [[ScriptingLanguages|supported scripting languages]]), and a &amp;quot;src&amp;quot; attribute with the file name as a relative path (i.e. &amp;quot;example.js&amp;quot; or &amp;quot;foo/bar.js&amp;quot;. &lt;br /&gt;
* Every custom file needs to have a &amp;lt;code&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/code&amp;gt; node, each with a &amp;quot;src&amp;quot; attribute for the file&#039;s path, and a &amp;quot;type&amp;quot; attribute indicating whether it&#039;s for the client or server.&lt;br /&gt;
* Any &amp;lt;code&amp;gt;&amp;lt;dependency&amp;gt;&amp;lt;/code&amp;gt; node, with a &amp;quot;src&amp;quot; attribute with the other resource&#039;s name, will require the other resource to be loaded BEFORE this one.&lt;br /&gt;
&lt;br /&gt;
== Client-side Files ==&lt;br /&gt;
Resources that contain client-side files are cached. If the built-in HTTP server is enabled, this will be used to distribute these files to clients when they connect or when the resource is updated and restarted. The default folder is &amp;quot;htdocs&amp;quot; in the GTAC server&#039;s main directory. You can also use your own HTTP server (like apache2 or nginx) as long as you add a virtual directory pointing to that &amp;quot;htdocs&amp;quot; folder in your GTAC server. Please note that this only applies to client-side files (used in &#039;&#039;&amp;lt;file&amp;gt;&#039;&#039; tag of the resource&#039;s meta.xml), not script files!&lt;br /&gt;
&lt;br /&gt;
== Other Notes ==&lt;br /&gt;
* The server will ignore any folders named with open and close square brackets, meaning they will not be loaded or cached as resources. This is useful if you want to group resources into subfolders for organization. Example name: [foobar]&amp;lt;br&amp;gt;&lt;br /&gt;
* Resources are completely sandboxed on both server and client, and any file paths are jailed in the resource&#039;s folder. All available file-related functions are carefully set up to only allow access to files within the resource. This also applies to client-side resource cache.&lt;br /&gt;
* Client side &#039;&#039;scripts&#039;&#039; (provided by a &amp;lt;script&amp;gt; tags in meta.xml) are sent separately to clients using the server&#039;s game/sync networking and are NOT saved to the cache. This helps lower the chances of script theft. Only files provided with &amp;lt;file&amp;gt; tags are sent via the HTTP server.&lt;br /&gt;
* Scripts and files that are only server-side are not accessible to clients. If your &#039;&#039;server-only&#039;&#039; scripts or files are stolen or leaked, it&#039;s not GTA Connected&#039;s fault. There is likely a security exploit somewhere on the machine or hosting service that you&#039;re running the server on.&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Network&amp;diff=11360</id>
		<title>Template:Client/Functions/Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Network&amp;diff=11360"/>
		<updated>2026-01-22T01:17:27Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addNetworkHandler|addNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[connect|connect]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[disconnect|disconnect]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-placeholder}} {{icon-placeholder}} {{icon-placeholder}} {{icon-iv}} [[gta.shutdownAndLaunchNetworkGame|gta.shutdownAndLaunchNetworkGame]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[isConnected|isConnected]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[isConnecting|isConnecting]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeNetworkHandler|removeNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerNetworkEvent|triggerNetworkEvent]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Event&amp;diff=11359</id>
		<title>Template:Client/Functions/Event</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Client/Functions/Event&amp;diff=11359"/>
		<updated>2026-01-22T01:17:24Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEvent|addEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEventHandler|addEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[bindEventHandler|bindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeEventHandler|removeEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerEvent|triggerEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[unbindEventHandler|unbindEventHandler]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Network&amp;diff=11358</id>
		<title>Template:Server/Functions/Network</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Network&amp;diff=11358"/>
		<updated>2026-01-22T01:16:46Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addNetworkHandler|addNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeNetworkHandler|removeNetworkHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerNetworkEvent|triggerNetworkEvent]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Event&amp;diff=11357</id>
		<title>Template:Server/Functions/Event</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:Server/Functions/Event&amp;diff=11357"/>
		<updated>2026-01-22T01:16:41Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEvent|addEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[addEventHandler|addEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[bindEventHandler|bindEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[removeEventHandler|removeEventHandler]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[triggerEvent|triggerEvent]]&amp;lt;br&amp;gt;&lt;br /&gt;
{{icon-iii}} {{icon-vc}} {{icon-sa}} {{icon-iv}} [[unbindEventHandler|unbindEventHandler]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=11356</id>
		<title>Module:ScriptItem2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=11356"/>
		<updated>2026-01-21T22:24:18Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(table.concat(tokens, &#039; &#039;, 3, #tokens)) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue, frame)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]]().&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry,id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=11355</id>
		<title>Module:ScriptItem2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=11355"/>
		<updated>2026-01-21T22:19:13Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(table.concat(tokens, &#039; &#039;, 3, #tokens)) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue, frame)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]]().&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem&amp;diff=11354</id>
		<title>Module:ScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem&amp;diff=11354"/>
		<updated>2026-01-21T22:19:04Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
    -- Added for discord embed styling&lt;br /&gt;
	--table.insert(lines, &amp;quot;&amp;lt;meta content=&#039;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&#039; property=&#039;og:title&#039; /&amp;gt;&amp;quot;))&lt;br /&gt;
	--table.insert(lines, &amp;quot;&amp;lt;meta content=&#039;&amp;quot;..p.description(frame)..&amp;quot;&#039; property=&#039;og:description&#039; /&amp;gt;&amp;quot;))&lt;br /&gt;
	--table.insert(lines, &amp;quot;&amp;lt;meta content=&#039;#04C765&#039; data-react-helmet=&#039;true&#039; name=&#039;theme-color&#039; /&amp;gt;&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;endpoint&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.description = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.endpointBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local endpointText, isShared = p.getEndpoint(args.endpoint)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {endpointText,id=&#039;endpoint&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {endpointText,id=&#039;endpoint&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
	if gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local endpointVersions = p.getEndpointVersions(args.since, args.endpoint)&lt;br /&gt;
		if #endpointVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..endpointVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..endpointVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.endpoint == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..endpointVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.endpoint == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..endpointVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;description&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; [[HowTo/Functions|&amp;quot;..args.type..&amp;quot;]] is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;parameter&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Parameters&amp;quot;)&lt;br /&gt;
	elseif entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local isOptional = tokens[3] == &#039;optional&#039;&lt;br /&gt;
			local defaultValue = isOptional and &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace;&#039;&amp;gt;&amp;quot;..tokens[4]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot; or &amp;quot;n/a&amp;quot;&lt;br /&gt;
			local description = p.formatDescription(table.concat(tokens, &#039; &#039;, isOptional and 5 or 3))&lt;br /&gt;
			&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), description }&lt;br /&gt;
			else&lt;br /&gt;
				rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), (isOptional and (&amp;quot;Optional, defaults to &amp;quot;..defaultValue..&amp;quot;. &amp;quot;) or &amp;quot;&amp;quot;)..description }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;returnFail&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;parameter&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = args[&#039;callback&#039;..i..&#039;Syntax&#039;..suffix]&lt;br /&gt;
			local callbackText = args[&#039;callback&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;callback&#039;..i..&#039;Parameter&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]]().&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry,id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.endpoint, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.endpoint:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.endpoint:lower() == &#039;shared&#039; or args.endpoint:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.endpoint:lower() == &#039;shared&#039; or args.endpoint:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getEndpoint(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented endpoint&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancellable and args.cancellable == &#039;true&#039;) or (args.cancelable and args.cancelable == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return frame:preprocess(&#039;&amp;lt;syntaxhighlight&amp;gt;&#039;..type..&#039;&amp;lt;/syntaxhighlight&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	type = type:lower()&lt;br /&gt;
	if type == &#039;void&#039; or type == &#039;null&#039; or type == &#039;undefined&#039; or type == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getEndpointVersions(arg, endpoint, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local endpointVersions = {}&lt;br /&gt;
	if endpoint == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			endpointVersions[1] = tokens[start]&lt;br /&gt;
			endpointVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			endpointVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif endpoint == &#039;server&#039; then&lt;br /&gt;
		endpointVersions[1] = tokens[start]&lt;br /&gt;
	elseif endpoint == &#039;client&#039; then&lt;br /&gt;
		endpointVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return endpointVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, endpoint, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if endpoint == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif endpoint == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif endpoint == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=spawnPlayer&amp;diff=11049</id>
		<title>spawnPlayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=spawnPlayer&amp;diff=11049"/>
		<updated>2024-10-29T13:00:49Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem&lt;br /&gt;
|endpoint = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|name = spawnPlayer&lt;br /&gt;
|usage = spawn a player.&amp;lt;br&amp;gt;&lt;br /&gt;
If &amp;lt;code&amp;gt;spawnPlayer&amp;lt;/code&amp;gt; is used client-side, there will be no network player for the spawned player, and &amp;lt;code&amp;gt;localClient.player&amp;lt;/code&amp;gt; will not be set client-side.&lt;br /&gt;
|parametersSS = Client client, Vec3 position, [ float zRotation = 0.0 ], [ int skin = 0 ], [ int interior = 0 ], [ int dimension = 0 ]&lt;br /&gt;
|parametersCS = Vec3 position, [ float zRotation = 0.0 ], [ int skin = 0 ], [ int interior = 0 ]&lt;br /&gt;
|parameter1 = Client client The client to spawn the player for. Server only.&lt;br /&gt;
|parameter2 = Vec3 position The 3D position to spawn the player.&lt;br /&gt;
|parameter3 = float zRotation optional 0.0 The Z rotation (heading) for the player.&lt;br /&gt;
|parameter4 = int skin optional 0 The skin ID for the player.&lt;br /&gt;
|parameter5 = int interior optional 0 The interior ID for the player.&lt;br /&gt;
|parameter6 = int dimension optional 0 The dimension ID for the player. Server only.&lt;br /&gt;
|returnTypes = void&lt;br /&gt;
|returnFail1 = void&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=setImmediate&amp;diff=10986</id>
		<title>setImmediate</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=setImmediate&amp;diff=10986"/>
		<updated>2024-02-29T13:16:41Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem2&lt;br /&gt;
|name = setImmediate&lt;br /&gt;
|side = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|games = iii vc sa iv&lt;br /&gt;
|desc = add a timer with a callback function that is invoked on the next tick&lt;br /&gt;
|arg1 = function callback The scripting function to call on the next tick.&lt;br /&gt;
|arg2 = [vararg ... = (no arguments)] The arguments to send to the callback function.&lt;br /&gt;
|return = Timer a handle to the timer&lt;br /&gt;
|freturn = null n/a&lt;br /&gt;
|cb1arg1 = ... vararg The arguments that were sent to the &amp;lt;code&amp;gt;setImmediate&amp;lt;/code&amp;gt; function.&lt;br /&gt;
|notes = GTA Connected guarantees that the function will run in the next frame where possible, remember that frame rates will affect how soon that is.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=10985</id>
		<title>Module:ScriptItem2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=10985"/>
		<updated>2024-02-29T13:09:51Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(table.concat(tokens, &#039; &#039;, 3, #tokens)) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue, frame)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10984</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10984"/>
		<updated>2024-02-29T13:09:26Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(table.concat(tokens, &#039; &#039;, 3, #tokens)) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue, frame)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10983</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10983"/>
		<updated>2024-02-29T13:08:28Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(table.concat(tokens, &#039; &#039;, 3, #tokens)) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10982</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10982"/>
		<updated>2024-02-29T13:07:32Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(parts.description) }&lt;br /&gt;
			else&lt;br /&gt;
				local parts = p.getArgParts(arg)&lt;br /&gt;
				&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=10981</id>
		<title>Module:ScriptItem2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=10981"/>
		<updated>2024-02-29T13:06:40Z</updated>

		<summary type="html">&lt;p&gt;Mex: Undo revision 10979 by Mex (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local isOptional = tokens[1]:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
				if isOptional then&lt;br /&gt;
					tokens[1] = tokens[1]:sub(2, tokens[1]:len())&lt;br /&gt;
					tokens[4] = tokens[4]:sub(1, tokens[4]:len() - 1)&lt;br /&gt;
				end&lt;br /&gt;
				local defaultValue = isOptional and tokens[4] or &amp;quot;n/a&amp;quot;&lt;br /&gt;
				&lt;br /&gt;
				if isOptional then&lt;br /&gt;
					table.insert(argsText, &#039;[ &#039;..tokens[1]..&#039; &#039;..tokens[2]..&#039; = &#039;..defaultValue..&#039; ]&#039;)&lt;br /&gt;
				else&lt;br /&gt;
					table.insert(argsText, tokens[1]..&#039; &#039;..tokens[2])&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; [[HowTo/Functions|&amp;quot;..args.type..&amp;quot;]] is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local isOptional = tokens[1]:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
			if isOptional then&lt;br /&gt;
				tokens[1] = tokens[1]:sub(2, tokens[1]:len())&lt;br /&gt;
				tokens[4] = tokens[4]:sub(1, tokens[4]:len() - 1)&lt;br /&gt;
			end&lt;br /&gt;
			local defaultValue = isOptional and &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace;&#039;&amp;gt;&amp;quot;..tokens[4]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot; or &amp;quot;n/a&amp;quot;&lt;br /&gt;
			local description = p.formatDescription(table.concat(tokens, &#039; &#039;, isOptional and 5 or 3))&lt;br /&gt;
			&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), description }&lt;br /&gt;
			else&lt;br /&gt;
				rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), (isOptional and (&amp;quot;Optional, defaults to &amp;quot;..defaultValue..&amp;quot;. &amp;quot;) or &amp;quot;&amp;quot;)..description }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	type = type:lower()&lt;br /&gt;
	if type == &#039;void&#039; or type == &#039;null&#039; or type == &#039;undefined&#039; or type == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=gta.createPed&amp;diff=10980</id>
		<title>gta.createPed</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=gta.createPed&amp;diff=10980"/>
		<updated>2024-02-29T13:06:14Z</updated>

		<summary type="html">&lt;p&gt;Mex: Created page with &amp;quot;{{ScriptItem2 |name = gta.createPed |side = shared |type = function |games = iii vc sa iv |desc = create a pedestrian |arg1 = int model The model ID for the ped. |arg2 = [ Vec3 position = new Vec3(0.0, 0.0, 0.0) ] The 3D position for the ped. |return = Ped a ped handle representing the ped that was created |freturn = null n/a }}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ScriptItem2&lt;br /&gt;
|name = gta.createPed&lt;br /&gt;
|side = shared&lt;br /&gt;
|type = function&lt;br /&gt;
|games = iii vc sa iv&lt;br /&gt;
|desc = create a pedestrian&lt;br /&gt;
|arg1 = int model The model ID for the ped.&lt;br /&gt;
|arg2 = [ Vec3 position = new Vec3(0.0, 0.0, 0.0) ] The 3D position for the ped.&lt;br /&gt;
|return = Ped a ped handle representing the ped that was created&lt;br /&gt;
|freturn = null n/a&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=10979</id>
		<title>Module:ScriptItem2</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:ScriptItem2&amp;diff=10979"/>
		<updated>2024-02-29T13:05:50Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(parts.description) }&lt;br /&gt;
			else&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10978</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10978"/>
		<updated>2024-02-29T12:57:53Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local parts = p.getArgParts(arg)&lt;br /&gt;
&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), p.formatDescription(parts.description) }&lt;br /&gt;
			else&lt;br /&gt;
				if parts.optional then&lt;br /&gt;
					if parts.defaultValueIsSpecified then&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, defaults to &amp;quot;..p.formatDefaultValue(parts.defaultValue)..&amp;quot;. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					else&lt;br /&gt;
						rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), &amp;quot;Optional, the default value has not been documented here yet. &amp;quot;..p.formatDescription(parts.description) }&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(parts.type, frame), p.formatName(parts.name, frame), p.formatDescription(parts.description) }&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDefaultValue(value, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..value..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10977</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10977"/>
		<updated>2024-02-29T12:16:43Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; &amp;quot;..args.type:lower()..&amp;quot; is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local isOptional = tokens[1]:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
			if isOptional then&lt;br /&gt;
				tokens[1] = tokens[1]:sub(2, tokens[1]:len())&lt;br /&gt;
				tokens[4] = tokens[4]:sub(1, tokens[4]:len() - 1)&lt;br /&gt;
			end&lt;br /&gt;
			local defaultValue = isOptional and &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace;&#039;&amp;gt;&amp;quot;..tokens[4]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot; or &amp;quot;n/a&amp;quot;&lt;br /&gt;
			local description = p.formatDescription(table.concat(tokens, &#039; &#039;, isOptional and 5 or 3))&lt;br /&gt;
			&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), description }&lt;br /&gt;
			else&lt;br /&gt;
				rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), (isOptional and (&amp;quot;Optional, defaults to &amp;quot;..defaultValue..&amp;quot;. &amp;quot;) or &amp;quot;&amp;quot;)..description }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10976</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10976"/>
		<updated>2024-02-29T12:14:58Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; [[HowTo/Functions|&amp;quot;..args.type..&amp;quot;]] is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local isOptional = tokens[1]:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
			if isOptional then&lt;br /&gt;
				tokens[1] = tokens[1]:sub(2, tokens[1]:len())&lt;br /&gt;
				tokens[4] = tokens[4]:sub(1, tokens[4]:len() - 1)&lt;br /&gt;
			end&lt;br /&gt;
			local defaultValue = isOptional and &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace;&#039;&amp;gt;&amp;quot;..tokens[4]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot; or &amp;quot;n/a&amp;quot;&lt;br /&gt;
			local description = p.formatDescription(table.concat(tokens, &#039; &#039;, isOptional and 5 or 3))&lt;br /&gt;
			&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), description }&lt;br /&gt;
			else&lt;br /&gt;
				rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), (isOptional and (&amp;quot;Optional, defaults to &amp;quot;..defaultValue..&amp;quot;. &amp;quot;) or &amp;quot;&amp;quot;)..description }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	local type2 = type:lower()&lt;br /&gt;
	if type2 == &#039;void&#039; or type2 == &#039;null&#039; or type2 == &#039;undefined&#039; or type2 == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Template:TempScriptItem&amp;diff=10975</id>
		<title>Template:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Template:TempScriptItem&amp;diff=10975"/>
		<updated>2024-02-29T12:06:06Z</updated>

		<summary type="html">&lt;p&gt;Mex: temporary page for testing purposes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:TempScriptItem|main}}&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10974</id>
		<title>Module:TempScriptItem</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=Module:TempScriptItem&amp;diff=10974"/>
		<updated>2024-02-29T12:05:28Z</updated>

		<summary type="html">&lt;p&gt;Mex: temporary page for testing purposes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- settings&lt;br /&gt;
p.categoryItems = {&lt;br /&gt;
	-- Category Name		= table. (Fully resolved item name(s), case-sensitive.) (Event names must start with a capital letter &amp;quot;O&amp;quot;, to match the dumpdoc XML.)&lt;br /&gt;
	[&#039;Audio&#039;]				= {&#039;gta.addOneOffSound&#039;, &#039;gta.playFrontEndSound&#039;, &#039;gta.playSuspectLastSeen&#039;},&lt;br /&gt;
	[&#039;Camera&#039;]				= {&#039;gta.fading&#039;},&lt;br /&gt;
	[&#039;Chatbox&#039;]				= {&#039;message&#039;, &#039;messageClient&#039;, &#039;messageAllExcept&#039;, &#039;setChatWindowEnabled&#039;, &#039;OnChatOutput&#039;},&lt;br /&gt;
	[&#039;Cursor&#039;]				= {&#039;gta.getMouseSpeed&#039;},&lt;br /&gt;
	[&#039;CustomText&#039;]			= {&#039;gta.setCustomText&#039;, &#039;gta.setCustomText&#039;, &#039;gta.clearCustomText&#039;, &#039;gta.printBig&#039;},&lt;br /&gt;
	[&#039;Drawing&#039;]				= {&#039;gta.drawRectangle&#039;},&lt;br /&gt;
	[&#039;Effect&#039;]				= {&#039;gta.addParticleEffect&#039;, &#039;addParticleEffect&#039;, &#039;gta.addMovingParticleEffect&#039;, &#039;addMovingParticleEffect&#039;, &#039;gta.createSingleParticle&#039;, &#039;createSingleParticle&#039;},&lt;br /&gt;
	[&#039;Font&#039;]				= {&#039;font.render&#039;},&lt;br /&gt;
	[&#039;GarbageCollection&#039;]	= {&#039;collectAllGarbage&#039;},&lt;br /&gt;
	[&#039;Game&#039;]				= {&#039;gta.game&#039;, &#039;gta.standardControls&#039;, &#039;gta.gameSpeed&#039;, &#039;gta.loadDFF&#039;, &#039;gta.loadTXD&#039;, &#039;gta.loadCOL&#039;},&lt;br /&gt;
	[&#039;GameStat&#039;]			= {&#039;gta.setGameStat&#039;, &#039;gta.getGameStat&#039;},&lt;br /&gt;
	[&#039;GUI&#039;]					= {&#039;OnGUIClick&#039;},&lt;br /&gt;
	[&#039;Key&#039;]					= {&#039;isScancodePressed&#039;, &#039;OnCharacter&#039;},&lt;br /&gt;
	[&#039;KillFrenzy&#039;]			= {&#039;gta.startKillFrenzy&#039;},&lt;br /&gt;
	[&#039;Message&#039;]				= {&#039;gta.clearMessages&#039;, &#039;gta.smallMessage&#039;, &#039;gta.bigMessage&#039;, &#039;gta.pagerMessage&#039;},&lt;br /&gt;
	[&#039;Miscellaneous&#039;]		= {&#039;platform&#039;, &#039;toColour&#039;, &#039;gta.tickCount&#039;, &#039;getRandomSkin&#039;, &#039;gta.getRandomSkin&#039;, &#039;gta.processLineOfSight&#039;, &#039;processLineOfSight&#039;, &#039;gta.setIsland&#039;, &#039;gta.setDefaultInteriors&#039;},&lt;br /&gt;
	[&#039;Network&#039;]				= {&#039;isConnected&#039;, &#039;isConnecting&#039;, &#039;connect&#039;, &#039;disconnect&#039;, &#039;triggerNetworkEvent&#039;, &#039;OnDisconnect&#039;},&lt;br /&gt;
	[&#039;Path&#039;]				= {&#039;gta.trafficDensity&#039;, &#039;gta.setTrafficEnabled&#039;, &#039;setTrafficEnabled&#039;, &#039;gta.setCiviliansEnabled&#039;, &#039;setCiviliansEnabled&#039;},&lt;br /&gt;
	[&#039;Ped&#039;]					= {&#039;gta.tommyFatness&#039;},&lt;br /&gt;
	[&#039;Radio&#039;]				= {&#039;gta.setRadioChannel&#039;, &#039;gta.forceRadioChannel&#039;},&lt;br /&gt;
	[&#039;Reflection&#039;]			= {&#039;exportFunction&#039;, &#039;setErrorMode&#039;},&lt;br /&gt;
	[&#039;Renderware&#039;]			= {&#039;gta.rwRenderStateSet&#039;},&lt;br /&gt;
	[&#039;SaveGame&#039;]			= {&#039;gta.saveGame&#039;},&lt;br /&gt;
	[&#039;Screen&#039;]				= {&#039;gta.aspectRatio&#039;, &#039;gta.width&#039;, &#039;gta.height&#039;},&lt;br /&gt;
	[&#039;Script&#039;]				= {&#039;gta.terminateScript&#039;, &#039;gta.getActiveScripts&#039;, &#039;gta.scriptCommand&#039;},&lt;br /&gt;
	[&#039;Timer&#039;]				= {&#039;setImmediate&#039;, &#039;clearImmediate&#039;, &#039;setInterval&#039;, &#039;clearInterval&#039;, &#039;setTimeout&#039;, &#039;clearTimeout&#039;},&lt;br /&gt;
	[&#039;Weather&#039;]				= {&#039;snowing&#039;, &#039;forceSnowing&#039;},&lt;br /&gt;
	[&#039;Window&#039;]				= {&#039;OnFocus&#039;, &#039;OnLostFocus&#039;},&lt;br /&gt;
	[&#039;World&#039;]				= {&#039;gta.ssvBridgeEnabled&#039;, &#039;gta.planesEnabled&#039;, &#039;gta.trainsEnabled&#039;, &#039;setPlanesEnabled&#039;, &#039;setTrainsEnabled&#039;, &#039;world&#039;, &#039;gta.findGroundZForCoord&#039;, &#039;findGroundZForCoord&#039;, &#039;gta.setTrainsEnabled&#039;, &#039;gta.setPlanesEnabled&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.categoryWords = {&lt;br /&gt;
	-- Category Names. (String(s) to look for in an item name, case-INsensitive.)&lt;br /&gt;
	&#039;Blip&#039;, &#039;Building&#039;, &#039;Camera&#039;, &#039;Chatbox&#039;, &#039;Cheat&#039;, &#039;Client&#039;, &#039;Command&#039;, &#039;Cursor&#039;, &#039;Debug&#039;, &#039;Dodo&#039;,&lt;br /&gt;
	&#039;Element&#039;, &#039;Entity&#039;, &#039;Event&#039;, &#039;File&#039;, &#039;Font&#039;, &#039;Garage&#039;, &#039;HTTP&#039;, &#039;HUD&#039;, &#039;Key&#039;, &#039;Mission&#039;, &#039;Mouse&#039;, &#039;NetFlags&#039;, &#039;Network&#039;, &#039;Object&#039;,&lt;br /&gt;
	&#039;Pause&#039;, &#039;Ped&#039;, &#039;Pickup&#039;, &#039;Player&#039;, &#039;Process&#039;, &#039;Render&#039;, &#039;Resource&#039;, &#039;Screen&#039;, &#039;Socket&#039;, &#039;Sphere&#039;, &#039;Time&#039;, &#039;Vehicle&#039;, &#039;Weather&#039;, &#039;World&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- entry point&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.showVariablePage(frame)&lt;br /&gt;
	elseif args.type == &#039;function&#039; then&lt;br /&gt;
		return p.showFunctionPage(frame)&lt;br /&gt;
	elseif args.type == &#039;property&#039; then&lt;br /&gt;
		return p.showPropertyPage(frame)&lt;br /&gt;
	elseif args.type == &#039;method&#039; then&lt;br /&gt;
		return p.showMethodPage(frame)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		return p.showEventPage(frame)&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This page has been documented incorrectly, &#039;&#039;&#039;type&#039;&#039;&#039; is missing.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page types&lt;br /&gt;
function p.showVariablePage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showFunctionPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showPropertyPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Value&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showMethodPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Return&amp;quot;, &amp;quot;Callbacks&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.showEventPage(frame)&lt;br /&gt;
	return p.showPage(frame, { &amp;quot;Parameters&amp;quot;, &amp;quot;Attributes&amp;quot; })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item page&lt;br /&gt;
function p.showPage(frame, parts)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		table.insert(parts, &amp;quot;Types&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	--table.insert(parts, &amp;quot;Symbols&amp;quot;)&lt;br /&gt;
	local lines = p.getPageTopLines(frame)&lt;br /&gt;
	for i,part in ipairs({&amp;quot;Notes&amp;quot;, &amp;quot;Examples&amp;quot;, &amp;quot;Compatibility&amp;quot;, &amp;quot;Related&amp;quot;}) do&lt;br /&gt;
		table.insert(parts, part)&lt;br /&gt;
	end&lt;br /&gt;
	for i,part in ipairs(parts) do&lt;br /&gt;
		local data = p[part:lower() == &#039;return&#039; and &#039;returns&#039; or part:lower()](frame)&lt;br /&gt;
		if data and #data &amp;gt; 0 then&lt;br /&gt;
			if part == &#039;Settable&#039; then&lt;br /&gt;
				part = args.readonly == &#039;true&#039; and &#039;Read-Only&#039; or &#039;Read and Set&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(lines, &#039;== &#039;..part..&#039; ==&#039;)&lt;br /&gt;
			table.insert(lines, data)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(lines, &amp;quot;\n&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopLines(frame)&lt;br /&gt;
	local lines = {}&lt;br /&gt;
	table.insert(lines, frame:preprocess(&amp;quot;{{DISPLAYTITLE:&amp;quot;..p.getDisplayedName(frame)..&amp;quot;}}&amp;quot;))&lt;br /&gt;
	table.insert(lines, &amp;quot;__NOTOC__&amp;quot;..p.getPageTopBoxes(frame)..&amp;quot;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;Available since &amp;quot;..p.since(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 6px;&#039;&amp;gt;\n&amp;quot;..p.syntax(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	table.insert(lines, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;\n&amp;quot;..p.description(frame)..&amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;)&lt;br /&gt;
	return lines&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageTopBoxes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local topBoxes = { &amp;quot;type&amp;quot;, &amp;quot;side&amp;quot;, &amp;quot;games&amp;quot;, &amp;quot;online&amp;quot; }&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;settable&amp;quot;)&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		table.insert(topBoxes, &amp;quot;cancellable&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local outBoxes = {}&lt;br /&gt;
	for i,topBox in ipairs(topBoxes) do&lt;br /&gt;
		table.insert(outBoxes, p[topBox..&amp;quot;Box&amp;quot;](frame))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(outBoxes, &#039; &#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- template arguments&lt;br /&gt;
function p.getArgs(frame)&lt;br /&gt;
	if p.argsCache then&lt;br /&gt;
		return p.argsCache&lt;br /&gt;
	else&lt;br /&gt;
		local args = frame:getParent().args&lt;br /&gt;
		p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
		p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
		p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
		p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
		p.argsCache = args&lt;br /&gt;
		return args&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyOldToNewForTemplateArguments(frame, args)&lt;br /&gt;
	--[[&lt;br /&gt;
	if args.parameters then&lt;br /&gt;
		args.syntax = args.parameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersSS then&lt;br /&gt;
		args.syntaxSS = args.parametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.parametersCS then&lt;br /&gt;
		args.syntaxCS = args.parametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackParameters then&lt;br /&gt;
		args.callbackSyntax = args.callbackParameters&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersSS then&lt;br /&gt;
		args.callbackSyntaxSS = args.callbackParametersSS&lt;br /&gt;
	end&lt;br /&gt;
	if args.callbackParametersCS then&lt;br /&gt;
		args.callbackSyntaxCS = args.callbackParametersCS&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;event&#039; then&lt;br /&gt;
		if args.callbackParameters then&lt;br /&gt;
			args.syntax = args.callbackParameters&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersSS then&lt;br /&gt;
			args.syntaxSS = args.callbackParametersSS&lt;br /&gt;
		end&lt;br /&gt;
		if args.callbackParametersCS then&lt;br /&gt;
			args.syntaxCS = args.callbackParametersCS&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.returnType or args.returnTypes then&lt;br /&gt;
		local returnType = args.returnType and args.returnType or args.returnTypes&lt;br /&gt;
		if args.returnInfo then&lt;br /&gt;
			args.return1 = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
			args.value = returnType..&amp;quot; &amp;quot;..args.returnInfo&lt;br /&gt;
		else&lt;br /&gt;
			args.return1 = returnType&lt;br /&gt;
			args.value = returnType&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	if args[&#039;return&#039;] then&lt;br /&gt;
		args.value = args[&#039;return&#039;]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.usage then&lt;br /&gt;
		args.desc = args.usage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.notes then&lt;br /&gt;
		local notes = p.splitLines(args.notes)&lt;br /&gt;
		for i,note in ipairs(notes) do&lt;br /&gt;
			args[&#039;note&#039;..i] = note&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local exampleKeys = {&lt;br /&gt;
		&#039;example&#039;, &#039;exampleSS&#039;, &#039;exampleCS&#039;, &#039;exampleJS&#039;, &#039;exampleLua&#039;, &#039;exampleSquirrel&#039;,&lt;br /&gt;
		&#039;exampleJSSS&#039;, &#039;exampleJSCS&#039;, &#039;exampleLuaSS&#039;, &#039;exampleLuaCS&#039;, &#039;exampleSquirrelSS&#039;, &#039;exampleSquirrelCS&#039;&lt;br /&gt;
	}&lt;br /&gt;
	for i,exampleKey in ipairs(exampleKeys) do&lt;br /&gt;
		if args[exampleKey] then&lt;br /&gt;
			local examples = p.split(args[exampleKey], &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
			for i,example in ipairs(examples) do&lt;br /&gt;
				args[exampleKey..i] = example&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.bcName and args.bcMaxVersion then&lt;br /&gt;
		args.previous1 = args.bcName..&amp;quot; &amp;quot;..args.bcMaxVersion&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyNonIndexedToIndexedTemplateArguments(frame, args)&lt;br /&gt;
	if args.description then&lt;br /&gt;
		args.description1 = args.description&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateTypeSpecificTemplateArguments(frame, args)&lt;br /&gt;
	if args.type == &#039;variable&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		if args.value then&lt;br /&gt;
			local tokens = p.split(args.value, &#039; &#039;)&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			&lt;br /&gt;
			local name&lt;br /&gt;
			if args.type == &#039;property&#039; then&lt;br /&gt;
				name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
			else&lt;br /&gt;
				name = args.name&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			args.syntax = type..&amp;quot; &amp;quot;..name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.populateDefaultTemplateArguments(frame, args)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		args.since = &amp;quot;1.0.0 1.0.0&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax and args.syntax:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
		args.parameter1 = &amp;quot;void&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item top boxes&lt;br /&gt;
function p.typeBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local typeText = p.getType(args.type)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {typeText,id=&#039;type&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sideBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local sideText, isShared = p.getSide(args.side)&lt;br /&gt;
	if isShared then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {sideText,id=&#039;side&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.gamesBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
&lt;br /&gt;
	local gamesText = p.getGames(args.games)&lt;br /&gt;
&lt;br /&gt;
	local games2 = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
	local counter = 0&lt;br /&gt;
	for i2,game2 in ipairs(games2) do&lt;br /&gt;
		if gamesText:lower():find(game2) then&lt;br /&gt;
			counter = counter + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if counter == #games2 or gamesText == &amp;quot;All Games&amp;quot; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {table.concat({&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iii&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-vc&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-sa&#039;),&lt;br /&gt;
			p.loadTemplate(frame, &#039;icon-iv&#039;)&lt;br /&gt;
		}, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	else&lt;br /&gt;
		local games = { &#039;iii&#039;, &#039;vc&#039;, &#039;sa&#039;, &#039;iv&#039; }&lt;br /&gt;
		local out = {}&lt;br /&gt;
		for i,game in ipairs(games) do&lt;br /&gt;
			if gamesText:lower():find(game) then&lt;br /&gt;
				table.insert(out, p.loadTemplate(frame, &#039;icon-&#039;..game, {}))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {table.concat(out, &#039; &#039;), id=&#039;games&#039;})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.onlineBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.sp == &#039;true&#039; or args.online == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Offline Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	elseif args.sp == &#039;false&#039; or args.offline == &#039;false&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Online Only&#039;,id=&#039;online&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Online and Offline&#039;,id=&#039;online&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Read-Only&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Read and Set&#039;,id=&#039;settable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.cancellableBox(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isCancellable(frame)then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;GreenInformationBox&#039;, {&#039;Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;RedInformationBox&#039;, {&#039;Not Cancellable&#039;,id=&#039;cancellable&#039;});&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item parts&lt;br /&gt;
function p.since(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not args.since then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Available since&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local sideVersions = p.getSideVersions(args.since, args.side)&lt;br /&gt;
		if #sideVersions == 2 then&lt;br /&gt;
			return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;, &#039;&#039;&#039;Client &amp;quot;..sideVersions[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			if args.side == &#039;server&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Server &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			elseif args.side == &#039;client&#039; then&lt;br /&gt;
				return &amp;quot;&#039;&#039;&#039;Client &amp;quot;..sideVersions[1]..&amp;quot;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
			else&lt;br /&gt;
				return p.documentationMissing(frame, &amp;quot;Available since (Both server and client version is needed for shared items)&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.syntax(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.syntax then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntax),id=&#039;syntax&#039;})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.syntaxSS and args.syntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxSS),id=&#039;syntaxss&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.syntaxCS),id=&#039;syntaxcs&#039;}) }&lt;br /&gt;
		return p.table(false, rows, { 100 }, false)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.documentationMissing(frame, &amp;quot;Syntax&amp;quot;)&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
&lt;br /&gt;
	local returnType = &#039;void&#039;&lt;br /&gt;
	local argsText = {}&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
		else&lt;br /&gt;
			local tokens = p.split(entries[1], &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			returnType = tokens[1]&lt;br /&gt;
			returnType = p.standardizeNullType(returnType)	&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
&lt;br /&gt;
		if isEvent then&lt;br /&gt;
			table.insert(entries, 1, &#039;Event event&#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
		elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
                table.insert(argsText, p.getArgSyntaxText(p.getArgParts(arg)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	elseif args.type == &#039;property&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
		})&lt;br /&gt;
	else&lt;br /&gt;
		return p.loadTemplate(frame, &#039;CodeSyntax&#039;, {&lt;br /&gt;
			returnType&lt;br /&gt;
			..&#039; &#039;..p.getDisplayedName(frame)&lt;br /&gt;
			..&#039;(&#039;..(#argsText == 0 and &#039;void&#039; or table.concat(argsText, &#039;, &#039;))..&#039;)&#039;&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgParts(text)&lt;br /&gt;
	--[[&lt;br /&gt;
        INPUT EXAMPLES (str)&lt;br /&gt;
        Vec3 pos The 3D position&lt;br /&gt;
        [Vec3 pos] The 3D position.&lt;br /&gt;
        [ Vec3 pos ] The 3D position&lt;br /&gt;
        [ Vec3 pos = new Vec3(0.0, 0.0, 0.0) ] The 3D position.&lt;br /&gt;
&lt;br /&gt;
        OUTPUT (table)&lt;br /&gt;
        bool parts.optional&lt;br /&gt;
        bool parts.defaultValueIsSpecified&lt;br /&gt;
		str parts.type&lt;br /&gt;
		str parts.name&lt;br /&gt;
		str parts.defaultValue&lt;br /&gt;
		str parts.description&lt;br /&gt;
	]]&lt;br /&gt;
&lt;br /&gt;
	local parts = {}&lt;br /&gt;
&lt;br /&gt;
	text = p.trim(text)&lt;br /&gt;
&lt;br /&gt;
    parts.optional = false&lt;br /&gt;
	local isProbablyOptional = text:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
	if isProbablyOptional then&lt;br /&gt;
		local optionalEndIndex = p.rfind(text, &#039;]&#039;)&lt;br /&gt;
		if optionalEndIndex then&lt;br /&gt;
            parts.optional = true&lt;br /&gt;
            local syntaxPart = p.trim(text:sub(2, optionalEndIndex - 1))&lt;br /&gt;
            parts.description = p.trim(text:sub(optionalEndIndex + 1, #text))&lt;br /&gt;
            local tokens = p.split(syntaxPart, &#039; &#039;)&lt;br /&gt;
            parts.type = tokens[1]&lt;br /&gt;
            parts.name = tokens[2]&lt;br /&gt;
            parts.defaultValueIsSpecified = tokens[3] == &#039;=&#039; and #tokens &amp;gt;= 4&lt;br /&gt;
            parts.defaultValue = table.concat(tokens, &#039; &#039;, 4, #tokens)&lt;br /&gt;
            return parts&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local tokens = p.split(text, &#039; &#039;)&lt;br /&gt;
    parts.type = tokens[1]&lt;br /&gt;
    parts.name = tokens[2]&lt;br /&gt;
    parts.description = p.trim(table.concat(tokens, &#039; &#039;, 3, #tokens))&lt;br /&gt;
    return parts&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getArgSyntaxText(parts)&lt;br /&gt;
    if parts.optional then&lt;br /&gt;
        if parts.defaultValueIsSpecified then&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; = &#039;..parts.defaultValue..&#039; ]&#039;&lt;br /&gt;
        else&lt;br /&gt;
            return &#039;[ &#039;..parts.type..&#039; &#039;..parts.name..&#039; ]&#039;&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        return parts.type..&#039; &#039;..parts.name&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.description(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;desc&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local startTextFirstLine = &amp;quot;The &amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedNameColoured(frame)..&amp;quot;&amp;lt;/span&amp;gt; [[HowTo/Functions|&amp;quot;..args.type..&amp;quot;]] is &amp;quot;..(args.type == &amp;quot;event&amp;quot; and &amp;quot;invoked when&amp;quot; or &amp;quot;used to&amp;quot;)..&amp;quot; &amp;quot;&lt;br /&gt;
	&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		if i == 1 then&lt;br /&gt;
			entry = startTextFirstLine..entry&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		entries[i] = p.formatDescription(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.parameters(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	local isEvent = args.type == &#039;event&#039;&lt;br /&gt;
	&lt;br /&gt;
	if isEvent and args.syntax and args.syntax:lower() == &#039;event event&#039; then&lt;br /&gt;
	elseif #entries == 0 or entries[1] == &amp;quot;void&amp;quot; then&lt;br /&gt;
		local headers = nil&lt;br /&gt;
		local rows = { { p.formatType(&amp;quot;void&amp;quot;, frame), &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t take any parameters.&amp;quot; } }&lt;br /&gt;
		local widths = { 120, 400 }&lt;br /&gt;
		return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local isOptional = tokens[1]:sub(1, 1) == &#039;[&#039;&lt;br /&gt;
			if isOptional then&lt;br /&gt;
				tokens[1] = tokens[1]:sub(2, tokens[1]:len())&lt;br /&gt;
				tokens[4] = tokens[4]:sub(1, tokens[4]:len() - 1)&lt;br /&gt;
			end&lt;br /&gt;
			local defaultValue = isOptional and &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace;&#039;&amp;gt;&amp;quot;..tokens[4]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot; or &amp;quot;n/a&amp;quot;&lt;br /&gt;
			local description = p.formatDescription(table.concat(tokens, &#039; &#039;, isOptional and 5 or 3))&lt;br /&gt;
			&lt;br /&gt;
			if isEvent then&lt;br /&gt;
				rows[i] = { (i + 1)..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), description }&lt;br /&gt;
			else&lt;br /&gt;
				rows[i] = { i..&amp;quot;) &amp;quot;, p.formatType(tokens[1], frame), p.formatName(tokens[2], frame), (isOptional and (&amp;quot;Optional, defaults to &amp;quot;..defaultValue..&amp;quot;. &amp;quot;) or &amp;quot;&amp;quot;)..description }&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		table.insert(rows, 1, { &amp;quot;1) &amp;quot;, p.formatType(&amp;quot;Event&amp;quot;, frame), p.formatName(&amp;quot;event&amp;quot;, frame), &amp;quot;The event object for this event.&amp;quot; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local headers, widths&lt;br /&gt;
	if isEvent then&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	else&lt;br /&gt;
		headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Presence&amp;quot;, &amp;quot;Default Value&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 30, 80, 110, 400 }&lt;br /&gt;
	end&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-parameters wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.returns(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	local entries&lt;br /&gt;
	local rows&lt;br /&gt;
	local headers&lt;br /&gt;
	local widths&lt;br /&gt;
	local isVoidReturn = false&lt;br /&gt;
	&lt;br /&gt;
	rows = {}&lt;br /&gt;
	entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		text = text..p.documentationMissing(frame, &amp;quot;Returns&amp;quot;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		for i,arg in ipairs(entries) do&lt;br /&gt;
			local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
			&lt;br /&gt;
			local type = tokens[1]&lt;br /&gt;
			type = p.standardizeNullType(type)&lt;br /&gt;
			&lt;br /&gt;
			local description&lt;br /&gt;
			if type:lower() == &amp;quot;void&amp;quot; then&lt;br /&gt;
				isVoidReturn = true&lt;br /&gt;
				description = &amp;quot;This &amp;quot;..args.type..&amp;quot; doesn&#039;t return a value.&amp;quot;&lt;br /&gt;
			elseif tokens[2] then&lt;br /&gt;
				description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
			else&lt;br /&gt;
				description = p.documentationMissing(frame, &amp;quot;Description for return value&amp;quot;)&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			rows[i] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
		end&lt;br /&gt;
		headers = nil-- { &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
		widths = { 120, 400 }&lt;br /&gt;
		text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--[[&lt;br /&gt;
	-- commented out as failure returns are not currently implemented in GTAC.&lt;br /&gt;
	if not isVoidReturn then&lt;br /&gt;
		rows = {}&lt;br /&gt;
		entries = p.getIndexedArgs(frame, &#039;freturn&#039;)&lt;br /&gt;
		text = text..&amp;quot;&#039;&#039;&#039;Failure Return:&#039;&#039;&#039;\n\n&amp;quot;&lt;br /&gt;
		if #entries == 0 then&lt;br /&gt;
			text = text..p.documentationMissing(frame, &amp;quot;Failure returns&amp;quot;)&lt;br /&gt;
		else&lt;br /&gt;
			for i,arg in ipairs(entries) do&lt;br /&gt;
				local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
				&lt;br /&gt;
				local type = tokens[1]&lt;br /&gt;
				type = p.standardizeNullType(type)&lt;br /&gt;
				&lt;br /&gt;
				local value&lt;br /&gt;
				if type:lower() == &#039;void&#039; then&lt;br /&gt;
					value = &amp;quot;n/a&amp;quot;&lt;br /&gt;
				elseif tokens[2] then&lt;br /&gt;
					value = p.formatSource(table.concat(tokens, &#039; &#039;, 2), frame)&lt;br /&gt;
				else&lt;br /&gt;
					value = p.formatSource(p.documentationMissing(frame, &amp;quot;Description for failure return value&amp;quot;), frame)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				rows[i] = { p.formatType(tokens[1], frame), value }&lt;br /&gt;
			end&lt;br /&gt;
			headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Value&amp;quot; }&lt;br /&gt;
			widths = { 120, 400 }&lt;br /&gt;
			text = text..p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	]]&lt;br /&gt;
	&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.callbacks(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local suffixes = {&lt;br /&gt;
		{ &#039;&#039;, &#039;&#039; },&lt;br /&gt;
		{ &#039;SS&#039;, &#039;Server-Side Callbacks&#039; },&lt;br /&gt;
		{ &#039;CS&#039;, &#039;Client-Side Callbacks&#039; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local html = {}&lt;br /&gt;
	&lt;br /&gt;
	for i3,suffixData in ipairs(suffixes) do&lt;br /&gt;
		local suffix = suffixData[1]&lt;br /&gt;
		&lt;br /&gt;
		local parameters = p.getIndexedArgs(frame, &#039;arg&#039;)&lt;br /&gt;
		for i=1, #parameters do&lt;br /&gt;
			local callbackSyntax = {}&lt;br /&gt;
			local callbackText = args[&#039;cb&#039;..i..&#039;Text&#039;..suffix]&lt;br /&gt;
			local callbackNParameters = p.getIndexedArgs(frame, &#039;cb&#039;..i..&#039;arg&#039;..suffix)&lt;br /&gt;
			&lt;br /&gt;
			if #callbackNParameters &amp;gt; 0 then&lt;br /&gt;
				if suffixData[1] ~= &#039;&#039; then&lt;br /&gt;
					table.insert(html, &amp;quot;&#039;&#039;&#039;&amp;quot;..suffixData[2]..&amp;quot;&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local parameterTokens = p.split(parameters[i], &#039; &#039;)&lt;br /&gt;
				local rows = {}&lt;br /&gt;
				&lt;br /&gt;
				for i2,callbackNParameter in ipairs(callbackNParameters) do&lt;br /&gt;
					local callbackTokens = p.split(callbackNParameter, &#039; &#039;)&lt;br /&gt;
					&lt;br /&gt;
					local parameterType = callbackTokens[1]&lt;br /&gt;
					local parameterName = callbackTokens[2]&lt;br /&gt;
					local description = p.formatDescription(table.concat(callbackTokens, &#039; &#039;, 3))&lt;br /&gt;
					&lt;br /&gt;
					do&lt;br /&gt;
						if parameterType == &amp;quot;void&amp;quot; then&lt;br /&gt;
							table.insert(callbackSyntax, &#039;void&#039;)&lt;br /&gt;
						else&lt;br /&gt;
							table.insert(callbackSyntax, parameterType..&#039; &#039;..parameterName)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
&lt;br /&gt;
					rows[i2] = { i2..&#039;) &#039;, p.formatType(parameterType, frame), p.formatName(parameterName, frame), description }&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				local callbackSyntax2 = #callbackSyntax == 0 and &#039;void&#039; or table.concat(callbackSyntax, &#039;, &#039;)&lt;br /&gt;
&lt;br /&gt;
				if #parameterTokens &amp;gt; 0 then&lt;br /&gt;
					local syntaxLine = parameterTokens[1]..&#039; &#039;..parameterTokens[2]..&#039;(&#039;..callbackSyntax2..&#039;)&#039;&lt;br /&gt;
					syntaxLine = p.loadTemplate(frame, &#039;CodeSyntax&#039;, {syntaxLine})&lt;br /&gt;
					table.insert(html, syntaxLine)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if callbackText and #callbackText &amp;gt; 0 then&lt;br /&gt;
					table.insert(html, callbackText)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				local headers, widths&lt;br /&gt;
				headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Name&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
				widths = { 30, 80, 110, 400 }&lt;br /&gt;
				local table2 = &amp;quot;\n&amp;quot;..p.table(headers, rows, widths, &#039;wikitable-callback wikitable&#039;)&lt;br /&gt;
				table.insert(html, table2)&lt;br /&gt;
				&lt;br /&gt;
				if i ~= #parameters then&lt;br /&gt;
					table.insert(html, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntax then&lt;br /&gt;
		table.concat(html, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntax, true),id=&#039;callbacks&#039;}))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.callbackSyntaxSS and args.callbackSyntaxCS then&lt;br /&gt;
		local rows = {}&lt;br /&gt;
		rows[1] = { &amp;quot;&#039;&#039;&#039;Server:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxSS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		rows[2] = { &amp;quot;&#039;&#039;&#039;Client:&#039;&#039;&#039;&amp;quot;, p.loadTemplate(frame, &#039;CodeSyntax&#039;, {p.buildSyntax(frame, args.callbackSyntaxCS, true),id=&#039;callbacks&#039;}) }&lt;br /&gt;
		table.concat(html, p.table(false, rows, { 100 }, false, &#039;wikitable-callback wikitable&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return #html &amp;gt; 0 and table.concat(html, &#039;&#039;) or false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.attributes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	if p.isCancellable(frame) then&lt;br /&gt;
		rows[1] = { &#039;cancellable&#039;, &#039;This &#039;..args.type..&#039; can be cancelled, by using [[event.preventDefault|event.preventDefault]].&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[1] = { p.formatType(&#039;const&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be cancelled.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.value(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if not args.value then&lt;br /&gt;
		return p.documentationMissing(frame, &amp;quot;Value type and description&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local arg = args.value&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local description = p.formatDescription(table.concat(tokens, &#039; &#039;, 2))&lt;br /&gt;
	&lt;br /&gt;
	local headers = nil--{ &amp;quot;Type&amp;quot;, &amp;quot;Description&amp;quot; }&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	rows[1] = { p.formatType(tokens[1], frame), description }&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		rows[2] = { p.formatType(&#039;readonly&#039;, frame), &#039;This &#039;..args.type..&#039; cannot be changed.&#039; }&lt;br /&gt;
	else&lt;br /&gt;
		rows[2] = { &#039;read/set&#039;, &#039;This &#039;..args.type..&#039; can be changed, as well as read.&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local widths = { 120, 400 }&lt;br /&gt;
	return p.table(headers, rows, widths, &#039;wikitable-returns wikitable&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.settable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	if args.readonly == &#039;true&#039; then&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; is read-only.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;This &amp;quot;..args.type..&amp;quot; can be read and set.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.types(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getTypesText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.symbols(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return p.getSymbolsText(frame, args.class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.notes(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;note&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any notes for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		entries[i] = p.dot(entry)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;quot;* &amp;quot;..table.concat(entries, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.examples(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local data = {&lt;br /&gt;
		{ &amp;quot;example&amp;quot;, &amp;quot;&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSS&amp;quot;, &amp;quot;Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleCS&amp;quot;, &amp;quot;Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJS&amp;quot;, &amp;quot;JavaScript&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLua&amp;quot;, &amp;quot;Lua&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrel&amp;quot;, &amp;quot;Squirrel&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleJSSS&amp;quot;, &amp;quot;JavaScript - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleJSCS&amp;quot;, &amp;quot;JavaScript - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleLuaSS&amp;quot;, &amp;quot;Lua - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleLuaCS&amp;quot;, &amp;quot;Lua - Client-Side&amp;quot; },&lt;br /&gt;
		&lt;br /&gt;
		{ &amp;quot;exampleSquirrelSS&amp;quot;, &amp;quot;Squirrel - Server-Side&amp;quot; },&lt;br /&gt;
		{ &amp;quot;exampleSquirrelCS&amp;quot;, &amp;quot;Squirrel - Client-Side&amp;quot; }&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local examples = {}&lt;br /&gt;
	local exampleIndex = 1&lt;br /&gt;
	for i,data2 in ipairs(data) do&lt;br /&gt;
		local entries = p.getIndexedArgs(frame, data2[1])&lt;br /&gt;
		for i2, entry in ipairs(entries) do&lt;br /&gt;
			local entry2 = &amp;quot;&#039;&#039;&#039;Example &amp;quot;..exampleIndex..&amp;quot; - &amp;quot;..data2[2]..&amp;quot;:&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;quot;..p.loadTemplate(frame, &#039;CodeSyntax&#039;, {entry:gsub(&amp;quot;\r\n&amp;quot;, &amp;quot;\n&amp;quot;):gsub(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;):gsub(&amp;quot;\t&amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;),id=&#039;example_&#039;..exampleIndex})&lt;br /&gt;
			table.insert(examples, entry2)&lt;br /&gt;
			exampleIndex = exampleIndex + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #examples == 0 then&lt;br /&gt;
		return &amp;quot;There aren&#039;t any examples for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(examples, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.compatibility(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local entries1 = p.getIndexedArgs(frame, &#039;previous&#039;)&lt;br /&gt;
	local entries2 = p.getIndexedArgs(frame, &#039;compat&#039;)&lt;br /&gt;
	if #entries1 == 0 and #entries2 == 0 then&lt;br /&gt;
		return &amp;quot;There isn&#039;t any compatibility information for this &amp;quot;..args.type..&amp;quot;.&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		local entriesOut = {}&lt;br /&gt;
		for i,arg in ipairs(entries1) do&lt;br /&gt;
			local versionsText, tokens = p.getVersionsText(arg, args.side, 2)&lt;br /&gt;
			entriesOut[i] = &amp;quot;This &amp;quot;..args.type..&amp;quot; was previously named &amp;lt;code&amp;gt;&amp;quot;..tokens[1]..&amp;quot;&amp;lt;/code&amp;gt; in &amp;quot;..versionsText..&amp;quot;.&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local offset = #entriesOut&lt;br /&gt;
		for i,arg in ipairs(entries2) do&lt;br /&gt;
			entriesOut[i + offset] = p.dot(arg)&lt;br /&gt;
		end&lt;br /&gt;
		return &amp;quot;* &amp;quot;..table.concat(entriesOut, &amp;quot;\n* &amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.related(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local categoryTitle = p.getItemCategory(frame)&lt;br /&gt;
	if categoryTitle and categoryTitle:len() &amp;gt; 0 then&lt;br /&gt;
		local shared = args.side:lower() == &#039;shared&#039;&lt;br /&gt;
		local server = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;server&#039;&lt;br /&gt;
		local client = args.side:lower() == &#039;shared&#039; or args.side:lower() == &#039;client&#039;&lt;br /&gt;
		local pageName = args.type:lower() == &#039;event&#039; and &#039;Event&#039; or &#039;Function&#039;&lt;br /&gt;
		&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		&lt;br /&gt;
		local name&lt;br /&gt;
		if args.type == &#039;property&#039; then&lt;br /&gt;
			name = args.class..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
		else&lt;br /&gt;
			name = args.name&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if server then&lt;br /&gt;
			local title = &#039;Server/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Server Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if client then&lt;br /&gt;
			local title = &#039;Client/&#039;..pageName..&#039;s/&#039;..categoryTitle&lt;br /&gt;
			local t = p.loadTemplate(frame, title, args)&lt;br /&gt;
			&lt;br /&gt;
			--t = p.remove(t, &amp;quot;[[&amp;quot;..name..&amp;quot;|&amp;quot;..name..&amp;quot;]]&amp;lt;br&amp;gt;\n&amp;quot;)&lt;br /&gt;
			&lt;br /&gt;
			--[[&lt;br /&gt;
			t = p.replace(t, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\t&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\r&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;\n&amp;quot;);&lt;br /&gt;
			t = p.remove(t, &amp;quot;&amp;lt;a class=\&amp;quot;mw-selflink selflink\&amp;quot;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
			]]&lt;br /&gt;
			&lt;br /&gt;
			table.insert(parts, &amp;quot;&#039;&#039;&#039;Client Related&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;..t)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(parts, &#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item category&lt;br /&gt;
function p.getItemCategory(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local resolvedNameLower = p.getDisplayedName(frame):lower()&lt;br /&gt;
	&lt;br /&gt;
	for categoryTitle,categoryData in pairs(p.categoryItems) do&lt;br /&gt;
		for i2,resolvedItemName in ipairs(categoryData) do&lt;br /&gt;
			if resolvedNameLower == resolvedItemName:lower() then&lt;br /&gt;
				return categoryTitle&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,categoryTitle in ipairs(p.categoryWords) do&lt;br /&gt;
		if resolvedNameLower:find(categoryTitle:lower(), 1, true) then&lt;br /&gt;
			return categoryTitle&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- item part utility&lt;br /&gt;
function p.getType(text)&lt;br /&gt;
	local finds = { &amp;quot;variable&amp;quot;, &amp;quot;function&amp;quot;, &amp;quot;property&amp;quot;, &amp;quot;method&amp;quot;, &amp;quot;event&amp;quot;, &amp;quot;define&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Variable&amp;quot;, &amp;quot;Function&amp;quot;, &amp;quot;Property&amp;quot;, &amp;quot;Method&amp;quot;, &amp;quot;Event&amp;quot;, &amp;quot;Define&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented type&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getGames(text)&lt;br /&gt;
	local finds = { &amp;quot;iii&amp;quot;, &amp;quot;vc&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;iv&amp;quot;, &amp;quot;ug&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;GTA III&amp;quot;, &amp;quot;GTA VC&amp;quot;, &amp;quot;GTA SA&amp;quot;, &amp;quot;GTA IV&amp;quot;, &amp;quot;GTA UG&amp;quot; }&lt;br /&gt;
	local defaults = { &amp;quot;all&amp;quot;, &amp;quot;all games&amp;quot; }&lt;br /&gt;
	return p.findText(text, finds, replaces, defaults, &amp;quot;All Games&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSide(text)&lt;br /&gt;
	local finds = { &amp;quot;shared&amp;quot;, &amp;quot;server&amp;quot;, &amp;quot;client&amp;quot; }&lt;br /&gt;
	local replaces = { &amp;quot;Server and Client&amp;quot;, &amp;quot;Server Only&amp;quot;, &amp;quot;Client Only&amp;quot; }&lt;br /&gt;
	local defaults = {}&lt;br /&gt;
	local result = p.findText(text, finds, replaces, defaults, &amp;quot;&#039;&#039;&#039;undocumented side&#039;&#039;&#039;&amp;quot;)&lt;br /&gt;
	local isShared = result == replaces[1]&lt;br /&gt;
	return result, isShared&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedName(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return p.lowerFirstCharCase(args.class)..&amp;quot;.&amp;quot;..args.name&lt;br /&gt;
	else&lt;br /&gt;
		return args.name&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypeRgb()&lt;br /&gt;
	return &#039;#009106&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNameRgb()&lt;br /&gt;
	return &#039;#0645ad&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getDisplayedNameColoured(frame)&lt;br /&gt;
	local typeRgb = p.getTypeRgb()&lt;br /&gt;
	local nameRgb = p.getNameRgb()&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if p.isOOP(frame) then&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..typeRgb..&amp;quot;;&#039;&amp;gt;&amp;quot;..p.lowerFirstCharCase(args.class)..&amp;quot;&amp;lt;/span&amp;gt;.&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;lt;span style=&#039;color:&amp;quot;..nameRgb..&amp;quot;&#039;;&amp;gt;&amp;quot;..args.name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSuccessReturnTypes(frame)&lt;br /&gt;
	local entries = p.getIndexedArgs(frame, &#039;return&#039;)&lt;br /&gt;
	if #entries == 0 then&lt;br /&gt;
		return &amp;quot;unknown&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	for i,entry in ipairs(entries) do&lt;br /&gt;
		local tokens = p.split(entry, &#039; &#039;)&lt;br /&gt;
		entries[i] = tokens[1]&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(entries, &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isOOP(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return args.type == &amp;quot;property&amp;quot; or args.type == &amp;quot;method&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.warning(frame, text)&lt;br /&gt;
	return p.loadTemplate(frame, &#039;BlueInformationBox&#039;, {text})..&#039;\n&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.documentationMissing(frame, text)&lt;br /&gt;
	return p.warning(frame, &amp;quot;Documentation Missing: &amp;quot;..text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildSyntax(frame, parameters, isCallback)&lt;br /&gt;
	if isCallback == nil then&lt;br /&gt;
		isCallback = false;&lt;br /&gt;
	end&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	if not isCallback and (args.type == &#039;variable&#039; or args.type == &#039;property&#039;) then&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)&lt;br /&gt;
	elseif isCallback or args.type == &#039;event&#039; then&lt;br /&gt;
		return &amp;quot;function(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return p.getSuccessReturnTypes(frame)..&amp;quot; &amp;quot;..p.getDisplayedName(frame)..&amp;quot;(&amp;quot;..parameters..&amp;quot;)&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getTypesText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local derivedTypes = {&lt;br /&gt;
		ped			    = {&#039;Player&#039;},&lt;br /&gt;
		physical		= {&#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		entity			= {&#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		element			= {&#039;Blip&#039;, &#039;Entity&#039;, &#039;Marker&#039;, &#039;Building&#039;, &#039;Physical&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Vehicle&#039;, &#039;Player&#039;},&lt;br /&gt;
		vehicle			= {&#039;Train&#039;},&lt;br /&gt;
		event			= {&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;},&lt;br /&gt;
		surface			= {&#039;RenderTarget&#039;, &#039;Texture&#039;}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local serverTypes = {}&lt;br /&gt;
	local sharedTypes = {&lt;br /&gt;
		&#039;Building&#039;, &#039;Client&#039;, &#039;Effect&#039;, &#039;Event&#039;, &#039;Timer&#039;, &#039;ReflectedFunction&#039;, &#039;Resource&#039;, &#039;Stream&#039;, &#039;Vec2&#039;, &#039;Vec3&#039;, &#039;Matrix4x4&#039;,&lt;br /&gt;
		&#039;Element&#039;, &#039;Blip&#039;, &#039;Pickup&#039;, &#039;Entity&#039;, &#039;Physical&#039;,&#039;Vehicle&#039;, &#039;Train&#039;, &#039;XmlDocument&#039;, &#039;XmlElement&#039;,&lt;br /&gt;
		&#039;CancellableEvent&#039;, &#039;KeyEvent&#039;, &#039;Marker&#039;, &#039;Object&#039;, &#039;Ped&#039;, &#039;Player&#039;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local getTypeSide = function(type)&lt;br /&gt;
		for i2,type2 in ipairs(serverTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;server&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		for i2,type2 in ipairs(sharedTypes) do&lt;br /&gt;
			if type:lower() == type2:lower() then&lt;br /&gt;
				return &#039;shared&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return &#039;client&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if baseType then&lt;br /&gt;
		local baseTypeLower = baseType:lower()&lt;br /&gt;
		local allTypes&lt;br /&gt;
		if derivedTypes[baseTypeLower] then&lt;br /&gt;
			allTypes = p.copyTable(derivedTypes[baseTypeLower])&lt;br /&gt;
			table.insert(allTypes, 1, baseType)&lt;br /&gt;
		else&lt;br /&gt;
			allTypes = { baseType }&lt;br /&gt;
		end&lt;br /&gt;
		local types = {}&lt;br /&gt;
		for i,type in ipairs(allTypes) do&lt;br /&gt;
			types[i] = type&lt;br /&gt;
		end&lt;br /&gt;
		p.sortTable(types)&lt;br /&gt;
		for i,type in ipairs(types) do&lt;br /&gt;
			types[i] = p.loadTemplate(frame, &#039;Side&#039;, {[getTypeSide(type)]=&#039;1&#039;})..&amp;quot; &amp;quot;..&amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace;\&amp;quot;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
		table.insert(out, &amp;quot;\n&amp;quot;..table.concat(types, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSymbolsText(frame, baseType)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	local out = {}&lt;br /&gt;
	&lt;br /&gt;
	local rows = {}&lt;br /&gt;
	&lt;br /&gt;
	if args.type == &#039;function&#039; or args.type == &#039;variable&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		for i=1,(#parts)-1,1 do&lt;br /&gt;
			rows[i] = {}&lt;br /&gt;
			rows[i][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[i]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
			rows[i][2] = &#039;Namespace&#039;&lt;br /&gt;
			rows[i][3] = i == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[i-1]&lt;br /&gt;
			rows[i][4] = i == 1 and parts[i]..&#039; is a namespace, which exists in the global namespace.&#039; or parts[i]..&#039; is a namespace, which exists in the &#039;..parts[i-1]..&#039; namespace.&#039;&lt;br /&gt;
		end&lt;br /&gt;
		rows[#parts] = {}&lt;br /&gt;
		rows[#parts][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[#parts]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[#parts][2] = p.properCase(args.type)&lt;br /&gt;
		rows[#parts][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[#parts][4] = #parts == 1 and parts[1]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the global namespace.&#039; or parts[#parts]..&#039; is a &#039;..p.properCase(args.type)..&#039;, which exists in the &#039;..parts[#parts-1]..&#039; namespace.&#039;&lt;br /&gt;
	elseif args.type == &#039;method&#039; or args.type == &#039;property&#039; then&lt;br /&gt;
		local parts = p.split(p.getDisplayedName(frame), &amp;quot;.&amp;quot;)&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;Object&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[1]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is an object.&#039;&lt;br /&gt;
		&lt;br /&gt;
		rows[2] = {}&lt;br /&gt;
		rows[2][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[2][2] = p.properCase(args.type)&lt;br /&gt;
		rows[2][3] = #parts == 1 and &#039;Global&#039; or &#039;Namespace: &#039;..parts[#parts-1]&lt;br /&gt;
		rows[2][4] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..parts[2]..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;..&#039; is a &#039;..p.properCase(args.type)..&#039;, which is used on objects of type &#039;..parts[1]&lt;br /&gt;
	elseif args.type == &#039;event&#039; then&lt;br /&gt;
		rows[1] = {}&lt;br /&gt;
		rows[1][1] = &amp;quot;&amp;lt;span style=\&amp;quot;font-family: &#039;Source Code Pro&#039;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&amp;gt;&amp;quot;..p.getDisplayedName(frame)..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
		rows[1][2] = &#039;String&#039;&lt;br /&gt;
		rows[1][3] = &#039;n/a&#039;&lt;br /&gt;
		rows[1][4] = &#039;Events are referenced by name. Event names use data type String.&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	--table.insert(out, &amp;quot;&amp;lt;div style=&#039;margin-top: 20px;&#039;&amp;gt;&amp;lt;/div&amp;gt;&amp;quot;)&lt;br /&gt;
	local headers = { &#039;Symbol Name&#039;, &#039;Symbol Type&#039;, &#039;Container&#039;, &#039;Description&#039; }&lt;br /&gt;
	table.insert(out, &amp;quot;\n&amp;quot;..p.table(headers, rows, { 120, 120, 400 }, false))&lt;br /&gt;
	&lt;br /&gt;
	if args.type ~= &#039;event&#039; then&lt;br /&gt;
		local languages = { &#039;JS&#039;, &#039;Lua&#039;, &#039;Squirrel&#039; }&lt;br /&gt;
		local languageSymbols = {&lt;br /&gt;
			[&#039;JS&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Lua&#039;]			= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;colon&#039;,	[&#039;property&#039;] = &#039;dot&#039; },&lt;br /&gt;
			[&#039;Squirrel&#039;]	= { [&#039;function&#039;] = &#039;dot&#039;,	[&#039;variable&#039;] = &#039;dot&#039;,	[&#039;method&#039;] = &#039;dot&#039;,		[&#039;property&#039;] = &#039;dot&#039; }&lt;br /&gt;
		}&lt;br /&gt;
		for i,language in ipairs(languages) do&lt;br /&gt;
			local line&lt;br /&gt;
			if args.type == &#039;function&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a function.&#039;&lt;br /&gt;
			elseif args.type == &#039;variable&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a variable.&#039;&lt;br /&gt;
			elseif args.type == &#039;method&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to call a method.&#039;&lt;br /&gt;
			elseif args.type == &#039;property&#039; then&lt;br /&gt;
				line = language..&#039; uses the &#039;..languageSymbols[language][args.type]..&#039; symbol to get or set a property.&#039;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(out, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;..line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(out, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.isCancellable(frame)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	return (args.cancel and args.cancel == &#039;true&#039;) or (args.cancel and args.cancel == &#039;true&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatType(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getTypeRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatName(name, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;span style=&#039;font-family: \&amp;quot;Source Code Pro\&amp;quot;, monospace; color: &amp;quot;..p.getNameRgb()..&amp;quot;;\&amp;quot;&#039;&amp;gt;&amp;quot;..name..&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatSource(type, frame)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..type..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCode(code)&lt;br /&gt;
	return &amp;quot;&amp;lt;code&amp;gt;&amp;quot;..code..&amp;quot;&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDescription(description)&lt;br /&gt;
	description = p.capital(description)&lt;br /&gt;
	description = p.dot(description)&lt;br /&gt;
	return description&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.standardizeNullType(type)&lt;br /&gt;
	type = type:lower()&lt;br /&gt;
	if type == &#039;void&#039; or type == &#039;null&#039; or type == &#039;undefined&#039; or type == &#039;n/a&#039; then&lt;br /&gt;
		return &#039;void&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return type&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- general utility&lt;br /&gt;
function p.split(str, sep, limit)&lt;br /&gt;
   if not sep or sep == &amp;quot;&amp;quot; then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   if not str then&lt;br /&gt;
      return false&lt;br /&gt;
   end&lt;br /&gt;
   limit = limit or math.huge&lt;br /&gt;
   if limit == 0 or limit == 1 then&lt;br /&gt;
      return {str}, 1&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   local r = {}&lt;br /&gt;
   local n, init = 0, 1&lt;br /&gt;
&lt;br /&gt;
   while true do&lt;br /&gt;
      local s,e = str:find(sep, init, true)&lt;br /&gt;
      if not s then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
      r[#r+1] = str:sub(init, s - 1)&lt;br /&gt;
      init = e + 1&lt;br /&gt;
      n = n + 1&lt;br /&gt;
      if n == limit - 1 then&lt;br /&gt;
         break&lt;br /&gt;
      end&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   if init &amp;lt;= str:len() then&lt;br /&gt;
      r[#r+1] = str:sub(init)&lt;br /&gt;
   else&lt;br /&gt;
      r[#r+1] = &amp;quot;&amp;quot;&lt;br /&gt;
   end&lt;br /&gt;
   n = n + 1&lt;br /&gt;
&lt;br /&gt;
   if limit &amp;lt; 0 then&lt;br /&gt;
      for i=n, n + limit + 1, -1 do r[i] = nil end&lt;br /&gt;
      n = n + limit&lt;br /&gt;
   end&lt;br /&gt;
&lt;br /&gt;
   return r, n&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.rfind(s, find)&lt;br /&gt;
	local index = s:reverse():find(find)&lt;br /&gt;
	if not index then return end&lt;br /&gt;
	return #s - index + 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.trim(s)&lt;br /&gt;
	return (string.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitLines(text)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\n&amp;quot;)&lt;br /&gt;
	text = p.remove(text, &amp;quot;\r&amp;quot;)&lt;br /&gt;
	return p.split(text, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.remove(text, remove)&lt;br /&gt;
	return p.replace(text, remove, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.replace(text, find, replace)&lt;br /&gt;
	return text:gsub(find, replace)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getIndexedArgs(frame, name)&lt;br /&gt;
	local args = p.getArgs(frame)&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local out = {}&lt;br /&gt;
	if args[name] then&lt;br /&gt;
		out[i] = args[name]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	while args[name..i] do&lt;br /&gt;
		out[i] = args[name..i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.loadTemplate(frame, title, args)&lt;br /&gt;
	return frame:expandTemplate{ title = title, args = args }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSideVersions(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local sideVersions = {}&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
			sideVersions[2] = tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			sideVersions[1] = tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		sideVersions[1] = tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return sideVersions, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getVersionsText(arg, side, start)&lt;br /&gt;
	if not start then start = 1 end&lt;br /&gt;
	local tokens = p.split(arg, &#039; &#039;)&lt;br /&gt;
	local text&lt;br /&gt;
	if side == &#039;shared&#039; then&lt;br /&gt;
		if tokens[start+1] then&lt;br /&gt;
			text = &amp;quot;server version &amp;quot;..tokens[start]..&amp;quot; and client version &amp;quot;..tokens[start+1]&lt;br /&gt;
		else&lt;br /&gt;
			text = &amp;quot;version &amp;quot;..tokens[start]&lt;br /&gt;
		end&lt;br /&gt;
	elseif side == &#039;server&#039; then&lt;br /&gt;
		text = &amp;quot;server version &amp;quot;..tokens[start]&lt;br /&gt;
	elseif side == &#039;client&#039; then&lt;br /&gt;
		text = &amp;quot;client version &amp;quot;..tokens[start]&lt;br /&gt;
	end&lt;br /&gt;
	return text, tokens&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.properCase(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2):lower()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lowerFirstCharCase(text)&lt;br /&gt;
	return text:sub(1,1):lower()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.findText(text, finds, replaces, defaults, default)&lt;br /&gt;
	if not text then return default end&lt;br /&gt;
	local textLower = text:lower()&lt;br /&gt;
	&lt;br /&gt;
	for i,default2 in ipairs(defaults) do&lt;br /&gt;
		if textLower == default2 then&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local items = {}&lt;br /&gt;
	for i,find in ipairs(finds) do&lt;br /&gt;
		if textLower:find(find, 1, true) then&lt;br /&gt;
			table.insert(items, replaces[i])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p.getListText(items)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getListText(items)&lt;br /&gt;
	local count = #items&lt;br /&gt;
	&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return items[1]&lt;br /&gt;
	elseif count == 2 then&lt;br /&gt;
		return items[1]..&amp;quot; and &amp;quot;..items[2]&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat(items, &amp;quot;, &amp;quot;, 1, count - 1)..&amp;quot; and &amp;quot;..items[count]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.dot(text)&lt;br /&gt;
	local i = #text&lt;br /&gt;
	while i &amp;gt; 0 and text:sub(i, i) == &amp;quot;.&amp;quot; do&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
	return text:sub(1,i)..&amp;quot;.&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.capital(text)&lt;br /&gt;
	return text:sub(1,1):upper()..text:sub(2)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.copyTable(t)&lt;br /&gt;
	local out = {}&lt;br /&gt;
	for k,v in pairs(t) do&lt;br /&gt;
		out[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sortTable(t)&lt;br /&gt;
	table.sort(t, function(a,b)&lt;br /&gt;
		return a:lower() &amp;lt; b:lower()&lt;br /&gt;
	end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(headers, rows, widths, tableCssClass)&lt;br /&gt;
	if tableCssClass == nil then tableCssClass = &#039;wikitable&#039; end&lt;br /&gt;
	rows = p.copyTable(rows)&lt;br /&gt;
	if not widths then widths = {} end&lt;br /&gt;
	&lt;br /&gt;
	if headers then&lt;br /&gt;
		headers = p.copyTable(headers)&lt;br /&gt;
		&lt;br /&gt;
		for i,header in ipairs(headers) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				headers[i] = &amp;quot;id=&#039;th_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#headers and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..header&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for i,cell in ipairs(rows[1]) do&lt;br /&gt;
			local width = widths[i]&lt;br /&gt;
			if width and width &amp;gt; 0 then&lt;br /&gt;
				rows[1][i] = &amp;quot;id=&#039;td_&amp;quot;..i..&amp;quot;&#039; style=&#039;text-align:left;&amp;quot;..(i==#rows[1] and &#039;min-width&#039; or &#039;width&#039;)..&amp;quot;:&amp;quot;..width..&amp;quot;px;&#039;| &amp;quot;..cell&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i,row in ipairs(rows) do&lt;br /&gt;
		rows[i] = &#039;|&#039;..table.concat(row, &#039;\n|&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return &#039;{|&#039;..(tableCssClass and &#039; class=&amp;quot;&#039;..tableCssClass..&#039;&amp;quot;&#039; or &#039;&#039;)..(headers and &amp;quot; id=&#039;headers&#039; &amp;quot; and &#039;\n!&#039;..table.concat(headers, &#039;\n!&#039;)..&#039;\n|-&#039; or &#039;&#039;)..&#039;\n&#039;..table.concat(rows, &#039;\n|-\n&#039;)..&#039;\n|}&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- return the module&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10973</id>
		<title>ServerConfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10973"/>
		<updated>2024-02-29T11:22:29Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Server Configuration}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
The server configuration file is named &amp;lt;code&amp;gt;server.xml&amp;lt;/code&amp;gt; by default, and is located in the same folder as the file named &amp;lt;code&amp;gt;Server.exe&amp;lt;/code&amp;gt; on Windows or &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; on Linux.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use a custom filename for the server configuration file with the &amp;lt;code&amp;gt;-config&amp;lt;/code&amp;gt; option. Example: &amp;lt;code&amp;gt;Server.exe -config my-config.xml&amp;lt;/code&amp;gt;. See the [[ServerCommandLine|server command line]] page for more info on accepted command arguments.&amp;lt;br&amp;gt;&lt;br /&gt;
The file uses the XML syntax, with a root node named &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;. [https://www.w3.org/TR/xml/ Official XML Specification]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It&#039;s best practice to specify all or most of these properties in your server config XML. The corresponding default value will be used if the property is not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Server Property Name&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|anticheat&lt;br /&gt;
|(empty node)&lt;br /&gt;
|Anti cheat. See [[Anticheat|Anticheat]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|bindip&lt;br /&gt;
|(empty string)&lt;br /&gt;
|Forces the server to use a specific IP. Only for hosts that have multiple IP addresses.&lt;br /&gt;
|-&lt;br /&gt;
|cvar&lt;br /&gt;
|(individual default values)&lt;br /&gt;
|Sets a server&#039;s cvar value. See [[CVars|CVars]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|duplicatenames&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to allow players with duplicate names.&lt;br /&gt;
|-&lt;br /&gt;
|game&lt;br /&gt;
|gta:iii&lt;br /&gt;
|The identifier of the game that the server should run for. See [[GameIdentifiers|game identifiers]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|gamemode&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|Custom text to identify the game mode. Appears in the server browser. &#039;&#039;&#039;This is not IV gamemode ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|httpport&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to transfer HTTP data on, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|httpserver&lt;br /&gt;
|true&lt;br /&gt;
|Whether or not to run the [[HTTPServer|HTTP server]].&lt;br /&gt;
|-&lt;br /&gt;
|httpurl&lt;br /&gt;
|(empty string)&lt;br /&gt;
|A URL (like a CDN) containing the server&#039;s client resource files and scripts. Clients will download them from that URL instead of the server.&lt;br /&gt;
|-&lt;br /&gt;
|iv_episode&lt;br /&gt;
| -1&lt;br /&gt;
|Sets the DLC to use for IV. See [[Resources/GTAIV/Episodes|IV Episodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_gamemode&lt;br /&gt;
|8&lt;br /&gt;
|Sets the built-in gamemode for IV. See [[Resources/GTAIV/GameModes|IV Gamemodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_nativemultiplayer&lt;br /&gt;
|true&lt;br /&gt;
|If enabled, server uses native sync (from Rockstar/GFWL), otherwise server uses GTAC&#039;s custom sync.&lt;br /&gt;
|-&lt;br /&gt;
|logpath&lt;br /&gt;
|(empty string)&lt;br /&gt;
|The path to store the server logs. Leave blank to not use server logs.&lt;br /&gt;
|-&lt;br /&gt;
|logtimestamp&lt;br /&gt;
|%d/%m/%Y - %X&lt;br /&gt;
|The timestamp format to use in the log files. Based on the [http://cplusplus.com/reference/clibrary/ctime/strftime/ strftime] format from C++. Some examples:&lt;br /&gt;
&amp;lt;code&amp;gt;[%H:%M:%S]&amp;lt;/code&amp;gt; This displays only the time.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[%d/%m/%Y %H:%M:%S]&amp;lt;/code&amp;gt; This would display the date in dd/mm/yyyy format followed by the time in hour:minute:second format. &lt;br /&gt;
|-&lt;br /&gt;
|maxplayers&lt;br /&gt;
|32&lt;br /&gt;
|The maximum amount of players that can connect to the server, between 0 and 127.&lt;br /&gt;
|-&lt;br /&gt;
|minclientversion&lt;br /&gt;
|1.0.0.0&lt;br /&gt;
|The minimum version that clients can connect with. Between 1 and 4 dot-delimited tokens. [https://gtaconnected.com/downloads/client/version See latest client version here].&lt;br /&gt;
|-&lt;br /&gt;
|minuteduration&lt;br /&gt;
|2.0 for IV, otherwise 1.0&lt;br /&gt;
|The amount of seconds for an in-game minute.&lt;br /&gt;
|-&lt;br /&gt;
|modules&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The modules to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;modules&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each module to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|multithreaded&lt;br /&gt;
|false&lt;br /&gt;
|Enables/disables using multiple threads for managing network peers. Useful on multi-core systems.&lt;br /&gt;
|-&lt;br /&gt;
|password&lt;br /&gt;
|(empty string)&lt;br /&gt;
|The password to connect to the server.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamindistance&lt;br /&gt;
|50.0&lt;br /&gt;
|The distance that a pickup is sent to the client, recommended to be about 50.0.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamoutdistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that a pickup is removed from the client, recommended to be about 100.0. &#039;&#039;&#039;Must be higher than pickupstreamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|port&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to listen on, between 0 and 65,535. Players only need to know the port if using the /connect command in-game, not when using the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|rcon&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;[Inoperable]&#039;&#039;&#039; The status of whether the server will host the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconpassword&lt;br /&gt;
|(empty string)&lt;br /&gt;
|The password to connect to the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconport&lt;br /&gt;
|23000&lt;br /&gt;
|The port to host the remote console service on.&lt;br /&gt;
|-&lt;br /&gt;
|resources&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The [[Resources|resources]] to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;resource&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;resources&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each resource to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|rule&lt;br /&gt;
|(empty string)&lt;br /&gt;
|Adds a server rule. See [[ServerRules|server rules]] for more info.&lt;br /&gt;
|-&lt;br /&gt;
|serverbrowser&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to show the server in the server browser, use true or false.&lt;br /&gt;
|-&lt;br /&gt;
|serverlistingurl&lt;br /&gt;
|serverlisting.gtaconnected.com&lt;br /&gt;
|The URL of the server listing.&lt;br /&gt;
|-&lt;br /&gt;
|servername&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|The name of the server, which appears in the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|serverquery&lt;br /&gt;
|true&lt;br /&gt;
|The enabled status of UDP server queries.&lt;br /&gt;
|-&lt;br /&gt;
|streamindistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that an entity is sent to a client, recommended to be about 100.0 mainly because of game limits.&lt;br /&gt;
|-&lt;br /&gt;
|streamoutdistance&lt;br /&gt;
|200.0&lt;br /&gt;
|The distance that an entity is removed from a client, recommended to be about 200.0. &#039;&#039;&#039;Must be higher than streamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|syncinterval&lt;br /&gt;
|30&lt;br /&gt;
|The interval, in milliseconds, of each sync occurrence for the regularly sync&#039;d data, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|synclocalentities&lt;br /&gt;
|false&lt;br /&gt;
|Whether to sync local entities.&lt;br /&gt;
|-&lt;br /&gt;
|syncmethod&lt;br /&gt;
|interval&lt;br /&gt;
|The sync type for regularly sync&#039;d data. Use none, interval, or replay. (See sync methods section below.)&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketpriority&lt;br /&gt;
|low&lt;br /&gt;
|The priority of sync packets. Use low, medium, high, or immediate.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketreliable&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for reliable packets.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketunsequenced&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for unsequenced packets.&lt;br /&gt;
|-&lt;br /&gt;
|timesync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the time set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|weathersync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the weather set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|streaminterval&lt;br /&gt;
|1000&lt;br /&gt;
|The interval, in milliseconds, between checking if elements should be streamed in/out for players, between 500-5000.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CVars ==&lt;br /&gt;
See the [[CVars|CVars]] page for info.&lt;br /&gt;
&lt;br /&gt;
== Sync Methods ==&lt;br /&gt;
There are a few different config options for server sync. Here is the list of them and a brief description of each.&lt;br /&gt;
{{ServerSyncMethods}}&lt;br /&gt;
&lt;br /&gt;
== Optional Settings ==&lt;br /&gt;
&lt;br /&gt;
Most of the XML server config settings are optional, and have a default value used if not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;quot;Default Value&amp;quot; column in the settings list shows &amp;quot;required&amp;quot; if the setting is required.&amp;lt;br&amp;gt;&lt;br /&gt;
To explicitly not specify a server config XML setting, either remove that setting&#039;s XML element, or comment it out with an XML comment.&amp;lt;br&amp;gt;&lt;br /&gt;
Do not leave a setting&#039;s XML element present with a blank value.&lt;br /&gt;
&lt;br /&gt;
== IV Settings ==&lt;br /&gt;
&lt;br /&gt;
Server config settings &amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt;, are all optional to be specified in the server config XML file. Check the list above for default values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;  are ignored, whether they are specified or not.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; are acknowledged and used if specified, or their default values are used if not specified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode -1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This means that an internal IV gamemode is not used, and that a sandboxed scripting environment is preferred.&amp;lt;br&amp;gt;&lt;br /&gt;
A script will need to be present to fade the camera in and spawn the player, via scripting functions [[fadeCamera|fadeCamera]] and [[spawnPlayer|spawnPlayer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode 30&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an outdated value for &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and should not be used. Please use &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; instead.&amp;lt;br&amp;gt;&lt;br /&gt;
Using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, is different than using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting value is currently left in for backward compatibility, however may become obsolete in the future.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;server&amp;gt;&lt;br /&gt;
	&amp;lt;!-- General Information --&amp;gt;&lt;br /&gt;
	&amp;lt;servername&amp;gt;Default Server&amp;lt;/servername&amp;gt;&lt;br /&gt;
	&amp;lt;game&amp;gt;gta:iii&amp;lt;/game&amp;gt;&lt;br /&gt;
	&amp;lt;gamemode&amp;gt;Free Roam&amp;lt;/gamemode&amp;gt;&lt;br /&gt;
	&amp;lt;serverbrowser&amp;gt;true&amp;lt;/serverbrowser&amp;gt;&lt;br /&gt;
	&amp;lt;maxplayers&amp;gt;32&amp;lt;/maxplayers&amp;gt;&lt;br /&gt;
	&amp;lt;password&amp;gt;&amp;lt;/password&amp;gt;&lt;br /&gt;
	&amp;lt;minclientversion&amp;gt;1.5.0&amp;lt;/minclientversion&amp;gt;&lt;br /&gt;
	&amp;lt;duplicatenames&amp;gt;false&amp;lt;/duplicatenames&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Networking --&amp;gt;&lt;br /&gt;
	&amp;lt;port&amp;gt;22000&amp;lt;/port&amp;gt;&lt;br /&gt;
	&amp;lt;httpport&amp;gt;22000&amp;lt;/httpport&amp;gt;&lt;br /&gt;
	&amp;lt;httpserver&amp;gt;true&amp;lt;/httpserver&amp;gt;&lt;br /&gt;
	&amp;lt;streaminterval&amp;gt;1000&amp;lt;/streaminterval&amp;gt;&lt;br /&gt;
	&amp;lt;syncinterval&amp;gt;30&amp;lt;/syncinterval&amp;gt;&lt;br /&gt;
	&amp;lt;syncmethod&amp;gt;interval&amp;lt;/syncmethod&amp;gt;&lt;br /&gt;
	&amp;lt;synclocalentities&amp;gt;true&amp;lt;/synclocalentities&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Element Streaming --&amp;gt;&lt;br /&gt;
	&amp;lt;streamindistance&amp;gt;200&amp;lt;/streamindistance&amp;gt;&lt;br /&gt;
	&amp;lt;streamoutdistance&amp;gt;250&amp;lt;/streamoutdistance&amp;gt;&lt;br /&gt;
	&amp;lt;pickupstreamindistance&amp;gt;30&amp;lt;/pickupstreamindistance&amp;gt;&lt;br /&gt;
	&amp;lt;pickupstreamoutdistance&amp;gt;50&amp;lt;/pickupstreamoutdistance&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Logging --&amp;gt;&lt;br /&gt;
	&amp;lt;logpath&amp;gt;logs&amp;lt;/logpath&amp;gt;&lt;br /&gt;
	&amp;lt;logtimestamp&amp;gt;[%d/%m/%Y - %X]&amp;lt;/logtimestamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- GTA IV --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources/GTAIV/GameModes --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources/GTAIV/Episodes --&amp;gt;&lt;br /&gt;
	&amp;lt;iv_gamemode&amp;gt;8&amp;lt;/iv_gamemode&amp;gt;&lt;br /&gt;
	&amp;lt;iv_episode&amp;gt;-1&amp;lt;/iv_episode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Modules --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Modules --&amp;gt;&lt;br /&gt;
	&amp;lt;modules&amp;gt;&lt;br /&gt;
	&amp;lt;/modules&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Global CVars --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/CVars --&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;nametags&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;gunshops&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;uniquestuntjumps&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;stuntjumps&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;stauntontoiletcamera&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;gates&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;trains&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;planes&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;maximumwantedlevel&amp;quot; value=&amp;quot;6&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;defaultparkedcars&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;ambulances&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;traffic&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;civilians&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;defaultpickups&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;singleplayer&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;bigmap&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_playerwalking&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_scenariopeds&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_randomcops&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Rules --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/ServerRules --&amp;gt;&lt;br /&gt;
	&amp;lt;rule name=&amp;quot;Owner&amp;quot; value=&amp;quot;Nobody&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;rule name=&amp;quot;Website&amp;quot; value=&amp;quot;https://gtaconnected.com&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Resources --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources --&amp;gt;&lt;br /&gt;
	&amp;lt;resources&amp;gt;&lt;br /&gt;
		&amp;lt;resource src=&amp;quot;freeroam&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/server&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10972</id>
		<title>ServerConfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10972"/>
		<updated>2024-02-29T11:14:43Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Server Configuration}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
The server configuration file is named &amp;lt;code&amp;gt;server.xml&amp;lt;/code&amp;gt; by default, and is located in the same folder as the file named &amp;lt;code&amp;gt;Server.exe&amp;lt;/code&amp;gt; on Windows or &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; on Linux.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use a custom filename for the server configuration file with the &amp;lt;code&amp;gt;-config&amp;lt;/code&amp;gt; option. Example: &amp;lt;code&amp;gt;Server.exe -config my-config.xml&amp;lt;/code&amp;gt;. See the [[ServerCommandLine|server command line]] page for more info on accepted command arguments.&amp;lt;br&amp;gt;&lt;br /&gt;
The file uses the XML syntax, with a root node named &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;. [https://www.w3.org/TR/xml/ Official XML Specification]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It&#039;s best practice to specify all or most of these properties in your server config XML. The corresponding default value will be used if the property is not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Server Property Name&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|anticheat&lt;br /&gt;
|(empty node)&lt;br /&gt;
|Anti cheat. See [[Anticheat|Anticheat]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|bindip&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Forces the server to use a specific IP. Only for hosts that have multiple IP addresses.&lt;br /&gt;
|-&lt;br /&gt;
|cvar&lt;br /&gt;
|null&lt;br /&gt;
|Sets a server&#039;s cvar value. See [[CVars|CVars]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|duplicatenames&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to allow players with duplicate names.&lt;br /&gt;
|-&lt;br /&gt;
|game&lt;br /&gt;
|gta:iii&lt;br /&gt;
|The identifier of the game that the server should run for. See [[GameIdentifiers|game identifiers]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|gamemode&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|Custom text to identify the game mode. Appears in the server browser. &#039;&#039;&#039;This is not IV gamemode ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|httpport&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to transfer HTTP data on, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|httpserver&lt;br /&gt;
|true&lt;br /&gt;
|Whether or not to run the [[HTTPServer|HTTP server]].&lt;br /&gt;
|-&lt;br /&gt;
|httpurl&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|A URL (like a CDN) containing the server&#039;s client resource files and scripts. Clients will download them from that URL instead of the server.&lt;br /&gt;
|-&lt;br /&gt;
|iv_episode&lt;br /&gt;
| -1&lt;br /&gt;
|Sets the DLC to use for IV. See [[Resources/GTAIV/Episodes|IV Episodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_gamemode&lt;br /&gt;
|8&lt;br /&gt;
|Sets the built-in gamemode for IV. See [[Resources/GTAIV/GameModes|IV Gamemodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_nativemultiplayer&lt;br /&gt;
|true&lt;br /&gt;
|If enabled, server uses native sync (from Rockstar/GFWL), otherwise server uses GTAC&#039;s custom sync.&lt;br /&gt;
|-&lt;br /&gt;
|logpath&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The path to store the server logs. Leave blank to not use server logs.&lt;br /&gt;
|-&lt;br /&gt;
|logtimestamp&lt;br /&gt;
|%d/%m/%Y - %X&lt;br /&gt;
|The timestamp format to use in the log files. Based on the [http://cplusplus.com/reference/clibrary/ctime/strftime/ strftime] format from C++. Some examples:&lt;br /&gt;
&amp;lt;code&amp;gt;[%H:%M:%S]&amp;lt;/code&amp;gt; This displays only the time.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[%d/%m/%Y %H:%M:%S]&amp;lt;/code&amp;gt; This would display the date in dd/mm/yyyy format followed by the time in hour:minute:second format. &lt;br /&gt;
|-&lt;br /&gt;
|maxplayers&lt;br /&gt;
|32&lt;br /&gt;
|The maximum amount of players that can connect to the server, between 0 and 127.&lt;br /&gt;
|-&lt;br /&gt;
|minclientversion&lt;br /&gt;
|1.0.0.0&lt;br /&gt;
|The minimum version that clients can connect with. Between 1 and 4 dot-delimited tokens. [https://gtaconnected.com/downloads/client/version See latest client version here].&lt;br /&gt;
|-&lt;br /&gt;
|minuteduration&lt;br /&gt;
|2.0 for IV, otherwise 1.0&lt;br /&gt;
|The amount of seconds for an in-game minute.&lt;br /&gt;
|-&lt;br /&gt;
|modules&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The modules to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;modules&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each module to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|multithreaded&lt;br /&gt;
|false&lt;br /&gt;
|Enables/disables using multiple threads for managing network peers. Useful on multi-core systems.&lt;br /&gt;
|-&lt;br /&gt;
|password&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the server.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamindistance&lt;br /&gt;
|50.0&lt;br /&gt;
|The distance that a pickup is sent to the client, recommended to be about 50.0.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamoutdistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that a pickup is removed from the client, recommended to be about 100.0. &#039;&#039;&#039;Must be higher than pickupstreamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|port&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to listen on, between 0 and 65,535. Players only need to know the port if using the /connect command in-game, not when using the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|rcon&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;[Inoperable]&#039;&#039;&#039; The status of whether the server will host the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconpassword&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconport&lt;br /&gt;
|23000&lt;br /&gt;
|The port to host the remote console service on.&lt;br /&gt;
|-&lt;br /&gt;
|resources&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The [[Resources|resources]] to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;resource&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;resources&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each resource to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|rule&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Adds a server rule. See [[ServerRules|server rules]] for more info.&lt;br /&gt;
|-&lt;br /&gt;
|serverbrowser&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to show the server in the server browser, use true or false.&lt;br /&gt;
|-&lt;br /&gt;
|serverlistingurl&lt;br /&gt;
|serverlisting.gtaconnected.com&lt;br /&gt;
|The URL of the server listing.&lt;br /&gt;
|-&lt;br /&gt;
|servername&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|The name of the server, which appears in the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|serverquery&lt;br /&gt;
|true&lt;br /&gt;
|The enabled status of UDP server queries.&lt;br /&gt;
|-&lt;br /&gt;
|streamindistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that an entity is sent to a client, recommended to be about 100.0 mainly because of game limits.&lt;br /&gt;
|-&lt;br /&gt;
|streamoutdistance&lt;br /&gt;
|200.0&lt;br /&gt;
|The distance that an entity is removed from a client, recommended to be about 200.0. &#039;&#039;&#039;Must be higher than streamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|syncinterval&lt;br /&gt;
|30&lt;br /&gt;
|The interval, in milliseconds, of each sync occurrence for the regularly sync&#039;d data, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|synclocalentities&lt;br /&gt;
|false&lt;br /&gt;
|Whether to sync local entities.&lt;br /&gt;
|-&lt;br /&gt;
|syncmethod&lt;br /&gt;
|interval&lt;br /&gt;
|The sync type for regularly sync&#039;d data. Use none, interval, or replay. (See sync methods section below.)&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketpriority&lt;br /&gt;
|low&lt;br /&gt;
|The priority of sync packets. Use low, medium, high, or immediate.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketreliable&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for reliable packets.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketunsequenced&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for unsequenced packets.&lt;br /&gt;
|-&lt;br /&gt;
|timesync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the time set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|weathersync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the weather set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|streaminterval&lt;br /&gt;
|1000&lt;br /&gt;
|The interval, in milliseconds, between checking if elements should be streamed in/out for players, between 500-5000.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CVars ==&lt;br /&gt;
See the [[CVars|CVars]] page for info.&lt;br /&gt;
&lt;br /&gt;
== Sync Methods ==&lt;br /&gt;
There are a few different config options for server sync. Here is the list of them and a brief description of each.&lt;br /&gt;
{{ServerSyncMethods}}&lt;br /&gt;
&lt;br /&gt;
== Optional Settings ==&lt;br /&gt;
&lt;br /&gt;
Most of the XML server config settings are optional, and have a default value used if not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;quot;Default Value&amp;quot; column in the settings list shows &amp;quot;required&amp;quot; if the setting is required.&amp;lt;br&amp;gt;&lt;br /&gt;
To explicitly not specify a server config XML setting, either remove that setting&#039;s XML element, or comment it out with an XML comment.&amp;lt;br&amp;gt;&lt;br /&gt;
Do not leave a setting&#039;s XML element present with a blank value.&lt;br /&gt;
&lt;br /&gt;
== IV Settings ==&lt;br /&gt;
&lt;br /&gt;
Server config settings &amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt;, are all optional to be specified in the server config XML file. Check the list above for default values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;  are ignored, whether they are specified or not.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; are acknowledged and used if specified, or their default values are used if not specified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode -1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This means that an internal IV gamemode is not used, and that a sandboxed scripting environment is preferred.&amp;lt;br&amp;gt;&lt;br /&gt;
A script will need to be present to fade the camera in and spawn the player, via scripting functions [[fadeCamera|fadeCamera]] and [[spawnPlayer|spawnPlayer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode 30&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an outdated value for &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and should not be used. Please use &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; instead.&amp;lt;br&amp;gt;&lt;br /&gt;
Using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, is different than using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting value is currently left in for backward compatibility, however may become obsolete in the future.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;server&amp;gt;&lt;br /&gt;
	&amp;lt;!-- General Information --&amp;gt;&lt;br /&gt;
	&amp;lt;servername&amp;gt;Default Server&amp;lt;/servername&amp;gt;&lt;br /&gt;
	&amp;lt;game&amp;gt;gta:iii&amp;lt;/game&amp;gt;&lt;br /&gt;
	&amp;lt;gamemode&amp;gt;Free Roam&amp;lt;/gamemode&amp;gt;&lt;br /&gt;
	&amp;lt;serverbrowser&amp;gt;true&amp;lt;/serverbrowser&amp;gt;&lt;br /&gt;
	&amp;lt;maxplayers&amp;gt;32&amp;lt;/maxplayers&amp;gt;&lt;br /&gt;
	&amp;lt;password&amp;gt;&amp;lt;/password&amp;gt;&lt;br /&gt;
	&amp;lt;minclientversion&amp;gt;1.5.0&amp;lt;/minclientversion&amp;gt;&lt;br /&gt;
	&amp;lt;duplicatenames&amp;gt;false&amp;lt;/duplicatenames&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Networking --&amp;gt;&lt;br /&gt;
	&amp;lt;port&amp;gt;22000&amp;lt;/port&amp;gt;&lt;br /&gt;
	&amp;lt;httpport&amp;gt;22000&amp;lt;/httpport&amp;gt;&lt;br /&gt;
	&amp;lt;httpserver&amp;gt;true&amp;lt;/httpserver&amp;gt;&lt;br /&gt;
	&amp;lt;streaminterval&amp;gt;1000&amp;lt;/streaminterval&amp;gt;&lt;br /&gt;
	&amp;lt;syncinterval&amp;gt;30&amp;lt;/syncinterval&amp;gt;&lt;br /&gt;
	&amp;lt;syncmethod&amp;gt;interval&amp;lt;/syncmethod&amp;gt;&lt;br /&gt;
	&amp;lt;synclocalentities&amp;gt;true&amp;lt;/synclocalentities&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Element Streaming --&amp;gt;&lt;br /&gt;
	&amp;lt;streamindistance&amp;gt;200&amp;lt;/streamindistance&amp;gt;&lt;br /&gt;
	&amp;lt;streamoutdistance&amp;gt;250&amp;lt;/streamoutdistance&amp;gt;&lt;br /&gt;
	&amp;lt;pickupstreamindistance&amp;gt;30&amp;lt;/pickupstreamindistance&amp;gt;&lt;br /&gt;
	&amp;lt;pickupstreamoutdistance&amp;gt;50&amp;lt;/pickupstreamoutdistance&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Logging --&amp;gt;&lt;br /&gt;
	&amp;lt;logpath&amp;gt;logs&amp;lt;/logpath&amp;gt;&lt;br /&gt;
	&amp;lt;logtimestamp&amp;gt;[%d/%m/%Y - %X]&amp;lt;/logtimestamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- GTA IV --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources/GTAIV/GameModes --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources/GTAIV/Episodes --&amp;gt;&lt;br /&gt;
	&amp;lt;iv_gamemode&amp;gt;8&amp;lt;/iv_gamemode&amp;gt;&lt;br /&gt;
	&amp;lt;iv_episode&amp;gt;-1&amp;lt;/iv_episode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Modules --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Modules --&amp;gt;&lt;br /&gt;
	&amp;lt;modules&amp;gt;&lt;br /&gt;
	&amp;lt;/modules&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Global CVars --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/CVars --&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;nametags&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;gunshops&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;uniquestuntjumps&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;stuntjumps&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;stauntontoiletcamera&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;gates&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;trains&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;planes&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;maximumwantedlevel&amp;quot; value=&amp;quot;6&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;defaultparkedcars&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;ambulances&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;traffic&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;civilians&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;defaultpickups&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;singleplayer&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;bigmap&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_playerwalking&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_scenariopeds&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_randomcops&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Rules --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/ServerRules --&amp;gt;&lt;br /&gt;
	&amp;lt;rule name=&amp;quot;Owner&amp;quot; value=&amp;quot;Nobody&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;rule name=&amp;quot;Website&amp;quot; value=&amp;quot;https://gtaconnected.com&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Resources --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources --&amp;gt;&lt;br /&gt;
	&amp;lt;resources&amp;gt;&lt;br /&gt;
		&amp;lt;resource src=&amp;quot;freeroam&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/server&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10971</id>
		<title>ServerConfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10971"/>
		<updated>2024-02-29T11:09:36Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Server Configuration}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
The server configuration file is named &amp;lt;code&amp;gt;server.xml&amp;lt;/code&amp;gt; by default, and is located in the same folder as the file named &amp;lt;code&amp;gt;Server.exe&amp;lt;/code&amp;gt; on Windows or &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; on Linux.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use a custom filename for the server configuration file with the &amp;lt;code&amp;gt;-config&amp;lt;/code&amp;gt; option. Example: &amp;lt;code&amp;gt;Server.exe -config my-config.xml&amp;lt;/code&amp;gt;. See the [[ServerCommandLine|server command line]] page for more info on accepted command arguments.&amp;lt;br&amp;gt;&lt;br /&gt;
The file uses the XML syntax, with a root node named &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;. [https://www.w3.org/TR/xml/ Official XML Specification]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It&#039;s best practice to specify all or most of these properties in your server config XML. The corresponding default value will be used if the property is not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Server Property Name&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|anticheat&lt;br /&gt;
|(empty node)&lt;br /&gt;
|Anti cheat. See [[Anticheat|Anticheat]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|bindip&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Forces the server to use a specific IP. Only for hosts that have multiple IP addresses.&lt;br /&gt;
|-&lt;br /&gt;
|cvar&lt;br /&gt;
|null&lt;br /&gt;
|Sets a server&#039;s cvar value. See [[CVars|CVars]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|duplicatenames&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to allow players with duplicate names.&lt;br /&gt;
|-&lt;br /&gt;
|game&lt;br /&gt;
|gta:iii&lt;br /&gt;
|The identifier of the game that the server should run for. See [[GameIdentifiers|game identifiers]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|gamemode&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|Custom text to identify the game mode. Appears in the server browser. &#039;&#039;&#039;This is not IV gamemode ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|httpport&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to transfer HTTP data on, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|httpserver&lt;br /&gt;
|true&lt;br /&gt;
|Whether or not to run the [[HTTPServer|HTTP server]].&lt;br /&gt;
|-&lt;br /&gt;
|httpurl&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|A URL (like a CDN) containing the server&#039;s client resource files and scripts. Clients will download them from that URL instead of the server.&lt;br /&gt;
|-&lt;br /&gt;
|iv_episode&lt;br /&gt;
| -1&lt;br /&gt;
|Sets the DLC to use for IV. See [[Resources/GTAIV/Episodes|IV Episodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_gamemode&lt;br /&gt;
|8&lt;br /&gt;
|Sets the built-in gamemode for IV. See [[Resources/GTAIV/GameModes|IV Gamemodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_nativemultiplayer&lt;br /&gt;
|true&lt;br /&gt;
|If enabled, server uses native sync (from Rockstar/GFWL), otherwise server uses GTAC&#039;s custom sync.&lt;br /&gt;
|-&lt;br /&gt;
|logpath&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The path to store the server logs. Leave blank to not use server logs.&lt;br /&gt;
|-&lt;br /&gt;
|logtimestamp&lt;br /&gt;
|%d/%m/%Y - %X&lt;br /&gt;
|The timestamp format to use in the log files. Based on the [http://cplusplus.com/reference/clibrary/ctime/strftime/ strftime] format from C++. Some examples:&lt;br /&gt;
&amp;lt;code&amp;gt;[%H:%M:%S]&amp;lt;/code&amp;gt; This displays only the time.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[%d/%m/%Y %H:%M:%S]&amp;lt;/code&amp;gt; This would display the date in dd/mm/yyyy format followed by the time in hour:minute:second format. &lt;br /&gt;
|-&lt;br /&gt;
|maxplayers&lt;br /&gt;
|32&lt;br /&gt;
|The maximum amount of players that can connect to the server, between 0 and 127.&lt;br /&gt;
|-&lt;br /&gt;
|minclientversion&lt;br /&gt;
|1.0.0.0&lt;br /&gt;
|The minimum version that clients can connect with. [https://gtaconnected.com/downloads/client/version See latest client version here].&lt;br /&gt;
|-&lt;br /&gt;
|minuteduration&lt;br /&gt;
|2.0 for IV, otherwise 1.0&lt;br /&gt;
|The amount of seconds for an in-game minute.&lt;br /&gt;
|-&lt;br /&gt;
|modules&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The modules to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;modules&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each module to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|multithreaded&lt;br /&gt;
|false&lt;br /&gt;
|Enables/disables using multiple threads for managing network peers. Useful on multi-core systems.&lt;br /&gt;
|-&lt;br /&gt;
|password&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the server.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamindistance&lt;br /&gt;
|50.0&lt;br /&gt;
|The distance that a pickup is sent to the client, recommended to be about 50.0.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamoutdistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that a pickup is removed from the client, recommended to be about 100.0. &#039;&#039;&#039;Must be higher than pickupstreamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|port&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to listen on, between 0 and 65,535. Players only need to know the port if using the /connect command in-game, not when using the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|rcon&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;[Inoperable]&#039;&#039;&#039; The status of whether the server will host the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconpassword&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconport&lt;br /&gt;
|23000&lt;br /&gt;
|The port to host the remote console service on.&lt;br /&gt;
|-&lt;br /&gt;
|resources&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The [[Resources|resources]] to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;resource&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;resources&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each resource to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|rule&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Adds a server rule. See [[ServerRules|server rules]] for more info.&lt;br /&gt;
|-&lt;br /&gt;
|serverbrowser&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to show the server in the server browser, use true or false.&lt;br /&gt;
|-&lt;br /&gt;
|serverlistingurl&lt;br /&gt;
|serverlisting.gtaconnected.com&lt;br /&gt;
|The URL of the server listing.&lt;br /&gt;
|-&lt;br /&gt;
|servername&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|The name of the server, which appears in the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|serverquery&lt;br /&gt;
|true&lt;br /&gt;
|The enabled status of UDP server queries.&lt;br /&gt;
|-&lt;br /&gt;
|streamindistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that an entity is sent to a client, recommended to be about 100.0 mainly because of game limits.&lt;br /&gt;
|-&lt;br /&gt;
|streamoutdistance&lt;br /&gt;
|200.0&lt;br /&gt;
|The distance that an entity is removed from a client, recommended to be about 200.0. &#039;&#039;&#039;Must be higher than streamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|syncinterval&lt;br /&gt;
|30&lt;br /&gt;
|The interval, in milliseconds, of each sync occurrence for the regularly sync&#039;d data, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|synclocalentities&lt;br /&gt;
|false&lt;br /&gt;
|Whether to sync local entities.&lt;br /&gt;
|-&lt;br /&gt;
|syncmethod&lt;br /&gt;
|interval&lt;br /&gt;
|The sync type for regularly sync&#039;d data. Use none, interval, or replay. (See sync methods section below.)&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketpriority&lt;br /&gt;
|low&lt;br /&gt;
|The priority of sync packets. Use low, medium, high, or immediate.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketreliable&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for reliable packets.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketunsequenced&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for unsequenced packets.&lt;br /&gt;
|-&lt;br /&gt;
|timesync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the time set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|weathersync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the weather set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|streaminterval&lt;br /&gt;
|1000&lt;br /&gt;
|The interval, in milliseconds, between checking if elements should be streamed in/out for players, between 500-5000.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CVars ==&lt;br /&gt;
See the [[CVars|CVars]] page for info.&lt;br /&gt;
&lt;br /&gt;
== Sync Methods ==&lt;br /&gt;
There are a few different config options for server sync. Here is the list of them and a brief description of each.&lt;br /&gt;
{{ServerSyncMethods}}&lt;br /&gt;
&lt;br /&gt;
== Optional Settings ==&lt;br /&gt;
&lt;br /&gt;
Most of the XML server config settings are optional, and have a default value used if not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;quot;Default Value&amp;quot; column in the settings list shows &amp;quot;required&amp;quot; if the setting is required.&amp;lt;br&amp;gt;&lt;br /&gt;
To explicitly not specify a server config XML setting, either remove that setting&#039;s XML element, or comment it out with an XML comment.&amp;lt;br&amp;gt;&lt;br /&gt;
Do not leave a setting&#039;s XML element present with a blank value.&lt;br /&gt;
&lt;br /&gt;
== IV Settings ==&lt;br /&gt;
&lt;br /&gt;
Server config settings &amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt;, are all optional to be specified in the server config XML file. Check the list above for default values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;  are ignored, whether they are specified or not.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; are acknowledged and used if specified, or their default values are used if not specified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode -1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This means that an internal IV gamemode is not used, and that a sandboxed scripting environment is preferred.&amp;lt;br&amp;gt;&lt;br /&gt;
A script will need to be present to fade the camera in and spawn the player, via scripting functions [[fadeCamera|fadeCamera]] and [[spawnPlayer|spawnPlayer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode 30&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an outdated value for &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and should not be used. Please use &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; instead.&amp;lt;br&amp;gt;&lt;br /&gt;
Using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, is different than using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting value is currently left in for backward compatibility, however may become obsolete in the future.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
&amp;lt;server&amp;gt;&lt;br /&gt;
	&amp;lt;!-- General Information --&amp;gt;&lt;br /&gt;
	&amp;lt;servername&amp;gt;Default Server&amp;lt;/servername&amp;gt;&lt;br /&gt;
	&amp;lt;game&amp;gt;gta:iii&amp;lt;/game&amp;gt;&lt;br /&gt;
	&amp;lt;gamemode&amp;gt;Free Roam&amp;lt;/gamemode&amp;gt;&lt;br /&gt;
	&amp;lt;serverbrowser&amp;gt;true&amp;lt;/serverbrowser&amp;gt;&lt;br /&gt;
	&amp;lt;maxplayers&amp;gt;32&amp;lt;/maxplayers&amp;gt;&lt;br /&gt;
	&amp;lt;password&amp;gt;&amp;lt;/password&amp;gt;&lt;br /&gt;
	&amp;lt;minclientversion&amp;gt;1.5.0&amp;lt;/minclientversion&amp;gt;&lt;br /&gt;
	&amp;lt;duplicatenames&amp;gt;false&amp;lt;/duplicatenames&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Networking --&amp;gt;&lt;br /&gt;
	&amp;lt;port&amp;gt;22000&amp;lt;/port&amp;gt;&lt;br /&gt;
	&amp;lt;httpport&amp;gt;22000&amp;lt;/httpport&amp;gt;&lt;br /&gt;
	&amp;lt;httpserver&amp;gt;true&amp;lt;/httpserver&amp;gt;&lt;br /&gt;
	&amp;lt;streaminterval&amp;gt;1000&amp;lt;/streaminterval&amp;gt;&lt;br /&gt;
	&amp;lt;syncinterval&amp;gt;30&amp;lt;/syncinterval&amp;gt;&lt;br /&gt;
	&amp;lt;syncmethod&amp;gt;interval&amp;lt;/syncmethod&amp;gt;&lt;br /&gt;
	&amp;lt;synclocalentities&amp;gt;true&amp;lt;/synclocalentities&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Element Streaming --&amp;gt;&lt;br /&gt;
	&amp;lt;streamindistance&amp;gt;200&amp;lt;/streamindistance&amp;gt;&lt;br /&gt;
	&amp;lt;streamoutdistance&amp;gt;250&amp;lt;/streamoutdistance&amp;gt;&lt;br /&gt;
	&amp;lt;pickupstreamindistance&amp;gt;30&amp;lt;/pickupstreamindistance&amp;gt;&lt;br /&gt;
	&amp;lt;pickupstreamoutdistance&amp;gt;50&amp;lt;/pickupstreamoutdistance&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Logging --&amp;gt;&lt;br /&gt;
	&amp;lt;logpath&amp;gt;logs&amp;lt;/logpath&amp;gt;&lt;br /&gt;
	&amp;lt;logtimestamp&amp;gt;[%d/%m/%Y - %X]&amp;lt;/logtimestamp&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- GTA IV --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources/GTAIV/GameModes --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources/GTAIV/Episodes --&amp;gt;&lt;br /&gt;
	&amp;lt;iv_gamemode&amp;gt;8&amp;lt;/iv_gamemode&amp;gt;&lt;br /&gt;
	&amp;lt;iv_episode&amp;gt;-1&amp;lt;/iv_episode&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Modules --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Modules --&amp;gt;&lt;br /&gt;
	&amp;lt;modules&amp;gt;&lt;br /&gt;
	&amp;lt;/modules&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Global CVars --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/CVars --&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;nametags&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;gunshops&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;uniquestuntjumps&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;stuntjumps&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;stauntontoiletcamera&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;gates&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;trains&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;planes&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;maximumwantedlevel&amp;quot; value=&amp;quot;6&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;defaultparkedcars&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;ambulances&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;traffic&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;civilians&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;defaultpickups&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;singleplayer&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;bigmap&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_playerwalking&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_scenariopeds&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;cvar name=&amp;quot;iv_randomcops&amp;quot; value=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Rules --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/ServerRules --&amp;gt;&lt;br /&gt;
	&amp;lt;rule name=&amp;quot;Owner&amp;quot; value=&amp;quot;Nobody&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;rule name=&amp;quot;Website&amp;quot; value=&amp;quot;https://gtaconnected.com&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Resources --&amp;gt;&lt;br /&gt;
	&amp;lt;!-- https://wiki.gtaconnected.com/Resources --&amp;gt;&lt;br /&gt;
	&amp;lt;resources&amp;gt;&lt;br /&gt;
		&amp;lt;resource src=&amp;quot;freeroam&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/server&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10970</id>
		<title>ServerConfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10970"/>
		<updated>2024-02-29T11:03:37Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Server Configuration}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
The server configuration file is named &amp;lt;code&amp;gt;server.xml&amp;lt;/code&amp;gt; by default, and is located in the same folder as the file named &amp;lt;code&amp;gt;Server.exe&amp;lt;/code&amp;gt; on Windows or &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; on Linux.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use a custom filename for the server configuration file with the &amp;lt;code&amp;gt;-config&amp;lt;/code&amp;gt; option. Example: &amp;lt;code&amp;gt;Server.exe -config my-config.xml&amp;lt;/code&amp;gt;. See the [[ServerCommandLine|server command line]] page for more info on accepted command arguments.&amp;lt;br&amp;gt;&lt;br /&gt;
The file uses the XML syntax, with a root node named &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;. [https://www.w3.org/TR/xml/ Official XML Specification]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It&#039;s best practice to specify all or most of these properties in your server config XML. The corresponding default value will be used if the property is not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Server Property Name&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|anticheat&lt;br /&gt;
|(empty node)&lt;br /&gt;
|Anti cheat. See [[Anticheat|Anticheat]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|bindip&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Forces the server to use a specific IP. Only for hosts that have multiple IP addresses.&lt;br /&gt;
|-&lt;br /&gt;
|cvar&lt;br /&gt;
|null&lt;br /&gt;
|Sets a server&#039;s cvar value. See [[CVars|CVars]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|duplicatenames&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to allow players with duplicate names.&lt;br /&gt;
|-&lt;br /&gt;
|game&lt;br /&gt;
|gta:iii&lt;br /&gt;
|The identifier of the game that the server should run for. See [[GameIdentifiers|game identifiers]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|gamemode&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|Custom text to identify the game mode. Appears in the server browser. &#039;&#039;&#039;This is not IV gamemode ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|httpport&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to transfer HTTP data on, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|httpserver&lt;br /&gt;
|true&lt;br /&gt;
|Whether or not to run the [[HTTPServer|HTTP server]].&lt;br /&gt;
|-&lt;br /&gt;
|httpurl&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|A URL (like a CDN) containing the server&#039;s client resource files and scripts. Clients will download them from that URL instead of the server.&lt;br /&gt;
|-&lt;br /&gt;
|iv_episode&lt;br /&gt;
| -1&lt;br /&gt;
|Sets the DLC to use for IV. See [[Resources/GTAIV/Episodes|IV Episodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_gamemode&lt;br /&gt;
|8&lt;br /&gt;
|Sets the built-in gamemode for IV. See [[Resources/GTAIV/GameModes|IV Gamemodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_nativemultiplayer&lt;br /&gt;
|true&lt;br /&gt;
|If enabled, server uses native sync (from Rockstar/GFWL), otherwise server uses GTAC&#039;s custom sync.&lt;br /&gt;
|-&lt;br /&gt;
|logpath&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The path to store the server logs. Leave blank to not use server logs.&lt;br /&gt;
|-&lt;br /&gt;
|logtimestamp&lt;br /&gt;
|%d/%m/%Y - %X&lt;br /&gt;
|The timestamp format to use in the log files. Based on the [http://cplusplus.com/reference/clibrary/ctime/strftime/ strftime] format from C++. Some examples:&lt;br /&gt;
&amp;lt;code&amp;gt;[%H:%M:%S]&amp;lt;/code&amp;gt; This displays only the time.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[%d/%m/%Y %H:%M:%S]&amp;lt;/code&amp;gt; This would display the date in dd/mm/yyyy format followed by the time in hour:minute:second format. &lt;br /&gt;
|-&lt;br /&gt;
|maxplayers&lt;br /&gt;
|32&lt;br /&gt;
|The maximum amount of players that can connect to the server, between 0 and 127.&lt;br /&gt;
|-&lt;br /&gt;
|minclientversion&lt;br /&gt;
|1.0.0.0&lt;br /&gt;
|The minimum version that clients can connect with. [https://gtaconnected.com/downloads/client/version See latest client version here].&lt;br /&gt;
|-&lt;br /&gt;
|minuteduration&lt;br /&gt;
|2.0 for IV, otherwise 1.0&lt;br /&gt;
|The amount of seconds for an in-game minute.&lt;br /&gt;
|-&lt;br /&gt;
|modules&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The modules to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;modules&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each module to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|multithreaded&lt;br /&gt;
|false&lt;br /&gt;
|Enables/disables using multiple threads for managing network peers. Useful on multi-core systems.&lt;br /&gt;
|-&lt;br /&gt;
|password&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the server.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamindistance&lt;br /&gt;
|50.0&lt;br /&gt;
|The distance that a pickup is sent to the client, recommended to be about 50.0.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamoutdistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that a pickup is removed from the client, recommended to be about 100.0. &#039;&#039;&#039;Must be higher than pickupstreamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|port&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to listen on, between 0 and 65,535. Players only need to know the port if using the /connect command in-game, not when using the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|rcon&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;[Inoperable]&#039;&#039;&#039; The status of whether the server will host the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconpassword&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconport&lt;br /&gt;
|23000&lt;br /&gt;
|The port to host the remote console service on.&lt;br /&gt;
|-&lt;br /&gt;
|resources&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The [[Resources|resources]] to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;resource&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;resources&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each resource to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|rule&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Adds a server rule. See [[ServerRules|server rules]] for more info.&lt;br /&gt;
|-&lt;br /&gt;
|serverbrowser&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to show the server in the server browser, use true or false.&lt;br /&gt;
|-&lt;br /&gt;
|serverlistingurl&lt;br /&gt;
|serverlisting.gtaconnected.com&lt;br /&gt;
|The URL of the server listing.&lt;br /&gt;
|-&lt;br /&gt;
|servername&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|The name of the server, which appears in the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|serverquery&lt;br /&gt;
|true&lt;br /&gt;
|The enabled status of UDP server queries.&lt;br /&gt;
|-&lt;br /&gt;
|streamindistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that an entity is sent to a client, recommended to be about 100.0 mainly because of game limits.&lt;br /&gt;
|-&lt;br /&gt;
|streamoutdistance&lt;br /&gt;
|200.0&lt;br /&gt;
|The distance that an entity is removed from a client, recommended to be about 200.0. &#039;&#039;&#039;Must be higher than streamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|syncinterval&lt;br /&gt;
|30&lt;br /&gt;
|The interval, in milliseconds, of each sync occurrence for the regularly sync&#039;d data, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|synclocalentities&lt;br /&gt;
|false&lt;br /&gt;
|Whether to sync local entities.&lt;br /&gt;
|-&lt;br /&gt;
|syncmethod&lt;br /&gt;
|interval&lt;br /&gt;
|The sync type for regularly sync&#039;d data. Use none, interval, or replay. (See sync methods section below.)&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketpriority&lt;br /&gt;
|low&lt;br /&gt;
|The priority of sync packets. Use low, medium, high, or immediate.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketreliable&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for reliable packets.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketunsequenced&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for unsequenced packets.&lt;br /&gt;
|-&lt;br /&gt;
|timesync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the time set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|weathersync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the weather set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|streaminterval&lt;br /&gt;
|1000&lt;br /&gt;
|The interval, in milliseconds, between checking if elements should be streamed in/out for players, between 500-5000.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CVars ==&lt;br /&gt;
See the [[CVars|CVars]] page for info.&lt;br /&gt;
&lt;br /&gt;
== Sync Methods ==&lt;br /&gt;
There are a few different config options for server sync. Here is the list of them and a brief description of each.&lt;br /&gt;
{{ServerSyncMethods}}&lt;br /&gt;
&lt;br /&gt;
== Optional Settings ==&lt;br /&gt;
&lt;br /&gt;
Most of the XML server config settings are optional, and have a default value used if not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;quot;Default Value&amp;quot; column in the settings list shows &amp;quot;required&amp;quot; if the setting is required.&amp;lt;br&amp;gt;&lt;br /&gt;
To explicitly not specify a server config XML setting, either remove that setting&#039;s XML element, or comment it out with an XML comment.&amp;lt;br&amp;gt;&lt;br /&gt;
Do not leave a setting&#039;s XML element present with a blank value.&lt;br /&gt;
&lt;br /&gt;
== IV Settings ==&lt;br /&gt;
&lt;br /&gt;
Server config settings &amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt;, are all optional to be specified in the server config XML file. Check the list above for default values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;  are ignored, whether they are specified or not.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; are acknowledged and used if specified, or their default values are used if not specified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode -1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This means that an internal IV gamemode is not used, and that a sandboxed scripting environment is preferred.&amp;lt;br&amp;gt;&lt;br /&gt;
A script will need to be present to fade the camera in and spawn the player, via scripting functions [[fadeCamera|fadeCamera]] and [[spawnPlayer|spawnPlayer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode 30&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an outdated value for &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and should not be used. Please use &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; instead.&amp;lt;br&amp;gt;&lt;br /&gt;
Using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, is different than using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting value is currently left in for backward compatibility, however may become obsolete in the future.&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
	<entry>
		<id>https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10969</id>
		<title>ServerConfiguration</title>
		<link rel="alternate" type="text/html" href="https://wiki.gtaconnected.com/wiki/index.php?title=ServerConfiguration&amp;diff=10969"/>
		<updated>2024-02-29T10:56:25Z</updated>

		<summary type="html">&lt;p&gt;Mex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Server Configuration}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
The server configuration file is named &amp;lt;code&amp;gt;server.xml&amp;lt;/code&amp;gt; by default, and is located in the same folder as the file named &amp;lt;code&amp;gt;Server.exe&amp;lt;/code&amp;gt; on Windows or &amp;lt;code&amp;gt;Server&amp;lt;/code&amp;gt; on Linux.&amp;lt;br&amp;gt;&lt;br /&gt;
You can use a custom filename for the server configuration file with the &amp;lt;code&amp;gt;-config&amp;lt;/code&amp;gt; option. Example: &amp;lt;code&amp;gt;Server.exe -config my-config.xml&amp;lt;/code&amp;gt;. See the [[ServerCommandLine|server command line]] page for more info on accepted command arguments.&amp;lt;br&amp;gt;&lt;br /&gt;
The file uses the XML syntax, with a root node named &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;. [https://www.w3.org/TR/xml/ Official XML Specification]&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
It&#039;s best practice to specify all or most of these properties in your server config XML. The corresponding default value will be used if the property is not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Server Property Name&lt;br /&gt;
!Default Value&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|anticheat&lt;br /&gt;
|(empty node)&lt;br /&gt;
|Anti cheat. See [[Anticheat|Anticheat]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|bindip&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Forces the server to use a specific IP. Only for hosts that have multiple IP addresses.&lt;br /&gt;
|-&lt;br /&gt;
|cvar&lt;br /&gt;
|null&lt;br /&gt;
|Sets a server&#039;s cvar value. See [[CVars|CVars]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|duplicatenames&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to allow players with duplicate names.&lt;br /&gt;
|-&lt;br /&gt;
|game&lt;br /&gt;
|gta:iii&lt;br /&gt;
|The identifier of the game that the server should run for. See [[GameIdentifiers|game identifiers]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|gamemode&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|Custom text to identify the game mode. Appears in the server browser. &#039;&#039;&#039;This is not IV gamemode ID&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|httpport&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to transfer HTTP data on, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|httpserver&lt;br /&gt;
|true&lt;br /&gt;
|Whether or not to run the [[HTTPServer|HTTP server]].&lt;br /&gt;
|-&lt;br /&gt;
|httpurl&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|A URL (like a CDN) containing the server&#039;s client resource files and scripts. Clients will download them from that URL instead of the server.&lt;br /&gt;
|-&lt;br /&gt;
|iv_episode&lt;br /&gt;
| -1&lt;br /&gt;
|Sets the DLC to use for IV. See [[Resources/GTAIV/Episodes|IV Episodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_gamemode&lt;br /&gt;
|8&lt;br /&gt;
|Sets the built-in gamemode for IV. See [[Resources/GTAIV/GameModes|IV Gamemodes]] for more information.&lt;br /&gt;
|-&lt;br /&gt;
|iv_nativemultiplayer&lt;br /&gt;
|true&lt;br /&gt;
|If enabled, server uses native sync (from Rockstar/GFWL), otherwise server uses GTAC&#039;s custom sync.&lt;br /&gt;
|-&lt;br /&gt;
|logpath&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The path to store the server logs. Leave blank to not use server logs.&lt;br /&gt;
|-&lt;br /&gt;
|logtimestamp&lt;br /&gt;
|%d/%m/%Y - %X&lt;br /&gt;
|The timestamp format to use in the log files. Based on the [http://cplusplus.com/reference/clibrary/ctime/strftime/ strftime] format from C++. Some examples:&lt;br /&gt;
&amp;lt;code&amp;gt;[%H:%M:%S]&amp;lt;/code&amp;gt; This displays only the time.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;[%d/%m/%Y %H:%M:%S]&amp;lt;/code&amp;gt; This would display the date in dd/mm/yyyy format followed by the time in hour:minute:second format. &lt;br /&gt;
|-&lt;br /&gt;
|maxplayers&lt;br /&gt;
|32&lt;br /&gt;
|The maximum amount of players that can connect to the server, between 0 and 127.&lt;br /&gt;
|-&lt;br /&gt;
|minclientversion&lt;br /&gt;
|1.0.0.0&lt;br /&gt;
|The minimum version that clients can connect with. [https://gtaconnected.com/downloads/client/version See latest client version here].&lt;br /&gt;
|-&lt;br /&gt;
|minuteduration&lt;br /&gt;
|2.0 for IV, otherwise 1.0&lt;br /&gt;
|The amount of seconds for an in-game minute.&lt;br /&gt;
|-&lt;br /&gt;
|modules&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The modules to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;module&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;modules&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each module to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|multithreaded&lt;br /&gt;
|false&lt;br /&gt;
|Enables/disables using multiple threads for managing network peers. Useful on multi-core systems.&lt;br /&gt;
|-&lt;br /&gt;
|password&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the server.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamindistance&lt;br /&gt;
|50.0&lt;br /&gt;
|The distance that a pickup is sent to the client, recommended to be about 50.0.&lt;br /&gt;
|-&lt;br /&gt;
|pickupstreamoutdistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that a pickup is removed from the client, recommended to be about 100.0. &#039;&#039;&#039;Must be higher than pickupstreamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|port&lt;br /&gt;
|22000&lt;br /&gt;
|The port for the server to listen on, between 0 and 65,535. Players only need to know the port if using the /connect command in-game, not when using the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|rcon&lt;br /&gt;
|false&lt;br /&gt;
|&#039;&#039;&#039;[Inoperable]&#039;&#039;&#039; The status of whether the server will host the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconpassword&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|The password to connect to the remote console service.&lt;br /&gt;
|-&lt;br /&gt;
|rconport&lt;br /&gt;
|23000&lt;br /&gt;
|The port to host the remote console service on.&lt;br /&gt;
|-&lt;br /&gt;
|resources&lt;br /&gt;
|(empty node)&lt;br /&gt;
|The [[Resources|resources]] to load. Use the &amp;lt;code&amp;gt;&amp;amp;lt;resource&amp;amp;gt;&amp;lt;/code&amp;gt; tag inside the &amp;lt;code&amp;gt;&amp;amp;lt;resources&amp;amp;gt;&amp;lt;/code&amp;gt; tag, for each resource to load, including the &amp;lt;code&amp;gt;src&amp;lt;/code&amp;gt; attribute for the directory path.&lt;br /&gt;
|-&lt;br /&gt;
|rule&lt;br /&gt;
|&amp;quot;&amp;quot; (empty string)&lt;br /&gt;
|Adds a server rule. See [[ServerRules|server rules]] for more info.&lt;br /&gt;
|-&lt;br /&gt;
|serverbrowser&lt;br /&gt;
|false&lt;br /&gt;
|The status of whether to show the server in the server browser, use true or false.&lt;br /&gt;
|-&lt;br /&gt;
|serverlistingurl&lt;br /&gt;
|serverlisting.gtaconnected.com&lt;br /&gt;
|The URL of the server listing.&lt;br /&gt;
|-&lt;br /&gt;
|servername&lt;br /&gt;
|n/a (&#039;&#039;&#039;required&#039;&#039;&#039;)&lt;br /&gt;
|The name of the server, which appears in the server browser.&lt;br /&gt;
|-&lt;br /&gt;
|serverquery&lt;br /&gt;
|true&lt;br /&gt;
|The enabled status of UDP server queries.&lt;br /&gt;
|-&lt;br /&gt;
|streamindistance&lt;br /&gt;
|100.0&lt;br /&gt;
|The distance that an entity is sent to a client, recommended to be about 100.0 mainly because of game limits.&lt;br /&gt;
|-&lt;br /&gt;
|streamoutdistance&lt;br /&gt;
|200.0&lt;br /&gt;
|The distance that an entity is removed from a client, recommended to be about 200.0. &#039;&#039;&#039;Must be higher than streamindistance&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|syncinterval&lt;br /&gt;
|30&lt;br /&gt;
|The interval, in milliseconds, of each sync occurrence for the regularly sync&#039;d data, between 0 and 65,535.&lt;br /&gt;
|-&lt;br /&gt;
|synclocalentities&lt;br /&gt;
|false&lt;br /&gt;
|Whether to sync local entities.&lt;br /&gt;
|-&lt;br /&gt;
|syncmethod&lt;br /&gt;
|interval&lt;br /&gt;
|The sync type for regularly sync&#039;d data. Use none, interval, or replay. (See sync methods section below.)&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketpriority&lt;br /&gt;
|low&lt;br /&gt;
|The priority of sync packets. This property can be one of the following values: low, medium, high, immediate.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketreliable&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for reliable packets.&lt;br /&gt;
|-&lt;br /&gt;
|syncpacketunsequenced&lt;br /&gt;
|false&lt;br /&gt;
|Flags to bitwise-OR with for unsequenced packets.&lt;br /&gt;
|-&lt;br /&gt;
|timesync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the time set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|weathersync&lt;br /&gt;
|true&lt;br /&gt;
|Enables/disables syncing the weather set by server to all clients.&lt;br /&gt;
|-&lt;br /&gt;
|streaminterval&lt;br /&gt;
|1000&lt;br /&gt;
|The interval, in milliseconds, between checking if elements should be streamed in/out for players, between 500-5000.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== CVars ==&lt;br /&gt;
See the [[CVars|CVars]] page for info.&lt;br /&gt;
&lt;br /&gt;
== Sync Methods ==&lt;br /&gt;
There are a few different config options for server sync. Here is the list of them and a brief description of each.&lt;br /&gt;
{{ServerSyncMethods}}&lt;br /&gt;
&lt;br /&gt;
== Optional Settings ==&lt;br /&gt;
&lt;br /&gt;
Most of the XML server config settings are optional, and have a default value used if not specified.&amp;lt;br&amp;gt;&lt;br /&gt;
The &amp;quot;Default Value&amp;quot; column in the settings list shows &amp;quot;required&amp;quot; if the setting is required.&amp;lt;br&amp;gt;&lt;br /&gt;
To explicitly not specify a server config XML setting, either remove that setting&#039;s XML element, or comment it out with an XML comment.&amp;lt;br&amp;gt;&lt;br /&gt;
Do not leave a setting&#039;s XML element present with a blank value.&lt;br /&gt;
&lt;br /&gt;
== IV Settings ==&lt;br /&gt;
&lt;br /&gt;
Server config settings &amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt;, are all optional to be specified in the server config XML file. Check the list above for default values.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;  are ignored, whether they are specified or not.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;When &amp;lt;code&amp;gt;iv_nativemultiplayer&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;iv_episode&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; are acknowledged and used if specified, or their default values are used if not specified.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode -1&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This means that an internal IV gamemode is not used, and that a sandboxed scripting environment is preferred.&amp;lt;br&amp;gt;&lt;br /&gt;
A script will need to be present to fade the camera in and spawn the player, via scripting functions [[fadeCamera|fadeCamera]] and [[spawnPlayer|spawnPlayer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;iv_gamemode 30&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an outdated value for &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt;, and should not be used. Please use &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; instead.&amp;lt;br&amp;gt;&lt;br /&gt;
Using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;30&amp;lt;/code&amp;gt;, is different than using &amp;lt;code&amp;gt;iv_gamemode&amp;lt;/code&amp;gt; with a value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting value is currently left in for backward compatibility, however may become obsolete in the future.&lt;/div&gt;</summary>
		<author><name>Mex</name></author>
	</entry>
</feed>