protected Date GetCreated(LibraryParser parser) { using (var stream = Open()) { Date created; using (var reader = parser.Open(stream, out created)) return created; } }
/// <summary> /// Completes the user talent. /// </summary> /// <param name="Session">The session.</param> /// <param name="Talent">The talent.</param> internal void CompleteUserTalent(GameClient Session, Talent Talent) { if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentTalentLevel < Talent.Level || Session.GetHabbo().Talents.ContainsKey(Talent.Id)) { return; } if (!this.LevelIsCompleted(Session, Talent.Type, Talent.Level)) { return; } if (!string.IsNullOrEmpty(Talent.Prize) && Talent.PrizeBaseItem > 0u) { Item item = Plus.GetGame().GetItemManager().GetItem(Talent.PrizeBaseItem); Plus.GetGame().GetCatalog().DeliverItems(Session, item, 1, "", 0, 0, ""); } var value = new UserTalent(Talent.Id, 1); Session.GetHabbo().Talents.Add(Talent.Id, value); using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor()) { queryReactor.RunFastQuery(string.Concat(new object[] { "REPLACE INTO users_talents VALUES (", Session.GetHabbo().Id, ", ", Talent.Id, ", ", 1, ");" })); } var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("TalentLevelUpMessageComposer")); serverMessage.AppendString(Talent.Type); serverMessage.AppendInteger(Talent.Level); serverMessage.AppendInteger(0); if (Talent.Type == "citizenship" && Talent.Level == 4) { serverMessage.AppendInteger(2); serverMessage.AppendString("HABBO_CLUB_VIP_7_DAYS"); serverMessage.AppendInteger(7); serverMessage.AppendString(Talent.Prize); serverMessage.AppendInteger(0); } else { serverMessage.AppendInteger(1); serverMessage.AppendString(Talent.Prize); serverMessage.AppendInteger(0); } Session.SendMessage(serverMessage); if (Talent.Type == "citizenship") { if (Talent.Level == 3) { Plus.GetGame().GetAchievementManager().ProgressUserAchievement(Session, "ACH_Citizenship", 1); } else if (Talent.Level == 4) { Session.GetHabbo().GetSubscriptionManager().AddSubscription(7); using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor()) { queryReactor.RunFastQuery(string.Concat(new object[] { "UPDATE users SET talent_status = 'helper' WHERE id = ", Session.GetHabbo().Id, ";" })); } } } }
internal void BanzaiEnd() { IsBanzaiActive = false; _room.GetGameManager().StopGame(); _floorMap = null; _room.GetWiredHandler().ExecuteWired(Interaction.TriggerGameEnd); Team winningTeam = _room.GetGameManager().GetWinningTeam(); _room.GetGameManager().UnlockGates(); foreach (RoomItem roomItem in BanzaiTiles.Values) { if (roomItem.Team == winningTeam) { roomItem.InteractionCount = 0; roomItem.InteractionCountHelper = 0; roomItem.UpdateNeeded = true; } else if (roomItem.Team == Team.None) { roomItem.ExtraData = "0"; roomItem.UpdateState(); } } if (winningTeam == Team.None) { return; } foreach (RoomUser avatar in _room.GetRoomUserManager().GetRoomUsers()) { if (avatar.Team != Team.None && Yupi.GetUnixTimeStamp() - _timestarted > 5.0) { Yupi.GetGame() .GetAchievementManager() .ProgressUserAchievement(avatar.GetClient(), "ACH_BattleBallTilesLocked", avatar.LockedTilesCount); Yupi.GetGame() .GetAchievementManager() .ProgressUserAchievement(avatar.GetClient(), "ACH_BattleBallPlayer", 1); } if ((winningTeam == Team.Red && avatar.CurrentEffect != 33) || (winningTeam == Team.Green && avatar.CurrentEffect != 34) || (winningTeam == Team.Blue && avatar.CurrentEffect != 35) || (winningTeam == Team.Yellow && avatar.CurrentEffect != 36)) { continue; } //todo: clean this up not sure yet. if (Yupi.GetUnixTimeStamp() - _timestarted > 5.0) { Yupi.GetGame() .GetAchievementManager() .ProgressUserAchievement(avatar.GetClient(), "ACH_BattleBallWinner", 1); } ServerMessage waveAtWin = new ServerMessage(LibraryParser.OutgoingRequest("RoomUserActionMessageComposer")); waveAtWin.AppendInteger(avatar.VirtualId); waveAtWin.AppendInteger(1); _room.SendMessage(waveAtWin); } _field.Destroy(); }
/// <summary> /// Main Void, Initializes the Emulator. /// </summary> internal static void Initialize() { #region Precheck Console.Title = "CityRP está iniciando.."; ServerStarted = DateTime.Now; _defaultEncoding = Encoding.Default; #endregion Precheck #region Database Connection CultureInfo = CultureInfo.CreateSpecificCulture("en-GB"); try { ConfigurationData.Load(Path.Combine(Application.StartupPath, "Settings/main.ini"), false); RoleplayData.Load(Path.Combine(Application.StartupPath, "Settings/Roleplay/settings.ini"), true); DatabaseConnectionType = ConfigurationData.Data["db.type"]; var mySqlConnectionStringBuilder = new MySqlConnectionStringBuilder { Server = (ConfigurationData.Data["db.hostname"]), Port = (uint.Parse(ConfigurationData.Data["db.port"])), UserID = (ConfigurationData.Data["db.username"]), Password = (ConfigurationData.Data["db.password"]), Database = (ConfigurationData.Data["db.name"]), MinimumPoolSize = (uint.Parse(ConfigurationData.Data["db.pool.minsize"])), MaximumPoolSize = (uint.Parse(ConfigurationData.Data["db.pool.maxsize"])), Pooling = (true), AllowZeroDateTime = (true), ConvertZeroDateTime = (true), DefaultCommandTimeout = (300), ConnectionTimeout = (10) }; var mySqlConnectionStringBuilder2 = mySqlConnectionStringBuilder; Manager = new DatabaseManager(mySqlConnectionStringBuilder2.ToString(), DatabaseConnectionType); using (var queryReactor = GetDatabaseManager().GetQueryReactor()) { ConfigData = new ConfigData(queryReactor); PetCommandHandler.Init(queryReactor); PetLocale.Init(queryReactor); OfflineMessages = new Dictionary <uint, List <OfflineMessage> >(); OfflineMessage.InitOfflineMessages(queryReactor); } #endregion Database Connection #region Packets Registering ConsoleTimer = (int.Parse(ConfigurationData.Data["console.clear.time"])); ConsoleTimerOn = (bool.Parse(ConfigurationData.Data["console.clear.enabled"])); FriendRequestLimit = ((uint)int.Parse(ConfigurationData.Data["client.maxrequests"])); LibraryParser.Incoming = new Dictionary <int, LibraryParser.StaticRequestHandler>(); LibraryParser.Library = new Dictionary <string, string>(); LibraryParser.Outgoing = new Dictionary <string, int>(); LibraryParser.Config = new Dictionary <string, string>(); LibraryParser.RegisterLibrary(); LibraryParser.RegisterOutgoing(); LibraryParser.RegisterIncoming(); LibraryParser.RegisterConfig(); #endregion Packets Registering #region Game Initalizer ExtraSettings.RunExtraSettings(); CrossDomainPolicy.Set(); _game = new Game(int.Parse(ConfigurationData.Data["game.tcp.conlimit"])); _game.GetNavigator().LoadNewPublicRooms(); _game.ContinueLoading(); #endregion Game Initalizer #region Languages Parser ServerLanguage = (Convert.ToString(ConfigurationData.Data["system.lang"])); _languages = new Languages(ServerLanguage); #endregion Languages Parser #region Environment SetUp if (ConsoleTimerOn) { Out.WriteLine("Console Clear Timer is enable with " + ConsoleTimer + " seconds."); } _connectionManager = new ConnectionHandling(int.Parse(ConfigurationData.Data["game.tcp.port"]), int.Parse(ConfigurationData.Data["game.tcp.conlimit"]), int.Parse(ConfigurationData.Data["game.tcp.conperip"]), ConfigurationData.Data["game.tcp.enablenagles"].ToLower() == "true"); if (LibraryParser.Config["Crypto.Enabled"] == "true") { Handler.Initialize(LibraryParser.Config["Crypto.RSA.N"], LibraryParser.Config["Crypto.RSA.D"], LibraryParser.Config["Crypto.RSA.E"]); } _connectionManager.init(); LibraryParser.Initialize(); #endregion Environment SetUp #region Tasks and MusSystem if (ConsoleTimerOn) { Timer = new Timer { Interval = ConsoleTimer }; Timer.Elapsed += TimerElapsed; Timer.Start(); } if (ConfigurationData.Data.ContainsKey("StaffAlert.MinRank")) { StaffAlertMinRank = uint.Parse(ConfigurationData.Data["StaffAlert.MinRank"]); } if (ConfigurationData.Data.ContainsKey("SeparatedTasksInMainLoops.enabled") && ConfigurationData.Data["SeparatedTasksInMainLoops.enabled"] == "true") { SeparatedTasksInMainLoops = true; } if (ConfigurationData.Data.ContainsKey("SeparatedTasksInGameClientManager.enabled") && ConfigurationData.Data["SeparatedTasksInGameClientManager.enabled"] == "true") { SeparatedTasksInGameClientManager = true; } if (ConfigurationData.Data.ContainsKey("Debug")) { if (ConfigurationData.Data["Debug"] == "true") { DebugMode = true; } } TimeSpan TimeUsed = DateTime.Now - ServerStarted; Out.WriteLine("CityRP >> Started (" + TimeUsed.Seconds + "s, " + TimeUsed.Milliseconds + "ms)", "", ConsoleColor.Green); IsLive = true; using (var queryReactor = GetDatabaseManager().GetQueryReactor()) { queryReactor.RunFastQuery("UPDATE server_settings SET value = '1' WHERE variable = 'status'"); } } catch (Exception e) { Out.WriteLine("Error in main.ini: Configuration file is invalid" + Environment.NewLine + e.Message, "", ConsoleColor.Red); Out.WriteLine("Please press Y to get more details or press other Key to Exit", "", ConsoleColor.Red); var key = Console.ReadKey(); if (key.Key == ConsoleKey.Y) { Console.WriteLine(); Out.WriteLine( Environment.NewLine + "[Message] Error Details: " + Environment.NewLine + e.StackTrace + Environment.NewLine + e.InnerException + Environment.NewLine + e.TargetSite + Environment.NewLine + "[Message ]Press Any Key To Exit", "", ConsoleColor.Red); Console.ReadKey(); Environment.Exit(1); } else { Environment.Exit(1); } } #endregion Tasks and MusSystem }
/// <summary> /// Composes the page. /// </summary> /// <param name="page">The page.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage ComposePage(CatalogPage page) { ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("CataloguePageMessageComposer")); message.AppendInteger(page.PageId); switch (page.Layout) { case "frontpage": message.AppendString("NORMAL"); message.AppendString("frontpage4"); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(2); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendInteger(0); message.AppendInteger(-1); message.AppendBool(false); break; case "roomads": message.AppendString("NORMAL"); message.AppendString("roomads"); message.AppendInteger(2); message.AppendString("events_header"); message.AppendString(""); message.AppendInteger(2); message.AppendString(page.Text1); message.AppendString(""); break; case "builders_club_frontpage_normal": message.AppendString("NORMAL"); message.AppendString("builders_club_frontpage"); message.AppendInteger(0); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); message.AppendInteger(3); message.AppendInteger(8554); message.AppendString("builders_club_1_month"); message.AppendString(""); message.AppendInteger(2560000); message.AppendInteger(2560000); message.AppendInteger(1024); message.AppendInteger(0); message.AppendInteger(0); message.AppendBool(false); message.AppendInteger(8606); message.AppendString("builders_club_14_days"); message.AppendString(""); message.AppendInteger(2560000); message.AppendInteger(2560000); message.AppendInteger(1024); message.AppendInteger(0); message.AppendInteger(0); message.AppendBool(false); message.AppendInteger(8710); message.AppendString("builders_club_31_days"); message.AppendString(""); message.AppendInteger(2560000); message.AppendInteger(2560000); message.AppendInteger(1024); message.AppendInteger(0); message.AppendInteger(0); message.AppendBool(false); break; case "bots": message.AppendString("NORMAL"); message.AppendString("bots"); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendString(page.TextDetails); break; case "badge_display": message.AppendString("NORMAL"); message.AppendString("badge_display"); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendString(page.TextDetails); break; case "info_loyalty": case "info_duckets": message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); message.AppendInteger(1); message.AppendString(page.Text1); break; case "sold_ltd_items": message.AppendString("NORMAL"); message.AppendString("sold_ltd_items"); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendString(page.TextDetails); break; case "recycler_info": message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendString(page.TextDetails); break; case "recycler_prizes": message.AppendString("NORMAL"); message.AppendString("recycler_prizes"); message.AppendInteger(1); message.AppendString("catalog_recycler_headline3"); message.AppendInteger(1); message.AppendString(page.Text1); break; case "spaces_new": case "spaces": message.AppendString("NORMAL"); message.AppendString("spaces_new"); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); message.AppendInteger(1); message.AppendString(page.Text1); break; case "recycler": message.AppendString("NORMAL"); message.AppendString("recycler"); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(1); message.AppendString(page.Text1); break; case "trophies": message.AppendString("NORMAL"); message.AppendString("trophies"); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); message.AppendInteger(2); message.AppendString(page.Text1); message.AppendString(page.TextDetails); break; case "pets": case "pets2": case "pets3": message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(4); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendString(page.TextDetails); message.AppendString(page.TextTeaser); break; case "soundmachine": message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(2); message.AppendString(page.Text1); message.AppendString(page.TextDetails); break; case "vip_buy": message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(0); break; case "guild_custom_furni": message.AppendString("NORMAL"); message.AppendString("guild_custom_furni"); message.AppendInteger(3); message.AppendString(page.LayoutHeadline); message.AppendString(""); message.AppendString(""); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.TextDetails); message.AppendString(page.Text2); break; case "guild_frontpage": message.AppendString("NORMAL"); message.AppendString("guild_frontpage"); message.AppendInteger(2); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.TextDetails); message.AppendString(page.Text2); break; case "guild_forum": message.AppendString("NORMAL"); message.AppendString("guild_forum"); message.AppendInteger(0); message.AppendInteger(2); message.AppendString(page.Text1); message.AppendString(page.Text2); break; case "club_gifts": message.AppendString("NORMAL"); message.AppendString("club_gifts"); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); message.AppendInteger(1); message.AppendString(page.Text1); break; case "default_3x3": message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(3); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendString(page.LayoutSpecial); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.TextDetails); message.AppendString(page.TextTeaser); break; default: message.AppendString("NORMAL"); message.AppendString(page.Layout); message.AppendInteger(3); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendString(page.LayoutSpecial); message.AppendInteger(4); message.AppendString(page.Text1); message.AppendString(page.Text2); message.AppendString(page.TextTeaser); message.AppendString(page.TextDetails); break; case "builders_3x3": message.AppendString("BUILDERS_CLUB"); message.AppendString("default_3x3"); message.AppendInteger(3); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendString(page.LayoutSpecial); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.TextDetails.Replace("[10]", Convert.ToChar(10).ToString()) .Replace("[13]", Convert.ToChar(13).ToString())); message.AppendString(page.TextTeaser.Replace("[10]", Convert.ToChar(10).ToString()) .Replace("[13]", Convert.ToChar(13).ToString())); break; case "builders_3x3_color": message.AppendString("BUILDERS_CLUB"); message.AppendString("default_3x3_color_grouping"); message.AppendInteger(3); message.AppendString(page.LayoutHeadline); message.AppendString(page.LayoutTeaser); message.AppendString(page.LayoutSpecial); message.AppendInteger(3); message.AppendString(page.Text1); message.AppendString(page.TextDetails.Replace("[10]", Convert.ToChar(10).ToString()) .Replace("[13]", Convert.ToChar(13).ToString())); message.AppendString(page.TextTeaser.Replace("[10]", Convert.ToChar(10).ToString()) .Replace("[13]", Convert.ToChar(13).ToString())); break; case "builders_club_frontpage": message.AppendString("BUILDERS_CLUB"); message.AppendString("builders_club_frontpage"); message.AppendInteger(0); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); message.AppendInteger(3); message.AppendInteger(8554); message.AppendString("builders_club_1_month"); message.AppendString(""); message.AppendInteger(2560000); message.AppendInteger(2560000); message.AppendInteger(1024); message.AppendInteger(0); message.AppendInteger(0); message.AppendBool(false); message.AppendInteger(8606); message.AppendString("builders_club_14_days"); message.AppendString(""); message.AppendInteger(2560000); message.AppendInteger(2560000); message.AppendInteger(1024); message.AppendInteger(0); message.AppendInteger(0); message.AppendBool(false); message.AppendInteger(8710); message.AppendString("builders_club_31_days"); message.AppendString(""); message.AppendInteger(2560000); message.AppendInteger(2560000); message.AppendInteger(1024); message.AppendInteger(0); message.AppendInteger(0); message.AppendBool(false); break; case "builders_club_addons": message.AppendString("BUILDERS_CLUB"); message.AppendString("builders_club_addons"); message.AppendInteger(0); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); break; case "builders_club_addons_normal": message.AppendString("NORMAL"); message.AppendString("builders_club_addons"); message.AppendInteger(0); message.AppendInteger(1); message.AppendString(page.LayoutHeadline); break; } if (page.Layout.StartsWith("frontpage") || page.Layout == "vip_buy" || page.Layout == "recycler") { message.AppendInteger(0); } else { message.AppendInteger(page.Items.Count); foreach (CatalogItem item in page.Items.Values) { ComposeItem(item, message); } } message.AppendInteger(-1); message.AppendBool(false); return(message); }
/// <summary> /// Composes the index. /// </summary> /// <param name="rank">The rank.</param> /// <param name="type">The type.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage ComposeIndex(uint rank, string type) { IEnumerable <CatalogPage> pages = Yupi.GetGame().GetCatalog().Categories.Values.OfType <CatalogPage>().ToList(); IOrderedEnumerable <CatalogPage> sortedPages = pages.Where(x => x.ParentId == -2 && x.MinRank <= rank).OrderBy(x => x.OrderNum); if (type == "NORMAL") { sortedPages = pages.Where(x => x.ParentId == -1 && x.MinRank <= rank).OrderBy(x => x.OrderNum); } ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("CatalogueIndexMessageComposer")); message.AppendBool(true); message.AppendInteger(0); message.AppendInteger(-1); message.AppendString("root"); message.AppendString(string.Empty); message.AppendInteger(0); message.AppendInteger(sortedPages.Count()); foreach (CatalogPage cat in sortedPages) { message.AppendBool(cat.Visible); message.AppendInteger(cat.IconImage); message.AppendInteger(cat.PageId); message.AppendString(cat.CodeName); message.AppendString(cat.Caption); message.AppendInteger(cat.FlatOffers.Count); foreach (uint i in cat.FlatOffers.Keys) { message.AppendInteger(i); } IOrderedEnumerable <CatalogPage> sortedSubPages = pages.Where(x => x.ParentId == cat.PageId && x.MinRank <= rank).OrderBy(x => x.OrderNum); message.AppendInteger(sortedSubPages.Count()); foreach (CatalogPage subCat in sortedSubPages) { message.AppendBool(subCat.Visible); message.AppendInteger(subCat.IconImage); message.AppendInteger(subCat.PageId); message.AppendString(subCat.CodeName); message.AppendString(subCat.Caption); message.AppendInteger(subCat.FlatOffers.Count); foreach (uint i2 in subCat.FlatOffers.Keys) { message.AppendInteger(i2); } message.AppendInteger(0); } } message.AppendBool(false); message.AppendString(type); return(message); }
public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights) { if (!item.ExtraData.Contains('\u0005'.ToString())) { return; } string[] array = item.ExtraData.Split('\u0005'); session.GetHabbo().Gender = array[0].ToUpper() == "F" ? "F" : "M"; Dictionary <string, string> dictionary = new Dictionary <string, string>(); dictionary.Clear(); string[] array2 = array[1].Split('.'); foreach (string text in array2) { string[] array3 = session.GetHabbo().Look.Split('.'); foreach (string text2 in array3) { if (text2.Split('-')[0] == text.Split('-')[0]) { if (dictionary.ContainsKey(text2.Split('-')[0]) && !dictionary.ContainsValue(text)) { dictionary.Remove(text2.Split('-')[0]); dictionary.Add(text2.Split('-')[0], text); } else { if (!dictionary.ContainsKey(text2.Split('-')[0]) && !dictionary.ContainsValue(text)) { dictionary.Add(text2.Split('-')[0], text); } } } else { if (!dictionary.ContainsKey(text2.Split('-')[0])) { dictionary.Add(text2.Split('-')[0], text2); } } } } string text3 = dictionary.Values.Aggregate("", (current1, current) => $"{current1}{current}."); session.GetHabbo().Look = text3.TrimEnd('.'); using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery( $"UPDATE users SET look = @look, gender = @gender WHERE id = {session.GetHabbo().Id}"); queryReactor.AddParameter("look", session.GetHabbo().Look); queryReactor.AddParameter("gender", session.GetHabbo().Gender); queryReactor.RunQuery(); } session.GetMessageHandler() .GetResponse() .Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); session.GetMessageHandler().GetResponse().AppendInteger(-1); session.GetMessageHandler().GetResponse().AppendString(session.GetHabbo().Look); session.GetMessageHandler().GetResponse().AppendString(session.GetHabbo().Gender.ToLower()); session.GetMessageHandler().GetResponse().AppendString(session.GetHabbo().Motto); session.GetMessageHandler().GetResponse().AppendInteger(session.GetHabbo().AchievementPoints); session.GetMessageHandler().SendResponse(); RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); serverMessage.AppendInteger(roomUserByHabbo.VirtualId); serverMessage.AppendString(session.GetHabbo().Look); serverMessage.AppendString(session.GetHabbo().Gender.ToLower()); serverMessage.AppendString(session.GetHabbo().Motto); serverMessage.AppendInteger(session.GetHabbo().AchievementPoints); session.GetHabbo().CurrentRoom.SendMessage(serverMessage); }
/// <summary> /// Serializes the information. /// </summary> /// <returns>ServerMessage.</returns> internal ServerMessage SerializeInfo() { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("PetInfoMessageComposer")); serverMessage.AppendInteger(PetId); serverMessage.AppendString(Name); if (Type == 16) { serverMessage.AppendInteger(MoplaBreed.GrowingStatus); serverMessage.AppendInteger(7); } else { serverMessage.AppendInteger(Level); serverMessage.AppendInteger(MaxLevel); } serverMessage.AppendInteger(Experience); serverMessage.AppendInteger(ExperienceGoal); serverMessage.AppendInteger(Energy); serverMessage.AppendInteger(MaxEnergy); serverMessage.AppendInteger(Nutrition); serverMessage.AppendInteger(MaxNutrition); serverMessage.AppendInteger(Respect); serverMessage.AppendInteger(OwnerId); serverMessage.AppendInteger(Age); serverMessage.AppendString(OwnerName); serverMessage.AppendInteger(Type == 16 ? 0 : 1); serverMessage.AppendBool(HaveSaddle); serverMessage.AppendBool(false); //mountingId serverMessage.AppendInteger(0); serverMessage.AppendInteger(AnyoneCanRide); if (Type == 16) { serverMessage.AppendBool(MoplaBreed.LiveState == MoplaState.Grown); } else { serverMessage.AppendBool(false); } serverMessage.AppendBool(false); if (Type == 16) { serverMessage.AppendBool(MoplaBreed.LiveState == MoplaState.Dead); } else { serverMessage.AppendBool(false); } serverMessage.AppendInteger(Rarity); if (Type == 16u) { serverMessage.AppendInteger(129600); int lastHealthSeconds = (int)(LastHealth - DateTime.Now).TotalSeconds; int untilGrownSeconds = (int)(UntilGrown - DateTime.Now).TotalSeconds; if (lastHealthSeconds < 0) { lastHealthSeconds = 0; } if (untilGrownSeconds < 0) { untilGrownSeconds = 0; } switch (MoplaBreed.LiveState) { case MoplaState.Dead: serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); break; case MoplaState.Grown: serverMessage.AppendInteger(lastHealthSeconds); serverMessage.AppendInteger(0); break; default: serverMessage.AppendInteger(lastHealthSeconds); serverMessage.AppendInteger(untilGrownSeconds); break; } } else { serverMessage.AppendInteger(-1); serverMessage.AppendInteger(-1); serverMessage.AppendInteger(-1); } serverMessage.AppendBool(true); // Allow breed? return(serverMessage); }
/// <summary> /// Handles the request. /// </summary> /// <param name="request">The request.</param> internal void HandleRequest(ClientMessage request) { Request = request; LibraryParser.HandlePacket(this, request); }
/// <summary> /// Informations the retrieve. /// </summary> internal void InfoRetrieve() { if (Session?.GetHabbo() == null) { return; } Habbo habbo = Session.GetHabbo(); bool tradeLocked = Session.GetHabbo().CheckTrading(); bool canUseFloorEditor = true; //ServerExtraSettings.EveryoneUseFloor || Session.GetHabbo().Vip || Session.GetHabbo().Rank >= 4; Response.Init(LibraryParser.OutgoingRequest("UserObjectMessageComposer")); Response.AppendInteger(habbo.Id); Response.AppendString(habbo.UserName); Response.AppendString(habbo.Look); Response.AppendString(habbo.Gender.ToUpper()); Response.AppendString(habbo.Motto); Response.AppendString(string.Empty); Response.AppendBool(false); Response.AppendInteger(habbo.Respect); Response.AppendInteger(habbo.DailyRespectPoints); Response.AppendInteger(habbo.DailyPetRespectPoints); Response.AppendBool(true); Response.AppendString(habbo.LastOnline.ToString(CultureInfo.InvariantCulture)); Response.AppendBool(habbo.CanChangeName); Response.AppendBool(false); SendResponse(); Response.Init(LibraryParser.OutgoingRequest("BuildersClubMembershipMessageComposer")); Response.AppendInteger(Session.GetHabbo().BuildersExpire); Response.AppendInteger(Session.GetHabbo().BuildersItemsMax); Response.AppendInteger(2); SendResponse(); Response.Init(LibraryParser.OutgoingRequest("SendPerkAllowancesMessageComposer")); Response.AppendInteger(11); Response.AppendString("BUILDER_AT_WORK"); Response.AppendString(string.Empty); Response.AppendBool(canUseFloorEditor); Response.AppendString("VOTE_IN_COMPETITIONS"); Response.AppendString("requirement.unfulfilled.helper_level_2"); Response.AppendBool(false); Response.AppendString("USE_GUIDE_TOOL"); Response.AppendString((Session.GetHabbo().TalentStatus == "helper" && Session.GetHabbo().CurrentTalentLevel >= 4) || (Session.GetHabbo().Rank >= 4) ? string.Empty : "requirement.unfulfilled.helper_level_4"); Response.AppendBool((Session.GetHabbo().TalentStatus == "helper" && Session.GetHabbo().CurrentTalentLevel >= 4) || (Session.GetHabbo().Rank >= 4)); Response.AppendString("JUDGE_CHAT_REVIEWS"); Response.AppendString("requirement.unfulfilled.helper_level_6"); Response.AppendBool(false); Response.AppendString("NAVIGATOR_ROOM_THUMBNAIL_CAMERA"); Response.AppendString(string.Empty); Response.AppendBool(true); Response.AppendString("CALL_ON_HELPERS"); Response.AppendString(string.Empty); Response.AppendBool(true); Response.AppendString("CITIZEN"); Response.AppendString(string.Empty); Response.AppendBool(Session.GetHabbo().TalentStatus == "helper" || Session.GetHabbo().CurrentTalentLevel >= 4); Response.AppendString("MOUSE_ZOOM"); Response.AppendString(string.Empty); Response.AppendBool(false); Response.AppendString("TRADE"); Response.AppendString(tradeLocked ? string.Empty : "requirement.unfulfilled.no_trade_lock"); Response.AppendBool(tradeLocked); Response.AppendString("CAMERA"); Response.AppendString(string.Empty); Response.AppendBool(ServerExtraSettings.EnableBetaCamera); Response.AppendString("NAVIGATOR_PHASE_TWO_2014"); Response.AppendString(string.Empty); Response.AppendBool(true); SendResponse(); Session.GetHabbo().InitMessenger(); GetResponse().Init(LibraryParser.OutgoingRequest("CitizenshipStatusMessageComposer")); GetResponse().AppendString("citizenship"); GetResponse().AppendInteger(1); GetResponse().AppendInteger(4); SendResponse(); GetResponse().Init(LibraryParser.OutgoingRequest("GameCenterGamesListMessageComposer")); GetResponse().AppendInteger(1); GetResponse().AppendInteger(18); GetResponse().AppendString("elisa_habbo_stories"); GetResponse().AppendString("000000"); GetResponse().AppendString("ffffff"); GetResponse().AppendString(""); GetResponse().AppendString(""); SendResponse(); GetResponse().Init(LibraryParser.OutgoingRequest("AchievementPointsMessageComposer")); GetResponse().AppendInteger(Session.GetHabbo().AchievementPoints); SendResponse(); GetResponse().Init(LibraryParser.OutgoingRequest("FigureSetIdsMessageComposer")); Session.GetHabbo().ClothesManagerManager.Serialize(GetResponse()); SendResponse(); Session.SendMessage(Yupi.GetGame().GetNavigator().SerializePromotionCategories()); if (Yupi.GetGame().GetTargetedOfferManager().CurrentOffer != null) { Yupi.GetGame().GetTargetedOfferManager().GenerateMessage(GetResponse()); SendResponse(); } }
public bool Execute(params object[] stuff) { if (stuff[0] == null) { return(false); } var user = (RoomUser)stuff[0]; var item = (Interaction)stuff[1]; if (_mBanned.Contains(item)) { return(false); } if (user == null) { return(false); } var amountLeft = int.Parse(OtherExtraString2); var often = int.Parse(OtherExtraString); bool premied = false; if (amountLeft == 0) { var message = new ServerMessage(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer")); message.AppendInteger(0); user.GetClient().SendMessage(message); return(true); } foreach (var dataStr in OtherString.Split(';')) { var dataArray = dataStr.Split(','); var isbadge = dataArray[0] == "0"; var code = dataArray[1]; var percentage = int.Parse(dataArray[2]); var random = Plus.GetRandomNumber(0, 100); var message = new ServerMessage(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer")); if (often == 0 && random <= percentage) { continue; } premied = true; if (isbadge) { if (user.GetClient().GetHabbo().GetBadgeComponent().HasBadge(code)) { message.AppendInteger(1); user.GetClient().SendMessage(message); } else { user.GetClient() .GetHabbo() .GetBadgeComponent() .GiveBadge(code, true, user.GetClient(), true); message.AppendInteger(7); user.GetClient().SendMessage(message); } } else //item or effect { var roomItem = Plus.GetGame().GetItemManager().GetItem(uint.Parse(code)); if (roomItem == null) { continue; } if (roomItem.Type == 'e') // is effect { user.GetClient() .GetHabbo() .GetAvatarEffectsInventoryComponent().AddNewEffect(roomItem.SpriteId, 3600, 1); } else { user.GetClient() .GetHabbo() .GetInventoryComponent() .AddNewItem(0u, roomItem.ItemId, "0", 0u, true, false, 0, 0, ""); user.GetClient() .SendMessage( new ServerMessage(LibraryParser.OutgoingRequest("UpdateInventoryMessageComposer"))); } message.AppendInteger(6); user.GetClient().SendMessage(message); } } if (!premied) { var message = new ServerMessage(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer")); message.AppendInteger(4); user.GetClient().SendMessage(message); } return(true); }
public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights) { if (session == null) { return; } RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); if (roomUserByHabbo == null) { return; } if (PathFinder.GetDistance(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y) > 1) { roomUserByHabbo.MoveTo(item.X + 1, item.Y); } if (Math.Abs(roomUserByHabbo.X - item.X) < 2 && Math.Abs(roomUserByHabbo.Y - item.Y) < 2) { roomUserByHabbo.SetRot( PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y), false); Room room = item.GetRoom(); Point point = new Point(0, 0); switch (roomUserByHabbo.RotBody) { case 4: point = new Point(item.X, item.Y + 1); break; case 0: point = new Point(item.X, item.Y - 1); break; case 6: point = new Point(item.X - 1, item.Y); break; default: if (roomUserByHabbo.RotBody != 2) { return; } point = new Point(item.X + 1, item.Y); break; } if (!room.GetGameMap().ValidTile2(point.X, point.Y)) { return; } List <RoomItem> coordinatedItems = room.GetGameMap().GetCoordinatedItems(point); if (coordinatedItems.Any(i => !i.GetBaseItem().Stackable)) { return; } double num = item.GetRoom().GetGameMap().SqAbsoluteHeight(point.X, point.Y); ServerMessage serverMessage = new ServerMessage(); serverMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer")); serverMessage.AppendInteger(item.X); serverMessage.AppendInteger(item.Y); serverMessage.AppendInteger(point.X); serverMessage.AppendInteger(point.Y); serverMessage.AppendInteger(1); serverMessage.AppendInteger(item.Id); serverMessage.AppendString(item.Z.ToString(Yupi.CultureInfo)); serverMessage.AppendString(num.ToString(Yupi.CultureInfo)); serverMessage.AppendInteger(0); room.SendMessage(serverMessage); item.GetRoom() .GetRoomItemHandler() .SetFloorItem(roomUserByHabbo.GetClient(), item, point.X, point.Y, item.Rot, false, false, false); } }
/// <summary> /// Invokes the command. /// </summary> /// <param name="inputData">The input data.</param> internal static void InvokeCommand(string inputData) { if (string.IsNullOrEmpty(inputData) && Logging.DisabledState) { return; } Console.WriteLine(); if (Logging.DisabledState == false) { Logging.DisabledState = true; Console.WriteLine("Console writing disabled. Waiting for user input."); return; } try { string[] parameters = inputData.Split(' '); switch (parameters[0]) { #region Roleplay case "wualert": { if (parameters[1] == null) { Console.WriteLine("Please enter the users username!"); } string name = parameters[1].ToString(); string Notice = HabboHotel.Misc.ChatCommandHandler.MergeParams(parameters, 2); bool dced = false; GameClient User = null; foreach (GameClient mClient in Plus.GetGame().GetClientManager().Clients.Values) { if (mClient == null) { continue; } if (mClient.GetHabbo() == null) { continue; } if (mClient.GetHabbo().CurrentRoom == null) { continue; } if (mClient.GetConnection() == null) { continue; } if (mClient.GetHabbo().UserName.ToLower() == name.ToLower()) { User = mClient; dced = true; } } if (dced) { User.SendWhisper("[Alert][Private]: " + Notice); Console.WriteLine("Successfully alerted " + name.ToLower() + " :: '" + Notice + "'", ConsoleColor.Red); } } break; case "walert": { string Notice = HabboHotel.Misc.ChatCommandHandler.MergeParams(parameters, 1); lock (Plus.GetGame().GetClientManager().Clients.Values) { foreach (GameClient mClient in Plus.GetGame().GetClientManager().Clients.Values) { if (mClient == null) { continue; } if (mClient.GetHabbo() == null) { continue; } if (mClient.GetHabbo().CurrentRoom == null) { continue; } if (mClient.GetConnection() == null) { continue; } mClient.SendWhisperBubble("[Alert][Global]: " + Notice, 33); } } Console.WriteLine("Whisper Alerted: '" + Notice + "'", ConsoleColor.DarkGreen); } break; case "halert": { string Notice = HabboHotel.Misc.ChatCommandHandler.MergeParams(parameters, 1); ServerMessage HotelAlert = new ServerMessage(LibraryParser.OutgoingRequest("BroadcastNotifMessageComposer")); HotelAlert.AppendString(Notice + "\r\n" + "- FluxRP"); Plus.GetGame().GetClientManager().QueueBroadcaseMessage(HotelAlert); Console.WriteLine("Hotel Alerted: '" + Notice + "'", ConsoleColor.DarkGreen); } break; case "ban": { if (parameters[1] == null) { Console.WriteLine("Please enter the users username!"); } string name = parameters[1].ToString(); bool dced = false; GameClient User = null; foreach (GameClient mClient in Plus.GetGame().GetClientManager().Clients.Values) { if (mClient == null) { continue; } if (mClient.GetHabbo() == null) { continue; } if (mClient.GetHabbo().CurrentRoom == null) { continue; } if (mClient.GetConnection() == null) { continue; } if (mClient.GetHabbo().UserName.ToLower() == name.ToLower()) { User = mClient; dced = true; } } if (dced) { User.GetConnection().Dispose(); Console.WriteLine("Successfully banned " + name.ToLower(), ConsoleColor.Red); using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("INSERT INTO users_bans(bantype,value,reason) VALUES('user','" + User.GetHabbo().UserName + "','Automatic Ban via Console [Urgent]')"); } } else { using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("INSERT INTO bans(bantype,value,reason) VALUES('user','" + name.ToLower() + "','Automatic Ban via Console [Urgent]')"); } Console.WriteLine("Successfully banned " + name.ToLower(), ConsoleColor.Red); } } break; case "derank": { if (parameters[1] == null) { Console.WriteLine("Please enter the users username!"); } string name = parameters[1].ToString(); bool dced = false; GameClient User = null; foreach (GameClient mClient in Plus.GetGame().GetClientManager().Clients.Values) { if (mClient == null) { continue; } if (mClient.GetHabbo() == null) { continue; } if (mClient.GetHabbo().CurrentRoom == null) { continue; } if (mClient.GetConnection() == null) { continue; } if (mClient.GetHabbo().UserName.ToLower() == name.ToLower()) { User = mClient; dced = true; } } if (dced) { User.GetConnection().Dispose(); Console.WriteLine("Successfully deranked " + name.ToLower(), ConsoleColor.Red); using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("UPDATE users SET rank = '1' WHERE username = '******'"); } } else { using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("UPDATE users SET rank = '1' WHERE username = '******'"); } Console.WriteLine("Successfully deranked " + name.ToLower(), ConsoleColor.Red); } } break; case "dc": { if (parameters[1] == null) { Console.WriteLine("Please enter the users username!"); } string name = parameters[1].ToString(); bool dced = false; GameClient User = null; foreach (GameClient mClient in Plus.GetGame().GetClientManager().Clients.Values) { if (mClient == null) { continue; } if (mClient.GetHabbo() == null) { continue; } if (mClient.GetHabbo().CurrentRoom == null) { continue; } if (mClient.GetConnection() == null) { continue; } if (mClient.GetHabbo().UserName.ToLower() == name.ToLower()) { User = mClient; dced = true; } } if (dced) { User.GetConnection().Dispose(); Console.WriteLine("Successfully disconnected " + name.ToLower(), ConsoleColor.Red); } } break; #endregion case "shutdown": case "close": { using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("UPDATE server_settings SET value = '2' WHERE variable = 'status'"); } Logging.DisablePrimaryWriting(true); Out.WriteLine("Shutdown Initalized", "", ConsoleColor.DarkYellow); Plus.PerformShutDown(false); Console.WriteLine(); return; } case "restart": { using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("UPDATE server_status SET status = 2 where id = 1"); } Logging.LogMessage(string.Format("Server Restarting at {0}", DateTime.Now)); Logging.DisablePrimaryWriting(true); Out.WriteLine("Restart Initialized", "", ConsoleColor.DarkYellow); Plus.PerformShutDown(true); Console.WriteLine(); return; } case "fixrooms": { List <Room> roomsToUnload = new List <Room>(); foreach (Room room30 in Plus.GetGame().GetRoomManager().LoadedRooms.Values) { if ((room30 != null)) { roomsToUnload.Add(room30); //Plus.GetGame().GetRoomManager().UnloadRoom(room30); } } foreach (Room roomj in roomsToUnload) { Plus.GetGame().GetRoomManager().UnloadRoom(roomj, "fixrooms"); } roomsToUnload = null; var message = new ServerMessage(LibraryParser.OutgoingRequest("MOTDNotificationMessageComposer")); message.AppendInteger(1); message.AppendString("Hey Guys,\n\nAll rooms have been unloaded. This could be because:\n1. Room glitches\n2. Manual room changes\n3. Room migration\n\nPlease reload the client to prevent any errors. Thank you!"); GetGame().GetClientManager().QueueBroadcaseMessage(message); 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 "database": { Plus.GetDatabaseManager().Destroy(); Console.WriteLine("Closed old connections"); 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 "catalog": { Console.WriteLine("Flushing catalog settings"); using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { GetGame().GetCatalog().Initialize(dbClient); } GetGame() .GetClientManager() .QueueBroadcaseMessage( new ServerMessage(LibraryParser.OutgoingRequest("PublishShopMessageComposer"))); Console.WriteLine("Catalog flushed"); break; } case "modeldata": { Console.WriteLine("Flushing modeldata"); using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { GetGame().GetRoomManager().LoadModels(dbClient); } Console.WriteLine("Models flushed"); break; } case "bans": { Console.WriteLine("Flushing bans"); using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { GetGame().GetBanManager().Init(); } Console.WriteLine("Bans flushed"); break; } } } break; } case "console": { Console.Clear(); break; } case "memory": { GC.Collect(); Console.WriteLine("Memory flushed!"); break; } default: { UnknownCommand(inputData); break; } } } break; } case "view": { switch (parameters[1]) { case "console": { Console.WriteLine("Press ENTER for disabling console writing"); Logging.DisabledState = false; break; } } break; } case "alert": { var str = inputData.Substring(6); var 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(); return; case "help": Console.WriteLine("shutdown/close - for safe shutting down PlusEmulator"); Console.WriteLine("clear - Clear all text"); 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(); return; default: UnknownCommand(inputData); break; } } catch (Exception e) { Console.WriteLine("Error in command [" + inputData + "]: " + e.ToString()); } Console.WriteLine(); }
/// <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 } }
public static void SaveWired(GameClient session, RoomItem item, ClientMessage request) { if (item == null || !item.IsWired) { return; } Room room = item.GetRoom(); WiredHandler wiredHandler = room?.GetWiredHandler(); if (wiredHandler == null) { return; } switch (item.GetBaseItem().InteractionType) { case Interaction.TriggerTimer: { request.GetInteger(); IWiredItem wired = wiredHandler.GetWired(item); int delay = request.GetInteger() * 500; wired.Delay = delay; wiredHandler.ReloadWired(wired); break; } case Interaction.TriggerRoomEnter: { request.GetInteger(); string otherString = request.GetString(); IWiredItem wired = wiredHandler.GetWired(item); wired.OtherString = otherString; wiredHandler.ReloadWired(wired); break; } case Interaction.TriggerLongRepeater: { request.GetInteger(); int delay = request.GetInteger() * 5000; IWiredItem wired2 = wiredHandler.GetWired(item); wired2.Delay = delay; wiredHandler.ReloadWired(wired2); break; } case Interaction.TriggerRepeater: { request.GetInteger(); int delay = request.GetInteger() * 500; IWiredItem wired2 = wiredHandler.GetWired(item); wired2.Delay = delay; wiredHandler.ReloadWired(wired2); break; } case Interaction.TriggerOnUserSay: { request.GetInteger(); int num = request.GetInteger(); string otherString2 = request.GetString(); IWiredItem wired3 = wiredHandler.GetWired(item); wired3.OtherString = otherString2; wired3.OtherBool = num == 1; wiredHandler.ReloadWired(wired3); break; } case Interaction.TriggerStateChanged: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems = GetFurniItems(request, room); int num2 = request.GetInteger(); IWiredItem wired4 = wiredHandler.GetWired(item); wired4.Delay = num2 * 500; wired4.Items = furniItems; wiredHandler.ReloadWired(wired4); break; } case Interaction.TriggerWalkOnFurni: case Interaction.ActionChase: case Interaction.ActionResetTimer: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems2 = GetFurniItems(request, room); int num3 = request.GetInteger(); IWiredItem wired5 = wiredHandler.GetWired(item); wired5.Delay = num3 * 500; wired5.Items = furniItems2; wiredHandler.ReloadWired(wired5); break; } case Interaction.TriggerWalkOffFurni: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems3 = GetFurniItems(request, room); int num4 = request.GetInteger(); IWiredItem wired6 = wiredHandler.GetWired(item); wired6.Delay = num4 * 500; wired6.Items = furniItems3; wiredHandler.ReloadWired(wired6); break; } case Interaction.ActionMoveRotate: case Interaction.ActionMoveToDir: { request.GetInteger(); int dir = request.GetInteger(); int rot = request.GetInteger(); request.GetString(); List <RoomItem> furniItems4 = GetFurniItems(request, room); int delay = request.GetInteger(); IWiredItem wired7 = wiredHandler.GetWired(item); wired7.Items = furniItems4; wired7.Delay = delay * 500; wired7.OtherString = $"{dir};{rot}"; wiredHandler.ReloadWired(wired7); break; } case Interaction.ActionShowMessage: case Interaction.ActionKickUser: { request.GetInteger(); string otherString3 = request.GetString(); IWiredItem wired8 = wiredHandler.GetWired(item); wired8.OtherString = otherString3; wiredHandler.ReloadWired(wired8); break; } case Interaction.ActionTeleportTo: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems5 = GetFurniItems(request, room); int num8 = request.GetInteger(); IWiredItem wired9 = wiredHandler.GetWired(item); wired9.Items = furniItems5; wired9.Delay = num8 * 500; wiredHandler.ReloadWired(wired9); break; } case Interaction.ActionToggleState: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems6 = GetFurniItems(request, room); int num9 = request.GetInteger(); IWiredItem wired10 = wiredHandler.GetWired(item); wired10.Items = furniItems6; wired10.Delay = num9 * 500; wiredHandler.ReloadWired(wired10); break; } case Interaction.ActionGiveReward: { if (!session.GetHabbo().HasFuse("fuse_use_superwired")) { return; } request.GetInteger(); int often = request.GetInteger(); bool unique = request.GetIntegerAsBool(); int limit = request.GetInteger(); request.GetInteger(); string extrainfo = request.GetString(); List <RoomItem> furniItems7 = GetFurniItems(request, room); IWiredItem wired11 = wiredHandler.GetWired(item); wired11.Items = furniItems7; wired11.Delay = 0; wired11.OtherBool = unique; wired11.OtherString = extrainfo; wired11.OtherExtraString = often.ToString(); wired11.OtherExtraString2 = limit.ToString(); wiredHandler.ReloadWired(wired11); break; } case Interaction.ActionMuteUser: { request.GetInteger(); int minutes = request.GetInteger() * 500; string message = request.GetString(); List <RoomItem> furniItems7 = GetFurniItems(request, room); IWiredItem wired11 = wiredHandler.GetWired(item); wired11.Items = furniItems7; wired11.Delay = minutes; wired11.OtherBool = false; wired11.OtherString = message; wiredHandler.ReloadWired(wired11); break; } case Interaction.TriggerScoreAchieved: { request.GetInteger(); int pointsRequired = request.GetInteger(); IWiredItem wired11 = wiredHandler.GetWired(item); wired11.Delay = 0; wired11.OtherString = pointsRequired.ToString(); wiredHandler.ReloadWired(wired11); break; } case Interaction.ConditionItemsMatches: case Interaction.ConditionItemsDontMatch: case Interaction.ActionPosReset: { request.GetInteger(); bool actualExtraData = request.GetIntegerAsBool(); bool actualRot = request.GetIntegerAsBool(); bool actualPosition = request.GetIntegerAsBool(); string booleans = $"{actualExtraData},{actualRot},{actualPosition}".ToLower(); request.GetString(); List <RoomItem> items = GetFurniItems(request, room); int delay = request.GetInteger() * 500; IWiredItem wiry = wiredHandler.GetWired(item); string dataToSave = string.Empty; string extraStringForWi = string.Empty; foreach (RoomItem aItem in items) { if (aItem.GetBaseItem().InteractionType == Interaction.Dice) { // Why have a RETURN here? dataToSave += string.Format("0|0|0|0,0,0", aItem.Id, aItem.ExtraData, aItem.Rot, aItem.X, aItem.Y, aItem.Z); extraStringForWi += $"{aItem.Id},{(actualExtraData ? aItem.ExtraData : "N")},{(actualRot ? aItem.Rot.ToString() : "N")},{(actualPosition ? aItem.X.ToString() : "N")},{(actualPosition ? aItem.Y.ToString() : "N")}"; return; } dataToSave += $"{aItem.Id}|{aItem.ExtraData}|{aItem.Rot}|{aItem.X},{aItem.Y},{aItem.Z}"; extraStringForWi += $"{aItem.Id},{(actualExtraData ? aItem.ExtraData : "N")},{(actualRot ? aItem.Rot.ToString() : "N")},{(actualPosition ? aItem.X.ToString() : "N")},{(actualPosition ? aItem.Y.ToString() : "N")}"; if (aItem == items.Last()) { continue; } dataToSave += "/"; extraStringForWi += ";"; } wiry.Items = items; wiry.Delay = delay; wiry.OtherBool = true; wiry.OtherString = booleans; wiry.OtherExtraString = dataToSave; wiry.OtherExtraString2 = extraStringForWi; wiredHandler.ReloadWired(wiry); break; } case Interaction.ConditionGroupMember: case Interaction.ConditionNotGroupMember: case Interaction.TriggerCollision: { break; } case Interaction.ConditionHowManyUsersInRoom: case Interaction.ConditionNegativeHowManyUsers: { request.GetInteger(); int minimum = request.GetInteger(); int maximum = request.GetInteger(); string ei = $"{minimum},{maximum}"; IWiredItem wired12 = wiredHandler.GetWired(item); wired12.Items = new List <RoomItem>(); wired12.OtherString = ei; wiredHandler.ReloadWired(wired12); break; } case Interaction.ConditionUserNotWearingEffect: case Interaction.ConditionUserWearingEffect: { request.GetInteger(); int effect = request.GetInteger(); IWiredItem wired12 = wiredHandler.GetWired(item); wired12.Items = new List <RoomItem>(); wired12.OtherString = effect.ToString(); wiredHandler.ReloadWired(wired12); break; } case Interaction.ConditionUserWearingBadge: case Interaction.ConditionUserNotWearingBadge: case Interaction.ConditionUserHasFurni: { request.GetInteger(); string badge = request.GetString(); IWiredItem wired12 = wiredHandler.GetWired(item); wired12.Items = new List <RoomItem>(); wired12.OtherString = badge; wiredHandler.ReloadWired(wired12); break; } case Interaction.ConditionDateRangeActive: { request.GetInteger(); int startDate = request.GetInteger(); int endDate = request.GetInteger(); IWiredItem wired12 = wiredHandler.GetWired(item); wired12.Items = new List <RoomItem>(); wired12.OtherString = $"{startDate},{endDate}"; if (startDate == 0) { wired12.OtherString = string.Empty; session.SendNotif(Yupi.GetLanguage().GetVar("user_wired_con_date_range")); } wiredHandler.ReloadWired(wired12); break; } case Interaction.ConditionFurnisHaveUsers: case Interaction.ConditionTriggerOnFurni: case Interaction.ConditionFurniTypeMatches: case Interaction.ConditionFurnisHaveNotUsers: case Interaction.ConditionTriggererNotOnFurni: case Interaction.ConditionFurniTypeDontMatch: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems = GetFurniItems(request, room); IWiredItem wired12 = wiredHandler.GetWired(item); wired12.Items = furniItems; wiredHandler.ReloadWired(wired12); break; } case Interaction.ConditionFurniHasFurni: case Interaction.ConditionFurniHasNotFurni: { request.GetInteger(); bool allItems = request.GetIntegerAsBool(); request.GetString(); List <RoomItem> furniItems = GetFurniItems(request, room); IWiredItem wired = wiredHandler.GetWired(item); wired.OtherBool = allItems; wired.Items = furniItems; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionGiveScore: { request.GetInteger(); int scoreToGive = request.GetInteger(); int maxTimesPerGame = request.GetInteger(); string newExtraInfo = $"{scoreToGive},{maxTimesPerGame}"; List <RoomItem> furniItems8 = GetFurniItems(request, room); IWiredItem wired12 = wiredHandler.GetWired(item); wired12.Items = furniItems8; wired12.OtherString = newExtraInfo; wiredHandler.ReloadWired(wired12); break; } case Interaction.ActionJoinTeam: { request.GetInteger(); int team = request.GetInteger(); IWiredItem wired = wiredHandler.GetWired(item); wired.Delay = team * 500; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionBotTalk: { request.GetInteger(); bool type = request.GetIntegerAsBool(); string[] data = request.GetString().Split((char)9); IWiredItem wired = wiredHandler.GetWired(item); wired.OtherBool = type; wired.OtherString = data[0]; wired.OtherExtraString = data[1]; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionBotClothes: { request.GetInteger(); string[] data = request.GetString().Split((char)9); IWiredItem wired = wiredHandler.GetWired(item); wired.OtherString = data[0]; wired.OtherExtraString = data[1]; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionBotTeleport: { request.GetInteger(); string botName = request.GetString(); List <RoomItem> furniItems = GetFurniItems(request, room); IWiredItem wired = wiredHandler.GetWired(item); wired.Items = furniItems; wired.OtherString = botName; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionBotGiveHanditem: { request.GetInteger(); int handitem = request.GetInteger(); string botName = request.GetString(); IWiredItem wired = wiredHandler.GetWired(item); wired.OtherString = botName; wired.Delay = handitem * 500; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionBotMove: { request.GetInteger(); string botName = request.GetString(); List <RoomItem> furniItems = GetFurniItems(request, room); IWiredItem wired = wiredHandler.GetWired(item); wired.Items = furniItems; wired.OtherString = botName; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionCallStacks: { request.GetInteger(); request.GetString(); List <RoomItem> furniItems = GetFurniItems(request, room); IWiredItem wired = wiredHandler.GetWired(item); int num = request.GetInteger(); wired.Items = furniItems; wired.Delay = num * 500; wiredHandler.ReloadWired(wired); break; } case Interaction.ActionBotTalkToAvatar: { request.GetInteger(); bool type = request.GetIntegerAsBool(); string[] data = request.GetString().Split((char)9); IWiredItem wired = wiredHandler.GetWired(item); wired.OtherBool = type; wired.OtherString = data[0]; wired.OtherExtraString = data[1]; wiredHandler.ReloadWired(wired); break; } case Interaction.ConditionTimeMoreThan: case Interaction.ConditionTimeLessThan: { request.GetInteger(); int time = request.GetInteger(); IWiredItem wired12 = wiredHandler.GetWired(item); Console.WriteLine(time); wired12.Delay = time * 500; wiredHandler.ReloadWired(wired12); break; } case Interaction.ConditionUserHasHanditem: { request.GetInteger(); int handitem = request.GetInteger(); IWiredItem wired = wiredHandler.GetWired(item); wired.Delay = handitem * 500; wiredHandler.ReloadWired(wired); break; } } session.SendMessage(new ServerMessage(LibraryParser.OutgoingRequest("SaveWiredMessageComposer"))); }
/// <summary> /// Adds the experience. /// </summary> /// <param name="amount">The amount.</param> internal void AddExperience(int amount) { int oldExperienceGoal = ExperienceGoal; Experience += amount; if (Experience >= 51900) { return; } if (DbState != DatabaseUpdateState.NeedsInsert) { DbState = DatabaseUpdateState.NeedsUpdate; } if (Room == null) { return; } ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AddPetExperienceMessageComposer")); serverMessage.AppendInteger(PetId); serverMessage.AppendInteger(VirtualId); serverMessage.AppendInteger(amount); Room.SendMessage(serverMessage); if (Experience < oldExperienceGoal) { return; } GameClient ownerSession = Yupi.GetGame().GetClientManager().GetClientByUserId(OwnerId); Dictionary <uint, PetCommand> totalPetCommands = PetCommandHandler.GetAllPetCommands(); Dictionary <uint, PetCommand> petCommands = PetCommandHandler.GetPetCommandByPetType(Type); if (ownerSession == null) { return; } ServerMessage levelNotify = new ServerMessage(LibraryParser.OutgoingRequest("NotifyNewPetLevelMessageComposer")); SerializeInventory(levelNotify, true); ownerSession.SendMessage(levelNotify); ServerMessage tp = new ServerMessage(); tp.Init(LibraryParser.OutgoingRequest("PetTrainerPanelMessageComposer")); tp.AppendInteger(PetId); tp.AppendInteger(totalPetCommands.Count); foreach (uint sh in totalPetCommands.Keys) { tp.AppendInteger(sh); } tp.AppendInteger(petCommands.Count); foreach (uint sh in petCommands.Keys) { tp.AppendInteger(sh); } ownerSession.SendMessage(tp); }
public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights) { if (session == null || item == null || item.GetRoom() == null || !hasRights) { return; } var wired = item.GetRoom().GetWiredHandler().GetWired(item); if (wired == null) { return; } var extraInfo = wired.OtherString; var flag = wired.OtherBool; var delay = wired.Delay / 500; var list = wired.Items.Where(roomItem => roomItem != null).ToList(); var extraString = wired.OtherExtraString; var extraString2 = wired.OtherExtraString2; switch (item.GetBaseItem().InteractionType) { case Interaction.TriggerTimer: { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage.AppendBool(false); serverMessage.AppendInteger(5); serverMessage.AppendInteger(list.Count); foreach (var current in list) { serverMessage.AppendInteger(current.Id); } serverMessage.AppendInteger(item.GetBaseItem().SpriteId); serverMessage.AppendInteger(item.Id); serverMessage.AppendString(extraInfo); serverMessage.AppendInteger(1); serverMessage.AppendInteger(1); serverMessage.AppendInteger(1); serverMessage.AppendInteger(3); serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); session.SendMessage(serverMessage); return; } case Interaction.TriggerRoomEnter: { var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage2.AppendBool(false); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(list.Count); foreach (var current2 in list) { serverMessage2.AppendInteger(current2.Id); } serverMessage2.AppendInteger(item.GetBaseItem().SpriteId); serverMessage2.AppendInteger(item.Id); serverMessage2.AppendString(extraInfo); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(7); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); session.SendMessage(serverMessage2); return; } case Interaction.TriggerGameEnd: { var serverMessage3 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage3.AppendBool(false); serverMessage3.AppendInteger(0); serverMessage3.AppendInteger(list.Count); foreach (var current3 in list) { serverMessage3.AppendInteger(current3.Id); } serverMessage3.AppendInteger(item.GetBaseItem().SpriteId); serverMessage3.AppendInteger(item.Id); serverMessage3.AppendString(extraInfo); serverMessage3.AppendInteger(0); serverMessage3.AppendInteger(0); serverMessage3.AppendInteger(8); serverMessage3.AppendInteger(0); serverMessage3.AppendInteger(0); serverMessage3.AppendInteger(0); session.SendMessage(serverMessage3); return; } case Interaction.TriggerGameStart: { var serverMessage4 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage4.AppendBool(false); serverMessage4.AppendInteger(0); serverMessage4.AppendInteger(list.Count); foreach (var current4 in list) { serverMessage4.AppendInteger(current4.Id); } serverMessage4.AppendInteger(item.GetBaseItem().SpriteId); serverMessage4.AppendInteger(item.Id); serverMessage4.AppendString(extraInfo); serverMessage4.AppendInteger(0); serverMessage4.AppendInteger(0); serverMessage4.AppendInteger(8); serverMessage4.AppendInteger(0); serverMessage4.AppendInteger(0); serverMessage4.AppendInteger(0); session.SendMessage(serverMessage4); return; } case Interaction.TriggerLongRepeater: { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage.AppendBool(false); serverMessage.AppendInteger(5); serverMessage.AppendInteger(0); serverMessage.AppendInteger(item.GetBaseItem().SpriteId); serverMessage.AppendInteger(item.Id); serverMessage.AppendString(""); serverMessage.AppendInteger(1); serverMessage.AppendInteger(delay / 10); //fix serverMessage.AppendInteger(0); serverMessage.AppendInteger(12); serverMessage.AppendInteger(0); session.SendMessage(serverMessage); return; } case Interaction.TriggerRepeater: { var serverMessage5 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage5.AppendBool(false); serverMessage5.AppendInteger(5); serverMessage5.AppendInteger(list.Count); foreach (var current5 in list) { serverMessage5.AppendInteger(current5.Id); } serverMessage5.AppendInteger(item.GetBaseItem().SpriteId); serverMessage5.AppendInteger(item.Id); serverMessage5.AppendString(extraInfo); serverMessage5.AppendInteger(1); serverMessage5.AppendInteger(delay); serverMessage5.AppendInteger(0); serverMessage5.AppendInteger(6); serverMessage5.AppendInteger(0); serverMessage5.AppendInteger(0); session.SendMessage(serverMessage5); return; } case Interaction.TriggerOnUserSay: { var serverMessage6 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage6.AppendBool(false); serverMessage6.AppendInteger(0); serverMessage6.AppendInteger(list.Count); foreach (var current6 in list) { serverMessage6.AppendInteger(current6.Id); } serverMessage6.AppendInteger(item.GetBaseItem().SpriteId); serverMessage6.AppendInteger(item.Id); serverMessage6.AppendString(extraInfo); serverMessage6.AppendInteger(0); serverMessage6.AppendInteger(0); serverMessage6.AppendInteger(0); serverMessage6.AppendInteger(0); serverMessage6.AppendInteger(0); serverMessage6.AppendInteger(0); session.SendMessage(serverMessage6); return; } case Interaction.TriggerScoreAchieved: { var serverMessage7 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage7.AppendBool(false); serverMessage7.AppendInteger(5); serverMessage7.AppendInteger(0); serverMessage7.AppendInteger(item.GetBaseItem().SpriteId); serverMessage7.AppendInteger(item.Id); serverMessage7.AppendString(""); serverMessage7.AppendInteger(1); serverMessage7.AppendInteger((String.IsNullOrWhiteSpace(extraInfo)) ? 100 : int.Parse(extraInfo)); serverMessage7.AppendInteger(0); serverMessage7.AppendInteger(10); serverMessage7.AppendInteger(0); serverMessage7.AppendInteger(0); session.SendMessage(serverMessage7); return; } case Interaction.TriggerStateChanged: { var serverMessage8 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage8.AppendBool(false); serverMessage8.AppendInteger(5); serverMessage8.AppendInteger(list.Count); foreach (var current8 in list) { serverMessage8.AppendInteger(current8.Id); } serverMessage8.AppendInteger(item.GetBaseItem().SpriteId); serverMessage8.AppendInteger(item.Id); serverMessage8.AppendString(extraInfo); serverMessage8.AppendInteger(0); serverMessage8.AppendInteger(0); serverMessage8.AppendInteger(1); serverMessage8.AppendInteger(delay); serverMessage8.AppendInteger(0); serverMessage8.AppendInteger(0); session.SendMessage(serverMessage8); return; } case Interaction.TriggerWalkOnFurni: { var serverMessage9 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage9.AppendBool(false); serverMessage9.AppendInteger(5); serverMessage9.AppendInteger(list.Count); foreach (var current9 in list) { serverMessage9.AppendInteger(current9.Id); } serverMessage9.AppendInteger(item.GetBaseItem().SpriteId); serverMessage9.AppendInteger(item.Id); serverMessage9.AppendString(extraInfo); serverMessage9.AppendInteger(0); serverMessage9.AppendInteger(0); serverMessage9.AppendInteger(1); serverMessage9.AppendInteger(0); serverMessage9.AppendInteger(0); serverMessage9.AppendInteger(0); session.SendMessage(serverMessage9); return; } case Interaction.ActionMuteUser: { var serverMessage18 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage18.AppendBool(false); serverMessage18.AppendInteger(5); serverMessage18.AppendInteger(0); serverMessage18.AppendInteger(item.GetBaseItem().SpriteId); serverMessage18.AppendInteger(item.Id); serverMessage18.AppendString(extraInfo); serverMessage18.AppendInteger(1); serverMessage18.AppendInteger(delay); serverMessage18.AppendInteger(0); serverMessage18.AppendInteger(20); serverMessage18.AppendInteger(0); serverMessage18.AppendInteger(0); session.SendMessage(serverMessage18); return; } case Interaction.TriggerWalkOffFurni: { var serverMessage10 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage10.AppendBool(false); serverMessage10.AppendInteger(5); serverMessage10.AppendInteger(list.Count); foreach (var current10 in list) { serverMessage10.AppendInteger(current10.Id); } serverMessage10.AppendInteger(item.GetBaseItem().SpriteId); serverMessage10.AppendInteger(item.Id); serverMessage10.AppendString(extraInfo); serverMessage10.AppendInteger(0); serverMessage10.AppendInteger(0); serverMessage10.AppendInteger(1); serverMessage10.AppendInteger(0); serverMessage10.AppendInteger(0); serverMessage10.AppendInteger(0); serverMessage10.AppendInteger(0); session.SendMessage(serverMessage10); return; } case Interaction.TriggerCollision: { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage.AppendBool(false); serverMessage.AppendInteger(5); serverMessage.AppendInteger(0); serverMessage.AppendInteger(item.GetBaseItem().SpriteId); serverMessage.AppendInteger(item.Id); serverMessage.AppendString(string.Empty); serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); serverMessage.AppendInteger(11); serverMessage.AppendInteger(0); session.SendMessage(serverMessage); return; } case Interaction.ActionGiveScore: { // Por hacer. var serverMessage11 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage11.AppendBool(false); serverMessage11.AppendInteger(5); serverMessage11.AppendInteger(0); serverMessage11.AppendInteger(item.GetBaseItem().SpriteId); serverMessage11.AppendInteger(item.Id); serverMessage11.AppendString(""); serverMessage11.AppendInteger(2); if (String.IsNullOrWhiteSpace(extraInfo)) { serverMessage11.AppendInteger(10); // Puntos a dar serverMessage11.AppendInteger(1); // Numero de veces por equipo } else { var integers = extraInfo.Split(','); serverMessage11.AppendInteger(int.Parse(integers[0])); // Puntos a dar serverMessage11.AppendInteger(int.Parse(integers[1])); // Numero de veces por equipo } serverMessage11.AppendInteger(0); serverMessage11.AppendInteger(6); serverMessage11.AppendInteger(0); serverMessage11.AppendInteger(0); serverMessage11.AppendInteger(0); session.SendMessage(serverMessage11); return; } case Interaction.ConditionGroupMember: case Interaction.ConditionNotGroupMember: { var message = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); message.AppendBool(false); message.AppendInteger(5); message.AppendInteger(0); message.AppendInteger(item.GetBaseItem().SpriteId); message.AppendInteger(item.Id); message.AppendString(""); message.AppendInteger(0); message.AppendInteger(0); message.AppendInteger(10); session.SendMessage(message); return; } case Interaction.ConditionItemsMatches: case Interaction.ConditionItemsDontMatch: { var serverMessage21 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage21.AppendBool(false); serverMessage21.AppendInteger(5); serverMessage21.AppendInteger(list.Count); foreach (var current20 in list) { serverMessage21.AppendInteger(current20.Id); } serverMessage21.AppendInteger(item.GetBaseItem().SpriteId); serverMessage21.AppendInteger(item.Id); serverMessage21.AppendString(extraString2); serverMessage21.AppendInteger(3); if (String.IsNullOrWhiteSpace(extraInfo) || !extraInfo.Contains(",")) { serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); } else { var boolz = extraInfo.Split(','); foreach (var stringy in boolz) { serverMessage21.AppendInteger(stringy.ToLower() == "true" ? 1 : 0); } } serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); session.SendMessage(serverMessage21); return; } case Interaction.ActionPosReset: { var serverMessage12 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage12.AppendBool(false); serverMessage12.AppendInteger(5); serverMessage12.AppendInteger(list.Count); foreach (var current12 in list) { serverMessage12.AppendInteger(current12.Id); } serverMessage12.AppendInteger(item.GetBaseItem().SpriteId); serverMessage12.AppendInteger(item.Id); serverMessage12.AppendString(extraString2); serverMessage12.AppendInteger(3); if (String.IsNullOrWhiteSpace(extraInfo)) { serverMessage12.AppendInteger(0); serverMessage12.AppendInteger(0); serverMessage12.AppendInteger(0); } else { var boolz = extraInfo.Split(','); foreach (var stringy in boolz) { serverMessage12.AppendInteger(stringy.ToLower() == "true" ? 1 : 0); } } serverMessage12.AppendInteger(0); serverMessage12.AppendInteger(3); serverMessage12.AppendInteger(delay); // Delay serverMessage12.AppendInteger(0); session.SendMessage(serverMessage12); return; } case Interaction.ActionMoveRotate: case Interaction.ActionMoveToDir: { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage.AppendBool(false); serverMessage.AppendInteger(5); serverMessage.AppendInteger(list.Count(roomItem => roomItem != null)); foreach (var roomItem in list.Where(roomItem => roomItem != null)) { serverMessage.AppendInteger(roomItem.Id); } serverMessage.AppendInteger(item.GetBaseItem().SpriteId); serverMessage.AppendInteger(item.Id); serverMessage.AppendString(string.Empty); serverMessage.AppendInteger(2); serverMessage.AppendIntegersArray(extraInfo, ';', 2); serverMessage.AppendInteger(0); serverMessage.AppendInteger(4); serverMessage.AppendInteger(delay); serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); session.SendMessage(serverMessage); return; } case Interaction.ActionResetTimer: { var serverMessage14 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage14.AppendBool(false); serverMessage14.AppendInteger(5); serverMessage14.AppendInteger(list.Count); foreach (var current14 in list) { serverMessage14.AppendInteger(current14.Id); } serverMessage14.AppendInteger(item.GetBaseItem().SpriteId); serverMessage14.AppendInteger(item.Id); serverMessage14.AppendString(extraInfo); serverMessage14.AppendInteger(0); serverMessage14.AppendInteger(0); serverMessage14.AppendInteger(0); serverMessage14.AppendInteger(0); serverMessage14.AppendInteger(0); serverMessage14.AppendInteger(0); session.SendMessage(serverMessage14); return; } case Interaction.ActionShowMessage: case Interaction.ActionKickUser: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(list.Count); foreach (var current15 in list) { serverMessage15.AppendInteger(current15.Id); } serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(7); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionTeleportTo: { var serverMessage16 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage16.AppendBool(false); serverMessage16.AppendInteger(5); serverMessage16.AppendInteger(list.Count); foreach (var roomItem in list) { serverMessage16.AppendInteger(roomItem.Id); } serverMessage16.AppendInteger(item.GetBaseItem().SpriteId); serverMessage16.AppendInteger(item.Id); serverMessage16.AppendString(extraInfo); serverMessage16.AppendInteger(0); serverMessage16.AppendInteger(8); serverMessage16.AppendInteger(0); serverMessage16.AppendInteger(delay); serverMessage16.AppendInteger(0); serverMessage16.AppendByte(2); session.SendMessage(serverMessage16); return; } case Interaction.ActionToggleState: { var serverMessage17 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage17.AppendBool(false); serverMessage17.AppendInteger(5); serverMessage17.AppendInteger(list.Count); foreach (var current17 in list) { serverMessage17.AppendInteger(current17.Id); } serverMessage17.AppendInteger(item.GetBaseItem().SpriteId); serverMessage17.AppendInteger(item.Id); serverMessage17.AppendString(extraInfo); serverMessage17.AppendInteger(0); serverMessage17.AppendInteger(8); serverMessage17.AppendInteger(0); serverMessage17.AppendInteger(delay); serverMessage17.AppendInteger(0); serverMessage17.AppendInteger(0); session.SendMessage(serverMessage17); return; } case Interaction.ActionGiveReward: { var serverMessage18 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage18.AppendBool(false); serverMessage18.AppendInteger(5); serverMessage18.AppendInteger(0); serverMessage18.AppendInteger(item.GetBaseItem().SpriteId); serverMessage18.AppendInteger(item.Id); serverMessage18.AppendString(extraInfo); serverMessage18.AppendInteger(3); serverMessage18.AppendInteger(extraString == "" ? 0 : int.Parse(extraString)); serverMessage18.AppendInteger(flag ? 1 : 0); serverMessage18.AppendInteger(extraString2 == "" ? 0 : int.Parse(extraString2)); serverMessage18.AppendInteger(0); serverMessage18.AppendInteger(17); serverMessage18.AppendInteger(0); serverMessage18.AppendInteger(0); session.SendMessage(serverMessage18); return; } case Interaction.ConditionHowManyUsersInRoom: case Interaction.ConditionNegativeHowManyUsers: { var serverMessage19 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage19.AppendBool(false); serverMessage19.AppendInteger(5); serverMessage19.AppendInteger(0); serverMessage19.AppendInteger(item.GetBaseItem().SpriteId); serverMessage19.AppendInteger(item.Id); serverMessage19.AppendString(""); serverMessage19.AppendInteger(2); if (String.IsNullOrWhiteSpace(extraInfo)) { serverMessage19.AppendInteger(1); serverMessage19.AppendInteger(50); } else { foreach (var integers in extraInfo.Split(',')) { serverMessage19.AppendInteger(int.Parse(integers)); } } serverMessage19.AppendBool(false); serverMessage19.AppendInteger(0); serverMessage19.AppendInteger(1290); session.SendMessage(serverMessage19); return; } case Interaction.ConditionFurnisHaveUsers: case Interaction.ConditionStatePos: case Interaction.ConditionTriggerOnFurni: case Interaction.ConditionFurniHasFurni: case Interaction.ConditionFurniTypeMatches: case Interaction.ConditionFurniHasNotFurni: case Interaction.ConditionFurnisHaveNotUsers: case Interaction.ConditionFurniTypeDontMatch: case Interaction.ConditionTriggererNotOnFurni: { var serverMessage19 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage19.AppendBool(false); serverMessage19.AppendInteger(5); serverMessage19.AppendInteger(list.Count); foreach (var current18 in list) { serverMessage19.AppendInteger(current18.Id); } serverMessage19.AppendInteger(item.GetBaseItem().SpriteId); serverMessage19.AppendInteger(item.Id); serverMessage19.AppendInteger(0); serverMessage19.AppendInteger(0); serverMessage19.AppendInteger(0); serverMessage19.AppendBool(false); serverMessage19.AppendBool(true); session.SendMessage(serverMessage19); return; } case Interaction.ConditionTimeLessThan: case Interaction.ConditionTimeMoreThan: { var serverMessage21 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage21.AppendBool(false); serverMessage21.AppendInteger(5); serverMessage21.AppendInteger(list.Count); foreach (var current20 in list) { serverMessage21.AppendInteger(current20.Id); } serverMessage21.AppendInteger(item.GetBaseItem().SpriteId); serverMessage21.AppendInteger(item.Id); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); session.SendMessage(serverMessage21); return; } case Interaction.ConditionUserWearingEffect: case Interaction.ConditionUserNotWearingEffect: { int effect; int.TryParse(extraInfo, out effect); var serverMessage21 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage21.AppendBool(false); serverMessage21.AppendInteger(5); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(item.GetBaseItem().SpriteId); serverMessage21.AppendInteger(item.Id); serverMessage21.AppendString(""); serverMessage21.AppendInteger(1); serverMessage21.AppendInteger(effect); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(12); session.SendMessage(serverMessage21); return; } case Interaction.ConditionUserWearingBadge: case Interaction.ConditionUserNotWearingBadge: case Interaction.ConditionUserHasFurni: { var serverMessage21 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage21.AppendBool(false); serverMessage21.AppendInteger(5); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(item.GetBaseItem().SpriteId); serverMessage21.AppendInteger(item.Id); serverMessage21.AppendString(extraInfo); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(11); session.SendMessage(serverMessage21); return; } case Interaction.ConditionDateRangeActive: { var date1 = 0; var date2 = 0; try { var strArray = extraInfo.Split(','); date1 = int.Parse(strArray[0]); date2 = int.Parse(strArray[1]); } catch { } var serverMessage21 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage21.AppendBool(false); serverMessage21.AppendInteger(5); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(item.GetBaseItem().SpriteId); serverMessage21.AppendInteger(item.Id); serverMessage21.AppendString(extraInfo); serverMessage21.AppendInteger(2); serverMessage21.AppendInteger(date1); serverMessage21.AppendInteger(date2); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(24); session.SendMessage(serverMessage21); return; } case Interaction.ActionJoinTeam: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(1); serverMessage15.AppendInteger(delay); // Team (1-4) serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(9); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionLeaveTeam: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(10); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.TriggerBotReachedAvatar: { var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage2.AppendBool(false); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(list.Count); foreach (var current2 in list) { serverMessage2.AppendInteger(current2.Id); } serverMessage2.AppendInteger(item.GetBaseItem().SpriteId); serverMessage2.AppendInteger(item.Id); serverMessage2.AppendString(extraInfo); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(14); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); session.SendMessage(serverMessage2); return; } case Interaction.TriggerBotReachedStuff: { var serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("WiredTriggerMessageComposer")); serverMessage2.AppendBool(false); serverMessage2.AppendInteger(5); serverMessage2.AppendInteger(list.Count); foreach (var current2 in list) { serverMessage2.AppendInteger(current2.Id); } serverMessage2.AppendInteger(item.GetBaseItem().SpriteId); serverMessage2.AppendInteger(item.Id); serverMessage2.AppendString(extraInfo); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(13); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); serverMessage2.AppendInteger(0); session.SendMessage(serverMessage2); return; } case Interaction.ActionBotClothes: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo + (char)9 + extraString); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(26); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionBotFollowAvatar: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(25); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionBotGiveHanditem: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(1); serverMessage15.AppendInteger(delay); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(24); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionBotMove: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(5); serverMessage15.AppendInteger(list.Count); foreach (var current2 in list) { serverMessage15.AppendInteger(current2.Id); } serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(22); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionBotTalk: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo + (char)9 + extraString); serverMessage15.AppendInteger(1); serverMessage15.AppendInteger(Plus.BoolToInteger(flag)); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(23); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionBotTalkToAvatar: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(27); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionBotTeleport: { var serverMessage15 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage15.AppendBool(false); serverMessage15.AppendInteger(5); serverMessage15.AppendInteger(list.Count); foreach (var current2 in list) { serverMessage15.AppendInteger(current2.Id); } serverMessage15.AppendInteger(item.GetBaseItem().SpriteId); serverMessage15.AppendInteger(item.Id); serverMessage15.AppendString(extraInfo); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(21); serverMessage15.AppendInteger(0); serverMessage15.AppendInteger(0); session.SendMessage(serverMessage15); return; } case Interaction.ActionChase: { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage.AppendBool(false); serverMessage.AppendInteger(5); serverMessage.AppendInteger(list.Count); foreach (var roomItem in list) { serverMessage.AppendInteger(roomItem.Id); } serverMessage.AppendInteger(item.GetBaseItem().SpriteId); serverMessage.AppendInteger(item.Id); serverMessage.AppendString(string.Empty); serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); serverMessage.AppendInteger(11); serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); session.SendMessage(serverMessage); return; } case Interaction.ConditionBotHasHanditem: { var serverMessage21 = new ServerMessage(LibraryParser.OutgoingRequest("WiredConditionMessageComposer")); serverMessage21.AppendBool(false); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(item.GetBaseItem().SpriteId); serverMessage21.AppendInteger(item.Id); serverMessage21.AppendString(extraInfo); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(0); serverMessage21.AppendInteger(25); session.SendMessage(serverMessage21); return; } case Interaction.ArrowPlate: case Interaction.PressurePad: case Interaction.RingPlate: case Interaction.ColorTile: case Interaction.ColorWheel: case Interaction.FloorSwitch1: case Interaction.FloorSwitch2: case Interaction.FireGate: case Interaction.GlassFoor: break; case Interaction.SpecialRandom: { var serverMessage24 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage24.AppendBool(false); serverMessage24.AppendInteger(5); serverMessage24.AppendInteger(list.Count); foreach (var current23 in list) { serverMessage24.AppendInteger(current23.Id); } serverMessage24.AppendInteger(item.GetBaseItem().SpriteId); serverMessage24.AppendInteger(item.Id); serverMessage24.AppendString(extraInfo); serverMessage24.AppendInteger(0); serverMessage24.AppendInteger(8); serverMessage24.AppendInteger(0); serverMessage24.AppendInteger(0); serverMessage24.AppendInteger(0); serverMessage24.AppendInteger(0); session.SendMessage(serverMessage24); return; } case Interaction.SpecialUnseen: { var serverMessage25 = new ServerMessage(LibraryParser.OutgoingRequest("WiredEffectMessageComposer")); serverMessage25.AppendBool(false); serverMessage25.AppendInteger(5); serverMessage25.AppendInteger(list.Count); foreach (var current24 in list) { serverMessage25.AppendInteger(current24.Id); } serverMessage25.AppendInteger(item.GetBaseItem().SpriteId); serverMessage25.AppendInteger(item.Id); serverMessage25.AppendString(extraInfo); serverMessage25.AppendInteger(0); serverMessage25.AppendInteger(8); serverMessage25.AppendInteger(0); serverMessage25.AppendInteger(0); serverMessage25.AppendInteger(0); serverMessage25.AppendInteger(0); session.SendMessage(serverMessage25); return; } default: return; } }
/// <summary> /// Loads this instance. /// </summary> public static void Load() { Cache.Clear(); var message = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); message.AppendString("furni_placement_error"); message.AppendInteger(1); message.AppendString("message"); message.AppendString("${room.error.cant_set_item}"); Cache.Add(StaticMessage.ErrorCantSetItem, message.GetReversedBytes()); message = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); message.AppendString("furni_placement_error"); message.AppendInteger(1); message.AppendString("message"); message.AppendString("${room.error.cant_set_not_owner}"); Cache.Add(StaticMessage.ErrorCantSetNotOwner, message.GetReversedBytes()); message = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); message.AppendString("game_promo_small"); message.AppendInteger(4); message.AppendString("title"); message.AppendString("${generic.notice}"); message.AppendString("message"); message.AppendString("Now, the commands page opens in a different way"); message.AppendString("linkUrl"); message.AppendString("event:habbopages/chat/newway"); message.AppendString("linkTitle"); message.AppendString("${mod.alert.link}"); Cache.Add(StaticMessage.NewWayToOpenCommandsList, message.GetReversedBytes()); message = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); message.AppendString(""); message.AppendInteger(4); message.AppendString("title"); message.AppendString("${generic.notice}"); message.AppendString("message"); message.AppendString("${catalog.gift_wrapping.receiver_not_found.title}"); message.AppendString("linkUrl"); message.AppendString("event:"); message.AppendString("linkTitle"); message.AppendString("ok"); Cache.Add(StaticMessage.UserNotFound, message.GetReversedBytes()); message = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); message.AppendString(""); message.AppendInteger(4); message.AppendString("title"); message.AppendString("${generic.notice}"); message.AppendString("message"); message.AppendString("You've exceeded the maximum furnis in inventory. Only furnis 2800 will show if you want to see the others, places some Furni in your rooms."); message.AppendString("linkUrl"); message.AppendString("event:"); message.AppendString("linkTitle"); message.AppendString("ok"); Cache.Add(StaticMessage.AdviceMaxItems, message.GetReversedBytes()); message = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); message.AppendString(""); message.AppendInteger(4); message.AppendString("title"); message.AppendString("${generic.notice}"); message.AppendString("message"); message.AppendString("You've exceeded the maximum furnis in inventory. You can not buy more until you desagas some furnis."); message.AppendString("linkUrl"); message.AppendString("event:"); message.AppendString("linkTitle"); message.AppendString("ok"); Cache.Add(StaticMessage.AdvicePurchaseMaxItems, message.GetReversedBytes()); }
/// <summary> /// Serializes the user chatlog. /// </summary> /// <param name="userId">The user identifier.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage SerializeUserChatlog(uint userId) { ServerMessage result; using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Format("SELECT room_id FROM users_chatlogs WHERE user_id = {0} ORDER BY timestamp DESC LIMIT 1", userId)); DataTable table = queryReactor.GetTable(); var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ModerationToolUserChatlogMessageComposer")); serverMessage.AppendInteger(userId); serverMessage.AppendString(Plus.GetGame().GetClientManager().GetNameById(userId)); if (table != null) { serverMessage.AppendInteger(table.Rows.Count); IEnumerator enumerator = table.Rows.GetEnumerator(); try { while (enumerator.MoveNext()) { var dataRow = (DataRow)enumerator.Current; queryReactor.SetQuery(string.Concat(new object[] { "SELECT user_id,timestamp,message FROM users_chatlogs WHERE room_id = ", (uint)dataRow["room_id"], " AND user_id = ", userId, " ORDER BY timestamp DESC LIMIT 500" })); DataTable table2 = queryReactor.GetTable(); RoomData roomData = Plus.GetGame().GetRoomManager().GenerateRoomData((uint)dataRow["room_id"]); if (table2 != null) { serverMessage.AppendByte(1); serverMessage.AppendShort(2); serverMessage.AppendString("roomName"); serverMessage.AppendByte(2); serverMessage.AppendString(roomData == null ? "This room was deleted" : roomData.Name); serverMessage.AppendString("roomId"); serverMessage.AppendByte(1); serverMessage.AppendInteger((uint)dataRow["room_id"]); serverMessage.AppendShort(table2.Rows.Count); IEnumerator enumerator2 = table2.Rows.GetEnumerator(); try { while (enumerator2.MoveNext()) { var dataRow2 = (DataRow)enumerator2.Current; Habbo habboForId = Plus.GetHabboById((uint)dataRow2["user_id"]); Plus.UnixToDateTime((double)dataRow2["timestamp"]); if (habboForId == null) { return(null); } serverMessage.AppendInteger(((int)(Plus.GetUnixTimeStamp() - (double)dataRow2["timestamp"]))); serverMessage.AppendInteger(habboForId.Id); serverMessage.AppendString(habboForId.UserName); serverMessage.AppendString(dataRow2["message"].ToString()); serverMessage.AppendBool(false); } continue; } finally { var disposable = enumerator2 as IDisposable; if (disposable != null) { disposable.Dispose(); } } } serverMessage.AppendByte(1); serverMessage.AppendShort(0); serverMessage.AppendShort(0); } goto IL_29B; } finally { var disposable2 = enumerator as IDisposable; if (disposable2 != null) { disposable2.Dispose(); } } } serverMessage.AppendInteger(0); IL_29B: result = serverMessage; } return(result); }
public static bool CanAttack(GameClient User1, GameClient User2, bool Weapon = false) { #region Fundamental Null Checks if (User2 == null) { User1.SendWhisper("This user was not found in this room!"); return(false); } if (User2.GetHabbo() == null) { User1.SendWhisper("This user was not found in this room!"); return(false); } if (User2.GetHabbo().CurrentRoom == null) { User1.SendWhisper("This user was not found in this room!"); return(false); } if (User2.GetHabbo().CurrentRoom != User1.GetHabbo().CurrentRoom) { User1.SendWhisper("This user was not found in this room!"); return(false); } #endregion Room Room = User1.GetHabbo().CurrentRoom; RoomUser RoomUser1 = User1.GetHabbo().GetRoomUser(); RoomUser RoomUser2 = User2.GetHabbo().GetRoomUser(); Vector2D Pos1 = new Vector2D(RoomUser1.X, RoomUser1.Y); Vector2D Pos2 = new Vector2D(RoomUser2.X, RoomUser2.Y); #region Cooldown Checks if (!Weapon) { if (User1.GetRoleplay().CoolDown > 0) { User1.SendWhisper("You are cooling down! [" + User1.GetRoleplay().CoolDown + "/3]"); return(false); } } #endregion #region Game Checks if (User2.GetRoleplay().inColourWars&& !User1.GetRoleplay().inColourWars) { Room mRoom = RoleplayManager.GenerateRoom(ColourManager.MainLobby); User1.GetRoleplay().RequestedTaxi_Arrived = false; User1.GetRoleplay().RecentlyCalledTaxi = true; User1.GetRoleplay().RecentlyCalledTaxi_Timeout = 10; User1.GetRoleplay().RequestedTaxiDestination = mRoom; User1.GetRoleplay().RequestedTaxi = true; User1.GetRoleplay().taxiTimer = new taxiTimer(User1); User1.SendNotif("You cannot attack this person as they are in color wars! Please taxi out of the color wars room."); return(false); } if (User1.GetRoleplay().inColourWars&& !User2.GetRoleplay().inColourWars) { User1.SendNotif("You cannot attack this person as they are not in color wars!"); return(false); } #endregion #region Special Checks if (User1.GetRoleplay().RayFrozen) { User1.SendWhisper("You cannot do this as you are frozen!"); return(false); } #endregion if (!Weapon) { #region Fundamental Checks if (Room.RoomData.Description.Contains("NOHIT") && RoleplayManager.PurgeTime == false) { User1.SendWhisper("Sorry, but this is a no hitting zone!"); User1.GetRoleplay().CoolDown = 3; return(false); } #endregion #region Secondary Checks if (Room.RoomData.Description.Contains("SAFEZONE")) { User1.SendWhisper("Sorry, but this is a safezone!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (Room.RoomData.Description.Contains("BRAWL") && !User1.GetRoleplay().inBrawl&& !User1.GetRoleplay().Brawl) { User1.SendWhisper("You are not in a brawl, so you cannot do this!"); return(false); } if (User2.GetRoleplay().usingPlane) { User1.SendWhisper("You cannot hit this user as they are in the sky!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (User1.GetRoleplay().Energy <= 0 && !User1.GetRoleplay().inColourWars) { User1.SendWhisper("You do not have enough energy to do this!"); return(false); } if (User1.GetRoleplay().Dead) { User1.SendWhisper("Cannot complete this action while you are dead!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (User1.GetRoleplay().Jailed) { User1.SendWhisper("Cannot complete this action while you are jailed!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (User2.GetRoleplay().Dead) { User1.SendWhisper("Cannot complete this action as this user is dead!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (User2.GetRoleplay().Jailed) { User1.SendWhisper("Cannot complete this action as this user is jailed!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (RoomUser1.Stunned) { User1.SendWhisper("Cannot complete this action while you are stunned!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (RoomUser2.IsAsleep) { User1.SendWhisper("Cannot complete this action as this user is AFK!"); User1.GetRoleplay().CoolDown = 3; return(false); } if (User1.GetRoleplay().IsNoob&& !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("COLOR") && !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("MAFIA")) { if (!User1.GetRoleplay().NoobWarned) { User1.SendNotif("If you choose to do this again your temporary God Protection will be disabled!"); User1.GetRoleplay().NoobWarned = true; return(false); } else { using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("UPDATE rp_stats SET is_noob = 0 WHERE id = '" + User1.GetHabbo().Id + "'"); } User1.SendWhisper("Your god protection has been disabled!"); User1.GetRoleplay().IsNoob = false; User1.GetRoleplay().SaveQuickStat("is_noob", "0"); } } if (User2.GetRoleplay().IsNoob&& !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("COLOR") && !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("MAFIA") && !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("NPA")) { User1.SendWhisper("Cannot complete this action as this user is under God Protection!"); return(false); } #endregion #region Final Checks if (RoleplayManager.WithinAttackDistance(RoomUser1, RoomUser2)) { } else if (RoleplayManager.Distance(Pos1, Pos2) > 2 && RoleplayManager.Distance(Pos1, Pos2) <= 4) { RoomUser1.LastBubble = 3; User1.Shout("*Swings at " + User2.GetHabbo().UserName + ", but misses*"); User1.GetRoleplay().CoolDown = 3; RoomUser1.LastBubble = 0; return(false); } else if (RoleplayManager.Distance(Pos1, Pos2) >= 5) { User1.SendWhisper("You are too far away!"); User1.GetRoleplay().CoolDown = 3; return(false); } #endregion } else if (Weapon) { #region Fundamental Checks if (User1.GetRoleplay().Energy < WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Need_Energy) { User1.SendWhisper("You do not have enough energy to do this!"); return(false); } if (User1.GetRoleplay().inBrawl == true) { User1.SendWhisper("Cannot do this in a Brawl"); return(false); } if (User1.GetRoleplay().Dead) { User1.SendWhisper("Cannot complete this action while you are dead!"); return(false); } if (User1.GetRoleplay().Jailed) { User1.SendWhisper("Cannot complete this action while you are jailed!"); return(false); } if (User2.GetRoleplay().Dead) { User1.SendWhisper("Cannot complete this action as this user is dead!"); return(false); } if (User2.GetRoleplay().Jailed) { User1.SendWhisper("Cannot complete this action as this user is jailed!"); return(false); } if (RoomUser1.Stunned) { User1.SendWhisper("Cannot complete this action while you are stunned!"); return(false); } if (RoomUser2.IsAsleep) { User1.SendWhisper("Cannot complete this action as this user is AFK!"); return(false); } if (RoomUser1.IsAsleep) { User1.SendWhisper("Cannot complete this action as this user is AFK!"); return(false); } if (User1.GetRoleplay().IsNoob&& !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("COLOR") && !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("MAFIA")) { if (!User1.GetRoleplay().NoobWarned) { User1.SendNotif("If you choose to do this again your temporary God Protection will be disabled!"); User1.GetRoleplay().NoobWarned = true; return(false); } else { using (IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.RunFastQuery("UPDATE rp_stats SET is_noob = 0 WHERE id = '" + User1.GetHabbo().Id + "'"); } User1.SendWhisper("Your god protection has been disabled!"); User1.GetRoleplay().IsNoob = false; User1.GetRoleplay().SaveQuickStat("is_noob", "0"); } } if (User2.GetRoleplay().IsNoob&& !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("COLOR") && !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("MAFIA") && !User1.GetHabbo().CurrentRoom.RoomData.Description.Contains("NPA")) { User1.SendWhisper("Cannot complete this action as this user is under God Protection!"); return(false); } #endregion #region Secondary Checks if (Room.RoomData.Description.Contains("NOSHOOT") && RoleplayManager.PurgeTime == false) { User1.SendWhisper("Sorry, but this is a non shooting zone!"); return(false); } if (Room.RoomData.Description.Contains("SAFEZONE")) { User1.SendWhisper("Sorry, but this is a safe zone!"); return(false); } if (User1.GetRoleplay().Equiped == null) { User1.SendWhisper("You have not equiped a weapon!"); return(false); } if (!WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Type.ToLower().Contains("gun")) { User1.SendWhisper("The weapon you have equiped is not a gun!"); return(false); } if (User2.GetRoleplay().usingPlane&& !WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Name.ToLower().Contains("rpg")) { User1.Shout("*Attempts to shoot " + User2.GetHabbo().UserName + ", but misses as they are in a plane*"); User1.GetRoleplay().GunShots++; return(false); } int MyJobId = User1.GetRoleplay().JobId; int MyJobRank = User1.GetRoleplay().JobRank; if (User1.GetRoleplay().Bullets <= 0 && (!JobManager.JobRankData[MyJobId, MyJobRank].hasRights("army") && !User1.GetRoleplay().Working)) { User1.SendWhisper("You do not have any bullets!"); return(false); } if (User1.GetRoleplay().Intelligence < WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Min_Intel) { User1.SendWhisper("You must have an intelligence level of at least " + WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Min_Intel + " to use this weapon!"); return(false); } if (User1.GetRoleplay().Strength + User1.GetRoleplay().savedSTR < WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Need_Str) { User1.SendWhisper("You must have a strength level of at least " + WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Need_Str + " to use this weapon!"); return(false); } if (User1.GetRoleplay().GunShots >= WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Reload_Time) { RoomUser1.LastBubble = 3; User1.Shout("*Reloads their " + WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].DisplayName + ", and loads more bullets*"); RoomUser1.LastBubble = 0; ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("FloodFilterMessageComposer")); message.AppendInteger(5); RoomUser1.IsGunReloaded = true; RoomUser1.ReloadExpiryTime = Plus.GetUnixTimeStamp() + 5; User1.SendMessage(message); User1.GetRoleplay().GunShots = 0; // will re-inplement this later -> HabboHotel.Misc.ChatCommandHandler.Parse(User1, ":shoot " + TargetUser1.GetHabbo().UserName); return(false); } #endregion #region Final Checks if (RoleplayManager.Distance(Pos1, Pos2) > WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Range) { /*if (Misc.Distance(Pos1, Pos2) > weaponManager.WeaponsData[User1.GetRoleplay().Equiped].Range + 4) * { * User1.SendWhisper("You must be closer to do this!"); * return false; * }*/ RoomUser1.LastBubble = 3; User1.Shout("*Shoots their " + WeaponManager.WeaponsData[User1.GetRoleplay().Equiped].Name + " at " + User2.GetHabbo().UserName + ", but misses*"); RoomUser1.LastBubble = 0; User1.GetRoleplay().GunShots++; return(false); } #endregion } return(true); }
/// <summary> /// Serializes the tool. /// </summary> /// <param name="session">The session.</param> /// <returns>ServerMessage.</returns> internal ServerMessage SerializeTool(GameClient session) { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("LoadModerationToolMessageComposer")); serverMessage.AppendInteger(Tickets.Count); foreach (var current in Tickets) { current.Serialize(serverMessage); } serverMessage.AppendInteger(UserMessagePresets.Count); foreach (var current2 in UserMessagePresets) { serverMessage.AppendString(current2); } IEnumerable <ModerationTemplate> enumerable = (from x in ModerationTemplates.Values where x.Category == -1 select x).ToArray(); serverMessage.AppendInteger(enumerable.Count()); using (var enumerator3 = enumerable.GetEnumerator()) { var first = true; while (enumerator3.MoveNext()) { var template = enumerator3.Current; IEnumerable <ModerationTemplate> enumerable2 = (from x in ModerationTemplates.Values where x.Category == (long)((ulong)template.Id) select x).ToArray(); serverMessage.AppendString(template.CName); serverMessage.AppendBool(first); serverMessage.AppendInteger(enumerable2.Count()); foreach (var current3 in enumerable2) { serverMessage.AppendString(current3.Caption); serverMessage.AppendString(current3.BanMessage); serverMessage.AppendInteger(current3.BanHours); serverMessage.AppendInteger(Plus.BoolToInteger(current3.AvatarBan)); serverMessage.AppendInteger(Plus.BoolToInteger(current3.Mute)); serverMessage.AppendInteger(Plus.BoolToInteger(current3.TradeLock)); serverMessage.AppendString(current3.WarningMessage); serverMessage.AppendBool(true); //showHabboWay } first = false; } } // but = button serverMessage.AppendBool(true); //ticket_queue_but serverMessage.AppendBool(session.GetHabbo().HasFuse("fuse_chatlogs")); //chatlog_but serverMessage.AppendBool(session.GetHabbo().HasFuse("fuse_alert")); //message_but serverMessage.AppendBool(true); //modaction_but serverMessage.AppendBool(session.GetHabbo().HasFuse("fuse_ban")); //ban_but serverMessage.AppendBool(true); serverMessage.AppendBool(session.GetHabbo().HasFuse("fuse_kick")); //kick_but serverMessage.AppendInteger(RoomMessagePresets.Count); foreach (var current4 in RoomMessagePresets) { serverMessage.AppendString(current4); } return(serverMessage); }
/// <summary> /// Composes the club purchase page. /// </summary> /// <param name="session">The session.</param> /// <param name="windowId">The window identifier.</param> /// <returns>ServerMessage.</returns> internal static ServerMessage ComposeClubPurchasePage(GameClient session, int windowId) { ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("CatalogueClubPageMessageComposer")); List <CatalogItem> habboClubItems = Yupi.GetGame().GetCatalog().HabboClubItems; message.AppendInteger(habboClubItems.Count); foreach (CatalogItem item in habboClubItems) { message.AppendInteger(item.Id); message.AppendString(item.Name); message.AppendBool(false); message.AppendInteger(item.CreditsCost); if (item.DiamondsCost > 0) { message.AppendInteger(item.DiamondsCost); message.AppendInteger(105); } else { message.AppendInteger(item.DucketsCost); message.AppendInteger(0); } message.AppendBool(true); string[] fuckingArray = item.Name.Split('_'); double dayTime = 31; if (item.Name.Contains("DAY")) { dayTime = int.Parse(fuckingArray[3]); } else if (item.Name.Contains("MONTH")) { int monthTime = int.Parse(fuckingArray[3]); dayTime = monthTime * 31; } else if (item.Name.Contains("YEAR")) { int yearTimeOmg = int.Parse(fuckingArray[3]); dayTime = yearTimeOmg * 31 * 12; } DateTime newExpiryDate = DateTime.Now.AddDays(dayTime); if (session.GetHabbo().GetSubscriptionManager().HasSubscription) { newExpiryDate = Yupi.UnixToDateTime(session.GetHabbo().GetSubscriptionManager().GetSubscription().ExpireTime) .AddDays(dayTime); } message.AppendInteger((int)dayTime / 31); message.AppendInteger((int)dayTime); message.AppendBool(false); message.AppendInteger((int)dayTime); message.AppendInteger(newExpiryDate.Year); message.AppendInteger(newExpiryDate.Month); message.AppendInteger(newExpiryDate.Day); } message.AppendInteger(windowId); return(message); }
/// <summary> /// Progresses the user achievement. /// </summary> /// <param name="session">The session.</param> /// <param name="achievementGroup">The achievement group.</param> /// <param name="progressAmount">The progress amount.</param> /// <param name="fromZero">if set to <c>true</c> [from zero].</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> internal bool ProgressUserAchievement(GameClient session, string achievementGroup, uint progressAmount, bool fromZero = false) { if (Achievements.ContainsKey(achievementGroup) && session?.GetHabbo() != null) { Achievement achievement = Achievements[achievementGroup]; Habbo user = session.GetHabbo(); // Get UserAchievementData, if the user doesn't has the Achievement, create a new. UserAchievement userAchievement = user.Achievements.ContainsKey(achievementGroup) ? user.GetAchievementData(achievementGroup) : new UserAchievement(achievementGroup, 0, 0); // If is a New Achievement is fromZero if (!user.Achievements.ContainsKey(achievementGroup)) { fromZero = true; } // If user hasn't the Achievement, after created the new, Must add in Collections. if (!user.Achievements.ContainsKey(achievementGroup)) { user.Achievements.Add(achievementGroup, userAchievement); } // Get Achievement userAchievement = user.Achievements[achievementGroup]; // Total Levels from this Achievement uint achievementLevelsCount = (uint)achievement.Levels.Count; // Get User Achievement Level uint achievementCurrentLevel = userAchievement.Level; // Get User Achievement Progress uint achievementCurrentProgress = userAchievement.Progress; // If the next Level is the last level must set to Levels.Count (Ex: 38 Levels => .Count = 37 (Max Level in the Array, but .Count 37 == 38, Soo need put Level - 1) uint achievementNextLevel = achievementCurrentLevel + 1 > achievementLevelsCount ? achievementLevelsCount : achievementCurrentLevel + 1; // Set Achievement Progress uint achievementProgress = achievementCurrentProgress + progressAmount; // If he has already the Max, something is wrong. if (achievementCurrentLevel == achievementLevelsCount) { return(false); } // Get Next Level Data AchievementLevel achievementNextLevelData = achievement.Levels[achievementNextLevel]; // if progress isn't sufficient or, isn't new Achievement if (achievementProgress < achievementNextLevelData.Requirement || achievementCurrentLevel >= 1) { fromZero = false; } // If progress is sufficient to next level, or is new Achievement if (achievementProgress >= achievementNextLevelData.Requirement || (achievementCurrentLevel < 1)) { fromZero = true; } // if is a new level (but level isn't 0) if (achievementProgress >= achievementNextLevelData.Requirement) { achievementProgress = 0; } // If is new Level if (fromZero) { // Set Level userAchievement.SetLevel(achievementNextLevel); // Set Progress userAchievement.SetProgress(achievementProgress); // Give Reward Points user.AchievementPoints += achievementNextLevelData.RewardPoints; user.NotifyNewPixels(achievementNextLevelData.RewardPixels); user.ActivityPoints += achievementNextLevelData.RewardPixels; // Update Points Balance user.UpdateActivityPointsBalance(); // Remove old Badge - (Is not problem if is First Level Badge, because if the user hasn't the badg, simply, will not remove. user.GetBadgeComponent().RemoveBadge(Convert.ToString($"{achievementGroup}{achievementNextLevel - 1}"), session); // Give new Badge user.GetBadgeComponent().GiveBadge($"{achievementGroup}{achievementNextLevel}", true, session); // Update in Database using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) queryReactor.RunFastQuery($"REPLACE INTO users_achievements VALUES ('{user.Id}', '{achievementGroup}', '{achievementNextLevel}', '{achievementProgress}')"); // Send Unlocked Composer session.SendMessage(AchievementUnlockedComposer.Compose(achievement, achievementNextLevel, achievementNextLevelData.RewardPoints, achievementNextLevelData.RewardPixels)); // Send Score Composer session.SendMessage(AchievementScoreUpdateComposer.Compose(user.AchievementPoints)); // Send Progress Composer session.SendMessage(AchievementProgressComposer.Compose(achievement, achievementNextLevel, achievementNextLevelData, achievementLevelsCount, userAchievement)); // Set Talent if (Yupi.GetGame().GetTalentManager().Talents.Values.Any(talent => talent.AchievementGroup == achievementGroup)) { Yupi.GetGame().GetTalentManager().CompleteUserTalent(session, Yupi.GetGame().GetTalentManager().GetTalentData(achievementGroup)); } } else { // Get Current Level Data AchievementLevel achievementCurrentLevelData = achievement.Levels[achievementCurrentLevel]; // It's the Same Level userAchievement.SetLevel(achievementCurrentLevel); // But increase Progress userAchievement.SetProgress(achievementProgress); // Update in Database using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) queryReactor.RunFastQuery($"REPLACE INTO users_achievements VALUES ('{user.Id}', '{achievementGroup}', '{achievementCurrentLevel}', '{achievementProgress}')"); // Compose Current Data session.SendMessage(AchievementProgressComposer.Compose(achievement, achievementCurrentLevel, achievementCurrentLevelData, achievementLevelsCount, userAchievement)); } // Send User New Data GameClientMessageHandler messageHandler = session.GetMessageHandler(); messageHandler.GetResponse().Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); messageHandler.GetResponse().AppendInteger(-1); messageHandler.GetResponse().AppendString(user.Look); messageHandler.GetResponse().AppendString(user.Gender.ToLower()); messageHandler.GetResponse().AppendString(user.Motto); messageHandler.GetResponse().AppendInteger(user.AchievementPoints); messageHandler.SendResponse(); return(true); } return(false); }
private void FreezeUser(RoomUser user) { if (user.IsBot || user.ShieldActive || user.Team == Team.None || user.Freezed) { return; } user.Freezed = true; user.FreezeCounter = 0; --user.FreezeLives; if (user.FreezeLives <= 0) { ServerMessage serverMessage = new ServerMessage(); serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer")); serverMessage.AppendInteger(user.InternalRoomId); serverMessage.AppendInteger(user.FreezeLives); user.GetClient().SendMessage(serverMessage); user.ApplyEffect(-1); _room.GetGameManager().AddPointToTeam(user.Team, -10, user); TeamManager managerForFreeze = _room.GetTeamManagerForFreeze(); managerForFreeze.OnUserLeave(user); user.Team = Team.None; if (ExitTeleport != null) { _room.GetGameMap().TeleportToItem(user, ExitTeleport); } user.Freezed = false; user.SetStep = false; user.IsWalking = false; user.UpdateNeeded = true; if (!managerForFreeze.BlueTeam.Any() && !managerForFreeze.RedTeam.Any() && !managerForFreeze.GreenTeam.Any() && managerForFreeze.YellowTeam.Any()) { StopGame(); } else if (managerForFreeze.BlueTeam.Any() && !managerForFreeze.RedTeam.Any() && !managerForFreeze.GreenTeam.Any() && !managerForFreeze.YellowTeam.Any()) { StopGame(); } else if (!managerForFreeze.BlueTeam.Any() && managerForFreeze.RedTeam.Any() && !managerForFreeze.GreenTeam.Any() && !managerForFreeze.YellowTeam.Any()) { StopGame(); } else { if (managerForFreeze.BlueTeam.Any() || managerForFreeze.RedTeam.Any() || !managerForFreeze.GreenTeam.Any() || managerForFreeze.YellowTeam.Any()) { return; } StopGame(); } } else { _room.GetGameManager().AddPointToTeam(user.Team, -10, user); user.ApplyEffect(12); ServerMessage serverMessage = new ServerMessage(); serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer")); serverMessage.AppendInteger(user.InternalRoomId); serverMessage.AppendInteger(user.FreezeLives); user.GetClient().SendMessage(serverMessage); } }
public bool Execute(params object[] stuff) { if (stuff[0] == null) { return(false); } RoomUser user = (RoomUser)stuff[0]; if (stuff[1] == null) { return(false); } Interaction item = (Interaction)stuff[1]; if (_mBanned.Contains(item)) { return(false); } if (user == null) { return(false); } if (OtherExtraString2 == null) { return(false); } int amountLeft = Convert.ToInt32(OtherExtraString2); bool unique = OtherBool; bool premied = false; if (amountLeft == 1) { ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer")); message.AppendInteger(0); user.GetClient().SendMessage(message); return(true); } foreach (string dataStr in OtherString.Split(';')) { string[] dataArray = dataStr.Split(','); bool isbadge = dataArray[0] == "0"; string code = dataArray[1]; int percentage = int.Parse(dataArray[2]); int random = Yupi.GetRandomNumber(0, 100); ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer")); if (!unique && percentage < random) { continue; } premied = true; if (isbadge) { if (user.GetClient().GetHabbo().GetBadgeComponent().HasBadge(code)) { message.AppendInteger(1); user.GetClient().SendMessage(message); } else { user.GetClient() .GetHabbo() .GetBadgeComponent() .GiveBadge(code, true, user.GetClient(), true); message.AppendInteger(7); user.GetClient().SendMessage(message); } } else //item or effect { Item roomItem = Yupi.GetGame().GetItemManager().GetItem(uint.Parse(code)); if (roomItem == null) { continue; } if (roomItem.Type == 'e') // is effect { user.GetClient() .GetHabbo() .GetAvatarEffectsInventoryComponent() .AddNewEffect(roomItem.SpriteId, 3600, 1); } else { user.GetClient() .GetHabbo() .GetInventoryComponent() .AddNewItem(0u, roomItem.Name, "0", 0u, true, false, 0, 0); user.GetClient() .SendMessage( new ServerMessage(LibraryParser.OutgoingRequest("UpdateInventoryMessageComposer"))); } message.AppendInteger(6); user.GetClient().SendMessage(message); } } if (!premied) { ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("WiredRewardAlertMessageComposer")); message.AppendInteger(4); user.GetClient().SendMessage(message); } else if (amountLeft > 1) { amountLeft--; OtherExtraString2 = amountLeft.ToString(); } return(true); }
/// <summary> /// Shutdown the Emulator /// </summary> /// <param name="restart">if set to <c>true</c> [restart].</param> /// Set a Different Message in Hotel internal static void PerformShutDown(bool restart) { var now = DateTime.Now; Cache.StopProcess(); ShutdownStarted = true; var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString("disconnection"); serverMessage.AppendInteger(2); serverMessage.AppendString("title"); serverMessage.AppendString("Emulator Shutting down"); serverMessage.AppendString("message"); serverMessage.AppendString("<b>A technician has applied new updates / fixes, so the hotel is shutting down for these changes to take effect! It will automatically come back in a few seconds! So Long!"); GetGame().GetClientManager().QueueBroadcaseMessage(serverMessage); System.Threading.Thread.Sleep(3000); _game.StopGameLoop(); _game.GetRoomManager().RemoveAllRooms(); GetGame().GetClientManager().CloseAll(); GetConnectionManager().Destroy(); foreach (Guild group in _game.GetGroupManager().Groups.Values) { group.UpdateForum(); } using (var queryReactor = Manager.GetQueryReactor()) { queryReactor.RunFastQuery("UPDATE users SET online = '0'"); queryReactor.RunFastQuery("UPDATE rooms_data SET users_now = 0"); queryReactor.RunFastQuery("UPDATE server_settings SET value = '0' WHERE variable = 'status'"); } _connectionManager.Destroy(); _game.Destroy(); try { Manager.Destroy(); Out.WriteLine("Game Manager destroyed", "", ConsoleColor.Red); } catch (Exception e) { Writer.Writer.LogException("Plus.cs PerformShutDown GameManager" + e); } TimeSpan timeUsedOnShutdown = DateTime.Now - now; Console.WriteLine(" >> CityRP Emulator Successfully Shutdown <<"); IsLive = false; if (restart) { Process.Start(Assembly.GetEntryAssembly().Location); } else { System.Threading.Thread.Sleep(2000); } Environment.Exit(0); }
/// <summary> /// Handles the publicist. /// </summary> /// <param name="word">The word.</param> /// <param name="message">The message.</param> /// <param name="method">The method.</param> /// <param name="settings">The settings.</param> internal void HandlePublicist(string word, string message, string method, BlackWordTypeSettings settings) { Habbo userPublicist = GetHabbo(); if (userPublicist != null) { ServerMessage serverMessage; if (userPublicist.Rank < 5 && settings.MaxAdvices == PublicistCount++ && settings.AutoBan) { serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SuperNotificationMessageComposer")); serverMessage.AppendString("staffcloud"); serverMessage.AppendInteger(2); serverMessage.AppendString("title"); serverMessage.AppendString("Staff Internal Alert"); serverMessage.AppendString("message"); serverMessage.AppendString("O usuário " + userPublicist.UserName + " Fo Banido por Divulgar. A última palavra foi: " + word + ", na frase: " + message); Yupi.GetGame().GetClientManager().StaffAlert(serverMessage); Yupi.GetGame().GetBanManager().BanUser(this, userPublicist.UserName, 788922000.0, "Você está divulgando Hoteis. Será banido para sempre..", true, true); return; } string alert = settings.Alert.Replace("{0}", userPublicist.UserName); alert = alert.Replace("{1}", userPublicist.Id.ToString()); alert = alert.Replace("{2}", word); alert = alert.Replace("{3}", message); alert = alert.Replace("{4}", method); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UsersClassificationMessageComposer")); serverMessage.AppendInteger(1); serverMessage.AppendInteger(userPublicist.Id); serverMessage.AppendString(userPublicist.UserName); serverMessage.AppendString("BadWord: " + word); Yupi.GetGame()?.GetClientManager()?.StaffAlert(serverMessage); if (Yupi.GetGame().GetClientManager() == null) { return; } foreach (GameClient client in Yupi.GetGame().GetClientManager().Clients.Values) { if (client?.GetHabbo() == null) { continue; } if (client.CurrentRoomUserId == 0) { continue; } if (client.GetHabbo().Rank < 5) { continue; } serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("WhisperMessageComposer")); serverMessage.AppendInteger(client.CurrentRoomUserId); serverMessage.AppendString(alert); serverMessage.AppendInteger(0); serverMessage.AppendInteger(34); serverMessage.AppendInteger(0); serverMessage.AppendInteger(true); client.SendMessage(serverMessage); } } }
/// <summary> /// Called when [user say]. /// </summary> /// <param name="user">The user.</param> /// <param name="msg">The MSG.</param> internal override void OnUserSay(RoomUser user, string msg) { RoomUser roomUser = GetRoomUser(); if (roomUser.PetData.OwnerId != user.GetClient().GetHabbo().Id) { return; } if (string.IsNullOrEmpty(msg)) { msg = " "; } PetCommand command = PetCommandHandler.GetPetCommandByInput(msg.Substring(1).ToLower()); if (!command.PetTypes.Contains(roomUser.PetData.Type.ToString())) { return; } if (roomUser.PetData.Level < command.MinLevel) { return; } if (roomUser.PetData.Energy < 20 || roomUser.PetData.Nutrition < 25) { command.CommandAction = "lazy"; } RemovePetStatus(); roomUser.PetData.AddExperience((int)command.GainedExperience); roomUser.Statusses.Add(command.PetStatus, string.Empty); roomUser.Statusses.Add("gst", command.PetGesture); roomUser.UpdateNeeded = true; _actionTimer = 25; _energyTimer = 10; roomUser.FollowingOwner = null; SubtractAttributes(); /* other gestures that isnt listed */ // roomUser.Statusses.Add("jmp", ""); //roomUser.Statusses.Add("gst", "joy"); //roomUser.AddStatus("lay", ""); //roomUser.AddStatus("gst", "eyb"); //roomUser.Statusses.Add("beg", ""); //roomUser.Statusses.Add("gst", "sml"); switch (command.CommandAction) { case "follow": roomUser.FollowingOwner = roomUser; RemovePetStatus(); switch (roomUser.RotBody) { case 0: roomUser.MoveTo(roomUser.X + 2, roomUser.Y); break; case 1: roomUser.MoveTo(roomUser.X - 2, roomUser.Y - 2); break; case 2: roomUser.MoveTo(roomUser.X, roomUser.Y + 2); break; case 3: roomUser.MoveTo(roomUser.X + 2, roomUser.Y - 2); break; case 4: roomUser.MoveTo(roomUser.X - 2, roomUser.Y); break; case 5: roomUser.MoveTo(roomUser.X + 2, roomUser.Y + 2); break; case 6: roomUser.MoveTo(roomUser.X, roomUser.Y - 2); break; case 7: roomUser.MoveTo(roomUser.X - 2, roomUser.Y + 2); break; } break; case "breed": Point coord = new Point(); switch (roomUser.PetData.Type) { case 3: coord = GetRoom().GetRoomItemHandler().GetRandomBreedingTerrier(roomUser.PetData); break; case 4: coord = GetRoom().GetRoomItemHandler().GetRandomBreedingBear(roomUser.PetData); break; } if (coord == new Point()) { ServerMessage alert = new ServerMessage(LibraryParser.OutgoingRequest("PetBreedErrorMessageComposer")); alert.AppendInteger(0); user.GetClient().SendMessage(alert); } break; case "sleep": string[] valueSleep = PetLocale.GetValue("tired"); string messageSleep = valueSleep[new Random().Next(0, valueSleep.Length - 1)]; roomUser.Chat(null, messageSleep, false, 0); break; case "unknown": string[] valueUnknown = PetLocale.GetValue("pet.unknowncommand"); string messageUnknown = valueUnknown[new Random().Next(0, valueUnknown.Length - 1)]; roomUser.Chat(null, messageUnknown, false, 0); break; case "lazy": string[] valueLazy = PetLocale.GetValue("pet.lazy"); string messageLazy = valueLazy[new Random().Next(0, valueLazy.Length - 1)]; roomUser.Chat(null, messageLazy, false, 0); break; case "nest": RemovePetStatus(); IEnumerable <RoomItem> petNest = GetRoom().GetRoomItemHandler().FloorItems.Values.Where(x => x.GetBaseItem().InteractionType == Interaction.PetNest); IEnumerable <RoomItem> enumerable = petNest as RoomItem[] ?? petNest.ToArray(); // @todo rewrite this to redo actionsss if (!enumerable.Any()) { command.CommandAction = "lazy"; } RoomItem roomItems = enumerable.FirstOrDefault(); if (roomItems != null) { roomUser.MoveTo(roomItems.X, roomItems.Y); } roomUser.PetData.AddExperience(40); break; case "default": string[] valueDefault = PetLocale.GetValue("pet.done"); string messageDefault = valueDefault[new Random().Next(0, valueDefault.Length - 1)]; roomUser.Chat(null, messageDefault, false, 0); break; } }
/// <summary> /// Tries the login. /// </summary> /// <param name="authTicket">The authentication ticket.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> internal bool TryLogin(string authTicket) { try { if (string.IsNullOrWhiteSpace(authTicket)) { return(false); } string ip = GetConnection().GetIp(); if (string.IsNullOrEmpty(ip)) { return(false); } uint errorCode; UserData userData = UserDataFactory.GetUserData(authTicket, out errorCode); if (userData?.User == null) { return(false); } if (errorCode == 1 || errorCode == 2) { return(false); } Yupi.GetGame().GetClientManager().RegisterClient(this, userData.UserId, userData.User.UserName); _habbo = userData.User; userData.User.LoadData(userData); bool isBanned = Yupi.GetGame().GetBanManager().CheckIfIsBanned(userData.User.UserName, ip, MachineId); if (isBanned) { string banReason = Yupi.GetGame().GetBanManager().GetBanReason(userData.User.UserName, ip, MachineId); SendNotifWithScroll(banReason); using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery($"SELECT ip_last FROM users WHERE id = {GetHabbo().Id} LIMIT 1"); string supaString = queryReactor.GetString(); queryReactor.SetQuery($"SELECT COUNT(0) FROM users_bans_access WHERE user_id={_habbo.Id} LIMIT 1"); int integer = queryReactor.GetInteger(); if (integer > 0) { queryReactor.RunFastQuery("UPDATE users_bans_access SET attempts = attempts + 1, ip='" + supaString + "' WHERE user_id=" + GetHabbo().Id + " LIMIT 1"); } else { queryReactor.RunFastQuery("INSERT INTO users_bans_access (user_id, ip) VALUES (" + GetHabbo().Id + ", '" + supaString + "')"); } } return(false); } using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) queryReactor.RunFastQuery($"UPDATE users SET ip_last='{ip}' WHERE id={GetHabbo().Id}"); userData.User.Init(this, userData); QueuedServerMessage queuedServerMessage = new QueuedServerMessage(_connection); ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UniqueMachineIDMessageComposer")); serverMessage.AppendString(MachineId); queuedServerMessage.AppendResponse(serverMessage); queuedServerMessage.AppendResponse( new ServerMessage(LibraryParser.OutgoingRequest("AuthenticationOKMessageComposer"))); ServerMessage serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("HomeRoomMessageComposer")); serverMessage2.AppendInteger(_habbo.HomeRoom); serverMessage2.AppendInteger(_habbo.HomeRoom); queuedServerMessage.AppendResponse(serverMessage2); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("MinimailCountMessageComposer")); serverMessage.AppendInteger(_habbo.MinimailUnreadMessages); queuedServerMessage.AppendResponse(serverMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("FavouriteRoomsMessageComposer")); serverMessage.AppendInteger(30); if (userData.User.FavoriteRooms == null || !userData.User.FavoriteRooms.Any()) { serverMessage.AppendInteger(0); } else { serverMessage.AppendInteger(userData.User.FavoriteRooms.Count); foreach (uint i in userData.User.FavoriteRooms) { serverMessage.AppendInteger(i); } } queuedServerMessage.AppendResponse(serverMessage); ServerMessage rightsMessage = new ServerMessage(LibraryParser.OutgoingRequest("UserClubRightsMessageComposer")); rightsMessage.AppendInteger(userData.User.GetSubscriptionManager().HasSubscription ? 2 : 0); rightsMessage.AppendInteger(userData.User.Rank); rightsMessage.AppendInteger(0); queuedServerMessage.AppendResponse(rightsMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("EnableNotificationsMessageComposer")); serverMessage.AppendBool(true); //isOpen serverMessage.AppendBool(false); queuedServerMessage.AppendResponse(serverMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("EnableTradingMessageComposer")); serverMessage.AppendBool(true); queuedServerMessage.AppendResponse(serverMessage); userData.User.UpdateCreditsBalance(); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ActivityPointsMessageComposer")); serverMessage.AppendInteger(2); serverMessage.AppendInteger(0); serverMessage.AppendInteger(userData.User.Duckets); serverMessage.AppendInteger(5); serverMessage.AppendInteger(userData.User.Diamonds); queuedServerMessage.AppendResponse(serverMessage); if (userData.User.HasFuse("fuse_mod")) { queuedServerMessage.AppendResponse(Yupi.GetGame().GetModerationTool().SerializeTool(this)); } queuedServerMessage.AppendResponse(Yupi.GetGame().GetAchievementManager().AchievementDataCached); queuedServerMessage.AppendResponse(GetHabbo().GetAvatarEffectsInventoryComponent().GetPacket()); queuedServerMessage.SendResponse(); Yupi.GetGame().GetAchievementManager().TryProgressHabboClubAchievements(this); Yupi.GetGame().GetAchievementManager().TryProgressRegistrationAchievements(this); Yupi.GetGame().GetAchievementManager().TryProgressLoginAchievements(this); return(true); } catch (Exception ex) { YupiLogManager.LogException(ex, "Registered Login Exception.", "Yupi.Users"); } return(false); }
internal static ServerMessage GenerateMessage(Pet pet) { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("PetInfoMessageComposer")); serverMessage.AppendInteger(pet.PetId); serverMessage.AppendString(pet.Name); if (pet.Type == "pet_monster") { serverMessage.AppendInteger(pet.MoplaBreed.GrowingStatus); serverMessage.AppendInteger(7); } else { serverMessage.AppendInteger(pet.Level); serverMessage.AppendInteger(Pet.MaxLevel); } serverMessage.AppendInteger(pet.Experience); serverMessage.AppendInteger(pet.ExperienceGoal); serverMessage.AppendInteger(pet.Energy); serverMessage.AppendInteger(Pet.MaxEnergy); serverMessage.AppendInteger(pet.Nutrition); serverMessage.AppendInteger(Pet.MaxNutrition); serverMessage.AppendInteger(pet.Respect); serverMessage.AppendInteger(pet.OwnerId); serverMessage.AppendInteger(pet.Age); serverMessage.AppendString(pet.OwnerName); serverMessage.AppendInteger(pet.Type == "pet_monster" ? 0 : 1); serverMessage.AppendBool(pet.HaveSaddle); serverMessage.AppendBool(false); serverMessage.AppendInteger(0); serverMessage.AppendInteger(pet.AnyoneCanRide); if (pet.Type == "pet_monster") { serverMessage.AppendBool(pet.MoplaBreed.LiveState == MoplaState.Grown); } else { serverMessage.AppendBool(false); } serverMessage.AppendBool(false); if (pet.Type == "pet_monster") { serverMessage.AppendBool(pet.MoplaBreed.LiveState == MoplaState.Dead); } else { serverMessage.AppendBool(false); } serverMessage.AppendInteger(pet.Rarity); if (pet.Type == "pet_monster") { serverMessage.AppendInteger(129600); int lastHealthSeconds = (int)(pet.LastHealth - DateTime.Now).TotalSeconds; int untilGrownSeconds = (int)(pet.UntilGrown - DateTime.Now).TotalSeconds; if (lastHealthSeconds < 0) { lastHealthSeconds = 0; } if (untilGrownSeconds < 0) { untilGrownSeconds = 0; } switch (pet.MoplaBreed.LiveState) { case MoplaState.Dead: serverMessage.AppendInteger(0); serverMessage.AppendInteger(0); break; case MoplaState.Grown: serverMessage.AppendInteger(lastHealthSeconds); serverMessage.AppendInteger(0); break; default: serverMessage.AppendInteger(lastHealthSeconds); serverMessage.AppendInteger(untilGrownSeconds); break; } } else { serverMessage.AppendInteger(-1); serverMessage.AppendInteger(-1); serverMessage.AppendInteger(-1); } serverMessage.AppendBool(true); return(serverMessage); }
public override bool Execute(GameClient session, string[] pms) { using (IQueryAdapter adapter = Yupi.GetDatabaseManager().GetQueryReactor()) { FurnitureDataManager.SetCache(); Yupi.GetGame().GetItemManager().LoadItems(adapter); Yupi.GetGame().GetCatalog().Initialize(adapter); FurnitureDataManager.Clear(); } Yupi.GetGame().GetClientManager().QueueBroadcaseMessage(new ServerMessage(LibraryParser.OutgoingRequest("PublishShopMessageComposer"))); return(true); }