- summary: Closes whatever dialog you are in. No payload - the server knows which one.
- area: Game.Dialog
- confidence: 0.86
Closes whatever dialog you are in. No payload - the server knows which one.
- Kind request
- Area Game.Dialog
- Named by beta, gamemapping
CARRIES NOTHING, AND DOES NOT NEED TO. There is one dialog open at a time and the server knows which; you are saying "I am done with it", not naming it.
WHEN TO SEND IT
WHEN THE DIALOG WINDOW GOES AWAY - and that is a wider condition than "the player clicked close". In the real client most of these windows raise the leave intent from Unity's OnDisable hook, which runs however the window disappeared: the bank, the exchange, the NPC shop, the auction house and the craft window all do exactly that. A few add explicit paths on top - the zaap picker also raises it from its close button AND its Esc shortcut, the house window from its own CloseWindow, the NPC dialogue from its close handler and from the reply that ends the conversation rather than continuing it.
So the honest rule for a script is not "send it when I press close", it is SEND IT WHEN YOU STOP BEING IN THE DIALOG, whatever ended it on your side.
ONE PER CLOSE. Fourteen different windows raise the same intent and several services listen for it, but only the service of the feature you are actually in is subscribed at the time, so exactly one request goes out. Do not send one per window you think might be open.
NOTHING GATES IT. The handlers do no checking at all - they construct the empty message and hand it to the connection. If you reach the condition, it goes.
WHEN NOT TO SEND IT
DO NOT ANSWER DialogLeaveEvent WITH THIS. This is the one that will bite you.
When the SERVER closes the dialog - you walked away, the NPC ended it, it timed
out - it announces the close, and the natural-looking reaction is to confirm with
a leave request. The real client cannot do that, and it is not an accident: on
that event the feature's service disables itself FIRST and only then asks the UI
to close, so by the time the window's OnDisable fires there is nobody subscribed
to raise the intent. The close the server caused produces no request.
Echoing it means asking the server to close a dialog that is already gone.
DO NOT SEND IT WHEN NO DIALOG IS OPEN. Nothing in the client does, and there is nothing to close.
WHAT COMES BACK
DialogLeaveEvent, carrying the DialogType that closed - but read that
record before you rely on it. It is a broadcast, not a receipt: the same message
arrives when the server closes a dialog on its own, so a script that blocks
waiting for "my" answer can be woken by someone else's.
IT IS UNCORRELATED. Envelope uid -1, nothing to match. If you need to know your dialog is gone, key on the TYPE in the event, not on the timing.
THE DECLARED MEMBER IS PADDING. Some builds give this message a field. No client has ever written it, and neither should you.
When you may send it
- Requires
context_readyobserved - Raised by: a client-side state change: the dialog's window going away. For most windows the intent is raised from Unity's OnDisable hook, so it fires however the window disappeared; the zaap picker adds an explicit close button and an Esc shortcut, and the NPC dialogue adds its close path and the reply that ends the conversation. Only the active feature's service is subscribed, so one close produces exactly one request inferred
Related messages
- You will then receive
DialogLeaveEventobserved — the server answers by announcing which dialog closed
Recovered with score 195, confidence 0.86, margin 195 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 0 of 0.
Aucun avis à afficher.