Merge branch 'general-devel' of github.com:TShock/TShock into general-devel
This commit is contained in:
commit
c505889f79
5 changed files with 119 additions and 26 deletions
|
|
@ -137,6 +137,7 @@ namespace TShockAPI
|
||||||
ChatCommands.Add(new Command("warp", UseWarp, "warp"));
|
ChatCommands.Add(new Command("warp", UseWarp, "warp"));
|
||||||
ChatCommands.Add(new Command("managewarp", SetWarp, "setwarp"));
|
ChatCommands.Add(new Command("managewarp", SetWarp, "setwarp"));
|
||||||
ChatCommands.Add(new Command("managewarp", DeleteWarp, "delwarp"));
|
ChatCommands.Add(new Command("managewarp", DeleteWarp, "delwarp"));
|
||||||
|
ChatCommands.Add(new Command("managewarp", HideWarp, "hidewarp"));
|
||||||
ChatCommands.Add(new Command("managegroup", AddGroup, "addGroup"));
|
ChatCommands.Add(new Command("managegroup", AddGroup, "addGroup"));
|
||||||
ChatCommands.Add(new Command("managegroup", DeleteGroup, "delGroup"));
|
ChatCommands.Add(new Command("managegroup", DeleteGroup, "delGroup"));
|
||||||
ChatCommands.Add(new Command("managegroup", ModifyGroup, "modGroup"));
|
ChatCommands.Add(new Command("managegroup", ModifyGroup, "modGroup"));
|
||||||
|
|
@ -1217,6 +1218,31 @@ namespace TShockAPI
|
||||||
args.Player.SendMessage("Invalid syntax! Proper syntax: /delwarp [name]", Color.Red);
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /delwarp [name]", Color.Red);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void HideWarp(CommandArgs args)
|
||||||
|
{
|
||||||
|
if (args.Parameters.Count > 1)
|
||||||
|
{
|
||||||
|
string warpName = String.Join(" ", args.Parameters);
|
||||||
|
bool state = false;
|
||||||
|
if (Boolean.TryParse(args.Parameters[1], out state))
|
||||||
|
{
|
||||||
|
if (TShock.Warps.HideWarp(args.Parameters[0], state))
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
args.Player.SendMessage("Made warp " + warpName + " private", Color.Yellow);
|
||||||
|
else
|
||||||
|
args.Player.SendMessage("Made warp " + warpName + " public", Color.Yellow);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
args.Player.SendMessage("Could not find specified warp", Color.Red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /hidewarp [name] <true/false>", Color.Red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
args.Player.SendMessage("Invalid syntax! Proper syntax: /hidewarp [name] <true/false>", Color.Red);
|
||||||
|
}
|
||||||
|
|
||||||
private static void UseWarp(CommandArgs args)
|
private static void UseWarp(CommandArgs args)
|
||||||
{
|
{
|
||||||
if (args.Parameters.Count < 1)
|
if (args.Parameters.Count < 1)
|
||||||
|
|
@ -1245,7 +1271,7 @@ namespace TShockAPI
|
||||||
page--; //Substract 1 as pages are parsed starting at 1 and not 0
|
page--; //Substract 1 as pages are parsed starting at 1 and not 0
|
||||||
}
|
}
|
||||||
|
|
||||||
var warps = TShock.Warps.ListAllWarps(Main.worldID.ToString());
|
var warps = TShock.Warps.ListAllPublicWarps(Main.worldID.ToString());
|
||||||
|
|
||||||
//Check if they are trying to access a page that doesn't exist.
|
//Check if they are trying to access a page that doesn't exist.
|
||||||
int pagecount = warps.Count / pagelimit;
|
int pagecount = warps.Count / pagelimit;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
TShock, a server mod for Terraria
|
TShock, a server mod for Terraria
|
||||||
Copyright (C) 2011 The TShock Team
|
Copyright (C) 2011 The TShock Team
|
||||||
|
|
||||||
|
|
@ -172,11 +172,18 @@ namespace TShockAPI.DB
|
||||||
string[] SplitIDs = MergedIDs.Split(',');
|
string[] SplitIDs = MergedIDs.Split(',');
|
||||||
|
|
||||||
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected != 0, Main.worldID.ToString());
|
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected != 0, Main.worldID.ToString());
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SplitIDs.Length; i++)
|
for (int i = 0; i < SplitIDs.Length; i++)
|
||||||
{
|
{
|
||||||
r.AllowedIDs.Add(Convert.ToInt32(SplitIDs[i]));
|
int id;
|
||||||
|
|
||||||
|
if (Int32.TryParse(SplitIDs[i], out id)) // if unparsable, it's not an int, so silently skip
|
||||||
|
r.AllowedIDs.Add(id);
|
||||||
|
else if (SplitIDs[i] == "") // Split gotcha, can return an empty string with certain conditions
|
||||||
|
// but we only want to let the user know if it's really a nonparsable integer.
|
||||||
|
Log.Warn("One of your UserIDs is not a usable integer: " + SplitIDs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
@ -219,7 +226,13 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SplitIDs.Length; i++)
|
for (int i = 0; i < SplitIDs.Length; i++)
|
||||||
{
|
{
|
||||||
r.AllowedIDs[i] = Convert.ToInt32(SplitIDs[i]);
|
int id;
|
||||||
|
|
||||||
|
if (Int32.TryParse(SplitIDs[i], out id)) // if unparsable, it's not an int, so silently skip
|
||||||
|
r.AllowedIDs.Add(id);
|
||||||
|
else if (SplitIDs[i] == "") // Split gotcha, can return an empty string with certain conditions
|
||||||
|
// but we only want to let the user know if it's really a nonparsable integer.
|
||||||
|
Log.Warn("UnitTest: One of your UserIDs is not a usable integer: " + SplitIDs[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,11 @@ namespace TShockAPI.DB
|
||||||
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);" :
|
"CREATE TABLE IF NOT EXISTS 'Warps' ('X' NUMERIC, 'Y' NUMERIC, 'WarpName' TEXT PRIMARY KEY, 'WorldID' TEXT);" :
|
||||||
"CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));";
|
"CREATE TABLE IF NOT EXISTS Warps (X INT(11), Y INT(11), WarpName VARCHAR(255) PRIMARY, WorldID VARCHAR(255));";
|
||||||
|
|
||||||
|
if (TShock.Config.StorageType.ToLower() == "sqlite")
|
||||||
|
db.Query("ALTER TABLE 'Warps' ADD COLUMN 'Private' TEXT");
|
||||||
|
else
|
||||||
|
db.Query("ALTER TABLE Warps ADD COLUMN Private VARCHAR(255)");
|
||||||
|
|
||||||
database.Query(query);
|
database.Query(query);
|
||||||
|
|
||||||
String file = Path.Combine(TShock.SavePath, "warps.xml");
|
String file = Path.Combine(TShock.SavePath, "warps.xml");
|
||||||
|
|
@ -167,7 +172,14 @@ namespace TShockAPI.DB
|
||||||
{
|
{
|
||||||
if (reader.Read())
|
if (reader.Read())
|
||||||
{
|
{
|
||||||
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"));
|
try
|
||||||
|
{
|
||||||
|
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"), reader.Get<string>("Private"));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return new Warp(new Vector2(reader.Get<int>("X"), reader.Get<int>("Y")), reader.Get<string>("WarpName"), reader.Get<string>("WorldID"), "0");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -183,16 +195,26 @@ namespace TShockAPI.DB
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="worldid">World name to get warps from</param>
|
/// <param name="worldid">World name to get warps from</param>
|
||||||
/// <returns>List of warps with only their names</returns>
|
/// <returns>List of warps with only their names</returns>
|
||||||
public List<Warp> ListAllWarps(string worldid)
|
public List<Warp> ListAllPublicWarps(string worldid)
|
||||||
{
|
{
|
||||||
var warps = new List<Warp>();
|
var warps = new List<Warp>();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var reader = database.QueryReader("SELECT WarpName FROM Warps WHERE WorldID=@0", worldid))
|
using (var reader = database.QueryReader("SELECT * FROM Warps WHERE WorldID=@0", worldid))
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (reader.Get<String>("Private") == "0" || reader.Get<String>("Private") == null)
|
||||||
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
|
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
|
||||||
}
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
warps.Add(new Warp { WarpName = reader.Get<string>("WarpName") });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -200,6 +222,28 @@ namespace TShockAPI.DB
|
||||||
}
|
}
|
||||||
return warps;
|
return warps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <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 bool HideWarp(string warp, bool state)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string query = "UPDATE Warps SET Private=@0 WHERE WarpName=@1 AND WorldID=@2";
|
||||||
|
|
||||||
|
database.Query(query, state ? "1" : "0", warp, Main.worldID.ToString());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.Error(ex.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Warp
|
public class Warp
|
||||||
|
|
@ -207,12 +251,14 @@ namespace TShockAPI.DB
|
||||||
public Vector2 WarpPos { get; set; }
|
public Vector2 WarpPos { get; set; }
|
||||||
public string WarpName { get; set; }
|
public string WarpName { get; set; }
|
||||||
public string WorldWarpID { get; set; }
|
public string WorldWarpID { get; set; }
|
||||||
|
public string Private { get; set; }
|
||||||
|
|
||||||
public Warp(Vector2 warppos, string name, string worldname)
|
public Warp(Vector2 warppos, string name, string worldid, string hidden)
|
||||||
{
|
{
|
||||||
WarpPos = warppos;
|
WarpPos = warppos;
|
||||||
WarpName = name;
|
WarpName = name;
|
||||||
WorldWarpID = worldname;
|
WorldWarpID = worldid;
|
||||||
|
Private = hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Warp()
|
public Warp()
|
||||||
|
|
@ -220,6 +266,7 @@ namespace TShockAPI.DB
|
||||||
WarpPos = Vector2.Zero;
|
WarpPos = Vector2.Zero;
|
||||||
WarpName = null;
|
WarpName = null;
|
||||||
WorldWarpID = string.Empty;
|
WorldWarpID = string.Empty;
|
||||||
|
Private = "0";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ namespace TShockAPI
|
||||||
public bool IsLoggedIn;
|
public bool IsLoggedIn;
|
||||||
public int UserID = -1;
|
public int UserID = -1;
|
||||||
public bool HasBeenNaggedAboutLoggingIn;
|
public bool HasBeenNaggedAboutLoggingIn;
|
||||||
|
public bool TpLock = false;
|
||||||
Player FakePlayer;
|
Player FakePlayer;
|
||||||
|
|
||||||
public bool RealPlayer
|
public bool RealPlayer
|
||||||
|
|
@ -183,6 +184,8 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Teleport(int tilex, int tiley)
|
public bool Teleport(int tilex, int tiley)
|
||||||
|
{
|
||||||
|
if (!TpLock)
|
||||||
{
|
{
|
||||||
InitSpawn = false;
|
InitSpawn = false;
|
||||||
|
|
||||||
|
|
@ -203,6 +206,9 @@ namespace TShockAPI
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
SendMessage("Cannot teleport due to TP Lock", Color.Red);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void Spawn()
|
public void Spawn()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Terraria;
|
using Terraria;
|
||||||
|
using TerrariaAPI;
|
||||||
|
|
||||||
namespace TShockAPI
|
namespace TShockAPI
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue