Ban/kick on death if HardcoreOnly == true

This commit is contained in:
Deathmax 2011-06-24 20:03:19 +08:00
parent d620493d7b
commit 1e66e1a256
5 changed files with 38 additions and 0 deletions

View file

@ -61,5 +61,7 @@ namespace TShockAPI
public bool RememberLeavePos = false; public bool RememberLeavePos = false;
public bool HardcoreOnly = false; public bool HardcoreOnly = false;
public bool KickOnHardcoreOnlyDeath = false;
public bool BanOnHardcoreOnlyDeath = false;
} }
} }

View file

@ -82,6 +82,8 @@ namespace TShockAPI
public static int originalSpawnY; public static int originalSpawnY;
public static bool hardcoreOnly = false; public static bool hardcoreOnly = false;
public static bool KickOnHardcoreDeath = false;
public static bool BanOnHardcoreDeath = false;
public static void ReadJsonConfiguration() public static void ReadJsonConfiguration()
{ {
@ -128,6 +130,8 @@ namespace TShockAPI
Spawn_WorldID = cfg.Spawn_WorldID; Spawn_WorldID = cfg.Spawn_WorldID;
RememberLeavePos = cfg.RememberLeavePos; RememberLeavePos = cfg.RememberLeavePos;
hardcoreOnly = cfg.HardcoreOnly; hardcoreOnly = cfg.HardcoreOnly;
KickOnHardcoreDeath = cfg.KickOnHardcoreOnlyDeath;
BanOnHardcoreDeath = cfg.BanOnHardcoreOnlyDeath;
} }
public static void WriteJsonConfiguration() public static void WriteJsonConfiguration()
@ -167,6 +171,8 @@ namespace TShockAPI
cfg.RememberLeavePos = RememberLeavePos; cfg.RememberLeavePos = RememberLeavePos;
cfg.Spawn_WorldID = Spawn_WorldID; cfg.Spawn_WorldID = Spawn_WorldID;
cfg.HardcoreOnly = hardcoreOnly; cfg.HardcoreOnly = hardcoreOnly;
cfg.BanOnHardcoreOnlyDeath = BanOnHardcoreDeath;
cfg.KickOnHardcoreOnlyDeath = KickOnHardcoreDeath;
string json = JsonConvert.SerializeObject(cfg, Formatting.Indented); string json = JsonConvert.SerializeObject(cfg, Formatting.Indented);
TextWriter tr = new StreamWriter(FileTools.ConfigPath); TextWriter tr = new StreamWriter(FileTools.ConfigPath);
tr.Write(json); tr.Write(json);

View file

@ -108,6 +108,7 @@ namespace TShockAPI
{PacketTypes.TileKill, HandleTileKill}, {PacketTypes.TileKill, HandleTileKill},
{PacketTypes.PlayerKillMe, HandlePlayerKillMe}, {PacketTypes.PlayerKillMe, HandlePlayerKillMe},
{PacketTypes.LiquidSet, HandleLiquidSet}, {PacketTypes.LiquidSet, HandleLiquidSet},
{PacketTypes.PlayerSpawn, HandleSpawn},
}; };
} }
@ -448,5 +449,31 @@ namespace TShockAPI
} }
return false; return false;
} }
private static bool HandleSpawn(GetDataHandlerArgs args)
{
byte player = args.Data.ReadInt8();
int spawnx = args.Data.ReadInt32();
int spawny = args.Data.ReadInt32();
if (args.Player.InitSpawn)
{
if (ConfigurationManager.hardcoreOnly && (ConfigurationManager.KickOnHardcoreDeath || ConfigurationManager.BanOnHardcoreDeath))
if (args.TPlayer.selectedItem != 50)
{
if (ConfigurationManager.BanOnHardcoreDeath)
{
if (!Tools.Ban(args.Player, "Death results in a ban"))
Tools.ForceKick(args.Player, "Death results in a ban, but can't ban you");
}
else
Tools.ForceKick(args.Player, "Death results in a kick");
return true;
}
}
else
args.Player.InitSpawn = true;
return false;
}
} }
} }

View file

@ -37,6 +37,7 @@ namespace TShockAPI
public DateTime LastPvpChange { get; protected set; } public DateTime LastPvpChange { get; protected set; }
public Rectangle TempArea = new Rectangle(); public Rectangle TempArea = new Rectangle();
public DateTime LastExplosive { get; set; } public DateTime LastExplosive { get; set; }
public bool InitSpawn = false;
public bool RealPlayer public bool RealPlayer
{ {
@ -135,6 +136,7 @@ namespace TShockAPI
public bool Teleport(int tileX, int tileY) public bool Teleport(int tileX, int tileY)
{ {
this.InitSpawn = false;
int spawnTileX = Main.spawnTileX; int spawnTileX = Main.spawnTileX;
int spawnTileY = Main.spawnTileY; int spawnTileY = Main.spawnTileY;
Main.spawnTileX = tileX; Main.spawnTileX = tileX;

View file

@ -265,6 +265,7 @@ namespace TShockAPI
} }
Players[ply] = player; Players[ply] = player;
Players[ply].InitSpawn = false;
Netplay.spamCheck = ConfigurationManager.SpamChecks; Netplay.spamCheck = ConfigurationManager.SpamChecks;
} }