public void TrackAgent(IClientAPI client, UUID hunter, UUID target) { bool isFriend = IsFriendOfUser(target, hunter); if (isFriend) { IFriendsModule module = m_Scene.RequestModuleInterface <IFriendsModule> (); if (module != null) { int perms = module.GetFriendPerms(hunter, target); if ((perms & (int)FriendRights.CanSeeOnMap) == (int)FriendRights.CanSeeOnMap) { UserInfo GUI = client.Scene.RequestModuleInterface <IAgentInfoService> ().GetUserInfo(target.ToString()); if (GUI != null && GUI.IsOnline) { GridRegion region = m_Scene.GridService.GetRegionByUUID( client.AllScopeIDs, GUI.CurrentRegionID); if (region != null) // just being cautious here { client.SendScriptTeleportRequest(client.Name, region.RegionName, GUI.CurrentPosition, GUI.CurrentLookAt); } region = null; // clean up } } } } }
public void TrackAgent(IClientAPI client, UUID hunter, UUID target) { bool isFriend = IsFriendOfUser(target, hunter); if (isFriend) { IFriendsModule module = m_Scenes[0].RequestModuleInterface <IFriendsModule>(); if (module != null) { int perms = module.GetFriendPerms(hunter, target); if ((perms & (int)FriendRights.CanSeeOnMap) == (int)FriendRights.CanSeeOnMap) { UserInfo GUI = client.Scene.RequestModuleInterface <IAgentInfoService>().GetUserInfo(target.ToString()); if (GUI != null) { GridRegion region = GetRegionUserIsIn(client.AgentId).GridService.GetRegionByUUID( UUID.Zero, GUI.CurrentRegionID); client.SendScriptTeleportRequest(client.Name, region.RegionName, GUI.CurrentPosition, GUI.CurrentLookAt); } } } } }
bool IsFriendOfUser(UUID friend, UUID requested) { if (friend == requested) { return(true); } if (m_friendsModule.GetFriendPerms(requested, friend) == -1) //They aren't a friend { IScenePresence SP = m_Scene.GetScenePresence(friend); if (SP != null && SP.Scene.Permissions.IsGod(friend)) //Check is admin { return(true); } return(false); } return(true); }