public override void OnGrabPart(SceneObjectPart part, Vector3 offsetPos, IClientAPI remoteClient) { m_parts.Remove(part.UUID); remoteClient.SendKillObject(m_regionHandle, part.LocalId); remoteClient.AddMoney(1); remoteClient.SendChatMessage("Poof!", 1, AbsolutePosition, "Party Party", UUID.Zero, (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); }
private void SendSystemChat(IClientAPI client, string format, params Object[] args) { Vector3 GodPos = new Vector3(128.0f, 128.0f, 128.0f); string msg = String.Format(format, args); ((Scene)client.Scene).EventManager.TriggerOnChatToClient(msg, UUID.Zero, client.AgentId, client.Scene.RegionInfo.RegionID, (uint)Util.UnixTimeSinceEpoch(), ChatToClientType.InworldChat); client.SendChatMessage(msg, (byte)ChatTypeEnum.Say, GodPos, "System", UUID.Zero, UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); }
private void SendClientChat(IClientAPI client, string format, params Object[] args) { Vector3 Pos = new Vector3(128.0f, 128.0f, 128.0f); // close enough, we're sending to the viewer no matter what string msg = String.Format(format, args); ((Scene)client.Scene).EventManager.TriggerOnChatToClient(msg, UUID.Zero, client.AgentId, client.Scene.RegionInfo.RegionID, (uint)Util.UnixTimeSinceEpoch(), ChatToClientType.InworldChat); client.SendChatMessage(msg, (byte)ChatTypeEnum.Say, Pos, client.Name, UUID.Zero, UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); }
public void OnNewClient(IClientAPI client) { IScenePresence SP = client.Scene.GetScenePresence(client.AgentId); //If chat is not blocked for now, add to the not blocked list if (!m_blockChat) { if (!m_authorizedSpeakers.Contains(client.AgentId)) { m_authorizedSpeakers.Add(client.AgentId); } } if (!SP.IsChildAgent) { //Tell all the clients about the incoming client if it is enabled if (m_announceNewAgents) { client.Scene.ForEachScenePresence(delegate(IScenePresence presence) { if (presence.UUID != client.AgentId && !presence.IsChildAgent) { IEntityCountModule entityCountModule = client.Scene.RequestModuleInterface <IEntityCountModule> (); if (entityCountModule != null) { presence.ControllingClient.SendChatMessage( client.Name + " has joined the region. Total Agents: " + (entityCountModule.RootAgents + 1), 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully ); } } } ); } //Send the new user a welcome message if (m_useWelcomeMessage) { if (m_welcomeMessage != "") { client.SendChatMessage( m_welcomeMessage, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully ); } } } }
public override void OnGrabGroup(Vector3 offsetPos, IClientAPI remoteClient) { if (m_parts.Count == 1) { m_parts.Remove(m_rootPart.UUID); m_scene.DeleteSceneObject(this, false); remoteClient.SendKillObject(m_regionHandle, m_rootPart.LocalId); remoteClient.AddMoney(50); remoteClient.SendChatMessage("KABLAM!!!", 1, AbsolutePosition, "Groupie Groupie", UUID.Zero, (byte)ChatSourceType.Object, (byte)ChatAudibleLevel.Fully); } }
/** * @Brief Message from client to chat or IM. * * All we do is tag the message with the client's language code * by putting [[[lc]]] on the front. But if the message already * has [[[lc]]] on the front, validate then leave it as is. * * WhatevToClient() will strip the tag off and use it to determine * if the message needs to be translated or not when passing it * back out to the other client. */ public void ClientToWhatev(ITranslatorFinished finished, string message, int channel) { // don't tag messages headed for scripts // they're probably something like a button from a menu if (channel == PUBLIC_CHANNEL) { // if user typed message with a [[[lc]]] prefix, // validate and convert to lower-case 2-letter code int i = message.IndexOf("[[["); int j = message.IndexOf("]]]"); if ((i == 0) && (j > 0)) { string given = message.Substring(3, j - 3).Trim(); if (given != NOTRANSLATE) { string lclo = CheckLangCode(given); if (lclo == null) { client.SendChatMessage("unknown language code " + given, (byte)ChatTypeEnum.Owner, Vector3.Zero, "Translator", UUID.Zero, UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); message = null; // don't pass bad message to sim } else { message = "[[[" + lclo + message.Substring(j); } } } else { // user didn't give an explicit [[[lc]]] prefix, // use the client's langcode setting to tag message message = "[[[" + langcode + "]]]" + message; } } finished(message); }
public void OnNewClient(IClientAPI client) { ScenePresence SP = ((Scene)client.Scene).GetScenePresence(client.AgentId); if (!SP.IsChildAgent) { //If chat is not blocked for now, add to the not blocked list if (!m_blockChat) { if (!m_authorizedSpeakers.Contains(client.AgentId)) m_authorizedSpeakers.Add(client.AgentId); } //Tell all the clients about the incoming client if it is enabled if (m_announceNewAgents) { ((Scene)client.Scene).ForEachScenePresence(delegate(ScenePresence presence) { if (presence.UUID != client.AgentId && !presence.IsChildAgent) { IEntityCountModule entityCountModule = client.Scene.RequestModuleInterface<IEntityCountModule>(); if (entityCountModule != null) presence.ControllingClient.SendChatMessage(client.Name + " has joined the region. Total Agents: " + (entityCountModule.RootAgents + 1), 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } ); } //Send the new user a welcome message if (m_useWelcomeMessage) { if (m_welcomeMessage != "") { client.SendChatMessage(m_welcomeMessage, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } } }
public virtual void OnChatBroadcast(Object sender, OSChatMessage c) { // unless the chat to be broadcast is of type Region, we // drop it if its channel is neither 0 nor DEBUG_CHANNEL if (c.Channel != 0 && c.Channel != DEBUG_CHANNEL && c.Type != ChatTypeEnum.Region) { return; } ChatTypeEnum cType = c.Type; if (c.Channel == DEBUG_CHANNEL) { cType = ChatTypeEnum.DebugChannel; } if (cType == ChatTypeEnum.Region) { cType = ChatTypeEnum.Say; } if (c.Message.Length > 1100) { c.Message = c.Message.Substring(0, 1000); } // broadcast chat works by redistributing every incoming chat // message to each avatar in the scene. string fromName = c.From; UUID fromID = UUID.Zero; UUID ownerID = UUID.Zero; ChatSourceType sourceType = ChatSourceType.Object; if (null != c.Sender) { ScenePresence avatar = (c.Scene as Scene).GetScenePresence(c.Sender.AgentId); fromID = c.Sender.AgentId; fromName = avatar.Name; ownerID = c.Sender.AgentId; sourceType = ChatSourceType.Agent; } else if (c.SenderUUID != UUID.Zero) { fromID = c.SenderUUID; ownerID = ((SceneObjectPart)c.SenderObject).OwnerID; } // m_log.DebugFormat("[CHAT] Broadcast: fromID {0} fromName {1}, cType {2}, sType {3}", fromID, fromName, cType, sourceType); ((Scene)c.Scene).ForEachScenePresence( delegate(ScenePresence presence) { // ignore chat from child agents if (presence.IsChildAgent) { return; } IClientAPI client = presence.ControllingClient; // don't forward SayOwner chat from objects to // non-owner agents if ((c.Type == ChatTypeEnum.Owner) && (null != c.SenderObject) && (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId)) { return; } presence.Scene.EventManager.TriggerOnChatToClient(c.Message, fromID, client.AgentId, presence.Scene.RegionInfo.RegionID, (uint)Util.UnixTimeSinceEpoch(), ChatToClientType.InworldChat); client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, ownerID, (byte)sourceType, (byte)ChatAudibleLevel.Fully); }); }
public void OnNewClient(IClientAPI client) { ScenePresence SP = ((Scene)client.Scene).GetScenePresence(client.AgentId); if (!SP.IsChildAgent) { if (!m_blockChat) { if (!m_authorizedSpeakers.Contains(client.AgentId)) m_authorizedSpeakers.Add(client.AgentId); } int AgentCount = 0; lock (RegionAgentCount) { RegionAgentCount.TryGetValue(client.Scene.RegionInfo.RegionID, out AgentCount); AgentCount++; RegionAgentCount[client.Scene.RegionInfo.RegionID] = AgentCount; } if (m_announceNewAgents) { ((Scene)client.Scene).ForEachScenePresence(delegate(ScenePresence presence) { if (presence.UUID != client.AgentId && !presence.IsChildAgent) { presence.ControllingClient.SendChatMessage(client.Name + " has joined the region. Total Agents: " + AgentCount, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } ); } if (m_useWelcomeMessage) { if (m_welcomeMessage != "") { client.SendChatMessage(m_welcomeMessage, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } } }
private void SendSystemChat(IClientAPI client, string format, params Object[] args) { Vector3 GodPos = new Vector3(128.0f, 128.0f, 128.0f); string msg = String.Format(format, args); ((Scene)client.Scene).EventManager.TriggerOnChatToClient(msg, UUID.Zero, client.AgentId, client.Scene.RegionInfo.RegionID, (uint)Util.UnixTimeSinceEpoch(), ChatToClientType.InworldChat); client.SendChatMessage(msg, (byte)ChatTypeEnum.Say, GodPos, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); }
public virtual void OnChatBroadcast(Object sender, OSChatMessage c) { if (c.Channel != 0 && c.Channel != DEBUG_CHANNEL) { return; } ChatTypeEnum cType = c.Type; if (c.Channel == DEBUG_CHANNEL) { cType = ChatTypeEnum.DebugChannel; } if (cType == ChatTypeEnum.Region) { cType = ChatTypeEnum.Say; } if (c.Message.Length > 1100) { c.Message = c.Message.Substring(0, 1000); } // broadcast chat works by redistributing every incoming chat // message to each avatar in the scene. string fromName = c.From; UUID fromID = UUID.Zero; ChatSourceType sourceType = ChatSourceType.Object; if (null != c.Sender) { ScenePresence avatar = (c.Scene as Scene).GetScenePresence(c.Sender.AgentId); fromID = c.Sender.AgentId; fromName = avatar.Name; sourceType = ChatSourceType.Agent; } else if (c.SenderUUID != UUID.Zero) { fromID = c.SenderUUID; } // m_log.DebugFormat("[CHAT] Broadcast: fromID {0} fromName {1}, cType {2}, sType {3}", fromID, fromName, cType, sourceType); HashSet <UUID> receiverIDs = new HashSet <UUID>(); ((Scene)c.Scene).ForEachScenePresence( delegate(ScenePresence presence) { // ignore chat from child agents if (presence.IsChildAgent) { return; } IClientAPI client = presence.ControllingClient; // don't forward SayOwner chat from objects to // non-owner agents if ((c.Type == ChatTypeEnum.Owner) && (null != c.SenderObject) && (((SceneObjectPart)c.SenderObject).OwnerID != client.AgentId)) { return; } client.SendChatMessage(c.Message, (byte)cType, CenterOfRegion, fromName, fromID, (byte)sourceType, (byte)ChatAudibleLevel.Fully); receiverIDs.Add(presence.UUID); }); (c.Scene as Scene).EventManager.TriggerOnChatToClients( fromID, receiverIDs, c.Message, cType, CenterOfRegion, fromName, sourceType, ChatAudibleLevel.Fully); }
protected virtual void OnChatBroadcast(Object sender, OSChatMessage c) { // unless the chat to be broadcast is of type Region, we // drop it if its channel is neither 0 nor DEBUG_CHANNEL if (c.Channel != DEFAULT_CHANNEL && c.Channel != DEBUG_CHANNEL && c.Type != ChatTypeEnum.Region) { return; } ChatTypeEnum cType = c.Type; if (c.Channel == DEBUG_CHANNEL) { cType = ChatTypeEnum.DebugChannel; } if (c.Range > m_maxChatDistance) { c.Range = m_maxChatDistance; } if (cType == ChatTypeEnum.SayTo) { //Change to something client can understand as SayTo doesn't exist except on the server cType = ChatTypeEnum.Owner; } if (cType == ChatTypeEnum.Region) { cType = ChatTypeEnum.Say; } if (c.Message.Length > 1100) { c.Message = c.Message.Substring(0, 1000); } // broadcast chat works by redistributing every incoming chat // message to each avatar in the scene. string fromName = c.From; UUID fromID = UUID.Zero; ChatSourceType sourceType = ChatSourceType.Object; if (null != c.Sender) { IScenePresence avatar = c.Scene.GetScenePresence(c.Sender.AgentId); fromID = c.Sender.AgentId; fromName = avatar.Name; sourceType = ChatSourceType.Agent; } // MainConsole.Instance.DebugFormat("[CHAT] Broadcast: fromID {0} fromName {1}, cType {2}, sType {3}", fromID, fromName, cType, sourceType); c.Scene.ForEachScenePresence( delegate(IScenePresence presence) { // ignore chat from child agents if (presence.IsChildAgent) { return; } IClientAPI client = presence.ControllingClient; // don't forward SayOwner chat from objects to // non-owner agents if ((c.Type == ChatTypeEnum.Owner) && (null != c.SenderObject) && (c.SenderObject.OwnerID != client.AgentId)) { return; } // don't forward SayTo chat from objects to // non-targeted agents if ((c.Type == ChatTypeEnum.SayTo) && (c.ToAgentID != client.AgentId)) { return; } bool cached = false; MuteList[] mutes = GetMutes(client.AgentId, out cached); foreach (MuteList m in mutes) { if (m.MuteID == c.SenderUUID || (c.SenderObject != null && m.MuteID == c.SenderObject.ParentEntity.UUID)) { return; } } client.SendChatMessage(c.Message, (byte)cType, new Vector3(client.Scene.RegionInfo.RegionSizeX * 0.5f, client.Scene.RegionInfo.RegionSizeY * 0.5f, 30), fromName, fromID, (byte)sourceType, (byte)ChatAudibleLevel.Fully); }); }
private Hashtable userInteract(Hashtable requestData) { Hashtable rparms = new Hashtable(); try { UUID receiverUUID = UUID.Parse((string)requestData["receiverUUID"]); Int32 type = Int32.Parse((string)requestData["type"]); String payloadID = (string)requestData["payloadID"]; Dictionary <string, string> d = new Dictionary <string, string>(); d.Add("method", "getNotificationMessage"); d.Add("payloadID", payloadID); Dictionary <string, string> messageItems = CommunicationHelpers.DoRequest(gatewayURL, d); if (messageItems == null) { throw new Exception("Could not fetch payload with ID " + payloadID); } m_log.Debug("[OMECONOMY] userInteract*:"); foreach (KeyValuePair <string, string> pair in messageItems) { m_log.Debug("[OMECONOMY] " + pair.Key + " " + pair.Value); } IClientAPI client = SceneHandler.Instance.LocateClientObject(receiverUUID); if (client == null) { throw new Exception("Could not locate the specified avatar"); } Scene userScene = SceneHandler.Instance.GetSceneByUUID(client.Scene.RegionInfo.originRegionID); if (userScene == null) { throw new Exception("Could not locate the specified scene"); } String message = messageItems["message"]; UUID senderUUID = UUID.Zero; String senderName = String.Empty; IDialogModule dm = null; IClientAPI sender = null; IUserManagement userManager = SceneHandler.Instance.GetRandomScene().RequestModuleInterface <IUserManagement>(); if (userManager == null) { throw new Exception("Could not locate UserMangement Interface"); } switch (type) { case (int)NotificationType.LOAD_URL: String url = messageItems["url"]; dm = userScene.RequestModuleInterface <IDialogModule>(); dm.SendUrlToUser(receiverUUID, "OMEconomy", UUID.Zero, UUID.Zero, false, message, url); break; case (int)NotificationType.CHAT_MESSAGE: senderUUID = UUID.Parse(messageItems["senderUUID"]); senderName = userManager.GetUserName(senderUUID); client.SendChatMessage( message, (byte)ChatTypeEnum.Say, Vector3.Zero, senderName, senderUUID, senderUUID, (byte)ChatSourceType.Agent, (byte)ChatAudibleLevel.Fully); sender = SceneHandler.Instance.LocateClientObject(senderUUID); if (sender != null) { sender.SendChatMessage( message, (byte)ChatTypeEnum.Say, Vector3.Zero, senderName, senderUUID, senderUUID, (byte)ChatSourceType.Agent, (byte)ChatAudibleLevel.Fully); } break; case (int)NotificationType.ALERT: dm = userScene.RequestModuleInterface <IDialogModule>(); dm.SendAlertToUser(receiverUUID, message); break; case (int)NotificationType.DIALOG: client.SendBlueBoxMessage(UUID.Zero, "", message); break; case (int)NotificationType.GIVE_NOTECARD: break; case (int)NotificationType.INSTANT_MESSAGE: senderUUID = UUID.Parse(messageItems["senderUUID"]); UUID sessionUUID = UUID.Parse(messageItems["sessionUUID"]); if (messageItems.ContainsKey("senderName")) { senderName = messageItems["senderName"]; } else { senderName = userManager.GetUserName(UUID.Parse((string)messageItems["senderUUID"])); } GridInstantMessage msg = new GridInstantMessage(); msg.fromAgentID = senderUUID.Guid; msg.toAgentID = receiverUUID.Guid; msg.imSessionID = sessionUUID.Guid; msg.fromAgentName = senderName; msg.message = (message != null && message.Length > 1024) ? msg.message = message.Substring(0, 1024) : message; msg.dialog = (byte)InstantMessageDialog.MessageFromAgent; msg.fromGroup = false; msg.offline = (byte)0; msg.ParentEstateID = 0; msg.Position = Vector3.Zero; msg.RegionID = userScene.RegionInfo.RegionID.Guid; client.SendInstantMessage(msg); sender = SceneHandler.Instance.LocateClientObject(senderUUID); if (sender != null) { sender.SendInstantMessage(msg); } break; default: break; } rparms["success"] = true; } catch (Exception e) { m_log.ErrorFormat("[OMECONOMY]: userInteract() Exception: {1} - {2}", Name, e.Message, e.StackTrace); rparms["success"] = false; } return(rparms); }
private void SendClientChat(IClientAPI client, string format, params Object[] args) { Vector3 Pos = new Vector3(128.0f, 128.0f, 128.0f); // close enough, we're sending to the viewer no matter what string msg = String.Format(format, args); ((Scene)client.Scene).EventManager.TriggerOnChatToClient(msg, UUID.Zero, client.AgentId, client.Scene.RegionInfo.RegionID, (uint)Util.UnixTimeSinceEpoch(), ChatToClientType.InworldChat); client.SendChatMessage(msg, (byte)ChatTypeEnum.Say, Pos, client.Name, UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); }
public void OnNewClient(IClientAPI client) { ScenePresence SP = ((Scene)client.Scene).GetScenePresence(client.AgentId); if (!SP.IsChildAgent) { //If chat is not blocked for now, add to the not blocked list if (!m_blockChat) { if (!m_authorizedSpeakers.Contains(client.AgentId)) m_authorizedSpeakers.Add(client.AgentId); } //Update how many users are in the region int AgentCount = 0; lock (RegionAgentCount) { RegionAgentCount.TryGetValue(client.Scene.RegionInfo.RegionID, out AgentCount); AgentCount++; RegionAgentCount[client.Scene.RegionInfo.RegionID] = AgentCount; } //Tell all the clients about the incoming client if it is enabled if (m_announceNewAgents) { ((Scene)client.Scene).ForEachScenePresence(delegate(ScenePresence presence) { if (presence.UUID != client.AgentId && !presence.IsChildAgent) { presence.ControllingClient.SendChatMessage(client.Name + " has joined the region. Total Agents: " + AgentCount, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } ); } //Send the new user a welcome message if (m_useWelcomeMessage) { if (m_welcomeMessage != "") { client.SendChatMessage(m_welcomeMessage, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } } }