Merge branch 'master' into httptests
commit
a1aa2f1add
|
@ -371,7 +371,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
teleportFlags |= (uint)TeleportFlags.Godlike;
|
||||
}
|
||||
|
||||
if (!sp.Scene.Permissions.CanTeleport(sp.UUID))
|
||||
else if (!sp.Scene.Permissions.CanTeleport(sp.UUID))
|
||||
return;
|
||||
|
||||
string destinationRegionName = "(not found)";
|
||||
|
@ -391,17 +391,27 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
|
||||
try
|
||||
{
|
||||
// Reset animations; the viewer does that in teleports.
|
||||
sp.Animator.ResetAnimations();
|
||||
|
||||
if (regionHandle == sp.Scene.RegionInfo.RegionHandle)
|
||||
{
|
||||
if(!sp.AllowMovement)
|
||||
{
|
||||
sp.ControllingClient.SendTeleportFailed("You are frozen");
|
||||
m_entityTransferStateMachine.ResetFromTransit(sp.UUID);
|
||||
return;
|
||||
}
|
||||
|
||||
// Reset animations; the viewer does that in teleports.
|
||||
sp.Animator.ResetAnimations();
|
||||
destinationRegionName = sp.Scene.RegionInfo.RegionName;
|
||||
|
||||
TeleportAgentWithinRegion(sp, position, lookAt, teleportFlags);
|
||||
}
|
||||
else // Another region possibly in another simulator
|
||||
{
|
||||
// Reset animations; the viewer does that in teleports.
|
||||
sp.Animator.ResetAnimations();
|
||||
|
||||
GridRegion finalDestination = null;
|
||||
try
|
||||
{
|
||||
|
|
|
@ -2201,12 +2201,12 @@ namespace OpenSim.Region.CoreModules.World.Land
|
|||
((Scene)client.Scene).TryGetScenePresence(client.AgentId, out parcelManager);
|
||||
System.Threading.Timer Timer;
|
||||
|
||||
if (targetAvatar.GodController.UserLevel == 0)
|
||||
if (targetAvatar.GodController.UserLevel < 200)
|
||||
{
|
||||
ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
||||
if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true))
|
||||
return;
|
||||
if (flags == 0)
|
||||
if ((flags & 1) == 0) // only lowest bit has meaning for now
|
||||
{
|
||||
targetAvatar.AllowMovement = false;
|
||||
targetAvatar.ControllingClient.SendAlertMessage(parcelManager.Firstname + " " + parcelManager.Lastname + " has frozen you for 30 seconds. You cannot move or interact with the world.");
|
||||
|
@ -2258,7 +2258,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
|||
|
||||
Vector3 pos = m_scene.GetNearestAllowedPosition(targetAvatar, land);
|
||||
|
||||
targetAvatar.TeleportWithMomentum(pos, null);
|
||||
targetAvatar.TeleportOnEject(pos);
|
||||
targetAvatar.ControllingClient.SendAlertMessage("You have been ejected by " + parcelManager.Firstname + " " + parcelManager.Lastname);
|
||||
parcelManager.ControllingClient.SendAlertMessage("Avatar Ejected.");
|
||||
|
||||
|
|
|
@ -1886,7 +1886,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
|||
if (land.LandData.LocalID == LandData.LocalID)
|
||||
{
|
||||
Vector3 pos = m_scene.GetNearestAllowedPosition(presence, land);
|
||||
presence.TeleportWithMomentum(pos, null);
|
||||
presence.TeleportOnEject(pos);
|
||||
presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1642,6 +1642,20 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
SendTerseUpdateToAllClients();
|
||||
}
|
||||
|
||||
public void TeleportOnEject(Vector3 pos)
|
||||
{
|
||||
if (ParentID != (uint)0)
|
||||
StandUp();
|
||||
|
||||
bool isFlying = Flying;
|
||||
RemoveFromPhysicalScene();
|
||||
|
||||
AbsolutePosition = pos;
|
||||
|
||||
AddToPhysicalScene(isFlying);
|
||||
SendTerseUpdateToAllClients();
|
||||
}
|
||||
|
||||
public void avnLocalTeleport(Vector3 newpos, Vector3? newvel, bool rotateToVelXY)
|
||||
{
|
||||
if(!CheckLocalTPLandingPoint(ref newpos))
|
||||
|
|
|
@ -6827,7 +6827,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
if (m_host.OwnerID == land.LandData.OwnerID)
|
||||
{
|
||||
Vector3 p = World.GetNearestAllowedPosition(presence, land);
|
||||
presence.TeleportWithMomentum(p, null);
|
||||
presence.TeleportOnEject(p);
|
||||
presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue