Event Handlers – Arma 3
mNo edit summary |
mNo edit summary |
||
Line 321: | Line 321: | ||
* "HandleDamage" can trigger "twice" per damage event. Once for direct damage, once for indirect damage (explosive damage). This can happen even in the same frame, but is unlikely. | * "HandleDamage" can trigger "twice" per damage event. Once for direct damage, once for indirect damage (explosive damage). This can happen even in the same frame, but is unlikely. | ||
Additional [http://forums.bistudio.com/ | Additional [http://forums.bistudio.com/topic/108931-handledamage-eh-explained-poor-mans-gethit+handler Celery's explanation]. | ||
| <!-- Arguments --> | | <!-- Arguments --> |
Revision as of 18:30, 27 August 2015
An event handler (abbreviated to EH) allows you to automatically monitor and then execute custom code upon particular events being triggered.
See also Event Scripts for special event triggered scripts.
addEventHandler
Object event handler, always executed on the computer where it was added.
Commands:
Example:
mySoldier addEventHandler ["Killed",{hint format ["%1 was killed by %2",name (_this select 0),name (_this select 1)];}]
Default
Class | Description | Arguments | MP-Effects | Since |
---|---|---|---|---|
AnimChanged |
Triggered every time a new animation is started. This EH is only triggered for the 1st animation state in a sequence. It can be assigned to a remote unit but will only fire on the PC where the actual addEventHandler command was executed. |
|||
AnimDone |
Triggered every time an animation is finished. Triggered for all animation states in a sequence. It can be assigned to a remote unit but will only fire on the PC where the actual addEventHandler command was executed. |
|||
AnimStateChanged |
Triggered every time an animation state changes. Triggered for all animation states in a sequence. It can be assigned to a remote unit but will only fire on the PC where the actual addEventHandler command was executed. |
| ||
ContainerClosed |
Triggers when player finished accessing cargo container. This event handler is similar to "InventoryClosed" EH, but needs to be assigned to the container rather than the player. Note: will trigger only for the unit opening container. |
| ||
ContainerOpened |
Triggers when cargo container is accessed by player. This event handler is similar to "InventoryOpened" EH, but needs to be assigned to the container rather than the player and cannot be overridden. Note: will trigger only for the unit opening container.. |
|||
ControlsShifted |
Triggers when controls of vehicle are shifted (pilot->co-pilot, co-pilot->pilot). Works for both, "Take" and "Release" controls actions. Event only triggers on PC where vehicle is local and EH was added. Notes:
|
| ||
Dammaged |
Triggered when the unit is damaged. In ArmA works with all vehicles not only men like in OFP. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. Notes:
|
|||
Engine |
Triggered when the engine of the unit is turned on/off. |
|||
EpeContact |
Triggered when object collision (PhysX) is in progress. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. |
|
||
EpeContactEnd |
Triggered when object collision (PhysX) ends. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. |
|
||
EpeContactStart |
Triggered when object collision (PhysX) starts. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. |
|
||
Explosion |
Triggered when a vehicle or unit is damaged by a nearby explosion. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. |
|||
Fired |
Triggered when the unit fires a weapon. |
|
||
FiredNear |
Triggered when a weapon is fired somewhere near the unit or vehicle. It is also triggered if the unit itself is firing. (Exception(s): the Throw weapon wont broadcast the FiredNear event) 1.30 Works with thrown weapons. |
|
||
Fuel |
Triggered when the unit's fuel status changes between completely empty / not empty (only useful if the event handler is assigned to a vehicle). |
|||
Gear |
Triggered when the unit lowers/retracts the landing gear (only useful if the event handler is assigned to is a member of the class "Plane"). |
|||
GetIn |
Triggers when a unit enters a vehicle. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. This EH is neither triggered upon a change of positions within the same vehicle nor by the moveInXXXX commands. However it is triggered by a "GetInXXXX" action. In vehicles with multi-turret setup, entering any turret will show "gunner" for position. |
|||
GetOut |
Triggers when a unit gets out from a vehicle. It can be assigned to a remote vehicle but will only fire on the PC where the actual addEventHandler command was executed. This EH is triggered by both the moveOut command and by "GetOut" action. |
|||
HandleDamage |
Triggers when the unit is damaged and fires for each damaged selection separately. Works with all vehicles. This EH can accept a remote unit as argument however it will only fire when the unit is local to the PC this event handler was added on. For example, you can add this event handler to one particular vehicle on every PC. When this vehicle gets hit, only EH on PC where the vehicle is currently local will fire. If code provided returns a numeric value, this value will overwrite the default damage of given selection after processing. Return value of 0 will make the unit invulnerable if damage is not scripted in other ways (i.e using setDamage and/or setHit for additional damage handling). If no value is returned, the default damage processing will be done. This allows for safe stacking of this event handler. Only the return value of the last added "HandleDamage" EH is considered. Notes:
Additional Celery's explanation. |
(Since Arma 3 v 1.49.131802)
|
| |
HandleHeal |
Triggered when unit starts to heal (player using heal action or AI heals after being ordered). Triggers only on PC where EH is added and unit is local. If code returns false, engine side healing follows. Return true if you handle healing in script, use AISFinishHeal to tell engine that script side healing is done. See also lifeState and setUnconscious commands. |
| ||
HandleRating |
Triggered when engine adds rating to overall rating of the unit, usually after a kill or a friendly kill. If EH code returns Number, this will override default engine behaviour and the resulting value added will be the one returned by EH code. |
| ||
HandleScore |
Triggered when engine adds score to overall score of the unit, usually after a kill. If the EH code returns true or Nothing, the default engine score is applied, if it returns false, the engine score doesn't get added. For remote units like players, the event does not persist after respawn, and must be re-added to the new unit. |
| ||
Hit |
Triggered when the unit is hit/damaged. Is not always triggered when unit is killed by a hit. |
|||
HitPart |
Runs when the object it was added to gets injured/damaged. It returns the position and component that was hit on the object within a nested array, this is because the model may have more than one selection name for the hit component (i.e. a single piece of geometry can be simultaneously part of multiple, overlapping named selections). While you can add "HitPart" handler to a remote unit, the respectful addEventHandler command must be executed on the shooter's PC and will only fire on shooter's PC as well. Additionally, if the unit gets damaged by any means other than shooter's shooting, "HitPart" will not fire. Because of this, this event handler is most suitable for when the shooter needs feedback on his shooting, such as target practicing or hitmarker creation. |
|
||
Init |
Triggered on mission start or when a vehicle is created on the fly using createVehicle. |
|
||
IncomingMissile |
Triggered when a guided missile locked on the target or unguided missile or rocket aimed by AI at the target was fired. |
|||
InventoryClosed |
Triggered when unit closes inventory.
|
|||
InventoryOpened |
Triggered when unit opens inventory. End EH main scope with true to override the opening of the inventory in case you wish to handle it yourself:
|
|||
Killed |
Triggered when the unit is killed. Be careful when the killer has been a vehicle. For most cases the reference of the vehicle is the same as the effectiveCommander, but not always. |
|||
LandedTouchDown |
Triggered when a plane (AI or player) touches the ground. |
|||
LandedStopped |
Triggered when an AI pilot would get out usually. Not executed for player. |
|||
Local |
Triggers when locality of object in MP is changed. The event handler only triggers on the computers that are directly involved in change of locality. So if EH is added to every computer on network, it will only trigger on 2 computers, on the computer that receives ownership of the object (new owner), in which case _this select 1 will be true, and on the computer from which ownership is transferred (old owner), in which case _this select 1 will be false. |
|||
Put |
Triggers when a unit puts an item in a container. |
|||
Respawn |
Triggered when a unit respawns. |
|||
RopeAttach |
Triggered when a rope is attached to an object. |
|||
RopeBreak |
Triggered when a rope is detached from an object. |
|||
SeatSwitched |
Triggered when unit changes seat within vehicle. EH returns both units switching seats. If switching seats with an empty seat, one of the returned units will be objNull. The new position can be obtained with assignedVehicleRole <unit>. This EH must be assigned to a vehicle. |
|||
SoundPlayed |
Triggered when player is making noises when injured or fatigued for example. The number param passed to the EH code, points to the sound origin:
|
|||
Take |
Triggers when a unit takes an item from a container. |
|||
WeaponAssembled |
Triggers when weapon gets assembled. EH should be attached to the unit and not the weapon. |
|||
WeaponDisassembled |
Triggers when weapon gets disassembled. EH should be attached to the unit and not the weapon. |
|||
WeaponDeployed |
Triggers when the deployed state of a weapon or bipod changes. Note: A weapon cannot be rested and deployed at the same time. |
| ||
WeaponRested |
Triggers when weapon rested state changes (weapon near a surface that can provide weapon support). Note: A weapon cannot be rested and deployed at the same time. |
Curator
Curator Event Handlers are also added with addEventHandler command and are supposed to be added to curator object (not player object) where curator object is local and will be executed only where curator is local (on computer of player who's in control of it).
Class | Description | Arguments | MP-Effects | Since |
---|---|---|---|---|
CuratorFeedbackMessage |
Triggered when curator attempts invalid action in curator interface. Each error has its own unique ID, recognized values are:
|
|||
CuratorGroupDoubleClicked |
Triggered when a group is double-clicked on in curator interface.
|
|||
CuratorGroupPlaced |
Triggered when new group is placed in curator interface.
|
|||
CuratorGroupSelectionChanged |
Triggered when a group is selected in curator interface.
|
|||
CuratorMarkerDeleted |
Triggered when a marker is deleted in curator interface.
|
|||
CuratorMarkerDoubleClicked |
Triggered when a marker is double-clicked on in curator interface.
|
|||
CuratorMarkerEdited |
Triggered when a marker is moved in curator interface.
|
|||
CuratorMarkerPlaced |
Triggered when new marker is placed in curator interface.
|
|||
CuratorMarkerSelectionChanged |
Triggered when a marker is selected in curator interface.
|
|||
CuratorObjectDeleted |
Triggered when an object is deleted in curator interface.
|
|||
CuratorObjectDoubleClicked |
Triggered when an object is double-clicked on in curator interface.
|
|||
CuratorObjectEdited |
Triggered when an object is moved or rotated in curator interface.
|
|||
CuratorObjectPlaced |
Triggered when new object is placed in curator interface. This event handler will trigger individually for each unit in a placed group - excluding the crew in vehicles.
|
|||
CuratorObjectRegistered |
Triggered when player enters curator interface. Assign curator cost to every object in the game. This is the primary method that a mission designer can use to limit the objects a curator can place. Full article - Curator This handler is supposed to be added to curator module, not player. |
|||
CuratorObjectSelectionChanged |
Triggered when an object is selected in curator interface.
|
|||
CuratorPinged |
Triggered when a player pings his curator(s) by pressing Zeus key. To add player to specific curator, use addCuratorEditableObjects command.
|
|||
CuratorWaypointDeleted |
Triggered when a waypoint is deleted in curator interface.
|
|||
CuratorWaypointDoubleClicked |
Triggered when a waypoint is double-clicked on in curator interface.
|
|||
CuratorWaypointEdited |
Triggered when a waypoint is moved in curator interface.
|
|||
CuratorWaypointPlaced |
Triggered when new waypoint is placed in curator interface.
|
|||
CuratorWaypointSelectionChanged |
Triggered when a waypoint is selected in curator interface.
|
addMPEventHandler
Global object event handler, executed on every connected machine.
Commands:
Example:
mySoldier addMPEventHandler ["MPKilled",{hint format ["%1 was killed by %2",name (_this select 0),name (_this select 1)];}]
Class | Description | Arguments | MP-Effects | Since |
---|---|---|---|---|
MPHit |
Triggered when the unit is hit/damaged. EH can be added on any machine and EH code will trigger globally on every connected client and server. This EH is clever enough to be triggered globally only once even if added on all clients or a single client that is then disconnected, EH will still trigger globally only once. Is not always triggered when unit is killed by a hit. Most of the time only the Killed event handler is triggered when a unit dies from a hit. The hit EH will not necessarily fire if only minor damage occurred (e.g. firing a bullet at a tank), even though the damage increased. Can also trigger several times for an explosion (direct and indirect damage). Does not fire when a unit is set to allowDamage false. However it will fire with "HandleDamage" EH added alongside stopping unit from taking damage addEventHandler ["HandleDamage",{0}]; Will not trigger when unit is dead. This EH must be used in conjunction with the addMPEventHandler command. Note: Call a function from the MPHit EH code space, rather to define the full code in there directly. The reason is the code space will be transferred over network on each event activation - so keep the data as small as possible! |
|||
MPKilled |
Triggered when the unit is killed. EH can be added on any machine and EH code will trigger globally on every connected client and server. This EH is clever enough to be triggered globally only once even if added on all clients or a single client that is then disconnected, EH will still trigger globally only once. This EH must be used in conjunction with the addMPEventHandler command. |
|||
MPRespawn |
Triggered when a unit, it is assigned to, respawns. This EH does not work as one would expect MP EH should work like. It is only triggered on one machine where the unit it was assigned to is local. The only difference between Respawn and MPRespawn is that MPRespawn can be assigned from anywhere while Respawn requires the unit to be local. This EH must be used in conjunction with the addMPEventHandler command.
|
addMissionEventHandler
Mission event handler, always executed on the computer where it was added.
Commands:
Example:
addMissionEventHandler ["Loaded",{playMusic "EventTrack03_F_EPB";}]
Class | Description | Arguments | Since
|
---|---|---|---|
Draw3D |
Runs the EH code each frame in unscheduled environment. Client side EH only (presence of UI). Will stop executing when UI loses focus (if user Alt+Tabs for example). Usually used with drawIcon3D, drawLine3D. |
||
Ended |
Triggered when mission ends, either using trigger of type "End", endMission command, BIS_fnc_endMission function or ENDMISSION cheat. |
|
|
HandleDisconnect |
Triggered when player disconnects from the game. Similar to onPlayerDisconnected event but can be stacked and contains the unit occupied by player before disconnect. Must be added on the server and triggers only on the server. |
Override: If this EH code returns true, the unit, previously occupied by player, gets transferred to the server, becomes AI and continues to live, even with description.ext param disabledAI = 1; |
|
Loaded |
Triggered when mission is loaded. |
inGameUISetEventHandler
InGameUI Event Handler for adding EH to action menu. If code returns true, default action is overridden. The EH is persistent between mission restarts (at least in the editor), so it might require scripted reset.
Commands:
Example:
inGameUISetEventHandler ["Action","hint 'Lights, Camera, Action!'"]
Class | Description | Arguments | Since |
---|---|---|---|
PrevAction |
Triggers on mouse wheel scroll up. |
No arguments are passed to the code, but Boolean return is expected instead. |
|
Action |
Triggers on action key press. |
No arguments are passed to the code, but Boolean return is expected instead. |
|
NextAction |
Triggers on mouse wheel scroll down. |
No arguments are passed to the code, but Boolean return is expected instead. |
addMusicEventHandler
Music event handler, always executed on the computer where it was added.
Commands:
Example:
addMusicEventHandler ["MusicStop",{playMusic (_this select 0);}]
Class | Description | Arguments | Since |
---|---|---|---|
MusicStart |
Triggers when CfgMusic sound starts playing, after being executed with playMusic command. This event handler needs to be added with addMusicEventHandler command and removed with removeMusicEventHandler. |
|
|
MusicStop |
Triggers when CfgMusic sound finished playing, after being executed with playMusic command. Note that EH will not be triggered if you force stop the music with playMusic "". This event handler needs to be added with addMusicEventHandler command and removed with removeMusicEventHandler. |
|
ctrlAddEventHandler
Full article - User Interface Event Handlers
displayAddEventHandler
Full article - User Interface Event Handlers