Types: Difference between revisions
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 22: | Line 22: | ||
* {{Side|shared=1}} <code>Event</code> - event | * {{Side|shared=1}} <code>Event</code> - event | ||
** {{Side|shared=1}} <code>CancellableEvent</code> - cancellable event | ** {{Side|shared=1}} <code>CancellableEvent</code> - cancellable event | ||
** {{Side|shared=1}} <code>KeyEvent</code> - key | ** {{Side|shared=1}} <code>KeyEvent</code> - key event | ||
* {{Side|client=1}} <code>Font</code> - font | * {{Side|client=1}} <code>Font</code> - font | ||
* {{Side|client=1}} <code>GUIElement</code> - gui element | * {{Side|client=1}} <code>GUIElement</code> - gui element | ||
Line 111: | Line 111: | ||
|Player (Local) | |Player (Local) | ||
|Client-Side | |Client-Side | ||
|When the client's player-ped has spawned. [[OnPedSpawn|OnPedSpawn]]. | |When the local client's player-ped has spawned. [[OnPedSpawn|OnPedSpawn]]. | ||
|When the client's player-ped has de-spawned. [[OnPedWasted|OnPedWasted]]. | |When the local client's player-ped has de-spawned. [[OnPedWasted|OnPedWasted]]. | ||
|- | |- | ||
|Player (Remote) | |Player (Remote) | ||
Line 131: | Line 131: | ||
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> | 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> | 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. | 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== | ==Previous Versions== |
Latest revision as of 18:48, 5 September 2023
This page hosts a list of used data types for scripting.
Types
These types are used in Scripting.
A Shared
type means that the type is available to be used on both the server and the client in scripting.
Shared
Client
- client representationClient
Effect
- effect (FX)Shared
Element
- elementShared
Blip
- blipShared
Entity
- entityShared
Building
- building (GTA Building)Shared
Physical
- object that interacts with physicsShared
Object
- placeable objectShared
Ped
- pedestrianShared
Player
- player
Shared
Vehicle
- any vehicleShared
Train
- train
Shared
Marker
- markerShared
Pickup
- pickup
Shared
Event
- eventShared
CancellableEvent
- cancellable eventShared
KeyEvent
- key event
Client
Font
- fontClient
GUIElement
- gui elementClient
GUIHtmlElement
- gui html elementClient
GUIHtmlView
- gui html viewClient
GUIPage
- gui pageClient
GUIWindow
- gui windowShared
Matrix4x4
- matrix of 4 by 4 decimal numbersShared
ReflectedFunction
- reflected functionShared
Resource
- resourceClient
Sound
Shared
Stream
Client
Surface
Client
RenderTarget
- client representation - derives fromSurface
Client
Texture
- texture - derives fromSurface
Shared
Timer
- timerShared
Vec2
- vector of 2 decimal numbersShared
Vec3
- vector of 3 decimal numbersShared
XmlDocument
- xml documentShared
XmlElement
- xml element
Types Derived From Element
Types derived from type Element, as shown in the list above.
Blip : Element
Building : Entity : Element
Marker : Element
Object : Physical : Entity : Element
Pickup : Element
Player : Ped : Physical : Entity : Element
Train : Vehicle : Physical : Entity : Element
Abstract Base Types
These types aren't used directly in Scripting. They just represent abstract types used behind the scenes.
Surface
- Anything that is drawable (RenderTarget
,Texture
)
Scripting-Language Types
These scripting-language types are used in the scripting interface.
Scalar types.
bool
- Also known asboolean
.float
-Number
if the scripting language only uses 1 numerical type for ints and floats.function
- For callbacks.int
-Number
if the scripting language only uses 1 numerical type for ints and floats.null
- Also known asnil
.object
- For elements.Userdata
if Lua.string
undefined
- Used in JS.
Container types.
array<Type>
-Table
if Lua. Keys start at 1 if Lua, otherwise keys start at 0.dictionary<KeyType,ValueType>
-Table
if Lua.
Other types.
void
- Represents no arguments or no returns.
Handle Existence Span
Type | Side | Handle Creation | Handle Destruction (With 0 handle references left in scripting too) |
---|---|---|---|
Client | Server-Side | When a client is attempting to join the server. OnPlayerJoin. | When a client has begun leaving the server. OnPlayerQuit. |
Client (Local) | Client-Side | When a client has joined the server, and the local client's client-side has been notified. | n/a |
Client (Remote) | 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. |
Player | Server-Side | When the client's player-ped has spawned. OnPedSpawn. | When the client's player-ped has de-spawned. OnPedWasted. |
Player (Local) | Client-Side | When the local client's player-ped has spawned. OnPedSpawn. | When the local client's player-ped has de-spawned. OnPedWasted. |
Player (Remote) | Client-Side | When any of these qualifying conditions occur:
|
When any of these qualifying conditions occur:
|
Please note, a handle that is not properly de-referenced will cause the handle to not be internally destructed.
As a result, this can give the illusion that some functions are broken when they aren't, such as the result of 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.
To properly de-reference a handle when it's no longer needed, be sure to use delete myVariable;
or myVariable = null;
in JS, or myVariable = nil
in Lua, where applicable.
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.
A handle becomes invalidated when a handle destruction attempt has first occurred.
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.
Also, when the local client's player-ped is not spawned, applicable handles will not be usable in client-side scripting.
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.
Previous Versions
Type Civilian
was removed. All functionality from type Civilian
was moved to type Ped
.
Type Transformable
was removed. All functionality from type Transformable
was moved to type Element
.