mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 11:33:28 +08:00
Merge branch 'master' into careminster
This commit is contained in:
@@ -395,7 +395,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||
|
||||
// if it leaves, we want to know, too
|
||||
client.OnLogout += OnLogout;
|
||||
|
||||
client.OnGrantUserRights += GrantUserFriendRights;
|
||||
client.OnTrackAgentEvent += FindAgent;
|
||||
client.OnFindAgentEvent += FindAgent;
|
||||
|
||||
}
|
||||
|
||||
@@ -1114,6 +1117,26 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||
{
|
||||
((Scene)remoteClient.Scene).CommsManager.UpdateUserFriendPerms(requester, target, (uint)rights);
|
||||
}
|
||||
public void FindAgent(IClientAPI remoteClient, UUID hunter, UUID target)
|
||||
{
|
||||
List<FriendListItem> friendList = GetUserFriends(hunter);
|
||||
foreach (FriendListItem item in friendList)
|
||||
{
|
||||
if(item.onlinestatus == true)
|
||||
{
|
||||
if(item.Friend == target && (item.FriendPerms & (uint)FriendRights.CanSeeOnMap) != 0)
|
||||
{
|
||||
ScenePresence SPTarget = ((Scene)remoteClient.Scene).GetScenePresence(target);
|
||||
string regionname = SPTarget.Scene.RegionInfo.RegionName;
|
||||
remoteClient.SendScriptTeleportRequest("FindAgent", regionname,new Vector3(SPTarget.AbsolutePosition),new Vector3(SPTarget.Lookat));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
remoteClient.SendAgentAlertMessage("The agent you are looking for is not online.", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<FriendListItem> GetUserFriends(UUID agentID)
|
||||
{
|
||||
|
||||
@@ -708,5 +708,10 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
|
||||
OSD item = EventQueueHelper.GroupMembership(groupUpdate);
|
||||
Enqueue(item, avatarID);
|
||||
}
|
||||
public void QueryReply(PlacesReplyPacket groupUpdate, UUID avatarID)
|
||||
{
|
||||
OSD item = EventQueueHelper.PlacesQuery(groupUpdate);
|
||||
Enqueue(item, avatarID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -454,6 +454,48 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
|
||||
|
||||
return groupUpdate;
|
||||
}
|
||||
|
||||
public static OSD PlacesQuery(PlacesReplyPacket PlacesReply)
|
||||
{
|
||||
OSDMap placesReply = new OSDMap();
|
||||
placesReply.Add("message", OSD.FromString("PlacesReplyMessage"));
|
||||
|
||||
OSDMap body = new OSDMap();
|
||||
OSDArray agentData = new OSDArray();
|
||||
OSDMap agentDataMap = new OSDMap();
|
||||
agentDataMap.Add("AgentID", OSD.FromUUID(PlacesReply.AgentData.AgentID));
|
||||
agentDataMap.Add("QueryID", OSD.FromUUID(PlacesReply.AgentData.QueryID));
|
||||
agentDataMap.Add("TransactionID", OSD.FromUUID(PlacesReply.TransactionData.TransactionID));
|
||||
agentData.Add(agentDataMap);
|
||||
body.Add("AgentData", agentData);
|
||||
|
||||
OSDArray QueryData = new OSDArray();
|
||||
|
||||
foreach (PlacesReplyPacket.QueryDataBlock groupDataBlock in PlacesReply.QueryData)
|
||||
{
|
||||
OSDMap QueryDataMap = new OSDMap();
|
||||
QueryDataMap.Add("ActualArea", OSD.FromInteger(groupDataBlock.ActualArea));
|
||||
QueryDataMap.Add("BillableArea", OSD.FromInteger(groupDataBlock.BillableArea));
|
||||
QueryDataMap.Add("Description", OSD.FromBinary(groupDataBlock.Desc));
|
||||
QueryDataMap.Add("Dwell", OSD.FromInteger((int)groupDataBlock.Dwell));
|
||||
QueryDataMap.Add("Flags", OSD.FromString(Convert.ToString(groupDataBlock.Flags)));
|
||||
QueryDataMap.Add("GlobalX", OSD.FromInteger((int)groupDataBlock.GlobalX));
|
||||
QueryDataMap.Add("GlobalY", OSD.FromInteger((int)groupDataBlock.GlobalY));
|
||||
QueryDataMap.Add("GlobalZ", OSD.FromInteger((int)groupDataBlock.GlobalZ));
|
||||
QueryDataMap.Add("Name", OSD.FromBinary(groupDataBlock.Name));
|
||||
QueryDataMap.Add("OwnerID", OSD.FromUUID(groupDataBlock.OwnerID));
|
||||
QueryDataMap.Add("SimName", OSD.FromBinary(groupDataBlock.SimName));
|
||||
QueryDataMap.Add("SnapShotID", OSD.FromUUID(groupDataBlock.SnapshotID));
|
||||
QueryDataMap.Add("ProductSku", OSD.FromInteger(0));
|
||||
QueryDataMap.Add("Price", OSD.FromInteger(groupDataBlock.Price));
|
||||
|
||||
QueryData.Add(QueryDataMap);
|
||||
}
|
||||
body.Add("QueryData", QueryData);
|
||||
placesReply.Add("QueryData[]", body);
|
||||
|
||||
return placesReply;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user