Welcome to the Second Life Forums Archive

These forums are CLOSED. Please visit the new forums HERE

Removing an lldialog

Zaplok Riggles
Registered User
Join date: 25 Feb 2008
Posts: 119
03-03-2008 12:24
I am using an llDialog and I have a timeout set. However, I see no way to remove the llDialog when I time out. I take off the listen so it doesn't do anything, but it would be nice to remove the llDialog.
Ordinal Malaprop
really very ordinary
Join date: 9 Sep 2005
Posts: 4,607
03-03-2008 12:26
There is no way to do that.
_____________________
http://ordinalmalaprop.com/forum/ - visit Ordinal's Scripting Colloquium for scripting discussion with actual working BBCode!

http://ordinalmalaprop.com/engine/ - An Engine Fit For My Proceeding, my Aethernet Journal

http://www.flickr.com/groups/slgriefbuild/ - Second Life Griefbuild Digest, pictures of horrible ad griefing and land spam, and the naming of names
Hewee Zetkin
Registered User
Join date: 20 Jul 2006
Posts: 2,702
03-03-2008 12:36
You could bring up another dialog saying, "Nevermind. Please ignore the dialog below," but I doubt that's quite what you want. Heh heh.
Nika Talaj
now you see her ...
Join date: 2 Jan 2007
Posts: 5,449
03-03-2008 12:38
When I stop listening for responses to the dialog, I usually send an IM to the person who touched the object (shows up in chat) saying that the menu has timed out.

Note that, if they push the "Ignore" button that SL puts automatically on the dialog, your script is not notified.
.
Eyana Yohkoh
Registered User
Join date: 30 Nov 2006
Posts: 33
03-04-2008 14:59
I usually automatically start some listens when using a llDialog menu. If you store the listens as integers then you can use llRemoveListen later on. Basically I do something with functions looking like these basic examples:

integer menuChannel = 234; // for dialog and listening
key user; // stored on touch or on rez or however is best for the particular script
integer listen0; // used to store the menu options
integer listen1;
integer listen2;

menu(string description, list options)
{
listen0 = llListen(menuChannel, "", user, llList2String(options, 0));
listen1 = llListen(menuChannel, "", user, llList2String(options, 1));
listen2 = llListen(menuChannel, "", user, llList2String(options, 2));
llDialog(user, description, options, menuChannel);
}

then on a timer or after an option is chosen I remove the listens with a function similar to this:

stopmenu()
{
llListenRemove(listen0);
llListenRemove(listen1);
llListenRemove(listen2);
}

As far as removing the actual blue dialog window (which I think is your original question) then there is no way to do that with LSL.
_____________________
http://eyanayohkoh.blogspot.com
http://www.lslwiki.net/lslwiki/wakka.php?wakka=EyanaYohkoh
ElQ Homewood
Sleeps Professionally
Join date: 25 Apr 2007
Posts: 280
03-10-2008 14:15
I've just had the object InstantMessage the DetectedKey saying the menu has timed out, please try again.
Ollj Oh
Registered User
Join date: 28 Aug 2007
Posts: 522
03-11-2008 06:05
test
Hewee Zetkin
Registered User
Join date: 20 Jul 2006
Posts: 2,702
03-11-2008 09:41
I usually keep dialog listens open so that someone can choose an answer any time they like. The number of applications in which an immediate response is required and a timeout must be implemented is pretty small, and can be handled well with script state in any case. I've always thought it a little silly to timeout dialog listens out of a paranoia of having one more listen open on some obscure never-used channel.

While some conscientious thought is appropriate for keeping the lag low, when it starts interfering drastically with usability, functionality, readability, and maintainability--making a very simple listen script become a confusing jumble and reducing its concurrency for multiple simultaneous users, I think it best to assume the system can handle the extra listen, and will do so even more gracefully in the future as performance increases. If a user wants to touch my creation (or whatever), get a dialog, ponder the matter, go to lunch, come back, and then make his/her choice, why not let them? Computers are patient machines.
Void Singer
Int vSelf = Sing(void);
Join date: 24 Sep 2005
Posts: 6,973
03-11-2008 20:10
hmm many of the Dialogs I use open individual listens for each touching user, and close them all on a timeout after the last frequent touch.... I'll have to think about a method to warn users that the listen is closed (perhaps keep the keys in a list)....
_____________________
|
| . "Cat-Like Typing Detected"
| . This post may contain errors in logic, spelling, and
| . grammar known to the SL populace to cause confusion
|
| - Please Use PHP tags when posting scripts/code, Thanks.
| - Can't See PHP or URL Tags Correctly? Check Out This Link...
| -