Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0006228opensim[REGION] Script Functionspublic2012-08-19 16:532012-08-19 21:18
ReporterFrank Northmead 
Assigned Tomelanie 
PrioritynormalSeveritymajorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformALLOSLinuxOS VersionCentos 6.2
Product Versionmaster (dev code) 
Target VersionFixed in Version 
Summary0006228: llDialog chat is originating in the wrong location
DescriptionAccording to the wiki:

"Even though the chat will originate with the user's name and key, the chat position will be centered at the object calling llDialog. This ensures the object will be always within listening range of the answer."

However, the chat is originating at the AV with the ID specified in the llDialog call. Which means that when the object is out of llSay range from the object, the dialog fails.
Steps To Reproduce1. Create one prim with script that creates a dialog (llDialog).
2. Create a secong prim with script that listens on the channel used in the first dialog and reports when it hears anything.
3. Move the first dialog out of llSay range from the second dialog.
4. Make sure the second dialog is within llSay range of your AV.
5. Click on the first prim to activate the dialog and select an option on the dialog.
6. The second prim will report the dialog chat and the llDialog will fail.
TagsNo tags attached.
Git Revision or version number
Run Mode Grid (1 Region per Sim)
Physics EngineODE
EnvironmentMono / Linux64
Mono Version2.10
Viewer
Attached Files

- Relationships

-  Notes
(0022383)
Frank Northmead (reporter)
2012-08-19 17:38

I have repeated the test in SL and the dialog works as described in the wiki, ie. the location of the dialog chat output is the prim containing the llDialog script.
(0022384)
Frank Northmead (reporter)
2012-08-19 20:33

A hack which "fixes" this is changing the ChatTypeEnum.Shout below to ChatTypeEnum.Region.

private bool HandlerScriptDialogReply(IClientAPI sender, Packet Pack)
{
            ScriptDialogReplyPacket rdialog = (ScriptDialogReplyPacket)Pack;

            //m_log.DebugFormat("[CLIENT]: Received ScriptDialogReply from {0}", rdialog.Data.ObjectID);

            #region Packet Session and User Check
            if (m_checkPackets)
            {
                if (rdialog.AgentData.SessionID != SessionId ||
                    rdialog.AgentData.AgentID != AgentId)
                    return true;
            }
            #endregion

            int ch = rdialog.Data.ChatChannel;
            byte[] msg = rdialog.Data.ButtonLabel;
            if (OnChatFromClient != null)
            {
                OSChatMessage args = new OSChatMessage();
                args.Channel = ch;
                args.From = String.Empty;
                args.Message = Utils.BytesToString(msg);
                args.Type = ChatTypeEnum.Shout;
                args.Position = new Vector3();
                args.Scene = Scene;
                args.Sender = this;
                ChatMessage handlerChatFromClient2 = OnChatFromClient;
                if (handlerChatFromClient2 != null)
                    handlerChatFromClient2(this, args);
            }

            return true;
        }


avination works correctly, and so there is aready a fix for this there which melanie is looking at porting to OS.

- Issue History
Date Modified Username Field Change
2012-08-19 16:53 Frank Northmead New Issue
2012-08-19 17:38 Frank Northmead Note Added: 0022383
2012-08-19 20:33 Frank Northmead Note Added: 0022384
2012-08-19 21:18 melanie Status new => resolved
2012-08-19 21:18 melanie Resolution open => fixed
2012-08-19 21:18 melanie Assigned To => melanie


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker