Fix stuff with teleporting.

This commit is contained in:
Zidonuke 2011-12-29 20:23:58 -05:00
parent d44920023b
commit 1e6c74ace0
3 changed files with 42 additions and 33 deletions

View file

@ -738,19 +738,25 @@ namespace TShockAPI
if (!pos.Equals(args.Player.LastNetPosition)) if (!pos.Equals(args.Player.LastNetPosition))
{ {
float distance = Vector2.Distance(new Vector2(pos.X / 16f, pos.Y / 16f), new Vector2(args.Player.LastNetPosition.X / 16f, args.Player.LastNetPosition.Y / 16f)); float distance = Vector2.Distance(new Vector2(pos.X / 16f, pos.Y / 16f), new Vector2(args.Player.LastNetPosition.X / 16f, args.Player.LastNetPosition.Y / 16f));
if (TShock.CheckIgnores(args.Player) && distance > TShock.Config.MaxRangeForDisabled) if (TShock.CheckIgnores(args.Player))
{
if (distance > TShock.Config.MaxRangeForDisabled)
{ {
if (args.Player.IgnoreActionsForCheating != "none") if (args.Player.IgnoreActionsForCheating != "none")
{ {
args.Player.SendMessage("Disabled for cheating: " + args.Player.IgnoreActionsForCheating, Color.Red); args.Player.SendMessage("Disabled for cheating: " + args.Player.IgnoreActionsForCheating,
Color.Red);
} }
else if (args.Player.IgnoreActionsForDisabledArmor != "none") else if (args.Player.IgnoreActionsForDisabledArmor != "none")
{ {
args.Player.SendMessage("Disabled for banned armor: " + args.Player.IgnoreActionsForDisabledArmor, Color.Red); args.Player.SendMessage(
"Disabled for banned armor: " + args.Player.IgnoreActionsForDisabledArmor, Color.Red);
} }
else if (args.Player.IgnoreActionsForInventory != "none") else if (args.Player.IgnoreActionsForInventory != "none")
{ {
args.Player.SendMessage("Disabled for Server Side Inventory: " + args.Player.IgnoreActionsForInventory, Color.Red); args.Player.SendMessage(
"Disabled for Server Side Inventory: " + args.Player.IgnoreActionsForInventory,
Color.Red);
} }
else if (TShock.Config.RequireLogin && !args.Player.IsLoggedIn) else if (TShock.Config.RequireLogin && !args.Player.IsLoggedIn)
{ {
@ -762,7 +768,8 @@ namespace TShockAPI
} }
else if (TShock.Config.PvPMode == "always" && !args.TPlayer.hostile) else if (TShock.Config.PvPMode == "always" && !args.TPlayer.hostile)
{ {
args.Player.SendMessage("PvP is forced! Enable PvP else you can't move or do anything!", Color.Red); args.Player.SendMessage("PvP is forced! Enable PvP else you can't move or do anything!",
Color.Red);
} }
int lastTileX = (int) (args.Player.LastNetPosition.X/16f); int lastTileX = (int) (args.Player.LastNetPosition.X/16f);
int lastTileY = (int) (args.Player.LastNetPosition.Y/16f); int lastTileY = (int) (args.Player.LastNetPosition.Y/16f);
@ -772,6 +779,11 @@ namespace TShockAPI
} }
return true; return true;
} }
else
{
return true;
}
}
if (args.Player.Dead) if (args.Player.Dead)
{ {
@ -789,8 +801,8 @@ namespace TShockAPI
} }
return true; return true;
} }
}
args.Player.LastNetPosition = pos; args.Player.LastNetPosition = pos;
}
if ((control & 32) == 32) if ((control & 32) == 32)
{ {

View file

@ -234,7 +234,6 @@ namespace TShockAPI
{ {
InitSpawn = false; InitSpawn = false;
LastNetPosition = new Vector2(tilex * 16f, tiley * 16f);
SendWorldInfo(tilex, tiley, true); SendWorldInfo(tilex, tiley, true);
//150 Should avoid all client crash errors //150 Should avoid all client crash errors
@ -245,7 +244,6 @@ namespace TShockAPI
{ {
InitSpawn = true; InitSpawn = true;
SendWorldInfo(Main.spawnTileX, Main.spawnTileY, false); SendWorldInfo(Main.spawnTileX, Main.spawnTileY, false);
SendMessage("Warning, teleport failed due to being too close to the edge of the map.", Color.Red);
return false; return false;
} }
@ -261,7 +259,6 @@ namespace TShockAPI
public void Spawn() public void Spawn()
{ {
LastNetPosition = new Vector2(TPlayer.SpawnX*16f, TPlayer.SpawnX*16f);
Spawn(TPlayer.SpawnX, TPlayer.SpawnY); Spawn(TPlayer.SpawnX, TPlayer.SpawnY);
} }

View file

@ -842,7 +842,7 @@ namespace TShockAPI
if (Config.RememberLeavePos) if (Config.RememberLeavePos)
{ {
var pos = RememberedPos.GetLeavePos(player.Name, player.IP); var pos = RememberedPos.GetLeavePos(player.Name, player.IP);
player.Teleport((int) pos.X, (int) pos.Y); player.Teleport((int) pos.X, (int) pos.Y + 3);
} }
e.Handled = true; e.Handled = true;