Merge branch 'master' of github.com:TShock/TShock
This commit is contained in:
commit
79e70bf90a
4 changed files with 222 additions and 190 deletions
|
|
@ -327,7 +327,8 @@ namespace TShockAPI
|
|||
args.Player.LoginAttempts++;
|
||||
return;
|
||||
}
|
||||
} catch (Exception)
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
args.Player.SendMessage("There was an error processing your request. Maybe your account doesn't exist?", Color.Red);
|
||||
return;
|
||||
|
|
@ -389,7 +390,7 @@ namespace TShockAPI
|
|||
else
|
||||
{
|
||||
args.Player.SendMessage("Account " + user.Name + " has already been registered.", Color.Green);
|
||||
Log.ConsoleInfo(args.Player.Name + " failed to register an existing Account: " + user.Name);
|
||||
Log.ConsoleInfo(args.Player.Name + " failed to register an existing Account: " + user.Name);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -727,7 +728,8 @@ namespace TShockAPI
|
|||
args.Player.SendMessage("This command will also change all Worlds to reference this WorldID.");
|
||||
args.Player.SendMessage("You must manually fix multi-world configurations.");
|
||||
args.Player.SendMessage("To confirm this: /convert yes");
|
||||
} else if (args.Parameters[0] == "yes")
|
||||
}
|
||||
else if (args.Parameters[0] == "yes")
|
||||
{
|
||||
TShock.Warps.ConvertDB();
|
||||
TShock.Regions.ConvertDB();
|
||||
|
|
@ -1124,61 +1126,79 @@ namespace TShockAPI
|
|||
|
||||
private static void UseWarp(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count > 0)
|
||||
if (args.Parameters.Count < 1)
|
||||
{
|
||||
if (args.Parameters[0].Equals("list"))
|
||||
{
|
||||
args.Player.SendMessage("Current Warps:", Color.Green);
|
||||
int page = 1;
|
||||
if (args.Parameters.Count > 1)
|
||||
int.TryParse(args.Parameters[1], out page);
|
||||
var sb = new StringBuilder();
|
||||
List<Warp> Warps = TShock.Warps.ListAllWarps();
|
||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /warp [name] or /warp list <page>", Color.Red);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Warps.Count > (15 * (page - 1)))
|
||||
{
|
||||
for (int j = (15 * (page - 1)); j < (15 * page); j++)
|
||||
{
|
||||
if (Warps[j].WorldWarpID == Main.worldName)
|
||||
{
|
||||
if (sb.Length != 0)
|
||||
sb.Append(", ");
|
||||
sb.Append(Warps[j].WarpName);
|
||||
if (j == Warps.Count - 1)
|
||||
{
|
||||
args.Player.SendMessage(sb.ToString(), Color.Yellow);
|
||||
break;
|
||||
}
|
||||
if ((j + 1) % 5 == 0)
|
||||
{
|
||||
args.Player.SendMessage(sb.ToString(), Color.Yellow);
|
||||
sb.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Warps.Count > (15 * page))
|
||||
{
|
||||
args.Player.SendMessage(string.Format("Type /warp list {0} for more warps.", (page + 1)), Color.Yellow);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (args.Parameters[0].Equals("list"))
|
||||
{
|
||||
//How many warps per page
|
||||
const int pagelimit = 15;
|
||||
//How many warps per line
|
||||
const int perline = 5;
|
||||
//Pages start at 0 but are displayed and parsed at 1
|
||||
int page = 0;
|
||||
|
||||
|
||||
if (args.Parameters.Count > 1)
|
||||
{
|
||||
string warpName = String.Join(" ", args.Parameters);
|
||||
var warp = TShock.Warps.FindWarp(warpName);
|
||||
if (warp.WarpPos != Vector2.Zero)
|
||||
if (!int.TryParse(args.Parameters[1], out page) || page < 1)
|
||||
{
|
||||
if (args.Player.Teleport((int)warp.WarpPos.X, (int)warp.WarpPos.Y + 3))
|
||||
args.Player.SendMessage("Warped to " + warpName, Color.Yellow);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Specified warp not found", Color.Red);
|
||||
args.Player.SendMessage(string.Format("Invalid page number ({0})", page), Color.Red);
|
||||
return;
|
||||
}
|
||||
page--; //Substract 1 as pages are parsed starting at 1 and not 0
|
||||
}
|
||||
|
||||
var warps = TShock.Warps.ListAllWarps(Main.worldName);
|
||||
|
||||
//Check if they are trying to access a page that doesn't exist.
|
||||
int pagecount = warps.Count / pagelimit;
|
||||
if (page > pagecount)
|
||||
{
|
||||
args.Player.SendMessage(string.Format("Page number exceeds pages ({0}/{1})", page + 1, pagecount + 1), Color.Red);
|
||||
return;
|
||||
}
|
||||
|
||||
//Display the current page and the number of pages.
|
||||
args.Player.SendMessage(string.Format("Current Warps ({0}/{1}):", page + 1, pagecount + 1), Color.Green);
|
||||
|
||||
//Add up to pagelimit names to a list
|
||||
var nameslist = new List<string>();
|
||||
for (int i = 0; i < pagelimit && i + (page * pagelimit) < warps.Count; i++)
|
||||
{
|
||||
nameslist.Add(warps[i].WarpName);
|
||||
}
|
||||
|
||||
//convert the list to an array for joining
|
||||
var names = nameslist.ToArray();
|
||||
for (int i = 0; i < names.Length; i += perline)
|
||||
{
|
||||
args.Player.SendMessage(string.Join(", ", names, i, Math.Min(names.Length - i, perline)), Color.Yellow);
|
||||
}
|
||||
|
||||
if (page < pagecount)
|
||||
{
|
||||
args.Player.SendMessage(string.Format("Type /warp list {0} for more warps.", (page + 1)), Color.Yellow);
|
||||
}
|
||||
}
|
||||
else
|
||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /warp [name] or warp list", Color.Red);
|
||||
{
|
||||
string warpName = String.Join(" ", args.Parameters);
|
||||
var warp = TShock.Warps.FindWarp(warpName);
|
||||
if (warp.WarpPos != Vector2.Zero)
|
||||
{
|
||||
if (args.Player.Teleport((int)warp.WarpPos.X, (int)warp.WarpPos.Y + 3))
|
||||
args.Player.SendMessage("Warped to " + warpName, Color.Yellow);
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendMessage("Specified warp not found", Color.Red);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion Teleport Commands
|
||||
|
|
@ -1375,7 +1395,7 @@ namespace TShockAPI
|
|||
{
|
||||
foreach (Region r in TShock.Regions.Regions)
|
||||
{
|
||||
args.Player.SendMessage(r.RegionName + ": P: " + r.DisableBuild + " X: " + r.RegionArea.X + " Y: " + r.RegionArea.Y + " W: " + r.RegionArea.Width + " H: " + r.RegionArea.Height );
|
||||
args.Player.SendMessage(r.RegionName + ": P: " + r.DisableBuild + " X: " + r.RegionArea.X + " Y: " + r.RegionArea.Y + " W: " + r.RegionArea.Width + " H: " + r.RegionArea.Height);
|
||||
foreach (int s in r.RegionAllowedIDs)
|
||||
{
|
||||
args.Player.SendMessage(r.RegionName + ": " + s);
|
||||
|
|
@ -1541,40 +1561,56 @@ namespace TShockAPI
|
|||
}
|
||||
case "list":
|
||||
{
|
||||
args.Player.SendMessage("Current Regions:", Color.Green);
|
||||
int page = 1;
|
||||
//How many regions per page
|
||||
const int pagelimit = 15;
|
||||
//How many regions per line
|
||||
const int perline = 5;
|
||||
//Pages start at 0 but are displayed and parsed at 1
|
||||
int page = 0;
|
||||
|
||||
|
||||
if (args.Parameters.Count > 1)
|
||||
int.TryParse(args.Parameters[1], out page);
|
||||
var sb = new StringBuilder();
|
||||
|
||||
List<Region> Regions = TShock.Regions.ListAllRegions();
|
||||
|
||||
if (Regions.Count > (15 * (page - 1)))
|
||||
{
|
||||
for (int j = (15 * (page - 1)); j < (15 * page); j++)
|
||||
if (!int.TryParse(args.Parameters[1], out page) || page < 1)
|
||||
{
|
||||
if (Regions[j].RegionWorldID == Main.worldName)
|
||||
{
|
||||
if (sb.Length != 0)
|
||||
sb.Append(", ");
|
||||
sb.Append(Regions[j].RegionName);
|
||||
if (j == Regions.Count - 1)
|
||||
{
|
||||
args.Player.SendMessage(sb.ToString(), Color.Yellow);
|
||||
break;
|
||||
}
|
||||
if ((j + 1) % 5 == 0)
|
||||
{
|
||||
args.Player.SendMessage(sb.ToString(), Color.Yellow);
|
||||
sb.Clear();
|
||||
}
|
||||
}
|
||||
args.Player.SendMessage(string.Format("Invalid page number ({0})", page), Color.Red);
|
||||
return;
|
||||
}
|
||||
page--; //Substract 1 as pages are parsed starting at 1 and not 0
|
||||
}
|
||||
if (Regions.Count > (15 * page))
|
||||
|
||||
var regions = TShock.Regions.ListAllRegions(Main.worldName);
|
||||
|
||||
//Check if they are trying to access a page that doesn't exist.
|
||||
int pagecount = regions.Count / pagelimit;
|
||||
if (page > pagecount)
|
||||
{
|
||||
args.Player.SendMessage(string.Format("Page number exceeds pages ({0}/{1})", page + 1, pagecount + 1), Color.Red);
|
||||
return;
|
||||
}
|
||||
|
||||
//Display the current page and the number of pages.
|
||||
args.Player.SendMessage(string.Format("Current Regions ({0}/{1}):", page + 1, pagecount + 1), Color.Green);
|
||||
|
||||
//Add up to pagelimit names to a list
|
||||
var nameslist = new List<string>();
|
||||
for (int i = 0; i < pagelimit && i + (page * pagelimit) < regions.Count; i++)
|
||||
{
|
||||
nameslist.Add(regions[i].RegionName);
|
||||
}
|
||||
|
||||
//convert the list to an array for joining
|
||||
var names = nameslist.ToArray();
|
||||
for (int i = 0; i < names.Length; i += perline)
|
||||
{
|
||||
args.Player.SendMessage(string.Join(", ", names, i, Math.Min(names.Length - i, perline)), Color.Yellow);
|
||||
}
|
||||
|
||||
if (page < pagecount)
|
||||
{
|
||||
args.Player.SendMessage(string.Format("Type /region list {0} for more regions.", (page + 1)), Color.Yellow);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case "help":
|
||||
|
|
@ -1877,7 +1913,7 @@ namespace TShockAPI
|
|||
return;
|
||||
}
|
||||
int itemAmount = 0;
|
||||
int.TryParse( args.Parameters[args.Parameters.Count - 1 ], out itemAmount );
|
||||
int.TryParse(args.Parameters[args.Parameters.Count - 1], out itemAmount);
|
||||
var items = Tools.GetItemByIdOrName(args.Parameters[0]);
|
||||
if (items.Count == 0)
|
||||
{
|
||||
|
|
@ -1894,7 +1930,7 @@ namespace TShockAPI
|
|||
{
|
||||
if (args.Player.InventorySlotAvailable || item.name.Contains("Coin"))
|
||||
{
|
||||
if( itemAmount == 0 || itemAmount > item.maxStack )
|
||||
if (itemAmount == 0 || itemAmount > item.maxStack)
|
||||
itemAmount = item.maxStack;
|
||||
args.Player.GiveItem(item.type, item.name, item.width, item.height, itemAmount);
|
||||
args.Player.SendMessage(string.Format("Gave {0} {1}(s).", itemAmount.ToString(), item.name));
|
||||
|
|
|
|||
|
|
@ -28,101 +28,84 @@ namespace TShockAPI.DB
|
|||
"CREATE TABLE IF NOT EXISTS GroupList (GroupName VARCHAR(255) PRIMARY, Commands VARCHAR(255), OrderBy VARCHAR(255));";
|
||||
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
com.AddParameter("@groupname", "trustedadmin");
|
||||
com.AddParameter("@commands", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
|
||||
com.AddParameter("@order", "0");
|
||||
com.ExecuteNonQuery();
|
||||
com.Parameters.Clear();
|
||||
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
com.AddParameter("@groupname", "admin");
|
||||
com.AddParameter("@commands", "newadmin,ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
|
||||
com.AddParameter("@order", "0");
|
||||
com.ExecuteNonQuery();
|
||||
com.Parameters.Clear();
|
||||
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
com.AddParameter("@groupname", "newadmin");
|
||||
com.AddParameter("@commands", "default,kick,editspawn,reservedslot");
|
||||
com.AddParameter("@order", "0");
|
||||
com.ExecuteNonQuery();
|
||||
com.Parameters.Clear();
|
||||
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
com.AddParameter("@groupname", "default");
|
||||
com.AddParameter("@commands", "canwater,canlava,warp,canbuild");
|
||||
com.AddParameter("@order", "0");
|
||||
com.ExecuteNonQuery();
|
||||
com.Parameters.Clear();
|
||||
//Add default groups
|
||||
AddGroup("trustedadmin", "admin,maintenance,cfg,butcher,item,heal,immunetoban,ignorecheatdetection,ignoregriefdetection,usebanneditem,manageusers");
|
||||
AddGroup("admin", "newadmin,ban,unban,whitelist,causeevents,spawnboss,spawnmob,managewarp,time,tp,pvpfun,kill,logs,immunetokick,tphere");
|
||||
AddGroup("newadmin", "default,kick,editspawn,reservedslot");
|
||||
AddGroup("default", "canwater,canlava,warp,canbuild");
|
||||
AddGroup("vip", "default,canwater,canlava,warp,canbuild,reservedslot");
|
||||
|
||||
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
com.AddParameter("@groupname", "vip");
|
||||
com.AddParameter("@commands", "default,canwater,canlava,warp,canbuild,reservedslot");
|
||||
com.AddParameter("@order", "0");
|
||||
com.ExecuteNonQuery();
|
||||
com.Parameters.Clear();
|
||||
|
||||
String file = Path.Combine(TShock.SavePath, "groups.txt");
|
||||
if (File.Exists(file))
|
||||
String file = Path.Combine(TShock.SavePath, "groups.txt");
|
||||
if (File.Exists(file))
|
||||
{
|
||||
using (StreamReader sr = new StreamReader(file))
|
||||
{
|
||||
using (StreamReader sr = new StreamReader(file))
|
||||
String line;
|
||||
while ((line = sr.ReadLine()) != null)
|
||||
{
|
||||
String line;
|
||||
while ((line = sr.ReadLine()) != null)
|
||||
if (!line.Equals("") && !line.Substring(0, 1).Equals("#"))
|
||||
{
|
||||
if( !line.Equals("") && !line.Substring( 0,1 ).Equals( "#" ) )
|
||||
String[] info = line.Split(' ');
|
||||
String comms = "";
|
||||
int size = info.Length;
|
||||
int test = 0;
|
||||
bool hasOrder = int.TryParse(info[info.Length - 1], out test);
|
||||
if (hasOrder)
|
||||
size = info.Length - 1;
|
||||
for (int i = 1; i < size; i++)
|
||||
{
|
||||
if (!comms.Equals(""))
|
||||
comms = comms + ",";
|
||||
comms = comms + info[i].Trim();
|
||||
}
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
String[] info = line.Split(' ');
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText = "INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText = "INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
String comms = "";
|
||||
int size = info.Length;
|
||||
int test = 0;
|
||||
bool hasOrder = int.TryParse(info[info.Length - 1], out test);
|
||||
if( hasOrder )
|
||||
size = info.Length - 1;
|
||||
for (int i = 1; i < size; i++)
|
||||
{
|
||||
if (!comms.Equals(""))
|
||||
comms = comms + ",";
|
||||
comms = comms + info[i].Trim();
|
||||
}
|
||||
com.AddParameter("@groupname", info[0].Trim().ToString());
|
||||
|
||||
com.AddParameter("@groupname", info[0].Trim());
|
||||
com.AddParameter("@commands", comms);
|
||||
com.AddParameter("@order", hasOrder ? info[info.Length-1] : "0");
|
||||
com.AddParameter("@order", hasOrder ? info[info.Length - 1] : "0");
|
||||
com.ExecuteNonQuery();
|
||||
com.Parameters.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
String path = Path.Combine(TShock.SavePath, "old_configs");
|
||||
String file2 = Path.Combine(path, "groups.txt");
|
||||
if (!Directory.Exists(path))
|
||||
System.IO.Directory.CreateDirectory(path);
|
||||
if (File.Exists(file2))
|
||||
File.Delete(file2);
|
||||
File.Move(file, file2);
|
||||
}
|
||||
String path = Path.Combine(TShock.SavePath, "old_configs");
|
||||
String file2 = Path.Combine(path, "groups.txt");
|
||||
if (!Directory.Exists(path))
|
||||
System.IO.Directory.CreateDirectory(path);
|
||||
if (File.Exists(file2))
|
||||
File.Delete(file2);
|
||||
File.Move(file, file2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds group with name and permissions if it does not exist.
|
||||
/// </summary>
|
||||
/// <param name="name">name of group</param>
|
||||
/// <param name="commands">permissions</param>
|
||||
public void AddGroup(string name, string commands)
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||
com.CommandText =
|
||||
"INSERT OR IGNORE INTO GroupList (GroupName, Commands, OrderBy) VALUES (@groupname, @commands, @order);";
|
||||
else if (TShock.Config.StorageType.ToLower() == "mysql")
|
||||
com.CommandText =
|
||||
"INSERT IGNORE INTO GroupList SET GroupName=@groupname, Commands=@commands, OrderBy=@order;";
|
||||
com.AddParameter("@groupname", name);
|
||||
com.AddParameter("@commands", commands);
|
||||
com.AddParameter("@order", "0");
|
||||
com.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -166,7 +149,7 @@ namespace TShockAPI.DB
|
|||
|
||||
//Inherit Given commands
|
||||
String[] commands = reader.Get<String>("Commands").Split(',');
|
||||
for( int i = 0; i < commands.Length; i++ )
|
||||
for (int i = 0; i < commands.Length; i++)
|
||||
{
|
||||
group.AddPermission(commands[i].Trim());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ namespace TShockAPI.DB
|
|||
switch (reader.NodeType)
|
||||
{
|
||||
case XmlNodeType.Element:
|
||||
switch( reader.Name )
|
||||
switch (reader.Name)
|
||||
{
|
||||
case "ProtectedRegion":
|
||||
name = "";
|
||||
|
|
@ -96,22 +96,22 @@ namespace TShockAPI.DB
|
|||
case "Point1X":
|
||||
while (reader.NodeType != XmlNodeType.Text)
|
||||
reader.Read();
|
||||
int.TryParse( reader.Value, out x1 );
|
||||
int.TryParse(reader.Value, out x1);
|
||||
break;
|
||||
case "Point1Y":
|
||||
while (reader.NodeType != XmlNodeType.Text)
|
||||
reader.Read();
|
||||
int.TryParse(reader.Value, out y1);
|
||||
int.TryParse(reader.Value, out y1);
|
||||
break;
|
||||
case "Point2X":
|
||||
while (reader.NodeType != XmlNodeType.Text)
|
||||
reader.Read();
|
||||
int.TryParse(reader.Value, out x2);
|
||||
int.TryParse(reader.Value, out x2);
|
||||
break;
|
||||
case "Point2Y":
|
||||
while (reader.NodeType != XmlNodeType.Text)
|
||||
reader.Read();
|
||||
int.TryParse(reader.Value, out y2);
|
||||
int.TryParse(reader.Value, out y2);
|
||||
break;
|
||||
case "Protected":
|
||||
while (reader.NodeType != XmlNodeType.Text)
|
||||
|
|
@ -120,10 +120,11 @@ namespace TShockAPI.DB
|
|||
{
|
||||
prot = 0;
|
||||
}
|
||||
else{
|
||||
else
|
||||
{
|
||||
prot = 1;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case "WorldName":
|
||||
while (reader.NodeType != XmlNodeType.Text)
|
||||
reader.Read();
|
||||
|
|
@ -144,18 +145,19 @@ namespace TShockAPI.DB
|
|||
ips[i] = reader.Value;
|
||||
}
|
||||
ipstr = "";
|
||||
for( int i = 0; i < ips.Length; i++ )
|
||||
for (int i = 0; i < ips.Length; i++)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ipstr != "")
|
||||
ipstr += ",";
|
||||
ipstr += TShock.Users.GetUserID(ips[i]);
|
||||
} catch (Exception)
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Log.Error("An IP address failed to import. It wasn't a user in the new user system.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -166,7 +168,7 @@ namespace TShockAPI.DB
|
|||
com.AddParameter("@tx", x1);
|
||||
com.AddParameter("@ty", y1);
|
||||
com.AddParameter("@width", x2);
|
||||
com.AddParameter("@height",y2);
|
||||
com.AddParameter("@height", y2);
|
||||
com.AddParameter("@name", name);
|
||||
com.AddParameter("@worldid", world);
|
||||
com.AddParameter("@userids", ipstr);
|
||||
|
|
@ -200,7 +202,7 @@ namespace TShockAPI.DB
|
|||
//File.Move(file, file2);
|
||||
}
|
||||
|
||||
if( updates > 0 )
|
||||
if (updates > 0)
|
||||
ReloadAllRegions();
|
||||
}
|
||||
}
|
||||
|
|
@ -225,7 +227,7 @@ namespace TShockAPI.DB
|
|||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ReloadAllRegions()
|
||||
{
|
||||
|
|
@ -262,7 +264,8 @@ namespace TShockAPI.DB
|
|||
}
|
||||
r.RegionAllowedIDs[i] = Convert.ToInt32(SplitIDs[i]);
|
||||
}
|
||||
} catch (Exception e)
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error("Your database contains invalid UserIDs (they should be ints).");
|
||||
Log.Error("A lot of things will fail because of this. You must manually delete and re-create the allowed field.");
|
||||
|
|
@ -374,7 +377,7 @@ namespace TShockAPI.DB
|
|||
|
||||
public bool InArea(int x, int y)
|
||||
{
|
||||
foreach(Region region in Regions)
|
||||
foreach (Region region in Regions)
|
||||
{
|
||||
if (x >= region.RegionArea.Left && x <= region.RegionArea.Right &&
|
||||
y >= region.RegionArea.Top && y <= region.RegionArea.Bottom &&
|
||||
|
|
@ -438,7 +441,8 @@ namespace TShockAPI.DB
|
|||
{
|
||||
ReloadAllRegions();
|
||||
return true;
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -451,19 +455,24 @@ namespace TShockAPI.DB
|
|||
}
|
||||
}
|
||||
|
||||
public List<Region> ListAllRegions()
|
||||
/// <summary>
|
||||
/// Gets all the regions names from world
|
||||
/// </summary>
|
||||
/// <param name="worldid">World name to get regions from</param>
|
||||
/// <returns>List of regions with only their names</returns>
|
||||
public List<Region> ListAllRegions(string worldid)
|
||||
{
|
||||
List<Region> Regions = new List<Region>();
|
||||
var regions = new List<Region>();
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "SELECT * FROM Regions";
|
||||
com.CommandText = "SELECT RegionName FROM Regions WHERE WorldID=@worldid";
|
||||
com.AddParameter("@worldid", worldid);
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
Regions.Add(new Region(new Rectangle(reader.Get<int>("X1"), reader.Get<int>("Y1"), reader.Get<int>("height"), reader.Get<int>("width")), reader.Get<string>("RegionName"), reader.Get<int>("Protected"), reader.Get<string>("WorldID")));
|
||||
reader.Close();
|
||||
regions.Add(new Region { RegionName = reader.Get<string>("RegionName") });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -471,7 +480,7 @@ namespace TShockAPI.DB
|
|||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
return Regions;
|
||||
return regions;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ namespace TShockAPI.DB
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
reader.Close();
|
||||
String path = Path.Combine(TShock.SavePath, "old_configs");
|
||||
|
|
@ -145,7 +145,7 @@ namespace TShockAPI.DB
|
|||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool AddWarp(int x, int y, string name, string worldid)
|
||||
{
|
||||
|
|
@ -202,7 +202,7 @@ namespace TShockAPI.DB
|
|||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"));
|
||||
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"));
|
||||
}
|
||||
reader.Close();
|
||||
}
|
||||
|
|
@ -215,20 +215,24 @@ namespace TShockAPI.DB
|
|||
return new Warp();
|
||||
}
|
||||
|
||||
public List<Warp> ListAllWarps()
|
||||
/// <summary>
|
||||
/// Gets all the warps names from world
|
||||
/// </summary>
|
||||
/// <param name="worldid">World name to get warps from</param>
|
||||
/// <returns>List of warps with only their names</returns>
|
||||
public List<Warp> ListAllWarps(string worldid)
|
||||
{
|
||||
List<Warp> Warps = new List<Warp>();
|
||||
var warps = new List<Warp>();
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "SELECT * FROM Warps";
|
||||
com.CommandText = "SELECT WarpName FROM Warps WHERE WorldID=@worldid";
|
||||
com.AddParameter("@worldid", worldid);
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
while (reader.Read())
|
||||
Warps.Add(new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID")));
|
||||
|
||||
reader.Close();
|
||||
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -236,7 +240,7 @@ namespace TShockAPI.DB
|
|||
{
|
||||
Log.Error(ex.ToString());
|
||||
}
|
||||
return Warps;
|
||||
return warps;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue