예제 #1
0
        private void OnDenyFriendRequest(IClientAPI client, UUID agentID, UUID friendID, List <UUID> callingCardFolders)
        {
            MainConsole.Instance.DebugFormat("[FRIENDS]: {0} denied friendship to {1}", agentID, friendID);


            FriendInfo[] friends = FriendsService.GetFriendsRequest(agentID).ToArray();
            foreach (FriendInfo fi in friends)
            {
                if (fi.MyFlags == 0)
                {
                    UUID fromAgentID;
                    if (!UUID.TryParse(fi.Friend, out fromAgentID))
                    {
                        continue;
                    }
                    if (fromAgentID == friendID) //Get those pesky HG travelers as well
                    {
                        FriendsService.Delete(agentID, fi.Friend);
                    }
                }
            }
            FriendsService.Delete(friendID, agentID.ToString());

            //
            // Notify the friend
            //

            // Try local
            if (LocalFriendshipDenied(agentID, client.Name, friendID))
            {
                return;
            }
            SyncMessagePosterService.PostToServer(SyncMessageHelper.FriendshipDenied(
                                                      agentID, client.Name, friendID, m_scene.RegionInfo.RegionID));
        }
예제 #2
0
        public void OfflineFriendRequest(IClientAPI client)
        {
            // Barrowed a few lines from SendFriendsOnlineIfNeeded() above.
            UUID agentID = client.AgentId;

            FriendInfo[]       friends = FriendsService.GetFriendsRequest(agentID).ToArray();
            GridInstantMessage im      = new GridInstantMessage(client.Scene, UUID.Zero, String.Empty, agentID,
                                                                (byte)InstantMessageDialog.FriendshipOffered,
                                                                "Will you be my friend?", true, Vector3.Zero);

            foreach (FriendInfo fi in friends)
            {
                if (fi.MyFlags == 0)
                {
                    UUID fromAgentID;
                    if (!UUID.TryParse(fi.Friend, out fromAgentID))
                    {
                        continue;
                    }

                    UserAccount account = m_scene.UserAccountService.GetUserAccount(
                        client.Scene.RegionInfo.AllScopeIDs, fromAgentID);
                    im.fromAgentID = fromAgentID;
                    if (account != null)
                    {
                        im.fromAgentName = account.Name;
                    }
                    im.offline     = 1;
                    im.imSessionID = im.fromAgentID;

                    LocalFriendshipOffered(agentID, im);
                }
            }
        }
예제 #3
0
        public void OfflineFriendRequest(IClientAPI client)
        {
            UUID agentID        = client.AgentId;
            var  friendRequests = FriendsService.GetFriendsRequest(agentID);

            if (friendRequests == null)
            {
                return;
            }

            FriendInfo [] friends = friendRequests.ToArray();

            GridInstantMessage im = new GridInstantMessage()
            {
                ToAgentID = agentID,
                Dialog    = (byte)InstantMessageDialog.FriendshipOffered,
                Message   = "Will you be my friend?",
                Offline   = 1,
                RegionID  = client.Scene.RegionInfo.RegionID
            };

            foreach (FriendInfo fi in friends)
            {
                if (fi.MyFlags == 0)
                {
                    UUID fromAgentID;
                    if (!UUID.TryParse(fi.Friend, out fromAgentID))
                    {
                        continue;
                    }

                    UserAccount account = m_scene.UserAccountService.GetUserAccount(
                        client.Scene.RegionInfo.AllScopeIDs, fromAgentID);
                    im.FromAgentID = fromAgentID;
                    if (account != null)
                    {
                        im.FromAgentName = account.Name;
                    }
                    im.Offline   = 1;
                    im.SessionID = im.FromAgentID;

                    LocalFriendshipOffered(agentID, im);
                }
            }
        }