Skip to content

ObstacleScript Globals

Jasdac edited this page Mar 10, 2021 · 10 revisions

This is a list of built in constants, definitions, macros, and globals.

Core

Constants

Project global

These can be used anywhere in a project.

Definition Value Description
PUB_CHAN 0xB00B This is the channel ObstacleScript communicates on in default communication.
OBSTACLE_CHAN 0xC34 This is the base channel for obstacle custom communication. Each obstacle usually has its own channel which is an offset from this in order to speed up communication.
PLAYERS list player_keys Requires #define USE_PLAYERS, contains an auto updated list of player keys in the current game
end Synonym for }

Event handler

These can be used inside the main event handler.

Definition Value Description
METHOD_ARGS list arguments A list containing all the arguments passed to an event/method
SENDER_SCRIPT str script The sender script that sent a method. If it was an event, this will always be "!"
EVENT_TYPE/METHOD_TYPE int type The ID of the event or method that was called
SENDER_KEY key id The key of an object that sent a method, or "" if it was sent from within the linkset
NOT_METHOD bool is_not_method Checks if the call was not a method
IS_METHOD bool is_method Checks if the call was a method

Functions

Global

Definition Description
raiseEvent( int evt, spread data ) Raises an event
runMethod( key/int target, str script, int method, spread data ) Runs a method on a Module. Target can be either a key if you want to run it on a different object, or a link number. You can use LINK_ALL etc. Script is the name of the Module to send to. Method is the method id (see the Module's header script, and data are the arguments to send.
runOmniMethod( str script, int method, spread data ) Same as above but sent as a regionsay. Use sparingly since it can lead to a lot of parsing.
forPlayer( index, player ) Quick way of iterating over players. Ex forPlayer( index, player ) llOwnerSay("Player #"+(string)index+": "+llKey2Name(player)); end. Note that index creates a new iterator, so you can't use the same name for your iterator in the same scope. If you want to iterate over the players multiple times in a row, use something like index_1, index_2...

Within event handler

Definition Description
handleMethod( method ) Handles a specific method called on your Module. Usage handleMethod( <methodID> ) ...code... end
handleInternalMethod( method ) Same as above, but only allows if the method caller script was in the same linkset
handleOwnerMethod( method ) Same as above, but only allows if the method caller script has the same owner
handleEvent( script, evt ) Handles a specific event from a script. Usually wrapped in the header file of a script such as onAttachmentAttached( id )
argStr( index ) Gets an argument from the event or method by index, and returns a string. Ex string firstArg = argStr(0) gets the first argument as a string.
argInt( index ) Same as above but returns an integer
argKey( index ) Same as above but returns a key
argFloat( index ) Same as above but returns a float
argRot( index ) Same as above but returns a rotation
argVec( index ) Same as above but returns a vector
onMethod( method ) Event capture for ALL method calls. Not recommended, use the header file macros instead.
isMethodInternal() Checks if the method was requested by a script within the linkset. Not recommended, use handleInternalMethod() instead
isMethodInternalInline() Checks if the method was requested by a script within the linkset, but can be used within an if statement. Ex: if( isMethodInternalInline() ) Not recommended, use handleInternalMethod() instead
isMethodByOwner() Similar to above, but allows external linksets if they have the same owner
isMethodByOwnerInline() Similar to above, but allows external linksets if they have the same owner
isEventByOwner() Synonym for isMethodByOwner
isEventByOwnerInline() Synonym for isMethodByOwnerInline
isEventNotByOwner() Opposite of isMethodByOwner

USE definitions

These are definitions you can add to the top of your script to enable extra functionality. See Module Dissection for info on how to set these up.

Custom handlers:

|

Default internal events. These are just wrappers around the default SL events.

Definition Handler
USE_CONTROL onControl( level, edge )
USE_STATE_ENTRY onStateEntry()
USE_SENSOR onSensor( total )
USE_NO_SENSOR onNoSensor()
USE_OBJECT_REZ onObjectRez( id )
USE_CHANGED onChanged( change )
USE_RUN_TIME_PERMISSIONS onRunTimePermissions( perm )
USE_ATTACH onAttach( id )
USE_ON_REZ onRez( nr )
USE_COLLISION_START onCollisionStart( total )
USE_COLLISION_END onCollisionEnd( total )
USE_TOUCH onTouch( total )
USE_TOUCH_START onTouchStart( total )
USE_TOUCH_END onTouchEnd( total )

Events

These are events tied to the USE definitions above.

Event Arguments Requires Description
onPlayersUpdated USE_PLAYERS Raised when the PLAYERS global has been updated with new players.

Timer

Tools & Shortcuts