Ignored

From Second Life Wiki
Revision as of 11:12, 30 November 2009 by Johan Laurasia (talk | contribs)
Jump to navigation Jump to search
Emblem-important-yellow.png LSL Feature Request
The described event does not exist. This article is a feature request.

Description

Event: ignored( key id, integer channel ){ ; }

ignored() Sent as a result of the user clicking ignored in a dialog

• key id The agent that clicked the ignore button.
• integer channel The channel on which the dialog was opened

Specification

Currently there is no way to tell if a dialog has been ignored. Scripts rely on timer events to decide when to stop listening on a channel. This can lead to delays for the user while a state is waiting for a timer event. Conversely it also leads to confusion when a user tries to click a button of a dialog that has stopped listening. This proposed event would go a long way towards alleviating the problem without breaking existing implementations.

Caveats

There is no way to tell which dialog sent the ignored event since dialogs cannot be identified. The channel number could be in use by more than one dialog. It is merely an attempt to give some useful information to the script.

All Issues ~ Search JIRA for related Bugs

Examples

<lsl> integer channel = -1000; integer listen_handle;

default {

   state_entry()
   {
       listen_handle  = llListen(channel,"", "","");
   }

   touch_start(integer count)
   {
       llDialog(llDetectedKey(0), "This is a test dialog.\n\nPlease choose one of the below options.",
                ["Yes", "No", "0", "1"], channel);
   }

   listen(integer chan, string name, key id, string mes)
   {
       if(id == llGetOwnerKey(id))//won't listen to objects unless they aren't in the region.
           llSay(0,name + " (" + (string)llGetObjectDetails(id, (list)OBJECT_POS) + ") chose option " + mes);
   }
   ignored(key id, integer c)
   {
       if(channel == c)
       {
           llListenRemove(listen_handle);
       }
   }

} </lsl>

Notes

PJIRA feature request SVC-3624

Johan Laurasia: For Starers, wouldn't it be easier to simply return 'ignore' (the button text) to the listen event? Secondly, I think the entire point behind the listen event ignore button is to dismiss the dialog window without triggering the listen event. Scripting would be easier if pushing the ignore button triggered the event, but then automatically returned and closed the listen event. Also, the typical way of scripting around the ignore button is to set a timer event and when the timer event triggers, you close the listen there. Therefore there is a way to sort of indirectly detect ignore being pressed. You can't actually detect it, but you can assume (after a time limit) that ignore was pressed. The only way I could see an ignore event being useful would be if the event returned no data, and the only valid function within that event were llListenRemove();.

Deep Notes

Signature