Beispiel #1
0
 internal void QueueChatMessage(InvokedChatMessage message)
 {
     lock (chatMessageQueue.SyncRoot)
     {
         chatMessageQueue.Enqueue(message);
     }
 }
Beispiel #2
0
 public RoomChat(RoomUser Parent, InvokedChatMessage Message)
 {
     this.Parent  = Parent;
     this.Message = Message;
     if (Parent.GetClient() != null && Parent.GetClient().GetHabbo() != null)
     {
         this.chatColor = Parent.GetClient().GetHabbo().ChatColor + " ";
     }
 }
Beispiel #3
0
        internal override void OnChat(InvokedChatMessage message)
        {
            // Check if there's any wired triggers with the message
            if (!GetRoom().AllowsShous(this, message.message))
            {
                return;
            }

            GetRoom().OnUserSay(this, message.message, message.shout);
            base.OnChat(message);
        }
Beispiel #4
0
 private void WorkChatQueue()
 {
     if (chatMessageQueue.Count > 0)
     {
         lock (chatMessageQueue.SyncRoot)
         {
             while (chatMessageQueue.Count > 0)
             {
                 InvokedChatMessage message = (InvokedChatMessage)chatMessageQueue.Dequeue();
                 message.user.OnChat(message);
             }
         }
     }
 }
Beispiel #5
0
        internal virtual void OnChat(InvokedChatMessage message)
        {
            string Message = message.message;

            int ChatHeader = Outgoing.Talk;

            if (message.shout)
            {
                ChatHeader = Outgoing.Shout;
            }

            string Site = "";

            ServerMessage ChatMessage = new ServerMessage(ChatHeader);

            ChatMessage.AppendInt32(VirtualID);
            ChatMessage.AppendString(Message);

            if (!string.IsNullOrEmpty(Site))
            {
                ChatMessage.AppendBoolean(false);
                ChatMessage.AppendBoolean(true);
                ChatMessage.AppendString(Site.Replace("http://", string.Empty));
                ChatMessage.AppendString(Site);
            }

            ChatMessage.AppendInt32(0);
            ChatMessage.AppendInt32(0);
            ChatMessage.AppendInt32(-1);

            GetRoom().GetRoomUserManager().TurnHeads(X, Y, VirtualID);

            foreach (RoomUser user in GetRoom().GetRoomUserManager().GetRoomUsers())
            {
                if (user.GetClient().GetHabbo().MutedUsers.Contains(ID))
                {
                    continue;
                }

                user.GetClient().SendMessage(ChatMessage);
            }


            message.Dispose();
        }
Beispiel #6
0
        internal void OnChat(InvokedChatMessage message)
        {
            #region Progress
            var Message = message.message;                              // mejoramos el mensaje.

            if (GetRoom() == null || GetRoom().SayWired(this, Message)) // si la sala es nula o no se muestra (es wired)
            {
                return;
            }

            RoomChat Chat = new RoomChat(this, message);
            GetRoom().SendChatMessage(Chat);

            // GetRoom().GetRoomUserManager().TurnHeads(X, Y, HabboId);

            if (!IsBot)
            {
                GetRoom().OnUserSay(this, Message, message.shout);
            }

            message.Dispose();
            #endregion
        }
Beispiel #7
0
        internal void OnChat(InvokedChatMessage message)
        {
            string Message = message.message;

            if (GetRoom() != null && !GetRoom().AllowsShous(this, Message))
            {
                return;
            }

            uint ChatHeader = 24;

            if (message.shout)
            {
                ChatHeader = 26;
            }

            string Site = "";

            ServerMessage ChatMessage = new ServerMessage(ChatHeader);

            ChatMessage.AppendInt32(VirtualId);

            //if (Message.Contains("http://") || Message.Contains("www."))
            //{
            //    string[] Split = Message.Split(' ');

            //    foreach (string Msg in Split)
            //    {
            //        if (Msg.StartsWith("http://") || Msg.StartsWith("www."))
            //        {
            //            Site = Msg;
            //        }
            //    }

            //    Message = Message.Replace(Site, "{0}");
            //}

            ChatMessage.AppendStringWithBreak(Message);

            if (!string.IsNullOrEmpty(Site))
            {
                ChatMessage.AppendBoolean(false);
                ChatMessage.AppendBoolean(true);
                ChatMessage.AppendStringWithBreak(Site.Replace("http://", string.Empty));
                ChatMessage.AppendStringWithBreak(Site);
            }

            ChatMessage.AppendInt32(GetSpeechEmotion(Message));
            ChatMessage.AppendBoolean(false);

            GetRoom().GetRoomUserManager().TurnHeads(X, Y, HabboId);
            GetRoom().SendMessage(ChatMessage);

            if (!IsBot)
            {
                GetRoom().OnUserSay(this, Message, message.shout);
                LogMessage(Message);
            }

            message.Dispose();
        }
Beispiel #8
0
        internal void Chat(GameClient Session, string Message, bool Shout)
        {
            if (Session != null)
            {
                if (Session.GetHabbo().Rank < 5)
                {
                    if (GetRoom().RoomMuted)
                    {
                        return;
                    }
                }
            }

            Unidle();

            if (!IsBot && GetClient().GetHabbo().Muted)
            {
                GetClient().SendNotif("You are muted.");
                return;
            }

            if (Message.StartsWith(":") && Session != null)
            {
                string[] parsedCommand = Message.Split(' ');
                if (ChatCommandRegister.IsChatCommand(parsedCommand[0].ToLower().Substring(1)))
                {
                    ChatCommandHandler handler = new ChatCommandHandler(Message.Split(' '), Session);

                    if (handler.WasExecuted())
                    {
                        Logging.LogMessage(string.Format("User {0} issued command {1}", GetUsername(), Message));
                        if (Session.GetHabbo().Rank > 5)
                        {
                            ButterflyEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, string.Empty, "Chat command", string.Format("Issued chat command {0}", Message));
                        }
                        return;
                    }
                }
            }

            uint rank = 1;

            Message = LanguageLocale.FilterSwearwords(Message);
            if (!IsBot && Session != null && Session.GetHabbo() != null)
            {
                rank = Session.GetHabbo().Rank;
            }


            TimeSpan SinceLastMessage = DateTime.Now - FloodTime;

            if (SinceLastMessage.Seconds > 4)
            {
                FloodCount = 0;
            }

            if (SinceLastMessage.Seconds < 4 && FloodCount > 5 && !IsBot && rank < 5)
            {
                ServerMessage Packet = new ServerMessage(27);
                Packet.AppendInt32(30); //Blocked for 30sec
                GetClient().SendMessage(Packet);
                return;
            }
            FloodTime = DateTime.Now;
            FloodCount++;

            if (!IsBot)
            {
                ButterflyEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.SOCIAL_CHAT);
            }

            InvokedChatMessage message = new InvokedChatMessage(this, Message, Shout);

            GetRoom().QueueChatMessage(message);
        }
Beispiel #9
0
        internal override void OnChat(InvokedChatMessage message)
        {
            // Check if there's any wired triggers with the message
            if (!GetRoom().AllowsShous(this, message.message))
                return;

            GetRoom().OnUserSay(this, message.message, message.shout);
            base.OnChat(message);
        }
Beispiel #10
0
        internal virtual void Chat(string Message, bool Shout)
        {
            InvokedChatMessage message = new InvokedChatMessage(this, Message, Shout);

            GetRoom().QueueChatMessage(message);
        }
Beispiel #11
0
        internal void Chat(GameClient Session, string Message, bool Shout)
        {
            if (Session != null)
            {
                if (Session.GetHabbo().Rank < 5)
                {
                    if (GetRoom().RoomMuted)
                    {
                        return;
                    }
                }
            }

            Unidle();

            if (!IsBot && GetClient().GetHabbo().Muted)
            {
                GetClient().SendNotif("You are muted.");
                return;
            }


            bool Command = false;

            // Chat command handler.
            if (Message.StartsWith(":") && Session != null)
            {
                Command = ChatCommandHandle.Parse(Session, Message.Substring(1));

                #region Logs CMD activity
                //// Logs cmd activity.
                //using (DatabaseClient dbClient = PiciEnvironment.GetDatabase().GetClient())
                //{
                //    Message = Message.Substring(1);

                //    string[] FullCommand = Message.Split(' ');

                //    string Command = FullCommand[0].ToString();
                //    string Params = "";

                //    if (FullCommand.Length > 1)
                //    {
                //        int Count = 0;

                //        foreach (string Param in FullCommand)
                //        {
                //            if (Count == 0)
                //            {
                //                Count++;

                //                continue;
                //            }

                //            Params += Count++ + "=" + Param + "&";
                //        }

                //        if (Count > 2)
                //        {
                //            Params = Params.Substring(0, Params.Length - 1);
                //        }
                //    }

                //    Command = PiciEnvironment.FilterInjectionChars(Command);
                //    Params = PiciEnvironment.FilterInjectionChars(Params);

                //    dbClient.ExecuteQuery("INSERT INTO logs_cmd (user_id, cmd, params, ip_address, timestamp) VALUES ('" + Session.GetHabbo().Id + "', '" + Command + "', '" + Params + "', '" + Session.GetConnection().ipAddress + "', '" + (int)PiciEnvironment.GetUnixTimestamp() + "');");
                //}
                #endregion
            }

            // Removes input.
            if (Command == true)
            {
                return;
            }

            uint rank = 1;
            Message = LanguageLocale.FilterSwearwords(Message);
            if (!IsBot && Session != null && Session.GetHabbo() != null)
            {
                rank = Session.GetHabbo().Rank;
            }


            TimeSpan SinceLastMessage = DateTime.Now - FloodTime;
            if (SinceLastMessage.Seconds > 4)
            {
                FloodCount = 0;
            }

            if (SinceLastMessage.Seconds < 4 && FloodCount > 5 && !IsBot && rank < 5)
            {
                ServerMessage Packet = new ServerMessage(27);
                Packet.AppendInt32(30); //Blocked for 30sec
                GetClient().SendMessage(Packet);
                return;
            }
            FloodTime = DateTime.Now;
            FloodCount++;

            if (!IsBot)
            {
                PiciEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.SOCIAL_CHAT);
            }

            InvokedChatMessage message = new InvokedChatMessage(this, Message, Shout);
            GetRoom().QueueChatMessage(message);
        }