Merge branch 'master' of github.com:TShock/TShock into general-devel

This commit is contained in:
high 2011-06-30 01:15:11 -04:00
commit 527d9bb203
2 changed files with 31 additions and 17 deletions

View file

@ -696,8 +696,6 @@ namespace TShockAPI
if (args.Player.Teleport(Main.spawnTileX, Main.spawnTileY))
args.Player.SendMessage("Teleported to the map's spawnpoint.");
else
args.Player.SendMessage("Teleport unavailable - Spawn point set to Bed. To unset, destroy Bed and suicide at least once.", Color.Red);
}
private static void TP(CommandArgs args)
@ -725,8 +723,6 @@ namespace TShockAPI
var plr = players[0];
if (args.Player.Teleport(plr.TileX, plr.TileY + 3))
args.Player.SendMessage(string.Format("Teleported to {0}", plr.Name));
else
args.Player.SendMessage("Teleport unavailable - Spawn point set to Bed. To unset, destroy Bed and suicide at least once.", Color.Red);
}
}
@ -762,8 +758,6 @@ namespace TShockAPI
plr.SendMessage(string.Format("You were teleported to {0}.", plr.Name));
args.Player.SendMessage(string.Format("You brought {0} here.", plr.Name));
}
else
args.Player.SendMessage("Teleport unavailable - Target player has spawn point set to Bed.", Color.Red);
}
}
@ -851,9 +845,6 @@ namespace TShockAPI
{
if (args.Player.Teleport((int)warp.X, (int)warp.Y + 3))
args.Player.SendMessage("Warped to " + warpName, Color.Yellow);
else
args.Player.SendMessage("Warp unavailable - Spawn point set to Bed. To unset, destroy Bed and suicide at least once.", Color.Red);
}
else
{

View file

@ -39,6 +39,7 @@ namespace TShockAPI
public DateTime LastExplosive { get; set; }
public bool InitSpawn = false;
public bool DisplayLogs = true;
public Vector2 oldSpawn = Vector2.Zero;
public bool RealPlayer
{
@ -142,26 +143,48 @@ namespace TShockAPI
int spawnTileY = Main.spawnTileY;
Main.spawnTileX = tileX;
Main.spawnTileY = tileY;
SendData(PacketTypes.WorldInfo);
SendTileSquare(tileX, tileY, 50);
SendData(PacketTypes.WorldInfo);
//150 Should avoid all client crash errors
//The error occurs when a tile trys to update which the client hasnt load yet, Clients only update tiles withen 150 blocks
//Try 300 if it does not work (Higher number - Longer load times - Less chance of error)
SendTileSquare(tileX, tileY, 150);
if (TPlayer.SpawnX > 0 && TPlayer.SpawnY > 0)
{
Main.tile[TPlayer.SpawnX, TPlayer.SpawnY].active = false;
NetMessage.SendTileSquare(Index, TPlayer.SpawnX, TPlayer.SpawnY, 1);
int spX = TPlayer.SpawnX;
int spY = TPlayer.SpawnY;
Main.tile[spX, spY].active = false;
SendTileSquare(spX, spY);
Spawn();
Main.tile[TPlayer.SpawnX, TPlayer.SpawnY].active = true;
NetMessage.SendTileSquare(Index, TPlayer.SpawnX, TPlayer.SpawnY, 1);
SendMessage("Warning! Your bed spawn point has been destroyed because of warp", Color.Red);
Main.tile[spX, spY].active = true;
SendTileSquare(spX, spY);
oldSpawn = new Vector2(spX, spY);
}
else
{
Spawn();
//Checks if Player has spawn point set (Server may think player does not have spawn)
if (oldSpawn != Vector2.Zero)
{
Main.tile[(int)oldSpawn.X, (int)oldSpawn.Y].active = false;
SendTileSquare((int)oldSpawn.X, (int)oldSpawn.Y);
Spawn();
Main.tile[(int)oldSpawn.X, (int)oldSpawn.Y].active = true;
SendTileSquare((int)oldSpawn.X, (int)oldSpawn.Y);
NetMessage.syncPlayers();
}
//Player has no spawn point set
else
{
Spawn();
}
}
Main.spawnTileX = spawnTileX;
Main.spawnTileY = spawnTileY;
SendData(PacketTypes.WorldInfo);
return true;
}