Prepare new handlers

This commit is contained in:
Zidonuke 2011-12-28 17:43:01 -05:00
parent f79226f28a
commit b353f62336
2 changed files with 46 additions and 28 deletions

View file

@ -90,7 +90,8 @@ namespace TShockAPI
{PacketTypes.NpcStrike, HandleNpcStrike}, {PacketTypes.NpcStrike, HandleNpcStrike},
{PacketTypes.NpcSpecial, HandleSpecial}, {PacketTypes.NpcSpecial, HandleSpecial},
{PacketTypes.PlayerAnimation, HandlePlayerAnimation}, {PacketTypes.PlayerAnimation, HandlePlayerAnimation},
{PacketTypes.PlayerBuff, HandlePlayerBuffUpdate} {PacketTypes.PlayerBuff, HandlePlayerBuffUpdate},
{PacketTypes.PasswordSend, HandlePassword}
}; };
} }
@ -257,6 +258,11 @@ namespace TShockAPI
return false; return false;
} }
private static bool HandlePassword(GetDataHandlerArgs args)
{
return false;
}
private static bool HandleSendTileSquare(GetDataHandlerArgs args) private static bool HandleSendTileSquare(GetDataHandlerArgs args)
{ {

View file

@ -194,6 +194,7 @@ namespace TShockAPI
GameHooks.PostInitialize += OnPostInit; GameHooks.PostInitialize += OnPostInit;
GameHooks.Update += OnUpdate; GameHooks.Update += OnUpdate;
ServerHooks.Connect += OnConnect;
ServerHooks.Join += OnJoin; ServerHooks.Join += OnJoin;
ServerHooks.Leave += OnLeave; ServerHooks.Leave += OnLeave;
ServerHooks.Chat += OnChat; ServerHooks.Chat += OnChat;
@ -539,7 +540,7 @@ namespace TShockAPI
Console.Title = string.Format("TerrariaShock Version {0} ({1}) ({2}/{3})", Version, VersionCodename, count, Config.MaxSlots); Console.Title = string.Format("TerrariaShock Version {0} ({1}) ({2}/{3})", Version, VersionCodename, count, Config.MaxSlots);
} }
private void OnJoin(int ply, HandledEventArgs handler) private void OnConnect(int ply, HandledEventArgs handler)
{ {
var player = new TSPlayer(ply); var player = new TSPlayer(ply);
if (Config.EnableDNSHostResolution) if (Config.EnableDNSHostResolution)
@ -551,7 +552,7 @@ namespace TShockAPI
player.Group = Users.GetGroupForIP(player.IP); player.Group = Users.GetGroupForIP(player.IP);
} }
if (TShock.Utils.ActivePlayers() + 1 > Config.MaxSlots && !player.Group.HasPermission(Permissions.reservedslot)) if (TShock.Utils.ActivePlayers() + 20 > Config.MaxSlots)
{ {
TShock.Utils.ForceKick(player, Config.ServerFullReason); TShock.Utils.ForceKick(player, Config.ServerFullReason);
handler.Handled = true; handler.Handled = true;
@ -559,12 +560,9 @@ namespace TShockAPI
} }
var ipban = Bans.GetBanByIp(player.IP); var ipban = Bans.GetBanByIp(player.IP);
var nameban = Bans.GetBanByName(player.Name);
Ban ban = null; Ban ban = null;
if (ipban != null && Config.EnableIPBans) if (ipban != null && Config.EnableIPBans)
ban = ipban; ban = ipban;
else if (nameban != null && Config.EnableBanOnUsernames)
ban = nameban;
if (ban != null) if (ban != null)
{ {
@ -583,6 +581,40 @@ namespace TShockAPI
Players[ply] = player; Players[ply] = player;
} }
private void OnJoin(int ply, HandledEventArgs handler)
{
var player = Players[ply];
if (player == null)
{
handler.Handled = true;
return;
}
if (HackedHealth(player))
{
TShock.Utils.ForceKick(player, "You have Hacked Health/Mana, Please use a different character.");
}
if (TShock.Utils.ActivePlayers() + 1 > Config.MaxSlots && !player.Group.HasPermission(Permissions.reservedslot))
{
TShock.Utils.ForceKick(player, Config.ServerFullReason);
handler.Handled = true;
return;
}
var nameban = Bans.GetBanByName(player.Name);
Ban ban = null;
if (nameban != null && Config.EnableBanOnUsernames)
ban = nameban;
if (ban != null)
{
TShock.Utils.ForceKick(player, string.Format("You are banned: {0}", ban.Reason));
handler.Handled = true;
return;
}
}
private void OnLeave(int ply) private void OnLeave(int ply)
{ {
var tsplr = Players[ply]; var tsplr = Players[ply];
@ -750,28 +782,6 @@ namespace TShockAPI
} }
TShock.Utils.ShowFileToUser(player, "motd.txt"); TShock.Utils.ShowFileToUser(player, "motd.txt");
if (HackedHealth(player))
{
TShock.Utils.ForceKick(player, "You have Hacked Health/Mana, Please use a different character.");
}
HackedInventory(player);
NetMessage.syncPlayers();
if (Config.RequireLogin)
{
player.SendMessage("Please /register or /login to play!", Color.Red);
}
else if (Config.ServerSideInventory)
{
player.SendMessage("Server Side Inventory is enabled! Please /register or /login to play!", Color.Red);
}
if (Config.ServerSideInventory)
{
player.IgnoreActionsForInventory = true;
}
if (Config.PvPMode == "always" && !player.TPlayer.hostile) if (Config.PvPMode == "always" && !player.TPlayer.hostile)
{ {
@ -783,11 +793,13 @@ namespace TShockAPI
{ {
StartInvasion(); StartInvasion();
} }
if (Config.RememberLeavePos) if (Config.RememberLeavePos)
{ {
var pos = RememberedPos.GetLeavePos(player.Name, player.IP); var pos = RememberedPos.GetLeavePos(player.Name, player.IP);
player.Teleport((int) pos.X, (int) pos.Y); player.Teleport((int) pos.X, (int) pos.Y);
} }
e.Handled = true; e.Handled = true;
} }