Script:Events: Difference between revisions

From Arx Libertatis Wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 26: Line 26:
= Parameters =
= Parameters =


Events can have up to three parameters which can be accessed using the special read-only [[Script:Variables|script variables]] as {{text}} using <code>^$param1</code>, <code>^$param2</code> and <code>^$param3</code>, as {{number}} using <code>^&param1</code>, <code>^&param2</code> and <code>^&param3</code> or as {{int}} using <code>^#param1</code>, <code>^#param2</code> and <code>^#param3</code>.
Events can have up to three parameters which can be accessed using the special read-only [[Script:Variables|script variables]] as {{string}} using <code>^$param1</code>, <code>^$param2</code> and <code>^$param3</code>, as {{number}} using <code>^&param1</code>, <code>^&param2</code> and <code>^&param3</code> or as {{int}} using <code>^#param1</code>, <code>^#param2</code> and <code>^#param3</code>.


= List =
= List =

Revision as of 05:54, 16 April 2020

Events in the Arx scripting language are entry points of entity scripts. They are sent by the game engine or by other scripts using the sendevent command. While the engine defines some event names, entity scripts can use arbitrary names for custom events.

Syntax

on eventname {
  ...
  accept or refuse
}

Sender

Events always have a sender entity associated with them. The entity ID of the sender is available in the read-only ^sender script variable.

Target

Scripts can be sent to a single target entity or multiple targets matching some criteria using the sendevent command but are always executed independently for each target.

Execution

Events sent by the game engine are usually executed synchronously although there are some exceptions. Events sent by scripts are always executed asynchronously.

Events are first executed in the entity instance script. Commands are executed after on eventname until a accept or refuse command is reached. refuse ends event execution while accept allows execution to continue after on eventname in the entity class script until a accept or refuse command is reached there. If a script does not have a on eventname block, the event is always accepted.

For events sent by the game engine, ending the event with accept or refuse sometimes also determines some further engine behavior. For events send by entity scripts the result is not returned to the sender.

Parameters

Events can have up to three parameters which can be accessed using the special read-only script variables as string using ^$param1, ^$param2 and ^$param3, as number using ^&param1, ^&param2 and ^&param3 or as int using ^#param1, ^#param2 and ^#param3.

List

The following is a (incomplete) list of events sent by the game engine. Scripts can send arbitrarily named events.

EventTrigger
on cine_endSent when when a cinematic ends.
on collide_doorSent when on collisions involving an entity in the door group.
on collide_fieldSent when on collisions with a field created with the Create field (Aam Rune (create)Kaom Rune (protection)Spacium Rune (field)) spell.
on collision_errorSent when if there are entities occupying the same space when re-enabling collisions using collision on.
on collision_error_detailSent when for every entity occupying the same space when re-enabling collisions using collision on.
on controls_offSent when when player input is disabled using the setplayercontrols off command.
on controls_onSent when when player input is enabled using the setplayercontrols on command.
on deadSent when periodically when dead.
on game_readySent when after starting a new game, changing to a different area or loading a save file.
on hitSent when when the the entity is damaged.
on inventory2_closeSent when when closing non-player inventories.
on inventory2_openSent when when opening non-player inventories.
on mainSent when periodically when not dead.
on ouchSent when when the the entity is damaged and did not receive an ouch event in the last 500 milliseconds.
on spellcastSent when when a spell is cast.
on spellendSent when when a spell ends or is cancelled.
on stealSent when when opening or closing a non-player inventory by pickpocketing.

Besides these events, the game engine also uses the internal executeline and null events.