Beispiel #1
0
 /// <summary>
 /// Continues the loading.
 /// </summary>
 internal void ContinueLoading()
 {
     using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
     {
         uint catalogPageLoaded;
         PetRace.Init(queryReactor);
         _catalog.Initialize(queryReactor, out catalogPageLoaded);
         AntiPublicistas.Load(queryReactor);
         SongManager.Initialize();
         LowPriorityWorker.Init(queryReactor);
         _roomManager.InitVotedRooms(queryReactor);
     }
     StartGameLoop();
 }
Beispiel #2
0
 internal void SendInstantMessage(uint ToId, string Message)
 {
     checked
     {
         if (AntiPublicistas.CheckPublicistas(Message))
         {
             GetClient().PublicistaCount += 1;
             this.GetClient().HandlePublicista(Message);
             return;
         }
         if (!this.FriendshipExists(ToId))
         {
             this.DeliverInstantMessageError(6, ToId);
             return;
         }
         GameClient clientByUserID = CyberEnvironment.GetGame().GetClientManager().GetClientByUserID(ToId);
         if (clientByUserID == null || clientByUserID.GetHabbo().GetMessenger() == null)
         {
             if (CyberEnvironment.OfflineMessages.ContainsKey(ToId))
             {
                 CyberEnvironment.OfflineMessages[ToId].Add(new OfflineMessage(this.GetClient().GetHabbo().Id, Message, (double)CyberEnvironment.GetUnixTimestamp()));
             }
             else
             {
                 CyberEnvironment.OfflineMessages.Add(ToId, new List <OfflineMessage>());
                 CyberEnvironment.OfflineMessages[ToId].Add(new OfflineMessage(this.GetClient().GetHabbo().Id, Message, (double)CyberEnvironment.GetUnixTimestamp()));
             }
             OfflineMessage.SaveMessage(CyberEnvironment.GetDatabaseManager().getQueryReactor(), ToId, this.GetClient().GetHabbo().Id, Message);
             return;
         }
         if (this.GetClient().GetHabbo().Muted)
         {
             this.DeliverInstantMessageError(4, ToId);
             return;
         }
         if (clientByUserID.GetHabbo().Muted)
         {
             this.DeliverInstantMessageError(3, ToId);
         }
         if (Message == "")
         {
             return;
         }
         clientByUserID.GetHabbo().GetMessenger().DeliverInstantMessage(Message, this.UserId);
         // CAUSES LAG: this.LogPM(this.UserId, ToId, Message);
     }
 }
Beispiel #3
0
        internal void start()
        {
            using (IQueryAdapter queryReactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                uint itemsLoaded         = 0;
                uint catalogPageLoaded   = 0;
                uint navigatorLoaded     = 0;
                uint roomModelLoaded     = 0;
                uint videoPlaylistLoaded = 0;
                uint achievementLoaded   = 0;
                uint pollLoaded          = 0;

                this.BanManager.LoadBans(queryReactor);
                this.RoleManager.LoadRights(queryReactor);
                this.ItemManager.LoadItems(queryReactor, out itemsLoaded);
                Logging.WriteLine("Loaded a total of " + itemsLoaded + " item definition(s).");
                this.PinataHandler.Initialize(queryReactor);
                this.globalInventory = new InventoryGlobal();
                this.VideoManager.Load(queryReactor, out videoPlaylistLoaded);
                Logging.WriteLine("Loaded a total of " + videoPlaylistLoaded + " video playlist(s).");
                this.Catalog.Initialize(queryReactor, out catalogPageLoaded);
                Logging.WriteLine("Loaded a total of " + catalogPageLoaded + " catalogue page(s).");
                this.Navigator.Initialize(queryReactor, out navigatorLoaded);
                Logging.WriteLine("Loaded a total of " + navigatorLoaded + " official room(s).");
                this.RoomManager.LoadModels(queryReactor, out roomModelLoaded);
                Logging.WriteLine("Loaded a total of " + roomModelLoaded + " room model(s).");
                this.RoomManager.InitVotedRooms(queryReactor);
                this.AchievementManager = new AchievementManager(queryReactor, out achievementLoaded);
                Logging.WriteLine("Loaded a total of " + achievementLoaded + " achievement(s).");
                this.questManager.Initialize(queryReactor);
                this.PollManager.Init(queryReactor, out pollLoaded);
                Logging.WriteLine("Loaded a total of " + pollLoaded + " poll(s).");
                this.talentManager.Initialize(queryReactor);
                this.ModerationTool.LoadMessagePresets(queryReactor);
                this.ModerationTool.LoadPendingTickets(queryReactor);
                PetRace.Init(queryReactor);
                AntiPublicistas.Load(queryReactor);
                this.GetGroupManager().InitGroups();
                SongManager.Initialize();
                LowPriorityWorker.Init(queryReactor);
            }
            this.StartGameLoop();
            PixelManager.StartPixelTimer();
        }
Beispiel #4
0
        internal void Chat(GameClient Session, string Message, bool Shout, int count, int TextColor = 0)
        {
            if (IsPet || IsBot)
            {
                if (!IsPet)
                {
                    TextColor = 2;
                }

                ServerMessage botChatmsg = new ServerMessage();
                botChatmsg.Init(Shout ? Outgoing.ShoutMessageComposer : Outgoing.ChatMessageComposer);
                botChatmsg.AppendInt32(VirtualId);
                botChatmsg.AppendString(Message);
                botChatmsg.AppendInt32(0);
                botChatmsg.AppendInt32(TextColor);
                botChatmsg.AppendInt32(0);
                botChatmsg.AppendInt32(count);

                this.GetRoom().SendMessage(botChatmsg);
                return;
            }

            if (Session.GetHabbo().Rank <= 9 && AntiPublicistas.CheckPublicistas(Message))
            {
                Session.PublicistaCount++;
                Session.HandlePublicista(Message);
                return;
            }

            if (!IsBot && IsFlooded && FloodExpiryTime <= CyberEnvironment.GetUnixTimestamp())
            {
                IsFlooded = false;
            }
            else if (!IsBot && IsFlooded)
            {
                return; // ciao flooders!
            }
            if (Session.GetHabbo().Rank < 4 && GetRoom().CheckMute(Session))
            {
                return;
            }

            this.UnIdle();
            if (!this.IsPet && !this.IsBot)
            {
                if (Message.StartsWith(":") && GetClient().GetHabbo().GetCommandHandler().Parse(Message))
                {
                    return;
                }

                ServerMessage message;
                Habbo         habbo = this.GetClient().GetHabbo();

                if (GetRoom().GetWiredHandler().ExecuteWired(WiredItemType.TriggerUserSaysKeyword, new object[]
                {
                    this,
                    Message
                }))
                {
                    return;
                }


                uint rank = 1;

                if ((Session != null) && (Session.GetHabbo() != null))
                {
                    rank = Session.GetHabbo().Rank;
                }

                GetRoom().AddChatlog(Session.GetHabbo().Id, Message, false);

                foreach (string current in GetRoom().WordFilter)
                {
                    Message = System.Text.RegularExpressions.Regex.Replace(Message, current, "bobba", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                }

                if (rank < 4)
                {
                    TimeSpan span = (TimeSpan)(DateTime.Now - habbo.spamFloodTime);
                    if ((span.TotalSeconds > habbo.spamProtectionTime) && habbo.spamProtectionBol)
                    {
                        this.FloodCount           = 0;
                        habbo.spamProtectionBol   = false;
                        habbo.spamProtectionAbuse = 0;
                    }
                    else if (span.TotalSeconds > 4.0)
                    {
                        this.FloodCount = 0;
                    }
                    if ((span.TotalSeconds < habbo.spamProtectionTime) && habbo.spamProtectionBol)
                    {
                        message = new ServerMessage(Outgoing.FloodFilterMessageComposer);
                        int i = habbo.spamProtectionTime - span.Seconds;
                        message.AppendInt32(i);
                        this.IsFlooded       = true;
                        this.FloodExpiryTime = CyberEnvironment.GetUnixTimestamp() + i;
                        this.GetClient().SendMessage(message);
                        return;
                    }
                    if (((span.TotalSeconds < 4.0) && (this.FloodCount > 5)) && (rank < 5))
                    {
                        message = new ServerMessage(Outgoing.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 = (int)(habbo.spamProtectionTime - span.Seconds);
                        message.AppendInt32(j);
                        this.IsFlooded       = true;
                        this.FloodExpiryTime = CyberEnvironment.GetUnixTimestamp() + j;
                        this.GetClient().SendMessage(message);
                        return;
                    }
                    habbo.spamFloodTime = DateTime.Now;
                    this.FloodCount++;
                }
            }
            else
            {
                if (!IsPet)
                {
                    TextColor = 2;
                }
            }

            ServerMessage chatMsg = new ServerMessage();

            chatMsg.Init(Shout ? Outgoing.ShoutMessageComposer : Outgoing.ChatMessageComposer);
            chatMsg.AppendInt32(VirtualId);
            chatMsg.AppendString(Message);
            chatMsg.AppendInt32(RoomUser.GetSpeechEmotion(Message));
            chatMsg.AppendInt32(TextColor);
            chatMsg.AppendInt32(0);
            chatMsg.AppendInt32(count);
            GetRoom().BroadcastChatMessage(chatMsg, this, Session.GetHabbo().Id);

            this.GetRoom().OnUserSay(this, Message, Shout);

            this.GetRoom().GetRoomUserManager().TurnHeads(this.X, this.Y, this.HabboId);
        }
Beispiel #5
0
        /// <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)
        {
            int credit = new Random().Next(1, 15);

            if (!GetClient().GetHabbo().HasFuse("fuse_owner") && AntiPublicistas.CheckPublicistas(message))
            {
                GetClient().PublicistCount++;
                GetClient().HandlePublicista(message);
                return;
            }
            if (!FriendshipExists(toId))
            {
                DeliverInstantMessageError(6, toId);
                return;
            }

            if (GetClient().GetRoleplay().Phone == 0)
            {
                GetClient().SendWhisperBubble("Você não tem telefone! Você pode comprar um na loja de telefone! [Room ID: 5]", 1);
                return;
            }
            if (GetClient().GetHabbo().ActivityPoints < credit)
            {
                GetClient().SendWhisperBubble("Você tem fundos de crédito insuficientes! Você pode comprar mais na loja de telefone! [Room ID: 5]", 1);
                return;
            }

            if (toId == 0) // Staff Chat
            {
                var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ConsoleChatMessageComposer"));
                serverMessage.AppendInteger(0); //userid
                serverMessage.AppendString(GetClient().GetHabbo().UserName + " : " + message);
                serverMessage.AppendInteger(0);
                Plus.GetGame().GetClientManager().StaffAlert(serverMessage, GetClient().GetHabbo().Id);
            }
            else
            {
                var clientByUserId = Plus.GetGame().GetClientManager().GetClientByUserId(toId);
                if (clientByUserId == null || clientByUserId.GetHabbo().GetMessenger() == null)
                {
                    if (Plus.OfflineMessages.ContainsKey(toId))
                    {
                        Plus.OfflineMessages[toId].Add(new OfflineMessage(GetClient().GetHabbo().Id, message,
                                                                          Plus.GetUnixTimeStamp()));
                    }
                    else
                    {
                        Plus.OfflineMessages.Add(toId, new List <OfflineMessage>());
                        Plus.OfflineMessages[toId].Add(new OfflineMessage(GetClient().GetHabbo().Id, message,
                                                                          Plus.GetUnixTimeStamp()));
                    }
                    OfflineMessage.SaveMessage(Plus.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 == "")
                {
                    return;
                }
                clientByUserId.GetHabbo().GetMessenger().DeliverInstantMessage(message, _userId);

                #region Whisper
                if (GetClient().GetHabbo().CurrentRoomId != 0)
                {
                    var      roomUserByRank = GetClient().GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByRank(2);
                    RoomUser u  = GetClient().GetHabbo().GetRoomUser();
                    RoomUser u2 = clientByUserId.GetHabbo().GetRoomUser();

                    foreach (var current2 in roomUserByRank)
                    {
                        if (current2 != null && current2.HabboId != u2.HabboId &&
                            current2.HabboId != u.HabboId && current2.GetClient() != null)
                        {
                            if (RoleplayManager.BypassRights(current2.GetClient()))
                            {
                                var whispStaff = new ServerMessage(LibraryParser.OutgoingRequest("WhisperMessageComposer"));
                                whispStaff.AppendInteger(u.VirtualId);
                                whispStaff.AppendString(string.Format("PM to {0}: {1}", clientByUserId.GetHabbo().UserName, message));
                                whispStaff.AppendInteger(0);
                                whispStaff.AppendInteger(0);
                                whispStaff.AppendInteger(0);
                                whispStaff.AppendInteger(-1);
                                current2.GetClient().SendMessage(whispStaff);
                            }
                        }
                    }
                }
                #endregion

                RoleplayManager.GiveCredit(GetClient(), -credit);
            }
            LogPM(_userId, toId, message);
        }