Difference between revisions of "Textbox2Hovertext"
Jump to navigation
Jump to search
Omei Qunhua (talk | contribs) (Improve and correct) |
Ackley Bing (talk | contribs) (to avoid unnecessary discussion about listening, as this is not a study in llListen) |
||
Line 1: | Line 1: | ||
<lsl> | <lsl> | ||
// Textbox2Hovertext.LSL by Ackley Bing . January 2013 | // Textbox2Hovertext.LSL by Ackley Bing . January 2013 | ||
// A simple script to allow hovertext | // A simple script to allow object owners to change the "hovertext" | ||
// on their prims using a text entry box (llTextBox). | |||
default | default | ||
Line 9: | Line 8: | ||
touch_start(integer num) | touch_start(integer num) | ||
{ | { | ||
if(llDetectedKey(0)==llGetOwner()) | |||
llSetTimerEvent( | { | ||
llSetTimerEvent(60.0); // Time to input text until script closes listener | |||
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) | listen(integer channel, string name, key id, string message) | ||
Line 20: | Line 21: | ||
timer() | timer() | ||
{ | { | ||
llListenRemove(1); | |||
llSetTimerEvent(0.0); | |||
} | } | ||
} | } |
Revision as of 10:32, 13 February 2013
<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 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); } 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.
<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>