Regions can now be defined in any direction.
Fixed column names are now in the insert. This should fix any weirdness with column order.
This commit is contained in:
parent
f90b530531
commit
4dae27001c
4 changed files with 33 additions and 108 deletions
|
|
@ -1687,54 +1687,36 @@ namespace TShockAPI
|
||||||
|
|
||||||
case "set":
|
case "set":
|
||||||
{
|
{
|
||||||
if (args.Parameters.Count == 2)
|
int choice = 0;
|
||||||
|
if (args.Parameters.Count == 2 &&
|
||||||
|
int.TryParse(args.Parameters[1], out choice) &&
|
||||||
|
choice >= 1 && choice <= 2)
|
||||||
{
|
{
|
||||||
if (args.Parameters[1] == "1")
|
args.Player.SendMessage("Hit a block to Set Point " + choice, Color.Yellow);
|
||||||
{
|
args.Player.AwaitingTempPoint = choice;
|
||||||
if (!args.Player.AwaitingTemp2)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage("Hit a block to Set Point 1", Color.Yellow);
|
|
||||||
args.Player.AwaitingTemp1 = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
args.Player.SendMessage("Awaiting you to Set Point 2", Color.Yellow);
|
|
||||||
}
|
|
||||||
else if (args.Parameters[1] == "2")
|
|
||||||
{
|
|
||||||
if (args.Player.TempArea.X != 0)
|
|
||||||
{
|
|
||||||
if (!args.Player.AwaitingTemp1)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage("Hit a block to Set Point 2", Color.Yellow);
|
|
||||||
args.Player.AwaitingTemp2 = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
args.Player.SendMessage("Awaiting you to Set Point 1", Color.Yellow);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
args.Player.SendMessage("You have not set Point 1 yet", Color.Red);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /region set [1/2]", Color.Red);
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /region set [1/2]", Color.Red);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /region set [1/2]", Color.Red);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "define":
|
case "define":
|
||||||
{
|
{
|
||||||
if (args.Parameters.Count > 1)
|
if (args.Parameters.Count > 1)
|
||||||
{
|
{
|
||||||
if (!args.Player.TempArea.IsEmpty)
|
if (!args.Player.TempPoints.Any(p => p == Point.Zero))
|
||||||
{
|
{
|
||||||
string regionName = String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1));
|
string regionName = String.Join(" ", args.Parameters.GetRange(1, args.Parameters.Count - 1));
|
||||||
if (TShock.Regions.AddRegion(args.Player.TempArea.X, args.Player.TempArea.Y,
|
var x = Math.Min(args.Player.TempPoints[0].X, args.Player.TempPoints[1].X);
|
||||||
args.Player.TempArea.Width, args.Player.TempArea.Height,
|
var y = Math.Min(args.Player.TempPoints[0].Y, args.Player.TempPoints[1].Y);
|
||||||
regionName, Main.worldID.ToString()))
|
var width = Math.Abs(args.Player.TempPoints[0].X - args.Player.TempPoints[1].X);
|
||||||
|
var height = Math.Abs(args.Player.TempPoints[0].Y - args.Player.TempPoints[1].Y);
|
||||||
|
|
||||||
|
if (TShock.Regions.AddRegion(x, y, width, height, regionName, Main.worldID.ToString()))
|
||||||
{
|
{
|
||||||
args.Player.TempArea = Rectangle.Empty;
|
args.Player.TempPoints[0] = Point.Zero;
|
||||||
|
args.Player.TempPoints[1] = Point.Zero;
|
||||||
args.Player.SendMessage("Set region " + regionName, Color.Yellow);
|
args.Player.SendMessage("Set region " + regionName, Color.Yellow);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1743,8 +1725,10 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
args.Player.SendMessage("Points not set up yet", Color.Red);
|
args.Player.SendMessage("Points not set up yet", Color.Red);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /region define [name]", Color.Red);
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /region define [name]", Color.Red);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1791,10 +1775,10 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
case "clear":
|
case "clear":
|
||||||
{
|
{
|
||||||
args.Player.TempArea = Rectangle.Empty;
|
args.Player.TempPoints[0] = Point.Zero;
|
||||||
|
args.Player.TempPoints[1] = Point.Zero;
|
||||||
args.Player.SendMessage("Cleared temp area", Color.Yellow);
|
args.Player.SendMessage("Cleared temp area", Color.Yellow);
|
||||||
args.Player.AwaitingTemp1 = false;
|
args.Player.AwaitingTempPoint = 0;
|
||||||
args.Player.AwaitingTemp2 = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "allow":
|
case "allow":
|
||||||
|
|
@ -1803,7 +1787,6 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
string playerName = args.Parameters[1];
|
string playerName = args.Parameters[1];
|
||||||
string regionName = "";
|
string regionName = "";
|
||||||
User playerID;
|
|
||||||
|
|
||||||
for (int i = 2; i < args.Parameters.Count; i++)
|
for (int i = 2; i < args.Parameters.Count; i++)
|
||||||
{
|
{
|
||||||
|
|
@ -1816,7 +1799,7 @@ namespace TShockAPI
|
||||||
regionName = regionName + " " + args.Parameters[i];
|
regionName = regionName + " " + args.Parameters[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((playerID = TShock.Users.GetUserByName(playerName)) != null)
|
if (TShock.Users.GetUserByName(playerName) != null)
|
||||||
{
|
{
|
||||||
if (TShock.Regions.AddNewUser(regionName, playerName))
|
if (TShock.Regions.AddNewUser(regionName, playerName))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ namespace TShockAPI.DB
|
||||||
var table = new SqlTable("Regions",
|
var table = new SqlTable("Regions",
|
||||||
new SqlColumn("X1", MySqlDbType.Int32),
|
new SqlColumn("X1", MySqlDbType.Int32),
|
||||||
new SqlColumn("Y1", MySqlDbType.Int32),
|
new SqlColumn("Y1", MySqlDbType.Int32),
|
||||||
new SqlColumn("height", MySqlDbType.Int32),
|
|
||||||
new SqlColumn("width", MySqlDbType.Int32),
|
new SqlColumn("width", MySqlDbType.Int32),
|
||||||
|
new SqlColumn("height", MySqlDbType.Int32),
|
||||||
new SqlColumn("RegionName", MySqlDbType.VarChar, 50) { Primary = true },
|
new SqlColumn("RegionName", MySqlDbType.VarChar, 50) { Primary = true },
|
||||||
new SqlColumn("WorldID", MySqlDbType.Text),
|
new SqlColumn("WorldID", MySqlDbType.Text),
|
||||||
new SqlColumn("UserIds", MySqlDbType.Text),
|
new SqlColumn("UserIds", MySqlDbType.Text),
|
||||||
|
|
@ -257,7 +257,8 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
database.Query("INSERT INTO Regions VALUES (@0, @1, @2, @3, @4, @5, @6, @7);", tx, ty, height, width, regionname, worldid, "", 1);
|
database.Query("INSERT INTO Regions (X1, Y1, width, height, RegionName, WorldID, UserIds, Protected) VALUES (@0, @1, @2, @3, @4, @5, @6, @7);",
|
||||||
|
tx, ty, width, height, regionname, worldid, "", 1);
|
||||||
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid));
|
Regions.Add(new Region(new Rectangle(tx, ty, width, height), regionname, true, worldid));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -289,33 +289,13 @@ namespace TShockAPI
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.Player.AwaitingTemp1)
|
if (args.Player.AwaitingTempPoint > 0)
|
||||||
{
|
{
|
||||||
args.Player.TempArea.X = x;
|
args.Player.TempPoints[args.Player.AwaitingTempPoint - 1].X = x;
|
||||||
args.Player.TempArea.Y = y;
|
args.Player.TempPoints[args.Player.AwaitingTempPoint - 1].Y = y;
|
||||||
args.Player.SendMessage("Set Temp Point 1", Color.Yellow);
|
args.Player.SendMessage("Set Temp Point " + args.Player.AwaitingTempPoint, Color.Yellow);
|
||||||
args.Player.SendTileSquare(x, y);
|
args.Player.SendTileSquare(x, y);
|
||||||
args.Player.AwaitingTemp1 = false;
|
args.Player.AwaitingTempPoint = 0;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.Player.AwaitingTemp2)
|
|
||||||
{
|
|
||||||
if (x > args.Player.TempArea.X && y > args.Player.TempArea.Y)
|
|
||||||
{
|
|
||||||
args.Player.TempArea.Width = x - args.Player.TempArea.X;
|
|
||||||
args.Player.TempArea.Height = y - args.Player.TempArea.Y;
|
|
||||||
args.Player.SendMessage("Set Temp Point 2", Color.Yellow);
|
|
||||||
args.Player.SendTileSquare(x, y);
|
|
||||||
args.Player.AwaitingTemp2 = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendMessage("Point 2 must be below and right of Point 1", Color.Yellow);
|
|
||||||
args.Player.SendMessage("Use /region clear to start again", Color.Yellow);
|
|
||||||
args.Player.SendTileSquare(x, y);
|
|
||||||
args.Player.AwaitingTemp2 = false;
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -615,44 +595,6 @@ namespace TShockAPI
|
||||||
if (tilex < 0 || tilex >= Main.maxTilesX || tiley < 0 || tiley >= Main.maxTilesY)
|
if (tilex < 0 || tilex >= Main.maxTilesX || tiley < 0 || tiley >= Main.maxTilesY)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (args.Player.AwaitingName)
|
|
||||||
{
|
|
||||||
args.Player.SendMessage("Region Name: " + TShock.Regions.InAreaRegionName(tilex, tiley), Color.Yellow);
|
|
||||||
args.Player.SendTileSquare(tilex, tiley);
|
|
||||||
args.Player.AwaitingName = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.Player.AwaitingTemp1)
|
|
||||||
{
|
|
||||||
args.Player.TempArea.X = tilex;
|
|
||||||
args.Player.TempArea.Y = tiley;
|
|
||||||
args.Player.SendMessage("Set Temp Point 1", Color.Yellow);
|
|
||||||
args.Player.SendTileSquare(tilex, tiley);
|
|
||||||
args.Player.AwaitingTemp1 = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.Player.AwaitingTemp2)
|
|
||||||
{
|
|
||||||
if (tilex > args.Player.TempArea.X && tiley > args.Player.TempArea.Y)
|
|
||||||
{
|
|
||||||
args.Player.TempArea.Width = tilex - args.Player.TempArea.X;
|
|
||||||
args.Player.TempArea.Height = tiley - args.Player.TempArea.Y;
|
|
||||||
args.Player.SendMessage("Set Temp Point 2", Color.Yellow);
|
|
||||||
args.Player.SendTileSquare(tilex, tiley);
|
|
||||||
args.Player.AwaitingTemp2 = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
args.Player.SendMessage("Point 2 must be below and right of Point 1", Color.Yellow);
|
|
||||||
args.Player.SendMessage("Use /region clear to start again", Color.Yellow);
|
|
||||||
args.Player.SendTileSquare(tilex, tiley);
|
|
||||||
args.Player.AwaitingTemp2 = false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Main.tile[tilex, tiley].type != 0x15 && (!Tools.MaxChests() && Main.tile[tilex, tiley].type != 0)) //Chest
|
if (Main.tile[tilex, tiley].type != 0x15 && (!Tools.MaxChests() && Main.tile[tilex, tiley].type != 0)) //Chest
|
||||||
{
|
{
|
||||||
Log.Debug(string.Format("TileKill(TileXY:{0}_{1}, Type:{2})",
|
Log.Debug(string.Format("TileKill(TileXY:{0}_{1}, Type:{2})",
|
||||||
|
|
|
||||||
|
|
@ -39,9 +39,8 @@ namespace TShockAPI
|
||||||
public bool ReceivedInfo { get; set; }
|
public bool ReceivedInfo { get; set; }
|
||||||
public int Index { get; protected set; }
|
public int Index { get; protected set; }
|
||||||
public DateTime LastPvpChange { get; protected set; }
|
public DateTime LastPvpChange { get; protected set; }
|
||||||
public Rectangle TempArea;
|
public Point[] TempPoints = new Point[2];
|
||||||
public bool AwaitingTemp1 { get; set; }
|
public int AwaitingTempPoint { get; set; }
|
||||||
public bool AwaitingTemp2 { get; set; }
|
|
||||||
public bool AwaitingName { get; set; }
|
public bool AwaitingName { get; set; }
|
||||||
public DateTime LastExplosive { get; set; }
|
public DateTime LastExplosive { get; set; }
|
||||||
public DateTime LastTileChangeNotify { get; set; }
|
public DateTime LastTileChangeNotify { get; set; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue