internal void ContinueLoading() { DateTime Start; TimeSpan TimeUsed; using (IQueryAdapter dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { EmuSettings.Initialize(dbClient); Start = DateTime.Now; Ranks.LoadMaxRankId(dbClient); Catalog.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Catacache -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Filter.Filter.Initialize(); Filter.BlackWordsManager.Load(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Filtro -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; BanManager.LoadBans(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de Ban -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; newsManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Notícia -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; ItemManager.LoadItems(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de item -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Furnidata.Initialize(); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de Furnidata -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PromotionalBadgesManager.loadPromotionalBadges(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Emblemas promocionais -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; RoleManager.LoadRanks(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de papel -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Navigator.Initialize(dbClient); NewNavigatorManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Navegador -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; RoomManager.LoadModels(dbClient); RoomManager.InitVotedRooms(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente do quarto -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; AchievementManager.Initialize(dbClient); questManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de realização -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; ModerationTool.LoadMessagePresets(dbClient); ModerationTool.LoadModActions(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Ferramenta de moderação-> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PetRace.Init(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Sistema de estimação-> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PetOrders.Init(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Ordens para animais -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; GuildsPartsManager.InitGroups(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Elementos dos grupos -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Catalog.InitCache(); CatalogPremium.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de catálogo -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; SongManager.Initialize(); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de som -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; youtubeManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Youtube TV Manager -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; piñataManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente Piñata -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; talentManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de talentos -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; TargetedOfferManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente da oferta direta -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; CraftableProductsManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de Produtos Crafáveis -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; ClothingManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Gerente de vestuário-> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PrisaoManager.Init(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Usuários presos -> PRONTO! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); LandingTopUsersManager.Initialize(dbClient); LandingTopUsersManager.Load(); giftManager.init(dbClient); SpyChatMessage.Initialize(); StaffChat.Initialize(dbClient); BonusManager.Initialize(dbClient); roomRankConfig.Initialize(); Start = DateTime.Now; DatabaseCleanup(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("[Otanix] @ Database -> Limpeza realizada! (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); } StartGameLoop(); Logging.WriteLine("[Otanix] @ Gerente de jogo -> PRONTO! "); }
internal void ContinueLoading() { DateTime Start; TimeSpan TimeUsed; using (IQueryAdapter dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { EmuSettings.Initialize(dbClient); Start = DateTime.Now; Ranks.LoadMaxRankId(dbClient); Catalog.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Catalog Cache -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Filter.Filter.Initialize(); Filter.BlackWordsManager.Load(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Filter -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; BanManager.LoadBans(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Ban Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; newsManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("News Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; ItemManager.LoadItems(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Item Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Furnidata.Initialize(); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Furnidata -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PromotionalBadgesManager.loadPromotionalBadges(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Promotional Badges Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; RoleManager.LoadRanks(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Ranks -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Navigator.Initialize(dbClient); NewNavigatorManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Navigator -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; RoomManager.LoadModels(dbClient); RoomManager.InitVotedRooms(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Room Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; AchievementManager.Initialize(dbClient); questManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Quest Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; ModerationTool.LoadMessagePresets(dbClient); ModerationTool.LoadModActions(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Moderation Tool -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PetRace.Init(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Pet Race -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PetOrders.Init(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Pet Orders -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; GuildsPartsManager.InitGroups(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Guilds Parts Manager-> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; Catalog.InitCache(); CatalogPremium.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Catalog Manager -> PRONTO (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; SongManager.Initialize(); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Song Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; youtubeManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Youtube TV Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; piñataManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Piñata Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; talentManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Talent Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; TargetedOfferManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Targeted Offer Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; CraftableProductsManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Craftable Products Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; ClothingManager.Initialize(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Clothing Manager-> PRONTO (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); Start = DateTime.Now; PrisaoManager.Init(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Prison Manager -> READY (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); LandingTopUsersManager.Initialize(dbClient); LandingTopUsersManager.Load(); giftManager.init(dbClient); SpyChatMessage.Initialize(); StaffChat.Initialize(dbClient); BonusManager.Initialize(dbClient); roomRankConfig.Initialize(); Start = DateTime.Now; DatabaseCleanup(dbClient); TimeUsed = DateTime.Now - Start; Logging.WriteLine("Database -> Cleanup Done (" + TimeUsed.Seconds + " s, " + TimeUsed.Milliseconds + " ms)"); } StartGameLoop(); Logging.WriteLine("Game Loop -> READY "); }
internal void SendInstantMessage(uint ToId, string Message) { if (GetClient() != null && GetClient().GetHabbo() != null && OtanixEnvironment.GetGame().GetPrisaoManager().estaPreso(GetClient().GetHabbo().Id)) { GetClient().SendNotif(LanguageLocale.GetValue("prisao.chatamigos")); return; } if (GetClient() != null && GetClient().GetHabbo() != null && !GetClient().GetHabbo().passouPin) { GetClient().SendNotif("Você precisa digitar o pin staff"); return; } if (ToId == EmuSettings.CHAT_USER_ID) { if (!GetClient().GetHabbo().HasFuse("fuse_chat_staff")) // no inyections { return; } ServerMessage InstantMessage = new ServerMessage(Outgoing.InstantChat); InstantMessage.AppendUInt(EmuSettings.CHAT_USER_ID); InstantMessage.AppendString(GetClient().GetHabbo().Username + ": " + Message); InstantMessage.AppendInt32(0); OtanixEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(InstantMessage, "fuse_chat_staff", UserId); return; } if (!FriendshipExists(ToId)) { DeliverInstantMessageError(6, ToId); return; } var Client = OtanixEnvironment.GetGame().GetClientManager().GetClientByUserID(ToId); if (Client == null || Client.GetHabbo() == null || Client.GetHabbo().GetMessenger() == null) { // DeliverInstantMessageError(5, ToId); MessengerChat.AddMessageToId(UserId, ToId, Message); return; } if (OtanixEnvironment.GetGame().GetMuteManager().HasMuteExpired(GetClient().GetHabbo().Id) > 0) { DeliverInstantMessageError(4, ToId); return; } if (OtanixEnvironment.GetGame().GetMuteManager().HasMuteExpired(Client.GetHabbo().Id) > 0) { DeliverInstantMessageError(3, ToId); // No return, as this is just a warning. } if (Message == "") { return; } SpyChatMessage.SaveUserLog(UserId, 0, ToId, Message); Client.GetHabbo().GetMessenger().DeliverInstantMessage(Message, UserId); }
internal void Chat(GameClient Session, string Message, int Color, bool Shout, bool frank = false) { #region Progress #region Checks if (frank) { goto NoCheckings; } if (Message.Length <= 0 || Message.Length > 100) // si el mensaje es mayor que la máxima longitud (scripter) { return; } if (OtanixEnvironment.ContainsHTMLCode(Message)) { WhisperComposer(LanguageLocale.GetValue("chat.html.detected")); return; } if (IsPet || IsBot) // si no es un usuario, directamente saltamos a mandar el mensaje { goto NoCheckings; } if (IsSpectator) { return; } if (Session == null || Session.GetHabbo() == null) // si el usuario ya está desconectado, pasamos de todo { return; } if (!Session.GetHabbo().passouPin) { WhisperComposer("Você precisa digitar o pin staff"); return; } #endregion #region Muted if (!GetRoom().CheckRights(Session, true)) // Si no es un staff comprobamos si está muteado. { if (GetRoom().RoomMuted) { return; } int timeToEndRoomMute = GetRoom().HasMuteExpired(Session.GetHabbo().Id); int timeToEndGlobalMute = OtanixEnvironment.GetGame().GetMuteManager().HasMuteExpired(Session.GetHabbo().Id); int timeMuted = (timeToEndGlobalMute > timeToEndRoomMute) ? timeToEndGlobalMute : timeToEndRoomMute; if (timeMuted > 0) { ServerMessage message = new ServerMessage(Outgoing.MuteTimerMessageComposer); message.AppendInt32(timeMuted); Session.SendMessage(message); return; } } #endregion if (Message.StartsWith("@red@") || Message.StartsWith("@blue@") || Message.StartsWith("@cyan@") || Message.StartsWith("@green@") || Message.StartsWith("@purple@") || Message.StartsWith("@normal@")) { if (Message.StartsWith("@red@")) { Session.GetHabbo().ChatColor = "@red@"; Message = Message.Replace("@red@", ""); } else if (Message.StartsWith("@blue@")) { Session.GetHabbo().ChatColor = "@blue@"; Message = Message.Replace("@blue@", ""); } else if (Message.StartsWith("@cyan@")) { Session.GetHabbo().ChatColor = "@cyan@"; Message = Message.Replace("@cyan@", ""); } else if (Message.StartsWith("@green@")) { Session.GetHabbo().ChatColor = "@green@"; Message = Message.Replace("@green@", ""); } else if (Message.StartsWith("@purple@")) { Session.GetHabbo().ChatColor = "@purple@"; Message = Message.Replace("@purple@", ""); } else if (Message.StartsWith("@normal@")) { Session.GetHabbo().ChatColor = ""; Message = Message.Replace("@normal@", ""); } } #region Commands if (Message.StartsWith(":")) // Si el mensaje comienza por : { if (ChatCommandRegister.IsChatCommand(Message.Split(' ')[0].ToLower().Substring(1))) // si está en nuestra lista de comandos { ChatCommandHandler handler = new ChatCommandHandler(Message.Split(' '), Session, mRoom, this); try { if (handler.WasExecuted()) { return; } } finally { handler.Dispose(); } } } else if (Message.StartsWith("@")) { string nomeFinal = String.Empty; var nomeSplitado = Message.Replace("@", "").Split(' '); if (nomeSplitado.Length != 0) { nomeFinal = Convert.ToString(nomeSplitado[0]); } GameClient buscaUsuario = OtanixEnvironment.GetGame().GetClientManager().GetClientByUsername(nomeFinal); if (buscaUsuario == null || buscaUsuario.GetHabbo() == null) { goto naoMarcar; } ServerMessage Alert = new ServerMessage(Outgoing.CustomAlert); Alert.AppendString("furni_placement_error"); Alert.AppendInt32(3); Alert.AppendString("message"); Alert.AppendString("O usuário " + Session.GetHabbo().Username + " te marcou em uma conversa, clique aqui para ir ao quarto."); Alert.AppendString("image"); Alert.AppendString("${image.library.url}notifications/" + EmuSettings.EVENTHA_ICON + ".png"); Alert.AppendString("linkUrl"); Alert.AppendString("event:navigator/goto/" + Session.GetHabbo().CurrentRoomId); buscaUsuario.SendMessage(Alert); WhisperComposer("Você marcou o usuário " + buscaUsuario.GetHabbo().Username + " com sucesso."); } naoMarcar: #endregion #region Flood if (!Session.GetHabbo().HasFuse("ignore_flood_filter") && Session.GetHabbo().Id != GetRoom().RoomData.OwnerId&& !IsBot) { TimeSpan SinceLastMessage = DateTime.Now - Session.GetHabbo().spamFloodTime; if (SinceLastMessage.Seconds > 3) { FloodCount = 0; } else if (FloodCount > 5) { ServerMessage Packet = new ServerMessage(Outgoing.FloodFilter); Packet.AppendInt32(30); GetClient().SendMessage(Packet); OtanixEnvironment.GetGame().GetMuteManager().AddUserMute(Session.GetHabbo().Id, 0.5); return; } Session.GetHabbo().spamFloodTime = DateTime.Now; FloodCount++; } #endregion #region Filter if (!Session.GetHabbo().HasFuse("ignore_spam_filter")) { if (BlackWordsManager.Check(Message, BlackWordType.Hotel, Session, "<ID do Quarto:" + Session.GetHabbo().CurrentRoomId + ">")) { return; } if (BlackWordsManager.CheckRoomFilter(Message, mRoom.RoomFilterWords)) { return; } } #endregion #region Show Message Progress if (Session.GetHabbo().Rank < 2 && EmuSettings.CHAT_TYPES_USERS.Contains(Color)) { Color = 0; } // if (Session.GetHabbo().GetBadgeComponent().HasBadge(OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_BADGE) && Session.GetHabbo().GetBadgeComponent().GetBadge(OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_BADGE).Slot > 0 && OtanixEnvironment.GetGame().GetRoomRankConfig().ROOMS_TO_MODIFY.Contains((int)GetRoom().RoomId)) // Color = OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_COLOR; // si la sala está elegida como sala para bots, mejor que cada bot hable con su tipo de chat, no? Unidle(); OtanixEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.SOCIAL_CHAT); // miramos el reto SpyChatMessage.SaveUserLog(Session.GetHabbo().Id, mRoom.RoomId, 0, Message); var Mess = new ChatMessage(Session.GetHabbo().Id, Session.GetHabbo().Username, mRoom.RoomId, Message, DateTime.Now, true); // creamos la clase para el Mensaje Session.GetHabbo().GetChatMessageManager().AddMessage(Mess); // Mod Tools: User Message mRoom.GetChatMessageManager().AddMessage(Mess); // Mod Tools: Room Message OtanixEnvironment.GetGame().CorManager().atualizaPracolorido(Session); NoCheckings: GetRoom().QueueChatMessage(new InvokedChatMessage(this, Message, Color, Shout)); if (IsBot) { BotCommands(VirtualId, Message, mRoom); } #endregion #endregion }