Merge branch 'master' of ssh://3dhosting.de/var/git/careminster into ubitwork

avinationmerge
UbitUmarov 2012-03-06 03:07:48 +00:00
commit f33654b62f
3 changed files with 27 additions and 7 deletions

View File

@ -4641,7 +4641,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (UUID.TryParse(agent, out agentId))
{
ScenePresence presence = World.GetScenePresence(agentId);
if (presence != null)
if (presence != null && presence.PresenceType != PresenceType.Npc)
{
// agent must not be a god
if (presence.UserLevel >= 200) return;
@ -4650,7 +4650,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (m_host.OwnerID == World.LandChannel.GetLandObject(
presence.AbsolutePosition.X, presence.AbsolutePosition.Y).LandData.OwnerID)
{
World.TeleportClientHome(agentId, presence.ControllingClient);
if (!World.TeleportClientHome(agentId, presence.ControllingClient))
{
// They can't be teleported home for some reason
GridRegion regionInfo = World.GridService.GetRegionByUUID(UUID.Zero, new UUID("2b02daac-e298-42fa-9a75-f488d37896e6"));
if (regionInfo != null)
{
World.RequestTeleportLocation(
presence.ControllingClient, regionInfo.RegionHandle, new Vector3(128, 128, 23), Vector3.Zero,
(uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome));
}
}
}
}
}
@ -4664,7 +4674,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (UUID.TryParse(agent, out agentId))
{
ScenePresence presence = World.GetScenePresence(agentId);
if (presence != null)
if (presence != null && presence.PresenceType != PresenceType.Npc)
{
// agent must not be a god
if (presence.UserLevel >= 200) return;

View File

@ -2265,6 +2265,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
string groupTitle = String.Empty;
if (!World.Permissions.CanRezObject(1, m_host.OwnerID, new Vector3((float)position.x, (float)position.y, (float)position.z)))
return new LSL_Key(UUID.Zero.ToString());
if (firstname != String.Empty || lastname != String.Empty)
{
if (firstname != "Shown outfit:")
@ -2594,8 +2597,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
{
UUID npcId = new UUID(npc.m_string);
ILandObject l = World.LandChannel.GetLandObject(m_host.GroupPosition.X, m_host.GroupPosition.Y);
if (l == null || m_host.OwnerID != l.LandData.OwnerID)
{
if (!module.CheckPermissions(npcId, m_host.OwnerID))
return;
}
module.DeleteNPC(npcId, World);
}

View File

@ -858,7 +858,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r));
}
if (ascending == 0)
if (ascending != 1)
{
ret = 0 - ret;
}
@ -891,6 +891,9 @@ namespace OpenSim.Region.ScriptEngine.Shared
stride = 1;
}
if ((Data.Length % stride) != 0)
return new list(ret);
// we can optimize here in the case where stride == 1 and the list
// consists of homogeneous types
@ -910,7 +913,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
if (homogeneous)
{
Array.Sort(ret, new HomogeneousComparer());
if (ascending == 0)
if (ascending != 1)
{
Array.Reverse(ret);
}