diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Avatar/Chat')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs | 53 |
1 files changed, 31 insertions, 22 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs index 6dacbba..e3e8718 100644 --- a/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Chat/ChatModule.cs | |||
@@ -49,7 +49,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
49 | private int m_shoutdistance = 100; | 49 | private int m_shoutdistance = 100; |
50 | private int m_whisperdistance = 10; | 50 | private int m_whisperdistance = 10; |
51 | private List<Scene> m_scenes = new List<Scene>(); | 51 | private List<Scene> m_scenes = new List<Scene>(); |
52 | 52 | private string m_adminPrefix = ""; | |
53 | internal object m_syncy = new object(); | 53 | internal object m_syncy = new object(); |
54 | 54 | ||
55 | internal IConfig m_config; | 55 | internal IConfig m_config; |
@@ -76,6 +76,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
76 | m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance); | 76 | m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance); |
77 | m_saydistance = config.Configs["Chat"].GetInt("say_distance", m_saydistance); | 77 | m_saydistance = config.Configs["Chat"].GetInt("say_distance", m_saydistance); |
78 | m_shoutdistance = config.Configs["Chat"].GetInt("shout_distance", m_shoutdistance); | 78 | m_shoutdistance = config.Configs["Chat"].GetInt("shout_distance", m_shoutdistance); |
79 | m_adminPrefix = config.Configs["Chat"].GetString("admin_prefix", ""); | ||
79 | } | 80 | } |
80 | 81 | ||
81 | public virtual void AddRegion(Scene scene) | 82 | public virtual void AddRegion(Scene scene) |
@@ -185,6 +186,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
185 | protected virtual void DeliverChatToAvatars(ChatSourceType sourceType, OSChatMessage c) | 186 | protected virtual void DeliverChatToAvatars(ChatSourceType sourceType, OSChatMessage c) |
186 | { | 187 | { |
187 | string fromName = c.From; | 188 | string fromName = c.From; |
189 | string fromNamePrefix = ""; | ||
188 | UUID fromID = UUID.Zero; | 190 | UUID fromID = UUID.Zero; |
189 | string message = c.Message; | 191 | string message = c.Message; |
190 | IScene scene = c.Scene; | 192 | IScene scene = c.Scene; |
@@ -207,7 +209,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
207 | fromPos = avatar.AbsolutePosition; | 209 | fromPos = avatar.AbsolutePosition; |
208 | fromName = avatar.Name; | 210 | fromName = avatar.Name; |
209 | fromID = c.Sender.AgentId; | 211 | fromID = c.Sender.AgentId; |
210 | 212 | if (avatar.GodLevel > 200) | |
213 | { | ||
214 | fromNamePrefix = m_adminPrefix; | ||
215 | } | ||
211 | break; | 216 | break; |
212 | 217 | ||
213 | case ChatSourceType.Object: | 218 | case ChatSourceType.Object: |
@@ -227,7 +232,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
227 | s.ForEachScenePresence( | 232 | s.ForEachScenePresence( |
228 | delegate(ScenePresence presence) | 233 | delegate(ScenePresence presence) |
229 | { | 234 | { |
230 | TrySendChatMessage(presence, fromPos, regionPos, fromID, fromName, c.Type, message, sourceType); | 235 | TrySendChatMessage(presence, fromPos, regionPos, fromID, fromNamePrefix+fromName, c.Type, message, sourceType); |
231 | } | 236 | } |
232 | ); | 237 | ); |
233 | } | 238 | } |
@@ -266,25 +271,29 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat | |||
266 | } | 271 | } |
267 | 272 | ||
268 | // m_log.DebugFormat("[CHAT] Broadcast: fromID {0} fromName {1}, cType {2}, sType {3}", fromID, fromName, cType, sourceType); | 273 | // m_log.DebugFormat("[CHAT] Broadcast: fromID {0} fromName {1}, cType {2}, sType {3}", fromID, fromName, cType, sourceType); |
269 | 274 | if (c.Scene != null) | |
270 | ((Scene)c.Scene).ForEachScenePresence( | 275 | { |
271 | delegate(ScenePresence presence) | 276 | ((Scene)c.Scene).ForEachScenePresence |
272 | { | 277 | ( |
273 | // ignore chat from child agents | 278 | delegate(ScenePresence presence) |
274 | if (presence.IsChildAgent) return; | 279 | { |
275 | 280 | // ignore chat from child agents | |
276 | IClientAPI client = presence.ControllingClient; | 281 | if (presence.IsChildAgent) return; |
277 | 282 | ||
278 | // don't forward SayOwner chat from objects to | 283 | IClientAPI client = presence.ControllingClient; |
279 | // non-owner agents | 284 | |
280 | if ((c.Type == ChatTypeEnum.Owner) && | 285 | // don't forward SayOwner chat from objects to |
281 | (null != c.SenderObject) && | 286 | // non-owner agents |
282 | (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId)) | 287 | if ((c.Type == ChatTypeEnum.Owner) && |
283 | return; | 288 | (null != c.SenderObject) && |
284 | 289 | (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId)) | |
285 | client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, | 290 | return; |
286 | (byte)sourceType, (byte)ChatAudibleLevel.Fully); | 291 | |
287 | }); | 292 | client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, |
293 | (byte)sourceType, (byte)ChatAudibleLevel.Fully); | ||
294 | } | ||
295 | ); | ||
296 | } | ||
288 | } | 297 | } |
289 | 298 | ||
290 | 299 | ||