Types: Difference between revisions

6,431 bytes added ,  5 September 2023
no edit summary
No edit summary
 
No edit summary
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:Types}}
{{DISPLAYTITLE:Types}}
Please note, the types on this page may be out of date with the latest version.
This page hosts a list of used [https://en.wikipedia.org/wiki/Data_type data types] for scripting.
 
==Types==
These types are used in Scripting.<br>
A <code>Shared</code>type means that the type is available to be used on both the server and the client in scripting.<br><br>
 
* {{Side|shared=1}} <code>Client</code> - client representation
* {{Side|client=1}} <code>Effect</code> - effect (FX)
*  {{Side|shared=1}} <code>Element</code> - element
** {{Side|shared=1}} <code>Blip</code> - blip
** {{Side|shared=1}} <code>Entity</code> - entity
*** {{Side|shared=1}} <code>Building</code> - building (GTA Building)
*** {{Side|shared=1}} <code>Physical</code> - object that interacts with physics
**** {{Side|shared=1}} <code>Object</code> - placeable object
**** {{Side|shared=1}} <code>Ped</code> - pedestrian
***** {{Side|shared=1}} <code>Player</code> - player
**** {{Side|shared=1}} <code>Vehicle</code> - any vehicle
***** {{Side|shared=1}} <code>Train</code> - train
** {{Side|shared=1}} <code>Marker</code> - marker
** {{Side|shared=1}} <code>Pickup</code> - pickup
* {{Side|shared=1}} <code>Event</code> - event
** {{Side|shared=1}} <code>CancellableEvent</code> - cancellable event
** {{Side|shared=1}} <code>KeyEvent</code> - key event
* {{Side|client=1}} <code>Font</code> - font
* {{Side|client=1}} <code>GUIElement</code> - gui element
* {{Side|client=1}} <code>GUIHtmlElement</code> - gui html element
* {{Side|client=1}} <code>GUIHtmlView</code> - gui html view
* {{Side|client=1}} <code>GUIPage</code> - gui page
* {{Side|client=1}} <code>GUIWindow</code> - gui window
* {{Side|shared=1}} <code>Matrix4x4</code> - matrix of 4 by 4 decimal numbers
* {{Side|shared=1}} <code>ReflectedFunction</code> - reflected function
* {{Side|shared=1}} <code>Resource</code> - resource
* {{Side|client=1}} <code>Sound</code>
* {{Side|shared=1}} <code>Stream</code>
* {{Side|client=1}} <code>Surface</code>
** {{Side|client=1}} <code>RenderTarget</code> - client representation - derives from <code>Surface</code>
** {{Side|client=1}} <code>Texture</code> - texture - derives from <code>Surface</code>
* {{Side|shared=1}} <code>Timer</code> - timer
* {{Side|shared=1}} <code>Vec2</code> - vector of 2 decimal numbers
* {{Side|shared=1}} <code>Vec3</code> - vector of 3 decimal numbers
* {{Side|shared=1}} <code>XmlDocument</code> - xml document
* {{Side|shared=1}} <code>XmlElement</code> - xml element
 
==Types Derived From Element==
 
Types derived from type Element, as shown in the list above.


==Type Inheritance==
{{InformationBox|1=
{{InformationBox|1=
Blip : Transformable : Element
Blip : Element
 
Building : Entity : Element
Building : Entity : Transformable : Element
Marker : Element
Object : Physical : Entity : Element
Pickup : Element
Player : Ped : Physical : Entity : Element
Train : Vehicle : Physical : Entity : Element}}


Civilian : Ped : Physical : Entity : Transformable : Element
==Abstract Base Types==
These types aren't used directly in Scripting. They just represent abstract types used behind the scenes.


Marker : Transformable : Element
* <code>Surface</code> - Anything that is drawable (<code>RenderTarget</code>, <code>Texture</code>)


Object : Physical : Entity : Transformable : Element
==Scripting-Language Types==
These scripting-language types are used in the scripting interface.


Pickup : Transformable : Element
Scalar types.
* <code>bool</code> - Also known as <code>boolean</code>.
* <code>float</code> - <code>Number</code> if the scripting language only uses 1 numerical type for ints and floats.
* <code>function</code> - For callbacks.
* <code>int</code> - <code>Number</code> if the scripting language only uses 1 numerical type for ints and floats.
* <code>null</code> - Also known as <code>nil</code>.
* <code>object</code> - For elements. <code>Userdata</code> if Lua.
* <code>string</code>
* <code>undefined</code> - Used in JS.


Player : Ped : Physical : Entity : Transformable : Element
Container types.
* <code>array&lt;Type&gt;</code> - <code>Table</code> if Lua. Keys start at 1 if Lua, otherwise keys start at 0.
* <code>dictionary&lt;KeyType,ValueType&gt;</code> - <code>Table</code> if Lua.


Train : Vehicle : Physical : Entity : Transformable : Element}}
Other types.
* <code>void</code> - Represents no arguments or no returns.


==Type List==
==Handle Existence Span==
This is a list of all types used by GTAC.


{| class="wikitable"
{| class="wikitable"
!Type
!Type
!Inherited Type
!Side
!Endpoint
!Handle Creation
|-
!Handle Destruction (With 0 handle references left in scripting too)
|Blip
|Transformable
|Shared
|-
|Building
|Entity
|Client-side
|-
|Civilian
|Ped
|Client-side
|-
|-
|Client
|Client
| -
|Server-Side
|Shared
|When a client is attempting to join the server. [[OnPlayerJoin|OnPlayerJoin]].
|-
|When a client has begun leaving the server. [[OnPlayerQuit|OnPlayerQuit]].
|Effect
| -
|Client-side
|-
|Element
| -
|Shared
|-
|Entity
|Transformable
|Shared
|-
|Event
| -
|Shared
|-
|Font
| -
|Client-side
|-
|Marker
|Transformable
|Client-side
|-
|Matrix4x4
| -
|Shared
|-
|-
|Object
|Client (Local)
|Physical
|Client-Side
|Client-side
|When a client has joined the server, and the local client's client-side has been notified.
|n/a
|-
|-
|Ped
|Client (Remote)
|Physical
|Client-Side
|Client-side
|When a client has joined the server, and the remote clients' client-side have been notified.
|-
|When a client has begun leaving the server, and the remote clients' client-side have been notified.
|Physical
|Entity
|Shared
|-
|Pickup
|Transformable
|Client-side
|-
|-
|Player
|Player
|Ped
|Server-Side
|Client-side
|When the client's player-ped has spawned. [[OnPedSpawn|OnPedSpawn]].
|-
|When the client's player-ped has de-spawned. [[OnPedWasted|OnPedWasted]].
|ReflectedFunction
| -
|Shared
|-
|RenderTarget
| -
|Client-side
|-
|Resource
| -
|Shared
|-
|Sound
| -
|Client-side
|-
|Stream
| -
|Shared
|-
|Texture
| -
|Client-side
|-
|-
|Timer
|Player (Local)
| -
|Client-Side
|Shared
|When the local client's player-ped has spawned. [[OnPedSpawn|OnPedSpawn]].
|When the local client's player-ped has de-spawned. [[OnPedWasted|OnPedWasted]].
|-
|-
|Train
|Player (Remote)
|Vehicle
|Client-Side
|Server-side
|When any of these qualifying conditions occur:<br>
|-
* The remote client's player-ped has spawned, assuming the local client's player-ped is spawned.<br>
|Transformable
* The remote client's player-ped has streamed back into streaming range of the<br>local client's player-ped 3D position, assuming both the local client's player-ped is spawned and<br>depending on qualifying <code>NetFlags</code> values for all applicable elements.<br>
|Element
* The local client's player-ped has spawned.<br>
|Shared
[[OnPedSpawn|OnPedSpawn]] [[OnElementStreamIn|OnElementStreamIn]].
|-
|When any of these qualifying conditions occur:<br>
|Vec2
* The remote client's player-ped has de-spawned, assuming the local client's player-ped is spawned.<br>
| -
* The remote client's player-ped has streamed out of streaming range of the<br>local client's player-ped 3D position, assuming both the local client's player-ped is spawned and<br>depending on qualifying <code>NetFlags</code> values for all applicable elements.<br>
|Shared
* The local client's player-ped has de-spawned.<br>
|-
[[OnPedWasted|OnPedWasted]] [[OnElementStreamOut|OnElementStreamOut]].
|Vec3
| -
|Shared
|-
|Vehicle
|Phsyical
|Shared
|-
|World
| -
|Server-side
|}
|}
Please note, a handle that is not properly de-referenced will cause the handle to not be internally destructed.<br>
As a result, this can give the illusion that some functions are broken when they aren't, such as the result of [[getElementsByType|getElementsByType]] including more than one array entry for the "same element", which are unequal in scripting comparison operators, after internal re-construction, eg. when a client-side player streams out of distance radius of the local player and then streams back in.<br>
To properly de-reference a handle when it's no longer needed, be sure to use <code>delete myVariable;</code> or <code>myVariable = null;</code> in JS, or <code>myVariable = nil</code> in Lua, where applicable.<br>
Continuous attempts of internal destruction of a handle occurs when the qualifying internal destruction reason has occurred, until there are no references remaining in scripting for the handle, rather than only one internal destruction attempt.<br>
A handle becomes invalidated when a handle destruction attempt has first occurred.<br>
Attempting to hold onto a reference of invalidated handles could cause memory exhaustion, and usage of an invalid handle with the scripting API should give a scripting error.<br><br>
Also, when the local client's player-ped is not spawned, applicable handles will not be usable in client-side scripting.<br>
For example, remote clients' player-ped handles are internally attempted to be destructed when the local client's player-ped de-spawns, until the local client's player-ped re-spawns.<br>
==Previous Versions==
Type <code>Civilian</code> was removed. All functionality from type <code>Civilian</code>was moved to type <code>Ped</code>.<br>
Type <code>Transformable</code> was removed. All functionality from type <code>Transformable</code>was moved to type <code>Element</code>.<br>
6,833

edits