* Added AvatarPicker in Standalone mode. Works for finding avatar to ban, manually trying to add a friend (with the add button) or useful to those who are curious which usernames have visited your standalone sim. Important for future development :D.

* Grid mode always returns 0 results until the Grid Communications portion is done.
afrisby
Teravus Ovares 2007-11-13 22:48:19 +00:00
parent eb41ec00c9
commit 9f6b3e2357
23 changed files with 412 additions and 10 deletions

View File

@ -28,6 +28,7 @@
using System; using System;
using libsecondlife; using libsecondlife;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using System.Collections.Generic;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using OpenSim.Framework.Interfaces; using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
@ -173,6 +174,15 @@ namespace OpenSim.Framework.Communications
} }
} }
} }
public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(LLUUID queryID, string query)
{
List<AvatarPickerAvatar> pickerlist = m_userService.GenerateAgentPickerRequestResponse(queryID, query);
return pickerlist;
}
#endregion #endregion
} }

View File

@ -36,5 +36,6 @@ namespace OpenSim.Framework.Communications
List<SimpleRegionInfo> RequestNeighbours(uint x, uint y); List<SimpleRegionInfo> RequestNeighbours(uint x, uint y);
RegionInfo RequestNeighbourInfo(ulong regionHandle); RegionInfo RequestNeighbourInfo(ulong regionHandle);
List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY); List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY);
} }
} }

View File

@ -105,6 +105,25 @@ namespace OpenSim.Framework.UserManagement
return null; return null;
} }
public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(LLUUID queryID, string query)
{
List<AvatarPickerAvatar> pickerlist = new List<AvatarPickerAvatar>();
foreach (KeyValuePair<string, IUserData> plugin in _plugins)
{
try
{
pickerlist = plugin.Value.GeneratePickerResults(queryID, query);
}
catch (Exception e)
{
MainLog.Instance.Verbose("Unable to generate AgentPickerData via " + plugin.Key + "(" + query + ")");
return new List<AvatarPickerAvatar>();
}
}
return pickerlist;
}
/// <summary> /// <summary>
/// Loads a user profile by name /// Loads a user profile by name

View File

@ -27,6 +27,7 @@
*/ */
using System; using System;
using System.Collections.Generic;
using libsecondlife; using libsecondlife;
namespace OpenSim.Framework.Data.DB4o namespace OpenSim.Framework.Data.DB4o
@ -139,7 +140,16 @@ namespace OpenSim.Framework.Data.DB4o
{ {
manager = null; manager = null;
} }
/// <summary>
/// // Returns a list of avatar and UUIDs that match the query
/// </summary>
public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
//Do nothing yet
List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>();
return returnlist;
}
/// <summary> /// <summary>
/// Returns the providers name /// Returns the providers name
/// </summary> /// </summary>

View File

@ -27,6 +27,7 @@
*/ */
using System; using System;
using System.IO; using System.IO;
using System.Collections.Generic;
using libsecondlife; using libsecondlife;
namespace OpenSim.Framework.Data.DB4o namespace OpenSim.Framework.Data.DB4o
@ -131,7 +132,12 @@ namespace OpenSim.Framework.Data.DB4o
return null; return null;
} }
} }
public List<OpenSim.Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
//Do nothing yet
List<OpenSim.Framework.AvatarPickerAvatar> returnlist = new List<OpenSim.Framework.AvatarPickerAvatar>();
return returnlist;
}
/// <summary> /// <summary>
/// Creates a new user profile /// Creates a new user profile
/// </summary> /// </summary>

View File

@ -28,10 +28,12 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using OpenSim.Framework;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
using libsecondlife; using libsecondlife;
namespace OpenSim.Framework.Data.MSSQL namespace OpenSim.Framework.Data.MSSQL
{ {
/// <summary> /// <summary>
@ -130,7 +132,16 @@ namespace OpenSim.Framework.Data.MSSQL
return row; return row;
} }
/// <summary>
/// // Returns a list of avatar and UUIDs that match the query
/// </summary>
public List<OpenSim.Framework.Data.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
//Do nothing yet
List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>();
return returnlist;
}
/// <summary> /// <summary>
/// Adds a new specified region to the database /// Adds a new specified region to the database
/// </summary> /// </summary>
@ -190,5 +201,7 @@ namespace OpenSim.Framework.Data.MSSQL
{ {
return null; return null;
} }
// This is here because MSSQL GridData only seems to know about itself o.O
} }
} }

View File

@ -169,6 +169,91 @@ namespace OpenSim.Framework.Data.MySQL
return null; return null;
} }
} }
/// <summary>
/// // Returns a list of avatar and UUIDs that match the query
/// </summary>
public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>();
string[] querysplit;
querysplit = query.Split(' ');
if (querysplit.Length == 2)
{
try
{
lock (database)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["?first"] = querysplit[0];
param["?second"] = querysplit[1];
IDbCommand result =
database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first AND lastname = ?second", param);
IDataReader reader = result.ExecuteReader();
while (reader.Read())
{
AvatarPickerAvatar user = new AvatarPickerAvatar();
user.AvatarID = new LLUUID((string)reader["UUID"]);
user.firstName = (string)reader["username"];
user.lastName = (string)reader["surname"];
returnlist.Add(user);
}
reader.Close();
result.Dispose();
}
}
catch (Exception e)
{
database.Reconnect();
MainLog.Instance.Error(e.ToString());
return returnlist;
}
}
else if (querysplit.Length == 1)
{
try
{
lock (database)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["?first"] = querysplit[0];
param["?second"] = querysplit[1];
IDbCommand result =
database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first OR lastname = ?second", param);
IDataReader reader = result.ExecuteReader();
while (reader.Read())
{
AvatarPickerAvatar user = new AvatarPickerAvatar();
user.AvatarID = new LLUUID((string)reader["UUID"]);
user.firstName = (string)reader["username"];
user.lastName = (string)reader["surname"];
returnlist.Add(user);
}
reader.Close();
result.Dispose();
}
}
catch (Exception e)
{
database.Reconnect();
MainLog.Instance.Error(e.ToString());
return returnlist;
}
}
return returnlist;
}
/// <summary> /// <summary>
/// Returns a sim profile from it's UUID /// Returns a sim profile from it's UUID

View File

@ -97,7 +97,6 @@ namespace OpenSim.Framework.Data.MySQL
reader.Close(); reader.Close();
result.Dispose(); result.Dispose();
return row; return row;
} }
} }
@ -108,7 +107,87 @@ namespace OpenSim.Framework.Data.MySQL
return null; return null;
} }
} }
public List<OpenSim.Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
List<OpenSim.Framework.AvatarPickerAvatar> returnlist = new List<OpenSim.Framework.AvatarPickerAvatar>();
string[] querysplit;
querysplit = query.Split(' ');
if (querysplit.Length == 2)
{
try
{
lock (database)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["?first"] = querysplit[0];
param["?second"] = querysplit[1];
IDbCommand result =
database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first AND lastname = ?second", param);
IDataReader reader = result.ExecuteReader();
while (reader.Read())
{
OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar();
user.AvatarID = new LLUUID((string)reader["UUID"]);
user.firstName = (string)reader["username"];
user.lastName = (string)reader["surname"];
returnlist.Add(user);
}
reader.Close();
result.Dispose();
}
}
catch (Exception e)
{
database.Reconnect();
MainLog.Instance.Error(e.ToString());
return returnlist;
}
}
else if (querysplit.Length == 1)
{
try
{
lock (database)
{
Dictionary<string, string> param = new Dictionary<string, string>();
param["?first"] = querysplit[0];
param["?second"] = querysplit[1];
IDbCommand result =
database.Query("SELECT UUID,username,surname FROM users WHERE username = ?first OR lastname = ?second", param);
IDataReader reader = result.ExecuteReader();
while (reader.Read())
{
OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar();
user.AvatarID = new LLUUID((string)reader["UUID"]);
user.firstName = (string)reader["username"];
user.lastName = (string)reader["surname"];
returnlist.Add(user);
}
reader.Close();
result.Dispose();
}
}
catch (Exception e)
{
database.Reconnect();
MainLog.Instance.Error(e.ToString());
return returnlist;
}
}
return returnlist;
}
/// <summary> /// <summary>
/// Searches the database for a specified user profile by UUID /// Searches the database for a specified user profile by UUID
/// </summary> /// </summary>

View File

@ -130,7 +130,16 @@ namespace OpenSim.Framework.Data.SQLite
return row; return row;
} }
/// <summary>
/// // Returns a list of avatar and UUIDs that match the query
/// </summary>
public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
//Do nothing yet
List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>();
return returnlist;
}
/// <summary> /// <summary>
/// Adds a new specified region to the database /// Adds a new specified region to the database
/// </summary> /// </summary>

View File

@ -26,16 +26,22 @@
* *
*/ */
using System; using System;
using System.Collections.Generic;
using System.Data; using System.Data;
using libsecondlife; using libsecondlife;
using Mono.Data.SqliteClient; using Mono.Data.SqliteClient;
using OpenSim.Framework;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
namespace OpenSim.Framework.Data.SQLite namespace OpenSim.Framework.Data.SQLite
{ {
/// <summary> /// <summary>
/// A User storage interface for the DB4o database system /// A User storage interface for the DB4o database system
/// </summary> /// </summary>
///
public class SQLiteUserData : SQLiteBase, IUserData public class SQLiteUserData : SQLiteBase, IUserData
{ {
/// <summary> /// <summary>
@ -135,6 +141,53 @@ namespace OpenSim.Framework.Data.SQLite
} }
} }
public List<OpenSim.Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
{
List<OpenSim.Framework.AvatarPickerAvatar> returnlist = new List<OpenSim.Framework.AvatarPickerAvatar>();
string[] querysplit;
querysplit = query.Split(' ');
if (querysplit.Length == 2)
{
string select = "username like '" + querysplit[0] + "%' and surname like '" + querysplit[1] + "%'";
lock(ds)
{
DataRow[] rows = ds.Tables["users"].Select(select);
if (rows.Length > 0)
{
for (int i = 0; i < rows.Length; i++)
{
OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar();
DataRow row = rows[i];
user.AvatarID = new LLUUID((string)row["UUID"]);
user.firstName = (string)row["username"];
user.lastName = (string)row["surname"];
returnlist.Add(user);
}
}
}
}
else if (querysplit.Length == 1)
{
string select = "username like '" + querysplit[0] + "%' OR surname like '" + querysplit[0] + "%'";
lock(ds)
{
DataRow[] rows = ds.Tables["users"].Select(select);
if (rows.Length > 0)
{
for (int i = 0;i<rows.Length;i++) {
OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar();
DataRow row = rows[i];
user.AvatarID = new LLUUID((string)row[0]);
user.firstName = (string)row[1];
user.lastName = (string)row[2];
returnlist.Add(user);
}
}
}
}
return returnlist;
}
/// <summary> /// <summary>
/// Returns a user by UUID direct /// Returns a user by UUID direct
/// </summary> /// </summary>

View File

@ -26,9 +26,19 @@
* *
*/ */
using libsecondlife; using libsecondlife;
using System.Collections.Generic;
namespace OpenSim.Framework.Data namespace OpenSim.Framework.Data
{ {
public class AvatarPickerAvatar
{
public LLUUID AvatarID;
public string firstName;
public string lastName;
public AvatarPickerAvatar()
{
}
}
public enum DataResponse public enum DataResponse
{ {
RESPONSE_OK, RESPONSE_OK,
@ -66,6 +76,8 @@ namespace OpenSim.Framework.Data
/// <returns>An array containing all the sim profiles in the specified range</returns> /// <returns>An array containing all the sim profiles in the specified range</returns>
RegionProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); RegionProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax);
List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query);
/// <summary> /// <summary>
/// Authenticates a sim by use of it's recv key. /// Authenticates a sim by use of it's recv key.
/// WARNING: Insecure /// WARNING: Insecure

View File

@ -228,6 +228,7 @@ namespace OpenSim.Framework
public delegate void AgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset); public delegate void AgentRequestSit(IClientAPI remoteClient, LLUUID agentID, LLUUID targetID, LLVector3 offset);
public delegate void AgentSit(IClientAPI remoteClient, LLUUID agentID); public delegate void AgentSit(IClientAPI remoteClient, LLUUID agentID);
public delegate void AvatarPickerRequest(IClientAPI remoteClient, LLUUID agentdata, LLUUID queryID, string UserQuery);
public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient); public delegate void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 grapPos, IClientAPI remoteClient);
@ -305,6 +306,7 @@ namespace OpenSim.Framework
event UpdateAgent OnAgentUpdate; event UpdateAgent OnAgentUpdate;
event AgentRequestSit OnAgentRequestSit; event AgentRequestSit OnAgentRequestSit;
event AgentSit OnAgentSit; event AgentSit OnAgentSit;
event AvatarPickerRequest OnAvatarPickerRequest;
event Action<IClientAPI> OnRequestAvatarsData; event Action<IClientAPI> OnRequestAvatarsData;
event AddNewPrim OnAddPrim; event AddNewPrim OnAddPrim;
event ObjectDuplicate OnObjectDuplicate; event ObjectDuplicate OnObjectDuplicate;
@ -423,6 +425,7 @@ namespace OpenSim.Framework
void SendRemoveInventoryItem(LLUUID itemID); void SendRemoveInventoryItem(LLUUID itemID);
void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName); void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName);
void SendXferPacket(ulong xferID, uint packet, byte[] data); void SendXferPacket(ulong xferID, uint packet, byte[] data);
void SendAvatarPickerReply(AvatarPickerReplyPacket Pack);
void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID); void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID);
void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags); void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags);

View File

@ -26,6 +26,7 @@
* *
*/ */
using libsecondlife; using libsecondlife;
using System.Collections.Generic;
namespace OpenSim.Framework namespace OpenSim.Framework
{ {
@ -56,6 +57,8 @@ namespace OpenSim.Framework
/// <returns>The user data profile</returns> /// <returns>The user data profile</returns>
UserProfileData GetUserByName(string fname, string lname); UserProfileData GetUserByName(string fname, string lname);
List<OpenSim.Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query);
/// <summary> /// <summary>
/// Returns the current agent for a user searching by it's UUID /// Returns the current agent for a user searching by it's UUID
/// </summary> /// </summary>
@ -131,4 +134,13 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
void Initialise(); void Initialise();
} }
public class AvatarPickerAvatar
{
public LLUUID AvatarID;
public string firstName;
public string lastName;
public AvatarPickerAvatar()
{
}
}
} }

View File

@ -26,6 +26,7 @@
* *
*/ */
using libsecondlife; using libsecondlife;
using System.Collections.Generic;
namespace OpenSim.Framework.Interfaces namespace OpenSim.Framework.Interfaces
{ {
@ -35,6 +36,7 @@ namespace OpenSim.Framework.Interfaces
UserProfileData GetUserProfile(string name); UserProfileData GetUserProfile(string name);
UserProfileData GetUserProfile(LLUUID userId); UserProfileData GetUserProfile(LLUUID userId);
void clearUserAgent(LLUUID avatarID); void clearUserAgent(LLUUID avatarID);
List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(LLUUID QueryID, string Query);
UserProfileData SetupMasterUser(string firstName, string lastName); UserProfileData SetupMasterUser(string firstName, string lastName);
UserProfileData SetupMasterUser(string firstName, string lastName, string password); UserProfileData SetupMasterUser(string firstName, string lastName, string password);

View File

@ -145,6 +145,19 @@ namespace OpenSim.Framework
public UserAgentData currentAgent; public UserAgentData currentAgent;
} }
/// <summary>
/// Minimal User Data required to service the AvatarPickerReply
/// </summary>
//public class AvatarPickerAvatar
//{
//public LLUUID AvatarID;
//public string firstName;
//public string lastName;
//public AvatarPickerAvatar()
//{
//}
//}
/// <summary> /// <summary>
/// Information about a users session /// Information about a users session
/// </summary> /// </summary>

View File

@ -55,6 +55,7 @@ namespace OpenSim.Region.ClientStack
public event UpdateAgent OnAgentUpdate; public event UpdateAgent OnAgentUpdate;
public event AgentRequestSit OnAgentRequestSit; public event AgentRequestSit OnAgentRequestSit;
public event AgentSit OnAgentSit; public event AgentSit OnAgentSit;
public event AvatarPickerRequest OnAvatarPickerRequest;
public event StartAnim OnStartAnim; public event StartAnim OnStartAnim;
public event Action<IClientAPI> OnRequestAvatarsData; public event Action<IClientAPI> OnRequestAvatarsData;
public event LinkObjects OnLinkObjects; public event LinkObjects OnLinkObjects;
@ -705,6 +706,10 @@ namespace OpenSim.Region.ClientStack
sendXfer.DataPacket.Data = data; sendXfer.DataPacket.Data = data;
OutPacket(sendXfer); OutPacket(sendXfer);
} }
public void SendAvatarPickerReply(AvatarPickerReplyPacket replyPacket)
{
OutPacket(replyPacket);
}
/// <summary> /// <summary>
/// ///

View File

@ -217,7 +217,16 @@ namespace OpenSim.Region.ClientStack
OnAgentSit(this, agentSit.AgentData.AgentID); OnAgentSit(this, agentSit.AgentData.AgentID);
} }
break; break;
case PacketType.AvatarPickerRequest:
AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack;
AvatarPickerRequestPacket.AgentDataBlock Requestdata = avRequestQuery.AgentData;
AvatarPickerRequestPacket.DataBlock querydata = avRequestQuery.Data;
//System.Console.WriteLine("Agent Sends:" + Helpers.FieldToUTF8String(querydata.Name));
if (OnAvatarPickerRequest != null)
{
OnAvatarPickerRequest(this, Requestdata.AgentID, Requestdata.QueryID, Helpers.FieldToUTF8String(querydata.Name));
}
break;
#endregion #endregion
#region Objects/m_sceneObjects #region Objects/m_sceneObjects

View File

@ -295,11 +295,16 @@ namespace OpenSim.Region.ClientStack
queuedLast = false; queuedLast = false;
// TODO: May be a bit expensive doing this twice. // TODO: May be a bit expensive doing this twice.
throttleSentPeriod += nextPacket.Packet.ToBytes().Length;
//is a out going packet //Don't throttle AvatarPickerReplies!, they return a null .ToBytes()!
DebugPacket("OUT", nextPacket.Packet); if (nextPacket.Packet.Type != PacketType.AvatarPickerReply)
ProcessOutPacket(nextPacket.Packet); throttleSentPeriod += nextPacket.Packet.ToBytes().Length;
//is a out going packet
DebugPacket("OUT", nextPacket.Packet);
ProcessOutPacket(nextPacket.Packet);
} }
} }
} }

View File

@ -28,6 +28,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic;
using System.Net; using System.Net;
using libsecondlife; using libsecondlife;
using Nwc.XmlRpc; using Nwc.XmlRpc;
@ -85,6 +86,13 @@ namespace OpenSim.Region.Communications.OGS1
return GetUserProfile(firstName + " " + lastName); return GetUserProfile(firstName + " " + lastName);
} }
public List<AvatarPickerAvatar> GenerateAgentPickerRequestResponse(LLUUID queryID, string query)
{
List<AvatarPickerAvatar> pickerlist = new List<AvatarPickerAvatar>();
return pickerlist;
}
public UserProfileData GetUserProfile(string name) public UserProfileData GetUserProfile(string name)
{ {
try try

View File

@ -29,6 +29,7 @@ using System.Collections.Generic;
using libsecondlife; using libsecondlife;
using libsecondlife.Packets; using libsecondlife.Packets;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.UserManagement;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
namespace OpenSim.Region.Environment.Scenes namespace OpenSim.Region.Environment.Scenes
@ -155,5 +156,43 @@ namespace OpenSim.Region.Environment.Scenes
} }
} }
} }
public void ProcessAvatarPickerRequest(IClientAPI client, LLUUID avatarID, LLUUID RequestID, string query)
{
//EventManager.TriggerAvatarPickerRequest();
List<AvatarPickerAvatar> AvatarResponses = new List<AvatarPickerAvatar>();
AvatarResponses = CommsManager.GenerateAgentPickerRequestResponse(RequestID, query);
AvatarPickerReplyPacket replyPacket = new AvatarPickerReplyPacket();
AvatarPickerReplyPacket.DataBlock[] searchData = new AvatarPickerReplyPacket.DataBlock[AvatarResponses.Count];
AvatarPickerReplyPacket.AgentDataBlock agentData = new AvatarPickerReplyPacket.AgentDataBlock();
agentData.AgentID = avatarID;
agentData.QueryID = RequestID;
replyPacket.AgentData = agentData;
byte[] bytes = new byte[AvatarResponses.Count * 32];
int i = 0;
foreach (AvatarPickerAvatar item in AvatarResponses)
{
LLUUID translatedIDtem = item.AvatarID;
searchData[i] = new AvatarPickerReplyPacket.DataBlock();
searchData[i].AvatarID = translatedIDtem;
searchData[i].FirstName = Helpers.StringToField((string)item.firstName);
searchData[i].LastName = Helpers.StringToField((string)item.lastName);
i++;
}
if (AvatarResponses.Count == 0)
{
searchData = new AvatarPickerReplyPacket.DataBlock[0];
}
replyPacket.Data = searchData;
client.SendAvatarPickerReply(replyPacket);
}
} }
} }

View File

@ -38,10 +38,10 @@ using OpenSim.Framework;
using OpenSim.Framework.Communications; using OpenSim.Framework.Communications;
using OpenSim.Framework.Communications.Cache; using OpenSim.Framework.Communications.Cache;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using OpenSim.Region.Environment.LandManagement;
using OpenSim.Framework.Servers; using OpenSim.Framework.Servers;
using OpenSim.Region.Capabilities; using OpenSim.Region.Capabilities;
using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Interfaces;
using OpenSim.Region.Environment.LandManagement;
using OpenSim.Region.Environment.Modules; using OpenSim.Region.Environment.Modules;
using OpenSim.Region.Environment.Scenes.Scripting; using OpenSim.Region.Environment.Scenes.Scripting;
using OpenSim.Region.Environment.Types; using OpenSim.Region.Environment.Types;
@ -732,6 +732,7 @@ namespace OpenSim.Region.Environment.Scenes
client.OnRemoveTaskItem += RemoveTaskInventory; client.OnRemoveTaskItem += RemoveTaskInventory;
client.OnGrabObject += ProcessObjectGrab; client.OnGrabObject += ProcessObjectGrab;
client.OnAvatarPickerRequest += ProcessAvatarPickerRequest;
EventManager.TriggerOnNewClient(client); EventManager.TriggerOnNewClient(client);
} }

View File

@ -32,9 +32,11 @@ using libsecondlife;
using libsecondlife.Packets; using libsecondlife.Packets;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
using OpenSim.Framework.Communications;
using OpenSim.Region.Environment.Types; using OpenSim.Region.Environment.Types;
using OpenSim.Region.Physics.Manager; using OpenSim.Region.Physics.Manager;
namespace OpenSim.Region.Environment.Scenes namespace OpenSim.Region.Environment.Scenes
{ {
public partial class ScenePresence : EntityBase public partial class ScenePresence : EntityBase
@ -274,6 +276,7 @@ namespace OpenSim.Region.Environment.Scenes
m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit; m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit;
m_controllingClient.OnAgentSit += HandleAgentSit; m_controllingClient.OnAgentSit += HandleAgentSit;
m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun; m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun;
// ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack);
// ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
//ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
@ -1227,5 +1230,6 @@ namespace OpenSim.Region.Environment.Scenes
{ {
m_controllingClient.SendWearables(m_wearables, m_wearablesSerial++); m_controllingClient.SendWearables(m_wearables, m_wearablesSerial++);
} }
} }
} }

View File

@ -71,6 +71,7 @@ namespace SimpleApp
public event UpdateAgent OnAgentUpdate; public event UpdateAgent OnAgentUpdate;
public event AgentRequestSit OnAgentRequestSit; public event AgentRequestSit OnAgentRequestSit;
public event AgentSit OnAgentSit; public event AgentSit OnAgentSit;
public event AvatarPickerRequest OnAvatarPickerRequest;
public event Action<IClientAPI> OnRequestAvatarsData; public event Action<IClientAPI> OnRequestAvatarsData;
public event AddNewPrim OnAddPrim; public event AddNewPrim OnAddPrim;
public event ObjectDuplicate OnObjectDuplicate; public event ObjectDuplicate OnObjectDuplicate;
@ -179,7 +180,10 @@ namespace SimpleApp
public virtual void SendStartPingCheck(byte seq) public virtual void SendStartPingCheck(byte seq)
{ {
} }
public virtual void SendAvatarPickerReply(AvatarPickerReplyPacket response)
{
}
public virtual void SendKillObject(ulong regionHandle, uint localID) public virtual void SendKillObject(ulong regionHandle, uint localID)
{ {
} }