- summary: Show a smiley in a bubble above your character, for everyone around.
- area: Game.Social
Show a smiley in a bubble above your character, for everyone around.
Kind request · Area Game.Social
Play a smiley: it pops up in a bubble above your character for everyone on the map.
HOW TO SEND IT
1. Set SmileyRequest.smiley_id to the smiley's id in the smileys game data
(SmileysDataRoot). Leave the other declared int32 at 0: the client never writes it.
2. Send it ONCE. Wait at least one second before the next smiley: the official client
blocks smileys for 1s after each one, and the server may drop smileys sent faster.
3. React to SmileyEvent when it arrives; do not wait for it.
THE OFFICIAL CLIENT SENDS IT TWICE. A click in the smiley picker sends this request two
times, about 3ms apart, with the same smiley id. This is a client quirk, not a protocol
rule: the picker's click handler sends it, then calls its 'add to recently used' routine,
which sends it a second time before setting the 1s cooldown. The server answered each pair
with a single SmileyEvent in the capture. A smiley played from the shortcut bar, or right
after a mood change, was sent once. Do not treat a doubled request in a capture as a
malformed exchange, and do not imitate it: one request is enough.
When you may send it
- Requires
context_readyinferred - Raised by: a user action: clicking a smiley in the smiley picker (SmileyUISmileyTab.OnSmileyItemClicked, which then calls AddToHistory: see the description), a smiley element's click callback, or a smiley placed on the shortcut bar (UIActionBar.UseItem) proven
Related messages
- You will then receive
SmileyEventobserved — about 25ms later, the smiley shown above your own character (entity_id = your character id); at most one per request pair, and one pair sent 1.5s after the previous one got none; 4 pairs observed in one session
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 1 | smiley_id | int32 | The smiley to play. An id of the smileys game data (SmileysDataRoot); the same id comes back in SmileyEvent.smiley_id. | always |