llDialog inputs can fail to be received by a listener within the same script
tracked

Certified Lunasea
When the root prim of a linkset is more than 20m from a child prim containing a script that calls llDialog, llListen, and contains the listen event handler (such as the test script below) it will not be able to receive any inputs given to the dialog by a user. This is working in a contradictory manner to the caveats section of the documentation for llDialog at https://wiki.secondlife.com/wiki/LlDialog which contains a caveat stating the following:
"If the listener resides in the same script that created the dialog, then the dialog button is heard sim-wide."
While those of us that create items and scripts understand that things can and do change, it should be noted that the residents who use and purchase that content expect their items to work as intended and creators expect that scripted items we create and observe to be working will not be broken without some sort of indication of change in the documentation.
With the behavior not being what is stated in the documentation any scripts residing in a child prim of a linkset that are set up in a manner similar to that of the Test Script below will fail to work properly when that child prim is positioned more than 20m from the position of the root prim. This behavior is not intuitive and will likely result in unnecessary frustration for many users who either create content with larger linksets or who have content with larger linksets that is effected by this current behavior.
I cannot think of any reason that the behavior indicated in the above quoted caveat should have been altered, and would like to see that behavior restored. To put it simply, the currently documented behavior, including whatever is in the caveats section, is the behavior residents should, and do, expect to observe.
Test Script:
default
{
on_rez(integer start_params)
{
llResetScript();
}
state_entry()
{
llSetTimerEvent(0);
llListen(-8888, "", llGetOwner(), "TEST");
}
touch_start(integer total_number)
{
if(llDetectedKey(0) == llGetOwner() && llGetAgentSize(llGetOwner()) != ZERO_VECTOR)
{// Check to see if the owner touched the prim and is on the same region.
llDialog(llGetOwner(), "Click the TEST button to test llDialog function within a linkset.", ["TEST"], -8888);
llSetTimerEvent(30);
}
}
listen(integer channel, string name, key id, string message)
{
llSetTimerEvent(0);
if(llGetAgentSize(llGetOwner()) != ZERO_VECTOR)
{// Check to see if the owner is on the region before sending a message to them.
llRegionSayTo(llGetOwner(), 0, "You clicked the TEST button.");
}
}
timer()
{
llSetTimerEvent(0);
if(llGetAgentSize(llGetOwner()) != ZERO_VECTOR)
{// Check to see if the owner is on the region before sending a message to them.
llRegionSayTo(llGetOwner(), 0, "Object clicked but no dialog input received in 30 seconds.");
}
}
changed(integer change)
{
if(change & CHANGED_OWNER)
{
llResetScript();
}
}
}
Steps to reproduce observed issue:
- Create a new script containing only the code from the Test Script above.
- Create two prims of sufficient size to allow linking them with their centers more than 20m away from each other.
- Put the script you created in step 1 into the child prim.
- Stand on the same region with the test object.
- Click the child prim.
- Click the button labeled TEST on the resulting dialog within 30 seconds.
- Wait for the output.
- Re-position the prims in your linkset to be within 20m of each other.
- Repeat steps 4 through 7.
Observed Behavior:
When the two prims are over 20m apart the script will not receive the dialog input from the TEST button. Instead it will wait for the entire 30 seconds after the child prim was clicked before shutting off the timer and giving the message "Object clicked but no dialog input received in 30 seconds." that is in the timer event.
When the two prims are within 20m of each other the script will receive the input from the TEST button and will shut off the timer and then give the message "You clicked the TEST button." that is in the listen event.
Expected Behavior:
Given the current documentation and the fact that the test script has llListen, the listen event, and llDialog reside in the same script The script should give the message "You clicked the TEST button." that is in the listen event regardless of the distance between the root and child prims as per the caveat in the wiki.
Why is this important:
The current behavior observed is not intuitive, is counter to what is documented, and will have resulted in content that has ceased to function as intended. Additionally, when writing scripts creators rely on the documentation provided in the wiki and expect that content we create today will work so long as we follow said documentation. Scripted objects that work should not be rendered broken without a good reason and some accompanying changes to the documentation in the wiki. Preferably, any such changes to the documentation would also contain some explanation of (and for) any changes in behavior that we might see.
Log In
Activity Feed
Sort by

Lucia Nightfire
As long as the only thing to be changed is the listening to the targeted dialog response portion and not the responder's own chat. Dialog has a two pronged output. This "issue" has come up several times in the past. The reason the "issue" exists is so child prims cannot be used to spy on chat on the public channel from a distance.

Certified Lunasea
The only problem here is that the call works counterintuitively and in a manner not consistent with documentation. If the listen was focused on the child prim or the dialog response were to be treated as coming from the position of the root prim then the documentation provided would essentially be correct and there would be no real issue.

SL Feedback
Hello, and thank you for your detailed bug report regarding llDialog inputs failing to be received by a listener within the same script when the root prim is more than 20m from a child prim. This issue has been brought up in the past and is currently tracked. We have no estimate when it may be resolved, but please keep an eye on future updates. We appreciate your input and hope you continue to share your observations to help improve Second Life. Thank you!

SL Feedback
tracked