From c9c59c68f16f82df6e7a8f95a2f7b3d9400b8689 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Wed, 17 Sep 2008 13:18:48 +0000 Subject: * Apply http://opensimulator.org/mantis/view.php?id=2207 * Attached patch implements llRequestAgentData for DotNetEngine. (It already is implemented in XEngine.) * Thanks Y. Nitta --- .../Common/BuiltIn_Commands_BaseClass.cs | 1 + .../ScriptEngine/Common/LSL_BuiltIn_Commands.cs | 49 +++++++++++++++++++++- 2 files changed, 48 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Common') diff --git a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs index cfc8e94..08693b3 100644 --- a/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/Common/BuiltIn_Commands_BaseClass.cs @@ -2257,6 +2257,7 @@ namespace OpenSim.Region.ScriptEngine.Common public const int DATA_SIM_POS = 5; public const int DATA_SIM_STATUS = 6; public const int DATA_SIM_RATING = 7; + public const int DATA_PAYINFO = 8; public const int DATA_SIM_RELEASE = 128; public const int ANIM_ON = 1; diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 3615e94..a9ecd70 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs @@ -3250,9 +3250,54 @@ namespace OpenSim.Region.ScriptEngine.Common public string llRequestAgentData(string id, int data) { m_host.AddScriptLPS(1); - NotImplemented("llRequestAgentData"); + + UserProfileData userProfile = + World.CommsManager.UserService.GetUserProfile(id); + + UserAgentData userAgent = + World.CommsManager.UserService.GetAgentByUUID(id); + + if (userProfile == null || userAgent == null) + return UUID.Zero.ToString(); + + string reply = String.Empty; + + switch (data) + { + case BuiltIn_Commands_BaseClass.DATA_ONLINE: // DATA_ONLINE (0|1) + if (userProfile.CurrentAgent.AgentOnline) + reply = "1"; + else + reply = "0"; + break; + case BuiltIn_Commands_BaseClass.DATA_NAME: // DATA_NAME (First Last) + reply = userProfile.FirstName + " " + userProfile.SurName; + break; + case BuiltIn_Commands_BaseClass.DATA_BORN: // DATA_BORN (YYYY-MM-DD) + DateTime born = new DateTime(1970, 1, 1, 0, 0, 0, 0); + born = born.AddSeconds(userProfile.Created); + reply = born.ToString("yyyy-MM-dd"); + break; + case BuiltIn_Commands_BaseClass.DATA_RATING: // DATA_RATING (0,0,0,0,0,0) + reply = "0,0,0,0,0,0"; + break; + case BuiltIn_Commands_BaseClass.DATA_PAYINFO: // DATA_PAYINFO (0|1|2|3) + reply = "0"; + break; + default: + return UUID.Zero.ToString(); // Raise no event + } + + UUID rq = UUID.Random(); + + UUID tid = m_ScriptEngine.m_ASYNCLSLCommandManager.m_Dataserver.RegisterRequest( + m_localID, m_itemID, rq.ToString()); + + m_ScriptEngine.m_ASYNCLSLCommandManager. + m_Dataserver.DataserverReply(rq.ToString(), reply); + // ScriptSleep(100); - return String.Empty; + return tid.ToString(); } public string llRequestInventoryData(string name) -- cgit v1.1