Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
c5d78c723b
|
@ -735,7 +735,10 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
|
|
||||||
private static void ProcessTIOldItemID(TaskInventoryItem item, XmlTextReader reader)
|
private static void ProcessTIOldItemID(TaskInventoryItem item, XmlTextReader reader)
|
||||||
{
|
{
|
||||||
item.OldItemID = ReadUUID(reader, "OldItemID");
|
ReadUUID(reader, "OldItemID");
|
||||||
|
// On deserialization, the old item id MUST BE UUID.Zero!!!!!
|
||||||
|
// Setting this to the saved value will BREAK script persistence!
|
||||||
|
// item.OldItemID = ReadUUID(reader, "OldItemID");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ProcessTILastOwnerID(TaskInventoryItem item, XmlTextReader reader)
|
private static void ProcessTILastOwnerID(TaskInventoryItem item, XmlTextReader reader)
|
||||||
|
|
|
@ -2983,17 +2983,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0)
|
if ((item.PermsMask & ScriptBaseClass.PERMISSION_ATTACH) != 0)
|
||||||
{
|
{
|
||||||
SceneObjectGroup grp = m_host.ParentGroup;
|
|
||||||
UUID itemID = grp.GetFromItemID();
|
|
||||||
|
|
||||||
ScenePresence presence = World.GetScenePresence(m_host.OwnerID);
|
|
||||||
|
|
||||||
IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
|
IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
|
||||||
if (attachmentsModule != null)
|
if (attachmentsModule != null)
|
||||||
attachmentsModule.ShowDetachInUserInventory(itemID, presence.ControllingClient);
|
Util.FireAndForget(DetachWrapper, m_host);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DetachWrapper(object o)
|
||||||
|
{
|
||||||
|
SceneObjectPart host = (SceneObjectPart)o;
|
||||||
|
|
||||||
|
SceneObjectGroup grp = host.ParentGroup;
|
||||||
|
UUID itemID = grp.GetFromItemID();
|
||||||
|
ScenePresence presence = World.GetScenePresence(host.OwnerID);
|
||||||
|
|
||||||
|
IAttachmentsModule attachmentsModule = m_ScriptEngine.World.AttachmentsModule;
|
||||||
|
if (attachmentsModule != null)
|
||||||
|
attachmentsModule.ShowDetachInUserInventory(itemID, presence.ControllingClient);
|
||||||
|
}
|
||||||
|
|
||||||
public void llTakeCamera(string avatar)
|
public void llTakeCamera(string avatar)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
|
@ -639,6 +639,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
//
|
//
|
||||||
CheckThreatLevel(ThreatLevel.High, "osTeleportAgent");
|
CheckThreatLevel(ThreatLevel.High, "osTeleportAgent");
|
||||||
|
|
||||||
|
TeleportAgent(agent, regionName, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
||||||
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
UUID agentId = new UUID();
|
UUID agentId = new UUID();
|
||||||
if (UUID.TryParse(agent, out agentId))
|
if (UUID.TryParse(agent, out agentId))
|
||||||
|
@ -651,7 +656,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
== World.LandChannel.GetLandObject(
|
== World.LandChannel.GetLandObject(
|
||||||
presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID)
|
presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Check for hostname , attempt to make a hglink
|
// Check for hostname , attempt to make a hglink
|
||||||
// and convert the regionName to the target region
|
// and convert the regionName to the target region
|
||||||
if (regionName.Contains(".") && regionName.Contains(":"))
|
if (regionName.Contains(".") && regionName.Contains(":"))
|
||||||
|
@ -661,7 +665,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (regions != null && regions.Count > 0)
|
if (regions != null && regions.Count > 0)
|
||||||
{
|
{
|
||||||
GridRegion regInfo = regions[0];
|
GridRegion regInfo = regions[0];
|
||||||
regionName = regInfo.RegionName;
|
string[] parts = regInfo.RegionName.Split(new char[] { ':' });
|
||||||
|
if (parts.Length > 2)
|
||||||
|
regionName = parts[2];
|
||||||
|
else
|
||||||
|
regionName = parts[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
World.RequestTeleportLocation(presence.ControllingClient, regionName,
|
World.RequestTeleportLocation(presence.ControllingClient, regionName,
|
||||||
|
@ -674,13 +682,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Teleport functions
|
|
||||||
public void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
public void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
||||||
{
|
{
|
||||||
// High because there is no security check. High griefer potential
|
// High because there is no security check. High griefer potential
|
||||||
//
|
//
|
||||||
CheckThreatLevel(ThreatLevel.High, "osTeleportAgent");
|
CheckThreatLevel(ThreatLevel.High, "osTeleportAgent");
|
||||||
|
|
||||||
|
TeleportAgent(agent, regionX, regionY, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
||||||
|
{
|
||||||
ulong regionHandle = Util.UIntsToLong(((uint)regionX * (uint)Constants.RegionSize), ((uint)regionY * (uint)Constants.RegionSize));
|
ulong regionHandle = Util.UIntsToLong(((uint)regionX * (uint)Constants.RegionSize), ((uint)regionY * (uint)Constants.RegionSize));
|
||||||
|
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
@ -709,6 +721,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
osTeleportAgent(agent, World.RegionInfo.RegionName, position, lookat);
|
osTeleportAgent(agent, World.RegionInfo.RegionName, position, lookat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void osTeleportOwner(string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
||||||
|
{
|
||||||
|
// Threat level None because this is what can already be done with the World Map in the viewer
|
||||||
|
CheckThreatLevel(ThreatLevel.None, "osTeleportOwner");
|
||||||
|
|
||||||
|
TeleportAgent(m_host.OwnerID.ToString(), regionName, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
||||||
|
{
|
||||||
|
osTeleportOwner(World.RegionInfo.RegionName, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osTeleportOwner(int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat)
|
||||||
|
{
|
||||||
|
CheckThreatLevel(ThreatLevel.None, "osTeleportOwner");
|
||||||
|
|
||||||
|
TeleportAgent(m_host.OwnerID.ToString(), regionX, regionY, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
// Functions that get information from the agent itself.
|
// Functions that get information from the agent itself.
|
||||||
//
|
//
|
||||||
// osGetAgentIP - this is used to determine the IP address of
|
// osGetAgentIP - this is used to determine the IP address of
|
||||||
|
|
|
@ -86,6 +86,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
void osTeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
void osTeleportAgent(string agent, string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
||||||
void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
void osTeleportAgent(string agent, int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
||||||
void osTeleportAgent(string agent, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
void osTeleportAgent(string agent, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
||||||
|
void osTeleportOwner(string regionName, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
||||||
|
void osTeleportOwner(int regionX, int regionY, LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
||||||
|
void osTeleportOwner(LSL_Types.Vector3 position, LSL_Types.Vector3 lookat);
|
||||||
|
|
||||||
// Animation commands
|
// Animation commands
|
||||||
void osAvatarPlayAnimation(string avatar, string animation);
|
void osAvatarPlayAnimation(string avatar, string animation);
|
||||||
|
|
|
@ -227,6 +227,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
m_OSSL_Functions.osTeleportAgent(agent, position, lookat);
|
m_OSSL_Functions.osTeleportAgent(agent, position, lookat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void osTeleportOwner(string regionName, vector position, vector lookat)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osTeleportOwner(regionName, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osTeleportOwner(int regionX, int regionY, vector position, vector lookat)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osTeleportOwner(regionX, regionY, position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void osTeleportOwner(vector position, vector lookat)
|
||||||
|
{
|
||||||
|
m_OSSL_Functions.osTeleportOwner(position, lookat);
|
||||||
|
}
|
||||||
|
|
||||||
// Avatar info functions
|
// Avatar info functions
|
||||||
public string osGetAgentIP(string agent)
|
public string osGetAgentIP(string agent)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue