aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs7
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs39
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs12
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs3
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs5
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs10
6 files changed, 54 insertions, 22 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 7427c59..8e5a6d2 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -817,8 +817,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
817 OutPacket(mov, ThrottleOutPacketType.Unknown); 817 OutPacket(mov, ThrottleOutPacketType.Unknown);
818 } 818 }
819 819
820 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, 820 public void SendChatMessage(
821 UUID fromAgentID, byte source, byte audible) 821 string message, byte type, Vector3 fromPos, string fromName,
822 UUID fromAgentID, UUID ownerID, byte source, byte audible)
822 { 823 {
823 ChatFromSimulatorPacket reply = (ChatFromSimulatorPacket)PacketPool.Instance.GetPacket(PacketType.ChatFromSimulator); 824 ChatFromSimulatorPacket reply = (ChatFromSimulatorPacket)PacketPool.Instance.GetPacket(PacketType.ChatFromSimulator);
824 reply.ChatData.Audible = audible; 825 reply.ChatData.Audible = audible;
@@ -827,7 +828,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
827 reply.ChatData.SourceType = source; 828 reply.ChatData.SourceType = source;
828 reply.ChatData.Position = fromPos; 829 reply.ChatData.Position = fromPos;
829 reply.ChatData.FromName = Util.StringToBytes256(fromName); 830 reply.ChatData.FromName = Util.StringToBytes256(fromName);
830 reply.ChatData.OwnerID = fromAgentID; 831 reply.ChatData.OwnerID = ownerID;
831 reply.ChatData.SourceID = fromAgentID; 832 reply.ChatData.SourceID = fromAgentID;
832 833
833 OutPacket(reply, ThrottleOutPacketType.Task); 834 OutPacket(reply, ThrottleOutPacketType.Task);
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs
index e4452fb..ddf92c3 100644
--- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs
@@ -186,6 +186,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
186 { 186 {
187 string fromName = c.From; 187 string fromName = c.From;
188 UUID fromID = UUID.Zero; 188 UUID fromID = UUID.Zero;
189 UUID ownerID = UUID.Zero;
189 UUID targetID = c.TargetUUID; 190 UUID targetID = c.TargetUUID;
190 string message = c.Message; 191 string message = c.Message;
191 IScene scene = c.Scene; 192 IScene scene = c.Scene;
@@ -208,12 +209,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
208 fromPos = avatar.AbsolutePosition; 209 fromPos = avatar.AbsolutePosition;
209 fromName = avatar.Name; 210 fromName = avatar.Name;
210 fromID = c.Sender.AgentId; 211 fromID = c.Sender.AgentId;
212 ownerID = c.Sender.AgentId;
211 213
212 break; 214 break;
213 215
214 case ChatSourceType.Object: 216 case ChatSourceType.Object:
215 fromID = c.SenderUUID; 217 fromID = c.SenderUUID;
216 218
219 if (c.SenderObject != null && c.SenderObject is SceneObjectPart)
220 ownerID = ((SceneObjectPart)c.SenderObject).OwnerID;
221
217 break; 222 break;
218 } 223 }
219 224
@@ -236,7 +241,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
236 s.ForEachRootScenePresence( 241 s.ForEachRootScenePresence(
237 delegate(ScenePresence presence) 242 delegate(ScenePresence presence)
238 { 243 {
239 if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType, false)) 244 if (TrySendChatMessage(
245 presence, fromPos, regionPos, fromID, ownerID, fromName, c.Type, message, sourceType, false))
240 receiverIDs.Add(presence.UUID); 246 receiverIDs.Add(presence.UUID);
241 } 247 }
242 ); 248 );
@@ -248,8 +254,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
248 ScenePresence presence = s.GetScenePresence(targetID); 254 ScenePresence presence = s.GetScenePresence(targetID);
249 if (presence != null && !presence.IsChildAgent) 255 if (presence != null && !presence.IsChildAgent)
250 { 256 {
251 if (TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, ChatTypeEnum.Say, message, sourceType, true)) 257 if (TrySendChatMessage(
252 receiverIDs.Add(presence.UUID); 258 presence, fromPos, regionPos, fromID, ownerID, fromName, ChatTypeEnum.Say, message, sourceType, true))
259 receiverIDs.Add(presence.UUID);
253 } 260 }
254 } 261 }
255 } 262 }
@@ -305,9 +312,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
305 (null != c.SenderObject) && 312 (null != c.SenderObject) &&
306 (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId)) 313 (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId))
307 return; 314 return;
308 315
309 client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, 316 client.SendChatMessage(
310 (byte)sourceType, (byte)ChatAudibleLevel.Fully); 317 c.Message, (byte)cType, CenterOfRegion, fromName, fromID, fromID,
318 (byte)sourceType, (byte)ChatAudibleLevel.Fully);
319
311 receiverIDs.Add(client.AgentId); 320 receiverIDs.Add(client.AgentId);
312 }); 321 });
313 322
@@ -322,15 +331,20 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
322 /// <param name="fromPos"></param> 331 /// <param name="fromPos"></param>
323 /// <param name="regionPos">/param> 332 /// <param name="regionPos">/param>
324 /// <param name="fromAgentID"></param> 333 /// <param name="fromAgentID"></param>
334 /// <param name='ownerID'>
335 /// Owner of the message. For at least some messages from objects, this has to be correctly filled with the owner's UUID.
336 /// This is the case for script error messages in viewer 3 since LLViewer change EXT-7762
337 /// </param>
325 /// <param name="fromName"></param> 338 /// <param name="fromName"></param>
326 /// <param name="type"></param> 339 /// <param name="type"></param>
327 /// <param name="message"></param> 340 /// <param name="message"></param>
328 /// <param name="src"></param> 341 /// <param name="src"></param>
329 /// <returns>true if the message was sent to the receiver, false if it was not sent due to failing a 342 /// <returns>true if the message was sent to the receiver, false if it was not sent due to failing a
330 /// precondition</returns> 343 /// precondition</returns>
331 protected virtual bool TrySendChatMessage(ScenePresence presence, Vector3 fromPos, Vector3 regionPos, 344 protected virtual bool TrySendChatMessage(
332 UUID fromAgentID, string fromName, ChatTypeEnum type, 345 ScenePresence presence, Vector3 fromPos, Vector3 regionPos,
333 string message, ChatSourceType src, bool ignoreDistance) 346 UUID fromAgentID, UUID ownerID, string fromName, ChatTypeEnum type,
347 string message, ChatSourceType src, bool ignoreDistance)
334 { 348 {
335 // don't send stuff to child agents 349 // don't send stuff to child agents
336 if (presence.IsChildAgent) return false; 350 if (presence.IsChildAgent) return false;
@@ -353,10 +367,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
353 } 367 }
354 368
355 // TODO: should change so the message is sent through the avatar rather than direct to the ClientView 369 // TODO: should change so the message is sent through the avatar rather than direct to the ClientView
356 presence.ControllingClient.SendChatMessage(message, (byte) type, fromPos, fromName, 370 presence.ControllingClient.SendChatMessage(
357 fromAgentID, (byte)src, (byte)ChatAudibleLevel.Fully); 371 message, (byte) type, fromPos, fromName,
372 fromAgentID, ownerID, (byte)src, (byte)ChatAudibleLevel.Fully);
358 373
359 return true; 374 return true;
360 } 375 }
361 } 376 }
362} 377} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 99bf72a..df43271 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -38,6 +38,18 @@ namespace OpenSim.Region.Framework.Scenes
38{ 38{
39 public partial class Scene 39 public partial class Scene
40 { 40 {
41 /// <summary>
42 /// Send chat to listeners.
43 /// </summary>
44 /// <param name='message'></param>
45 /// <param name='type'>/param>
46 /// <param name='channel'></param>
47 /// <param name='fromPos'></param>
48 /// <param name='fromName'></param>
49 /// <param name='fromID'></param>
50 /// <param name='targetID'></param>
51 /// <param name='fromAgent'></param>
52 /// <param name='broadcast'></param>
41 protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName, 53 protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName,
42 UUID fromID, UUID targetID, bool fromAgent, bool broadcast) 54 UUID fromID, UUID targetID, bool fromAgent, bool broadcast)
43 { 55 {
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index e93bd7c..781539a 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -954,7 +954,8 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
954 954
955 } 955 }
956 956
957 public void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, byte source, byte audible) 957 public void SendChatMessage(
958 string message, byte type, Vector3 fromPos, string fromName, UUID fromAgentID, UUID ownerID, byte source, byte audible)
958 { 959 {
959 if (audible > 0 && message.Length > 0) 960 if (audible > 0 && message.Length > 0)
960 IRC_SendChannelPrivmsg(fromName, message); 961 IRC_SendChannelPrivmsg(fromName, message);
diff --git a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs
index e22618d..5c3be29 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Concierge/ConciergeModule.cs
@@ -546,8 +546,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Concierge
546 c.SenderUUID = UUID.Zero; 546 c.SenderUUID = UUID.Zero;
547 c.Scene = agent.Scene; 547 c.Scene = agent.Scene;
548 548
549 agent.ControllingClient.SendChatMessage(msg, (byte) ChatTypeEnum.Say, PosOfGod, m_whoami, UUID.Zero, 549 agent.ControllingClient.SendChatMessage(
550 (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); 550 msg, (byte) ChatTypeEnum.Say, PosOfGod, m_whoami, UUID.Zero, UUID.Zero,
551 (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully);
551 } 552 }
552 553
553 private static void checkStringParameters(XmlRpcRequest request, string[] param) 554 private static void checkStringParameters(XmlRpcRequest request, string[] param)
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index ffd4222..5ea2bcd 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -603,13 +603,15 @@ namespace OpenSim.Region.OptionalModules.World.NPC
603 { 603 {
604 } 604 }
605 605
606 public virtual void SendChatMessage(string message, byte type, Vector3 fromPos, string fromName, 606 public virtual void SendChatMessage(
607 UUID fromAgentID, byte source, byte audible) 607 string message, byte type, Vector3 fromPos, string fromName,
608 UUID fromAgentID, UUID ownerID, byte source, byte audible)
608 { 609 {
609 } 610 }
610 611
611 public virtual void SendChatMessage(byte[] message, byte type, Vector3 fromPos, string fromName, 612 public virtual void SendChatMessage(
612 UUID fromAgentID, byte source, byte audible) 613 byte[] message, byte type, Vector3 fromPos, string fromName,
614 UUID fromAgentID, UUID ownerID, byte source, byte audible)
613 { 615 {
614 } 616 }
615 617