Textbox2Hovertext

From Second Life Wiki
Revision as of 13:16, 14 February 2013 by Ackley Bing (talk | contribs)
Jump to navigation Jump to search

<lsl> // Textbox2Hovertext.LSL by Ackley Bing . January 2013 // A simple script to allow object owners to change the "hovertext" // on their prims using a text entry box (llTextBox).

default {

   touch_start(integer num)
   {
       if(llDetectedKey(0)==llGetOwner())
       {
           llSetTimerEvent(60.0); // Time to input text until script closes listener
           llListenRemove(1);
           llListen(1, "", llGetOwner(), ""); // channel 1 for simplicity
           llTextBox( llGetOwner(), "Set Hovertext", 1); // channel 1 for simplicity
       }
   }
   listen(integer channel, string name, key id, string message)
   {
       llSetText(message, <1.0,1.0,1.0>, 1.0);
       llListenRemove(1);
       llSetTimerEvent(0.0);
   }
   timer()
   {
       llListenRemove(1);
       llSetTimerEvent(0.0);
   }

} </lsl>

Here is a further improved and corrected version by Omei Qunhua, removing the confusion between toucher and owner, and simplifying the listen removal.

I have updated my script to avoid any confusions about listeners and non-owner touches. Your version is slightly different and works just as well but is it really necessary to have duplicated information on the same page? --Ackley Bing 10:51, 13 February 2013 (PST)

<lsl> integer listenhandle;

default {

   touch_start(integer num)
   {
       key target = llDetectedKey(0);
       // remove this 'if' and the 'return' to allow anyone to change the hover text
       if (target != llGetOwner() )        
           return;
       // Avoid possible multiple active listeners, if different people click within 30 seconds
       llListenRemove(listenhandle);
       llSetTimerEvent(30.0);
       // Reduce the chance of picking up unrelated chat, by using a large negative channel
       // We could get even more secretive here if desired, but this'll do for now
       listenhandle = llListen(-12345, "", target, "");
       llTextBox( target, "Set Hovertext", -12345 );
   }
   listen(integer channel, string name, key id, string message)
   {
       llSetText(message, <1.0,1.0,1.0>, 1.0);
   }
   timer()
   {
       llListenRemove(listenhandle);
       llSetTimerEvent(0.0);
   }

} </lsl>