/// <summary>
 ///     Composes the specified session.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="quest">The quest.</param>
 /// <returns>ServerMessage.</returns>
 internal static ServerMessage Compose(GameClient session, Quest quest)
 {
     var amountOfQuestsInCategory = Azure.GetGame().GetQuestManager().GetAmountOfQuestsInCategory(quest.Category);
     var i = (quest == null) ? amountOfQuestsInCategory : quest.Number;
     var i2 = (quest == null) ? 0 : session.GetHabbo().GetQuestProgress(quest.Id);
     var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("QuestCompletedMessageComposer"));
     serverMessage.AppendString(quest.Category);
     serverMessage.AppendInteger(i);
     serverMessage.AppendInteger(quest.Name.Contains("xmas2012") ? 1 : amountOfQuestsInCategory);
     serverMessage.AppendInteger((quest == null) ? 3 : quest.RewardType);
     serverMessage.AppendInteger((quest == null) ? 0u : quest.Id);
     serverMessage.AppendBool(quest != null && session.GetHabbo().CurrentQuestId == quest.Id);
     serverMessage.AppendString((quest == null) ? string.Empty : quest.ActionName);
     serverMessage.AppendString((quest == null) ? string.Empty : quest.DataBit);
     serverMessage.AppendInteger((quest == null) ? 0 : quest.Reward);
     serverMessage.AppendString((quest == null) ? string.Empty : quest.Name);
     serverMessage.AppendInteger(i2);
     serverMessage.AppendInteger((quest == null) ? 0u : quest.GoalData);
     serverMessage.AppendInteger((quest == null) ? 0 : quest.TimeUnlock);
     serverMessage.AppendString("");
     serverMessage.AppendString("");
     serverMessage.AppendBool(true);
     serverMessage.AppendBool(true);
     return serverMessage;
 }
Ejemplo n.º 2
0
        /// <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 =
                Azure.GetGame().GetCatalog().Categories.Values.OfType<CatalogPage>().ToList();

            var 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);

            var 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 (var 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 (var i in cat.FlatOffers.Keys)
                    message.AppendInteger(i);

                var sortedSubPages =
                    pages.Where(x => x.ParentId == cat.PageId && x.MinRank <= rank).OrderBy(x => x.OrderNum);

                message.AppendInteger(sortedSubPages.Count());

                foreach (var 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 (var i2 in subCat.FlatOffers.Keys)
                        message.AppendInteger(i2);

                    message.AppendInteger(0);
                }
            }

            message.AppendBool(false);
            message.AppendString(type);

            return message;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Searializes the specified reply.
 /// </summary>
 /// <param name="reply">The reply.</param>
 internal void Searialize(ServerMessage reply)
 {
     reply.AppendInteger(UserId);
     reply.AppendString(UserName);
     reply.AppendString(Motto);
     reply.AppendBool(AzureEmulator.GetGame().GetClientManager().GetClient(UserId) != null);
     reply.AppendBool(false);
     reply.AppendString(string.Empty);
     reply.AppendInteger(0);
     reply.AppendString(Look);
     reply.AppendString(LastOnline);
 }
Ejemplo n.º 4
0
 /// <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)
 {
     var message = new ServerMessage(LibraryParser.OutgoingRequest("CatalogueClubPageMessageComposer"));
     var habboClubItems = AzureEmulator.GetGame().GetCatalog().HabboClubItems;
     message.AppendInteger(habboClubItems.Count);
     foreach (var 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);
         var fuckingArray = item.Name.Split('_');
         double dayTime = 31;
         if (item.Name.Contains("DAY"))
             dayTime = int.Parse(fuckingArray[3]);
         else if (item.Name.Contains("MONTH"))
         {
             var monthTime = int.Parse(fuckingArray[3]);
             dayTime = monthTime * 31;
         }
         else if (item.Name.Contains("YEAR"))
         {
             var yearTimeOmg = int.Parse(fuckingArray[3]);
             dayTime = yearTimeOmg * 31 * 12;
         }
         var newExpiryDate = DateTime.Now.AddDays(dayTime);
         if (session.GetHabbo().GetSubscriptionManager().HasSubscription)
             newExpiryDate =
                 AzureEmulator.UnixToDateTime(session.GetHabbo().GetSubscriptionManager().GetSubscription().ExpireTime)
                     .AddDays(dayTime);
         message.AppendInteger((int)dayTime / 31);
         message.AppendInteger((int)dayTime);
         message.AppendBool(false);// can gift
         message.AppendInteger((int)dayTime);
         message.AppendInteger(newExpiryDate.Year);
         message.AppendInteger(newExpiryDate.Month);
         message.AppendInteger(newExpiryDate.Day);
     }
     message.AppendInteger(windowId);
     return message;
 }
Ejemplo n.º 5
0
        /// <summary>
        ///     Serializes the search result list flatcats.
        /// </summary>
        /// <param name="flatCatId">The flat cat identifier.</param>
        /// <param name="direct">if set to <c>true</c> [direct].</param>
        /// <param name="message">The message.</param>
        internal static void SerializeSearchResultListFlatcats(int flatCatId, bool direct, ServerMessage message)
        {
            var flatCat = Azure.GetGame().GetNavigator().GetFlatCat(flatCatId);

            if (flatCat == null)
                return;

            message.AppendString($"category__{flatCat.Caption}");
            message.AppendString(flatCat.Caption);
            message.AppendInteger(0);
            message.AppendBool(true);
            message.AppendInteger(-1);

            try
            {
                var rooms = Azure.GetGame().GetRoomManager().GetActiveRooms();
                Azure.GetGame()
                    .GetNavigator()
                    .SerializeNavigatorPopularRoomsNews(ref message, rooms, flatCatId, direct);
            }
            catch
            {
                message.AppendInteger(0);
            }
        }
        /// <summary>
        ///     Composes the specified session.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="achievements">The achievements.</param>
        /// <returns>ServerMessage.</returns>
        internal static ServerMessage Compose(GameClient session, List<Achievement> achievements)
        {
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AchievementListMessageComposer"));
            serverMessage.AppendInteger(achievements.Count);

            foreach (var achievement in achievements)
            {
                var achievementData = session.GetHabbo().GetAchievementData(achievement.GroupName);

                var i = achievementData?.Level + 1 ?? 1;

                var count = achievement.Levels.Count;

                if (i > count)
                    i = count;

                var achievementLevel = achievement.Levels[i];

                var oldLevel = (achievement.Levels.ContainsKey(i - 1)) ? achievement.Levels[i - 1] : achievementLevel;

                serverMessage.AppendInteger(achievement.Id);
                serverMessage.AppendInteger(i);
                serverMessage.AppendString($"{achievement.GroupName}{i}");
                serverMessage.AppendInteger(oldLevel.Requirement);
                serverMessage.AppendInteger(achievementLevel.Requirement);
                serverMessage.AppendInteger(achievementLevel.RewardPoints);
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(achievementData?.Progress ?? 0);

                if (achievementData == null)
                    serverMessage.AppendBool(false);
                else if (achievementData.Value.Level >= count)
                    serverMessage.AppendBool(true);
                else
                    serverMessage.AppendBool(false);

                serverMessage.AppendString(achievement.Category);
                serverMessage.AppendString(string.Empty);
                serverMessage.AppendInteger(count);
                serverMessage.AppendInteger(0);
            }

            serverMessage.AppendString(string.Empty);

            return serverMessage;
        }
Ejemplo n.º 7
0
 internal void Serialize(ref ServerMessage message)
 {
     var habbo = Azure.GetHabboById(UserId);
     message.AppendInteger(Azure.DifferenceInMilliSeconds(TimeStamp, DateTime.Now));
     message.AppendInteger(UserId);
     message.AppendString(habbo == null ? "*User not found*" : habbo.UserName);
     message.AppendString(Message);
     message.AppendBool(GlobalMessage);
 }
Ejemplo n.º 8
0
 /// <summary>
 ///     Composes the specified session.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="quests">The quests.</param>
 /// <param name="send">if set to <c>true</c> [send].</param>
 /// <returns>ServerMessage.</returns>
 internal static ServerMessage Compose(GameClient session, List<Quest> quests, bool send)
 {
     var dictionary = new Dictionary<string, int>();
     var dictionary2 = new Dictionary<string, Quest>();
     foreach (var current in quests)
     {
         if (!current.Category.Contains("xmas2012"))
         {
             if (!dictionary.ContainsKey(current.Category))
             {
                 dictionary.Add(current.Category, 1);
                 dictionary2.Add(current.Category, null);
             }
             if (current.Number >= dictionary[current.Category])
             {
                 var questProgress = session.GetHabbo().GetQuestProgress(current.Id);
                 if (session.GetHabbo().CurrentQuestId != current.Id && questProgress >= current.GoalData)
                 {
                     dictionary[current.Category] = (current.Number + 1);
                 }
             }
         }
     }
     foreach (var current2 in quests)
     {
         foreach (var current3 in dictionary)
         {
             if (!current2.Category.Contains("xmas2012") && current2.Category == current3.Key &&
                 current2.Number == current3.Value)
             {
                 dictionary2[current3.Key] = current2;
                 break;
             }
         }
     }
     var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("QuestListMessageComposer"));
     serverMessage.AppendInteger(dictionary2.Count);
     foreach (var current4 in dictionary2)
     {
         if (current4.Value != null)
         {
             SerializeQuest(serverMessage, session, current4.Value, current4.Key);
         }
     }
     foreach (var current5 in dictionary2)
     {
         if (current5.Value == null)
         {
             SerializeQuest(serverMessage, session, current5.Value, current5.Key);
         }
     }
     serverMessage.AppendBool(send);
     return serverMessage;
 }
Ejemplo n.º 9
0
        public override bool Execute(GameClient session, string[] pms)
        {
            session.GetHabbo().NewNavigator = !session.GetHabbo().NewNavigator;

            var msg = new ServerMessage(LibraryParser.OutgoingRequest("SendPerkAllowancesMessageComposer"));
            msg.AppendInteger(1);
            msg.AppendString("NAVIGATOR_PHASE_TWO_2014");
            msg.AppendString("");
            msg.AppendBool(session.GetHabbo().NewNavigator);

            session.SendMessage(msg);
            return true;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Composes the specified session.
        /// </summary>
        /// <param name="Session">The session.</param>
        /// <param name="Achievements">The achievements.</param>
        /// <returns>ServerMessage.</returns>
        internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements)
        {
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AchievementListMessageComposer"));
            serverMessage.AppendInteger(Achievements.Count);
            foreach (Achievement achievement in Achievements)
            {
                UserAchievement achievementData = Session.GetHabbo().GetAchievementData(achievement.GroupName);
                int i = achievementData != null ? (achievementData.Level + 1) : 1;

                int count = achievement.Levels.Count;
                if (i > count)
                    i = count;
                AchievementLevel achievementLevel = achievement.Levels[i];
                AchievementLevel oldLevel = (achievement.Levels.ContainsKey(i - 1)) ? achievement.Levels[i - 1] : achievementLevel;
                serverMessage.AppendInteger(achievement.Id);
                serverMessage.AppendInteger(i);
                serverMessage.AppendString(string.Format("{0}{1}", achievement.GroupName, i));
                serverMessage.AppendInteger(oldLevel.Requirement);
                serverMessage.AppendInteger(achievementLevel.Requirement);
                serverMessage.AppendInteger(achievementLevel.RewardPoints);
                serverMessage.AppendInteger(0);
                serverMessage.AppendInteger(achievementData != null ? achievementData.Progress : 0);
                if (achievementData == null)
                    serverMessage.AppendBool(false);
                else if (achievementData.Level >= count)
                    serverMessage.AppendBool(true);
                else
                    serverMessage.AppendBool(false);
                serverMessage.AppendString(achievement.Category);
                serverMessage.AppendString(string.Empty);
                serverMessage.AppendInteger(count);
                serverMessage.AppendInteger(0);
            }
            serverMessage.AppendString("");
            return serverMessage;
        }
        /// <summary>
        ///     Gets the packet.
        /// </summary>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage GetPacket()
        {
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("EffectsInventoryMessageComposer"));
            serverMessage.AppendInteger(_effects.Count);

            foreach (var current in _effects)
            {
                serverMessage.AppendInteger(current.EffectId);
                serverMessage.AppendInteger(current.Type); // type (0 : normal - 1 : costume)
                serverMessage.AppendInteger(current.TotalDuration);
                serverMessage.AppendInteger(0); // count (0 : 1 - 1 : 2 ...)
                serverMessage.AppendInteger(current.TimeLeft);
                serverMessage.AppendBool(current.TotalDuration == -1); // permanent
            }

            return serverMessage;
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Composes the specified achievement.
 /// </summary>
 /// <param name="Achievement">The achievement.</param>
 /// <param name="TargetLevel">The target level.</param>
 /// <param name="TargetLevelData">The target level data.</param>
 /// <param name="TotalLevels">The total levels.</param>
 /// <param name="UserData">The user data.</param>
 /// <returns>ServerMessage.</returns>
 internal static ServerMessage Compose(Achievement Achievement, int TargetLevel, AchievementLevel TargetLevelData, int TotalLevels, UserAchievement UserData)
 {
     var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AchievementProgressMessageComposer"));
     serverMessage.AppendInteger(Achievement.Id);
     serverMessage.AppendInteger(TargetLevel);
     serverMessage.AppendString(string.Format("{0}{1}", Achievement.GroupName, TargetLevel));
     serverMessage.AppendInteger(TargetLevelData.Requirement);
     serverMessage.AppendInteger(TargetLevelData.Requirement);
     serverMessage.AppendInteger(TargetLevelData.RewardPixels);
     serverMessage.AppendInteger(0);
     serverMessage.AppendInteger(UserData != null ? UserData.Progress : 0);
     serverMessage.AppendBool(UserData != null && UserData.Level >= TotalLevels);
     serverMessage.AppendString(Achievement.Category);
     serverMessage.AppendString(string.Empty);
     serverMessage.AppendInteger(TotalLevels);
     serverMessage.AppendInteger(0);
     return serverMessage;
 }
        /// <summary>
        ///     Composes the specified achievement.
        /// </summary>
        /// <param name="achievement">The achievement.</param>
        /// <param name="level">The level.</param>
        /// <param name="pointReward">The point reward.</param>
        /// <param name="pixelReward">The pixel reward.</param>
        /// <returns>ServerMessage.</returns>
        internal static ServerMessage Compose(Achievement achievement, int level, int pointReward, int pixelReward)
        {
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UnlockAchievementMessageComposer"));

            serverMessage.AppendInteger(achievement.Id);
            serverMessage.AppendInteger(level);
            serverMessage.AppendInteger(144);
            serverMessage.AppendString($"{achievement.GroupName}{level}");
            serverMessage.AppendInteger(pointReward);
            serverMessage.AppendInteger(pixelReward);
            serverMessage.AppendInteger(0);
            serverMessage.AppendInteger(10);
            serverMessage.AppendInteger(21);
            serverMessage.AppendString(level > 1 ? $"{achievement.GroupName}{(level - 1)}" : string.Empty);
            serverMessage.AppendString(achievement.Category);
            serverMessage.AppendBool(true);

            return serverMessage;
        }
Ejemplo n.º 14
0
 /// <summary>
 /// Serializes the promotions result list flatcats.
 /// </summary>
 /// <param name="flatCatId">The flat cat identifier.</param>
 /// <param name="direct">if set to <c>true</c> [direct].</param>
 /// <param name="message">The message.</param>
 internal static void SerializePromotionsResultListFlatcats(int flatCatId, bool direct, ServerMessage message)
 {
     var flatCat = AzureEmulator.GetGame().GetNavigator().GetFlatCat(flatCatId);
     message.AppendString("new_ads");
     message.AppendString(flatCat.Caption);
     message.AppendInteger(0);
     message.AppendBool(true);
     message.AppendInteger(-1);
     try
     {
         var rooms = AzureEmulator.GetGame().GetRoomManager().GetEventRooms();
         AzureEmulator.GetGame()
             .GetNavigator()
             .SerializeNavigatorPopularRoomsNews(ref message, rooms, flatCatId, direct);
     }
     catch
     {
         message.AppendInteger(0);
     }
 }
        /// <summary>
        ///     Composes the specified achievement.
        /// </summary>
        /// <param name="achievement">The achievement.</param>
        /// <param name="targetLevel">The target level.</param>
        /// <param name="targetLevelData">The target level data.</param>
        /// <param name="totalLevels">The total levels.</param>
        /// <param name="userData">The user data.</param>
        /// <returns>ServerMessage.</returns>
        internal static ServerMessage Compose(Achievement achievement, int targetLevel, AchievementLevel targetLevelData, int totalLevels, UserAchievement userData)
        {
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("AchievementProgressMessageComposer"));

            serverMessage.AppendInteger(achievement.Id);
            serverMessage.AppendInteger(targetLevel);
            serverMessage.AppendString($"{achievement.GroupName}{targetLevel}");
            serverMessage.AppendInteger(targetLevelData.Requirement);
            serverMessage.AppendInteger(targetLevelData.Requirement);
            serverMessage.AppendInteger(targetLevelData.RewardPixels);
            serverMessage.AppendInteger(0);
            serverMessage.AppendInteger(userData.Progress);
            serverMessage.AppendBool(userData.Level >= totalLevels);
            serverMessage.AppendString(achievement.Category);
            serverMessage.AppendString(string.Empty);
            serverMessage.AppendInteger(totalLevels);
            serverMessage.AppendInteger(0);

            return serverMessage;
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Serializes the promoted.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="mode">The mode.</param>
 /// <returns>ServerMessage.</returns>
 public static ServerMessage SerializePromoted(GameClient session, int mode)
 {
     var reply = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorListingsMessageComposer"));
     reply.AppendInteger(mode);
     reply.AppendString(string.Empty);
     try
     {
         var rooms = AzureEmulator.GetGame().GetRoomManager().GetEventRooms();
         SerializeNavigatorPopularRooms(ref reply, rooms);
         if (rooms != null) Array.Clear(rooms, 0, rooms.Length);
         rooms = null;
     }
     catch
     {
         reply.AppendInteger(0);
         reply.AppendBool(false);
     }
     return reply;
 }
Ejemplo n.º 17
0
 /// <summary>
 /// Serializes the navigator rooms.
 /// </summary>
 /// <param name="reply">The reply.</param>
 /// <param name="rooms">The rooms.</param>
 private static void SerializeNavigatorRooms(ref ServerMessage reply,
                                             ICollection<KeyValuePair<RoomData, int>> rooms)
 {
     reply.AppendString(string.Empty);
     if (rooms == null || !rooms.Any())
     {
         reply.AppendInteger(0);
         reply.AppendBool(false);
         return;
     }
     reply.AppendInteger(rooms.Count);
     foreach (KeyValuePair<RoomData, int> pair in rooms) pair.Key.Serialize(reply, false);
     reply.AppendBool(false);
 }
Ejemplo n.º 18
0
        /// <summary>
        /// Serializes the recent rooms.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage SerializeRecentRooms(GameClient session)
        {
            ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorListingsMessageComposer"));
            serverMessage.AppendInteger(7);
            serverMessage.AppendString(string.Empty);

            serverMessage.StartArray();
            foreach (
                RoomData roomData in
                    session.GetHabbo()
                        .RecentlyVisitedRooms.Select(
                            current => AzureEmulator.GetGame().GetRoomManager().GenerateRoomData(current)))
            {
                roomData.Serialize(serverMessage, false);
                serverMessage.SaveArray();
            }

            serverMessage.EndArray();
            serverMessage.AppendBool(false);
            return serverMessage;
        }
Ejemplo n.º 19
0
 /// <summary>
 /// Serializes the promotion categories.
 /// </summary>
 /// <returns>ServerMessage.</returns>
 internal ServerMessage SerializePromotionCategories()
 {
     ServerMessage categories =
         new ServerMessage(LibraryParser.OutgoingRequest("CatalogPromotionGetCategoriesMessageComposer"));
     categories.AppendInteger(PromoCategories.Count); //count
     foreach (PromoCat cat in PromoCategories.Values)
     {
         categories.AppendInteger(cat.Id);
         categories.AppendString(cat.Caption);
         categories.AppendBool(cat.Visible);
     }
     return categories;
 }
Ejemplo n.º 20
0
        /// <summary>
        /// Serializes the navigator.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="mode">The mode.</param>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage SerializeNavigator(GameClient session, int mode)
        {
            if (mode >= 0) return SerializeActiveRooms(mode);
            var reply = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorListingsMessageComposer"));
            switch (mode)
            {
                case -6:
                    {
                        reply.AppendInteger(14);
                        List<RoomData> activeGRooms = new List<RoomData>();
                        KeyValuePair<RoomData, uint>[] rooms = AzureEmulator.GetGame().GetRoomManager().GetActiveRooms();
                        if (rooms != null && rooms.Any())
                        {
                            activeGRooms.AddRange(from rd in rooms where rd.Key.GroupId != 0 select rd.Key);
                            activeGRooms = activeGRooms.OrderByDescending(p => p.UsersNow).ToList();
                        }
                        SerializeNavigatorRooms(ref reply, activeGRooms);
                        return reply;
                    }
                case -5:
                case -4:
                    {
                        reply.AppendInteger(mode * (-1));
                        List<RoomData> activeFriends =
                            session.GetHabbo()
                                .GetMessenger()
                                .GetActiveFriendsRooms()
                                .OrderByDescending(p => p.UsersNow)
                                .ToList();
                        SerializeNavigatorRooms(ref reply, activeFriends);
                        return reply;
                    }
                case -3:
                    {
                        reply.AppendInteger(5);
                        SerializeNavigatorRooms(ref reply, session.GetHabbo().UsersRooms);
                        return reply;
                    }
                case -2:
                    {
                        reply.AppendInteger(2);
                        try
                        {
                            var rooms = AzureEmulator.GetGame().GetRoomManager().GetVotedRooms();
                            SerializeNavigatorRooms(ref reply, rooms);
                            if (rooms != null) Array.Clear(rooms, 0, rooms.Length);
                            rooms = null;
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                            reply.AppendString("");
                            reply.AppendInteger(0);
                        }
                        return reply;
                    }
                case -1:
                    {
                        reply.AppendInteger(1);
                        reply.AppendString("-1");

                        try
                        {
                            var rooms = AzureEmulator.GetGame().GetRoomManager().GetActiveRooms();
                            SerializeNavigatorPopularRooms(ref reply, rooms);
                            if (rooms != null) Array.Clear(rooms, 0, rooms.Length);
                            rooms = null;
                        }
                        catch
                        {
                            reply.AppendInteger(0);
                            reply.AppendBool(false);
                        }
                        return reply;
                    }
            }
            return reply;
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Serializes the flat categories.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage SerializeFlatCategories(GameClient session)
        {
            ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("FlatCategoriesMessageComposer"));
            serverMessage.StartArray();
            foreach (FlatCat flatCat in PrivateCategories.Values)
            {
                serverMessage.Clear();
                if (flatCat == null) continue;

                serverMessage.AppendInteger(flatCat.Id);
                serverMessage.AppendString(flatCat.Caption);
                serverMessage.AppendBool(flatCat.MinRank <= session.GetHabbo().Rank);
                serverMessage.AppendBool(false);
                serverMessage.AppendString("NONE");
                serverMessage.AppendString(string.Empty);
                serverMessage.AppendBool(false);

                serverMessage.SaveArray();
            }

            serverMessage.EndArray();
            return serverMessage;
        }
Ejemplo n.º 22
0
 /// <summary>
 /// Serializes the favorite rooms.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <returns>ServerMessage.</returns>
 internal ServerMessage SerializeFavoriteRooms(GameClient session)
 {
     ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorListingsMessageComposer"));
     serverMessage.AppendInteger(6);
     serverMessage.AppendString(string.Empty);
     serverMessage.AppendInteger(session.GetHabbo().FavoriteRooms.Count);
     uint[] array = session.GetHabbo().FavoriteRooms.ToArray();
     foreach (
         RoomData roomData in
             array
                 .Select(roomId => AzureEmulator.GetGame().GetRoomManager().GenerateRoomData(roomId))
                 .Where(roomData => roomData != null))
         roomData.Serialize(serverMessage, false);
     serverMessage.AppendBool(false);
     return serverMessage;
 }
Ejemplo n.º 23
0
        /// <summary>
        /// Enables the new navigator.
        /// </summary>
        /// <param name="session">The session.</param>
        internal void EnableNewNavigator(GameClient session)
        {
            ServerMessage navigatorMetaDataParser = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorMetaDataComposer"));
            navigatorMetaDataParser.AppendInteger(4);
            navigatorMetaDataParser.AppendString("official_view");
            navigatorMetaDataParser.AppendInteger(0);
            navigatorMetaDataParser.AppendString("hotel_view");
            navigatorMetaDataParser.AppendInteger(0);
            navigatorMetaDataParser.AppendString("roomads_view");
            navigatorMetaDataParser.AppendInteger(0);
            navigatorMetaDataParser.AppendString("myworld_view");
            navigatorMetaDataParser.AppendInteger(0);
            session.SendMessage(navigatorMetaDataParser);

            ServerMessage navigatorLiftedRoomsParser =
                new ServerMessage(LibraryParser.OutgoingRequest("NavigatorLiftedRoomsComposer"));
            navigatorLiftedRoomsParser.AppendInteger(_navigatorHeaders.Count);
            foreach (NavigatorHeader navHeader in _navigatorHeaders)
            {
                navigatorLiftedRoomsParser.AppendInteger(navHeader.RoomId);
                navigatorLiftedRoomsParser.AppendInteger(0);
                navigatorLiftedRoomsParser.AppendString(navHeader.Image);
                navigatorLiftedRoomsParser.AppendString(navHeader.Caption);
            }
            session.SendMessage(navigatorLiftedRoomsParser);

            ServerMessage collapsedCategoriesMessageParser = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorCategorys"));
            collapsedCategoriesMessageParser.AppendInteger(FlatCatsCount + 4);
            foreach (FlatCat flat in PrivateCategories.Values) collapsedCategoriesMessageParser.AppendString(string.Format("category__{0}", flat.Caption));
            collapsedCategoriesMessageParser.AppendString("recommended");
            collapsedCategoriesMessageParser.AppendString("new_ads");
            collapsedCategoriesMessageParser.AppendString("staffpicks");
            collapsedCategoriesMessageParser.AppendString("official");
            session.SendMessage(collapsedCategoriesMessageParser);

            ServerMessage searches = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorSavedSearchesComposer"));
            searches.AppendInteger(session.GetHabbo().NavigatorLogs.Count);
            foreach (NaviLogs navi in session.GetHabbo().NavigatorLogs.Values)
            {
                searches.AppendInteger(navi.Id);
                searches.AppendString(navi.Value1);
                searches.AppendString(navi.Value2);
                searches.AppendString("");
            }
            session.SendMessage(searches);
            //session.SendMessage(SerlializeNewNavigator("official", "", session));

            ServerMessage packetName = new ServerMessage(LibraryParser.OutgoingRequest("NewNavigatorSizeMessageComposer"));
            UserPreferences pref = session.GetHabbo().Preferences;
            packetName.AppendInteger(pref.NewnaviX);
            packetName.AppendInteger(pref.NewnaviY);
            packetName.AppendInteger(pref.NewnaviWidth);
            packetName.AppendInteger(pref.NewnaviHeight);
            packetName.AppendBool(false);
            packetName.AppendInteger(1);

            session.SendMessage(packetName);
        }
Ejemplo n.º 24
0
        /// <summary>
        ///     Removes all furniture.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <returns>List&lt;RoomItem&gt;.</returns>
        internal List<RoomItem> RemoveAllFurniture(GameClient session)
        {
            var items = new List<RoomItem>();
            var roomGamemap = _room.GetGameMap();
            foreach (var item in FloorItems.Values.ToArray())
            {
                item.Interactor.OnRemove(session, item);
                roomGamemap.RemoveSpecialItem(item);
                var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("PickUpFloorItemMessageComposer"));
                serverMessage.AppendString(item.Id.ToString());
                serverMessage.AppendBool(false); //expired
                serverMessage.AppendInteger(item.UserId); //pickerId
                serverMessage.AppendInteger(0); // delay
                _room.SendMessage(serverMessage);
                if (item.IsBuilder)
                {
                    using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.RunFastQuery($"DELETE FROM items_rooms WHERE id='{item.Id}'");
                    }
                    continue;
                }
                items.Add(item);
            }

            foreach (var item in WallItems.Values.ToArray())
            {
                item.Interactor.OnRemove(session, item);
                var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("PickUpWallItemMessageComposer"));
                serverMessage.AppendString(item.Id.ToString());
                serverMessage.AppendInteger(item.UserId);
                _room.SendMessage(serverMessage);
                if (item.IsBuilder)
                {
                    using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.RunFastQuery($"DELETE FROM items_rooms WHERE id='{item.Id}'");
                    }
                    continue;
                }
                items.Add(item);
            }

            _removedItems.Clear();
            _updatedItems.Clear();
            WallItems.Clear();
            FloorItems.Clear();
            Rollers.Clear();

            using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery($"UPDATE items_rooms SET room_id='0' WHERE room_id='{_room.RoomId}'");
            }
            _room.GetGameMap().GenerateMaps();

            _room.GetRoomUserManager().OnUserUpdateStatus();
            return items;
        }
Ejemplo n.º 25
0
 /// <summary>
 /// Serializes the specified message.
 /// </summary>
 /// <param name="message">The message.</param>
 internal void Serialize(ServerMessage message)
 {
     try
     {
         message.AppendInteger(Id);
         message.AppendString(Caption);
         message.AppendString(Description);
         message.AppendInteger(Type);
         message.AppendString(Caption);
         message.AppendString(Image);
         message.AppendInteger(ParentId);
         message.AppendInteger(RoomInfo != null ? RoomInfo.UsersNow : 0);
         message.AppendInteger((ItemType == PublicItemType.None)
             ? 0
             : ((ItemType == PublicItemType.Tag)
                 ? 1
                 : ((ItemType == PublicItemType.Flat)
                     ? 2
                     : ((ItemType == PublicItemType.PublicFlat)
                         ? 2
                         : ((ItemType != PublicItemType.Category) ? 0 : 4)))));
         switch (ItemType)
         {
             case PublicItemType.Tag:
                 {
                     message.AppendString(TagsToSearch);
                     break;
                 }
             case PublicItemType.Category:
                 {
                     message.AppendBool(false);
                     break;
                 }
             case PublicItemType.Flat:
                 {
                     RoomInfo.Serialize(message, false);
                     break;
                 }
             case PublicItemType.PublicFlat:
                 {
                     RoomInfo.Serialize(message, false);
                     break;
                 }
             default:
                 {
                     break;
                 }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception on publicitems composing: {0}", ex);
     }
 }
Ejemplo n.º 26
0
        /// <summary>
        ///     Composes the item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <param name="message">The message.</param>
        internal static void ComposeItem(CatalogItem item, ServerMessage message)
        {
            message.AppendInteger(item.Id);
            message.AppendString(item.Name, true);
            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(item.GetFirstBaseItem().AllowGift);

            switch (item.Name)
            {
                case "g0 group_product":
                    message.AppendInteger(0);
                    break;

                case "room_ad_plus_badge":
                    message.AppendInteger(1);
                    message.AppendString("b");
                    message.AppendString("RADZZ");
                    break;

                default:
                    if (item.Name.StartsWith("builders_club_addon_") || item.Name.StartsWith("builders_club_time_"))
                        message.AppendInteger(0);
                    else if (item.Badge == "")
                        message.AppendInteger(item.Items.Count);
                    else
                    {
                        message.AppendInteger(item.Items.Count + 1);
                        message.AppendString("b");
                        message.AppendString(item.Badge);
                    }
                    break;
            }
            foreach (var baseItem in item.Items.Keys)
            {
                if (item.Name == "g0 group_product" || item.Name.StartsWith("builders_club_addon_") ||
                    item.Name.StartsWith("builders_club_time_"))
                    break;
                if (item.Name == "room_ad_plus_badge")
                {
                    message.AppendString("");
                    message.AppendInteger(0);
                }
                else
                {
                    message.AppendString(baseItem.Type.ToString());
                    message.AppendInteger(baseItem.SpriteId);

                    if (item.Name.Contains("wallpaper_single") || item.Name.Contains("floor_single") ||
                        item.Name.Contains("landscape_single"))
                    {
                        var array = item.Name.Split('_');
                        message.AppendString(array[2]);
                    }
                    else if (item.Name.StartsWith("bot_") || baseItem.InteractionType == Interaction.MusicDisc ||
                             item.GetFirstBaseItem().Name == "poster")
                        message.AppendString(item.ExtraData);
                    else if (item.Name.StartsWith("poster_"))
                    {
                        var array2 = item.Name.Split('_');
                        message.AppendString(array2[1]);
                    }
                    else if (item.Name.StartsWith("poster "))
                    {
                        var array3 = item.Name.Split(' ');
                        message.AppendString(array3[1]);
                    }
                    else if (item.SongId > 0u && baseItem.InteractionType == Interaction.MusicDisc)
                        message.AppendString(item.ExtraData);
                    else
                        message.AppendString(string.Empty);

                    message.AppendInteger(item.Items[baseItem]);
                    message.AppendBool(item.IsLimited);
                    if (!item.IsLimited)
                        continue;
                    message.AppendInteger(item.LimitedStack);
                    message.AppendInteger(item.LimitedStack - item.LimitedSelled);
                }
            }
            message.AppendInteger(item.ClubOnly ? 1 : 0);

            if (item.IsLimited || item.FirstAmount != 1)
            {
                message.AppendBool(false);
                return;
            }

            message.AppendBool(item.HaveOffer && !item.IsLimited);
        }
Ejemplo n.º 27
0
        /// <summary>
        ///     Removes the room item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <param name="wasPicked">if set to <c>true</c> [was picked].</param>
        internal void RemoveRoomItem(RoomItem item, bool wasPicked)
        {
            if (item.IsWallItem)
            {
                var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("PickUpWallItemMessageComposer"));
                serverMessage.AppendString(item.Id.ToString());
                serverMessage.AppendInteger(wasPicked ? item.UserId : 0);
                _room.SendMessage(serverMessage);
            }
            else if (item.IsFloorItem)
            {
                var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("PickUpFloorItemMessageComposer"));
                serverMessage.AppendString(item.Id.ToString());
                serverMessage.AppendBool(false); //expired
                serverMessage.AppendInteger(wasPicked ? item.UserId : 0); //pickerId
                serverMessage.AppendInteger(0); // delay
                _room.SendMessage(serverMessage);
            }

            RoomItem junkItem;
            if (item.IsWallItem)
            {
                WallItems.TryRemove(item.Id, out junkItem);
            }
            else
            {
                FloorItems.TryRemove(item.Id, out junkItem);
                _room.GetGameMap().RemoveFromMap(item);
            }

            RemoveItem(item.Id);
            _room.GetRoomUserManager().OnUserUpdateStatus(item.X, item.Y);
        }
Ejemplo n.º 28
0
        /// <summary>
        ///     Composes the page.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <returns>ServerMessage.</returns>
        internal static ServerMessage ComposePage(CatalogPage page)
        {
            var 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;
        }
Ejemplo n.º 29
0
        /// <summary>
        ///     Forums the data message.
        /// </summary>
        /// <param name="requesterId">The requester identifier.</param>
        /// <returns>ServerMessage.</returns>
        internal ServerMessage ForumDataMessage(uint requesterId)
        {
            string string1 = string.Empty, string2 = string.Empty, string3 = string.Empty, string4 = string.Empty;

            ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("GroupForumDataMessageComposer"));

            message.AppendInteger(Id);
            message.AppendString(Name);
            message.AppendString(Description);
            message.AppendString(Badge);
            message.AppendInteger(0);
            message.AppendInteger(0);
            message.AppendInteger(ForumMessagesCount);
            message.AppendInteger(0);
            message.AppendInteger(0);
            message.AppendInteger(ForumLastPosterId);
            message.AppendString(ForumLastPosterName);
            message.AppendInteger(ForumLastPostTime);
            message.AppendInteger(WhoCanRead);
            message.AppendInteger(WhoCanPost);
            message.AppendInteger(WhoCanThread);
            message.AppendInteger(WhoCanMod);

            if (WhoCanRead == 1 && !Members.ContainsKey(requesterId))
                string1 = "not_member";
            if (WhoCanRead == 2 && !Admins.ContainsKey(requesterId))
                string1 = "not_admin";
            if (WhoCanPost == 1 && !Members.ContainsKey(requesterId))
                string2 = "not_member";
            if (WhoCanPost == 2 && !Admins.ContainsKey(requesterId))
                string2 = "not_admin";
            if (WhoCanPost == 3 && requesterId != CreatorId)
                string2 = "not_owner";
            if (WhoCanThread == 1 && !Members.ContainsKey(requesterId))
                string3 = "not_member";
            if (WhoCanThread == 2 && !Admins.ContainsKey(requesterId))
                string3 = "not_admin";
            if (WhoCanThread == 3 && requesterId != CreatorId)
                string3 = "not_owner";
            if (WhoCanMod == 2 && !Admins.ContainsKey(requesterId))
                string4 = "not_admin";
            if (WhoCanMod == 3 && requesterId != CreatorId)
                string4 = "not_owner";

            message.AppendString(string1);
            message.AppendString(string2);
            message.AppendString(string3);
            message.AppendString(string4);
            message.AppendString(string.Empty);
            message.AppendBool(requesterId == CreatorId);
            message.AppendBool(true);

            return message;
        }
Ejemplo n.º 30
0
 /// <summary>
 /// Serializes the search results.
 /// </summary>
 /// <param name="searchQuery">The search query.</param>
 /// <returns>ServerMessage.</returns>
 public static ServerMessage SerializeSearchResults(string searchQuery)
 {
     bool containsOwner = false, containsGroup = false;
     string originalQuery = searchQuery;
     if (searchQuery.StartsWith("owner:"))
     {
         searchQuery = searchQuery.Replace("owner:", string.Empty);
         containsOwner = true;
     }
     else if (searchQuery.StartsWith("group:"))
     {
         searchQuery = searchQuery.Replace("group:", string.Empty);
         containsGroup = true;
     }
     List<RoomData> rooms = new List<RoomData>();
     if (!containsOwner)
     {
         bool initForeach = false;
         KeyValuePair<RoomData, uint>[] activeRooms = AzureEmulator.GetGame().GetRoomManager().GetActiveRooms();
         try
         {
             if (activeRooms != null && activeRooms.Any()) initForeach = true;
         }
         catch
         {
             initForeach = false;
         }
         if (initForeach)
         {
             foreach (KeyValuePair<RoomData, uint> rms in activeRooms)
             {
                 if (rms.Key.Name.ToLower().Contains(searchQuery.ToLower()) && rooms.Count <= 50) rooms.Add(rms.Key);
                 else break;
             }
         }
     }
     if (rooms.Count < 50 || containsOwner || containsGroup)
     {
         DataTable dTable;
         using (IQueryAdapter dbClient = AzureEmulator.GetDatabaseManager().GetQueryReactor())
         {
             if (containsOwner)
             {
                 dbClient.SetQuery(
                     "SELECT * FROM rooms_data WHERE owner = @query AND roomtype = 'private' LIMIT 50");
                 dbClient.AddParameter("query", searchQuery);
                 dTable = dbClient.GetTable();
             }
             else if (containsGroup)
             {
                 dbClient.SetQuery(
                     "SELECT * FROM rooms_data JOIN groups_data ON rooms_data.id = groups_data.room_id WHERE groups_data.name LIKE @query AND roomtype = 'private' LIMIT 50");
                 dbClient.AddParameter("query", "%" + searchQuery + "%");
                 dTable = dbClient.GetTable();
             }
             else
             {
                 dbClient.SetQuery(
                     "SELECT * FROM rooms_data WHERE caption = @query AND roomtype = 'private' LIMIT " +
                     (50 - rooms.Count));
                 dbClient.AddParameter("query", searchQuery);
                 dTable = dbClient.GetTable();
             }
         }
         if (dTable != null)
         {
             foreach (RoomData rData in dTable.Rows.Cast<DataRow>().Select(row => AzureEmulator.GetGame()
                 .GetRoomManager()
                 .FetchRoomData(Convert.ToUInt32(row["id"]), row)).Where(rData => !rooms.Contains(rData)))
                 rooms.Add(rData);
         }
     }
     ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("NavigatorListingsMessageComposer"));
     message.AppendInteger(8);
     message.AppendString(originalQuery);
     message.AppendInteger(rooms.Count);
     foreach (RoomData room in rooms) room.Serialize(message, false);
     message.AppendBool(false);
     return message;
 }