diff --git a/HorseIsleServer/HorseIsleServer/Resources/server.properties b/HorseIsleServer/HorseIsleServer/Resources/server.properties index d23141b..63697b2 100644 --- a/HorseIsleServer/HorseIsleServer/Resources/server.properties +++ b/HorseIsleServer/HorseIsleServer/Resources/server.properties @@ -40,9 +40,15 @@ enable_corrections=true # and FULL CAPS messages. non_violation=true -# Wether or not to consider all users "Subscribers" +# Should the server consider all users "Subscribers" +# (warning might make ranches be in use forever.) all_users_subscribed=false +# Limits ad and global chat +# to just a few messages every minute +# by each user +enable_spam_filter=true + # Equation is: BANK_BALANCE * (1/INTREST_RATE); # on All servers except Black its 3333, on black its 1000. # but of course you can make it whatever you want diff --git a/HorseIsleServer/HorseIsleServer/Server/ConfigReader.cs b/HorseIsleServer/HorseIsleServer/Server/ConfigReader.cs index 423f087..9a7e71a 100644 --- a/HorseIsleServer/HorseIsleServer/Server/ConfigReader.cs +++ b/HorseIsleServer/HorseIsleServer/Server/ConfigReader.cs @@ -21,6 +21,7 @@ namespace HISP.Server public static string CrossDomainPolicyFile; public static int LogLevel = 0; + public static bool EnableSpamFilter = true; public static bool AllUsersSubbed = false; public static bool BadWords = true; public static bool DoCorrections = true; @@ -103,6 +104,9 @@ namespace HISP.Server case "non_violation": DoNonViolations = data == "true"; break; + case "enable_spam_filter": + EnableSpamFilter = data == "true"; + break; case "enable_word_filter": BadWords = data == "true"; break; diff --git a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs index 5df89ec..3ea4ce2 100644 --- a/HorseIsleServer/HorseIsleServer/Server/GameClient.cs +++ b/HorseIsleServer/HorseIsleServer/Server/GameClient.cs @@ -189,12 +189,15 @@ namespace HISP.Server totalMinutesElapsed++; if (LoggedIn) { + GameServer.UpdatePlayer(this); LoggedinUser.CanUseAdsChat = true; LoggedinUser.FreeMinutes -= 1; - if(totalMinutesElapsed % 2 == 0) + GameServer.DoItemPurchases(this); + + if (totalMinutesElapsed % 2 == 0) { LoggedinUser.TotalGlobalChatMessages++; } diff --git a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs index 9299b2b..6f70757 100644 --- a/HorseIsleServer/HorseIsleServer/Server/GameServer.cs +++ b/HorseIsleServer/HorseIsleServer/Server/GameServer.cs @@ -3727,17 +3727,9 @@ namespace HISP.Server if (RiddleEvent != null) if (RiddleEvent.Active) RiddleEvent.ShowStartMessage(sender); - + // Give Queued Itmes - Item.ItemPurchaseQueueItem[] queueItems = Database.GetItemPurchaseQueue(sender.LoggedinUser.Id); - foreach (Item.ItemPurchaseQueueItem queueItem in queueItems) - { - for(int i = 0; i < queueItem.ItemCount; i++) - { - sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(queueItem.ItemId)); - } - } - Database.ClearItemPurchaseQueue(sender.LoggedinUser.Id); + DoItemPurchases(sender); // Send Queued Messages string[] queuedMessages = Database.GetMessageQueue(sender.LoggedinUser.Id); @@ -5902,29 +5894,33 @@ namespace HISP.Server } // Spam filter - if(channel == Chat.ChatChannel.Ads) + if(ConfigReader.EnableSpamFilter) { - if(!sender.LoggedinUser.CanUseAdsChat && !sender.LoggedinUser.Administrator) + if (channel == Chat.ChatChannel.Ads) { - byte[] cantSendInAds = PacketBuilder.CreateChat(Messages.AdsOnlyOncePerMinute, PacketBuilder.CHAT_BOTTOM_RIGHT); - sender.SendPacket(cantSendInAds); + if (!sender.LoggedinUser.CanUseAdsChat && !sender.LoggedinUser.Administrator) + { + byte[] cantSendInAds = PacketBuilder.CreateChat(Messages.AdsOnlyOncePerMinute, PacketBuilder.CHAT_BOTTOM_RIGHT); + sender.SendPacket(cantSendInAds); - return; + return; + } + sender.LoggedinUser.CanUseAdsChat = false; } - sender.LoggedinUser.CanUseAdsChat = false; - } - else if(channel == Chat.ChatChannel.All) - { - if(sender.LoggedinUser.TotalGlobalChatMessages <= 0 && !sender.LoggedinUser.Administrator) + else if (channel == Chat.ChatChannel.All) { - byte[] globalLimited = PacketBuilder.CreateChat(Messages.GlobalChatLimited, PacketBuilder.CHAT_BOTTOM_RIGHT); - sender.SendPacket(globalLimited); + if (sender.LoggedinUser.TotalGlobalChatMessages <= 0 && !sender.LoggedinUser.Administrator) + { + byte[] globalLimited = PacketBuilder.CreateChat(Messages.GlobalChatLimited, PacketBuilder.CHAT_BOTTOM_RIGHT); + sender.SendPacket(globalLimited); - return; + return; + } + sender.LoggedinUser.TotalGlobalChatMessages--; } - sender.LoggedinUser.TotalGlobalChatMessages--; } + // Muted user checks if(channel == Chat.ChatChannel.Dm) { @@ -8090,6 +8086,22 @@ namespace HISP.Server if (sender.LoggedinUser.HorseWindowOpen) UpdateArea(sender); } + public static void DoItemPurchases(GameClient sender) + { + if (!sender.LoggedIn) + return; + + Item.ItemPurchaseQueueItem[] queueItems = Database.GetItemPurchaseQueue(sender.LoggedinUser.Id); + foreach (Item.ItemPurchaseQueueItem queueItem in queueItems) + { + for (int i = 0; i < queueItem.ItemCount; i++) + { + sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(queueItem.ItemId)); + } + } + Database.ClearItemPurchaseQueue(sender.LoggedinUser.Id); + + } public static void StopRidingHorse(GameClient sender) { sender.LoggedinUser.CurrentlyRidingHorse = null;