/// <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(); }
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); } }
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(); }
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); }
/// <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); }