Commit #3,000
Merge branch 'general-devel' of github.com:NyxStudios/TShock into general-devel
This commit is contained in:
commit
a503c1e84e
7 changed files with 99 additions and 92 deletions
|
|
@ -744,21 +744,21 @@ namespace TShockAPI
|
||||||
bool usingUUID = false;
|
bool usingUUID = false;
|
||||||
if (args.Parameters.Count == 0 && !TShock.Config.DisableUUIDLogin)
|
if (args.Parameters.Count == 0 && !TShock.Config.DisableUUIDLogin)
|
||||||
{
|
{
|
||||||
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, ""))
|
if (PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, ""))
|
||||||
return;
|
return;
|
||||||
user = TShock.Users.GetUserByName(args.Player.Name);
|
user = TShock.Users.GetUserByName(args.Player.Name);
|
||||||
usingUUID = true;
|
usingUUID = true;
|
||||||
}
|
}
|
||||||
else if (args.Parameters.Count == 1)
|
else if (args.Parameters.Count == 1)
|
||||||
{
|
{
|
||||||
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, args.Parameters[0]))
|
if (PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, args.Parameters[0]))
|
||||||
return;
|
return;
|
||||||
user = TShock.Users.GetUserByName(args.Player.Name);
|
user = TShock.Users.GetUserByName(args.Player.Name);
|
||||||
password = args.Parameters[0];
|
password = args.Parameters[0];
|
||||||
}
|
}
|
||||||
else if (args.Parameters.Count == 2 && TShock.Config.AllowLoginAnyUsername)
|
else if (args.Parameters.Count == 2 && TShock.Config.AllowLoginAnyUsername)
|
||||||
{
|
{
|
||||||
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Parameters[0], args.Parameters[1]))
|
if (PlayerHooks.OnPlayerPreLogin(args.Player, args.Parameters[0], args.Parameters[1]))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
user = TShock.Users.GetUserByName(args.Parameters[0]);
|
user = TShock.Users.GetUserByName(args.Parameters[0]);
|
||||||
|
|
@ -809,8 +809,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
args.Player.Group = group;
|
args.Player.Group = group;
|
||||||
args.Player.tempGroup = null;
|
args.Player.tempGroup = null;
|
||||||
args.Player.UserAccountName = user.Name;
|
args.Player.User = user;
|
||||||
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
|
|
||||||
args.Player.IsLoggedIn = true;
|
args.Player.IsLoggedIn = true;
|
||||||
args.Player.IgnoreActionsForInventory = "none";
|
args.Player.IgnoreActionsForInventory = "none";
|
||||||
|
|
||||||
|
|
@ -874,8 +873,7 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
args.Player.tempGroupTimer.Stop();
|
args.Player.tempGroupTimer.Stop();
|
||||||
}
|
}
|
||||||
args.Player.UserAccountName = null;
|
args.Player.User = null;
|
||||||
args.Player.UserID = -1;
|
|
||||||
args.Player.IsLoggedIn = false;
|
args.Player.IsLoggedIn = false;
|
||||||
|
|
||||||
args.Player.SendSuccessMessage("You have been successfully logged out of your account.");
|
args.Player.SendSuccessMessage("You have been successfully logged out of your account.");
|
||||||
|
|
@ -887,19 +885,18 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
if (args.Player.IsLoggedIn && args.Parameters.Count == 2)
|
if (args.Player.IsLoggedIn && args.Parameters.Count == 2)
|
||||||
{
|
{
|
||||||
var user = TShock.Users.GetUserByName(args.Player.UserAccountName);
|
|
||||||
string password = args.Parameters[0];
|
string password = args.Parameters[0];
|
||||||
if (user.VerifyPassword(password))
|
if (args.Player.User.VerifyPassword(password))
|
||||||
{
|
{
|
||||||
args.Player.SendSuccessMessage("You changed your password!");
|
args.Player.SendSuccessMessage("You changed your password!");
|
||||||
TShock.Users.SetUserPassword(user, args.Parameters[1]); // SetUserPassword will hash it for you.
|
TShock.Users.SetUserPassword(args.Player.User, args.Parameters[1]); // SetUserPassword will hash it for you.
|
||||||
TShock.Log.ConsoleInfo(args.Player.IP + " named " + args.Player.Name + " changed the password of account " + user.Name + ".");
|
TShock.Log.ConsoleInfo(args.Player.IP + " named " + args.Player.Name + " changed the password of account " + args.Player.User.Name + ".");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
args.Player.SendErrorMessage("You failed to change your password!");
|
args.Player.SendErrorMessage("You failed to change your password!");
|
||||||
TShock.Log.ConsoleError(args.Player.IP + " named " + args.Player.Name + " failed to change password for account: " +
|
TShock.Log.ConsoleError(args.Player.IP + " named " + args.Player.Name + " failed to change password for account: " +
|
||||||
user.Name + ".");
|
args.Player.User.Name + ".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1150,7 +1147,7 @@ namespace TShockAPI
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
args.Player.SendSuccessMessage("IP Address: " + players[0].IP + " Logged in as: " + players[0].UserAccountName + " group: " + players[0].Group.Name);
|
args.Player.SendSuccessMessage("IP Address: " + players[0].IP + " Logged in as: " + players[0].User.Name + " group: " + players[0].Group.Name);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|
@ -1227,8 +1224,8 @@ namespace TShockAPI
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var knownIps = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
|
var knownIps = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
|
||||||
TShock.Bans.AddBan(knownIps.Last(), user.Name, user.UUID, reason, false, args.Player.UserAccountName);
|
TShock.Bans.AddBan(knownIps.Last(), user.Name, user.UUID, reason, false, args.Player.User.Name);
|
||||||
if (String.IsNullOrWhiteSpace(args.Player.UserAccountName))
|
if (String.IsNullOrWhiteSpace(args.Player.User.Name))
|
||||||
{
|
{
|
||||||
if (args.Silent)
|
if (args.Silent)
|
||||||
{
|
{
|
||||||
|
|
@ -1259,7 +1256,7 @@ namespace TShockAPI
|
||||||
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.UserAccountName))
|
if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.User.Name))
|
||||||
args.Player.SendErrorMessage("You can't ban {0}!", players[0].Name);
|
args.Player.SendErrorMessage("You can't ban {0}!", players[0].Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1278,7 +1275,7 @@ namespace TShockAPI
|
||||||
string reason = args.Parameters.Count > 2
|
string reason = args.Parameters.Count > 2
|
||||||
? String.Join(" ", args.Parameters.GetRange(2, args.Parameters.Count - 2))
|
? String.Join(" ", args.Parameters.GetRange(2, args.Parameters.Count - 2))
|
||||||
: "Manually added IP address ban.";
|
: "Manually added IP address ban.";
|
||||||
TShock.Bans.AddBan(ip, "", "", reason, false, args.Player.UserAccountName);
|
TShock.Bans.AddBan(ip, "", "", reason, false, args.Player.User.Name);
|
||||||
args.Player.SendSuccessMessage("Banned IP {0}.", ip);
|
args.Player.SendSuccessMessage("Banned IP {0}.", ip);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -1316,8 +1313,8 @@ namespace TShockAPI
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var knownIps = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
|
var knownIps = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
|
||||||
TShock.Bans.AddBan(knownIps.Last(), user.Name, user.UUID, reason, false, args.Player.UserAccountName, DateTime.UtcNow.AddSeconds(time).ToString("s"));
|
TShock.Bans.AddBan(knownIps.Last(), user.Name, user.UUID, reason, false, args.Player.User.Name, DateTime.UtcNow.AddSeconds(time).ToString("s"));
|
||||||
if (String.IsNullOrWhiteSpace(args.Player.UserAccountName))
|
if (String.IsNullOrWhiteSpace(args.Player.User.Name))
|
||||||
{
|
{
|
||||||
if (args.Silent)
|
if (args.Silent)
|
||||||
{
|
{
|
||||||
|
|
@ -1636,7 +1633,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (ply.Count > 1)
|
if (ply.Count > 1)
|
||||||
{
|
{
|
||||||
TShock.Utils.SendMultipleMatchError(args.Player, ply.Select(p => p.UserAccountName));
|
TShock.Utils.SendMultipleMatchError(args.Player, ply.Select(p => p.User.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!TShock.Groups.GroupExists(args.Parameters[1]))
|
if(!TShock.Groups.GroupExists(args.Parameters[1]))
|
||||||
|
|
@ -3872,7 +3869,7 @@ namespace TShockAPI
|
||||||
var width = Math.Abs(args.Player.TempPoints[0].X - args.Player.TempPoints[1].X);
|
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);
|
var height = Math.Abs(args.Player.TempPoints[0].Y - args.Player.TempPoints[1].Y);
|
||||||
|
|
||||||
if (TShock.Regions.AddRegion(x, y, width, height, regionName, args.Player.UserAccountName,
|
if (TShock.Regions.AddRegion(x, y, width, height, regionName, args.Player.User.Name,
|
||||||
Main.worldID.ToString()))
|
Main.worldID.ToString()))
|
||||||
{
|
{
|
||||||
args.Player.TempPoints[0] = Point.Zero;
|
args.Player.TempPoints[0] = Point.Zero;
|
||||||
|
|
|
||||||
|
|
@ -615,7 +615,7 @@ namespace TShockAPI.DB
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return AllowedIDs.Contains(ply.UserID) || AllowedGroups.Contains(ply.Group.Name) || Owner == ply.UserAccountName;
|
return AllowedIDs.Contains(ply.User.ID) || AllowedGroups.Contains(ply.Group.Name) || Owner == ply.User.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAllowedIDs(String ids)
|
public void setAllowedIDs(String ids)
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ namespace TShockAPI.DB
|
||||||
throw new UserNotExistException(user.Name);
|
throw new UserNotExistException(user.Name);
|
||||||
|
|
||||||
// Update player group reference for any logged in player
|
// Update player group reference for any logged in player
|
||||||
foreach (var player in TShock.Players.Where(p => null != p && p.UserAccountName == user.Name))
|
foreach (var player in TShock.Players.Where(p => null != p && p.User.Name == user.Name))
|
||||||
{
|
{
|
||||||
player.Group = grp;
|
player.Group = grp;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1464,8 +1464,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
args.Player.Group = group;
|
args.Player.Group = group;
|
||||||
args.Player.tempGroup = null;
|
args.Player.tempGroup = null;
|
||||||
args.Player.UserAccountName = args.Player.Name;
|
args.Player.User = user;
|
||||||
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
|
|
||||||
args.Player.IsLoggedIn = true;
|
args.Player.IsLoggedIn = true;
|
||||||
args.Player.IgnoreActionsForInventory = "none";
|
args.Player.IgnoreActionsForInventory = "none";
|
||||||
|
|
||||||
|
|
@ -1506,55 +1505,54 @@ namespace TShockAPI
|
||||||
|
|
||||||
string password = args.Data.ReadString();
|
string password = args.Data.ReadString();
|
||||||
|
|
||||||
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, password))
|
if (Hooks.PlayerHooks.OnPlayerPreLogin(args.Player, args.Player.Name, password))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
var user = TShock.Users.GetUserByName(args.Player.Name);
|
var user = TShock.Users.GetUserByName(args.Player.Name);
|
||||||
if (user != null && !TShock.Config.DisableLoginBeforeJoin)
|
if (user != null && !TShock.Config.DisableLoginBeforeJoin)
|
||||||
{
|
{
|
||||||
if (user.VerifyPassword(password))
|
if (user.VerifyPassword(password))
|
||||||
{
|
{
|
||||||
args.Player.RequiresPassword = false;
|
args.Player.RequiresPassword = false;
|
||||||
args.Player.PlayerData = TShock.CharacterDB.GetPlayerData(args.Player, TShock.Users.GetUserID(args.Player.Name));
|
args.Player.PlayerData = TShock.CharacterDB.GetPlayerData(args.Player, TShock.Users.GetUserID(args.Player.Name));
|
||||||
|
|
||||||
if (args.Player.State == 1)
|
if (args.Player.State == 1)
|
||||||
args.Player.State = 2;
|
args.Player.State = 2;
|
||||||
NetMessage.SendData((int) PacketTypes.WorldInfo, args.Player.Index);
|
NetMessage.SendData((int) PacketTypes.WorldInfo, args.Player.Index);
|
||||||
|
|
||||||
var group = TShock.Utils.GetGroup(user.Group);
|
var group = TShock.Utils.GetGroup(user.Group);
|
||||||
|
|
||||||
if (Main.ServerSideCharacter)
|
if (Main.ServerSideCharacter)
|
||||||
|
{
|
||||||
|
if (group.HasPermission(Permissions.bypassssc))
|
||||||
{
|
{
|
||||||
if (group.HasPermission(Permissions.bypassssc))
|
args.Player.IgnoreActionsForClearingTrashCan = false;
|
||||||
{
|
|
||||||
args.Player.IgnoreActionsForClearingTrashCan = false;
|
|
||||||
}
|
|
||||||
args.Player.PlayerData.RestoreCharacter(args.Player);
|
|
||||||
}
|
}
|
||||||
|
args.Player.PlayerData.RestoreCharacter(args.Player);
|
||||||
|
}
|
||||||
args.Player.LoginFailsBySsi = false;
|
args.Player.LoginFailsBySsi = false;
|
||||||
|
|
||||||
if (group.HasPermission(Permissions.ignorestackhackdetection))
|
if (group.HasPermission(Permissions.ignorestackhackdetection))
|
||||||
args.Player.IgnoreActionsForCheating = "none";
|
args.Player.IgnoreActionsForCheating = "none";
|
||||||
|
|
||||||
if (group.HasPermission(Permissions.usebanneditem))
|
if (group.HasPermission(Permissions.usebanneditem))
|
||||||
args.Player.IgnoreActionsForDisabledArmor = "none";
|
args.Player.IgnoreActionsForDisabledArmor = "none";
|
||||||
|
|
||||||
args.Player.Group = group;
|
args.Player.Group = group;
|
||||||
args.Player.tempGroup = null;
|
args.Player.tempGroup = null;
|
||||||
args.Player.UserAccountName = args.Player.Name;
|
args.Player.User = user;
|
||||||
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
|
args.Player.IsLoggedIn = true;
|
||||||
args.Player.IsLoggedIn = true;
|
args.Player.IgnoreActionsForInventory = "none";
|
||||||
args.Player.IgnoreActionsForInventory = "none";
|
|
||||||
|
|
||||||
if (!args.Player.IgnoreActionsForClearingTrashCan && Main.ServerSideCharacter)
|
if (!args.Player.IgnoreActionsForClearingTrashCan && Main.ServerSideCharacter)
|
||||||
{
|
{
|
||||||
args.Player.PlayerData.CopyCharacter(args.Player);
|
args.Player.PlayerData.CopyCharacter(args.Player);
|
||||||
TShock.CharacterDB.InsertPlayerData(args.Player);
|
TShock.CharacterDB.InsertPlayerData(args.Player);
|
||||||
}
|
}
|
||||||
args.Player.SendMessage("Authenticated as " + args.Player.Name + " successfully.", Color.LimeGreen);
|
args.Player.SendMessage("Authenticated as " + args.Player.Name + " successfully.", Color.LimeGreen);
|
||||||
TShock.Log.ConsoleInfo(args.Player.Name + " authenticated successfully as user " + args.Player.Name + ".");
|
TShock.Log.ConsoleInfo(args.Player.Name + " authenticated successfully as user " + args.Player.Name + ".");
|
||||||
TShock.Users.SetUserUUID(user, args.Player.UUID);
|
TShock.Users.SetUserUUID(user, args.Player.UUID);
|
||||||
Hooks.PlayerHooks.OnPlayerPostLogin(args.Player);
|
Hooks.PlayerHooks.OnPlayerPostLogin(args.Player);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
TShock.Utils.ForceKick(args.Player, "Invalid user account password.", true);
|
TShock.Utils.ForceKick(args.Player, "Invalid user account password.", true);
|
||||||
|
|
@ -2618,10 +2616,9 @@ namespace TShockAPI
|
||||||
|
|
||||||
if (args.TPlayer.difficulty == 2 && Main.ServerSideCharacter && args.Player.IsLoggedIn)
|
if (args.TPlayer.difficulty == 2 && Main.ServerSideCharacter && args.Player.IsLoggedIn)
|
||||||
{
|
{
|
||||||
User user = TShock.Users.GetUserByName(args.Player.UserAccountName);
|
if (TShock.CharacterDB.RemovePlayer(args.Player.User.ID))
|
||||||
if (TShock.CharacterDB.RemovePlayer(user.ID))
|
|
||||||
{
|
{
|
||||||
TShock.CharacterDB.SeedInitialData(user);
|
TShock.CharacterDB.SeedInitialData(args.Player.User);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -394,7 +394,7 @@ namespace TShockAPI
|
||||||
[Token]
|
[Token]
|
||||||
private object UserActiveListV2(RestRequestArgs args)
|
private object UserActiveListV2(RestRequestArgs args)
|
||||||
{
|
{
|
||||||
return new RestObject() { { "activeusers", string.Join("\t", TShock.Players.Where(p => null != p && null != p.UserAccountName && p.Active).Select(p => p.UserAccountName)) } };
|
return new RestObject() { { "activeusers", string.Join("\t", TShock.Players.Where(p => null != p && null != p.User && p.Active).Select(p => p.User.Name)) } };
|
||||||
}
|
}
|
||||||
|
|
||||||
[Description("Lists all user accounts in the TShock database.")]
|
[Description("Lists all user accounts in the TShock database.")]
|
||||||
|
|
@ -807,7 +807,7 @@ namespace TShockAPI
|
||||||
return new RestObject()
|
return new RestObject()
|
||||||
{
|
{
|
||||||
{"nickname", player.Name},
|
{"nickname", player.Name},
|
||||||
{"username", null == player.UserAccountName ? "" : player.UserAccountName},
|
{"username", null == player.User ? "" : player.User.Name},
|
||||||
{"ip", player.IP},
|
{"ip", player.IP},
|
||||||
{"group", player.Group.Name},
|
{"group", player.Group.Name},
|
||||||
{"position", player.TileX + "," + player.TileY},
|
{"position", player.TileX + "," + player.TileY},
|
||||||
|
|
@ -834,7 +834,7 @@ namespace TShockAPI
|
||||||
return new RestObject()
|
return new RestObject()
|
||||||
{
|
{
|
||||||
{"nickname", player.Name},
|
{"nickname", player.Name},
|
||||||
{"username", null == player.UserAccountName ? "" : player.UserAccountName},
|
{"username", null == player.User ? "" : player.User.Name},
|
||||||
{"ip", player.IP},
|
{"ip", player.IP},
|
||||||
{"group", player.Group.Name},
|
{"group", player.Group.Name},
|
||||||
{"position", player.TileX + "," + player.TileY},
|
{"position", player.TileX + "," + player.TileY},
|
||||||
|
|
@ -1214,7 +1214,7 @@ namespace TShockAPI
|
||||||
var player = new Dictionary<string, object>
|
var player = new Dictionary<string, object>
|
||||||
{
|
{
|
||||||
{"nickname", tsPlayer.Name},
|
{"nickname", tsPlayer.Name},
|
||||||
{"username", tsPlayer.UserAccountName ?? ""},
|
{"username", tsPlayer.User == null ? "" : tsPlayer.User.Name},
|
||||||
{"group", tsPlayer.Group.Name},
|
{"group", tsPlayer.Group.Name},
|
||||||
{"active", tsPlayer.Active},
|
{"active", tsPlayer.Active},
|
||||||
{"state", tsPlayer.State},
|
{"state", tsPlayer.State},
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,17 @@ namespace TShockAPI
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The player's login name.
|
/// The player's login name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string UserAccountName { get; set; }
|
[Obsolete("Use User.Name instead")]
|
||||||
|
public string UserAccountName
|
||||||
|
{
|
||||||
|
get { return User == null ? null : User.Name; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// User object associated with the player.
|
||||||
|
/// Set when the player logs in.
|
||||||
|
/// </summary>
|
||||||
|
public User User { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether the player performed a valid login attempt (i.e. entered valid user name and password) but is still blocked
|
/// Whether the player performed a valid login attempt (i.e. entered valid user name and password) but is still blocked
|
||||||
|
|
@ -199,7 +209,11 @@ namespace TShockAPI
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The player's user id( from the db ).
|
/// The player's user id( from the db ).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int UserID = -1;
|
[Obsolete("Use User.ID instead")]
|
||||||
|
public int UserID
|
||||||
|
{
|
||||||
|
get { return User == null ? -1 : User.ID; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether the player has been nagged about logging in.
|
/// Whether the player has been nagged about logging in.
|
||||||
|
|
@ -903,12 +917,13 @@ namespace TShockAPI
|
||||||
|
|
||||||
public class TSServerPlayer : TSPlayer
|
public class TSServerPlayer : TSPlayer
|
||||||
{
|
{
|
||||||
public static string AccountName = "ServerConsole";
|
public static string AccountName = "ServerConsole";
|
||||||
|
|
||||||
public TSServerPlayer()
|
public TSServerPlayer()
|
||||||
: base("Server")
|
: base("Server")
|
||||||
{
|
{
|
||||||
Group = new SuperAdminGroup();
|
Group = new SuperAdminGroup();
|
||||||
UserAccountName = AccountName;
|
User = new User{Name = AccountName};
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SendErrorMessage(string msg)
|
public override void SendErrorMessage(string msg)
|
||||||
|
|
|
||||||
|
|
@ -389,13 +389,12 @@ namespace TShockAPI
|
||||||
|
|
||||||
/// <summary>OnPlayerLogin - Fires the PlayerLogin hook to listening plugins.</summary>
|
/// <summary>OnPlayerLogin - Fires the PlayerLogin hook to listening plugins.</summary>
|
||||||
/// <param name="args">args - The PlayerPostLoginEventArgs object.</param>
|
/// <param name="args">args - The PlayerPostLoginEventArgs object.</param>
|
||||||
private void OnPlayerLogin(Hooks.PlayerPostLoginEventArgs args)
|
private void OnPlayerLogin(PlayerPostLoginEventArgs args)
|
||||||
{
|
{
|
||||||
User u = Users.GetUserByName(args.Player.UserAccountName);
|
|
||||||
List<String> KnownIps = new List<string>();
|
List<String> KnownIps = new List<string>();
|
||||||
if (!string.IsNullOrWhiteSpace(u.KnownIps))
|
if (!string.IsNullOrWhiteSpace(args.Player.User.KnownIps))
|
||||||
{
|
{
|
||||||
KnownIps = JsonConvert.DeserializeObject<List<String>>(u.KnownIps);
|
KnownIps = JsonConvert.DeserializeObject<List<String>>(args.Player.User.KnownIps);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool found = KnownIps.Any(s => s.Equals(args.Player.IP));
|
bool found = KnownIps.Any(s => s.Equals(args.Player.IP));
|
||||||
|
|
@ -409,8 +408,8 @@ namespace TShockAPI
|
||||||
KnownIps.Add(args.Player.IP);
|
KnownIps.Add(args.Player.IP);
|
||||||
}
|
}
|
||||||
|
|
||||||
u.KnownIps = JsonConvert.SerializeObject(KnownIps, Formatting.Indented);
|
args.Player.User.KnownIps = JsonConvert.SerializeObject(KnownIps, Formatting.Indented);
|
||||||
Users.UpdateLogin(u);
|
Users.UpdateLogin(args.Player.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>OnAccountDelete - Internal hook fired on account delete.</summary>
|
/// <summary>OnAccountDelete - Internal hook fired on account delete.</summary>
|
||||||
|
|
@ -445,9 +444,9 @@ namespace TShockAPI
|
||||||
/// <param name="args">args - The NameCollisionEventArgs object.</param>
|
/// <param name="args">args - The NameCollisionEventArgs object.</param>
|
||||||
private void NetHooks_NameCollision(NameCollisionEventArgs args)
|
private void NetHooks_NameCollision(NameCollisionEventArgs args)
|
||||||
{
|
{
|
||||||
string ip = TShock.Utils.GetRealIP(Netplay.serverSock[args.Who].tcpClient.Client.RemoteEndPoint.ToString());
|
string ip = Utils.GetRealIP(Netplay.serverSock[args.Who].tcpClient.Client.RemoteEndPoint.ToString());
|
||||||
|
|
||||||
var player = TShock.Players.First(p => p != null && p.Name == args.Name && p.Index != args.Who);
|
var player = Players.First(p => p != null && p.Name == args.Name && p.Index != args.Who);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
if (player.IP == ip)
|
if (player.IP == ip)
|
||||||
|
|
@ -456,15 +455,13 @@ namespace TShockAPI
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (player.IsLoggedIn)
|
if (player.IsLoggedIn)
|
||||||
{
|
{
|
||||||
User user = TShock.Users.GetUserByName(player.UserAccountName);
|
var ips = JsonConvert.DeserializeObject<List<string>>(player.User.KnownIps);
|
||||||
var ips = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
|
|
||||||
if (ips.Contains(ip))
|
if (ips.Contains(ip))
|
||||||
{
|
{
|
||||||
Netplay.serverSock[player.Index].kill = true;
|
Netplay.serverSock[player.Index].kill = true;
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -472,20 +469,20 @@ namespace TShockAPI
|
||||||
|
|
||||||
/// <summary>OnXmasCheck - Internal hook fired when the XMasCheck happens.</summary>
|
/// <summary>OnXmasCheck - Internal hook fired when the XMasCheck happens.</summary>
|
||||||
/// <param name="args">args - The ChristmasCheckEventArgs object.</param>
|
/// <param name="args">args - The ChristmasCheckEventArgs object.</param>
|
||||||
private void OnXmasCheck(ChristmasCheckEventArgs args)
|
private void OnXmasCheck(ChristmasCheckEventArgs args)
|
||||||
{
|
{
|
||||||
if (args.Handled)
|
if (args.Handled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(Config.ForceXmas)
|
if (Config.ForceXmas)
|
||||||
{
|
{
|
||||||
args.Xmas = true;
|
args.Xmas = true;
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>OnHalloweenCheck - Internal hook fired when the HalloweenCheck happens.</summary>
|
/// <summary>OnHalloweenCheck - Internal hook fired when the HalloweenCheck happens.</summary>
|
||||||
/// <param name="args">args - The HalloweenCheckEventArgs object.</param>
|
/// <param name="args">args - The HalloweenCheckEventArgs object.</param>
|
||||||
private void OnHalloweenCheck(HalloweenCheckEventArgs args)
|
private void OnHalloweenCheck(HalloweenCheckEventArgs args)
|
||||||
{
|
{
|
||||||
if (args.Handled)
|
if (args.Handled)
|
||||||
|
|
@ -497,6 +494,7 @@ namespace TShockAPI
|
||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handles exceptions that we didn't catch earlier in the code, or in Terraria.
|
/// Handles exceptions that we didn't catch earlier in the code, or in Terraria.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue