https://wiki.multitheftauto.com/api.php?action=feedcontributions&user=CrosRoad95&feedformat=atom
Multi Theft Auto: Wiki - User contributions [en]
2024-03-28T14:06:20Z
User contributions
MediaWiki 1.39.3
https://wiki.multitheftauto.com/index.php?title=DxDrawModel3D&diff=78234
DxDrawModel3D
2023-10-14T06:06:44Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
{{Client function}} <br />
{{Important Note|You can not use this function to draw vehicles and ped}}<br />
{{Important Note|This function doesn't obey any streaming limits, you can draw as many models as you want}}<br />
{{Important Note|You can not render model to render target.}}<br />
This function draws a 3D model - rendered for '''one''' frame. Drawn models are indistinguishable from this one created by [[createObject]] function. This should be used in conjunction with [[onClientRender]] in order to display continuously. <br />
<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
bool dxDrawModel( int modelId, float positionX, float positionY, float positionZ, float rotationX, float rotationY, float rotationZ [, float scaleX, float scaleY, float scaleZ ])<br />
</syntaxhighlight><br />
<br />
[[Image:DxDrawModel3D_at_day.png|thumb|Model during day]]<br />
[[Image:DxDrawModel3D_at_night.png|thumb|Model during night]]<br />
<br />
===Required Arguments=== <br />
* '''modelId:''' Model you want to draw, must be regular object, you can not draw vehicles and peds<br />
* '''positionX/Y/Z:''' Position of model<br />
* '''rotationX/Y/Z:''' Rotation of model<br />
<br />
===Optional Arguments===<br />
* '''scaleX/Y/Z:''' Scale of model, by default {1,1,1}<br />
<br />
===Returns===<br />
Returns true if the operation was successful, false otherwise.<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
==Example== <br />
<section name="Client" class="client" show="true"><br />
Simple example<br />
<syntaxhighlight lang="lua"><br />
addEventHandler("onClientPreRender", root, function()<br />
dxDrawModel3d(3276, -719.64984, 951.26685, 12.13281, 0, 0,90)<br />
end)<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
{{Drawing_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=DxDrawModel3D&diff=78233
DxDrawModel3D
2023-10-14T06:06:06Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} {{Important Note|You can not use this function to draw vehicles and ped}} {{Important Note|This function doesn't obey any streaming limits, you can draw as many models as you want}} {{Important Note|You can not render model to render target.}} This function draws a 3D model - rendered for '''one''' frame. Drawn models are indistinguishable from this one created by "createObject" function. This should be used in conjunction with onClientR..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}} <br />
{{Important Note|You can not use this function to draw vehicles and ped}}<br />
{{Important Note|This function doesn't obey any streaming limits, you can draw as many models as you want}}<br />
{{Important Note|You can not render model to render target.}}<br />
This function draws a 3D model - rendered for '''one''' frame. Drawn models are indistinguishable from this one created by "createObject" function. This should be used in conjunction with [[onClientRender]] in order to display continuously. <br />
<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
bool dxDrawModel( int modelId, float positionX, float positionY, float positionZ, float rotationX, float rotationY, float rotationZ [, float scaleX, float scaleY, float scaleZ ])<br />
</syntaxhighlight><br />
<br />
[[Image:DxDrawModel3D_at_day.png|thumb|Model during day]]<br />
[[Image:DxDrawModel3D_at_night.png|thumb|Model during night]]<br />
<br />
===Required Arguments=== <br />
* '''modelId:''' Model you want to draw, must be regular object, you can not draw vehicles and peds<br />
* '''positionX/Y/Z:''' Position of model<br />
* '''rotationX/Y/Z:''' Rotation of model<br />
<br />
===Optional Arguments===<br />
* '''scaleX/Y/Z:''' Scale of model, by default {1,1,1}<br />
<br />
===Returns===<br />
Returns true if the operation was successful, false otherwise.<br />
<br />
==Example== <br />
<section name="Client" class="client" show="true"><br />
Simple example<br />
<syntaxhighlight lang="lua"><br />
addEventHandler("onClientPreRender", root, function()<br />
dxDrawModel3d(3276, -719.64984, 951.26685, 12.13281, 0, 0,90)<br />
end)<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
{{Drawing_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=File:DxDrawModel3D_at_night.png&diff=78232
File:DxDrawModel3D at night.png
2023-10-14T06:04:36Z
<p>CrosRoad95: </p>
<hr />
<div></div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=File:DxDrawModel3D_at_day.png&diff=78231
File:DxDrawModel3D at day.png
2023-10-14T06:03:47Z
<p>CrosRoad95: </p>
<hr />
<div></div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Template:Useful_Functions&diff=77916
Template:Useful Functions
2023-10-06T16:13:56Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__<br />
=== Table functions ===<br />
*[[addTableChangeHandler]] <span style="color:gray; font-size:smaller;">» This function monitors the changes of a table.</span><br />
*[[getTableFromSql]] <span style="color:gray; font-size:smaller;">» This functionality is used to obtain saved tables using the function ([https://wiki.multitheftauto.com/wiki/SetTableToSql SetTableToSql ]).</span><br />
*[[isValueInTable]] <span style="color:gray; font-size:smaller;">» This function returns true if the value exists in the table, false if the value does not exist in the table.</span><br />
*[[pairsByKeys]] <span style="color:gray; font-size:smaller;">» This function sort pairs table.</span><br />
*[[rangeToTable]] <span style="color:gray; font-size:smaller;">» This function converts a string range to a table containing number values.</span><br />
*[[setTableProtected]] <span style="color:gray; font-size:smaller;">» This function protects a table and makes it read-only.</span><br />
*[[setTableToSql]] <span style="color:gray; font-size:smaller;">» This function is used to save the table in the database (sql).</span><br />
*[[Sort_Functions]] <span style="color:gray; font-size:smaller;">» These functions are able to sort your tables by a key.</span><br />
*[[table.compare]] <span style="color:gray; font-size:smaller;">» This function checks whether two given tables are equal.</span><br />
*[[table.copy]] <span style="color:gray; font-size:smaller;">» This function copies a whole table and all the tables in that table.</span><br />
*[[table.deepmerge]] <span style="color:gray; font-size:smaller;">» This function deep merges two tables. Every nested table will be correspondingly merged.</span><br />
*[[table.element]] <span style="color:gray; font-size:smaller;">» This function returns a new table with only userdata content.</span><br />
*[[table.flip]] <span style="color:gray; font-size:smaller;">» This function flip table values.</span><br />
*[[table.fromString]] <span style="color:gray; font-size:smaller;">» This function converts string to a table.</span><br />
*[[table.getRandomRows]] <span style="color:gray; font-size:smaller;">» This function returns random rows from table.</span><br />
*[[table.map]] <span style="color:gray; font-size:smaller;">» This function goes through a table and replaces every field with the return of the passed function, where the field's value is passed as first argument and optionally more arguments.</span><br />
*[[table.merge]] <span style="color:gray; font-size:smaller;">» This function merges two or more tables together.</span><br />
*[[table.random]] <span style="color:gray; font-size:smaller;">» This function retrieves a random value from a table.</span><br />
*[[table.removeValue]] <span style="color:gray; font-size:smaller;">» This function removes a specified value from a table.</span><br />
*[[table.size]] <span style="color:gray; font-size:smaller;">» This function returns the absolute size of a table.</span><br />
*[[table.toString]] <span style="color:gray; font-size:smaller;">» This function converts table to a string.</span><br />
<br />
=== ACL functions ===<br />
*[[aclGroupClone]] <span style="color:gray; font-size:smaller;">» This function clone a group to another group with/without ACLs and/or objects.</span><br />
*[[getAccountRanks]] <span style="color:gray; font-size:smaller;">» This function is used to detect the account name groups and put them in the chat.</span><br />
*[[getPlayerAcls]] <span style="color:gray; font-size:smaller;">» This function returns a table of all ACL groups on a player.</span><br />
*[[getPlayersInACLGroup]] <span style="color:gray; font-size:smaller;">» This function returns all players in an ACL group.</span><br />
*[[isPlayerInACL]] <span style="color:gray; font-size:smaller;">» This function checks if a player element is in an ACL group.</span><br />
*[[renameAclGroup]] <span style="color:gray; font-size:smaller;">» This function gives an existing ACL group a new name.</span><br />
*[[isPlayerACLAdmin]] <span style="color:gray; font-size:smaller;">» This function checks if a player element belong to Admin group in ACL</span><br />
<br />
=== Account functions ===<br />
*[[getPlayerFromAccountName]] <span style="color:gray; font-size:smaller;">» This function is used to obtain a player by the name of his account.</span><br />
<br />
=== Camera functions ===<br />
*[[smoothMoveCamera]] <span style="color:gray; font-size:smaller;">» This function allows you to create a cinematic camera flight.</span><br />
<br />
=== Colshape functions ===<br />
*[[createGarageColShape]] <span style="color:gray; font-size:smaller;">» This function creates a collision shape from the specified garage.</span><br />
<br />
=== Cursor functions ===<br />
*[[getCursorMovedOn]] <span style="color:gray; font-size:smaller;">» This function checks in which way the cursor is currently moving.</span><br />
*[[setCursorCenteredOnRectangle]] <span style="color:gray; font-size:smaller;">» This functions will center the cursor inside a rectangle.</span><br />
<br />
=== Drawing functions ===<br />
*[[dxDrawAnimWindow]] <span style="color:gray; font-size:smaller;">» This function draws an animated 2D window on the screen.</span><br />
*[[dxDrawBorderedRectangle]] <span style="color:gray; font-size:smaller;">» This is a function that will create a bordered rectangle.</span><br />
*[[dxDrawBorderedText]] <span style="color:gray; font-size:smaller;">» This is a function that will create a bordered text.</span><br />
*[[dxDrawDashedLine]] <span style="color:gray; font-size:smaller;">» This function draws a line with dashes.</span><br />
*[[dxDrawGifImage]] <span style="color:gray; font-size:smaller;">» This function simulates the effect of a GIF image by using image sprites in 2D.</span><br />
*[[dxDrawImage3D]] <span style="color:gray; font-size:smaller;">» This function draws a 3D image in GTA world.</span><br />
*[[dxDrawImageOnElement]] <span style="color:gray; font-size:smaller;">» This function draws an image on any element.</span><br />
*[[dxDrawLinedRectangle]] <span style="color:gray; font-size:smaller;">» This is a function that will create a rectangle outline with dx lines.</span><br />
*[[dxDrawLoading]] <span style="color:gray; font-size:smaller;">» This function draws a loading bar on the screen.</span><br />
*[[dxDrawOctagon3D]] <span style="color:gray; font-size:smaller;">» This function creates a 3D Octagon</span><br />
*[[dxDrawPolygon]] <span style="color:gray; font-size:smaller;">» This function draws a custom polygon on the screen.</span><br />
*[[dxDrawProgressBar]] <span style="color:gray; font-size:smaller;">» This function simulates a progress bar drawed using DirectDraw.</span><br />
*[[dxDrawRectangle3D]] <span style="color:gray; font-size:smaller;">» This function draws a 3D rectangle in GTA world.</span><br />
*[[dxDrawRectangleOnPlayer]] <span style="color:gray; font-size:smaller;">» This function draws a 3D rectangle above the player.</span><br />
*[[dxDrawRing]] <span style="color:gray; font-size:smaller;">» This function draws a ring with dx lines.</span><br />
*[[dxDrawRombo]] <span style="color:gray; font-size:smaller;">» This function creates a Rhombus.</span><br />
*[[dxDrawSprite]] <span style="color:gray; font-size:smaller;">» This function draw a sprite in the 3D world.</span><br />
*[[dxDrawTextOnElement]] <span style="color:gray; font-size:smaller;">» This function draws a text on any element.</span><br />
*[[dxDrawTextOnRectangle]] <span style="color:gray; font-size:smaller;">» Esta funcion crea un rectangle con un texto dentro.</span><br />
*[[dxDrawTriangle]] <span style="color:gray; font-size:smaller;">» This is a function that will create a triangle with dx lines.</span><br />
*[[dxGetFontSizeFromHeight]] <span style="color:gray; font-size:smaller;">» This function calculates the font size from given height.</span><br />
*[[dxGetRealFontHeight]] <span style="color:gray; font-size:smaller;">» This function calculates the height of a font.</span><br />
*[[getScreenStartPositionFromBox]] <span style="color:gray; font-size:smaller;">» This function helps with getting the correct position for your dx-effects.</span><br />
*[[wordWrap]] <span style="color:gray; font-size:smaller;">» This function breaks a long string into a table of separate lines limited to a specific length in pixels, for drawing separately.</span><br />
*[[CreateRectangle3D]] <span style="color:gray; font-size:smaller;">» This is a function that will create a 3d rectangle on the player screen.</span><br />
*[[DxDrawBordered3DLine]] <span style="color:gray; font-size:smaller;">»This function creates a bordered area with 3D dx lines.</span><br />
<br />
=== Effects functions ===<br />
*[[attachEffect]] <span style="color:gray; font-size:smaller;">» This function allows you attach an effect to an element.</span><br />
*[[setScreenFlash]] <span style="color:gray; font-size:smaller;">» This function will make the screen flash(like a screenshot).</span><br />
<br />
=== Element functions === <br />
*[[autoAttach]] <span style="color:gray; font-size:smaller;">» This function attaches one element into another at the same position and rotation they are.</span><br />
*[[attachElementToBone]] <span style="color:gray; font-size:smaller;">» This function allows you to attach an element to ped bone accurately using new bone functions.</span><br />
*[[getElementDirectionCardialPoint]] <span style="color:gray; font-size:smaller;">» This function returns the direction of the element according to the ''wind rose''.</span><br />
*[[getElementSpeed]] <span style="color:gray; font-size:smaller;">» This function returns the specified element's speed in m/s, km/h or mph.</span><br />
*[[getElementUsingData]] <span style="color:gray; font-size:smaller;">» This function returns table elements that contains the elements data with the given key and value.</span><br />
*[[getElementsInDimension]] <span style="color:gray; font-size:smaller;">» This function returns a table of elements that are in the specified dimension.</span><br />
*[[getElementsWithinMarker]] <span style="color:gray; font-size:smaller;">» This function returns a table of elements that are within a marker's collision shape.</span><br />
*[[getNearestElement]] <span style="color:gray; font-size:smaller;">» This function returns the nearest element (of a specific type) to a player.</span><br />
*[[isElementInAir]] <span style="color:gray; font-size:smaller;">» This function checks if an element is in air or not.</span><br />
*[[isElementInPhotograph]] <span style="color:gray; font-size:smaller;">» This function checks if an element is in the player's camera picture area.</span><br />
*[[isElementInRange]] <span style="color:gray; font-size:smaller;">» This function allows you to check if an element's range to a main point is within the maximum range.</span><br />
*[[isElementMoving]] <span style="color:gray; font-size:smaller;">» This function checks if an element is moving.</span><br />
*[[isElementPlayer]] <span style="color:gray; font-size:smaller;">» This function checks whether the element is a player or not.</span><br />
*[[isElementWithinAColShape]] <span style="color:gray; font-size:smaller;">» This function checks if an element is within a collision shape element.</span><br />
*[[multi_check]] <span style="color:gray; font-size:smaller;">» This function checks one element to many, handy and clean.</span><br />
*[[setElementSpeed]] <span style="color:gray; font-size:smaller;">» This function allows you to set the speed of an element in kph or mph units.</span><br />
<br />
=== Events ===<br />
*[[onPlayerZoneChange]] <span style="color:gray; font-size:smaller;">» This code implements an event that is triggered when the player enters a new area on the map.</span><br />
*[[onVehicleWeaponFire]] <span style="color:gray; font-size:smaller;">» This code implements an event that is triggered when a player in a vehicle fires a vehicle's weapon.</span><br />
<br />
=== Input functions ===<br />
*[[bindControlKeys]] <span style="color:gray; font-size:smaller;">» This function allows you to bind each key bound to a control individually. Doing this bypasses a little MTA restriction.</span><br />
*[[getBoundControls]] <span style="color:gray; font-size:smaller;">» This function returns a table of control names that are bound to the specified key.</span><br />
*[[unbindControlKeys]] <span style="color:gray; font-size:smaller;">» This function allows you to unbind each key bound to a control individually. Use this function with [[bindControlKeys]].</span><br />
*[[isCommandHandlerAdded]] <span style="color:gray; font-size:smaller;">» This function allows you to check if a command is added or not in the respective resource.</span><br />
<br />
=== Data functions === <br />
*[[byte2human]] <span style="color:gray; font-size:smaller;">» This function converts an integer (number of bytes) into a human-readable unit.</span><br />
*[[capitalize]] <span style="color:gray; font-size:smaller;">» This function capitalizes a given string.</span><br />
*[[convertDate]] <span style="color:gray; font-size:smaller;">» This function converts date to another look.</span><br />
*[[convertServerTickToTimeStamp]] <span style="color:gray; font-size:smaller;">» This function converts server ticks to a unix timestamp.</span><br />
*[[convertTextToSpeech]] <span style="color:gray; font-size:smaller;">» This function converts the provided text to a speech in the provided language which players can hear.</span><br />
*[[findRotation3D]] <span style="color:gray; font-size:smaller;">» This function takes two sets of XYZ coordinates. It returns the 3D direction from point A to point B.</span><br />
*[[findRotation]] <span style="color:gray; font-size:smaller;">» This function takes two points and returns the direction from point A to point B.</span><br />
*[[formatDate]] <span style="color:gray; font-size:smaller;">» This function formats a date on the basis of a format string and returns it.</span><br />
*[[formatNumber]] <span style="color:gray; font-size:smaller;">» This function formats large numbers by adding commas.</span><br />
*[[generateRandomASCIIString]] <span style="color:gray; font-size:smaller;">» This function returns a random string which uses ASCII characters. </span><br />
*[[generateString]] <span style="color:gray; font-size:smaller;">» This function generates a random string with any characters.</span><br />
*[[getAge]] <span style="color:gray; font-size:smaller;">» This function calculates the age of a given birthday.</span><br />
*[[getDistanceBetweenElements]] <span style="color:gray; font-size:smaller;">» Returns the distance between two elements.</span><br />
*[[getDistanceBetweenPointAndSegment2D]] <span style="color:gray; font-size:smaller;">» This function takes point coordinates and line (a segment) starting and ending coordinates. It returns the shortest distance between the point and the line.</span><br />
*[[getEasterDate]] <span style="color:gray; font-size:smaller;">» This function returns easter date monthday and month for a given year.</span><br />
*[[getElementRelatedAngle]] <span style="color:gray; font-size:smaller;">» This function returns the related angle between one element to another. This is useful to check which side an element is to another.</span><br />
*[[getFreeDimension]] <span style="color:gray; font-size:smaller;">» This function get free dimension.</span><br />
*[[getKeyFromValueInTable]] <span style="color:gray; font-size:smaller;">» This function returns the key of the specified value in a table.</span><br />
*[[getOffsetFromXYZ]] <span style="color:gray; font-size:smaller;">» This function allows you to take an entity and a position and calculate the relative offset between them accounting for rotations.</span><br />
*[[getPointFromDistanceRotation]] <span style="color:gray; font-size:smaller;">» This function finds a point based on a starting point, direction and distance.</span><br />
*[[getRealMonth]] <span style="color:gray; font-size:smaller;">» This function returns the current month name</span><br />
*[[getRGColorFromPercentage]] <span style="color:gray; font-family:'Georgia', sans-serif; font-size:smaller;">»This function returns two integers representing red and green colors according to the specified percentage.</span><br />
*[[getScreenRotationFromWorldPosition]] <span style="color:gray; font-size:smaller;">» This function returns a screen relative rotation to a world position.</span><br />
*[[getTimestamp]] <span style="color:gray; font-size:smaller;">» This function returns the UNIX timestamp of a specified date and time.</span><br />
*[[gradientString]] <span style="color:gray; font-size:smaller;">» This function transforms a string in a new coloured gradient string.</span><br />
*[[hex2rgb]] <span style="color:gray; font-size:smaller;">» This function convert hex to rgb.</span><br />
*[[hexColorToRGB]] <span style="color:gray; font-size:smaller;">» This function convert hex string/number to RGBA values.</span><br />
*[[isLeapYear]] <span style="color:gray; font-size:smaller;">» This function returns a boolean representing if a given year is a leap year.</span><br />
*[[isValidMail]] <span style="color:gray; font-size:smaller;">» This function checks whether a provided e-mail string is valid.</span><br />
*[[removeHex]] <span style="color:gray; font-size:smaller;">» This function is used to remove hexadecimal numbers (colors, for example) from strings.<br />
*[[RGBToHex]] <span style="color:gray; font-size:smaller;">» This function returns a string representing the color in hexadecimal.</span><br />
*[[RGBToHSV]] <span style="color:gray; font-size:smaller;">» This function convert RGB to HSV color space.</span><br />
*[[RGBToDecimal]] <span style="color:gray; font-size:smaller;">» This function convert RGB to Decimal color.</span><br />
*[[secondsToTimeDesc]] <span style="color:gray; font-size:smaller;">» This function converts a plain seconds-integer into a user-friendly time description.</span><br />
*[[string.count]] <span style="color:gray; font-size:smaller;">» This function counts the amount of occurences of a string in a string.</span><br />
*[[string.explode]] <span style="color:gray; font-size:smaller;">» This function splits a string at a given separator pattern and returns a table with the pieces.</span><br />
*[[string.insert]] <span style="color:gray; font-size:smaller;">» This function inserts a string within another string at a given position.</span><br />
*[[switch]] <span style="color:gray; font-size:smaller;">» This function allows the value of a variable or expression to control the flow of program execution via a multiway branch.</span><br />
*[[tocolor2rgba]] <span style="color:gray; font-size:smaller;">» This function convert tocolor to rgba.</span><br />
*[[toHex]] <span style="color:gray; font-size:smaller;">» This function converts a decimal number to a hexadecimal number, as a fix to be used client-side.</span><br />
*[[var dump]] <span style="color:gray; font-size:smaller;">» This function outputs information about one or more variables using outputConsole.</span><br />
*[[wavelengthToRGBA]] <span style="color:gray; font-size:smaller;">» This function converts a physical wavelength of light to a RGBA color.</span><br />
<br />
=== GUI functions === <br />
*[[centerWindow]] <span style="color:gray; font-size:smaller;">» This function centers a CEGUI window element responsively in any resolution.</span><br />
*[[guiMoveElement]] <span style="color:gray; font-size:smaller;">» This function moves guiElement by/like using moveObject.</span><br />
*[[guiSetStaticImageMovable]] <span style="color:gray; font-size:smaller;">» This function allows you to move a static image like a gui window.</span><br />
*[[isMouseOnGUICloseButton]] <span style="color:gray; font-size:smaller;">» This function allows you to check whether the mouse cursor/pointer is within a gui-window's native close button.</span><br />
*[[isMouseOnGuiElement]] <span style="color:gray; font-size:smaller;">» This function allows you to check whether or not your mouse is over a specific gui element, this is especially useful if the gui element has a parent. </span><br />
=====Comboboxes=====<br />
*[[guiComboBoxAdjustHeight]] <span style="color:gray; font-size:smaller;">» This function adjusts a CEGUI combobox element to have the correct height.</span><br />
<br />
=====Gridlists=====<br />
*[[convertGridListToText]] <span style="color:gray; font-size:smaller;">» This function converts grid list contents to text.</span><br />
*[[getGridListRowIndexFromText]] <span style="color:gray; font-size:smaller;">» This function returns the GridList row index from the specified text.</span><br />
*[[guiGridListAddPlayers]] <span style="color:gray; font-size:smaller;">» This function add all online players to a grid list.</span><br />
*[[guiGridListGetColumnIDFromTitle]] <span style="color:gray; font-size:smaller;">» This function gets a gridlist's column ID from the column title.</span><br />
*[[guiGridListGetSelectedText]] <span style="color:gray; font-size:smaller;">» This function returns a string containing the inner text of a selected gridlist item.</span><br />
*[[guiGridListSetColumnNonSortable]] <span style="color:gray; font-size:smaller;">» This function makes a gridlist column become non-sortable.</span><br />
*[[isTextInGridList]] <span style="color:gray; font-size:smaller;">» This function checks if some text exist or not in the GridList.</span><br />
<br />
=====Labels=====<br />
*[[guiLabelAddEffect]] <span style="color:gray; font-size:smaller;">» This function add an effects to the gui-label like (shadow, outline).</span><br />
<br />
=== Marker functions ===<br />
*[[createMarkerAttachedTo]] <span style="color:gray; font-size:smaller;">» This function creates a marker that is attached to an element.</span><br />
<br />
=== Math functions ===<br />
*[[math.clamp]] <span style="color:gray; font-size:smaller;">» This function returns the number between range of numbers or it's minimum or maximum.</span><br />
*[[math.getBezierPoint]] <span style="color:gray; font-size:smaller;">» Get N-th order bezier point.</span><br />
*[[math.hypot]] <span style="color:gray; font-size:smaller;">» This function returns the Hypotenuse of the triangle given by sides x and y.</span><br />
*[[math.isPointInPolygon]] <span style="color:gray; font-size:smaller;">» Check if point is inside polygon or not.</span><br />
*[[math.lerp]] <span style="color:gray; font-size:smaller;">» Get val between two integer.</span><br />
*[[math.percent]] <span style="color:gray; font-size:smaller;">» This function returns a percentage from two number values.</span><br />
*[[math.polygonArea]] <span style="color:gray; font-size:smaller;">» Compute area of any polygon.</span><br />
*[[math.randomDiff]] <span style="color:gray; font-size:smaller;">» Generates a pseudo-random integer that's always different from the last random number generated.</span><br />
*[[math.rotVecToEulerAngle]] <span style="color:gray; font-size:smaller;">» Rotation Vector To Euler Angle</span><br />
*[[math.round]] <span style="color:gray; font-size:smaller;">» Rounds a number whereas the number of decimals to keep and the method may be set.</span><br />
*[[mathNumber]] <span style="color:gray; font-size:smaller;">» This function is a workaround for the client-side floating-point precision of 24-bits.</span><br />
*[[reMap]] <span style="color:gray; font-size:smaller;">» Re-maps a number from one range to another.</span><br />
*[[Math.percentProgress|math.percentProgress]] <span style="color:gray; font-size:smaller;">» Returns a percentage progress from two specific values.</span><br />
*[[math.average]] <span style="color:gray; font-size:smaller;">» This function returns the simple arithmetic mean of multiple numbers.</span><br />
<br />
=== Map functions ===<br />
*[[assignLod]] <span style="color:gray; font-size:smaller;">» This function lets you conveniently generate and apply a LOD model to a mapping object.</span><br />
*[[getWorldPositionFromMapPosition]] <span style="color:gray; font-size:smaller;">» This function converts an F11 map position to world position.</span><br />
<br />
=== Ped functions ===<br />
*[[getAlivePlayers (Client)|getAlivePlayers]] <span style="color:gray; font-size:smaller;">» This function returns a table of the alive players client-side.</span><br />
*[[getAlivePlayersInTeam]] <span style="color:gray; font-size:smaller;">» This function returns a table of the alive players in a team.</span><br />
*[[getGuestPlayers]] <span style="color:gray; font-size:smaller;">» This function gets a players not login or players Guest .</span><br />
*[[getOnlineAdmins]] <span style="color:gray; font-size:smaller;">» This function returns a table of all logged-in administrators.</span><br />
*[[getPedEyesPosition]] <span style="color:gray; font-size:smaller;">» This function allows you to get peds eyes position.</span><br />
*[[getPedGender]] <span style="color:gray; font-size:smaller;">» This function allows you to get peds their gender.</span><br />
*[[getPedMaxHealth]] <span style="color:gray; font-size:smaller;">» This function returns a pedestrians's maximum health by converting it from their maximum health stat.</span><br />
*[[getPedMaxOxygenLevel]] <span style="color:gray; font-size:smaller;">» This function returns a ped's maximum oxygen level by converting it from their maximum underwater stamina stat.</span><br />
*[[getPedWeaponSkill]] <span style="color:gray; font-size:smaller;">» This function returns a ped's corresponding weapon skill level name.</span><br />
*[[getPedHitBone]] <span style="color:gray; font-size:smaller;">» This function gets the approximate number of the bone where the ped is hit.</span><br />
*[[getPlayerFromNamePart]] <span style="color:gray; font-size:smaller;">» This function returns a player from partial name.</span><br />
*[[getPlayerFromSerial]] <span style="color:gray; font-size:smaller;">» This function returns a player from their serial.</span><br />
*[[getPlayersByData]] <span style="color:gray; font-size:smaller;">» This function returns a table of players that have the specified data name.</span><br />
*[[getPlayersInPhotograph]] <span style="color:gray; font-size:smaller;">» This function returns a table of all players in photograph.</span><br />
*[[getPlayersInVehicles]] <span style="color:gray; font-size:smaller;">» This function returns a table of the players insides vehicles from a specified dimension.</span><br />
*[[isPedAiming]]<span style="color:gray; font-size:smaller;">» This function checks if a pedestrian is aiming their weapon.</span><br />
*[[isPedAimingNearPed]] <span style="color:gray; font-size:smaller;">» This is similar to isPedAiming but uses a colshape to be more precise.</span><br />
*[[isPedDiving]] <span style="color:gray; font-size:smaller;">» This feature checks that pedestrian is diving in the water.</span><br />
*[[isPedDrivingVehicle]] <span style="color:gray; font-size:smaller;">» This function checks if a specified pedestrian is driving a vehicle.</span><br />
*[[isPlayerInTeam]] <span style="color:gray; font-size:smaller;">» This function checks if a player is in a specified team.</span><br />
*[[setPedAttack]] <span style="color:gray; font-size:smaller;">» This function will make a ped attack a specified target.</span><br />
*[[setPedFollow]] <span style="color:gray; font-size:smaller;">» This function will make a ped follow a specified target.</span><br />
*[[getPlayerNameFromID]] <span style="color:gray; font-size:smaller;">» This function will get the player name from the ID element data.</span><br />
<br />
=== Player functions ===<br />
*[[countPlayersInRange]] <span style="color:gray; font-size:smaller;">» This function returns the number of players that are within a certain range of the specified coordinates.</span><br />
*[[getPlayerPreviousAndNextWeapon]] <span style="color:gray; font-size:smaller;">» This function returns the player previous and next weapon.</span><br />
*[[getPlayersInRange]] <span style="color:gray; font-size:smaller;">» This function make a table of players within certain range.</span><br />
*[[isPlayerActuallyInVehicle]] <span style="color:gray; font-size:smaller;">» This function checks if a player is actually in a vehicle instead of just in the process of entering.</span><br />
*[[isPlayerHitByVehicle]] <span style="color:gray; font-size:smaller;">» This function cancels event when a element is hit by a vehicle.</span><br />
<br />
=== Resource functions ===<br />
*[[getFilesInResourceFolder]] <span style="color:gray; font-size:smaller;">» This function gets a list of files that are inside a folder of a resource.</span><br />
*[[getResourceScripts]] <span style="color:gray; font-size:smaller;">» This function returns a table of the resource scripts.</span><br />
*[[getResourceSettings]] <span style="color:gray; font-size:smaller;">» This function returns a table of the resource settings.</span><br />
*[[getResourceSize]] <span style="color:gray; font-size:smaller;">» This function returns the size of a specified resource in kB(kilobyte)</span><br />
*[[refreshResource]] <span style="color:gray; font-size:smaller;">» This function refreshes your resource if you changed any of the files<br />
*[[setResourcePriority]] <span style="color:gray; font-size:smaller;">» This function set resource download priority group.</span><br />
<br />
=== Sound functions ===<br />
*[[isSoundFinished]] <span style="color:gray; font-size:smaller;">» This function checks if a sound element has finished.</span><br />
*[[isSoundPlaying]] <span style="color:gray; font-size:smaller;">» This function checks if a sound element is playing or not.</span><br />
*[[stopSoundSlowly]] <span style="color:gray; font-size:smaller;">» This function stop your sound element slowly.</span><br />
<br />
=== Browser functions ===<br />
*[[playVideo]] <span style="color:gray; font-size:smaller;">» This function plays a video on the screen.</span><br />
<br />
=== Team functions ===<br />
*[[getTeamFromColor]] <span style="color:gray; font-size:smaller;">» This function returns a team element by the specified color.</span><br />
*[[getTeamWithFewestPlayers]] <span style="color:gray; font-size:smaller;">» This function returns a team element with least players of all the specified teams.</span><br />
<br />
=== Vehicle functions ===<br />
*[[findEmptyCarSeat]] <span style="color:gray; font-size:smaller;">» This function finds you the first empty seat in a vehicle.</span><br />
*[[getNearestVehicle]] <span style="color:gray; font-size:smaller;">» This function gets the nearest vehicle to the specified player in a specified distance.</span><br />
*[[getRandomVehicle]] <span style="color:gray; font-size:smaller;">» This function gets a random vehicle.</span><br />
*[[getValidVehicleModels]] <span style="color:gray; font-size:smaller;">» This function returns a table of all valid vehicle models.</span><br />
*[[getVehiclesCountByType]] <span style="color:gray; font-size:smaller;">» This function returns the amount of vehicles by the given type as an integer value.</span><br />
*[[getVehicleTurnVelocityCenterOfMass]]<span style="color:gray; font-size:smaller;">» This function gets a vehicle's turn velocity relative to the vehicle's center or mass.</span><br />
*[[isVehicleDoubleExhaust]] <span style="color:gray; font-size:smaller;">» This function checks is exhaust vehicle double.</span><br />
*[[isVehicleEmpty]] <span style="color:gray; font-size:smaller;">» This function checks whether a vehicle is empty.</span><br />
*[[isVehicleOccupied]] <span style="color:gray; font-size:smaller;">» This function checks if a specified vehicle is occupied.</span><br />
*[[isVehicleOnRoof]] <span style="color:gray; font-size:smaller;">» This function checks whether vehicle is on roof.</span><br />
*[[isVehicleOnFire]] <span style="color:gray; font-size:smaller;">» This function checks if the vehicle is on fire or not.</span><br />
*[[isVehicleReversing]] <span style="color:gray; font-size:smaller;">» This function checks if a specified vehicle is moving backwards.</span><br />
*[[isVehicleUpgraded]] <span style="color:gray; font-size:smaller;">» This function checks is vehicle upgraded by upgrade ID.</span><br />
*[[setVehicleGravityPoint]] <span style="color:gray; font-size:smaller;">» This function sets a vehicle's gravity in the direction of a 3 dimensional coordinate with the strength specified.</span><br />
*[[setVehicleTurnVelocityCenterOfMass]] <span style="color:gray; font-size:smaller;">» This function sets a vehicle's turn velocity relative to the vehicle's center or mass.</span><br />
*[[setVehicleHandlingFromText]] <span style="color:gray; font-size:smaller;">» This function sets a vehicle's handling from text.</span><br />
*[[setVehicleWheelModel]] <span style="color:gray; font-size:smaller;">» This function changes the wheel model of the informed vehicle.</span><br />
<br />
=== Weapon functions === <br />
*[[getJetpackWeaponsEnabled]] <span style="color:gray; font-size:smaller;">» This function returns a table of enabled weapons usable on a jetpack.</span><br />
<br />
=== Object functions ===<br />
*[[getDynamicDoorObjectOpenRatio]] <span style="color:gray; font-size:smaller;">» This function tells you how open a dynamic door is in a range from 0 to 1.</span><br />
*[[isElementObject]] <span style="color:gray; font-size:smaller;">» This function tells you if an element is an object or no.</span><br />
<br />
=== XML functions ===<br />
*[[getXMLNodes]] <span style="color:gray; font-size:smaller;">» This function returns all children of a XML node.</span><br />
<br />
=== Engine functions ===<br />
*[[engineGetCOLsFromLibrary]] <span style="color:gray; font-size:smaller;">» This function gets the collision data from the col library.</span><br />
*[[engineLoadIMGContainer]] <span style="color:gray; font-size:smaller;">» This function loads the IMG container.</span><br />
<br />
=== Utility ===<br />
*[[animate]] <span style="color:gray; font-size:smaller;">» This function allows you to use interpolateBetween without render event and easily used.</span><br />
*[[callClientFunction]] <span style="color:gray; font-size:smaller;">» This function allows you to call any client-side function from the server's side.</span><br />
*[[callServerFunction]] <span style="color:gray; font-size:smaller;">» This function allows you to call any server-side function from the client's side.</span><br />
*[[check]] <span style="color:gray; font-size:smaller;">» This function checks if its arguments are of the right type and calls the error-function if one is not.</span><br />
*[[checkPassiveTimer]] <span style="color:gray; font-size:smaller;">» This function allows you to use passive timers in your conditions. For example you want to prevent players repeatedly using a command.</span><br />
*[[coroutine.resume]] <span style="color:gray; font-size:smaller;">» This function applies a fix for hidden coroutine error messages.</span><br />
*[[compact]] <span style="color:gray; font-size:smaller;">» This function create table containing variables and their values.</span><br />
*[[getBanFromName]] <span style="color:gray; font-size:smaller;">» This functions returns the ban of the given playername.</span><br />
*[[getCurrentFPS]] <span style="color:gray; font-size:smaller;">» This function returns the frames per second at which GTA: SA is running.</span><br />
*[[getSkinNameFromID]] <span style="color:gray; font-size:smaller;">» This function returns the name of the skin from the given id.</span><br />
*[[IfElse]] <span style="color:gray; font-size:smaller;">» This function returns one of two values based on a boolean expression.</span><br />
*[[isCharInString]] <span style="color:gray; font-size:smaller;">» This shared function allows you to check if a char specified is in a string value.</span><br />
*[[isLastExecuteInTimer]] <span style="color:gray; font-size:smaller;">» This function check if the execute is the last execute in the timer.</span><br />
*[[isMouseInCircle]] <span style="color:gray; font-size:smaller;">» This function checks if a cursor position is in circular area or not.</span><br />
*[[isMouseInPosition]] <span style="color:gray; font-size:smaller;">» This function allows you to check whether the mouse cursor/pointer is within a rectangular position.</span><br />
*[[iterElements]] <span style="color:gray; font-size:smaller;">» This function returns ''a time-saving'' iterator for your for-loops.</span><br />
*[[PlotTrajectoryAtTime]] <span style="color:gray; font-size:smaller;">» Calculate projectile/water trajectory.</span><br />
*[[preprocessor]] <span style="color:gray; font-size:smaller;">» This function allow you to use gcc macros.</span><br />
*[[vector3:compare]] <span style="color:gray; font-size:smaller;">» This method checks whether two vectors match, with optional precision.</span><br />
*[[svgCreateRoundedRectangle]] <span style="color:gray; font-size:smaller;">» This function creates a rectangle with rounded edges.</span><br />
*[[debounce]] <span style="color:gray; font-size:smaller;">» This function is removing unwanted input noise.</span><br />
<br />
<noinclude>[[Category:Useful Functions]]</noinclude></div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Debounce&diff=77915
Debounce
2023-10-06T16:09:34Z
<p>CrosRoad95: Created page with "{{Useful Function}} <lowercasetitle></lowercasetitle> __NOTOC__ This function is removing unwanted input noise from buttons, switches or other user input. see: https://www.techtarget.com/whatis/definition/debouncing ==Syntax== <syntaxhighlight lang="lua"> void debounce( number timeout, function callback, ...arguments) </syntaxhighlight> ==Code== <section name="Shared" class="both" show="true"> <syntaxhighlight lang="lua"> local debounces = {} function debounce(timeou..."</p>
<hr />
<div>{{Useful Function}}<br />
<lowercasetitle></lowercasetitle><br />
__NOTOC__<br />
This function is removing unwanted input noise from buttons, switches or other user input.<br />
see: https://www.techtarget.com/whatis/definition/debouncing<br />
<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
void debounce( number timeout, function callback, ...arguments)<br />
</syntaxhighlight><br />
<br />
==Code==<br />
<section name="Shared" class="both" show="true"><br />
<syntaxhighlight lang="lua"><br />
local debounces = {}<br />
<br />
function debounce(timeout, callback, ...)<br />
local id = tostring(callback)<br />
<br />
if(isTimer(debounces[id]))then<br />
killTimer(debounces[id])<br />
debounces[id] = nil;<br />
end<br />
debounces[id] = setTimer(function(...)<br />
callback(...) <br />
debounces[id] = nil;<br />
end, timeout, 1, ...)<br />
end<br />
</syntaxhighlight><br />
</section><br />
<br />
'''Author:''' CrosRoad95<br />
<br />
==Example==<br />
<section name="Shared" class="both" show="true"><br />
<p style="color:black;">This example will ignore first 9 calls and only last one get called within 500ms timeout</p><br />
<syntaxhighlight lang="lua"><br />
function callback(i)<br />
print(i)<br />
end<br />
<br />
for i=1,10 do<br />
debounce(500, callback, i);<br />
end<br />
<br />
-- Result in console: 10<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
<br />
{{Useful_Functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=EngineRequestModel&diff=77585
EngineRequestModel
2023-09-03T10:13:16Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__<br />
{{Client function}}<br />
{{New feature/item|3.0158|1.5.7|20147|This function is used to assign the next available model ID to a certain element type.}}<br />
{{note|Before release '''1.5.8 r20716''' this must be "ped". After release '''1.5.8 r20716''' this function supports "vehicle" and "object" too.}}<br />
{{note|Vehicle unique features may be unsupported, see [https://github.com/multitheftauto/mtasa-blue/issues/1861 issue 1861] for examples and details}}<br />
{{Important Note|Unlike some other functions, the side-effects of this function aren't reverted on resource stop, so you must manually call [[engineFreeModel]] in [[onClientResourceStop]] (Just like the example below does)}}<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
int engineRequestModel ( string elementType [, int parentID ] )<br />
</syntaxhighlight><br />
===Required Arguments===<br />
*'''elementType''': "ped", "object", "vehicle", "timed-object", "clump"<br />
<br />
===Optional Arguments=== <br />
*'''parentID''': The ID of the parent model (by default this is: 1337 - objects, 400 - vehicles, 7 - peds, 3425 - clump models, 4715 - timed objects).<br />
<br />
===Returns===<br />
{{New feature/item|3.0158|1.5.7|20147| Returns an ''integer'' of the model ID that was available to be assigned to the element type, ''false'' if no free model ID available or invalid element type.}}<br />
Do not rely on the model numbers returned being consistent across multiple clients or multiple runs of resources. There is no guarantee for the order of the numbers or that the same numbers will always correspond to the same element type. Any patterns are coincidental.<br />
<br />
==Example==<br />
This example creates a ped and then gives you the opportunity to change its model. If the resource stops, then the IDs allocated will be deallocated. Use ''/cap'' for creating the ped and ''/sap'' to skin the ped. You will need some skins added to a folder and to the meta.xml for ''/sap'' to work:<br />
<syntaxhighlight lang="lua"><br />
local peds = {}<br />
function createAllocatedPed()<br />
local x, y, z = getElementPosition(localPlayer)<br />
local id = engineRequestModel("ped")<br />
peds[id] = createPed(id, x+0.5, y, z+0.5)<br />
outputChatBox("New ped with ID "..id.." created.")<br />
end<br />
addCommandHandler("cap", createAllocatedPed, false, false)<br />
<br />
function skinAllocatedPeds()<br />
local txd, dff;<br />
for id,ped in pairs(peds) do<br />
if fileExists("skins/" .. id .. ".txd") and fileExists("skins/" .. id .. ".dff") then<br />
txd = engineLoadTXD("skins/" .. id .. ".txd")<br />
engineImportTXD(txd, id)<br />
dff = engineLoadDFF("skins/" .. id .. ".dff")<br />
engineReplaceModel(dff, id)<br />
outputChatBox("Model ID "..id.." changed correctly.")<br />
else<br />
outputChatBox("Model ID "..id.." couldn't change. REASON: skins/" .. id .. ".txd or skins/" .. id .. ".dff does not exist.")<br />
end<br />
end<br />
end<br />
addCommandHandler("sap", skinAllocatedPeds, false, false)<br />
<br />
function onStop()<br />
for id,ped in pairs(peds) do<br />
engineFreeModel(id)<br />
end<br />
end<br />
addEventHandler("onClientResourceStop", resourceRoot, onStop)<br />
</syntaxhighlight><br />
<br />
==Requirements==<br />
{{Requirements|n/a|1.5.7-9.20147|}}<br />
<br />
==See Also==<br />
{{Engine functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=DxCreateRenderTarget&diff=77437
DxCreateRenderTarget
2023-08-10T16:34:17Z
<p>CrosRoad95: </p>
<hr />
<div>{{Client function}}<br />
__NOTOC__<br />
This function creates a render target element, which is a special type of [[texture]] that can be drawn on with the dx functions. Successful render target creation is not guaranteed, and may fail due to hardware or memory limitations.<br />
<br />
To see if creation is likely to fail, use [[dxGetStatus]]. (When '''VideoMemoryFreeForMTA''' is zero, failure ''is'' guaranteed.)<br />
{{Tip|Use [[dxSetBlendMode]] to get better quality}}<br />
{{Tip|It is highly recommended that [[dxSetTestMode]] is used when writing and testing scripts using dxCreateRenderTarget.}}<br />
{{Note|Render targets are usually cleared when the player minimizes MTA (i.e. alt-tab). See [[onClientRestore]] for details on when to restore any fixed content.}}<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
element dxCreateRenderTarget ( int width, int height [, bool withAlpha = false ] )<br />
</syntaxhighlight> <br />
{{Added feature/item|1.6.1|1.6.0|21938|<br />
<syntaxhighlight lang="lua"><br />
element dxCreateRenderTarget ( int width, int height, surface-format surfaceFormat )<br />
</syntaxhighlight> <br />
}}<br />
{{OOP||[[Texture|DxRenderTarget]]}}<br />
===Required Arguments=== <br />
*'''width :''' The width of the texture in pixels.<br />
*'''height :''' The height of the texture in pixels.<br />
*'''withAlpha:''' The render target will be created with an alpha channel. 'false' will turn images' alpha channels to black color<br />
{{Added feature/item|1.6.1|1.6.0|21938|<br />
*'''surfaceFormat :''' See [[Surface format|Surface formats]]<br />
}}<br />
<br />
===Returns===<br />
Returns a [[texture]] element if successful, ''false'' if the system is unable to create a render target.<br />
<br />
'''You should always check to see if this function has returned false.'''<br />
<br />
==Explanation==<br />
What is a render target?<br />
<br />
A render target is like a blank canvas. You can draw on the render target as many times as you like - and even clear it.<br />
<br />
If your dxDraw* calls are static (meaning the appearance doesn't change), or only update periodically, then a render target can be useful not only for cleaner code - but for performance reasons too. Instead of making possibly hundreds of dxDraw* calls every frame, you can simply make those calls on a single frame and draw directly to the render target, then use a '''single''' dxDrawImage call every frame afterwards to display the render target.<br />
<br />
Render targets can also be used to create and display the same thing multiple times, as shown in the example below.<br />
<br />
<br />
==Example==<br />
<syntaxhighlight lang="lua"><br />
local myRenderTarget<br />
<br />
addEventHandler("onClientResourceStart", resourceRoot,<br />
function()<br />
myRenderTarget = dxCreateRenderTarget(250, 100, true) -- Create a render target<br />
<br />
if (myRenderTarget) then <br />
updateRenderTarget() -- Our function to draw to the render target (see below)<br />
end<br />
end<br />
)<br />
<br />
addEventHandler( "onClientRender", root,<br />
function()<br />
if myRenderTarget then<br />
-- Draw the render target lots of times in different positions on the screen<br />
dxDrawImage(350, 50, 250, 100, myRenderTarget)<br />
dxDrawImage(450, 380, 250, 100, myRenderTarget)<br />
dxDrawImage(550, 250, 250, 100, myRenderTarget)<br />
dxDrawImage(650, 70, 250, 100, myRenderTarget)<br />
end<br />
end<br />
)<br />
<br />
function updateRenderTarget()<br />
dxSetRenderTarget(myRenderTarget, true)<br />
dxSetBlendMode("modulate_add") -- Set 'modulate_add' when drawing stuff on the render target<br />
<br />
dxDrawText("Hello " .. getTickCount(), 10, 10, 0, 0, tocolor(255, 255, 255, 255), 2, "clear") -- Draw a message<br />
dxDrawRectangle(10, 50, 40, 40, tocolor(math.random(255), math.random(255), math.random(255))) -- Draw a square with random color<br />
<br />
-- ... etc, imagine you have a lot of dxDraw* calls to make, this is where render targets come in handy!<br />
<br />
dxSetBlendMode("blend") -- Restore default blending<br />
dxSetRenderTarget() -- Restore default render target<br />
end<br />
<br />
-- We can even update the render target on the fly, by binding it to a key<br />
bindKey("r", "down", updateRenderTarget)<br />
<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
{{Drawing_functions}}<br />
<br />
[[hu:dxCreateRenderTarget]]</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Surface_format&diff=77436
Surface format
2023-08-10T16:33:09Z
<p>CrosRoad95: Add surface format page</p>
<hr />
<div>Based on: https://learn.microsoft.com/en-us/windows/win32/direct3d9/d3dformat<br />
{| class="wikitable"<br />
!Name<br />
!Description<br />
|-<br />
|r8g8b8<br />
| 32-bit ARGB pixel format with alpha, using 8 bits per channel.<br />
|-<br />
|a8r8g8b8<br />
| 32-bit ARGB pixel format with alpha, using 8 bits per channel.<br />
|-<br />
|x8r8g8b8<br />
|32-bit RGB pixel format, where 8 bits are reserved for each color.<br />
|-<br />
|r5g6b5<br />
|16-bit RGB pixel format with 5 bits for red, 6 bits for green, and 5 bits for blue.<br />
|-<br />
|x1r5g5b5<br />
|16-bit pixel format where 5 bits are reserved for each color.<br />
|-<br />
|a1r5g5b5<br />
|16-bit pixel format where 5 bits are reserved for each color and 1 bit is reserved for alpha.<br />
|-<br />
|a4r4g4b4<br />
|16-bit ARGB pixel format with 4 bits for each channel.<br />
|-<br />
|r3g3b2<br />
|8-bit RGB texture format using 3 bits for red, 3 bits for green, and 2 bits for blue.<br />
|-<br />
|a8<br />
|8-bit alpha only.<br />
|-<br />
|a8r3g3b2<br />
|16-bit ARGB texture format using 8 bits for alpha, 3 bits each for red and green, and 2 bits for blue.<br />
|-<br />
|x4r4g4b4<br />
|16-bit RGB pixel format using 4 bits for each color.<br />
|-<br />
|a2b10g10r10<br />
|32-bit pixel format using 10 bits for each color and 2 bits for alpha.<br />
|-<br />
|a8b8g8r8<br />
|32-bit ARGB pixel format with alpha, using 8 bits per channel.<br />
|-<br />
|x8b8g8r8<br />
|32-bit RGB pixel format, where 8 bits are reserved for each color.<br />
|-<br />
|g16r16<br />
|32-bit pixel format using 16 bits each for green and red.<br />
|-<br />
|a2r10g10b10<br />
|32-bit pixel format using 10 bits each for red, green, and blue, and 2 bits for alpha.<br />
|-<br />
|a16b16g16r16<br />
|64-bit pixel format using 16 bits for each component.<br />
|-<br />
|a8p8<br />
|8-bit color indexed with 8 bits of alpha.<br />
|-<br />
|p8<br />
|8-bit color indexed.<br />
|-<br />
|l8<br />
|8-bit luminance only.<br />
|-<br />
|l16<br />
|16-bit luminance only.<br />
|-<br />
|a8l8<br />
|16-bit using 8 bits each for alpha and luminance.<br />
|-<br />
|r8g8b8<br />
|24-bit RGB pixel format with 8 bits per channel.<br />
|-<br />
|a4l4<br />
|8-bit using 4 bits each for alpha and luminance.<br />
|-<br />
|r16f<br />
|16-bit float format using 16 bits for the red channel.<br />
|-<br />
|g16r16f<br />
|32-bit float format using 16 bits for the red channel and 16 bits for the green channel.<br />
|-<br />
|a16b16g16r16f<br />
|64-bit float format using 16 bits for the each channel (alpha, blue, green, red).<br />
|-<br />
|r32f<br />
|32-bit float format using 32 bits for the red channel.<br />
|-<br />
|g32r32f<br />
|64-bit float format using 32 bits for the red channel and 32 bits for the green channel.<br />
|-<br />
|a32b32g32r32f<br />
|128-bit float format using 32 bits for the each channel (alpha, blue, green, red).<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=ReloadBrowserPage&diff=77422
ReloadBrowserPage
2023-08-09T14:27:29Z
<p>CrosRoad95: add missing "ignoreCache" argument</p>
<hr />
<div>__NOTOC__<br />
{{Client function}}<br />
{{New feature/item|3.0153|1.5.3|9912|<br />
This function reloads the current browser's page.<br />
}}<br />
<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
bool reloadBrowserPage( browser webBrowser [, bool ignoreCache ] )<br />
</syntaxhighlight><br />
<br />
===Required Arguments===<br />
*'''webBrowser:''' The browser that you want to reload.<br />
*'''ignoreCache :''' Ignoring cached content, Equivalent to "Shift + F5" in most browsers<br />
<br />
===Returns===<br />
Returns ''true'' if the browser has reloaded, ''false'' otherwise.<br />
<br />
==Example==<br />
<section name="Client" class="client" show="true"><br />
This example creates a browser that can return to the last and previous pages and can also be refreshed:<br />
<syntaxhighlight lang="lua"><br />
window = guiCreateWindow(126, 122, 848, 674, "Firechrome", false)<br />
guiWindowSetSizable(window, false)<br />
<br />
navigateBackBtn = guiCreateButton(10, 19, 39, 36, "<", false, window)<br />
navigateForwardBtn = guiCreateButton(98, 19, 39, 36, ">", false, window)<br />
addressBar = guiCreateEdit(137, 19, 701, 36, "", false, window)<br />
guiSetEnabled( addressBar, false )<br />
reloadBtn = guiCreateButton(49, 19, 49, 36, "reload", false, window)<br />
browser = guiCreateBrowser(10, 55, 828, 609, false, false, false, window)<br />
<br />
-- Load our page on browser creation.<br />
local theBrowser = guiGetBrowser(browser) <br />
addEventHandler("onClientBrowserCreated", theBrowser, <br />
function()<br />
loadBrowserURL(source, "https://forum.mtasa.com/")<br />
end<br />
)<br />
<br />
-- This checks to see if the browser can navigate in any direction and enables the back or forward buttons<br />
addEventHandler( "onClientBrowserDocumentReady", theBrowser, function( )<br />
navigateForwardBtn.enabled = (canBrowserNavigateForward(theBrowser))<br />
navigateBackBtn.enabled = (canBrowserNavigateBack(theBrowser))<br />
guiSetText( addressBar, getBrowserURL( theBrowser ) )<br />
end )<br />
<br />
-- This part handles the GUI navigation buttons for the browser.<br />
addEventHandler( "onClientGUIClick", resourceRoot, function ( )<br />
if source == navigateBackBtn then<br />
navigateBrowserBack(theBrowser)<br />
elseif source == navigateForwardBtn then<br />
navigateBrowserForward(theBrowser)<br />
elseif source == reloadBtn then<br />
reloadBrowserPage(theBrowser)<br />
end<br />
end )<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
{{CEF_functions}}<br />
<br />
[[hu:reloadBrowserPage]]<br />
[[RO:reloadBrowserPage]]</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Math.lerp&diff=76282
Math.lerp
2023-03-12T06:02:10Z
<p>CrosRoad95: add variant of mathlerp that doesn't care about order of number</p>
<hr />
<div>{{Useful Function}}<br />
==Syntax==<br />
<syntaxhighlight lang="lua">int math.lerp(int from, int to, int val)</syntaxhighlight><br />
<br />
===Required Arguments===<br />
* '''val''': The number from 0 to 1<br />
<br />
===Returns===<br />
Returns a number if everything went good, ''to'' otherwise.<br />
<br />
==Code==<br />
<syntaxhighlight lang="lua"><br />
-- Where b must be greater than a<br />
function math.lerp(a, b, k)<br />
local result = a * (1-k) + b * k<br />
if result >= b then<br />
result = b<br />
elseif result <= a then<br />
result = a<br />
end<br />
return result<br />
end<br />
<br />
function math.lerp(a, b, k)<br />
if(a > b)then<br />
local _a = a;<br />
a = b;<br />
b = _a;<br />
end<br />
local result = a * (1-k) + b * k<br />
if result >= b then<br />
result = b<br />
elseif result <= a then<br />
result = a<br />
end<br />
return result<br />
end<br />
</syntaxhighlight><br />
<br />
==Example==<br />
<syntaxhighlight lang="lua"><br />
math.lerp(100, 250, 0.5)<br />
-- Returns: 175<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
{{Useful_Functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=GetPointFromDistanceRotation&diff=76281
GetPointFromDistanceRotation
2023-03-11T17:38:49Z
<p>CrosRoad95: Remove unnecessary new lines</p>
<hr />
<div>{{Useful Function}}<br />
<lowercasetitle></lowercasetitle><br />
__NOTOC__<br />
This function takes a set of XY coordinates, a distance and a rotation argument. It returns XY coordinates of the point that is the given distance away from the given point, in the given direction.<br />
<br />
==Syntax==<br />
<syntaxhighlight lang="lua">float, float getPointFromDistanceRotation(float x, float y, float dist, float angle)</syntaxhighlight><br />
<br />
===Required Arguments===<br />
* '''x''': The X coordinate of the starting point.<br />
* '''y''': The Y coordinate of the starting point.<br />
* '''dist''': The distance from the starting point to the target point.<br />
* '''angle''': The direction from the starting point to the target point.<br />
<br />
==Code==<br />
<section name="Function source" class="both" show="true"><br />
<syntaxhighlight lang="lua"><br />
function getPointFromDistanceRotation(x, y, dist, angle)<br />
local a = math.rad(90 - angle);<br />
local dx = math.cos(a) * dist;<br />
local dy = math.sin(a) * dist;<br />
return x+dx, y+dy;<br />
end<br />
</syntaxhighlight><br />
</section><br />
<br />
==Example==<br />
<section name="Server" class="server" show="true"><br />
This command surrounds a player with peds.<br />
<syntaxhighlight lang="lua"><br />
addCommandHandler("surround",<br />
function (player)<br />
<br />
local x,y,z = getElementPosition(player);<br />
<br />
for i=1, 8 do<br />
local newX, newY = getPointFromDistanceRotation(x, y, 2, 360 * (i/8));<br />
createPed(10, newX, newY, z)<br />
end<br />
<br />
end<br />
);<br />
</syntaxhighlight><br />
</section><br />
<br />
Author: robhol.<br />
<br />
==See Also==<br />
{{Useful_Functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Vehicle_Upgrades&diff=71986
Vehicle Upgrades
2021-08-28T15:26:50Z
<p>CrosRoad95: typo, should be Stratum not Statum</p>
<hr />
<div>{| class="wikitable sortable" style="width:100%;"<br />
|-<br />
! scope="col"| ID<br />
! scope="col"| Modelname<br />
! scope="col"| Part<br />
! scope="col"| Type<br />
! scope="col"| Cars<br />
|-<br />
| '''1000''' || spl_b_mar_m || Spoiler || Pro || Certain Transfender cars<br />
|-<br />
| '''1001''' || spl_b_bab_m || Spoiler || Win || Certain Transfender cars<br />
|-<br />
| '''1002''' || spl_b_bar_m || Spoiler || Drag || Certain Transfender cars<br />
|-<br />
| '''1003''' || spl_b_mab_m || Spoiler || Alpha || Certain Transfender cars<br />
|-<br />
| '''1004''' || bnt_b_sc_m || Vents || Champ Scoop || Certain Transfender cars<br />
|-<br />
| '''1005''' || bnt_b_sc_l || Vents || Fury Scoop || Certain Transfender cars<br />
|-<br />
| '''1006''' || rf_b_sc_r || Roof || Roof Scoop || Certain Transfender cars<br />
|-<br />
| '''1007''' || wg_l_b_ssk || Sideskirt || Right Sideskirt || Certain Transfender cars<br />
|-<br />
| '''1008''' || nto_b_l || Nitro || 5 times || Most cars<br />
|-<br />
| '''1009''' || nto_b_s || Nitro || 2 times || Most cars<br />
|-<br />
| '''1010''' || nto_b_tw || Nitro || 10 times || Most cars<br />
|-<br />
| '''1011''' || bnt_b_sc_p_m || Vents || Race Scoop || Certain Transfender cars<br />
|-<br />
| '''1012''' || bnt_b_sc_p_l || Vents || Worx Scoop || Certain Transfender cars<br />
|-<br />
| '''1013''' || lgt_b_rspt || Lamps || Round Fog || Certain Transfender cars<br />
|-<br />
| '''1014''' || spl_b_bar_l || Spoiler || Champ || Certain Transfender cars<br />
|-<br />
| '''1015''' || spl_b_bbr_l || Spoiler || Race || Certain Transfender cars<br />
|-<br />
| '''1016''' || spl_b_bbr_m || Spoiler || Worx || Certain Transfender cars<br />
|-<br />
| '''1017''' || wg_r_b_ssk || Sideskirt || Left Sideskirt || Certain Transfender cars<br />
|-<br />
| '''1018''' || exh_b_ts || Exhaust || Upswept || Certain Transfender cars<br />
|-<br />
| '''1019''' || exh_b_t || Exhaust || Twin || Certain Transfender cars<br />
|-<br />
| '''1020''' || exh_b_l || Exhaust || Large || Certain Transfender cars<br />
|-<br />
| '''1021''' || exh_b_m || Exhaust || Medium || Certain Transfender cars<br />
|-<br />
| '''1022''' || exh_b_s || Exhaust || Small || Certain Transfender cars<br />
|-<br />
| '''1023''' || spl_b_bbb_m || Spoiler || Fury || Certain Transfender cars<br />
|-<br />
| '''1024''' || lgt_b_sspt || Lamps || Square Fog || Certain Transfender cars<br />
|-<br />
| '''1025''' || wheel_or1 || Wheels || Offroad || Certain Transfender cars<br />
|-<br />
| '''1026''' || wg_l_a_s || Sideskirt || Right Alien Sideskirt || Sultan<br />
|-<br />
| '''1027''' || wg_r_a_s || Sideskirt || Left Alien Sideskirt || Sultan<br />
|-<br />
| '''1028''' || exh_a_s || Exhaust || Alien || Sultan<br />
|-<br />
| '''1029''' || exh_c_s || Exhaust || X-Flow || Sultan<br />
|-<br />
| '''1030''' || wg_r_c_s || Sideskirt || Left X-Flow Sideskirt || Sultan<br />
|-<br />
| '''1031''' || wg_l_c_s || Sideskirt || Right X-Flow Sideskirt || Sultan<br />
|-<br />
| '''1032''' || rf_a_s || Roof || Alien Roof Vent || Sultan<br />
|-<br />
| '''1033''' || rf_c_s || Roof || X-Flow Roof Vent || Sultan<br />
|-<br />
| '''1034''' || exh_a_l || Exhaust || Alien || Elegy<br />
|-<br />
| '''1035''' || rf_c_l || Roof || X-Flow Roof Vent || Elegy<br />
|-<br />
| '''1036''' || wg_l_a_l || SideSkirt || Right Alien Sideskirt || Elegy<br />
|-<br />
| '''1037''' || exh_c_l || Exhaust || X-Flow || Elegy<br />
|-<br />
| '''1038''' || rf_a_l || Roof || Alien Roof Vent || Elegy<br />
|-<br />
| '''1039''' || wg_l_c_l || SideSkirt || Left X-Flow Sideskirt || Elegy<br />
|-<br />
| '''1040''' || wg_r_a_l || SideSkirt || Left Alien Sideskirt || Elegy<br />
|-<br />
| '''1041''' || wg_r_c_l || SideSkirt || Right X-Flow Sideskirt || Elegy<br />
|-<br />
| '''1042''' || wg_l_lr_br1 || SideSkirt || Right Chrome Sideskirt || Broadway<br />
|-<br />
| '''1043''' || exh_lr_br2 || Exhaust || Slamin || Broadway<br />
|-<br />
| '''1044''' || exh_lr_br1 || Exhaust || Chrome || Broadway<br />
|-<br />
| '''1045''' || exh_c_f || Exhaust || X-Flow || Flash<br />
|-<br />
| '''1046''' || exh_a_f || Exhaust || Alien || Flash<br />
|-<br />
| '''1047''' || wg_l_a_f || SideSkirt || Right Alien Sideskirt || Flash<br />
|-<br />
| '''1048''' || wg_l_c_f || SideSkirt || Right X-Flow Sideskirt || Flash<br />
|-<br />
| '''1049''' || spl_a_f_r || Spoiler || Alien || Flash<br />
|-<br />
| '''1050''' || spl_c_f_r || Spoiler || X-Flow || Flash<br />
|-<br />
| '''1051''' || wg_r_a_f || SideSkirt || Left Alien Sideskirt || Flash<br />
|-<br />
| '''1052''' || wg_r_c_f || SideSkirt || Left X-Flow Sideskirt || Flash<br />
|-<br />
| '''1053''' || rf_c_f || Roof || X-Flow || Flash<br />
|-<br />
| '''1054''' || rf_a_f || Roof || Alien || Flash<br />
|-<br />
| '''1055''' || rf_a_st || Roof || Alien || Stratum<br />
|-<br />
| '''1056''' || wg_l_a_st || Sideskirt || Right Alien Sideskirt || Stratum<br />
|-<br />
| '''1057''' || wg_l_c_st || Sideskirt || Right X-Flow Sideskirt || Stratum<br />
|-<br />
| '''1058''' || spl_a_st_r || Spoiler || Alien || Stratum<br />
|-<br />
| '''1059''' || exh_c_st || Exhaust || X-Flow || Stratum<br />
|-<br />
| '''1060''' || spl_c_st_r || Spoiler || X-Flow || Stratum<br />
|-<br />
| '''1061''' || rf_c_st || Roof || X-Flow || Stratum<br />
|-<br />
| '''1062''' || wg_r_a_st || Sideskirt || Left Alien Sideskirt || Stratum<br />
|-<br />
| '''1063''' || wg_r_c_st || Sideskirt || Left X-Flow Sideskirt || Stratum<br />
|-<br />
| '''1064''' || exh_a_st || Exhaust || Alien || Stratum<br />
|-<br />
| '''1065''' || exh_a_j || Exhaust || Alien || Jester<br />
|-<br />
| '''1066''' || exh_c_j || Exhaust || X-Flow || Jester<br />
|-<br />
| '''1067''' || rf_a_j || Roof || Alien || Jester<br />
|-<br />
| '''1068''' || rf_c_j || Roof || X-Flow || Jester<br />
|-<br />
| '''1069''' || wg_l_a_j || Sideskirt || Right Alien Sideskirt || Jester<br />
|-<br />
| '''1070''' || wg_l_c_j || Sideskirt || Right X-Flow Sideskirt || Jester<br />
|-<br />
| '''1071''' || wg_r_a_j || Sideskirt || Left Alien Sideskirt || Jester<br />
|-<br />
| '''1072''' || wg_r_c_j || Sideskirt || Left X-Flow Sideskirt || Jester<br />
|-<br />
| '''1073''' || wheel_sr6 || Wheels || Shadow || Most cars<br />
|-<br />
| '''1074''' || wheel_sr3 || Wheels || Mega || Most cars<br />
|-<br />
| '''1075''' || wheel_sr2 || Wheels || Rimshine || Most cars<br />
|-<br />
| '''1076''' || wheel_lr4 || Wheels || Wires || Most cars<br />
|-<br />
| '''1077''' || wheel_lr1 || Wheels || Classic || Most cars<br />
|-<br />
| '''1078''' || wheel_lr3 || Wheels || Twist || Most cars<br />
|-<br />
| '''1079''' || wheel_sr1 || Wheels || Cutter || Most cars<br />
|-<br />
| '''1080''' || wheel_sr5 || Wheels || Switch || Most cars<br />
|-<br />
| '''1081''' || wheel_sr4 || Wheels || Grove || Most cars<br />
|-<br />
| '''1082''' || wheel_gn1 || Wheels || Import || Most cars<br />
|-<br />
| '''1083''' || wheel_lr2 || Wheels || Dollar || Most cars<br />
|-<br />
| '''1084''' || wheel_lr5 || Wheels || Trance || Most cars<br />
|-<br />
| '''1085''' || wheel_gn2 || Wheels || Atomic || Most cars<br />
|-<br />
| '''1086''' || stereo || Stereo || Stereo || Most cars<br />
|-<br />
| '''1087''' || hydralics || Hydraulics || Hydraulics || Most cars<br />
|-<br />
| '''1088''' || rf_a_u || Roof || Alien || Uranus<br />
|-<br />
| '''1089''' || exh_c_u || Exhaust || X-Flow || Uranus<br />
|-<br />
| '''1090''' || wg_l_a_u || Sideskirt || Right Alien Sideskirt || Uranus<br />
|-<br />
| '''1091''' || rf_c_u || Roof || X-Flow || Uranus<br />
|-<br />
| '''1092''' || exh_a_u || Exhaust || Alien || Uranus<br />
|-<br />
| '''1093''' || wg_l_c_u || Sideskirt || Right X-Flow Sideskirt || Uranus<br />
|-<br />
| '''1094''' || wg_r_a_u || Sideskirt || Left Alien Sideskirt || Uranus<br />
|-<br />
| '''1095''' || wg_r_c_u || Sideskirt || Right X-Flow Sideskirt || Uranus<br />
|-<br />
| '''1096''' || wheel_gn3 || Wheels || Ahab || Most cars<br />
|-<br />
| '''1097''' || wheel_gn4 || Wheels || Virtual || Most cars<br />
|-<br />
| '''1098''' || wheel_gn5 || Wheels || Access || Most cars<br />
|-<br />
| '''1099''' || wg_r_lr_br1 || Sideskirt || Left Chrome Sideskirt || Broadway<br />
|-<br />
| '''1100''' || misc_c_lr_rem1 || Bullbar || Chrome Grill || Remington<br />
|-<br />
| '''1101''' || wg_r_lr_rem1 || Sideskirt || Left `Chrome Flames` Sideskirt || Remington<br />
|-<br />
| '''1102''' || wg_r_lr_sv || Sideskirt || Left `Chrome Strip` Sideskirt || Savanna<br />
|-<br />
| '''1103''' || rf_lr_bl2 || Roof || Covertible || Blade<br />
|-<br />
| '''1104''' || exh_lr_bl1 || Exhaust || Chrome || Blade<br />
|-<br />
| '''1105''' || exh_lr_bl2 || Exhaust || Slamin || Blade<br />
|-<br />
| '''1106''' || wg_l_lr_rem2 || Sideskirt || Right `Chrome Arches` || Remington<br />
|-<br />
| '''1107''' || wg_r_lr_bl1 || Sideskirt || Left `Chrome Strip` Sideskirt || Blade<br />
|-<br />
| '''1108''' || wg_l_lr_bl1 || Sideskirt || Right `Chrome Strip` Sideskirt || Blade<br />
|-<br />
| '''1109''' || bbb_lr_slv1 || Rear Bullbars || Chrome || Slamvan<br />
|-<br />
| '''1110''' || bbb_lr_slv2 || Rear Bullbars || Slamin || Slamvan<br />
|-<br />
| '''1111''' || bnt_lr_slv1 || Front Sign? || Little Sign? || Slamvan<br />
|-<br />
| '''1112''' || bnt_lr_slv2 || Front Sign? || Little Sign? || Slamvan<br />
|-<br />
| '''1113''' || exh_lr_slv1 || Exhaust || Chrome || Slamvan<br />
|-<br />
| '''1114''' || exh_lr_slv2 || Exhaust || Slamin || Slamvan<br />
|-<br />
| '''1115''' || fbb_lr_slv1 || Front Bullbars || Chrome || Slamvan<br />
|-<br />
| '''1116''' || fbb_lr_slv2 || Front Bullbars || Slamin || Slamvan<br />
|-<br />
| '''1117''' || fbmp_lr_slv1 || Front Bumper || Chrome || Slamvan<br />
|-<br />
| '''1118''' || wg_l_lr_slv1 || Sideskirt || Right `Chrome Trim` Sideskirt || Slamvan<br />
|-<br />
| '''1119''' || wg_l_lr_slv2 || Sideskirt || Right `Wheelcovers` Sideskirt || Slamvan<br />
|-<br />
| '''1120''' || wg_r_lr_slv1 || Sideskirt || Left `Chrome Trim` Sideskirt || Slamvan<br />
|-<br />
| '''1121''' || wg_r_lr_slv2 || Sideskirt || Left `Wheelcovers` Sideskirt || Slamvan<br />
|-<br />
| '''1122''' || wg_l_lr_rem1 || Sideskirt || Right `Chrome Flames` Sideskirt || Remington<br />
|-<br />
| '''1123''' || misc_c_lr_rem2 || Bullbars || Bullbar Chrome Bars || Remington<br />
|-<br />
| '''1124''' || wg_r_lr_rem2 || Sideskirt || Left `Chrome Arches` Sideskirt || Remington<br />
|-<br />
| '''1125''' || misc_c_lr_rem3 || Bullbars || Bullbar Chrome Lights || Remington<br />
|-<br />
| '''1126''' || exh_lr_rem1 || Exhaust || Chrome Exhaust || Remington<br />
|-<br />
| '''1127''' || exh_lr_rem2 || Exhaust || Slamin Exhaust || Remington<br />
|-<br />
| '''1128''' || rf_lr_bl1 || Roof || Vinyl Hardtop || Blade<br />
|-<br />
| '''1129''' || exh_lr_sv1 || Exhaust || Chrome || Savanna<br />
|-<br />
| '''1130''' || rf_lr_sv1 || Roof || Hardtop || Savanna<br />
|-<br />
| '''1131''' || rf_lr_sv2 || Roof || Softtop || Savanna<br />
|-<br />
| '''1132''' || exh_lr_sv2 || Exhaust || Slamin || Savanna<br />
|-<br />
| '''1133''' || wg_l_lr_sv || Sideskirt || Right `Chrome Strip` Sideskirt || Savanna<br />
|-<br />
| '''1134''' || wg_l_lr_t1 || SideSkirt || Right `Chrome Strip` Sideskirt || Tornado<br />
|-<br />
| '''1135''' || exh_lr_t2 || Exhaust || Slamin || Tornado<br />
|-<br />
| '''1136''' || exh_lr_t1 || Exhaust || Chrome || Tornado<br />
|-<br />
| '''1137''' || wg_r_lr_t1 || Sideskirt || Left `Chrome Strip` Sideskirt || Tornado<br />
|-<br />
| '''1138''' || spl_a_s_b || Spoiler || Alien || Sultan<br />
|-<br />
| '''1139''' || spl_c_s_b || Spoiler || X-Flow || Sultan<br />
|-<br />
| '''1140''' || rbmp_c_s || Rear Bumper || X-Flow || Sultan<br />
|-<br />
| '''1141''' || rbmp_a_s || Rear Bumper || Alien || Sultan<br />
|-<br />
| '''1142''' || bntr_b_ov || Hood || Left Oval Hoods || Certain Transfender Cars<br />
|-<br />
| '''1143''' || bntl_b_ov || Hood || Right Oval Hoods || Certain Transfender Cars<br />
|-<br />
| '''1144''' || bntr_b_sq || Hood || Left Square Hoods || Certain Transfender Cars<br />
|-<br />
| '''1145''' || bntl_b_sq || Hood || Right Square Hoods || Certain Transfender Cars<br />
|-<br />
| '''1146''' || spl_c_l_b || Spoiler || X-Flow || Elegy<br />
|-<br />
| '''1147''' || spl_a_l_b || Spoiler || Alien || Elegy<br />
|-<br />
| '''1148''' || rbmp_c_l || Rear Bumper || X-Flow || Elegy<br />
|-<br />
| '''1149''' || rbmp_a_l || Rear Bumper || Alien || Elegy<br />
|-<br />
| '''1150''' || rbmp_a_f || Rear Bumper || Alien || Flash<br />
|-<br />
| '''1151''' || rbmp_c_f || Rear Bumper || X-Flow || Flash<br />
|-<br />
| '''1152''' || fbmp_c_f || Front Bumper || X-Flow || Flash<br />
|-<br />
| '''1153''' || fbmp_a_f || Front Bumper || Alien || Flash<br />
|-<br />
| '''1154''' || rbmp_a_st || Rear Bumper || Alien || Stratum<br />
|-<br />
| '''1155''' || fbmp_a_st || Front Bumper || Alien || Stratum<br />
|-<br />
| '''1156''' || rbmp_c_st || Rear Bumper || X-Flow || Stratum<br />
|-<br />
| '''1157''' || fbmp_c_st || Front Bumper || X-Flow || Stratum<br />
|-<br />
| '''1158''' || spl_c_j_b || Spoiler || X-Flow || Jester<br />
|-<br />
| '''1159''' || rbmp_a_j || Rear Bumper || Alien || Jester<br />
|-<br />
| '''1160''' || fbmp_a_j || Front Bumper || Alien || Jester<br />
|-<br />
| '''1161''' || rbmp_c_j || Rear Bumper || X-Flow || Jester<br />
|-<br />
| '''1162''' || spl_a_j_b || Spoiler || Alien || Jester<br />
|-<br />
| '''1163''' || spl_c_u_b || Spoiler || X-Flow || Uranus<br />
|-<br />
| '''1164''' || spl_a_u_b || Spoiler || Alien || Uranus<br />
|-<br />
| '''1165''' || fbmp_c_u || Front Bumper || X-Flow || Uranus<br />
|-<br />
| '''1166''' || fbmp_a_u || Front Bumper || Alien || Uranus<br />
|-<br />
| '''1167''' || rbmp_c_u || Rear Bumper || X-Flow || Uranus<br />
|-<br />
| '''1168''' || rbmp_a_u || Rear Bumper || Alien || Uranus<br />
|-<br />
| '''1169''' || fbmp_a_s || Front Bumper || Alien || Sultan<br />
|-<br />
| '''1170''' || fbmp_c_s || Front Bumper || X-Flow || Sultan<br />
|-<br />
| '''1171''' || fbmp_a_l || Front Bumper || Alien || Elegy<br />
|-<br />
| '''1172''' || fbmp_c_l || Front Bumper || X-Flow || Elegy<br />
|-<br />
| '''1173''' || fbmp_c_j || Front Bumper || X-Flow || Jester<br />
|-<br />
| '''1174''' || fbmp_lr_br1 || Front Bumper || Chrome || Broadway<br />
|-<br />
| '''1175''' || fbmp_lr_br2 || Rear Bumper || Slamin || Broadway<br />
|-<br />
| '''1176''' || rbmp_lr_br1 || Front Bumper || Chrome || Broadway<br />
|-<br />
| '''1177''' || rbmp_lr_br2 || Rear Bumper || Slamin || Broadway<br />
|-<br />
| '''1178''' || rbmp_lr_rem2 || Rear Bumper || Slamin || Remington<br />
|-<br />
| '''1179''' || fbmp_lr_rem1 || Front Bumper || Chrome || Remington<br />
|-<br />
| '''1180''' || rbmp_lr_rem1 || Rear Bumper || Chrome || Remington<br />
|-<br />
| '''1181''' || fbmp_lr_bl2 || Front Bumper || Slamin || Blade<br />
|-<br />
| '''1182''' || fbmp_lr_bl1 || Front Bumper || Chrome || Blade<br />
|-<br />
| '''1183''' || rbmp_lr_bl2 || Rear Bumper || Slamin || Blade<br />
|-<br />
| '''1184''' || rbmp_lr_bl1 || Rear Bumper || Chrome || Blade<br />
|-<br />
| '''1185''' || fbmp_lr_rem2 || Front Bumper || Slamin || Remington<br />
|-<br />
| '''1186''' || rbmp_lr_sv2 || Rear Bumper || Slamin || Savanna<br />
|-<br />
| '''1187''' || rbmp_lr_sv1 || Rear Bumper || Chrome || Savanna<br />
|-<br />
| '''1188''' || fbmp_lr_sv2 || Front Bumper || Slamin || Savanna<br />
|-<br />
| '''1189''' || fbmp_lr_sv1 || Front Bumper || Chrome || Savanna<br />
|-<br />
| '''1190''' || fbmp_lr_t2 || Front Bumper || Slamin || Tornado<br />
|-<br />
| '''1191''' || fbmp_lr_t1 || Front Bumper || Chrome || Tornado<br />
|-<br />
| '''1192''' || rbmp_lr_t1 || Rear Bumper || Chrome || Tornado<br />
|-<br />
| '''1193''' || rbmp_lr_t2 || Rear Bumper || Slamin || Tornado<br />
|}<br />
<br><br />
<br />
==All valid upgrades per vehicle==<br />
<br />
{| class="wikitable"<br />
! scope="col" style="width:8%;"| Name<br />
! scope="col" style="width:2%;"| ID<br />
! scope="col" style="width:50%;"| Component ID<br />
|-<br />
|'''Landstalker'''||400|| 1008, 1009, 1010, 1013, 1018, 1019, 1020, 1021, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Bravura'''||401|| 1001, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1146, 1147, 1158, 1162, 1163<br />
|-<br />
|'''Buffalo'''||402|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Linerunner'''||403|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Perrenial'''||404|| 1000, 1002, 1007, 1008, 1009, 1010, 1013, 1016, 1017, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Sentinel'''||405|| 1000, 1001, 1008, 1009, 1010, 1014, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Dumper'''||406|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Firetruck'''||407|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Trashmaster'''||408|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Stretch'''||409|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Manana'''||410|| 1001, 1003, 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1021, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Infernus'''||411|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Voodoo'''||412|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Pony'''||413|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Mule'''||414|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Cheetah'''||415|| 1001, 1003, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Ambulance'''||416|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Leviathan'''||417|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Moonbeam'''||418|| 1002, 1006, 1008, 1009, 1010, 1016, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Esperanto'''||419|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Taxi'''||420|| 1001, 1003, 1004, 1005, 1008, 1009, 1010, 1019, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Washington'''||421|| 1000, 1008, 1009, 1010, 1014, 1016, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Bobcat'''||422|| 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Mr Whoopee'''||423|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''BF Injection'''||424|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hunter'''||425|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Premier'''||426|| 1001, 1003, 1004, 1005, 1006, 1008, 1009, 1010, 1019, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Enforcer'''||427|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Securicar'''||428|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Banshee'''||429|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Predator'''||430<br />
|-<br />
|'''Bus'''||431|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Rhino'''||432|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Barracks'''||433|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hotknife'''||434|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Trailer 1'''||435|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Previon'''||436|| 1001, 1003, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1021, 1022, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Coach'''||437|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Cabbie'''||438|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Stallion'''||439|| 1001, 1003, 1007, 1008, 1009, 1010, 1013, 1017, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Rumpo'''||440|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''RC Bandit'''||441|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Romero'''||442|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Packer'''||443|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Monster'''||444|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Admiral'''||445|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Squalo'''||446<br />
|-<br />
|'''Seasparrow'''||447|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Pizzaboy'''||448<br />
|-<br />
|'''Tram'''||449<br />
|-<br />
|'''Trailer 2'''||450|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Turismo'''||451|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Speeder'''||452<br />
|-<br />
|'''Reefer'''||453<br />
|-<br />
|'''Tropic'''||454<br />
|-<br />
|'''Flatbed'''||455|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Yankee'''||456|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Caddy'''||457|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Solair'''||458|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Berkley's RC Van'''||459|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Skimmer'''||460|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''PCJ-600'''||461<br />
|-<br />
|'''Faggio'''||462<br />
|-<br />
|'''Freeway'''||463<br />
|-<br />
|'''RC Baron'''||464|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''RC Raider'''||465|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Glendale'''||466|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Oceanic'''||467|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Sanchez'''||468<br />
|-<br />
|'''Sparrow'''||469|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Patriot'''||470|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Quad'''||471|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Coastguard'''||472<br />
|-<br />
|'''Dinghy'''||473<br />
|-<br />
|'''Hermes'''||474|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Sabre'''||475|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Rustler'''||476|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''ZR-350'''||477|| 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Walton'''||478|| 1004, 1005, 1008, 1009, 1010, 1012, 1013, 1020, 1021, 1022, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Regina'''||479|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Comet'''||480|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''BMX'''||481<br />
|-<br />
|'''Burrito'''||482|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Camper'''||483|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Marquis'''||484<br />
|-<br />
|'''Baggage'''||485|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Dozer'''||486|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Maverick'''||487|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''News Chopper'''||488|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Rancher'''||489|| 1000, 1002, 1004, 1005, 1006, 1008, 1009, 1010, 1013, 1016, 1018, 1019, 1020, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''FBI Rancher'''||490|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Virgo'''||491|| 1003, 1007, 1008, 1009, 1010, 1014, 1017, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Greenwood'''||492|| 1000, 1004, 1005, 1006, 1008, 1009, 1010, 1016, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Jetmax'''||493<br />
|-<br />
|'''Hotring'''||494|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Sandking'''||495|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Blista Compact'''||496|| 1001, 1002, 1003, 1006, 1007, 1008, 1009, 1010, 1011, 1017, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143<br />
|-<br />
|'''Police Maverick'''||497|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Boxville'''||498|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Benson'''||499|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Mesa'''||500|| 1008, 1009, 1010, 1013, 1019, 1020, 1021, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''RC Goblin'''||501|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hotring Racer A'''||502|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hotring Racer B'''||503|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Bloodring Banger'''||504|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Rancher'''||505|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Super GT'''||506|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Elegant'''||507|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Journey'''||508|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Bike'''||509<br />
|-<br />
|'''Mountain Bike'''||510<br />
|-<br />
|'''Beagle'''||511|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Cropdust'''||512|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Stunt'''||513|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Tanker'''||514|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Roadtrain'''||515|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Nebula'''||516|| 1000, 1002, 1004, 1007, 1008, 1009, 1010, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Majestic'''||517|| 1002, 1003, 1007, 1008, 1009, 1010, 1016, 1017, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Buccaneer'''||518|| 1001, 1003, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1018, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Shamal'''||519|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hydra'''||520|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''FCR-900'''||521<br />
|-<br />
|'''NRG-500'''||522<br />
|-<br />
|'''HPV1000'''||523<br />
|-<br />
|'''Cement Truck'''||524|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Tow Truck'''||525|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Fortune'''||526|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Cadrona'''||527|| 1001, 1007, 1008, 1009, 1010, 1014, 1015, 1017, 1018, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''FBI Truck'''||528|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Willard'''||529|| 1001, 1003, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1017, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Forklift'''||530|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Tractor'''||531|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Combine'''||532|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Feltzer'''||533|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Remington'''||534|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1100, 1101, 1106, 1122, 1123, 1124, 1125, 1126, 1127, 1178, 1179, 1180, 1185<br />
|-<br />
|'''Slamvan'''||535|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1109, 1110, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121<br />
|-<br />
|'''Blade'''||536|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1103, 1104, 1105, 1107, 1108, 1128, 1181, 1182, 1183, 1184<br />
|-<br />
|'''Freight'''||537<br />
|-<br />
|'''Streak'''||538<br />
|-<br />
|'''Vortex'''||539|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Vincent'''||540|| 1001, 1004, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1020, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Bullet'''||541|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Clover'''||542|| 1008, 1009, 1010, 1014, 1015, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1144, 1145<br />
|-<br />
|'''Sadler'''||543|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Firetruck LA'''||544|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hustler'''||545|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Intruder'''||546|| 1001, 1002, 1004, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Primo'''||547|| 1000, 1003, 1008, 1009, 1010, 1016, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143<br />
|-<br />
|'''Cargobob'''||548|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Tampa'''||549|| 1001, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1017, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Sunrise'''||550|| 1001, 1003, 1004, 1005, 1006, 1008, 1009, 1010, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Merit'''||551|| 1002, 1003, 1005, 1006, 1008, 1009, 1010, 1016, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Utility'''||552|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Nevada'''||553|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Yosemite'''||554|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Windsor'''||555|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Monster A'''||556|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Monster B'''||557|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Uranus'''||558|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1163, 1164, 1165, 1166, 1167, 1168<br />
|-<br />
|'''Jester'''||559|| 1008, 1009, 1010, 1025, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1158, 1159, 1160, 1161, 1162, 1173<br />
|-<br />
|'''Sultan'''||560|| 1008, 1009, 1010, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1138, 1139, 1140, 1141, 1169, 1170<br />
|-<br />
|'''Stratum'''||561|| 1008, 1009, 1010, 1025, 1026, 1027, 1030, 1031, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1154, 1155, 1156, 1157<br />
|-<br />
|'''Elegy'''||562|| 1008, 1009, 1010, 1025, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1146, 1147, 1148, 1149, 1171, 1172<br />
|-<br />
|'''Raindance'''||563|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''RC Tiger'''||564|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Flash'''||565|| 1008, 1009, 1010, 1025, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1150, 1151, 1152, 1153<br />
|-<br />
|'''Tahoma'''||566|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Savanna'''||567|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1102, 1129, 1130, 1131, 1132, 1133, 1186, 1187, 1188, 1189<br />
|-<br />
|'''Bandito'''||568|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Freight Flat'''||569<br />
|-<br />
|'''Streak Carriage'''||570<br />
|-<br />
|'''Kart'''||571|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Mower'''||572|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Duneride'''||573|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Sweeper'''||574|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Broadway'''||575|| 1008, 1009, 1010, 1025, 1042, 1043, 1044, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1099, 1174, 1175, 1176, 1177<br />
|-<br />
|'''Tornado'''||576|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1134, 1135, 1136, 1137, 1190, 1191, 1192, 1193<br />
|-<br />
|'''AT-400'''||577|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''DFT-30'''||578|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Huntley'''||579|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Stafford'''||580|| 1001, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''BF-400'''||581<br />
|-<br />
|'''Newsvan'''||582|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Tug'''||583|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Trailer 3'''||584|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Emperor'''||585|| 1000, 1002, 1003, 1006, 1007, 1008, 1009, 1010, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Wayfarer'''||586<br />
|-<br />
|'''Euros'''||587|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Hotdog'''||588|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Club'''||589|| 1000, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1016, 1017, 1018, 1020, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1144, 1145<br />
|-<br />
|'''Freight Carriage'''||590<br />
|-<br />
|'''Trailer 3'''||591|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Andromada'''||592|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Dodo'''||593|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''RC Cam'''||594|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Launch'''||595<br />
|-<br />
|'''Police Car (LSPD)'''||596|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Police Car (SFPD)'''||597|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Police Car (LVPD)'''||598|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Police Ranger'''||599|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Picador'''||600|| 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1018, 1020, 1022, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''S.W.A.T. Van'''||601|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Alpha'''||602|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Phoenix'''||603|| 1001, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1020, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145<br />
|-<br />
|'''Glendale'''||604|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Sadler'''||605|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Luggage Trailer A'''||606|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Luggage Trailer B'''||607|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Stair Trailer'''||608|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Boxville'''||609|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Farm Plow'''||610|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|-<br />
|'''Utility Trailer'''||611|| 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098<br />
|}<br />
<br />
==Vehicle Functions==<br />
<section name="Functions" class="Server client"> {{Vehicle functions}} </section><br />
<br />
==Vehicles Upgrades (table form)==<br />
<section name="Table (click to expand)" show="false"><br />
<syntaxhighlight lang="lua"><br />
{<br />
[1000] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_mar_m",<br />
part = "Spoiler",<br />
partType = "Pro"<br />
},<br />
[1001] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_bab_m",<br />
part = "Spoiler",<br />
partType = "Win"<br />
},<br />
[1002] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_bar_m",<br />
part = "Spoiler",<br />
partType = "Drag"<br />
},<br />
[1003] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_mab_m",<br />
part = "Spoiler",<br />
partType = "Alpha"<br />
},<br />
[1004] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "bnt_b_sc_m",<br />
part = "Vents",<br />
partType = "Champ Scoop"<br />
},<br />
[1005] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "bnt_b_sc_l",<br />
part = "Vents",<br />
partType = "Fury Scoop"<br />
},<br />
[1006] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "rf_b_sc_r",<br />
part = "Roof",<br />
partType = "Roof Scoop"<br />
},<br />
[1007] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "wg_l_b_ssk",<br />
part = "Sideskirt",<br />
partType = "Right Sideskirt"<br />
},<br />
[1008] = {<br />
cars = "Most cars",<br />
modelName = "nto_b_l",<br />
part = "Nitro",<br />
partType = "5 times"<br />
},<br />
[1009] = {<br />
cars = "Most cars",<br />
modelName = "nto_b_s",<br />
part = "Nitro",<br />
partType = "2 times"<br />
},<br />
[1010] = {<br />
cars = "Most cars",<br />
modelName = "nto_b_tw",<br />
part = "Nitro",<br />
partType = "10 times"<br />
},<br />
[1011] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "bnt_b_sc_p_m",<br />
part = "Vents",<br />
partType = "Race Scoop"<br />
},<br />
[1012] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "bnt_b_sc_p_l",<br />
part = "Vents",<br />
partType = "Worx Scoop"<br />
},<br />
[1013] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "lgt_b_rspt",<br />
part = "Lamps",<br />
partType = "Round Fog"<br />
},<br />
[1014] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_bar_l",<br />
part = "Spoiler",<br />
partType = "Champ"<br />
},<br />
[1015] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_bbr_l",<br />
part = "Spoiler",<br />
partType = "Race"<br />
},<br />
[1016] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_bbr_m",<br />
part = "Spoiler",<br />
partType = "Worx"<br />
},<br />
[1017] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "wg_r_b_ssk",<br />
part = "Sideskirt",<br />
partType = "Left Sideskirt"<br />
},<br />
[1018] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "exh_b_ts",<br />
part = "Exhaust",<br />
partType = "Upswept"<br />
},<br />
[1019] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "exh_b_t",<br />
part = "Exhaust",<br />
partType = "Twin"<br />
},<br />
[1020] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "exh_b_l",<br />
part = "Exhaust",<br />
partType = "Large"<br />
},<br />
[1021] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "exh_b_m",<br />
part = "Exhaust",<br />
partType = "Medium"<br />
},<br />
[1022] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "exh_b_s",<br />
part = "Exhaust",<br />
partType = "Small"<br />
},<br />
[1023] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "spl_b_bbb_m",<br />
part = "Spoiler",<br />
partType = "Fury"<br />
},<br />
[1024] = {<br />
cars = "Certain Transfender cars",<br />
modelName = "lgt_b_sspt",<br />
part = "Lamps",<br />
partType = "Square Fog"<br />
},<br />
[1026] = {<br />
cars = "Sultan",<br />
modelName = "wg_l_a_s",<br />
part = "Sideskirt",<br />
partType = "Right Alien Sideskirt"<br />
},<br />
[1027] = {<br />
cars = "Sultan",<br />
modelName = "wg_r_a_s",<br />
part = "Sideskirt",<br />
partType = "Left Alien Sideskirt"<br />
},<br />
[1028] = {<br />
cars = "Sultan",<br />
modelName = "exh_a_s",<br />
part = "Exhaust",<br />
partType = "Alien"<br />
},<br />
[1029] = {<br />
cars = "Sultan",<br />
modelName = "exh_c_s",<br />
part = "Exhaust",<br />
partType = "X-Flow"<br />
},<br />
[1030] = {<br />
cars = "Sultan",<br />
modelName = "wg_r_c_s",<br />
part = "Sideskirt",<br />
partType = "Left X-Flow Sideskirt"<br />
},<br />
[1031] = {<br />
cars = "Sultan",<br />
modelName = "wg_l_c_s",<br />
part = "Sideskirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1032] = {<br />
cars = "Sultan",<br />
modelName = "rf_a_s",<br />
part = "Roof",<br />
partType = "Alien Roof Vent"<br />
},<br />
[1033] = {<br />
cars = "Sultan",<br />
modelName = "rf_c_s",<br />
part = "Roof",<br />
partType = "X-Flow Roof Vent"<br />
},<br />
[1034] = {<br />
cars = "Elegy",<br />
modelName = "exh_a_l",<br />
part = "Exhaust",<br />
partType = "Alien"<br />
},<br />
[1035] = {<br />
cars = "Elegy",<br />
modelName = "rf_c_l",<br />
part = "Roof",<br />
partType = "X-Flow Roof Vent"<br />
},<br />
[1036] = {<br />
cars = "Elegy",<br />
modelName = "wg_l_a_l",<br />
part = "SideSkirt",<br />
partType = "Right Alien Sideskirt"<br />
},<br />
[1037] = {<br />
cars = "Elegy",<br />
modelName = "exh_c_l",<br />
part = "Exhaust",<br />
partType = "X-Flow"<br />
},<br />
[1038] = {<br />
cars = "Elegy",<br />
modelName = "rf_a_l",<br />
part = "Roof",<br />
partType = "Alien Roof Vent"<br />
},<br />
[1039] = {<br />
cars = "Elegy",<br />
modelName = "wg_l_c_l",<br />
part = "SideSkirt",<br />
partType = "Left X-Flow Sideskirt"<br />
},<br />
[1040] = {<br />
cars = "Elegy",<br />
modelName = "wg_r_a_l",<br />
part = "SideSkirt",<br />
partType = "Left Alien Sideskirt"<br />
},<br />
[1041] = {<br />
cars = "Elegy",<br />
modelName = "wg_r_c_l",<br />
part = "SideSkirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1045] = {<br />
cars = "Flash",<br />
modelName = "exh_c_f",<br />
part = "Exhaust",<br />
partType = "X-Flow"<br />
},<br />
[1046] = {<br />
cars = "Flash",<br />
modelName = "exh_a_f",<br />
part = "Exhaust",<br />
partType = "Alien"<br />
},<br />
[1047] = {<br />
cars = "Flash",<br />
modelName = "wg_l_a_f",<br />
part = "SideSkirt",<br />
partType = "Right Alien Sideskirt"<br />
},<br />
[1048] = {<br />
cars = "Flash",<br />
modelName = "wg_l_c_f",<br />
part = "SideSkirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1049] = {<br />
cars = "Flash",<br />
modelName = "spl_a_f_r",<br />
part = "Spoiler",<br />
partType = "Alien"<br />
},<br />
[1050] = {<br />
cars = "Flash",<br />
modelName = "spl_c_f_r",<br />
part = "Spoiler",<br />
partType = "X-Flow"<br />
},<br />
[1051] = {<br />
cars = "Flash",<br />
modelName = "wg_r_a_f",<br />
part = "SideSkirt",<br />
partType = "Left Alien Sideskirt"<br />
},<br />
[1052] = {<br />
cars = "Flash",<br />
modelName = "wg_r_c_f",<br />
part = "SideSkirt",<br />
partType = "Left X-Flow Sideskirt"<br />
},<br />
[1053] = {<br />
cars = "Flash",<br />
modelName = "rf_c_f",<br />
part = "Roof",<br />
partType = "X-Flow"<br />
},<br />
[1054] = {<br />
cars = "Flash",<br />
modelName = "rf_a_f",<br />
part = "Roof",<br />
partType = "Alien"<br />
},<br />
[1055] = {<br />
cars = "Statum",<br />
modelName = "rf_a_st",<br />
part = "Roof",<br />
partType = "Alien"<br />
},<br />
[1056] = {<br />
cars = "Statum",<br />
modelName = "wg_l_a_st",<br />
part = "Sideskirt",<br />
partType = "Right Alien Sideskirt"<br />
},<br />
[1057] = {<br />
cars = "Statum",<br />
modelName = "wg_l_c_st",<br />
part = "Sideskirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1058] = {<br />
cars = "Statum",<br />
modelName = "spl_a_st_r",<br />
part = "Spoiler",<br />
partType = "Alien"<br />
},<br />
[1059] = {<br />
cars = "Statum",<br />
modelName = "exh_c_st",<br />
part = "Exhaust",<br />
partType = "X-Flow"<br />
},<br />
[1060] = {<br />
cars = "Statum",<br />
modelName = "spl_c_st_r",<br />
part = "Spoiler",<br />
partType = "X-Flow"<br />
},<br />
[1061] = {<br />
cars = "Statum",<br />
modelName = "rf_c_st",<br />
part = "Roof",<br />
partType = "X-Flow"<br />
},<br />
[1062] = {<br />
cars = "Statum",<br />
modelName = "wg_r_a_st",<br />
part = "Sideskirt",<br />
partType = "Left Alien Sideskirt"<br />
},<br />
[1063] = {<br />
cars = "Statum",<br />
modelName = "wg_r_c_st",<br />
part = "Sideskirt",<br />
partType = "Left X-Flow Sideskirt"<br />
},<br />
[1064] = {<br />
cars = "Statum",<br />
modelName = "exh_a_st",<br />
part = "Exhaust",<br />
partType = "Alien"<br />
},<br />
[1065] = {<br />
cars = "Jester",<br />
modelName = "exh_a_j",<br />
part = "Exhaust",<br />
partType = "Alien"<br />
},<br />
[1066] = {<br />
cars = "Jester",<br />
modelName = "exh_c_j",<br />
part = "Exhaust",<br />
partType = "X-Flow"<br />
},<br />
[1067] = {<br />
cars = "Jester",<br />
modelName = "rf_a_j",<br />
part = "Roof",<br />
partType = "Alien"<br />
},<br />
[1068] = {<br />
cars = "Jester",<br />
modelName = "rf_c_j",<br />
part = "Roof",<br />
partType = "X-Flow"<br />
},<br />
[1069] = {<br />
cars = "Jester",<br />
modelName = "wg_l_a_j",<br />
part = "Sideskirt",<br />
partType = "Right Alien Sideskirt"<br />
},<br />
[1070] = {<br />
cars = "Jester",<br />
modelName = "wg_l_c_j",<br />
part = "Sideskirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1071] = {<br />
cars = "Jester",<br />
modelName = "wg_r_a_j",<br />
part = "Sideskirt",<br />
partType = "Left Alien Sideskirt"<br />
},<br />
[1072] = {<br />
cars = "Jester",<br />
modelName = "wg_r_c_j",<br />
part = "Sideskirt",<br />
partType = "Left X-Flow Sideskirt"<br />
},<br />
[1086] = {<br />
cars = "Most cars",<br />
modelName = "stereo",<br />
part = "Stereo",<br />
partType = "Stereo"<br />
},<br />
[1087] = {<br />
cars = "Most cars",<br />
modelName = "hydralics",<br />
part = "Hydraulics",<br />
partType = "Hydraulics"<br />
},<br />
[1088] = {<br />
cars = "Uranus",<br />
modelName = "rf_a_u",<br />
part = "Roof",<br />
partType = "Alien"<br />
},<br />
[1089] = {<br />
cars = "Uranus",<br />
modelName = "exh_c_u",<br />
part = "Exhaust",<br />
partType = "X-Flow"<br />
},<br />
[1090] = {<br />
cars = "Uranus",<br />
modelName = "wg_l_a_u",<br />
part = "Sideskirt",<br />
partType = "Right Alien Sideskirt"<br />
},<br />
[1091] = {<br />
cars = "Uranus",<br />
modelName = "rf_c_u",<br />
part = "Roof",<br />
partType = "X-Flow"<br />
},<br />
[1092] = {<br />
cars = "Uranus",<br />
modelName = "exh_a_u",<br />
part = "Exhaust",<br />
partType = "Alien"<br />
},<br />
[1093] = {<br />
cars = "Uranus",<br />
modelName = "wg_l_c_u",<br />
part = "Sideskirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1094] = {<br />
cars = "Uranus",<br />
modelName = "wg_r_a_u",<br />
part = "Sideskirt",<br />
partType = "Left Alien Sideskirt"<br />
},<br />
[1095] = {<br />
cars = "Uranus",<br />
modelName = "wg_r_c_u",<br />
part = "Sideskirt",<br />
partType = "Right X-Flow Sideskirt"<br />
},<br />
[1102] = {<br />
cars = "Savanna",<br />
modelName = "wg_r_lr_sv",<br />
part = "Sideskirt",<br />
partType = "Left `Chrome Strip` Sideskirt"<br />
},<br />
[1133] = {<br />
cars = "Savanna",<br />
modelName = "wg_l_lr_sv",<br />
part = "Sideskirt",<br />
partType = "Right `Chrome Strip` Sideskirt"<br />
},<br />
[1138] = {<br />
cars = "Sultan",<br />
modelName = "spl_a_s_b",<br />
part = "Spoiler",<br />
partType = "Alien"<br />
},<br />
[1139] = {<br />
cars = "Sultan",<br />
modelName = "spl_c_s_b",<br />
part = "Spoiler",<br />
partType = "X-Flow"<br />
},<br />
[1140] = {<br />
cars = "Sultan",<br />
modelName = "rbmp_c_s",<br />
part = "Rear Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1141] = {<br />
cars = "Sultan",<br />
modelName = "rbmp_a_s",<br />
part = "Rear Bumper",<br />
partType = "Alien"<br />
},<br />
[1142] = {<br />
cars = "Certain Transfender Cars",<br />
modelName = "bntr_b_ov",<br />
part = "Hood",<br />
partType = "Left Oval Hoods"<br />
},<br />
[1143] = {<br />
cars = "Certain Transfender Cars",<br />
modelName = "bntl_b_ov",<br />
part = "Hood",<br />
partType = "Right Oval Hoods"<br />
},<br />
[1144] = {<br />
cars = "Certain Transfender Cars",<br />
modelName = "bntr_b_sq",<br />
part = "Hood",<br />
partType = "Left Square Hoods"<br />
},<br />
[1145] = {<br />
cars = "Certain Transfender Cars",<br />
modelName = "bntl_b_sq",<br />
part = "Hood",<br />
partType = "Right Square Hoods"<br />
},<br />
[1146] = {<br />
cars = "Elegy",<br />
modelName = "spl_c_l_b",<br />
part = "Spoiler",<br />
partType = "X-Flow"<br />
},<br />
[1147] = {<br />
cars = "Elegy",<br />
modelName = "spl_a_l_b",<br />
part = "Spoiler",<br />
partType = "Alien"<br />
},<br />
[1148] = {<br />
cars = "Elegy",<br />
modelName = "rbmp_c_l",<br />
part = "Rear Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1149] = {<br />
cars = "Elegy",<br />
modelName = "rbmp_a_l",<br />
part = "Rear Bumper",<br />
partType = "Alien"<br />
},<br />
[1150] = {<br />
cars = "Flash",<br />
modelName = "rbmp_a_f",<br />
part = "Rear Bumper",<br />
partType = "Alien"<br />
},<br />
[1151] = {<br />
cars = "Flash",<br />
modelName = "rbmp_c_f",<br />
part = "Rear Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1152] = {<br />
cars = "Flash",<br />
modelName = "fbmp_c_f",<br />
part = "Front Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1153] = {<br />
cars = "Flash",<br />
modelName = "fbmp_a_f",<br />
part = "Front Bumper",<br />
partType = "Alien"<br />
},<br />
[1154] = {<br />
cars = "Stratum",<br />
modelName = "rbmp_a_st",<br />
part = "Rear Bumper",<br />
partType = "Alien"<br />
},<br />
[1155] = {<br />
cars = "Stratum",<br />
modelName = "fbmp_a_st",<br />
part = "Front Bumper",<br />
partType = "Alien"<br />
},<br />
[1156] = {<br />
cars = "Stratum",<br />
modelName = "rbmp_c_st",<br />
part = "Rear Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1157] = {<br />
cars = "Stratum",<br />
modelName = "fbmp_c_st",<br />
part = "Front Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1158] = {<br />
cars = "Jester",<br />
modelName = "spl_c_j_b",<br />
part = "Spoiler",<br />
partType = "X-Flow"<br />
},<br />
[1159] = {<br />
cars = "Jester",<br />
modelName = "rbmp_a_j",<br />
part = "Rear Bumper",<br />
partType = "Alien"<br />
},<br />
[1160] = {<br />
cars = "Jester",<br />
modelName = "fbmp_a_j",<br />
part = "Front Bumper",<br />
partType = "Alien"<br />
},<br />
[1161] = {<br />
cars = "Jester",<br />
modelName = "rbmp_c_j",<br />
part = "Rear Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1162] = {<br />
cars = "Jester",<br />
modelName = "spl_a_j_b",<br />
part = "Spoiler",<br />
partType = "Alien"<br />
},<br />
[1163] = {<br />
cars = "Uranus",<br />
modelName = "spl_c_u_b",<br />
part = "Spoiler",<br />
partType = "X-Flow"<br />
},<br />
[1164] = {<br />
cars = "Uranus",<br />
modelName = "spl_a_u_b",<br />
part = "Spoiler",<br />
partType = "Alien"<br />
},<br />
[1165] = {<br />
cars = "Uranus",<br />
modelName = "fbmp_c_u",<br />
part = "Front Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1166] = {<br />
cars = "Uranus",<br />
modelName = "fbmp_a_u",<br />
part = "Front Bumper",<br />
partType = "Alien"<br />
},<br />
[1167] = {<br />
cars = "Uranus",<br />
modelName = "rbmp_c_u",<br />
part = "Rear Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1168] = {<br />
cars = "Uranus",<br />
modelName = "rbmp_a_u",<br />
part = "Rear Bumper",<br />
partType = "Alien"<br />
},<br />
[1169] = {<br />
cars = "Sultan",<br />
modelName = "fbmp_a_s",<br />
part = "Front Bumper",<br />
partType = "Alien"<br />
},<br />
[1170] = {<br />
cars = "Sultan",<br />
modelName = "fbmp_c_s",<br />
part = "Front Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1171] = {<br />
cars = "Elegy",<br />
modelName = "fbmp_a_l",<br />
part = "Front Bumper",<br />
partType = "Alien"<br />
},<br />
[1172] = {<br />
cars = "Elegy",<br />
modelName = "fbmp_c_l",<br />
part = "Front Bumper",<br />
partType = "X-Flow"<br />
},<br />
[1173] = {<br />
cars = "Jester",<br />
modelName = "fbmp_c_j",<br />
part = "Front Bumper",<br />
partType = "X-Flow"<br />
}<br />
}<br />
</syntaxhighlight><br />
</section><br />
<br />
==All valid upgrades per vehicle (table form)==<br />
<section name="Table (click to expand)" show="false"><br />
<syntaxhighlight lang="lua"><br />
tunning_avalible = {<br />
[400] = { 1008, 1009, 1010, 1013, 1018, 1019, 1020, 1021, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[401] = { 1001, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1146, 1147, 1158, 1162, 1163 },<br />
[402] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[403] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[404] = { 1000, 1002, 1007, 1008, 1009, 1010, 1013, 1016, 1017, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[405] = { 1000, 1001, 1008, 1009, 1010, 1014, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[406] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[407] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[408] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[409] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[410] = { 1001, 1003, 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1021, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[411] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[412] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[413] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[414] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[415] = { 1001, 1003, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[416] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[417] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[418] = { 1002, 1006, 1008, 1009, 1010, 1016, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[419] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[420] = { 1001, 1003, 1004, 1005, 1008, 1009, 1010, 1019, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[421] = { 1000, 1008, 1009, 1010, 1014, 1016, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[422] = { 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[423] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[424] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[425] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[426] = { 1001, 1003, 1004, 1005, 1006, 1008, 1009, 1010, 1019, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[427] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[428] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[429] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[430] = { },<br />
[431] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[432] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[433] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[434] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[436] = { 1001, 1003, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1019, 1020, 1021, 1022, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[437] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[438] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[439] = { 1001, 1003, 1007, 1008, 1009, 1010, 1013, 1017, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[440] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[441] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[442] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[443] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[444] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[445] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[446] = { },<br />
[447] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[448] = { },<br />
[449] = { },<br />
[451] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[452] = { },<br />
[453] = { },<br />
[454] = { },<br />
[455] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[456] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[457] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[458] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[459] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[460] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[461] = { },<br />
[462] = { },<br />
[463] = { },<br />
[464] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[465] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[466] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[467] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[468] = { 1086 },<br />
[469] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[470] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[471] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[472] = { },<br />
[473] = { },<br />
[474] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[475] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[476] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[478] = { 1004, 1005, 1008, 1009, 1010, 1012, 1013, 1020, 1021, 1022, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[479] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[480] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[481] = { },<br />
[482] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[483] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[484] = { },<br />
[485] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[486] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[487] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[488] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[489] = { 1000, 1002, 1004, 1005, 1006, 1008, 1009, 1010, 1013, 1016, 1018, 1019, 1020, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[490] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[491] = { 1003, 1007, 1008, 1009, 1010, 1014, 1017, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[492] = { 1000, 1004, 1005, 1006, 1008, 1009, 1010, 1016, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[493] = { },<br />
[494] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[495] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[496] = { 1001, 1002, 1003, 1006, 1007, 1008, 1009, 1010, 1011, 1017, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143 },<br />
[497] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[498] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[499] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[500] = { 1008, 1009, 1010, 1013, 1019, 1020, 1021, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[501] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[502] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[503] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[504] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[505] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[506] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[507] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[508] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[509] = { },<br />
[510] = { },<br />
[511] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[512] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[513] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[514] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[515] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[516] = { 1000, 1002, 1004, 1007, 1008, 1009, 1010, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[517] = { 1002, 1003, 1007, 1008, 1009, 1010, 1016, 1017, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[518] = { 1001, 1003, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1018, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[519] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[520] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[521] = { },<br />
[522] = { },<br />
[523] = { },<br />
[524] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[525] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[526] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[527] = { 1001, 1007, 1008, 1009, 1010, 1014, 1015, 1017, 1018, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[528] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[529] = { 1001, 1003, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1017, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[530] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[531] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[532] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[533] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[534] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1100, 1101, 1106, 1122, 1123, 1124, 1125, 1126, 1127, 1178, 1179, 1180, 1185 },<br />
[535] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1109, 1110, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121 },<br />
[536] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1103, 1104, 1105, 1107, 1108, 1128, 1181, 1182, 1183, 1184 },<br />
[537] = { },<br />
[538] = { },<br />
[539] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[540] = { 1001, 1004, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1020, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[541] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[542] = { 1008, 1009, 1010, 1014, 1015, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1144, 1145 },<br />
[543] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[544] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[545] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[546] = { 1001, 1002, 1004, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[547] = { 1000, 1003, 1008, 1009, 1010, 1016, 1018, 1019, 1020, 1021, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143 },<br />
[548] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[549] = { 1001, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1017, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[550] = { 1001, 1003, 1004, 1005, 1006, 1008, 1009, 1010, 1018, 1019, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[551] = { 1002, 1003, 1005, 1006, 1008, 1009, 1010, 1016, 1018, 1019, 1020, 1021, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[552] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[553] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[554] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[555] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[556] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[557] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[558] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1163, 1164, 1165, 1166, 1167, 1168 },<br />
[559] = { 1008, 1009, 1010, 1025, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1158, 1159, 1160, 1161, 1162, 1173 },<br />
[560] = { 1008, 1009, 1010, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1138, 1139, 1140, 1141, 1169, 1170 },<br />
[561] = { 1008, 1009, 1010, 1025, 1026, 1027, 1030, 1031, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1154, 1155, 1156, 1157 },<br />
[562] = { 1008, 1009, 1010, 1025, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1146, 1147, 1148, 1149, 1171, 1172 },<br />
[563] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[564] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[565] = { 1008, 1009, 1010, 1025, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1150, 1151, 1152, 1153 },<br />
[566] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[567] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1102, 1129, 1130, 1131, 1132, 1133, 1186, 1187, 1188, 1189 },<br />
[568] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[569] = { },<br />
[570] = { },<br />
[571] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[572] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[573] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[574] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[575] = { 1008, 1009, 1010, 1025, 1042, 1043, 1044, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1099, 1174, 1175, 1176, 1177 },<br />
[576] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1134, 1135, 1136, 1137, 1190, 1191, 1192, 1193 },<br />
[579] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[580] = { 1001, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1020, 1023, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[581] = { },<br />
[582] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[583] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[585] = { 1000, 1002, 1003, 1006, 1007, 1008, 1009, 1010, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[587] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[586] = { },<br />
[588] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[589] = { 1000, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1016, 1017, 1018, 1020, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1144, 1145 },<br />
[590] = { },<br />
[591] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[592] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[593] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[594] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[595] = { },<br />
[596] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[597] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[598] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[599] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[600] = { 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 1017, 1018, 1020, 1022, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[601] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[602] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[603] = { 1001, 1006, 1007, 1008, 1009, 1010, 1017, 1018, 1019, 1020, 1023, 1024, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098, 1142, 1143, 1144, 1145 },<br />
[604] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[605] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[606] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[607] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[608] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[609] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[610] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 },<br />
[611] = { 1008, 1009, 1010, 1025, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1096, 1097, 1098 }<br />
}<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
[[id|ID Lists]]<br />
<br />
[[hu:Vehicle Upgrades]]<br />
[[pl:Vehicle_Upgrades]]<br />
[[it:Miglioramenti Veicoli]]<br />
<br />
[[Category:ID Lists]]</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=CEF_Tutorial&diff=71138
CEF Tutorial
2021-05-31T13:48:01Z
<p>CrosRoad95: </p>
<hr />
<div>This page gives you a brief introduction to CEF.<br />
<br />
=What is CEF?=<br />
CEF stands for '''C'''hromium '''E'''mbedded '''F'''ramework and is a framework for embedding Chromium-based browsers in other applications - in our case MTA. CEF is based on Google's Chromium project so it is also a fast, secure and stable web engine.<br />
<br />
You can find more information about CEF on CEF's GoogleCode project page: https://bitbucket.org/chromiumembedded/cef<br />
<br />
=The basics=<br />
Creating a new browser is really simple. Let's open YouTube for example:<br />
<syntaxhighlight lang="lua"><br />
-- Create a new remote browser (size is 800*600px) with transparency enabled<br />
local browser = createBrowser(800, 600, true, true)<br />
<br />
-- "Wait" for the browser (this is necessary because CEF runs in a secondary thread and hence requires the 'asynchronous' event mechanism)<br />
addEventHandler("onClientBrowserCreated", browser,<br />
function()<br />
-- We're ready to load the URL now (the source of this event is the browser that has been created)<br />
loadBrowserURL(source, "https://youtube.com/")<br />
end<br />
)</syntaxhighlight><br />
This example does not require any domain requests as YouTube is whitelisted by default. More about domain requests below.<br />
<br />
=Domain request system=<br />
In order to prevent people from abusing the possibilities CEF offers, we decided to introduce a request system.<br />
This means the domain you want to load has to meet at least one of the following requirements:<br />
*it is whitelisted globally by the MTA team (you can create a post in [this topic] to suggest a new domain to be whitelisted) - '''**TODO: Add forum URL here**'''<br />
*the domain was requested via requestBrowserDomains/Browser.requestDomains and accepted by the player '''before'''<br />
*the domain is on the user's whitelist (MTA settings => Tab: Browser => Whitelist)<br />
<br />
Apart from these options, a domain might be blacklisted due to malicious content. Such domains cannot be requested.<br />
<br />
=Local vs remote mode=<br />
There are two modes CEF can run in:<br />
<br />
Characteristics of local mode:<br />
*you '''can''' execute Javascript code without any restriction (See: [[executeBrowserJavascript]])<br />
*you '''can''' only load websites stored in the resource folder<br />
*you '''cannot''' load remote content<br />
<br />
Characteristics of remote mode:<br />
*you '''cannot''' execute Javascript code<br />
*you '''can''' only load remote content<br />
*keep in mind that either loading remote websites or Javascript on remote websites can be disabled in the MTA settings<br />
<br />
Changing the mode after the browser was created is not possible due to technical reasons.<br />
<br />
=Resource management=<br />
==How to load local HTML files==<br />
Loading local HTML files works similar to loading images.<br />
<br />
Add your HTML files to your meta.xml through the file tag:<br />
<syntaxhighlight lang="xml"><br />
<file src="html/myAwesomeUI.html"/></syntaxhighlight><br />
<br />
==How to load local resources in local HTML files==<br />
Imagine you want to load an image or play a video from your MTA resource. This is possible via a custom URI scheme named '''''"http://mta/"'''''<br />
<br />
===Example===<br />
This examples shows how to play a video. Note that you have to enable OOP.<br />
====Lua====<br />
<syntaxhighlight lang="lua"><br />
-- Create a browser (local mode is also required to access local data)<br />
local webView = Browser(640, 480, true, true)<br />
<br />
addEventHandler("onClientBrowserCreated", webView,<br />
function()<br />
<br />
-- Load HTML UI<br />
webView:loadURL("http://mta/local/html/myVideo.html")<br />
<br />
end<br />
)</syntaxhighlight><br />
====meta.xml====<br />
<syntaxhighlight lang="lua"><br />
<file src="html/myVideo.html"/><br />
<file src="media/myVideo.webm"/></syntaxhighlight><br />
====HTML====<br />
This is the most interesting part:<br />
<syntaxhighlight lang="html"><br />
<!DOCTYPE HTML><br />
<html><br />
<head></head><br />
<body><br />
<video width="640" height="480" controls><br />
<source src="http://mta/local/myVideo.webm" type="video/webm"/><br />
</video><br />
</body><br />
</html></syntaxhighlight><br />
<br />
=Lua <==> Javascript communication=<br />
First of all, communication between Lua and Javascript is only available in local mode due to security reasons.<br />
<br />
==Lua to Javascript==<br />
Lua to javascript is pretty easy as you can execute Javascript code from Lua using [[executeBrowserJavascript]].<br />
<br />
So, a bit Lua code around it and you have got the first direction:<br />
* https://github.com/Jusonex/mtasa_cef_tools/blob/master/webui/src/WebWindow.lua#L180-189<br />
* https://github.com/Jusonex/mtasa_cef_tools/blob/master/webui/src/mtaevents.js#L9-L15<br />
<br />
==Javascript to Lua==<br />
You are able to trigger a client event via the Javascript method ''triggerEvent'' which is part of the static class/namespace ''mta''.<br />
The syntax is as follows:<br />
<syntaxhighlight lang="javascript"><br />
mta.triggerEvent(string event, var parameter1, var parameter2, var parameter3, ...)<br />
</syntaxhighlight><br />
The source of this event is always the browser element that triggered the event.<br />
<br />
An example is available here:<br />
* https://github.com/Jusonex/mtasa_cef_tools/blob/master/webui/examples/html/ui2.html#L66<br />
* https://github.com/Jusonex/mtasa_cef_tools/blob/master/webui/examples/Main.lua#L35-L40<br />
<br />
=Debugging=<br />
The ''web development mode'' can be enabled as follows (type it in the client's F8 console):<br />
<syntaxhighlight lang="lua">start runcode<br />
crun setDevelopmentMode(true, true)<br />
debugscript 3</syntaxhighlight><br />
Now, you should be able to see web errors and blocked domains/URLs in the debug window at the bottom.<br />
<br />
=Things you should keep in mind while working with CEF=<br />
You should always keep in mind that some modern browser features are not available on some computers.<br />
This is for example true for '''WebGL'''.<br />
<br />
Another problematic feature is '''Adobe Flash'''. Adobe Flash is enabled by default, but you should avoid using it due to the fact that plugins can be disabled in the settings on the one hand (Java is disabled completely by the way) and Flash is very restrictive on the other hand. Restrictive means it runs in a separate process uses a very old interface and offers therefore just a few ways to control it.<br />
As a consequence, you cannot control the volume of flash objects. Fortunately, HTML5 is an even better replacement and provides very good audio and video interface (http://www.w3schools.com/tags/ref_av_dom.asp) which even supports 3D sound (@all bored people among us: Feel free to write a 3D sound 'wrapper' that maps the GTA onto HTML5 coordinates :P).<br />
<br />
=Advanced usage=<br />
Since our CEF implementation does not do z-ordering by default, you have to provide your own z-ordering mechanism.<br />
You can find a basic implementation of such a mechanism here: https://github.com/Jusonex/mtasa_cef_tools<br />
There are also a few utility functions that allow you to integrate these classes easily into your own object-oriented UI system.<br />
I'll provide some code to use CEF along with CEGUI soon too.<br />
<br />
=Performance=<br />
Creating lots of browsers does not influence MTA directly (except the fact MTA has to copy the texture data in the main/GTA thread due to technical restrictions), because one part of CEF runs in another process and the other part in a secondary thread.<br />
So if you do not want to show the browser, it is definitely the best to destroy the browser. If you cannot destroy the browser (imagine you have to save the website's state for some reason), you can save a lot of resources by disabling rendering via [[setBrowserRenderingPaused]]. This will stop CEF from rendering new frames/processing input and MTA from copying the texture data.<br />
<br />
=Troubleshooting=<br />
===google.com doesn't work (even though I requested google.com)===<br />
Google redirects to a country-specific website by default. If you want to prevent Google from doing this, load the following URL: https://www.google.com/ncr<br />
<br />
=3-rd party=<br />
<br />
==Typescript==<br />
Typescript declaration for mta functions:<br />
<br />
<syntaxhighlight lang="ts"><br />
declare var mta: {<br />
triggerEvent(event: string): void;<br />
triggerEvent(event: string, ...any): void;<br />
};<br />
</syntaxhighlight><br />
<br />
==React==<br />
Example how to call react function from mta:<br />
1. Create a hook:<br />
<br />
<syntaxhighlight lang="ts"><br />
const useMta = () => {<br />
const dispatch = yourDispatcherHere();<br />
const w = window as any;<br />
w.MtaPrefixSomeName = () => dispatch(dispatchFunction());<br />
}<br />
export default useMta;<br />
</syntaxhighlight><br />
2. Add this hook to main App component.<br />
<br />
3. Call from lua:<br />
<br />
<syntaxhighlight lang="lua"><br />
function callReactFunction(name, arg)<br />
local name = string.format(name, "[^a-zA-Z0-9]", "");<br />
local code;<br />
if(arg~= nil)then<br />
code = string.format("MtaPrefix%s(%q)",name, arg)<br />
else<br />
code = string.format("MtaPrefix%s()",name)<br />
end<br />
return executeBrowserJavascript(theBrowser, code)<br />
end<br />
</syntaxhighlight><br />
Use of prefix let you call only mta specific functions with bare minimum of validation required.<br />
option `%q` puts quotes around a string argument's value. Read more at https://www.gammon.com.au/scripts/doc.php?lua=string.format<br />
<br />
=Scripting functions=<br />
{{CEF_functions}}<br />
=Scripting events=<br />
{{CEF_events}}<br />
<br />
[[Category:Tutorials]]<br />
<br />
[[pt-br:Tutorial_CEF]]</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=SetColPolygonHeight&diff=69563
SetColPolygonHeight
2021-03-02T15:05:54Z
<p>CrosRoad95: </p>
<hr />
<div>{{Server client function}}<br />
__NOTOC__<br />
{{New feature/item|3.0160|1.5.8|20807|This function is used to change the height of an existing [[createColPolygon|colshape polygon]].<br />
By default, a colshape polygon is infinitely tall.}}<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool setColPolygonHeight( colshape shape, float floor, float ceil ) <br />
</syntaxhighlight> <br />
{{OOP||[[colshape]]:setHeight|}}<br />
<br />
===Required Arguments=== <br />
*'''shape:''' The [[colshape]] polygon<br />
*'''floor:''' The polygon floor (lowest Z coordinate). Parse ''false'' to reset this value to infinitely tall in negative z coord, equivalent of "math.min".<br />
*'''ceil:''' The polygon ceiling (highest Z coordinate). Parse ''false'' to reset this value to infinitely tall in positive z coord, equivalent of "math.max".<br />
<br />
===Returns===<br />
Returns ''true'' if the polygon was changed, ''false'' if invalid arguments were passed.<br />
<br />
==Example==<br />
This example sets every polygon colshape's max heigh to 50 units once resource starts.<br />
<section name="Server side script" class="server" show="true"><br />
<syntaxhighlight lang="lua"><br />
function setPolygonsHeight()<br />
for i, v in ipairs(getElementsByType("colshape")) do<br />
if (getColShapeType(v) == 4) then -- if it's a polygon colshape do it otherwise don't<br />
setColPolygonHeight(v, false, 50)<br />
end<br />
end<br />
end<br />
addEventHandler("onResourceStart", resourceRoot, setPolygonsHeight)<br />
</syntaxhighlight><br />
</section><br />
<br />
==Requirements==<br />
{{Requirements|1.5.8-9.20807|1.5.8-9.20807|}}<br />
<br />
==See Also==<br />
{{Collision_shape_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=SetColPolygonHeight&diff=68264
SetColPolygonHeight
2021-01-17T08:40:30Z
<p>CrosRoad95: Created page with "{{Server client function}} __NOTOC__ {{New feature/item|3.0158|1.5.7|20397|This function is used to change height of an existing colshape polygon.}} ==Sy..."</p>
<hr />
<div>{{Server client function}}<br />
__NOTOC__<br />
{{New feature/item|3.0158|1.5.7|20397|This function is used to change height of an existing [[createColPolygon|colshape polygon]].}}<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool setColPolygonHeight( colshape shape, float fFloor, float fCeil) <br />
</syntaxhighlight> <br />
{{OOP||[[colshape]]:setHeight|}}<br />
<br />
===Required Arguments=== <br />
*'''shape:''' The [[colshape]] polygon<br />
*'''fFloor:''' The polygon floor<br />
*'''fCeil:''' The polygon ceil<br />
<br />
===Returns===<br />
Returns ''true'' if the polygon was changed, ''false'' if invalid arguments were passed.<br />
<br />
==Example==<br />
<syntaxhighlight lang="lua"><br />
TODO<br />
</syntaxhighlight><br />
<br />
==Requirements==<br />
{{Requirements|1.5.7-9.20397|1.5.7-9.20397|}}<br />
<br />
==See Also==<br />
{{Collision_shape_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Scripting_Tips&diff=68164
Scripting Tips
2021-01-05T20:56:09Z
<p>CrosRoad95: /* Speed comparison between structural and OOP scripting */</p>
<hr />
<div>This page contains a variety of things that knowing, make life easier for MTA scripters.<br />
<br />
== General Lua ==<br />
* The ''infinite loop / too long execution error'' which aborts execution can be disabled with ''debug.sethook(nil)''<br />
* Be careful when looping a table where you intend to delete multiple rows, if 2 of them are in a row the 2nd one will get skipped! You must loop the table backwards (reverse ipairs). For example: ''for i = #table, 1, -1 do''<br />
* Rather than having if checks inside if checks inside if checks, consider using ''return'' for example ''if (not ready) then return false end''<br />
* Keep event, variable & function names short but understandable - longer names will make the file larger in size. In client files, this will increase download time.<br />
* Remember that 'false' boolean has a value - If you want to delete a variable or element/account data, use 'nil' instead - this will reduce memory and disk usage (minuscule optimization, only notable on larger servers)<br />
<br />
== MTA Scripting ==<br />
* Remember that 99% of the time it's a bug in your script, not an MTA bug! Don't report something to GitHub Issues until you're absolutely certain the bug can be reproduced with a small piece of script.<br />
* As MTA already has so many functions and events virtually everything you want to do is already possible, as long as you're willing to do the work! You'll find better solutions to problems as there are many ways to achieve the same thing as long as you know all the functions and events.<br />
* If a script is getting too complicated, try putting back-end stuff in another file so the main script calls the functions in the 2nd one. For example rather than having meaningless things like ''vehicleTable[vehicle][7]'' in the main file, put that in a function in the 2nd file and have the main file call a meaningfully named function so rather than seeing a useless ''7'' you'd see something like ''getFuel'' and although this might take longer to set-up you'll save time in the long run as you'll spend less time being confused when you come back to it in a weeks time to debug a problem.<br />
* Your client side scripts can cause desync if you're not careful, try to keep the psychical world equal with every player. For example if your script creates a client side object make sure your script will create it for everyone nearby, else people will be wondering why a player appears to be constantly floating and falling.<br />
* Instead of using ''onClientResourceStart'' or ''onResourceStart'' events attached to ''resourceRoot'' like this:<br />
<syntaxhighlight lang="lua">function warnPeopleThatThisResourceStarted()<br />
outputChatBox("The resource " .. getResourceName(resource) .. " has just started!", 0, 255, 0)<br />
end<br />
addEventHandler("onClientResourceStart", resourceRoot, warnPeopleThatThisResourceStarted)</syntaxhighlight><br />
You can also use this outside of any function:<br />
<syntaxhighlight lang="lua">outputChatBox("The resource " .. getResourceName(resource) .. " has just started!", 0, 255, 0)</syntaxhighlight><br />
And the result will be the same, because Lua executes every instruction in every script file of a resource when it starts.<br />
* string.dump produces unsigned compiled Lua code which is not allowed for security reasons. The only way to transport code now is by using the source code. e.g.:<br />
<syntaxhighlight lang="lua">exampleFunction = [===[<br />
return param<br />
]===]<br />
<br />
local loadedFunction = loadstring(exampleFunction)</syntaxhighlight><br />
<br />
== MTA Scripting - Element IDs Being Reused ==<br />
* If your script is covered in [[isTimer]] and [[isElement]] checks to hide debug warnings from deleted elements not being dereferenced (making the variable nil) you will regret it when that element ID or timer pointer has to be re-used by MTA in a weeks time and your script starts acting strangely and you won't have a clue why. Dereference destroyed elements and disconnected players!<br />
* Why would MTA reuse it in a weeks time? Everything has a userdata value whether it's a function or an element, there is a limited amount of these available meaning that eventually the server will be forced to use the same userdata value twice, as long as whatever that userdata value was for is no longer valid. This could happen within hours, weeks or even never depending on how many elements are being created and destroyed by your scripts.<br />
* For example if you have a race server that has 100 objects in every map and the map was changing every 5 minutes your server would go through at least 1200 an hour, 28,800 a day, 201,600 a week in userdata values, it can't keep going up and up though eventually it will have to reuse the same userdata values and as long as you're dereferencing in your scripts, it won't be a problem.<br />
<br />
The is an example of a script which fails to dereference, because when the player quits their userdata value remains in the table, but what if in a weeks time another player joins and they get assigned the same userdata value?<br />
<syntaxhighlight lang="lua"><br />
<br />
local admins = {}<br />
local secretPasswordOnlyAdminsShouldKnow = "12345678"<br />
<br />
function adminLogin()<br />
if (hasObjectPermissionTo(source, "command.ban", false)) then<br />
admins[source] = true<br />
end<br />
end<br />
addEventHandler("onPlayerLogin", root, adminLogin)<br />
<br />
function cmdGetSecretPassword(plr)<br />
if (not admins[plr]) then<br />
return false<br />
end<br />
outputChatBox("The secret password is "..secretPasswordOnlyAdminsShouldKnow, plr)<br />
end<br />
addCommandHandler("getsecretpass", cmdGetSecretPassword)<br />
</syntaxhighlight><br />
<br />
Some random player who joins in a weeks time gets the same userdata value as an admin, that player can now use "getsecretpass". Solution? De-reference on destruction!<br />
<syntaxhighlight lang="lua"><br />
<br />
function onQuit()<br />
admins[source] = nil<br />
end<br />
addEventHandler("onPlayerQuit", root, onQuit)<br />
</syntaxhighlight><br />
<br />
== Server Performance ==<br />
* Server lagging? Check [[Debugging#Debugging_Performance_Issues|this page of debugging performance issues]]<br />
* Using resourceRoot in event handlers for events from clients is much more efficient than using root.<br />
* Try to be efficient, but if what you're doing is too time consuming or complex, is it really efficient?<br />
* It's much more efficient to [[SetElementHealth]] and [[setElementRotation]] on a player client side, consider a client event all your server scripts can call to set a players health.<br />
* Unless you have hundreds of players, don't worry about making little optimizations, check ''performancebrowser'' or ''ipb'' (ingame performancebrowser) and make sure no resource is using significantly more than the others.<br />
<br />
== Client Performance ==<br />
* The biggest cause of client script CPU usage is anything done in onClient/Pre/Hud/Render because it is called so often. For example if you have a script which calls dxDrawLine3D 20 times, 60 times a second, if those lines are only in 1 part of the map, consider adding a [[getDistanceBetweenPoints3D]] check between the local player and the general area that those lines are in and if they're no where near the player, don't draw the lines.<br />
* Another thing that gets called a lot and could therefore be quite consuming if not careful are events like [[onClientPlayerWeaponFire]] and [[onClientPlayerDamage]] so any scripts that use these should only be bound to the necessary elements (such as localPlayer instead of root) and run the simplest if statements for example if you wanted to handle a certain weapon being fired in a certain dimension it's better to check weapon first as that's a simple weaponID == x rather than getElementDimension(source) == y.<br />
* Start checking variables since least aggravating. Example, first do simple checks: interior, dimension, distance, then check elementDatas, exports etc.<br />
<br />
== Speed comparison between local and global variables ==<br />
<br />
=== Slower ===<br />
<br />
<syntaxhighlight lang="lua"><br />
<br />
start = getTickCount()<br />
a = 1<br />
for i=1,10000000 do<br />
a = 1<br />
end<br />
stop = getTickCount()<br />
print("global", stop - start ) -- more than 500ms<br />
</syntaxhighlight><br />
=== Faster ===<br />
<syntaxhighlight lang="lua"><br />
start = getTickCount()<br />
local b = 1<br />
for i=1,10000000 do<br />
b = 1<br />
end<br />
stop = getTickCount()<br />
print("local", stop - start ) -- less than 200ms<br />
</syntaxhighlight><br />
<br />
== Speed comparison between structural and OOP scripting ==<br />
=== Slower ===<br />
<syntaxhighlight lang="lua"><br />
start = getTickCount()<br />
a = 1<br />
for i=1,1000000 do<br />
a = localPlayer.position<br />
end<br />
stop = getTickCount()<br />
print("variable", stop - start ) -- more than 1500ms<br />
</syntaxhighlight><br />
=== Faster ===<br />
<syntaxhighlight lang="lua"><br />
start = getTickCount()<br />
b = nil<br />
for i=1,1000000 do<br />
b = getElementPosition(localPlayer)<br />
end<br />
stop = getTickCount()<br />
print("structural", stop - start ) -- less than 200ms<br />
</syntaxhighlight></div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Scripting_Tips&diff=68163
Scripting Tips
2021-01-05T20:55:58Z
<p>CrosRoad95: fix typo, then -> than</p>
<hr />
<div>This page contains a variety of things that knowing, make life easier for MTA scripters.<br />
<br />
== General Lua ==<br />
* The ''infinite loop / too long execution error'' which aborts execution can be disabled with ''debug.sethook(nil)''<br />
* Be careful when looping a table where you intend to delete multiple rows, if 2 of them are in a row the 2nd one will get skipped! You must loop the table backwards (reverse ipairs). For example: ''for i = #table, 1, -1 do''<br />
* Rather than having if checks inside if checks inside if checks, consider using ''return'' for example ''if (not ready) then return false end''<br />
* Keep event, variable & function names short but understandable - longer names will make the file larger in size. In client files, this will increase download time.<br />
* Remember that 'false' boolean has a value - If you want to delete a variable or element/account data, use 'nil' instead - this will reduce memory and disk usage (minuscule optimization, only notable on larger servers)<br />
<br />
== MTA Scripting ==<br />
* Remember that 99% of the time it's a bug in your script, not an MTA bug! Don't report something to GitHub Issues until you're absolutely certain the bug can be reproduced with a small piece of script.<br />
* As MTA already has so many functions and events virtually everything you want to do is already possible, as long as you're willing to do the work! You'll find better solutions to problems as there are many ways to achieve the same thing as long as you know all the functions and events.<br />
* If a script is getting too complicated, try putting back-end stuff in another file so the main script calls the functions in the 2nd one. For example rather than having meaningless things like ''vehicleTable[vehicle][7]'' in the main file, put that in a function in the 2nd file and have the main file call a meaningfully named function so rather than seeing a useless ''7'' you'd see something like ''getFuel'' and although this might take longer to set-up you'll save time in the long run as you'll spend less time being confused when you come back to it in a weeks time to debug a problem.<br />
* Your client side scripts can cause desync if you're not careful, try to keep the psychical world equal with every player. For example if your script creates a client side object make sure your script will create it for everyone nearby, else people will be wondering why a player appears to be constantly floating and falling.<br />
* Instead of using ''onClientResourceStart'' or ''onResourceStart'' events attached to ''resourceRoot'' like this:<br />
<syntaxhighlight lang="lua">function warnPeopleThatThisResourceStarted()<br />
outputChatBox("The resource " .. getResourceName(resource) .. " has just started!", 0, 255, 0)<br />
end<br />
addEventHandler("onClientResourceStart", resourceRoot, warnPeopleThatThisResourceStarted)</syntaxhighlight><br />
You can also use this outside of any function:<br />
<syntaxhighlight lang="lua">outputChatBox("The resource " .. getResourceName(resource) .. " has just started!", 0, 255, 0)</syntaxhighlight><br />
And the result will be the same, because Lua executes every instruction in every script file of a resource when it starts.<br />
* string.dump produces unsigned compiled Lua code which is not allowed for security reasons. The only way to transport code now is by using the source code. e.g.:<br />
<syntaxhighlight lang="lua">exampleFunction = [===[<br />
return param<br />
]===]<br />
<br />
local loadedFunction = loadstring(exampleFunction)</syntaxhighlight><br />
<br />
== MTA Scripting - Element IDs Being Reused ==<br />
* If your script is covered in [[isTimer]] and [[isElement]] checks to hide debug warnings from deleted elements not being dereferenced (making the variable nil) you will regret it when that element ID or timer pointer has to be re-used by MTA in a weeks time and your script starts acting strangely and you won't have a clue why. Dereference destroyed elements and disconnected players!<br />
* Why would MTA reuse it in a weeks time? Everything has a userdata value whether it's a function or an element, there is a limited amount of these available meaning that eventually the server will be forced to use the same userdata value twice, as long as whatever that userdata value was for is no longer valid. This could happen within hours, weeks or even never depending on how many elements are being created and destroyed by your scripts.<br />
* For example if you have a race server that has 100 objects in every map and the map was changing every 5 minutes your server would go through at least 1200 an hour, 28,800 a day, 201,600 a week in userdata values, it can't keep going up and up though eventually it will have to reuse the same userdata values and as long as you're dereferencing in your scripts, it won't be a problem.<br />
<br />
The is an example of a script which fails to dereference, because when the player quits their userdata value remains in the table, but what if in a weeks time another player joins and they get assigned the same userdata value?<br />
<syntaxhighlight lang="lua"><br />
<br />
local admins = {}<br />
local secretPasswordOnlyAdminsShouldKnow = "12345678"<br />
<br />
function adminLogin()<br />
if (hasObjectPermissionTo(source, "command.ban", false)) then<br />
admins[source] = true<br />
end<br />
end<br />
addEventHandler("onPlayerLogin", root, adminLogin)<br />
<br />
function cmdGetSecretPassword(plr)<br />
if (not admins[plr]) then<br />
return false<br />
end<br />
outputChatBox("The secret password is "..secretPasswordOnlyAdminsShouldKnow, plr)<br />
end<br />
addCommandHandler("getsecretpass", cmdGetSecretPassword)<br />
</syntaxhighlight><br />
<br />
Some random player who joins in a weeks time gets the same userdata value as an admin, that player can now use "getsecretpass". Solution? De-reference on destruction!<br />
<syntaxhighlight lang="lua"><br />
<br />
function onQuit()<br />
admins[source] = nil<br />
end<br />
addEventHandler("onPlayerQuit", root, onQuit)<br />
</syntaxhighlight><br />
<br />
== Server Performance ==<br />
* Server lagging? Check [[Debugging#Debugging_Performance_Issues|this page of debugging performance issues]]<br />
* Using resourceRoot in event handlers for events from clients is much more efficient than using root.<br />
* Try to be efficient, but if what you're doing is too time consuming or complex, is it really efficient?<br />
* It's much more efficient to [[SetElementHealth]] and [[setElementRotation]] on a player client side, consider a client event all your server scripts can call to set a players health.<br />
* Unless you have hundreds of players, don't worry about making little optimizations, check ''performancebrowser'' or ''ipb'' (ingame performancebrowser) and make sure no resource is using significantly more than the others.<br />
<br />
== Client Performance ==<br />
* The biggest cause of client script CPU usage is anything done in onClient/Pre/Hud/Render because it is called so often. For example if you have a script which calls dxDrawLine3D 20 times, 60 times a second, if those lines are only in 1 part of the map, consider adding a [[getDistanceBetweenPoints3D]] check between the local player and the general area that those lines are in and if they're no where near the player, don't draw the lines.<br />
* Another thing that gets called a lot and could therefore be quite consuming if not careful are events like [[onClientPlayerWeaponFire]] and [[onClientPlayerDamage]] so any scripts that use these should only be bound to the necessary elements (such as localPlayer instead of root) and run the simplest if statements for example if you wanted to handle a certain weapon being fired in a certain dimension it's better to check weapon first as that's a simple weaponID == x rather than getElementDimension(source) == y.<br />
* Start checking variables since least aggravating. Example, first do simple checks: interior, dimension, distance, then check elementDatas, exports etc.<br />
<br />
== Speed comparison between local and global variables ==<br />
<br />
=== Slower ===<br />
<br />
<syntaxhighlight lang="lua"><br />
<br />
start = getTickCount()<br />
a = 1<br />
for i=1,10000000 do<br />
a = 1<br />
end<br />
stop = getTickCount()<br />
print("global", stop - start ) -- more than 500ms<br />
</syntaxhighlight><br />
=== Faster ===<br />
<syntaxhighlight lang="lua"><br />
start = getTickCount()<br />
local b = 1<br />
for i=1,10000000 do<br />
b = 1<br />
end<br />
stop = getTickCount()<br />
print("local", stop - start ) -- less than 200ms<br />
</syntaxhighlight><br />
<br />
== Speed comparison between structural and OOP scripting ==<br />
=== Slower ===<br />
<syntaxhighlight lang="lua"><br />
start = getTickCount()<br />
a = 1<br />
for i=1,1000000 do<br />
a = localPlayer.position<br />
end<br />
stop = getTickCount()<br />
print("variable", stop - start ) -- more then 1500ms<br />
</syntaxhighlight><br />
=== Faster ===<br />
<syntaxhighlight lang="lua"><br />
start = getTickCount()<br />
b = nil<br />
for i=1,1000000 do<br />
b = getElementPosition(localPlayer)<br />
end<br />
stop = getTickCount()<br />
print("structural", stop - start ) -- less then 200ms<br />
</syntaxhighlight></div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Template:Useful_Classes&diff=67400
Template:Useful Classes
2020-09-21T15:47:05Z
<p>CrosRoad95: </p>
<hr />
<div>[[Category:Useful Classes]]<br />
*[[Singleton]] <span style="color:gray; font-family:'Georgia',sans-serif; font-size:smaller;">» This class allows to restrict the instantiation of a specific class to one object.</span><br />
*[[CThread]] <span style="color:gray; font-family:'Georgia',sans-serif; font-size:smaller;">» This class represents a simple coroutine manager which can be used to limit method calls / loop.</span><br />
*[[Importer]] <span style="color:gray; font-family:'Georgia',sans-serif; font-size:smaller;">» This class make easy to use exported functions.</span><br />
*[[Observable]] <span style="color:gray; font-family:'Georgia',sans-serif; font-size:smaller;">» Observable variables. Call function on variable value change.</span></div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Observable&diff=67399
Observable
2020-09-21T15:42:32Z
<p>CrosRoad95: Created page with "{{Useful Class}} __NOTOC__ This class allows you to watch for variables changes. Call observable variable to push new state. Author: CrosRoad95 Contact discord: mtasa.com/di..."</p>
<hr />
<div>{{Useful Class}}<br />
__NOTOC__<br />
This class allows you to watch for variables changes.<br />
<br />
Call observable variable to push new state.<br />
<br />
Author: CrosRoad95<br />
Contact discord: mtasa.com/discord<br />
==Requirements==<br />
<br />
OOP turn on<br />
<br />
==Code==<br />
<syntaxhighlight lang="lua"><br />
observable = {}<br />
<br />
function observable:onChange(callback)<br />
self.callback = callback<br />
end<br />
<br />
function observable:__tostring()<br />
return self.value<br />
end<br />
<br />
function observable:__call(newState)<br />
if(self.value == newState)then<br />
return false<br />
end<br />
local oldValue = self.value;<br />
self.value = newState;<br />
if(self.callback)then<br />
self.callback(oldValue, self.value)<br />
end<br />
return true;<br />
end<br />
<br />
function observable:create(defaultValue)<br />
local t = { value = defaultValue, observators = {} }<br />
setmetatable(t, self)<br />
self.__index = self<br />
return t<br />
end<br />
<br />
function watch(callback, ...)<br />
for i,v in ipairs({...})do<br />
v:onChange(function(old, new) <br />
if(callback)then<br />
callback(i, old, new)<br />
end<br />
end)<br />
end<br />
end<br />
</syntaxhighlight><br />
<br />
==Example 1==<br />
How it works<br />
<syntaxhighlight lang="lua"><br />
a = observable:create("asdf") -- "asdf" is a default value.<br />
b = observable:create(10)<br />
<br />
watch(function(index, prvValue, newValue) -- called every time observable value has change.<br />
print("index",index, "change", prvValue, "=> ",newValue)<br />
end, a, b) -- pass variables you want to watch<br />
<br />
a(20) -- index 1 change asdf => 20<br />
b(30) -- index 2 change 10 => 30<br />
a("aaa") -- index 1 change 20 => aaa<br />
<br />
print("value:", a) -- in this case it will print "aaa"<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
{{Useful_Classes}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Importer&diff=67398
Importer
2020-09-21T15:35:23Z
<p>CrosRoad95: </p>
<hr />
<div>{{Useful Class}}<br />
__NOTOC__<br />
This function allow to import functions from other scripts.<br />
Author: CrosRoad95<br />
Contact discord: mtasa.com/discord<br />
==Requirements==<br />
<br />
OOP turn on<br />
<br />
==Code==<br />
<syntaxhighlight lang="lua"><br />
importer={}<br />
importer.__index = importer<br />
function importer:import(functionsToImport)<br />
assert(functionsToImport:len()>0,"specify what you want to import")<br />
local impr = {}<br />
setmetatable(impr,importer)<br />
impr.scripts=functionsToImport<br />
return impr<br />
end<br />
function importer:from(script)<br />
local res=getResourceFromName(script)<br />
assert(res,"script doesnt exists")<br />
local functions=res:getExportedFunctions()<br />
assert(#functions>0,"script must contain exports")<br />
local importThis={}<br />
if(self.scripts=="*")then<br />
importThis=functions<br />
else<br />
local tbsplit=split(self.scripts,",")<br />
for i,v in ipairs(functions)do<br />
for ii,vv in ipairs(tbsplit)do<br />
if(string.find(v,vv))then<br />
table.insert(importThis,v)<br />
end<br />
end<br />
end<br />
end<br />
for i,v in ipairs(importThis)do<br />
_G[v]=function(...)<br />
return call(res,v,...)<br />
end<br />
end<br />
end<br />
function import(...)<br />
return importer:import(...)<br />
end<br />
</syntaxhighlight><br />
<br />
==Example 1==<br />
Import specified functions<br />
<syntaxhighlight lang="lua"><br />
import("function1,function2"):from("myScript") -- import functions "function1" and "function2" from script "myScript"<br />
-- now "function1()" is same as "exports.myScript:function()"<br />
function1("test")<br />
</syntaxhighlight><br />
<br />
==Example 2==<br />
Import functions which contain string<br />
<syntaxhighlight lang="lua"><br />
import("function,otherFunctions"):from("myScript") -- import functions contain "function" in name, in this example import "function1" and "function2" from script "myScript"<br />
function1("test")<br />
</syntaxhighlight><br />
<br />
==Example 3==<br />
Import all functions<br />
<syntaxhighlight lang="lua"><br />
import("*"):from("myScript") -- import all functions, in this example import "function1" and "function2" from script "myScript"<br />
function1("test")<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
{{Useful_Classes}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsCreateWorld&diff=67395
PhysicsCreateWorld
2020-09-18T11:55:47Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
<br />
{{Note|Availiable only in custom fork of mta. see https://github.com/multitheftauto/mtasa-blue/pull/1246 }}<br />
<br />
{{Client function}}<br />
Creates physics world with default settings.<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
physics physicsCreateWorld( [ float gravityX, float gravityY, float gravityZ ] ) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''gravity:''' gravitation used for simulation. Default: 0,0, -9.81<br />
<br />
===Returns===<br />
*'''physics''' world used for simulation.<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
physics = physicsCreateWorld()<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=GetMoonSize&diff=66665
GetMoonSize
2020-05-20T17:07:22Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__<br />
{{Server client function}}<br />
{{New feature/item|3.0132|1.3.1|5063|<br />
This function returns the moon size.<br />
{{Note|The function will return ''false'' server-side if moon size has not been set before the function is called.}}<br />
<br />
}}<br />
<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
int getMoonSize ()<br />
</syntaxhighlight><br />
<br />
===Returns===<br />
Returns a integer being the moon size that is currently set, depending on which side it is used.<br />
<br />
==Example==<br />
<section name="Server" class="server" show="true"><br />
This example will tell the moon size to everyone when the resource is started.<br />
<syntaxhighlight lang="lua"><br />
function handleResourceStart( )<br />
outputChatBox( string.format( "Server's moon size is set to %d", getMoonSize() ) )<br />
end<br />
addEventHandler( "onResourceStart", resourceRoot, handleResourceStart )</syntaxhighlight><br />
</section><br />
<br />
==Requirements==<br />
{{Requirements|1.3.1-9.05063|1.3.1-9.05063}}<br />
<br />
==See Also==<br />
{{Client_world_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=GetRainLevel&diff=66664
GetRainLevel
2020-05-20T17:06:05Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__<br />
{{Server client function}}<br />
This function is used to get the current rain level.<br />
{{Note|The function will return ''false'' server-side if rain level has not been set before the function is called.}}<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
float getRainLevel( )<br />
</syntaxhighlight><br />
<br />
===Returns===<br />
Returns the rain level as a number.<br />
<br />
==Example== <br />
<section name="Client" class="client" show="true"><br />
'''Example:''' Sets the rain (So it can detect it) before returning it. (In this case, when resource starts.)<br />
<syntaxhighlight lang="lua"><br />
addEventHandler("onClientResourceStart", getResourceRootElement(), function()<br />
setRainLevel(math.random(5))<br />
end)<br />
function returnRain()<br />
local rain = getRainlevel()<br />
if(rain >= 1) then<br />
outputChatBox("Looks like it's going to be a rainy day!",255,130,130,false)<br />
else<br />
outputChatBox("Surprisingly dry!",255,130,130,false)<br />
end<br />
end<br />
addCommandHandler("rain", returnRain)<br />
</syntaxhighlight><br />
</section><br />
<br />
<section name="Server" class="server" show="true"><br />
'''Example:''' Sets the rain (So it can detect it) before returning it. (In this case, when resource starts.)<br />
<syntaxhighlight lang="lua"><br />
addEventHandler("onResourceStart", getResourceRootElement(), function()<br />
setRainLevel(math.random(5))<br />
end)<br />
<br />
function returnRain(player)<br />
local rain = getRainlevel()<br />
if(rain >= 1) then<br />
outputChatBox("Looks like it's going to be a rainy day!",player,255,130,130,false)<br />
else<br />
outputChatBox("Surprisingly dry!",player,255,130,130,false)<br />
end<br />
end<br />
addCommandHandler("rain", returnRain)<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
{{World functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=GetRainLevel&diff=66663
GetRainLevel
2020-05-20T17:05:51Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__<br />
{{Server client function}}<br />
This function is used to get the current rain level.<br />
<br />
{{Note|The function will return ''false'' server-side if sun size has not been set before the function is called.}}<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
float getRainLevel( )<br />
</syntaxhighlight><br />
<br />
===Returns===<br />
Returns the rain level as a number.<br />
<br />
==Example== <br />
<section name="Client" class="client" show="true"><br />
'''Example:''' Sets the rain (So it can detect it) before returning it. (In this case, when resource starts.)<br />
<syntaxhighlight lang="lua"><br />
addEventHandler("onClientResourceStart", getResourceRootElement(), function()<br />
setRainLevel(math.random(5))<br />
end)<br />
function returnRain()<br />
local rain = getRainlevel()<br />
if(rain >= 1) then<br />
outputChatBox("Looks like it's going to be a rainy day!",255,130,130,false)<br />
else<br />
outputChatBox("Surprisingly dry!",255,130,130,false)<br />
end<br />
end<br />
addCommandHandler("rain", returnRain)<br />
</syntaxhighlight><br />
</section><br />
<br />
<section name="Server" class="server" show="true"><br />
'''Example:''' Sets the rain (So it can detect it) before returning it. (In this case, when resource starts.)<br />
<syntaxhighlight lang="lua"><br />
addEventHandler("onResourceStart", getResourceRootElement(), function()<br />
setRainLevel(math.random(5))<br />
end)<br />
<br />
function returnRain(player)<br />
local rain = getRainlevel()<br />
if(rain >= 1) then<br />
outputChatBox("Looks like it's going to be a rainy day!",player,255,130,130,false)<br />
else<br />
outputChatBox("Surprisingly dry!",player,255,130,130,false)<br />
end<br />
end<br />
addCommandHandler("rain", returnRain)<br />
</syntaxhighlight><br />
</section><br />
<br />
==See Also==<br />
{{World functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=GetSunSize&diff=66662
GetSunSize
2020-05-20T17:04:45Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
{{Server client function}}<br />
This function is used to get the size of the sun.<br />
{{Note|The function will return ''false'' server-side if sun size has not been set before the function is called.}}<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
float getSunSize ( )<br />
</syntaxhighlight><br />
<br />
===Returns===<br />
Returns the size of the sun as a number, false if the size of the sun is at its default.<br />
<br />
==Example== <br />
This example lets any player get the size of the sun like /getsunsize<br />
<syntaxhighlight lang="lua"><br />
function commandGetSunSize(player, command)<br />
local size = getSunSize()<br />
if (size) then<br />
outputChatBox("The current size of the sun is "..size..".", player, 0, 255, 0)<br />
else<br />
outputChatBox("The size of the sun is normal.", player, 0, 255, 0)<br />
end<br />
end<br />
addCommandHandler("getsunsize", commandGetSunSize)<br />
</syntaxhighlight><br />
==See Also==<br />
{{World functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=GetWindVelocity&diff=66661
GetWindVelocity
2020-05-20T16:53:43Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__<br />
{{Server client function}}<br />
This function gets the wind velocity in San Andreas.<br />
{{Note|The function will return ''false'' server-side if wind velocity has not been set before the function is called.}}<br />
==Syntax==<br />
<syntaxhighlight lang="lua"><br />
int, int, int getWindVelocity ( )<br />
</syntaxhighlight><br />
<br />
===Returns===<br />
*'''velocityX''': The velocity on the x-coordinate or false if the wind velocity is default.<br />
*'''velocityY''': The velocity on the y-coordinate or nil if the wind velocity is default.<br />
*'''velocityZ''': The velocity on the z-coordinate or nil if the wind velocity is default.<br />
<br />
==Example==<br />
This example returns the wind velocity to a player if they use the command 'getwindvelocity'.<br />
<syntaxhighlight lang="lua"><br />
function commandGetWindVelocity(player, command)<br />
local vx, vy, vz = getWindVelocity()<br />
if (vx) then<br />
outputChatBox("Wind Velocity X:"..vx.." Y:"..vy.." Z:"..vz, player, 255, 255, 0)<br />
else<br />
outputChatBox("Wind velocity is default.", player, 255, 255, 0)<br />
end<br />
end<br />
addCommandHandler("getwindvelocity", commandGetWindVelocity)<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
{{Client_world_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=User:CrosRoad95&diff=65217
User:CrosRoad95
2020-02-20T06:40:57Z
<p>CrosRoad95: </p>
<hr />
<div>List of functions i'm working on:<br />
<br />
{{Client_physics_functions}}<br />
<br />
Future ideas for physics:<br />
# gear constraint<br />
# wheels<br />
# detailed raycast<br />
# copying shape<br />
# respawn point for rigid body, if will not activated for some time, got moved to respawn point<br />
# attaching rigid body to mta object<br />
# multimaterial triangle mesh<br />
# options to build gta collision function:<br />
## - what models should be created as rigid body, do they should have set respawn point?<br />
## - reuse shapes, create new for duplicated models<br />
## - don't create compound shape if not needed<br />
# soft bodies<br />
# drawing debug only for specified rigid body/static collision/shape<br />
# debug mode to render only rigids, only static collision or both<br />
# fast 3d line<br />
# profiling<br />
# quering physics element<br />
# world size option to automatic get rid of rigid bodies which fall off world<br />
# creating static or rigids collisions from objects created by createObject<br />
# add rest of properties for everything<br />
# improve current functions<br />
## triangle mesh should accept `verteX, vertex, vertex, verteX, vertex, vertex` or {verteX, vertex, vertex, verteX, vertex, vertex,} or {{verteX, vertex, vertex}, {verteX, vertex, vertex}}<br />
# multithreading physics simulation<br />
# add missing shapes: btBox2dShape, btConvex2dShape, btEmptyShape, btGImpactCompoundShape, btGImpactMeshShape, btMinkowskiSumShape, CbtMultiSphereShape, CbtMultimaterialTriangleMeshShape, btPlaneShape, CbtScaledBvhTriangleMeshShape, <br />
##</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=User:CrosRoad95&diff=65216
User:CrosRoad95
2020-02-20T06:23:29Z
<p>CrosRoad95: </p>
<hr />
<div>List of functions i'm working on:<br />
<br />
{{Client_physics_functions}}<br />
<br />
Future ideas for physics:<br />
# gear constraint<br />
# wheels<br />
# detailed raycast<br />
# copying shape<br />
# respawn point for rigid body??<br />
# attaching rigid body to mta object<br />
# multimaterial triangle mesh<br />
# options to build gta collision function:<br />
## - what models should be created as rigid body, do they should have set respawn point?<br />
## - reuse shapes, create new for duplicated models<br />
## - don't create compound shape if not needed<br />
# soft bodies<br />
# drawing debug only for specified rigid body/static collision/shape<br />
# debug mode to render only rigids, only static collision or both<br />
# fast 3d line<br />
# profiling<br />
# quering physics element<br />
# world size option to automatic get rid of rigid bodies which fall off world</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_properties&diff=65215
Physics properties
2020-02-19T20:54:32Z
<p>CrosRoad95: /* Physics properties */</p>
<hr />
<div>===Physics properties===<br />
used in<br />
*[[physicsSetProperties]]<br />
*[[physicsGetProperties]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Support || Access || Parametrs || Description<br />
|-<br />
| mass || rigid-body || set, get || float mass || Changes mass of rigid body.<br />
|-<br />
| position || rigid-body, static-collision || set, get || float x, float y, float z || Sets/gets position.<br />
|-<br />
| position || constraint || get || float x, float y, float z || Returns avarge position of two rigids.<br />
|-<br />
| rotation || rigid-body, static-collision || set, get || float rx, float ry, float rz || Sets/gets rotation.<br />
|-<br />
| velocity || rigid-body || set, get || float velocityX, float velocityY, float velocityZ|| Sets/gets velocity.<br />
|-<br />
| angularvelocity || rigid-body || set, get || float velocityX, float velocityY, float velocityZ|| Sets/gets angular velocity.<br />
|-<br />
| sleepingthresholds || rigid-body || set, get || float velocity, float angularVelocity || Sets how slow rigid body have to move, to go sleep.<br />
|-<br />
| simulationenabled || physics-world || set, get || bool enabled = true || Enable/disable simulation.<br />
|-<br />
| simulationsubsteps || physics-world || set, get || int subSteps = 10 || Between 1 and 256, sets how long and how precise collision detection should be.<br />
|-<br />
| restitution || rigid-body || set, get || float value|| todo<br />
|-<br />
| scale || physics-shape, rigid-body, static-collision || set, get || float scaleX, float scaleY, float scaleZ || Sets/gets scale, if rigid of static collision as parametr, their shape scale got set/get. You can't scale per rigid/static collision<br />
|-<br />
| debugcolor || physics-shape, rigid-body, static-collision || set, get || color theColor / boolean false resets color || Changes debug color<br />
|-<br />
| filtermask || todo || set, get || todo || todo<br />
|-<br />
| filtergroup || todo || set, get || todo || todo<br />
|-<br />
| stiffness|| todo || set, get || todo || todo<br />
|-<br />
| size || shape|| set, get || float sizeX, float sizeY, float sizeZ || Changes size of "box" shape type.<br />
|-<br />
| radius || todo || set, get || todo || todo<br />
|-<br />
| height || todo || set, get || todo || todo<br />
|-<br />
| boundingbox || todo || get || todo || todo<br />
|-<br />
| boundingsphere || todo || get || todo || todo<br />
|-<br />
| gravity || physics-world || set, get || float gravityX, float gravityY, float gravityZ|| Changes gravity of the simulation<br />
|-<br />
| usecontinuous || physics-world || set, get || bool bEnabled || False by default, enable detection of rigid body which happened between two simulation steps. Cause increased simulation time, prevents small shapes fly through thick surfaces<br />
|-<br />
| motionthreshold || todo || set, get || todo || todo<br />
|-<br />
| sweptsphereradius || todo || set, get || todo || todo<br />
|-<br />
| pivota || todo || set, get || todo || todo<br />
|-<br />
| pivotb || todo || set, get || todo || todo<br />
|-<br />
| lowerlinlimit || todo || set, get || todo || todo<br />
|-<br />
| upperlinlimit || todo || set, get || todo || todo<br />
|-<br />
| loweranglimit || todo || set, get || todo || todo<br />
|-<br />
| upperanglimit || todo || set, get || todo || todo<br />
|-<br />
| breakingimpulsethreshold || todo || set, get || todo || todo<br />
|-<br />
| appliedimpulse || todo || set, get || todo || todo<br />
|-<br />
| jointfeedback || todo || set, get || todo || todo<br />
|-<br />
| constraintbroken || todo || set, get || todo || todo<br />
|-<br />
| triggercollisionevents || physics-world || set, get || bool bEnabled = false || Cause physics world starts to trigger collision events. Don't enable if you don't use them. Can cause spam.<br />
|-<br />
| triggerconstraintevents || physics-world || set, get || bool bEnabled = false || Cause physics world starts to trigger constraints events. Don't enable if you don't use them. Can cause spam.<br />
|-<br />
| rigidbodya || todo || set, get || todo || todo<br />
|-<br />
| rigidbodyb|| todo || set, get || todo || todo<br />
|-<br />
| sleep || todo || set, get || todo || todo<br />
|-<br />
| wantssleeping || todo || set, get || todo || todo<br />
|-<br />
| iscompound || todo || set, get || todo || todo<br />
|-<br />
| iscocave || todo || set, get || todo || todo<br />
|-<br />
| isconvex || todo || set, get || todo || todo<br />
|-<br />
| isconvex2d || todo || set, get || todo || todo<br />
|-<br />
| isinfinite || todo || set, get || todo || todo<br />
|-<br />
| isnonmoving || todo || set, get || todo || todo<br />
|-<br />
| ispolyhedral || todo || set, get || todo || todo<br />
|-<br />
| issoftbody || todo || set, get || todo || todo<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsIsElement&diff=65214
PhysicsIsElement
2020-02-19T19:16:14Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} Returns whatever physics-element exists ==Syntax== <syntaxhighlight lang="lua"> bool physicsIsElement(physics-element thePhysicsElement)..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Returns whatever physics-element exists<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool physicsIsElement(physics-element thePhysicsElement) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''thePhysicsElement:''' physics element: shape, constraint, rigid body, static collision<br />
<br />
===Returns===<br />
True if physics element exists<br />
<br />
==Example==<br />
<br />
if shape got destroyed, static collisions, rigid body and its constraints will destroyed too, this example prove it.<br />
<syntaxhighlight lang="lua"><br />
local shape = physicsCreateShape(physics, "box", 1)<br />
local rb = physicsCreateRigidBody(shape)<br />
local col = physicsCreateStaticCollision(shape)<br />
local const = physicsCreateConstraint("pointtopoint", rb, 0,0,0)<br />
iprint("isElement before", physicsIsElement(shape), physicsIsElement(rb), physicsIsElement(col), physicsIsElement(const)) -- true, true, true, true<br />
physicsDestroy(shape)<br />
iprint("isElement after", physicsIsElement(shape), physicsIsElement(rb), physicsIsElement(col), physicsIsElement(const)) -- false, false, false ,false<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Template:Client_physics_functions&diff=65213
Template:Client physics functions
2020-02-19T19:13:50Z
<p>CrosRoad95: </p>
<hr />
<div>*[[physicsCreateWorld]]<br />
*[[physicsDestroy]]<br />
*[[physicsCreateShape]]<br />
*[[physicsCreateShapeFromModel]]<br />
*[[physicsCreateRigidBody]]<br />
*[[physicsCreateStaticCollision]]<br />
*[[physicsCreateConstraint]]<br />
*[[physicsAddChildShape]]<br />
*[[physicsRemoveChildShape]]<br />
*[[physicsGetChildShapes]]<br />
*[[physicsSetChildShapeOffsets]]<br />
*[[physicsGetChildShapeOffsets]]<br />
*[[physicsGetShapes]]<br />
*[[physicsGetRigidBodies]]<br />
*[[physicsGetStaticCollisions]]<br />
*[[physicsGetConstraints]]<br />
*[[physicsSetProperties]]<br />
*[[physicsGetProperties]]<br />
*[[physicsDrawDebug]]<br />
*[[physicsSetDebugMode]]<br />
*[[physicsBuildCollisionFromGTA]]<br />
*[[physicsApplyVelocity]]<br />
*[[physicsApplyVelocityForce]]<br />
*[[physicsApplyAngularVelocity]]<br />
*[[physicsApplyAngularVelocityForce]]<br />
*[[physicsApplyDamping]]<br />
*[[physicsRayCast]]<br />
*[[physicsShapeCast]]<br />
*[[physicsGetElementType]]<br />
*[[physicsIsElement]]</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsGetElementType&diff=65212
PhysicsGetElementType
2020-02-19T19:11:58Z
<p>CrosRoad95: /* Example */</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Returns type of physics-element<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
string physicsGetElementType(physics-element thePhysicsElement) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''thePhysicsElement:''' physics element: shape, constraint, rigid body, static collision<br />
<br />
===Returns===<br />
Name of physics element, "shape", "rigidbody", "staticcollision", "constraint"<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
local shape = physicsCreateShape(physics, "box", 1)<br />
local rb = physicsCreateRigidBody(shape)<br />
local col = physicsCreateStaticCollision(shape)<br />
local const = physicsCreateConstraint("pointtopoint", rb, 0,0,0)<br />
iprint("shape: ",physicsGetElementType(shape)) -- shape<br />
iprint("rigidbody: ",physicsGetElementType(rb)) -- rigidbody<br />
iprint("staticcollision: ",physicsGetElementType(col)) -- staticcollision<br />
iprint("constraint: ",physicsGetElementType(const)) -- constraint<br />
iprint("invalid: ",physicsGetElementType(physics)) -- false<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsGetElementType&diff=65211
PhysicsGetElementType
2020-02-19T19:05:07Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} Returns type of physics-element ==Syntax== <syntaxhighlight lang="lua"> string physicsGetElementType(physics-element thePhysicsElement)..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Returns type of physics-element<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
string physicsGetElementType(physics-element thePhysicsElement) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''thePhysicsElement:''' physics element: shape, constraint, rigid body, static collision<br />
<br />
===Returns===<br />
Name of physics element, "shape", "rigidbody", "staticcollision", "constraint"<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
local shape = physicsCreateShape(physics, "box", 1)<br />
local rb = physicsCreateRigidBody(shape)<br />
local col = physicsCreateStaticCollision(shape)<br />
local const = physicsCreateConstraint("pointtopoint", rb, 0,0,0)<br />
iprint("shape: ",physicsGetElementType(shape)) -- shape<br />
iprint("rigidbody: ",physicsGetElementType(shape)) -- rigidbody<br />
iprint("staticcollision: ",physicsGetElementType(col)) -- staticcollision<br />
iprint("constraint: ",physicsGetElementType(const)) -- constraint<br />
iprint("invalid: ",physicsGetElementType(physics)) -- false<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Template:Client_physics_functions&diff=65210
Template:Client physics functions
2020-02-19T19:02:25Z
<p>CrosRoad95: </p>
<hr />
<div>*[[physicsCreateWorld]]<br />
*[[physicsDestroy]]<br />
*[[physicsCreateShape]]<br />
*[[physicsCreateShapeFromModel]]<br />
*[[physicsCreateRigidBody]]<br />
*[[physicsCreateStaticCollision]]<br />
*[[physicsCreateConstraint]]<br />
*[[physicsAddChildShape]]<br />
*[[physicsRemoveChildShape]]<br />
*[[physicsGetChildShapes]]<br />
*[[physicsSetChildShapeOffsets]]<br />
*[[physicsGetChildShapeOffsets]]<br />
*[[physicsGetShapes]]<br />
*[[physicsGetRigidBodies]]<br />
*[[physicsGetStaticCollisions]]<br />
*[[physicsGetConstraints]]<br />
*[[physicsSetProperties]]<br />
*[[physicsGetProperties]]<br />
*[[physicsDrawDebug]]<br />
*[[physicsSetDebugMode]]<br />
*[[physicsBuildCollisionFromGTA]]<br />
*[[physicsApplyVelocity]]<br />
*[[physicsApplyVelocityForce]]<br />
*[[physicsApplyAngularVelocity]]<br />
*[[physicsApplyAngularVelocityForce]]<br />
*[[physicsApplyDamping]]<br />
*[[physicsRayCast]]<br />
*[[physicsShapeCast]]<br />
*[[physicsGetElementType]]</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_properties&diff=65207
Physics properties
2020-02-19T15:54:58Z
<p>CrosRoad95: /* Physics properties */</p>
<hr />
<div>===Physics properties===<br />
used in<br />
*[[physicsSetProperties]]<br />
*[[physicsGetProperties]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Support || Access || Parametrs || Description<br />
|-<br />
| mass || rigid-body || set, get || float mass || Changes mass of rigid body.<br />
|-<br />
| position || rigid-body, static-collision || set, get || float x, float y, float z || Sets/gets position.<br />
|-<br />
| position || constraint || get || float x, float y, float z || Returns avarge position of two rigids.<br />
|-<br />
| rotation || rigid-body, static-collision || set, get || float rx, float ry, float rz || Sets/gets rotation.<br />
|-<br />
| velocity || rigid-body || set, get || float velocityX, float velocityY, float velocityZ|| Sets/gets velocity.<br />
|-<br />
| angularvelocity || rigid-body || set, get || float velocityX, float velocityY, float velocityZ|| Sets/gets angular velocity.<br />
|-<br />
| sleepingthresholds || rigid-body || set, get || float velocity, float angularVelocity || Sets how slow rigid body have to move, to go sleep.<br />
|-<br />
| simulationenabled || physics-world || set, get || bool enabled = true || Enable/disable simulation.<br />
|-<br />
| restitution || rigid-body || set, get || float value|| todo<br />
|-<br />
| scale || physics-shape, rigid-body, static-collision || set, get || float scaleX, float scaleY, float scaleZ || Sets/gets scale<br />
|-<br />
| debugcolor || physics-shape, rigid-body, static-collision || set, get || color theColor / boolean false resets color || Changes debug color<br />
|-<br />
| filtermask || todo || set, get || todo || todo<br />
|-<br />
| filtergroup || todo || set, get || todo || todo<br />
|-<br />
| stiffness|| todo || set, get || todo || todo<br />
|-<br />
| size || shape|| set, get || float sizeX, float sizeY, float sizeZ || Changes size of "box" shape type.<br />
|-<br />
| radius || todo || set, get || todo || todo<br />
|-<br />
| height || todo || set, get || todo || todo<br />
|-<br />
| boundingbox || todo || get || todo || todo<br />
|-<br />
| boundingsphere || todo || get || todo || todo<br />
|-<br />
| gravity || physics-world || set, get || float gravityX, float gravityY, float gravityZ|| Changes gravity of the simulation<br />
|-<br />
| usecontinuous || physics-world || set, get || bool bEnabled || False by default, enable detection of rigid body which happened between two simulation steps. Cause increased simulation time, prevents small shapes fly through thick surfaces<br />
|-<br />
| motionthreshold || todo || set, get || todo || todo<br />
|-<br />
| sweptsphereradius || todo || set, get || todo || todo<br />
|-<br />
| pivota || todo || set, get || todo || todo<br />
|-<br />
| pivotb || todo || set, get || todo || todo<br />
|-<br />
| lowerlinlimit || todo || set, get || todo || todo<br />
|-<br />
| upperlinlimit || todo || set, get || todo || todo<br />
|-<br />
| loweranglimit || todo || set, get || todo || todo<br />
|-<br />
| upperanglimit || todo || set, get || todo || todo<br />
|-<br />
| breakingimpulsethreshold || todo || set, get || todo || todo<br />
|-<br />
| appliedimpulse || todo || set, get || todo || todo<br />
|-<br />
| jointfeedback || todo || set, get || todo || todo<br />
|-<br />
| constraintbroken || todo || set, get || todo || todo<br />
|-<br />
| triggercollisionevents || physics-world || set, get || bool bEnabled = false || Cause physics world starts to trigger collision events. Don't enable if you don't use them. Can cause spam.<br />
|-<br />
| triggerconstraintevents || physics-world || set, get || bool bEnabled = false || Cause physics world starts to trigger constraints events. Don't enable if you don't use them. Can cause spam.<br />
|-<br />
| rigidbodya || todo || set, get || todo || todo<br />
|-<br />
| rigidbodyb|| todo || set, get || todo || todo<br />
|-<br />
| sleep || todo || set, get || todo || todo<br />
|-<br />
| wantssleeping || todo || set, get || todo || todo<br />
|-<br />
| iscompound || todo || set, get || todo || todo<br />
|-<br />
| iscocave || todo || set, get || todo || todo<br />
|-<br />
| isconvex || todo || set, get || todo || todo<br />
|-<br />
| isconvex2d || todo || set, get || todo || todo<br />
|-<br />
| isinfinite || todo || set, get || todo || todo<br />
|-<br />
| isnonmoving || todo || set, get || todo || todo<br />
|-<br />
| ispolyhedral || todo || set, get || todo || todo<br />
|-<br />
| issoftbody || todo || set, get || todo || todo<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsBuildCollisionFromGTA&diff=65206
PhysicsBuildCollisionFromGTA
2020-02-19T15:17:58Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} Makes gta collision get copied into bullet physics collision world. Doesn't load areas thats are not streamed in ( don't have loaded collisions..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Makes gta collision get copied into bullet physics collision world.<br />
Doesn't load areas thats are not streamed in ( don't have loaded collisions )<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool physicsBuildCollisionFromGTA( physics thePhysics, [float x, float y, float z, float radius ] ) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''x, y, z, radius:''' area you want to load.<br />
<br />
If position and radius passed, only this area got loaded, if not, flag got set to automatically scan all gta models every short period of time and load it for you.<br />
<br />
===Returns===<br />
True if success, false otherwise<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsCreateConstraint&diff=65203
PhysicsCreateConstraint
2020-02-19T15:10:55Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} Creates connection between rigid body and other rigid body or specified position. ==Syntax== <syntaxhighlight lang="lua"> physics-constraint p..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Creates connection between rigid body and other rigid body or specified position.<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
physics-constraint physicsCreateConstraint(constraint-type theConstraintType [, disableCollisionsBetweenLinkedBodies = true], physics-rigid-body rigidBodyA [, physics-rigid-body rigidBodyB], mixed ) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''theConstraintType:''' "pointtopoint", "hidge", "fixed", "slider", see [[Physics constraints]]<br />
*'''disableCollisionsBetweenLinkedBodies:''' disable collision between two rigid bodies, useful when rigids are close to each other.<br />
*'''rigidBodyA:''' first rigid body,<br />
*'''rigidBodyB:''' second rigid body, optional, can be replaced with position in some cases.<br />
*'''mixed:''' depends on constraint type<br />
===Returns===<br />
*'''physics''' world used for simulation.<br />
<br />
==Example==<br />
<br />
Spawns capsule and attach invisible line to the rigid body.<br />
<syntaxhighlight lang="lua"><br />
local capsule = physicsCreateShape(physics, "capsule", 0.5, 1.2)<br />
local capsulerb = physicsCreateRigidBody(capsule );<br />
physicsCreateConstraint("pointtopoint", capsulerb, 0,0,0)<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsCreateShapeFromModel&diff=65196
PhysicsCreateShapeFromModel
2020-02-19T14:34:00Z
<p>CrosRoad95: /* Example */</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Creates shape from model in specific physics world. Model must be streamed in ( orignal gtasa models counts as stream in )<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
physics-shape physicsCreateShapeFromModel(physics thePhysics, int model) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''thePhysics:''' Physics world.<br />
*'''model:''' object model.<br />
<br />
===Returns===<br />
*'''shape''' compound shape made of triangle mesh, boxes and spheres.<br />
<br />
==Example==<br />
<br />
Spawns hay, tree, barn, hay stack and fence as rigid body near by 0,0,0 coords<br />
<syntaxhighlight lang="lua"><br />
function createRigidBodyFromModel(model, x, y, z)<br />
local shape = physicsCreateShapeFromModel(physics, model)<br />
if(shape)then<br />
local rigid = physicsCreateRigidBody(shape)<br />
physicsSetProperties(rigid, "position", x, y, z)<br />
end<br />
end<br />
<br />
createRigidBodyFromModel(3276, 0,0,10)<br />
createRigidBodyFromModel(672, 20,0,10)<br />
createRigidBodyFromModel(12918, -20,0,10)<br />
createRigidBodyFromModel(3374, 0,20,10)<br />
createRigidBodyFromModel(12919, 0,-30,10)<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsCreateShape&diff=65190
PhysicsCreateShape
2020-02-18T21:30:53Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Creates physics shape used for static or dynamic collision detection<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
physics-shape physicsCreateShape(physics thePhysics, shape-type theShapeType, mixed)<br />
<br />
physics-shape physicsCreateShape(physics thePhysics, "box", float size)<br />
physics-shape physicsCreateShape(physics thePhysics, "box", float sizeX, sizeY, sizeZ)<br />
physics-shape physicsCreateShape(physics thePhysics, "sphere", float radius)<br />
physics-shape physicsCreateShape(physics thePhysics, "capsule", float radius, float height)<br />
physics-shape physicsCreateShape(physics thePhysics, "cone", float radius, float height)<br />
physics-shape physicsCreateShape(physics thePhysics, "cylinder", float radius, float height)<br />
physics-shape physicsCreateShape(physics thePhysics, "heightfieldterrain", int sizeX, int sizeY [, table heightData ] )<br />
physics-shape physicsCreateShape(physics thePhysics, "compound", int initialChildCapacity = 0)<br />
physics-shape physicsCreateShape(physics thePhysics, "trianglemesh", vector3 vertexA, vector3 vertexB, vector3 vertexC, ...)<br />
physics-shape physicsCreateShape(physics thePhysics, "convexhull", vector3 pointA, vector3 pointB, vector3, pointC, ...)<br />
</syntaxhighlight><br />
<br />
*'''heightfieldterrain:''' minimum size is 3x3, and maximum 8192x8192. By default terrain is flat, you can pass default height after size, each float represents height of next vertex.<br />
*'''trianglemesh:''' each of three vectors creates single triangle, use n*3 vectors to create n triangles.<br />
*'''compound:''' can contain up to 8192 child shapes.<br />
*'''convexhull:''' require at least 3 points.<br />
<br />
===Required Arguments=== <br />
*'''thePhysics:''' physics world<br />
*'''theShapeType:''' shape, availiable types "box", "sphere", "capsule", "cone", "cylinder", "heightfieldterrain", "compound", "trianglemesh", "convexhull",<br />
<br />
===Returns===<br />
*'''physics-shape''' to use in future functions<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
local terrainData = {<br />
3,3,3,3,<br />
3,0,0,3,<br />
3,0,0,3,<br />
3,3,3,3,<br />
}<br />
local terrainShape = physicsCreateShape(physics, "heightfieldterrain", 4,4, terrainData)<br />
local terrain = physicsCreateStaticCollision(terrainShape)<br />
physicsSetProperties(terrain, "position", 0,0,5)<br />
physicsSetProperties(terrain, "scale", 5,5,1) -- in terrain, sets mesh density, now mesh has size 20x20units, one vertex every 5 units<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsCreateShape&diff=65189
PhysicsCreateShape
2020-02-18T20:41:10Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Creates physics shape used for static or dynamic collision detection<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
physics-shape physicsCreateShape(physics thePhysics, shape-type theShapeType, mixed)<br />
<br />
physics-shape physicsCreateShape(physics thePhysics, "box", float size)<br />
physics-shape physicsCreateShape(physics thePhysics, "box", float sizeX, sizeY, sizeZ)<br />
physics-shape physicsCreateShape(physics thePhysics, "sphere", float radius)<br />
physics-shape physicsCreateShape(physics thePhysics, "capsule", float radius, float height)<br />
physics-shape physicsCreateShape(physics thePhysics, "cone", float radius, float height)<br />
physics-shape physicsCreateShape(physics thePhysics, "cylinder", float radius, float height)<br />
physics-shape physicsCreateShape(physics thePhysics, "heightfieldterrain", int sizeX, int sizeY [, float height,float height, ... )<br />
physics-shape physicsCreateShape(physics thePhysics, "compound", int initialChildCapacity = 0)<br />
physics-shape physicsCreateShape(physics thePhysics, "trianglemesh", vector3 vertexA, vector3 vertexB, vector3 vertexC, ...)<br />
physics-shape physicsCreateShape(physics thePhysics, "convexhull", vector3 pointA, vector3 pointB, vector3, pointC, ...)<br />
</syntaxhighlight><br />
<br />
*'''heightfieldterrain:''' minimum size is 3x3, and maximum 8192x8192. By default terrain is flat, you can pass default height after size, each float represents height of next vertex.<br />
*'''trianglemesh:''' each of three vectors creates single triangle, use n*3 vectors to create n triangles.<br />
*'''compound:''' can contain up to 8192 child shapes.<br />
*'''convexhull:''' require at least 3 points.<br />
<br />
===Required Arguments=== <br />
*'''thePhysics:''' physics world<br />
*'''theShapeType:''' shape, availiable types "box", "sphere", "capsule", "cone", "cylinder", "heightfieldterrain", "compound", "trianglemesh", "convexhull",<br />
<br />
===Returns===<br />
*'''physics-shape''' to use in future functions<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_debug_mode&diff=65186
Physics debug mode
2020-02-18T17:34:35Z
<p>CrosRoad95: /* Physics debug modes */</p>
<hr />
<div>===Physics debug modes===<br />
used in<br />
*[[physicsSetDebugMode]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Parametrs || Description<br />
|-<br />
| nodebug || bool || If set to true, disable all debug modes<br />
|-<br />
| drawwireframe || bool || enables/disables wireframe rendering<br />
|-<br />
| drawaabb|| bool || shows bounding boxes of rigid bodies and static collisions<br />
|-<br />
| drawfeaturestext || bool || todo, not implemented yet<br />
|-<br />
| drawcontactpoints || bool || draws little yellow lines in points of contact<br />
|-<br />
| nodeactivation || bool || cause all rigid bodies are all time activated<br />
|-<br />
| nohelptext || bool || todo, not implemented yet<br />
|-<br />
| drawtext || bool || todo, not implemented yet<br />
|-<br />
| profiletimings || bool || todo, not implemented yet<br />
|-<br />
| enablesatcomparison || bool || todo<br />
|-<br />
| disablebulletlcp || bool || todo<br />
|-<br />
| enableccd || bool || todo<br />
|-<br />
| drawconstraints || bool || todo<br />
|-<br />
| drawconstraintlimits || bool || todo<br />
|-<br />
| fastwireframe || bool || todo<br />
|-<br />
| drawnormals || bool || draws normals<br />
|-<br />
| drawframes || bool || todo<br />
|-<br />
| linewidth || float || changes width of debugging line<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_debug_mode&diff=65185
Physics debug mode
2020-02-18T17:24:54Z
<p>CrosRoad95: /* Physics debug modes */</p>
<hr />
<div>===Physics debug modes===<br />
used in<br />
*[[physicsSetDebugMode]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Parametrs || Description<br />
|-<br />
| nodebug || bool || If set to true, disable all debug modes<br />
|-<br />
| drawwireframe || bool || todo<br />
|-<br />
| drawaabb|| bool || todo<br />
|-<br />
| drawfeaturestext || bool || todo, not implemented yet<br />
|-<br />
| drawcontactpoints || bool || todo<br />
|-<br />
| nodeactivation || bool || cause all rigid bodies are all time activated<br />
|-<br />
| nohelptext || bool || todo<br />
|-<br />
| drawtext || bool || todo<br />
|-<br />
| profiletimings || bool || todo<br />
|-<br />
| enablesatcomparison || bool || todo<br />
|-<br />
| disablebulletlcp || bool || todo<br />
|-<br />
| enableccd || bool || todo<br />
|-<br />
| drawconstraints || bool || todo<br />
|-<br />
| drawconstraintlimits || bool || todo<br />
|-<br />
| fastwireframe || bool || todo<br />
|-<br />
| drawnormals || bool || draws normals<br />
|-<br />
| drawframes || bool || todo<br />
|-<br />
| linewidth || float || changes width of debugging line<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_debug_mode&diff=65184
Physics debug mode
2020-02-18T17:24:39Z
<p>CrosRoad95: /* Physics debug modes */</p>
<hr />
<div>===Physics debug modes===<br />
used in<br />
*[[physicsSetDebugMode]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Parametrs || Description<br />
|-<br />
| nodebug || bool || If set to true, disable all debug modes<br />
|-<br />
| drawwireframe || bool || todo<br />
|-<br />
| drawaabb|| bool || todo<br />
|-<br />
| drawfeaturestext || bool || todo<br />
|-<br />
| drawcontactpoints || bool || todo<br />
|-<br />
| nodeactivation || bool || cause all rigid bodies are all time activated<br />
|-<br />
| nohelptext || bool || todo<br />
|-<br />
| drawtext || bool || todo<br />
|-<br />
| profiletimings || bool || todo<br />
|-<br />
| enablesatcomparison || bool || todo<br />
|-<br />
| disablebulletlcp || bool || todo<br />
|-<br />
| enableccd || bool || todo<br />
|-<br />
| drawconstraints || bool || todo<br />
|-<br />
| drawconstraintlimits || bool || todo<br />
|-<br />
| fastwireframe || bool || todo<br />
|-<br />
| drawnormals || bool || draws normals<br />
|-<br />
| drawframes || bool || todo<br />
|-<br />
| linewidth || float || changes width of debugging line<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_debug_mode&diff=65183
Physics debug mode
2020-02-18T17:06:29Z
<p>CrosRoad95: </p>
<hr />
<div>===Physics debug modes===<br />
used in<br />
*[[physicsSetDebugMode]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Parametrs || Description<br />
|-<br />
| nodebug || bool || If set to true, resets debugging mode<br />
|-<br />
| drawwireframe || bool || todo<br />
|-<br />
| drawaabb|| bool || todo<br />
|-<br />
| drawfeaturestext || bool || todo<br />
|-<br />
| drawcontactpoints || bool || todo<br />
|-<br />
| nodeactivation || bool || cause all rigid bodies are all time activated<br />
|-<br />
| nohelptext || bool || todo<br />
|-<br />
| drawtext || bool || todo<br />
|-<br />
| profiletimings || bool || todo<br />
|-<br />
| enablesatcomparison || bool || todo<br />
|-<br />
| disablebulletlcp || bool || todo<br />
|-<br />
| enableccd || bool || todo<br />
|-<br />
| drawconstraints || bool || todo<br />
|-<br />
| drawconstraintlimits || bool || todo<br />
|-<br />
| fastwireframe || bool || todo<br />
|-<br />
| drawnormals || bool || draws normals<br />
|-<br />
| drawframes || bool || todo<br />
|-<br />
| linewidth || float || changes width of debugging line<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=Physics_debug_mode&diff=65182
Physics debug mode
2020-02-18T17:05:44Z
<p>CrosRoad95: Created page with "===Physics properties=== used in *physicsSetDebugMode {|class="wikitable sortable" |- ! Name || Parametrs || Description |- | nodebug || bool || If set to true, resets de..."</p>
<hr />
<div>===Physics properties===<br />
used in<br />
*[[physicsSetDebugMode]]<br />
<br />
{|class="wikitable sortable"<br />
|-<br />
! Name || Parametrs || Description<br />
|-<br />
| nodebug || bool || If set to true, resets debugging mode<br />
|-<br />
| drawwireframe || bool || todo<br />
|-<br />
| drawaabb|| bool || todo<br />
|-<br />
| drawfeaturestext || bool || todo<br />
|-<br />
| drawcontactpoints || bool || todo<br />
|-<br />
| nodeactivation || bool || cause all rigid bodies are all time activated<br />
|-<br />
| nohelptext || bool || todo<br />
|-<br />
| drawtext || bool || todo<br />
|-<br />
| profiletimings || bool || todo<br />
|-<br />
| enablesatcomparison || bool || todo<br />
|-<br />
| disablebulletlcp || bool || todo<br />
|-<br />
| enableccd || bool || todo<br />
|-<br />
| drawconstraints || bool || todo<br />
|-<br />
| drawconstraintlimits || bool || todo<br />
|-<br />
| fastwireframe || bool || todo<br />
|-<br />
| drawnormals || bool || draws normals<br />
|-<br />
| drawframes || bool || todo<br />
|-<br />
| linewidth || float || changes width of debugging line<br />
|}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsSetDebugMode&diff=65181
PhysicsSetDebugMode
2020-02-18T17:00:10Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} Changes debug mode of physicsDrawDebug ==Syntax== <syntaxhighlight lang="lua"> bool physicsSetDebugMode(physics thePhysics, string key, mixed..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Changes debug mode of physicsDrawDebug<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool physicsSetDebugMode(physics thePhysics, string key, mixed value)<br />
</syntaxhighlight><br />
<br />
===Required Arguments=== <br />
*'''physics:''' physics world<br />
*'''key:''' Property key, [[Physics debug mode]]<br />
*'''value:''' Depends on key.<br />
<br />
===Returns===<br />
*'''bool''' if debug mode got changed<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsDestroy&diff=65180
PhysicsDestroy
2020-02-18T16:47:34Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Use to destroy shape, constraint, static collision or rigid body.<br />
<br />
If rigid body got destroyed, all connected constraints will destroyed too.<br />
<br />
If shape got destroyed, shape got removed from all compound shapes which uses this shape and all rigid bodies and static collision which uses this shape got destroyed.<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool physicsDestroy( physics-element thePhysicsElement ) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''thePhysicsElement:''' shape, constraint, static collision or rigid body.<br />
<br />
===Returns===<br />
True if element got destroyed<br />
<br />
==Example==<br />
<br />
This example does nothing ¯\_(ツ)_/¯<br />
<syntaxhighlight lang="lua"><br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsDestroy&diff=65179
PhysicsDestroy
2020-02-18T16:47:23Z
<p>CrosRoad95: Created page with "__NOTOC__ {{Client function}} Use to destroy shape, constraint, static collision or rigid body. If rigid body got destroyed, all connected constraints will destroyed too If..."</p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Use to destroy shape, constraint, static collision or rigid body.<br />
<br />
If rigid body got destroyed, all connected constraints will destroyed too<br />
If shape got destroyed, shape got removed from all compound shapes which uses this shape and all rigid bodies and static collision which uses this shape got destroyed<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
bool physicsDestroy( physics-element thePhysicsElement ) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''thePhysicsElement:''' shape, constraint, static collision or rigid body.<br />
<br />
===Returns===<br />
True if element got destroyed<br />
<br />
==Example==<br />
<br />
This example does nothing ¯\_(ツ)_/¯<br />
<syntaxhighlight lang="lua"><br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95
https://wiki.multitheftauto.com/index.php?title=PhysicsCreateWorld&diff=65166
PhysicsCreateWorld
2020-02-15T07:48:25Z
<p>CrosRoad95: </p>
<hr />
<div>__NOTOC__ <br />
{{Client function}}<br />
Creates physics world with default settings.<br />
<br />
==Syntax== <br />
<syntaxhighlight lang="lua"><br />
physics physicsCreateWorld( [ float gravityX, float gravityY, float gravityZ ] ) <br />
</syntaxhighlight> <br />
<br />
===Required Arguments=== <br />
*'''gravity:''' gravitation used for simulation. Default: 0,0, -9.81<br />
<br />
===Returns===<br />
*'''physics''' world used for simulation.<br />
<br />
==Example==<br />
<br />
<syntaxhighlight lang="lua"><br />
physics = physicsCreateWorld()<br />
</syntaxhighlight><br />
<br />
==See Also==<br />
<br />
{{Client_physics_functions}}</div>
CrosRoad95