Merge commit '5e9cfb2791' into general-devel-rest

This commit is contained in:
Deathmax 2011-09-16 22:07:55 +08:00
commit 158a9245ce
7 changed files with 34 additions and 22 deletions

View file

@ -349,6 +349,13 @@ namespace TShockAPI
args.Player.SendTileSquare(x, y);
return true;
}
if (type == 1 && tiletype == 21 && Tools.MaxChests())
{
args.Player.SendMessage("Reached world's max chest limit, unable to place more!", Color.Red);
Log.Info("Reached world's chest limit, unable to place more.");
args.Player.SendTileSquare(x, y);
return true;
}
}
if (!args.Player.Group.HasPermission(Permissions.editspawn) && !TShock.Regions.CanBuild(x, y, args.Player) && TShock.Regions.InArea(x, y))
{
@ -395,7 +402,7 @@ namespace TShockAPI
args.Player.TileThreshold++;
var coords = new PointF(x, y);
if (!args.Player.TilesDestroyed.ContainsKey(coords))
args.Player.TilesDestroyed.Add(coords, Main.tile[x, y]);
args.Player.TilesDestroyed.Add(coords, Main.tile[x, y].Data);
}
if ((DateTime.UtcNow - args.Player.LastExplosive).TotalMilliseconds < 1000)
@ -480,12 +487,18 @@ namespace TShockAPI
return true;
}
if (type == 23 && (vely == 0f || velx == 0f)) //float.IsNaN((float)Math.Sqrt((double)(velx * velx + vely * vely))))
if (type == 23)
{
Tools.HandleGriefer(args.Player, TShock.Config.ProjectileAbuseReason);
return true;
if (velx == 0f && vely == 0f && dmg == 99)
{
Tools.HandleGriefer(args.Player, TShock.Config.ProjectileAbuseReason);
return true;
}
else if (velx == 0f || vely == 0f)
return true;
}
if (type == 29 || type == 28 || type == 37)
{
Log.Debug(string.Format("Explosive(PlyXY:{0}_{1}, Type:{2})", args.Player.TileX, args.Player.TileY, type));

View file

@ -36,5 +36,5 @@ using System.Runtime.InteropServices;
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.3.2.0905")]
[assembly: AssemblyFileVersion("3.3.2.0905")]
[assembly: AssemblyVersion("3.3.3.0916")]
[assembly: AssemblyFileVersion("3.3.3.0916")]

View file

@ -4,21 +4,21 @@ using System.Collections.Generic;
namespace Rests
{
[Serializable]
public class RestObject : Dictionary<string, string>
public class RestObject : Dictionary<string, object>
{
public string Status
{
get { return this["status"]; }
get { return this["status"] as string; }
set { this["status"] = value; }
}
public string Error
{
get { return this["error"]; }
get { return this["error"] as string; }
set { this["error"] = value; }
}
public string Response
{
get { return this["response"]; }
get { return this["response"] as string; }
set { this["response"] = value; }
}
@ -33,11 +33,11 @@ namespace Rests
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns>Returns null if key does not exist.</returns>
public new string this[string key]
public new object this[string key]
{
get
{
string ret;
object ret;
if (TryGetValue(key, out ret))
return ret;
return null;

View file

@ -32,7 +32,7 @@ namespace TShockAPI
public static readonly TSServerPlayer Server = new TSServerPlayer();
public static readonly TSPlayer All = new TSPlayer("All");
public int TileThreshold { get; set; }
public Dictionary<PointF, Tile> TilesDestroyed { get; protected set; }
public Dictionary<PointF, TileData> TilesDestroyed { get; protected set; }
public bool SyncHP { get; set; }
public bool SyncMP { get; set; }
public Group Group { get; set; }
@ -145,14 +145,14 @@ namespace TShockAPI
public TSPlayer(int index)
{
TilesDestroyed = new Dictionary<PointF, Tile>();
TilesDestroyed = new Dictionary<PointF, TileData>();
Index = index;
Group = new Group("null");
}
protected TSPlayer(String playerName)
{
TilesDestroyed = new Dictionary<PointF, Tile>();
TilesDestroyed = new Dictionary<PointF, TileData>();
Index = -1;
FakePlayer = new Player { name = playerName, whoAmi = -1 };
Group = new Group("null");
@ -213,7 +213,7 @@ namespace TShockAPI
//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)
if (!SendTileSquare(tilex, tiley, 150))
if (!SendTileSquare(tilex, tiley))
{
InitSpawn = true;
SendWorldInfo(Main.spawnTileX, Main.spawnTileY, false);
@ -406,12 +406,12 @@ namespace TShockAPI
NetMessage.SendData((int)PacketTypes.NpcStrike, -1, -1, "", npcid, damage, knockBack, hitDirection);
}
public void RevertKillTile(Dictionary<PointF, Tile> destroyedTiles)
public void RevertKillTile(Dictionary<PointF, TileData> destroyedTiles)
{
// Update Main.Tile first so that when tile sqaure is sent it is correct
foreach (KeyValuePair<PointF, Tile> entry in destroyedTiles)
foreach (KeyValuePair<PointF, TileData> entry in destroyedTiles)
{
Main.tile[(int)entry.Key.X, (int)entry.Key.Y] = entry.Value;
Main.tile[(int)entry.Key.X, (int)entry.Key.Y].Data = entry.Value;
Log.Debug(string.Format("Reverted DestroyedTile(TileXY:{0}_{1}, Type:{2})",
entry.Key.X, entry.Key.Y, Main.tile[(int)entry.Key.X, (int)entry.Key.Y].type));
}

View file

@ -52,7 +52,7 @@ namespace TShockAPI
public class TShock : TerrariaPlugin
{
public static readonly Version VersionNum = Assembly.GetExecutingAssembly().GetName().Version;
public static readonly string VersionCodename = "And believe me, we are still alive.";
public static readonly string VersionCodename = "Try the new slim model.";
public static string SavePath = "tshock";
@ -177,7 +177,7 @@ namespace TShockAPI
Regions = new RegionManager(DB);
Itembans = new ItemManager(DB);
RememberedPos = new RemeberedPosManager(DB);
RestApi = new SecureRest(IPAddress.Any, 8080);
RestApi = new SecureRest(Netplay.serverListenIP, 8080);
RestApi.Verify += RestApi_Verify;
RestApi.Port = Config.RestApiPort;
RestManager = new RestManager(RestApi);
@ -310,7 +310,6 @@ namespace TShockAPI
if (IPAddress.TryParse(parms[++i], out ip))
{
Netplay.serverListenIP = ip;
RestApi.Ip = ip;
Console.Write("Using IP: {0}", ip);
}
else