/// <summary> /// Continues the loading. /// </summary> internal void ContinueLoading() { using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { int catalogPageLoaded; PetRace.Init(queryReactor); _catalog.Initialize(queryReactor, out catalogPageLoaded); UserChatInputFilter.Load(); ServerSecurityChatFilter.InitSwearWord(); BlackWordsManager.Load(); SoundMachineSongManager.Initialize(); ServerCpuLowPriorityWorker.Init(queryReactor); _roomManager.InitVotedRooms(queryReactor); _roomManager.LoadCompetitionManager(); } StartGameLoop(); _pixelManager.StartTimer(); }
public override bool Execute(GameClient session, string[] pms) { UserChatInputFilter.Reload(); BlackWordsManager.Reload(); session.SendNotif(Yupi.GetLanguage().GetVar("command_refresh_banned_hotels")); return(true); }
internal void SendInstantMessenger() { if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetMessenger() == null) { return; } var userId = Request.PopWiredInt32(); var message = OtanixEnvironment.FilterInjectionChars(Request.PopFixedString()); #region Mute if (Session.GetHabbo().Rank < 4) // Si no es un staff comprobamos si está muteado. { int timeToEndGlobalMute = OtanixEnvironment.GetGame().GetMuteManager().HasMuteExpired(Session.GetHabbo().Id); if (timeToEndGlobalMute > 0) { return; } } #endregion #region Flood if (!Session.GetHabbo().HasFuse("ignore_flood_filter")) { TimeSpan SinceLastMessage = DateTime.Now - Session.GetHabbo().spamFloodTime; if (SinceLastMessage.Seconds > 3) { FloodCount = 0; } else if (FloodCount > 5) { 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, "<Consola Privado>")) { return; } } #endregion bool isGroup = userId < 0; if (isGroup) { Session.GetHabbo().GetMessenger().SendInstantMessageGroup(userId, message); } else { Session.GetHabbo().GetMessenger().SendInstantMessage(Convert.ToUInt32(userId), message); } }
public override bool Execute(GameClient session, string[] pms) { string type = pms[0]; string word = pms[1]; if (string.IsNullOrEmpty(word)) { session.SendWhisper("Palabra inválida."); return(true); } BlackWordsManager.AddBlackWord(type, word); return(true); }
public void Handle(RoomUser user, Team team, RoomItem item) { //InteractorGenericSwitch.DoAnimation(itemID); if (user != null && !user.IsBot && user.GetClient() != null && message.Length > 0) { string specialMessage = BlackWordsManager.SpecialReplace(message, user); var servermsg = new ServerMessage(Outgoing.Whisp); servermsg.AppendInt32(user.VirtualId); servermsg.AppendString(specialMessage); servermsg.AppendInt32(0); servermsg.AppendInt32(34); // color servermsg.AppendInt32(0); servermsg.AppendInt32(-1); user.GetClient().SendMessage(servermsg); } }
/// <summary> /// Continues the loading. /// </summary> internal void ContinueLoading() { int catalogPageLoaded; GetNavigator().LoadNewPublicRooms(); PetTypeManager.Load(); GetCatalogManager().Init(out catalogPageLoaded); UserChatInputFilter.Load(); ServerSecurityChatFilter.Load(); BlackWordsManager.Load(); SoundMachineSongManager.Load(); ServerCpuLowPriorityWorker.Load(); GetRoomManager().InitVotedRooms(); GetRoomManager().LoadCompetitionManager(); StartGameLoop(); GetPixelManager().StartTimer(); }
/// <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> /// Invokes the command. /// </summary> /// <param name="inputData">The input data.</param> internal static void InvokeCommand(string inputData) { if (string.IsNullOrEmpty(inputData) && YupiWriterManager.DisabledState) { return; } try { if (inputData == null) { return; } string firstArgument = inputData, secondArgument = string.Empty; if (inputData.Contains(" ")) { string[] strArguments = inputData.Split(' '); firstArgument = strArguments[0]; secondArgument = strArguments[1]; } switch (firstArgument) { case "shutdown": YupiLogManager.LogMessage($"Server Shutdowning at {DateTime.Now}."); YupiWriterManager.DisablePrimaryWriting(true); YupiWriterManager.WriteLine("Shutdown Initalized", "Yupi.Life", ConsoleColor.DarkYellow); Yupi.PerformShutDown(); Console.WriteLine(); break; case "restart": YupiLogManager.LogMessage($"Server Restarting at {DateTime.Now}."); YupiWriterManager.DisablePrimaryWriting(true); YupiWriterManager.WriteLine("Restart Initialized", "Yupi.Life", ConsoleColor.DarkYellow); Yupi.PerformRestart(); Console.WriteLine(); break; case "reload": switch (secondArgument) { case "database": Console.WriteLine("Database destroyed"); Console.WriteLine(); break; case "packets": LibraryParser.ReloadDictionarys(); Console.WriteLine("> Packets Reloaded Suceffuly..."); Console.WriteLine(); break; case "catalogue": FurnitureDataManager.SetCache(); using (IQueryAdapter adapter = Yupi.GetDatabaseManager().GetQueryReactor()) GetGame().GetCatalogManager().Init(adapter); FurnitureDataManager.Clear(); GetGame() .GetClientManager() .QueueBroadcaseMessage( new ServerMessage(LibraryParser.OutgoingRequest("PublishShopMessageComposer"))); Console.WriteLine("Catalogue was re-loaded."); Console.WriteLine(); break; case "modeldata": using (IQueryAdapter adapter2 = Yupi.GetDatabaseManager().GetQueryReactor()) GetGame().GetRoomManager().LoadModels(adapter2); Console.WriteLine("Room models were re-loaded."); Console.WriteLine(); break; case "bans": using (IQueryAdapter adapter3 = Yupi.GetDatabaseManager().GetQueryReactor()) GetGame().GetBanManager().LoadBans(adapter3); Console.WriteLine("Bans were re-loaded"); Console.WriteLine(); break; case "filter": UserChatInputFilter.Reload(); BlackWordsManager.Reload(); break; default: UnknownCommand(inputData); Console.WriteLine(); break; } break; case "clear": Console.Clear(); break; case "status": TimeSpan uptime = DateTime.Now - Yupi.YupiServerStartDateTime; Console.WriteLine("Server status:"); Console.WriteLine(); Console.WriteLine("Uptime:"); Console.WriteLine("\tDays: {0}", uptime.Days); Console.WriteLine("\tHours: {0}", uptime.Hours); Console.WriteLine("\tMinutes: {0}", uptime.Minutes); Console.WriteLine(); Console.WriteLine("Stats:"); Console.WriteLine("\tAccepted Connections: {0}", Yupi.GetConnectionManager().Manager.AcceptedConnections); Console.WriteLine("\tActive Threads: {0}", Process.GetCurrentProcess().Threads.Count); Console.WriteLine(); Console.WriteLine(); break; case "gcinfo": { Console.WriteLine("Mode: " + GCSettings.LatencyMode); Console.WriteLine("Is server GC: " + GCSettings.IsServerGC); break; } case "memstat": { Console.WriteLine("GC status:"); Console.WriteLine("\tGeneration supported: " + GC.MaxGeneration); Console.WriteLine("\tLatency mode: " + GCSettings.LatencyMode); Console.WriteLine("\tIs server GC: " + GCSettings.IsServerGC); Console.WriteLine(); break; } case "memory": { GC.Collect(); Console.WriteLine("Memory flushed"); break; } case "help": Console.WriteLine("shutdown"); Console.WriteLine("clear"); Console.WriteLine("memory"); Console.WriteLine("status"); Console.WriteLine("restart"); Console.WriteLine("memstat"); Console.WriteLine("reload catalogue"); Console.WriteLine("reload modeldata"); Console.WriteLine("reload bans"); Console.WriteLine("reload packets"); Console.WriteLine("reload filter"); Console.WriteLine("reload packets"); Console.WriteLine("reload database"); Console.WriteLine(); break; default: UnknownCommand(inputData); break; } } catch (Exception) { // ignored } }
internal bool tryLogin(string AuthTicket) { try { if (GetConnection() == null) { return(false); } var userData = UserDataFactory.GetUserData(AuthTicket); if (userData == null) { this.Disconnect(); return(false); } OtanixEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.user.Id, userData.user.Username); Habbo = userData.user; if (userData.user.Username == null || GetHabbo() == null) { SendBanMessage("Você não possui um nome."); return(false); } userData.user.Init(userData); Habbo.MachineId = MachineId; var response = new QueuedServerMessage(Connection); var authok = new ServerMessage(Outgoing.AuthenticationOK); response.appendResponse(authok); var HomeRoom = new ServerMessage(Outgoing.HomeRoom); HomeRoom.AppendUInt((OtanixEnvironment.GetGame().GetPrisaoManager().estaPreso(GetHabbo().Id)) ? OtanixEnvironment.prisaoId() : GetHabbo().HomeRoom); // first home HomeRoom.AppendUInt((OtanixEnvironment.GetGame().GetPrisaoManager().estaPreso(GetHabbo().Id)) ? OtanixEnvironment.prisaoId() : GetHabbo().HomeRoom); // current home response.appendResponse(HomeRoom); var FavouriteRooms = new ServerMessage(Outgoing.FavouriteRooms); FavouriteRooms.AppendInt32(30); // max rooms FavouriteRooms.AppendInt32(userData.user.FavoriteRooms.Count); foreach (var Id in userData.user.FavoriteRooms.ToArray()) { FavouriteRooms.AppendUInt(Id); } response.appendResponse(FavouriteRooms); var sendClub = new ServerMessage(Outgoing.SerializeClub); sendClub.AppendString("club_habbo"); sendClub.AppendInt32(0); // days left sendClub.AppendInt32(0); // days multiplier sendClub.AppendInt32(0); // months left sendClub.AppendInt32(0); // ??? sendClub.AppendBoolean(true); // HC PRIVILEGE sendClub.AppendBoolean(true); // VIP PRIVILEGE sendClub.AppendInt32(0); // days i have on hc sendClub.AppendInt32(0); // days i've purchased sendClub.AppendInt32(495); // value 4 groups response.appendResponse(sendClub); var roomAccessConfig = new ServerMessage(Outgoing.RoomAccessConfig); roomAccessConfig.AppendBoolean(true); // isOpen roomAccessConfig.AppendBoolean(false); roomAccessConfig.AppendBoolean(true); response.appendResponse(roomAccessConfig); var fuserights = new ServerMessage(Outgoing.Fuserights); fuserights.AppendInt32(2); // normal|hc|vip fuserights.AppendUInt(GetHabbo().Rank); fuserights.AppendBoolean(GetHabbo().HasFuse("fuse_ambassador")); // embajador ? // fuserights.AppendInt32(0); // New Identity (1 == 1 min and Alert!) response.appendResponse(fuserights); var newidentity = new ServerMessage(Outgoing.SendNewIdentityState); newidentity.AppendInt32(GetHabbo().NewIdentity); response.appendResponse(newidentity); var HabboInformation = new ServerMessage(Outgoing.HabboInfomation); HabboInformation.AppendUInt(GetHabbo().Id); HabboInformation.AppendString(GetHabbo().Username); HabboInformation.AppendString(GetHabbo().Look); HabboInformation.AppendString(GetHabbo().Gender.ToUpper()); HabboInformation.AppendString(GetHabbo().Motto); HabboInformation.AppendString(GetHabbo().RealName); HabboInformation.AppendBoolean(false); HabboInformation.AppendUInt(GetHabbo().Respect); HabboInformation.AppendUInt(GetHabbo().DailyRespectPoints); // respect to give away HabboInformation.AppendUInt(GetHabbo().DailyPetRespectPoints); HabboInformation.AppendBoolean(true); HabboInformation.AppendString(OtanixEnvironment.UnixTimeStampToDateTime(GetHabbo().LastOnline).ToString()); HabboInformation.AppendBoolean(GetHabbo().NameChanges < EmuSettings.MAX_NAME_CHANGES); // CHANGENAME - HabboInformation.AppendBoolean((this.GetHabbo().Diamonds<=0||this.GetHabbo().NameChanges>=ButterflyEnvironment.maxNameChanges)?false:true); HabboInformation.AppendBoolean(false); response.appendResponse(HabboInformation); var IsGuide = (Habbo.Rank > 1) ? true : false; var VoteInCompetitions = false; var Trade = true; var Citizien = (Habbo.CitizenshipLevel >= 4) ? true : false; var JudgeChat = (Habbo.Rank > 2) ? true : false; var NavigatorThumbailCamera = false; var navigatorphaseTwo = true; var Camera = true; var CallHelpers = true; var BuilderAtWork = true; var MouseZoom = false; var Allows = new ServerMessage(Outgoing.PerkAllowancesMessageParser); Allows.AppendInt32(11); // count Allows.AppendString("TRADE"); Allows.AppendString((!Trade) ? "requirement.unfulfilled.citizenship_level_3" : ""); Allows.AppendBoolean(Trade); Allows.AppendString("NAVIGATOR_ROOM_THUMBNAIL_CAMERA"); Allows.AppendString((!NavigatorThumbailCamera) ? "" : ""); Allows.AppendBoolean(NavigatorThumbailCamera); Allows.AppendString("NAVIGATOR_PHASE_TWO_2014"); Allows.AppendString((!navigatorphaseTwo) ? "requirement.unfulfilled.feature_disabled" : ""); Allows.AppendBoolean(navigatorphaseTwo); Allows.AppendString("VOTE_IN_COMPETITIONS"); Allows.AppendString((!VoteInCompetitions) ? "requirement.unfulfilled.helper_level_2" : ""); Allows.AppendBoolean(VoteInCompetitions); Allows.AppendString("BUILDER_AT_WORK"); Allows.AppendString((!BuilderAtWork) ? "requirement.unfulfilled.group_membership" : ""); Allows.AppendBoolean(BuilderAtWork); Allows.AppendString("MOUSE_ZOOM"); Allows.AppendString((!MouseZoom) ? "requirement.unfulfilled.feature_disabled" : ""); Allows.AppendBoolean(MouseZoom); Allows.AppendString("CAMERA"); Allows.AppendString((!Camera) ? "requirement.unfulfilled.feature_disabled" : ""); Allows.AppendBoolean(Camera); Allows.AppendString("CALL_ON_HELPERS"); Allows.AppendString((!CallHelpers) ? "requirement.unfulfilled.citizenship_level_1" : ""); Allows.AppendBoolean(CallHelpers); Allows.AppendString("CITIZEN"); Allows.AppendString((!Citizien) ? "requirement.unfulfilled.citizenship_level_3" : ""); Allows.AppendBoolean(Citizien); Allows.AppendString("USE_GUIDE_TOOL"); Allows.AppendString((!IsGuide) ? "requirement.unfulfilled.helper_level_4" : ""); Allows.AppendBoolean(IsGuide); Allows.AppendString("JUDGE_CHAT_REVIEWS"); Allows.AppendString((!JudgeChat) ? "requirement.unfulfilled.citizenship_level_6" : ""); Allows.AppendBoolean(JudgeChat); response.appendResponse(Allows); var enabledBuilderClub = new ServerMessage(Outgoing.EnableBuilderClub); enabledBuilderClub.AppendInt32(GetHabbo().IsPremium() ? GetHabbo().GetPremiumManager().GetRemainingTime() : 0); // Tiempo restante de Constructor (2678400 = 1 mes entero (s)) enabledBuilderClub.AppendUInt(GetHabbo().IsPremium() ? GetHabbo().GetPremiumManager().GetMaxItems() : 50); // Furnis que puedo alquilar enabledBuilderClub.AppendInt32(20000); // Se puede ampliar la alquilación hasta.. enabledBuilderClub.AppendInt32(0); response.appendResponse(enabledBuilderClub); response.appendResponse(GetHabbo().GetUserClothingManager().SerializeClothes()); var achivPoints = new ServerMessage(Outgoing.AchievementPoints); achivPoints.AppendUInt(GetHabbo().AchievementPoints); response.appendResponse(achivPoints); var loadVolumen = new ServerMessage(Outgoing.LoadVolumen); loadVolumen.AppendInt32(int.Parse(GetHabbo().volumenSystem.Split(';')[0])); loadVolumen.AppendInt32(int.Parse(GetHabbo().volumenSystem.Split(';')[1])); loadVolumen.AppendInt32(int.Parse(GetHabbo().volumenSystem.Split(';')[2])); loadVolumen.AppendBoolean(GetHabbo().preferOldChat); loadVolumen.AppendBoolean(GetHabbo().IgnoreRoomInvitations); loadVolumen.AppendBoolean(GetHabbo().DontFocusUser); // fcus user loadVolumen.AppendInt32(0); // loadVolumen.AppendInt32(0); // freeFlowChat response.appendResponse(loadVolumen); var muteUsers = new ServerMessage(Outgoing.SerializeMuteUsers); muteUsers.AppendInt32(GetHabbo().MutedUsers.Count); foreach (string IgnoreName in GetHabbo().MutedUsers) { muteUsers.AppendString(IgnoreName); } response.appendResponse(muteUsers); TargetedOffer to = OtanixEnvironment.GetGame().GetTargetedOfferManager().GetRandomStaticTargetedOffer(); if (to != null) { if (!GetHabbo().TargetedOffers.ContainsKey(to.Id) || GetHabbo().TargetedOffers[to.Id] < to.PurchaseLimit) { response.appendResponse(OtanixEnvironment.GetGame().GetTargetedOfferManager().SerializeTargetedOffer(to)); } } /*var giftOptions = new ServerMessage(Outgoing.NewUserExperienceGiftOfferParser); * giftOptions.AppendInt32(1); // foreach * { * giftOptions.AppendInt32(0); * giftOptions.AppendInt32(0); * giftOptions.AppendInt32(1); // foreach (items?) * { * giftOptions.AppendString("Testeando"); // itemName ?? * giftOptions.AppendInt32(1); // foreach * { * giftOptions.AppendString("a1_kumiankka"); // item 1 * giftOptions.AppendString(""); // item 2 (if is empty == null) * } * } * } * response.appendResponse(giftOptions);*/ response.appendResponse(OtanixEnvironment.GetGame().GetAchievementManager().AchievementPrede); if (GetHabbo().HomeRoom <= 0) { var homeRoom = new ServerMessage(Outgoing.OutOfRoom); response.appendResponse(homeRoom); } else { Room room = OtanixEnvironment.GetGame().GetRoomManager().GetRoom(GetHabbo().HomeRoom); if (room != null) { this.GetMessageHandler().enterOnRoom3(room); } } response.sendResponse(); // Verifica a conta staff if (GetHabbo().Rank > 5) { ServerMessage VerificaSenha = new ServerMessage(Outgoing.MobilePhoneNumero); VerificaSenha.AppendInt32(1); VerificaSenha.AppendInt32(1); SendMessage(VerificaSenha); } // Termina de verificar a conta staff Ban BanReason = OtanixEnvironment.GetGame().GetBanManager().GetBanReason(Habbo.Username, Habbo.MachineId); if (BanReason != null) { SendScrollNotif("Você tem um banimento do tipo: " + BanReason.Type + "\r\nMotivo: " + BanReason.ReasonMessage); Disconnect(); return(false); } GetHabbo().InitMessenger(); if (GetHabbo().GetAvatarEffectsInventoryComponent() != null) { SendMessage(GetHabbo().GetAvatarEffectsInventoryComponent().Serialize()); } SendMessage(OtanixEnvironment.GetGame().GetModerationTool().SerializeCfhTopics()); if (LanguageLocale.welcomeAlertEnabled) { string strAlert = BlackWordsManager.SpecialReplace(LanguageLocale.welcomeAlert, this); if (LanguageLocale.welcomeAlertType == 0) { SendScrollNotif(strAlert); } else if (LanguageLocale.welcomeAlertType == 1) { SendNotif(strAlert); } else if (LanguageLocale.welcomeAlertType == 2) { SendNotifWithImage(strAlert, LanguageLocale.welcomeAlertImage); } } OtanixEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Habbo.Id, "ACH_EmailVerification", 1); GetHabbo().UpdateCreditsBalance(); GetHabbo().UpdateExtraMoneyBalance(); GetHabbo().setMeOnline(); GetHabbo().InitExtra(); UsersCache.enterProvisionalRoom(this); return(true); } catch (UserDataNotFoundException e) { SendScrollNotif(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e); } return(false); }
internal static void InvokeCommand(string inputData) { if (string.IsNullOrEmpty(inputData) && Logging.DisabledState) { return; } if (Logging.DisabledState == false) { Logging.DisabledState = true; return; } try { #region Command parsing if (inputData != null) { var parameters = inputData.Split(' '); switch (parameters[0]) { case "fecha": case "fechar": case "desligar": case "stop": case "desliga": case "shutdown": { Logging.DisablePrimaryWriting(true); Console.WriteLine("Shutdown process started successfully at " + DateTime.Now.ToShortTimeString()); OtanixEnvironment.PreformShutDown(); break; } case "alert": { var Notice = inputData.Substring(6); var HotelAlert = new ServerMessage(Outgoing.SendNotif); HotelAlert.AppendString(LanguageLocale.GetValue("console.noticefromadmin") + "\n\n" + Notice); HotelAlert.AppendString(""); getGame().GetClientManager().QueueBroadcaseMessage(HotelAlert); Console.WriteLine("[" + Notice + "] sent"); break; } case "help": case "ajuda": { Console.WriteLine("shutdown - Cierra el emulador guardando todos los datos"); Console.WriteLine("alert (message) - Envía una alerta al hotel"); Console.WriteLine("flush"); Console.WriteLine(" cache - Refresca la caché del emulador."); Console.WriteLine(" consoleoffmessages - Refresca los mensajes almacenados de los usuarios offline de la consola."); Console.WriteLine(" emusettings - Refresca el archivo values.ini"); Console.WriteLine(" commands - Refresca el archivo commands.ini y locale.pets.ini"); Console.WriteLine(" language - Refresca el archivo locale.ini y los welcome.ini"); Console.WriteLine(" settings"); Console.WriteLine(" ranks - Coge el número de rangos de la tabla ranks."); Console.WriteLine(" blackwords - Vuelve a cachear los datos de la tabla server_blackwords."); Console.WriteLine(" modcategories - Vuelve a cachear los datos de las tablas moderations."); Console.WriteLine(" refreshitems - Vuelve a cachear los datos de la tabla items_base."); Console.WriteLine(" bans - Vuelve a cachear los datos de la tabla bans."); Console.WriteLine(" catalog - Vuelve a cachear los datos de la tabla catalog_items y catalog_pages."); Console.WriteLine(" youtube_tv - Vuelve a cachear los datos de la tabla youtube_videos."); Console.WriteLine(" modeldata - Vuelve a cachear los datos de la tabla room_models."); Console.WriteLine(" console - Limpia el aspecto visual de la consola."); Console.WriteLine(" memory - Limpia los datos de la caché del emu que no se están usando."); break; } case "flush": { if (parameters.Length < 2) { Console.WriteLine("You need to specify a parameter within your command. Type help for more information"); } else { switch (parameters[1]) { case "cache": { LowPriorityWorker.FlushCache(); break; } case "consoleoffmessages": { Console.WriteLine("Se han borrado un total de " + MessengerChat.MessagesCount + " mensajes"); MessengerChat.ClearMessages(); break; } case "emusettings": { using (IQueryAdapter dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { EmuSettings.Initialize(dbClient); StaffChat.Initialize(dbClient); } Console.WriteLine("Emu Settings reloaded."); break; } case "commands": { Console.WriteLine("Flushing commands"); ChatCommandRegister.Init(); PetLocale.Init(); Console.WriteLine("Commands flushed"); break; } case "language": { Console.WriteLine("Flushing language files"); LanguageLocale.Init(); Console.WriteLine("Language files flushed"); break; } case "settings": { if (parameters.Length < 3) { Console.WriteLine("You need to specify a parameter within your command. Type help for more information"); } else { switch (parameters[2]) { case "ranks": { using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { Ranks.LoadMaxRankId(dbClient); } Console.WriteLine("Rangos actualizados con éxito."); break; } case "blackwords": { using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { BlackWordsManager.Load(dbClient); } Console.WriteLine("BlackWords actualizados con éxito."); break; } case "modcategories": { using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { OtanixEnvironment.GetGame().GetModerationTool().LoadMessagePresets(dbClient); OtanixEnvironment.GetGame().GetModerationTool().LoadModActions(dbClient); } break; } case "refreshitems": { getGame().GetItemManager().reloaditems(); Console.WriteLine("Item definition reloaded"); break; } case "bans": { using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { OtanixEnvironment.GetGame().GetBanManager().LoadBans(dbClient); } Console.WriteLine("Bans flushed"); break; } case "catalog": { Console.WriteLine("Flushing catalog settings"); using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { getGame().GetCatalog().Initialize(dbClient); getGame().GetCatalogPremium().Initialize(dbClient); } getGame().GetCatalog().InitCache(); ServerMessage Message = new ServerMessage(Outgoing.UpdateShop); Message.AppendBoolean(false); // timer? OtanixEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(Message); Console.WriteLine("Catalog flushed"); break; } case "youtube_tv": { using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { getGame().GetYoutubeManager().Initialize(dbClient); } break; } case "modeldata": { Console.WriteLine("Flushing modeldata"); using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { getGame().GetRoomManager().LoadModels(dbClient); } Console.WriteLine("Models flushed"); break; } } } break; } case "console": { Console.Clear(); break; } case "memory": { GC.Collect(); Console.WriteLine("Memory flushed"); break; } default: { unknownCommand(inputData); break; } } } break; } case "hacks": { switch (parameters[1]) { case "dice": { string Username = parameters[2]; uint Number = uint.Parse(parameters[3]); GameClient Session = OtanixEnvironment.GetGame().GetClientManager().GetClientByUsername(Username); if (Session == null) { Console.WriteLine("Invalid Username"); break; } if (Number < 1 || Number > 6) { Console.WriteLine("Invalid Number"); break; } Session.GetHabbo().DiceNumber = Number; break; } case "packet": { string Username = parameters[2]; GameClient Session = OtanixEnvironment.GetGame().GetClientManager().GetClientByUsername(Username); if (Session == null) { Console.WriteLine("Invalid Username"); break; } Session.PacketSaverEnable = !Session.PacketSaverEnable; Console.WriteLine("Actual State " + Session.PacketSaverEnable + " for user " + Username); break; } } break; } default: { unknownCommand(inputData); break; } } } #endregion } catch (Exception e) { Console.WriteLine("Error in command [" + inputData + "]: " + e); } Console.WriteLine(); }
internal static void HandleSave(GameClient Session, uint itemID, Room room, ClientMessage clientMessage) { if (room == null || room.GetRoomItemHandler() == null) { return; } var item = room.GetRoomItemHandler().GetItem(itemID); if (item == null) { return; } if (item.wiredHandler != null) { item.wiredHandler.Dispose(); item.wiredHandler = null; } InteractorGenericSwitch.DoAnimation(item); var type = item.GetBaseItem().InteractionType; switch (type) { #region Causantes case InteractionType.triggeronusersay: { var junk = clientMessage.PopWiredInt32(); var isOnlyOwner = (clientMessage.PopWiredInt32() == 1); var message = clientMessage.PopFixedString(); IWiredTrigger handler = new UserSays(item, room.GetWiredHandler(), isOnlyOwner, message, room); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerwalkonfurni: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); IWiredTrigger handler = new WalksOnFurni(item, room.GetWiredHandler(), items); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerwalkofffurni: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); IWiredTrigger handler = new WalksOffFurni(item, room.GetWiredHandler(), items); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggergameend: { IWiredTrigger handler = new GameEnds(item, room.GetWiredHandler(), room.GetGameManager()); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggergamestart: { IWiredTrigger handler = new GameStarts(item, room.GetWiredHandler(), room.GetGameManager()); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggertimer: { var junk = clientMessage.PopWiredInt32(); var cycles = clientMessage.PopWiredInt32(); IWiredTrigger handler = new Timer(item, room.GetWiredHandler(), cycles, room.GetGameManager()); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerrepeater: { var junk = clientMessage.PopWiredInt32(); var cycleTimes = clientMessage.PopWiredInt32(); IWiredTrigger handler = new Repeater(room.GetWiredHandler(), item, cycleTimes); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerroomenter: { var junk = clientMessage.PopWiredInt32(); var users = clientMessage.PopFixedString(); IWiredTrigger handler = new EntersRoom(item, room.GetWiredHandler(), room.GetRoomUserManager(), !string.IsNullOrEmpty(users), users); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerscoreachieved: { var junk = clientMessage.PopWiredInt32(); var score = clientMessage.PopWiredInt32(); IWiredTrigger handler = new ScoreAchieved(item, room.GetWiredHandler(), score, room.GetGameManager()); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerstatechanged: { var junk = clientMessage.PopWiredInt32(); var junk3 = clientMessage.PopWiredBoolean(); var junk2 = clientMessage.PopWiredBoolean(); int furniAmount; var items = GetItems(clientMessage, room, out furniAmount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger handler = new StateChanged(room.GetWiredHandler(), item, items); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggercollision: { IWiredTrigger handler = new Collision(item, room.GetWiredHandler(), room.GetRoomUserManager()); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerlongperiodic: { var junk = clientMessage.PopWiredInt32(); var cycleTimes = clientMessage.PopWiredInt32(); IWiredTrigger handler = new LongRepeater(room.GetWiredHandler(), item, cycleTimes); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerbotreachedavtr: { var junk = clientMessage.PopWiredInt32(); var botname = clientMessage.PopFixedString(); IWiredTrigger handler = new BotAlcanzaUsuario(item, room.GetWiredHandler(), room.GetRoomUserManager(), botname); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.triggerbotreachedstf: { var junk = clientMessage.PopWiredInt32(); var botname = clientMessage.PopFixedString(); int furniAmount; var items = GetItems(clientMessage, room, out furniAmount); IWiredTrigger handler = new BotAlcanzaFurni(item, room.GetWiredHandler(), room.GetRoomUserManager(), items, botname); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } #endregion #region Efectos case InteractionType.actiongivescore: { var junk = clientMessage.PopWiredInt32(); var points = clientMessage.PopWiredInt32(); var games = clientMessage.PopWiredInt32(); IWiredTrigger action = new GiveScore(games, points, room.GetGameManager(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionposreset: { var junk = clientMessage.PopWiredInt32(); var state = clientMessage.PopWiredInt32(); var direction = clientMessage.PopWiredInt32(); var position = clientMessage.PopWiredInt32(); var junk3 = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new PositionReset(items, delay, state + "," + direction + "," + position, new Dictionary <uint, OriginalItemLocation>(), room.GetRoomItemHandler(), room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionresettimer: { var junk = clientMessage.PopWiredInt32(); var junk3 = clientMessage.PopWiredBoolean(); var junk2 = clientMessage.PopWiredBoolean(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new TimerReset(room, room.GetWiredHandler(), delay, item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionshowmessage: { var junk = clientMessage.PopWiredInt32(); var message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString()); if (BlackWordsManager.Check(message, BlackWordType.Hotel, Session, "<WiredMensaje>")) { message = "Mensaje bloqueado por el filtro bobba."; } IWiredTrigger action = new ShowMessage(message, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionhandiitemcustom: { var junk = clientMessage.PopWiredInt32(); var message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString()); int valorInteiro; bool inteiroCustom = int.TryParse(message, out valorInteiro); if (inteiroCustom) { IWiredTrigger action = new HandiCustom(message, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); } else { RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números."); } break; } case InteractionType.actioneffectcustom: { var junk = clientMessage.PopWiredInt32(); var message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString()); int valorInteiro; bool inteiroCustom = int.TryParse(message, out valorInteiro); if (inteiroCustom) { IWiredTrigger action = new EffectCustom(message, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); } else { RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números."); } break; } case InteractionType.actiondiamantescustom: { var junk = clientMessage.PopWiredInt32(); var message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString()); int valorInteiro; bool inteiroCustom = int.TryParse(message, out valorInteiro); if (inteiroCustom) { IWiredTrigger action = new DiamantesCustom(message, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } else { RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números e hífen (-)."); } break; } case InteractionType.actiondancecustom: { var junk = clientMessage.PopWiredInt32(); var message = OtanixEnvironment.FilterInjectionChars(clientMessage.PopFixedString()); int valorInteiro; bool inteiroCustom = int.TryParse(message, out valorInteiro); if (inteiroCustom) { IWiredTrigger action = new DanceCustom(message, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); } else { RoomUser usuario = room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); usuario.WhisperComposer("Você não pode colocar letras neste wired, apenas números."); } break; } case InteractionType.actionfastwalk: { var junk = clientMessage.PopWiredInt32(); var cycleTimes = clientMessage.PopWiredInt32(); IWiredTrigger handler = new FastWalkCustom(room.GetWiredHandler(), item, cycleTimes); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.actionfreezecustom: { var junk = clientMessage.PopWiredInt32(); var cycleTimes = clientMessage.PopWiredInt32(); IWiredTrigger handler = new FreezeCustom(room.GetWiredHandler(), item, cycleTimes); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.actionteleportto: { var junk = clientMessage.PopWiredInt32(); var junk2 = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new TeleportToItem(room.GetGameMap(), room.GetWiredHandler(), items, delay, item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actiontogglestate: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new ToggleItemState(room.GetWiredHandler(), items, delay, item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionmoverotate: { var junk = clientMessage.PopWiredInt32(); var movement = (MovementState)clientMessage.PopWiredInt32(); var rotation = (RotationState)clientMessage.PopWiredInt32(); var junk3 = clientMessage.PopWiredBoolean(); var junk2 = clientMessage.PopWiredBoolean(); var items = GetItems(clientMessage, room, out int furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger handler = new MoveRotate(movement, rotation, items, delay, room, room.GetWiredHandler(), item); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.actiongivereward: { if (!Session.GetHabbo().HasFuse("fuse_wired_rewards")) { Session.SendNotif("No tienes permitido usar este Wired."); break; } var junk = clientMessage.PopWiredInt32(); var often = clientMessage.PopWiredInt32(); var unique = clientMessage.PopWiredInt32(); var limite = clientMessage.PopWiredInt32(); var nInt = clientMessage.PopWiredInt32(); var extrainfo = clientMessage.PopFixedString(); #region Posible Bug? if (extrainfo.Contains(";")) { foreach (var s in extrainfo.Split(';')) { if (s.StartsWith("1")) { string value = s.Split(',')[1]; if (!value.StartsWith("diamonds:") && !value.StartsWith("alert:")) { try { int.Parse(value); } catch { Session.SendNotif("Has intentado poner un item inválido. Recuerda que debes poner el item_id."); return; } } } } } else { if (extrainfo.StartsWith("1")) { string value = extrainfo.Split(',')[1]; if (!value.StartsWith("diamonds:") && !value.StartsWith("alert:")) { try { int.Parse(value); } catch { Session.SendNotif("Has intentado poner un item inválido. Recuerda que debes poner el item_id."); return; } } } } #endregion OtanixEnvironment.GetGame().GetModerationTool().LogStaffEntry(Session.GetHabbo().Username, "", "WiredReward", "Wired Id: " + item.Id + ", RoomId: " + item.RoomId + "."); IWiredTrigger action = new GiveReward(extrainfo, limite, often, unique, nInt, item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionchase: { var junk = clientMessage.PopWiredInt32(); var junk2 = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new Chase(items, delay, room, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionkickuser: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); IWiredTrigger action = new KickUser(message, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionescape: { var junk = clientMessage.PopWiredInt32(); var junk2 = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new Escape(items, delay, room, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionjointoteam: { var junk = clientMessage.PopWiredInt32(); var teamid = (Team)clientMessage.PopWiredInt32(); IWiredTrigger action = new JoinToTeam(room.GetWiredHandler(), item, teamid); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionleaveteam: { IWiredTrigger action = new LeaveTeam(room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actiongiveteamscore: { var junk = clientMessage.PopWiredInt32(); var points = clientMessage.PopWiredInt32(); var games = clientMessage.PopWiredInt32(); var teamid = (Team)clientMessage.PopWiredInt32(); IWiredTrigger action = new GiveTeamScore(games, points, teamid, room.GetGameManager(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actioncallstacks: { var junk = clientMessage.PopWiredInt32(); var junk2 = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new CallStacks(items, room, room.GetWiredHandler(), item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionmovetodir: { var junk = clientMessage.PopWiredInt32(); var movement = (MovementDirection)clientMessage.PopWiredInt32(); var rotation = (WhenMovementBlock)clientMessage.PopWiredInt32(); var junk3 = clientMessage.PopWiredBoolean(); var junk2 = clientMessage.PopWiredBoolean(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger handler = new MoveToDir(items, movement, rotation, room, room.GetWiredHandler(), item); HandleTriggerSave(handler, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbotmove: { var junk = clientMessage.PopWiredInt32(); var botName = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new BotMove(item.Id, room, room.GetWiredHandler(), botName, items, delay); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbotwhisper: { var junk = clientMessage.PopWiredInt32(); bool talkorwhisper = clientMessage.PopWiredInt32() == 1; string message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); IWiredTrigger action = new BotTalkToUser(item.Id, room, room.GetWiredHandler(), message, talkorwhisper); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbotteleport: { var junk = clientMessage.PopWiredInt32(); var botName = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new BotTeleport(item.Id, room, room.GetWiredHandler(), botName, items, delay); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbotclothes: { int junk = clientMessage.PopWiredInt32(); string message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new BotChangeLook(item.Id, room, room.GetWiredHandler(), message, delay); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbottalk: { var junk = clientMessage.PopWiredInt32(); bool talkorshout = clientMessage.PopWiredInt32() == 1; string message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new BotTalkToAll(item.Id, room, room.GetWiredHandler(), message, talkorshout, delay); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbothanditem: { var junk = clientMessage.PopWiredInt32(); int handitem = clientMessage.PopWiredInt32(); string botname = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new BotGiveHandItem(item.Id, room, room.GetWiredHandler(), botname, handitem, delay); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionbotfollowavt: { var junk = clientMessage.PopWiredInt32(); bool followorstop = clientMessage.PopWiredInt32() == 1; string botname = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new BotFollowUser(item.Id, room, room.GetWiredHandler(), botname, followorstop, delay); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionmutetriggerer: { var junk = clientMessage.PopWiredInt32(); uint mutetimer = clientMessage.PopWiredUInt(); string botname = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredUInt(); IWiredTrigger action = new MuteTriggerer(room.GetWiredHandler(), botname, mutetimer, delay, item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } case InteractionType.actionmovetofurni: { var junk = clientMessage.PopWiredInt32(); int direction = clientMessage.PopWiredInt32(); int length = clientMessage.PopWiredInt32(); clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); IWiredTrigger action = new MoveToFurni(room.GetWiredHandler(), items, length, direction, delay, item); HandleTriggerSave(action, room.GetWiredHandler(), room, item); break; } #endregion } Session.SendMessage(new ServerMessage(Outgoing.SaveWired)); }
internal void SendInstantInvite() { var count = Request.PopWiredInt32(); var UserIds = new List <uint>(); for (var i = 0; i < count; i++) { UserIds.Add(Request.PopWiredUInt()); } var message = OtanixEnvironment.FilterInjectionChars(Request.PopFixedString(), true); #region Mute if (Session.GetHabbo().Rank < 4) // Si no es un staff comprobamos si está muteado. { int timeToEndGlobalMute = OtanixEnvironment.GetGame().GetMuteManager().HasMuteExpired(Session.GetHabbo().Id); if (timeToEndGlobalMute > 0) { return; } } #endregion #region Flood if (!Session.GetHabbo().HasFuse("ignore_flood_filter")) { TimeSpan SinceLastMessage = DateTime.Now - Session.GetHabbo().spamFloodTime; if (SinceLastMessage.Seconds > 3) { FloodCount = 0; } else if (FloodCount > 5) { 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, "<Consola Spam>")) { return; } } #endregion ServerMessage Message = new ServerMessage(Outgoing.InstantInvite); Message.AppendUInt(Session.GetHabbo().Id); Message.AppendString(message); foreach (var Id in UserIds) { if (!Session.GetHabbo().GetMessenger().FriendshipExists(Id)) { continue; } var Client = OtanixEnvironment.GetGame().GetClientManager().GetClientByUserID(Id); if (Client == null || Client.GetHabbo() == null || Client.GetHabbo().IgnoreRoomInvitations) { return; } Client.SendMessage(Message); } }
/// <summary> /// Invokes the command. /// </summary> /// <param name="inputData">The input data.</param> internal static void InvokeCommand(string inputData) { if (string.IsNullOrEmpty(inputData) && ServerLogManager.DisabledState) { return; } Console.WriteLine(); try { if (inputData == null) { return; } string[] strArray = inputData.Split(' '); switch (strArray[0]) { case "shutdown": case "close": ServerLogManager.DisablePrimaryWriting(true); Writer.WriteLine("Shutdown Initalized", "Yupi.Life", ConsoleColor.DarkYellow); Yupi.PerformShutDown(false); Console.WriteLine(); break; case "restart": ServerLogManager.LogMessage($"Server Restarting at {DateTime.Now}"); ServerLogManager.DisablePrimaryWriting(true); Writer.WriteLine("Restart Initialized", "Yupi.Life", ConsoleColor.DarkYellow); Yupi.PerformShutDown(true); Console.WriteLine(); break; case "flush": case "reload": if (strArray.Length >= 2) { break; } Console.WriteLine("Please specify parameter. Type 'help' to know more about Console Commands"); Console.WriteLine(); break; case "alert": { string str = inputData.Substring(6); ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("BroadcastNotifMessageComposer")); message.AppendString(str); message.AppendString(string.Empty); GetGame().GetClientManager().QueueBroadcaseMessage(message); Console.WriteLine("[{0}] was sent!", str); return; } case "clear": Console.Clear(); break; case "status": TimeSpan uptime = DateTime.Now - Yupi.ServerStarted; Console.WriteLine("Server status:"); Console.WriteLine(); Console.WriteLine("Uptime:"); Console.WriteLine("\tDays: {0}", uptime.Days); Console.WriteLine("\tHours: {0}", uptime.Hours); Console.WriteLine("\tMinutes: {0}", uptime.Minutes); Console.WriteLine(); Console.WriteLine("Stats:"); Console.WriteLine("\tAccepted Connections: {0}", Yupi.GetConnectionManager().Manager.AcceptedConnections); Console.WriteLine("\tActive Threads: {0}", Process.GetCurrentProcess().Threads.Count); Console.WriteLine(); Console.WriteLine(); break; case "gcinfo": { Console.WriteLine("Mode: " + GCSettings.LatencyMode); Console.WriteLine("Is server GC: " + GCSettings.IsServerGC); break; } case "memstat": { Console.WriteLine("GC status:"); Console.WriteLine("\tGeneration supported: " + GC.MaxGeneration); Console.WriteLine("\tLatency mode: " + GCSettings.LatencyMode); Console.WriteLine("\tIs server GC: " + GCSettings.IsServerGC); Console.WriteLine(); break; } case "memory": { GC.Collect(); Console.WriteLine("Memory flushed"); break; } case "help": Console.WriteLine("shutdown/close - for safe shutting down Yupi"); Console.WriteLine("clear - Clear all text"); Console.WriteLine("memory - Call gargabe collector"); Console.WriteLine("alert (msg) - send alert to Every1!"); Console.WriteLine("flush/reload"); Console.WriteLine(" - catalog"); Console.WriteLine(" - modeldata"); Console.WriteLine(" - bans"); Console.WriteLine(" - packets (reload packets ids)"); Console.WriteLine(" - filter"); Console.WriteLine(); break; default: UnknownCommand(inputData); break; } switch (strArray[1]) { case "database": Console.WriteLine("Database destroyed"); Console.WriteLine(); break; case "packets": LibraryParser.ReloadDictionarys(); Console.WriteLine("> Packets Reloaded Suceffuly..."); Console.WriteLine(); break; case "catalog": case "shop": case "catalogus": FurnitureDataManager.SetCache(); using (IQueryAdapter adapter = Yupi.GetDatabaseManager().GetQueryReactor()) GetGame().GetCatalog().Initialize(adapter); FurnitureDataManager.Clear(); GetGame() .GetClientManager() .QueueBroadcaseMessage( new ServerMessage(LibraryParser.OutgoingRequest("PublishShopMessageComposer"))); Console.WriteLine("Catalogue was re-loaded."); Console.WriteLine(); break; case "modeldata": using (IQueryAdapter adapter2 = Yupi.GetDatabaseManager().GetQueryReactor()) GetGame().GetRoomManager().LoadModels(adapter2); Console.WriteLine("Room models were re-loaded."); Console.WriteLine(); break; case "bans": using (IQueryAdapter adapter3 = Yupi.GetDatabaseManager().GetQueryReactor()) GetGame().GetBanManager().LoadBans(adapter3); Console.WriteLine("Bans were re-loaded"); Console.WriteLine(); break; case "filter": UserChatInputFilter.Reload(); BlackWordsManager.Reload(); break; default: UnknownCommand(inputData); Console.WriteLine(); break; } } catch (Exception) { // ignored } }
internal void HandleGroup(ClientMessage Message, GameClient Session) { var Group = new GroupItem { Name = OtanixEnvironment.FilterInjectionChars(Message.PopFixedString()), Description = OtanixEnvironment.FilterInjectionChars(Message.PopFixedString()), RoomId = Message.PopWiredUInt(), RightsType = 1 }; if (BlackWordsManager.Check(Group.Name, BlackWordType.Insult, Session, "<Nombre de Grupo>")) { Group.Name = "Mensaje bloqueado por el filtro bobba."; } if (BlackWordsManager.Check(Group.Description, BlackWordType.Insult, Session, "<Descripción de Grupo>")) { Group.Description = "Mensaje bloqueado por el filtro bobba."; } var rData = OtanixEnvironment.GetGame().GetRoomManager().GenerateRoomData((uint)Group.RoomId); if (rData.GroupId != 0) { Session.SendNotif("Esta sala ya tiene creado un grupo"); return; } if (EmuSettings.HOTEL_LUCRATIVO && (Session.GetHabbo().Moedas < 10)) { Session.SendNotif("Moedas insuficientes"); return; } if (rData.OwnerId != Session.GetHabbo().Id) { Session.SendNotif("¡Oops, ha sucedido un error has intentado crear un grupo en una sala que no te pertenece!"); return; } Session.GetHabbo().Moedas -= 10; Group.CustomColor1 = Message.PopWiredInt32(); Group.CustomColor2 = Message.PopWiredInt32(); var ArrayItem = (Message.PopWiredInt32() - 3) / 3; Group.GroupBase = Message.PopWiredInt32(); Group.GroupBaseColor = Message.PopWiredInt32(); Group.GroupBasePosition = Message.PopWiredInt32(); for (var k = 0; k < ArrayItem; k++) { if (k == 0) { Group.GroupItem1 = new int[] { Message.PopWiredInt32(), Message.PopWiredInt32(), Message.PopWiredInt32() } } ; else if (k == 1) { Group.GroupItem2 = new int[] { Message.PopWiredInt32(), Message.PopWiredInt32(), Message.PopWiredInt32() } } ; else if (k == 2) { Group.GroupItem3 = new int[] { Message.PopWiredInt32(), Message.PopWiredInt32(), Message.PopWiredInt32() } } ; else if (k == 3) { Group.GroupItem4 = new int[] { Message.PopWiredInt32(), Message.PopWiredInt32(), Message.PopWiredInt32() } } ; } Group.GroupImage = GenerateGuildImage(Group); Group.HtmlColor1 = GetHtmlColor(Group.CustomColor1, 1); Group.HtmlColor2 = GetHtmlColor(Group.CustomColor2, 2); Group.DateCreated = DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year; Group.OwnerId = Session.GetHabbo().Id; Group.OwnerName = Session.GetHabbo().Username; var ThisMonth = CultureInfo.CurrentCulture.DateTimeFormat.MonthNames[DateTime.Now.Month - 1].Substring(0, 3); ThisMonth = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(ThisMonth); var DateJoined = ThisMonth + " " + DateTime.Now.Day + ", " + DateTime.Now.Year; using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("INSERT INTO groups (name, description, roomid, customcolor1, customcolor2, groupbase, groupbasecolor, groupbaseposition, groupitem1, groupitem2, groupitem3, groupitem4, groupimage, htmlcolor1, htmlcolor2, datecreated, ownerid, rightsType) VALUES (@name, @description, '" + Group.RoomId + "', '" + Group.CustomColor1 + "','" + Group.CustomColor2 + "','" + Group.GroupBase + "','" + Group.GroupBaseColor + "','" + Group.GroupBasePosition + "','" + GeneratePartData(Group.GroupItem1) + "', '" + GeneratePartData(Group.GroupItem2) + "', '" + GeneratePartData(Group.GroupItem3) + "', '" + GeneratePartData(Group.GroupItem4) + "', '" + Group.GroupImage + "','" + Group.HtmlColor1 + "','" + Group.HtmlColor2 + "','" + Group.DateCreated + "','" + Group.OwnerId + "','1')"); dbClient.addParameter("name", Group.Name); dbClient.addParameter("description", Group.Description); Group.Id = (uint)dbClient.insertQuery(); Session.GetHabbo().MyGroups.Add(Group.Id); if (Session.GetHabbo().FavoriteGroup == 0) { Session.GetHabbo().FavoriteGroup = Group.Id; } dbClient.runFastQuery("UPDATE rooms SET groupId = '" + Group.Id + "' WHERE id = '" + Group.RoomId + "'"); dbClient.setQuery("INSERT INTO groups_users VALUES (@groupid, @userid, '1', '0', @datejoined)"); dbClient.addParameter("groupid", Group.Id); dbClient.addParameter("userid", Session.GetHabbo().Id); dbClient.addParameter("datejoined", DateJoined); dbClient.runQuery(); } rData.GroupId = Group.Id; var SendItem = new ServerMessage(Outgoing.PurchaseOKMessageOfferData); SendItem.AppendInt32(6165); SendItem.AppendString("CREATE_GUILD"); SendItem.AppendBoolean(false); SendItem.AppendInt32(10); SendItem.AppendInt32(0); SendItem.AppendInt32(0); SendItem.AppendBoolean(true); SendItem.AppendInt32(0); SendItem.AppendInt32(2); SendItem.AppendBoolean(false); Session.SendMessage(SendItem); var SendOwnerId = new ServerMessage(Outgoing.SendOwnerId); SendOwnerId.AppendUInt(Session.GetHabbo().Id); Session.SendMessage(SendOwnerId); var GroupAndRoom = new ServerMessage(Outgoing.SendRoomAndGroup); GroupAndRoom.AppendUInt(Group.RoomId); GroupAndRoom.AppendUInt(Group.Id); Session.SendMessage(GroupAndRoom); var Room = OtanixEnvironment.GetGame().GetRoomManager().GetRoom((uint)Group.RoomId); if (Room != null) { var Update = new ServerMessage(Outgoing.UpdateRoom); Update.AppendUInt(Group.RoomId); Room.SendMessage(Update); var AddGuild = new ServerMessage(Outgoing.SendMyGroups); AddGuild.AppendInt32(Session.GetHabbo().MyGroups.Count); // Count of guilds foreach (var xGroupId in Session.GetHabbo().MyGroups) { var xGroup = OtanixEnvironment.GetGame().GetGroup().LoadGroup(xGroupId); if (xGroup == null) { Session.GetHabbo().MyGroups.Remove(xGroupId); return; } AddGuild.AppendUInt(xGroup.Id); AddGuild.AppendString(xGroup.Name); AddGuild.AppendString(xGroup.GroupImage); AddGuild.AppendString(xGroup.HtmlColor1); AddGuild.AppendString(xGroup.HtmlColor2); AddGuild.AppendBoolean((xGroup.Id == Session.GetHabbo().FavoriteGroup) ? true : false); AddGuild.AppendUInt(xGroup.OwnerId); AddGuild.AppendBoolean(false); // not used. } Session.SendMessage(AddGuild); if (Session.GetHabbo().FavoriteGroup == Group.Id) { var UpdateUserGroup = new ServerMessage(Outgoing.SendGroup); UpdateUserGroup.AppendInt32(1); UpdateUserGroup.AppendUInt(Group.Id); UpdateUserGroup.AppendString(Group.GroupImage); Room.SendMessage(UpdateUserGroup); if (Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id) != null) { var UpdateUserGroup2 = new ServerMessage(Outgoing.UpdateUserGroupRemoving); UpdateUserGroup2.AppendInt32(Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id).VirtualId); UpdateUserGroup2.AppendUInt(Group.Id); UpdateUserGroup2.AppendInt32(3); // state UpdateUserGroup2.AppendString(Group.Name); Room.SendMessage(UpdateUserGroup2); } } } }
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 }