- summary: An entity has started using an interactive element: the element, the skill, how long it takes, and whether it can still move.
- area: Game.Interactive
An entity has started using an interactive element: the element, the skill, how long it takes, and whether it can still move.
Kind event · Area Game.Interactive
Announces the BEGINNING of an interaction - chopping a tree, mining an ore, opening a door, taking a zaap - not its result. Nothing here says whether the harvest succeeded or what it yielded.
IT IS BOTH AN ANSWER AND A BROADCAST. When the actor is you, it is the server
accepting your InteractiveUseRequest (a refusal comes as
InteractiveUseErrorEvent instead, and this event is then never sent). It is also broadcast for every other character,
monster and NPC that starts an interaction, so most arrivals are about someone
else.
HOW TO RECOGNISE THE ANSWER TO YOUR OWN REQUEST - it does not echo the request:
- entity_id is your character's id;
- element_id is the element you sent in the request;
- skill_id is the skill_id of the action you picked - the request carried
that action's skill_instance_uid, which never comes back.
WHAT TO DO WHEN IT NAMES YOU
1. Consider the request answered: you may use that element again later.
2. If duration is above zero, the use is TIMED and you are busy: it lasts
duration x 100 ms (duration is in TENTHS OF A SECOND - 30 is three
seconds). Send no further InteractiveUseRequest, for any element, until
InteractiveUseEndedEvent for this element closes the interaction. The official
client does exactly this.
3. If can_move is false - absent on the wire, which is how false arrives -
the character is locked in place for the use: send no movement request
until it is over.
A script that fires its next action immediately is acting during an interaction the server still considers in progress.
element_id joins this to InteractiveElement and to StatedElement, so
it is how you tell WHICH node someone just started on.
LIVE CAPTURE (3.6.12.16): duration 30, element_id 537803, entity_id 676609130790, skill_id 68, can_move absent (false) - a three-second use during which the character could not move. Fields at their default value (0, false) are simply absent from the wire, as here.
When you may send it
- Requires
context_readyinferred
Related messages
- Arrives after
InteractiveUseRequest
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 1 | element_id | int32 | The interactive element being used. (interactive element id) Observed: 537803 (live capture, 3.6.12.16)The same id as InteractiveElement.element_id and StatedElement.element_id. | never |
| 2 | can_move | bool | Whether the actor may still move while the interaction runs. Observed: absent, i.e. false, on a three-second use (live capture 3.6.12.16)False locks the actor in place for the duration. False is the default and is not sent on the wire: an absent can_move means the actor cannot move during the use. | never |
| 3 | duration | int32 | How long the interaction will run. (tenths of a second) Observed: 30 (three seconds, live capture 3.6.12.16)The client multiplies it by 100 and runs the use for that many milliseconds, so 30 means three seconds. Above zero and about you, the client also treats you as busy until InteractiveUseEndedEvent for that element arrives. | never |
| 4 | entity_id | int64 | The entity that started the interaction: a character, a monster or an NPC. (entity id) Observed: 676609130790 (a character, live capture 3.6.12.16)Compare against your own id before treating the interaction as yours. | never |
| 5 | skill_id | int32 | Which action is being performed - what distinguishes cutting from mining from opening. (skill id) Observed: 68 (live capture, 3.6.12.16)The same id space as InteractiveElementSkill.skill_id.It is the skill_id of the action, never the skill_instance_uid an InteractiveUseRequest sends: match your own request by element_id, entity_id and this skill_id. | never |