/// <summary> /// Handles the publicist. /// </summary> /// <param name="word">The word.</param> /// <param name="message">The message.</param> /// <param name="method">The method.</param> /// <param name="settings">The settings.</param> internal void HandlePublicist(string word, string message, string method, BlackWordTypeSettings settings) { ServerMessage serverMessage; if (GetHabbo().Rank < 5 && settings.MaxAdvices == PublicistCount++ && settings.AutoBan) { serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString("staffcloud"); serverMessage.AppendInteger(2); serverMessage.AppendString("title"); serverMessage.AppendString("Staff Internal Alert"); serverMessage.AppendString("message"); serverMessage.AppendString("O usuário " + GetHabbo().UserName + " Foi banido por enviar repetidamente palavras repetidas. A última palavra foi: " + word + ", na frase: " + message); Yupi.GetGame().GetClientManager().StaffAlert(serverMessage); Yupi.GetGame().GetBanManager().BanUser(this, GetHabbo().UserName, 3600, "Você está passando muitos spams de outros hotéis. Por esta razão, sancioná-lo por 1 hora, de modo que você aprender a controlar-se.", false, false); return; } //if (PublicistCount > 4) // return; // Queremos que os Staffs Saibam desses dados. string alert = settings.Alert.Replace("{0}", GetHabbo().UserName); alert = alert.Replace("{1}", GetHabbo().Id.ToString()); alert = alert.Replace("{2}", word); alert = alert.Replace("{3}", message); alert = alert.Replace("{4}", method); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UsersClassificationMessageComposer")); serverMessage.AppendInteger(1); serverMessage.AppendInteger(GetHabbo().Id); serverMessage.AppendString(GetHabbo().UserName); serverMessage.AppendString("BadWord: " + word); Yupi.GetGame().GetClientManager().StaffAlert(serverMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString(settings.ImageAlert); serverMessage.AppendInteger(4); serverMessage.AppendString("title"); serverMessage.AppendString("${generic.notice}"); serverMessage.AppendString("message"); serverMessage.AppendString(alert); serverMessage.AppendString("link"); serverMessage.AppendString("event:"); serverMessage.AppendString("linkTitle"); serverMessage.AppendString("ok"); Yupi.GetGame().GetClientManager().StaffAlert(serverMessage); }
/// <summary> /// Checks the specified string. /// </summary> /// <param name="str">The string.</param> /// <param name="type">The type.</param> /// <param name="word">The word.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool Check(string str, BlackWordType type, out BlackWord word) { word = Empty; if (!Replaces.ContainsKey(type)) { return(false); } BlackWordTypeSettings data = Replaces[type]; str = UserChatInputFilter.Replace(data.Filter, str); BlackWord wordFirst = Words.FirstOrDefault(wordStruct => wordStruct.Type == type && str.Contains(wordStruct.Word)); word = wordFirst; return(!string.IsNullOrEmpty(wordFirst.Word)); }
/// <summary> /// Chats the specified session. /// </summary> /// <param name="session">The session.</param> /// <param name="msg">The MSG.</param> /// <param name="shout">if set to <c>true</c> [shout].</param> /// <param name="count">The count.</param> /// <param name="textColor">Color of the text.</param> internal void Chat(GameClient session, string msg, bool shout, int count, int textColor = 0) { if (IsPet || IsBot) { if (!IsPet) { textColor = 2; } ServerMessage botChatmsg = new ServerMessage(); botChatmsg.Init(shout ? LibraryParser.OutgoingRequest("ShoutMessageComposer") : LibraryParser.OutgoingRequest("ChatMessageComposer")); botChatmsg.AppendInteger(VirtualId); botChatmsg.AppendString(msg); botChatmsg.AppendInteger(0); botChatmsg.AppendInteger(textColor); botChatmsg.AppendInteger(0); botChatmsg.AppendInteger(count); GetRoom().SendMessage(botChatmsg); return; } if (msg.Length > 100) // si el mensaje es mayor que la máxima longitud (scripter) { return; } if (!ServerSecurityChatFilter.CanTalk(session, msg)) { return; } if (session == null || session.GetHabbo() == null) { return; } BlackWord word; if (!(msg.StartsWith(":deleteblackword ") && session.GetHabbo().Rank > 4) && BlackWordsManager.Check(msg, BlackWordType.Hotel, out word)) { BlackWordTypeSettings settings = word.TypeSettings; //session.HandlePublicist(word.Word, msg, "CHAT", settings); if (settings.ShowMessage) { session.SendWhisper("A mensagem contém a palavra: " + word.Word + " que não é permitida, você poderá ser banido!"); return; } } if (!IsBot && IsFlooded && FloodExpiryTime <= Yupi.GetUnixTimeStamp()) { IsFlooded = false; } else if (!IsBot && IsFlooded) { return; // ciao flooders! } if (session.GetHabbo().Rank < 4 && GetRoom().CheckMute(session)) { return; } UnIdle(); if (!IsPet && !IsBot) { if (msg.StartsWith(":") && CommandsManager.TryExecute(msg.Substring(1), session)) { return; } Habbo habbo = GetClient().GetHabbo(); if (GetRoom().GetWiredHandler().ExecuteWired(Interaction.TriggerOnUserSay, this, msg)) { return; } GetRoom().AddChatlog(session.GetHabbo().Id, msg, true); uint rank = 1; if (session.GetHabbo() != null) { rank = session.GetHabbo().Rank; } msg = GetRoom() .WordFilter .Aggregate(msg, (current1, current) => Regex.Replace(current1, current, "bobba", RegexOptions.IgnoreCase)); if (rank < 4) { TimeSpan span = DateTime.Now - habbo.SpamFloodTime; if ((span.TotalSeconds > habbo.SpamProtectionTime) && habbo.SpamProtectionBol) { _floodCount = 0; habbo.SpamProtectionBol = false; habbo.SpamProtectionAbuse = 0; } else if (span.TotalSeconds > 4.0) { _floodCount = 0; } ServerMessage message; if ((span.TotalSeconds < habbo.SpamProtectionTime) && habbo.SpamProtectionBol) { message = new ServerMessage(LibraryParser.OutgoingRequest("FloodFilterMessageComposer")); int i = habbo.SpamProtectionTime - span.Seconds; message.AppendInteger(i); IsFlooded = true; FloodExpiryTime = Yupi.GetUnixTimeStamp() + i; GetClient().SendMessage(message); return; } if ((span.TotalSeconds < 4.0) && (_floodCount > 5) && (rank < 5)) { message = new ServerMessage(LibraryParser.OutgoingRequest("FloodFilterMessageComposer")); habbo.SpamProtectionCount++; if (habbo.SpamProtectionCount % 2 == 0) { habbo.SpamProtectionTime = 10 * habbo.SpamProtectionCount; } else { habbo.SpamProtectionTime = 10 * (habbo.SpamProtectionCount - 1); } habbo.SpamProtectionBol = true; int j = habbo.SpamProtectionTime - span.Seconds; message.AppendInteger(j); IsFlooded = true; FloodExpiryTime = Yupi.GetUnixTimeStamp() + j; GetClient().SendMessage(message); return; } habbo.SpamFloodTime = DateTime.Now; _floodCount++; } if (habbo.Preferences.ChatColor != textColor) { habbo.Preferences.ChatColor = textColor; habbo.Preferences.Save(); } } else if (!IsPet) { textColor = 2; } ServerMessage chatMsg = new ServerMessage(); chatMsg.Init(shout ? LibraryParser.OutgoingRequest("ShoutMessageComposer") : LibraryParser.OutgoingRequest("ChatMessageComposer")); chatMsg.AppendInteger(VirtualId); chatMsg.AppendString(msg); chatMsg.AppendInteger(ChatEmotions.GetEmotionsForText(msg)); chatMsg.AppendInteger(textColor); chatMsg.AppendInteger(0); // links count (foreach string string bool) chatMsg.AppendInteger(count); GetRoom().BroadcastChatMessage(chatMsg, this, session.GetHabbo().Id); GetRoom().OnUserSay(this, msg, shout); GetRoom().GetRoomUserManager().TurnHeads(X, Y, HabboId); }
/// <summary> /// Sends the instant message. /// </summary> /// <param name="toId">To identifier.</param> /// <param name="message">The message.</param> internal void SendInstantMessage(uint toId, string message) { if (string.IsNullOrEmpty(message)) { return; } if (toId != 0) { BlackWord word; if (BlackWordsManager.Check(message, BlackWordType.Hotel, out word)) { BlackWordTypeSettings settings = word.TypeSettings; GameClient thisClient = GetClient(); if (thisClient != null) { thisClient.HandlePublicist(word.Word, message, "MESSENGER", settings); if (settings.ShowMessage) { thisClient.SendModeratorMessage("A mensagem contém a palavra: " + word.Word + " que não é permitida, você poderá ser banido!"); return; } } } } if (!FriendshipExists(toId)) { DeliverInstantMessageError(6, toId); return; } if (toId == 0) // Staff Chat { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ConsoleChatMessageComposer")); serverMessage.AppendInteger(0); //userid serverMessage.AppendString(GetClient().GetHabbo().UserName + " : " + message); serverMessage.AppendInteger(0); if (GetClient().GetHabbo().Rank >= Yupi.StaffAlertMinRank) { Yupi.GetGame().GetClientManager().StaffAlert(serverMessage, GetClient().GetHabbo().Id); } else if (GetClient().GetHabbo().Rank >= Convert.ToUInt32(Yupi.GetDbConfig().DbData["ambassador.minrank"])) { Yupi.GetGame().GetClientManager().AmbassadorAlert(serverMessage, GetClient().GetHabbo().Id); } } else { GameClient clientByUserId = Yupi.GetGame().GetClientManager().GetClientByUserId(toId); if (clientByUserId?.GetHabbo().GetMessenger() == null) { if (!Yupi.OfflineMessages.ContainsKey(toId)) { Yupi.OfflineMessages.Add(toId, new List <OfflineMessage>()); } Yupi.OfflineMessages[toId].Add(new OfflineMessage(GetClient().GetHabbo().Id, message, Yupi.GetUnixTimeStamp())); OfflineMessage.SaveMessage(Yupi.GetDatabaseManager().GetQueryReactor(), toId, GetClient().GetHabbo().Id, message); return; } if (GetClient().GetHabbo().Muted) { DeliverInstantMessageError(4, toId); return; } if (clientByUserId.GetHabbo().Muted) { DeliverInstantMessageError(3, toId); } if (message == string.Empty) { return; } clientByUserId.GetHabbo().GetMessenger().DeliverInstantMessage(message, _userId); } }
/// <summary> /// Handles the publicist. /// </summary> /// <param name="word">The word.</param> /// <param name="message">The message.</param> /// <param name="method">The method.</param> /// <param name="settings">The settings.</param> internal void HandlePublicist(string word, string message, string method, BlackWordTypeSettings settings) { ServerMessage serverMessage; if (GetHabbo().Rank < 5 && settings.MaxAdvices == PublicistCount++ && settings.AutoBan) { serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString("staffcloud"); serverMessage.AppendInteger(2); serverMessage.AppendString("title"); serverMessage.AppendString("Staff Internal Alert"); serverMessage.AppendString("message"); serverMessage.AppendString("O usuário " + GetHabbo().UserName + " Foi banido por enviar repetidamente palavras repetidas. A última palavra foi: " + word + ", na frase: " + message); Azure.GetGame().GetClientManager().StaffAlert(serverMessage); Azure.GetGame().GetBanManager().BanUser(this, GetHabbo().UserName, 3600, "Você está passando muitos spams de outros hotéis. Por esta razão, sancioná-lo por 1 hora, de modo que você aprender a controlar-se.", false, false); return; } //if (PublicistCount > 4) // return; // Queremos que os Staffs Saibam desses dados. var alert = settings.Alert.Replace("{0}", GetHabbo().UserName); alert = alert.Replace("{1}", GetHabbo().Id.ToString()); alert = alert.Replace("{2}", word); alert = alert.Replace("{3}", message); alert = alert.Replace("{4}", method); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UsersClassificationMessageComposer")); serverMessage.AppendInteger(1); serverMessage.AppendInteger(GetHabbo().Id); serverMessage.AppendString(GetHabbo().UserName); serverMessage.AppendString("BadWord: " + word); Azure.GetGame().GetClientManager().StaffAlert(serverMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString(settings.ImageAlert); serverMessage.AppendInteger(4); serverMessage.AppendString("title"); serverMessage.AppendString("${generic.notice}"); serverMessage.AppendString("message"); serverMessage.AppendString(alert); serverMessage.AppendString("link"); serverMessage.AppendString("event:"); serverMessage.AppendString("linkTitle"); serverMessage.AppendString("ok"); Azure.GetGame().GetClientManager().StaffAlert(serverMessage); }
/// <summary> /// Handles the publicist. /// </summary> /// <param name="word">The word.</param> /// <param name="message">The message.</param> /// <param name="method">The method.</param> /// <param name="settings">The settings.</param> internal void HandlePublicist(string word, string message, string method, BlackWordTypeSettings settings) { Habbo userPublicist = GetHabbo(); if (userPublicist != null) { ServerMessage serverMessage; if (userPublicist.Rank < 5 && settings.MaxAdvices == PublicistCount++ && settings.AutoBan) { serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString("staffcloud"); serverMessage.AppendInteger(2); serverMessage.AppendString("title"); serverMessage.AppendString("Staff Internal Alert"); serverMessage.AppendString("message"); serverMessage.AppendString("O usuário " + userPublicist.UserName + " Fo Banido por Divulgar. A última palavra foi: " + word + ", na frase: " + message); Yupi.GetGame().GetClientManager().StaffAlert(serverMessage); Yupi.GetGame().GetBanManager().BanUser(this, userPublicist.UserName, 788922000.0, "Você está divulgando Hoteis. Será banido para sempre..", true, true); return; } string alert = settings.Alert.Replace("{0}", userPublicist.UserName); alert = alert.Replace("{1}", userPublicist.Id.ToString()); alert = alert.Replace("{2}", word); alert = alert.Replace("{3}", message); alert = alert.Replace("{4}", method); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UsersClassificationMessageComposer")); serverMessage.AppendInteger(1); serverMessage.AppendInteger(userPublicist.Id); serverMessage.AppendString(userPublicist.UserName); serverMessage.AppendString("BadWord: " + word); Yupi.GetGame()?.GetClientManager()?.StaffAlert(serverMessage); if (Yupi.GetGame().GetClientManager() == null) { return; } foreach (GameClient client in Yupi.GetGame().GetClientManager().Clients.Values) { if (client?.GetHabbo() == null) { continue; } if (client.CurrentRoomUserId == 0) { continue; } if (client.GetHabbo().Rank < 5) { continue; } serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WhisperMessageComposer")); serverMessage.AppendInteger(client.CurrentRoomUserId); serverMessage.AppendString(alert); serverMessage.AppendInteger(0); serverMessage.AppendInteger(34); serverMessage.AppendInteger(0); serverMessage.AppendInteger(true); client.SendMessage(serverMessage); } } }