mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-21 20:25:51 +12:00
Add various chat related checks
This commit is contained in:
parent
2e4ba0b82d
commit
5fc313657d
8 changed files with 114 additions and 3 deletions
|
@ -47,6 +47,7 @@ namespace HISP.Server
|
|||
private int warnInterval = GameServer.IdleWarning * 60 * 1000;
|
||||
private int kickInterval = GameServer.IdleTimeout * 60 * 1000;
|
||||
|
||||
|
||||
private bool dcLock = false;
|
||||
|
||||
private void minuteTimerTick(object state)
|
||||
|
@ -55,7 +56,14 @@ namespace HISP.Server
|
|||
totalMinutesElapsed++;
|
||||
if (LoggedIn)
|
||||
{
|
||||
LoggedinUser.CanUseAdsChat = true;
|
||||
LoggedinUser.FreeMinutes -= 1;
|
||||
|
||||
if(totalMinutesElapsed % 2 == 0)
|
||||
{
|
||||
LoggedinUser.TotalGlobalChatMessages++;
|
||||
}
|
||||
|
||||
if (LoggedinUser.FreeMinutes <= 0)
|
||||
{
|
||||
LoggedinUser.FreeMinutes = 0;
|
||||
|
|
|
@ -882,6 +882,11 @@ namespace HISP.Server
|
|||
|
||||
Messages.CantSendPrivateMessagePlayerMutedFormat = gameData.messages.meta.mute_command.cant_send_pm_player_muted;
|
||||
|
||||
// Chat Errors
|
||||
Messages.CantFindPlayerToPrivateMessage = gameData.messages.chat_errors.cant_find_player;
|
||||
Messages.AdsOnlyOncePerMinute = gameData.messages.chat_errors.ads_once_per_minute;
|
||||
Messages.GlobalChatLimited = gameData.messages.chat_errors.global_chats_limited;
|
||||
|
||||
// Warp Command
|
||||
|
||||
Messages.SuccessfullyWarpedToPlayer = gameData.messages.commands.warp.player;
|
||||
|
|
|
@ -204,7 +204,7 @@ namespace HISP.Server
|
|||
|
||||
Database.IncPlayerTirednessForOfflineUsers();
|
||||
|
||||
// Offline player handling w sql magic...
|
||||
// Offline player handling w sql black magic...
|
||||
|
||||
Database.DecrementHorseLeaseTimeForOfflinePlayers();
|
||||
Database.TpOfflinePlayersBackToUniterForOfflinePlayers();
|
||||
|
@ -5391,7 +5391,51 @@ namespace HISP.Server
|
|||
|
||||
if (message == "")
|
||||
return;
|
||||
|
||||
|
||||
if(message.StartsWith("/"))
|
||||
{
|
||||
string channelString = message.Split(' ')[0].ToLower();
|
||||
string newMessage = string.Join(' ', message.Split(' ').Skip(1));
|
||||
message = newMessage;
|
||||
switch(channelString)
|
||||
{
|
||||
case "/$":
|
||||
case "/ads":
|
||||
channel = Chat.ChatChannel.Ads;
|
||||
break;
|
||||
case "/all":
|
||||
channel = Chat.ChatChannel.All;
|
||||
break;
|
||||
case "/here":
|
||||
channel = Chat.ChatChannel.Here;
|
||||
break;
|
||||
case "/near":
|
||||
channel = Chat.ChatChannel.Near;
|
||||
break;
|
||||
case "/buddy":
|
||||
channel = Chat.ChatChannel.Buddies;
|
||||
break;
|
||||
case "/island":
|
||||
channel = Chat.ChatChannel.Isle;
|
||||
break;
|
||||
case "/admin":
|
||||
if (sender.LoggedinUser.Administrator)
|
||||
channel = Chat.ChatChannel.Admin;
|
||||
else
|
||||
return;
|
||||
break;
|
||||
case "/mod":
|
||||
if (sender.LoggedinUser.Moderator)
|
||||
channel = Chat.ChatChannel.Mod;
|
||||
else
|
||||
return;
|
||||
break;
|
||||
default:
|
||||
channel = Chat.ChatChannel.Dm;
|
||||
nameTo = channelString.Substring(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (Chat.ProcessCommand(sender.LoggedinUser, message))
|
||||
{
|
||||
|
@ -5446,6 +5490,41 @@ namespace HISP.Server
|
|||
|
||||
GameClient[] recipiants = Chat.GetRecipiants(sender.LoggedinUser, channel, nameTo);
|
||||
|
||||
// Spam Protection
|
||||
|
||||
if(channel == Chat.ChatChannel.Dm)
|
||||
{
|
||||
if(recipiants.Length <= 0)
|
||||
{
|
||||
byte[] cantFindPlayer = PacketBuilder.CreateChat(Messages.CantFindPlayerToPrivateMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantFindPlayer);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if(channel == Chat.ChatChannel.Ads)
|
||||
{
|
||||
if(!sender.LoggedinUser.CanUseAdsChat)
|
||||
{
|
||||
byte[] cantSendInAds = PacketBuilder.CreateChat(Messages.AdsOnlyOncePerMinute, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(cantSendInAds);
|
||||
|
||||
return;
|
||||
}
|
||||
sender.LoggedinUser.CanUseAdsChat = false;
|
||||
}
|
||||
else if(channel == Chat.ChatChannel.All)
|
||||
{
|
||||
if(sender.LoggedinUser.TotalGlobalChatMessages <= 0)
|
||||
{
|
||||
byte[] globalLimited = PacketBuilder.CreateChat(Messages.GlobalChatLimited, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||
sender.SendPacket(globalLimited);
|
||||
|
||||
return;
|
||||
}
|
||||
sender.LoggedinUser.TotalGlobalChatMessages--;
|
||||
}
|
||||
|
||||
// Muted user checks
|
||||
if(channel == Chat.ChatChannel.Dm)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue