Regions are now UserID based.
This commit is contained in:
parent
d4665e5860
commit
cd018fed8d
5 changed files with 52 additions and 10 deletions
|
|
@ -312,6 +312,7 @@ namespace TShockAPI
|
|||
{
|
||||
args.Player.Group = Tools.GetGroup(exr[1]);
|
||||
args.Player.UserAccountName = args.Parameters[0];
|
||||
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
|
||||
args.Player.IsLoggedIn = true;
|
||||
args.Player.SendMessage("Authenticated as " + args.Parameters[0] + " successfully.", Color.LimeGreen);
|
||||
Log.ConsoleInfo(args.Player.Name + " authenticated successfully as user: " + args.Parameters[0]);
|
||||
|
|
@ -1286,7 +1287,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 );
|
||||
foreach (string s in r.RegionAllowedIDs)
|
||||
foreach (int s in r.RegionAllowedIDs)
|
||||
{
|
||||
args.Player.SendMessage(r.RegionName + ": " + s);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -222,7 +222,21 @@ namespace TShockAPI.DB
|
|||
string[] SplitIDs = MergedIDs.Split(',');
|
||||
|
||||
Region r = new Region(new Rectangle(X1, Y1, width, height), name, Protected, Main.worldID.ToString());
|
||||
r.RegionAllowedIDs = SplitIDs;
|
||||
r.RegionAllowedIDs = new int[SplitIDs.Length];
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < SplitIDs.Length; i++)
|
||||
{
|
||||
r.RegionAllowedIDs[i] = Convert.ToInt32(SplitIDs[i]);
|
||||
}
|
||||
} 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.");
|
||||
Log.Error(e.Message);
|
||||
continue;
|
||||
}
|
||||
|
||||
Regions.Add(r);
|
||||
}
|
||||
reader.Close();
|
||||
|
|
@ -363,7 +377,7 @@ namespace TShockAPI.DB
|
|||
|
||||
public bool AddNewUser(string regionName, String userName)
|
||||
{
|
||||
string MergedIDs = string.Empty;
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -372,7 +386,7 @@ namespace TShockAPI.DB
|
|||
com.CommandText = "SELECT * FROM Regions WHERE RegionName=@name AND WorldID=@worldid";
|
||||
com.AddParameter("@name", regionName);
|
||||
com.AddParameter("@worldid", Main.worldID.ToString());
|
||||
|
||||
string MergedIDs = string.Empty;
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
|
|
@ -380,9 +394,9 @@ namespace TShockAPI.DB
|
|||
}
|
||||
|
||||
if (MergedIDs == string.Empty)
|
||||
MergedIDs = userName;
|
||||
MergedIDs = Convert.ToString(TShock.Users.GetUserID(userName));
|
||||
else
|
||||
MergedIDs = MergedIDs + "," + userName;
|
||||
MergedIDs = MergedIDs + "," + Convert.ToString(TShock.Users.GetUserID(userName));
|
||||
com.Parameters.Clear();
|
||||
com.CommandText = "UPDATE Regions SET UserIds=@ids WHERE RegionName=@name AND WorldID=@worldid";
|
||||
com.AddParameter("@ids", MergedIDs);
|
||||
|
|
@ -435,7 +449,7 @@ namespace TShockAPI.DB
|
|||
public string RegionName { get; set; }
|
||||
public int DisableBuild { get; set; }
|
||||
public string RegionWorldID { get; set; }
|
||||
public string[] RegionAllowedIDs { get; set; }
|
||||
public int[] RegionAllowedIDs { get; set; }
|
||||
|
||||
public Region(Rectangle region, string name, int disablebuild, string RegionWorldIDz)
|
||||
{
|
||||
|
|
@ -476,7 +490,7 @@ namespace TShockAPI.DB
|
|||
|
||||
for (int i = 0; i < RegionAllowedIDs.Length; i++)
|
||||
{
|
||||
if (RegionAllowedIDs[i] == ply.UserAccountName)
|
||||
if (RegionAllowedIDs[i] == ply.UserID)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -193,6 +193,32 @@ namespace TShockAPI.DB
|
|||
return returndata;
|
||||
}
|
||||
|
||||
public int GetUserID(string username)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var com = database.CreateCommand())
|
||||
{
|
||||
com.CommandText = "SELECT * FROM Users WHERE Username=@name";
|
||||
com.AddParameter("@name", username.ToLower());
|
||||
|
||||
using (var reader = com.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
return reader.Get<int>("ID");
|
||||
}
|
||||
reader.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.ConsoleError("FetchHashedPasswordAndGroup SQL returned an error: " + ex.ToString());
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a Group for a ip from the database
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -35,5 +35,5 @@ using System.Runtime.InteropServices;
|
|||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
|
||||
[assembly: AssemblyVersion("2.3.4.0720")]
|
||||
[assembly: AssemblyFileVersion("2.3.4.0720")]
|
||||
[assembly: AssemblyVersion("2.3.4.0721")]
|
||||
[assembly: AssemblyFileVersion("2.3.4.0721")]
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ namespace TShockAPI
|
|||
public string UserAccountName { get; set; }
|
||||
public bool HasBeenSpammedWithBuildMessage = false;
|
||||
public bool IsLoggedIn = false;
|
||||
public int UserID = -1;
|
||||
Player FakePlayer = null;
|
||||
|
||||
public bool RealPlayer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue