public void RunTest()
        {
            int step = 1;

            Log.Step(step++, "Open main onliner page");
            Onliner mainForm = new Onliner();

            Log.Step(step++, "Go to catalog page");
            mainForm.NavigateToCatalog();

            Log.Step(step++, "Click TVsets link");
            CatalogPage catalogForm = new CatalogPage();
            catalogForm.NavigateToTVsets();

            Log.Step(step++, "Set manufacturer search");
            SearchResultPage TVpage = new SearchResultPage();
            TVpage.SearchInManufacturer();

            Log.Step(step++, "Set price and Year search");
            TVpage.SearchInTextsRange();

            Log.Step(step++, "Set diagonal search");
            TVpage.SearchInSelectBoxesRange();

            Log.Step(step++, "Get data for all models available at first page result");
            TVpage.SearchInSelectBoxesRange();

            Log.Step(step++, "Create list of model's description");
            var tvs = TVpage.GetTvs();

            Log.Step(step++, "Check that all collected values are correct");
            foreach (var tv in tvs)
            {
                if ( _model !="")
                    Assert.AreEqual(_model, tv.manufacturer,string.Concat("manufacturer ", _model, " is correct"));
                if (_diagonalLowerLimit != "")
                    Assert.GreaterOrEqual(tv.diagonal,_diagonalLowerLimit, string.Concat("diagonal", tv.diagonal, "inside range "));
                if (_diagonalUpperLimit != "")
                    Assert.LessOrEqual(tv.diagonal, _diagonalUpperLimit, string.Concat("diagonal", tv.diagonal, "inside range "));
                if (_priceUpperLimit != "")
                    Assert.LessOrEqual(tv.price,_priceUpperLimit, string.Concat("price", tv.price, "inside range "));
                if (_priceLowerLimit != "")
                    Assert.GreaterOrEqual(tv.price, _priceLowerLimit, string.Concat("price", tv.price, "inside range "));
                if (_YearLowerLimit != "")
                    Assert.GreaterOrEqual(tv.year, _YearLowerLimit, string.Concat("Year ", tv.year, "inside range "));
                if (_YearUpperLimit != "")
                    Assert.LessOrEqual(tv.year, _YearLowerLimit, string.Concat("Year ", tv.year, "inside range "));
            }
        }
Esempio n. 2
0
        public bool CanAccessPage(GameClient Session, CatalogPage Page)
        {
            if (Page.MinimumRank > 0)
            {
                if (Session.GetHabbo().Rank < Page.MinimumRank)
                {
                    return(false);
                }
            }

            if (Page.MinimumVIP > 0)
            {
                if (Session.GetHabbo().VIPRank < Page.MinimumVIP)
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 3
0
        public ServerMessage Handle(ValueHolder valueHolder = null)
        {
            CatalogPage page = valueHolder.GetValue <CatalogPage>("CatalogPage");

            ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.R26_20080915_0408_7984_61ccb5f8b8797a3aba62c1fa2ca80169);

            message.Init(r26Outgoing.CatalogPage);
            message.AppendString("i:" + page.PageID.ToString(), 13);
            message.AppendString("n:" + page.Caption, 13);
            message.AppendString("g:" + page.PageHeadline, 13);
            message.AppendString("h:" + page.PageText1, 13);
            message.AppendString("w:" + page.PageText2, 13);

            switch (page.PageLayout)
            {
            case "frontpage":
            {
                message.AppendString("l:ctlg_purse", 13);
            }
            break;

            case "default_3x3":
            {
                message.AppendString("l:ctlg_layout2", 13);
            }
            break;

            default:
            {
                message.AppendString("l:" + page.PageLayout, 13);
            }
            break;
            }

            foreach (CatalogItem item in page.Items.Values)
            {
                item.Serialize(message);
            }

            return(message);
        }
Esempio n. 4
0
        public static ServerMessage Compose(CatalogPage Page)
        {
            ServerMessage Message = new ServerMessage(OpcodesOut.CATALOG_PAGE);

            Message.AppendInt32(Page.Id);
            Message.AppendStringWithBreak(Page.Template);
            Message.AppendInt32(Page.PageStrings1.Count);

            foreach (string PageString in Page.PageStrings1)
            {
                Message.AppendStringWithBreak(PageString);
            }

            Message.AppendInt32(Page.PageStrings2.Count);

            foreach (string PageString in Page.PageStrings2)
            {
                Message.AppendStringWithBreak(PageString);
            }

            Message.AppendInt32(Page.Items.Count);

            foreach (CatalogItem Item in Page.Items)
            {
                Message.AppendUInt32(Item.Id);
                Message.AppendStringWithBreak(Item.DisplayName);
                Message.AppendInt32(Item.CostCredits);
                Message.AppendInt32(Item.CostActivityPoints);
                Message.AppendInt32(0); // other cost
                Message.AppendInt32(1); // unknown.
                Message.AppendStringWithBreak(Item.Definition.TypeLetter);
                Message.AppendUInt32(Item.Definition.SpriteId);
                Message.AppendStringWithBreak(Item.ShowPresetFlags ? Item.PresetFlags : string.Empty); // unknown
                Message.AppendInt32(Item.Amount);                                                      // amount
                Message.AppendInt32(-1);                                                               // unknown [for deals??]
                Message.AppendInt32(Item.ClubRestriction);                                             // Added in RELEASE63-34159-34129-201106010852
            }

            Message.AppendInt32(-1);
            return(Message);
        }
Esempio n. 5
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int    PageId    = Packet.PopInt();
            int    Something = Packet.PopInt();
            string CataMode  = Packet.PopString();

            CatalogPage   Page   = null;
            BCCatalogPage BCPage = null;

            if (CataMode == "NORMAL")
            {
                if (!RavenEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page))
                {
                    return;
                }

                if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1))
                {
                    return;
                }

                Session.SendMessage(new CatalogPageComposer(Page, CataMode, Session));
            }

            if (CataMode == "BUILDERS_CLUB")
            {
                if (!RavenEnvironment.GetGame().GetCatalog().TryGetBCPage(PageId, out BCPage))
                {
                    return;
                }

                if (!BCPage.Enabled || !BCPage.Visible || BCPage.MinimumRank > Session.GetHabbo().Rank || (BCPage.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1))
                {
                    return;
                }

                Session.SendMessage(new BCCatalogPageComposer(BCPage, CataMode));
            }

            Session.GetHabbo().lastLayout = Page.Template;
        }
Esempio n. 6
0
        public void P20_1_a18_Self_Cancel_Enrollment_in_Classroom_Course_14435()
        {
            #region Login with learner and Cancel Enrollment for an Enrolled Classroom Course
            //LoginPage.LoginAs("userreg_0403012001people1").WithPassword("").Login();
            //_test.Log(Status.Pass, "Login as a Learner");
            CommonSection.Learner.CurrentTraining();
            _test.Log(Status.Info, "Open Current trainging Page");
            CommonSection.SearchCatalog('"' + classroomcoursetitle + "_TC14432" + '"'); // ('"' + classroomcoursetitle + '"');
            _test.Log(Status.Info, "Search course name as" + classroomcoursetitle + "_TC14432");
            CatalogPage.ClickonSearchedCatalog(classroomcoursetitle + "_TC14432");      //("ClassRoomCourseTitle2011472447");//
            _test.Log(Status.Info, "Click on Course title");
            // Assert.IsTrue(CatalogPage.GetCurrentEnrolledTraining(classroomcoursetitle+ "_TC14432"));// (classroomcoursetitle));
            _test.Log(Status.Pass, "Enrolled classroom course is displaying");
            //CurrentTrainings.ClickAction();

            CatalogPage.CancelEnrollment_WithoutReason();
            _test.Log(Status.Info, "Click on Cancel Enrollment");
            Assert.IsTrue(ContentDetailsPage.isEnrollButtonDisplay());// CatalogPage.GetMessages());
            _test.Log(Status.Pass, "Verify is Enroll button display");
            #endregion
        }
Esempio n. 7
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            CatalogPage page = QuasarEnvironment.GetGame().GetCatalog().TryGetPageByTemplate("vip_buy");

            if (page == null)
            {
                return;
            }

            ServerPacket Message = new ServerPacket(ServerPacketHeader.GetClubComposer);

            Message.WriteInteger(page.Items.Values.Count);

            foreach (CatalogItem catalogItem in page.Items.Values)
            {
                catalogItem.SerializeClub(Message, Session);
            }

            Message.WriteInteger(Packet.PopInt());

            Session.SendMessage(Message);
        }
Esempio n. 8
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int    PageId    = Packet.PopInt();
            int    Something = Packet.PopInt();
            string CataMode  = Packet.PopString();

            CatalogPage Page = null;

            if (!CloudServer.GetGame().GetCatalog().TryGetPage(PageId, out Page))
            {
                return;
            }

            if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1))
            {
                return;
            }

            Session.GetHabbo().lastLayout = Page.Template;

            Session.SendMessage(new CatalogPageComposer(Page, CataMode));
        }
        private void Append(ServerPacket message, CatalogPage catalogPage)
        {
            IList <CatalogPage> pages = Alias.Server.CatalogManager.GetCatalogPages(catalogPage.Id, _habbo);

            message.WriteBoolean(catalogPage.Visible);
            message.WriteInteger(catalogPage.Icon);
            message.WriteInteger(catalogPage.Enabled ? catalogPage.Id : -1);
            message.WriteString(catalogPage.Name);
            message.WriteString(catalogPage.Caption + " (" + catalogPage.Id + ")");

            message.WriteInteger(catalogPage.OfferIds.Count);
            foreach (int offerId in catalogPage.OfferIds)
            {
                message.WriteInteger(offerId);
            }

            message.WriteInteger(pages.Count);
            foreach (CatalogPage page in pages)
            {
                Append(message, page);
            }
        }
    public async IAsyncEnumerable<PackageMetadata> ReadPackageMetadata(
        HttpClient httpClient,
        CatalogPage catalogPage,
        [EnumeratorCancellation] CancellationToken cancellationToken = default,
        int maxConcurrentHttpCalls = 10)
    {
        using var throttler = new SemaphoreSlim(maxConcurrentHttpCalls);

        var tasks = new List<Task<PackageMetadata>>();
        foreach (var item in catalogPage.Items.Where(p => p.Type == "nuget:PackageDetails"))
        {
            tasks.Add(this.GetMetadataForPackage(httpClient, item.Url, throttler, cancellationToken));
        }

        while (tasks.Count > 0)
        {
            var done = await Task.WhenAny(tasks).ConfigureAwait(false);
            tasks.Remove(done);

            yield return await done
                .ConfigureAwait(false);
        }
    }
Esempio n. 11
0
        public void RunTest()
        {
            Log.Step(1);
            MainForm mainForm = new MainForm();

            mainForm.AssertLogo();

            Log.Step(2, string.Format("Go to the catalog of '{0}'!", _product));
            mainForm.ClickNavigateLink(_product);

            Log.Step(3, (string.Format("Filter items by maximum price : '{0}'!", _tillPrice)));
            CatalogPage catalog = new CatalogPage();

            catalog.Select_Till_Price_Parametr(_tillPrice);

            Log.Step(4);
            catalog.SortingItems("Дешевые");
            catalog.AssertAscOrder();

            Log.Step(5);
            catalog.SortingItems("Дорогие");
            catalog.AssertDescOrder();
        }
        public async Task OnCatalogPageAsync(CatalogPage catalogPage)
        {
            var records = await _visitor.GetRecordsAsync(catalogPage);

            if (!records.Any())
            {
                return;
            }

            var writeHeader = false;

            if (!File.Exists(_csvPath))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(_csvPath));
                writeHeader = true;
            }

            using var stream     = new FileStream(_csvPath, FileMode.Append);
            using var textWriter = new StreamWriter(stream);
            using var csvWriter  = new CsvWriter(textWriter, CultureInfo.InvariantCulture);
            csvWriter.SetDefaultConfiguration();
            csvWriter.Configuration.HasHeaderRecord = writeHeader;
            csvWriter.WriteRecords(records);
        }
Esempio n. 13
0
        public void CheckAddingToFavorites(int countOfProductsToAddToFavourites)
        {
            Logger.Log.Info("CheckAddingToFavorites");
            int         currentCountOfFavouriteProducts = countOfProductsToAddToFavourites;
            Catalog     catalogForTest = CatalogCreator.withWomensScarves();
            CatalogPage catalogPageCheckAddingToFavorites = new CatalogPage(driver);

            try
            {
                catalogPageCheckAddingToFavorites.OpenPage(catalogForTest.URL)
                .AcceptCookies();
                currentCountOfFavouriteProducts = catalogPageCheckAddingToFavorites.GetNumberOfFavouriteProducts();
                catalogPageCheckAddingToFavorites.AddProductsToFavourites(countOfProductsToAddToFavourites);
                currentCountOfFavouriteProducts = catalogPageCheckAddingToFavorites.GetNumberOfFavouriteProducts() - currentCountOfFavouriteProducts;
            }
            catch (Exception ex)
            {
                Logger.ErrorHandler(driver, ex);
            }

            Assert.AreEqual(countOfProductsToAddToFavourites,
                            currentCountOfFavouriteProducts,
                            "invalid favourite products count");
        }
        public void CheckProductCreationTest()
        {
            var loginPage = new LoginPage(webDriver);

            loginPage.Login("admin", "admin");

            var administrationPage = new AdministrationPage(webDriver, wait);

            administrationPage.CatalogMenu.Click();

            var catalogPage    = new CatalogPage(webDriver, wait);
            var newProductName = catalogPage.CreateNewProduct();

            var mainStorePage = new MainStorePage(webDriver, wait);

            mainStorePage.Load();
            var ducksNames = mainStorePage.DucksList.Select(x =>
            {
                var name = x.FindElement(By.ClassName("name"));
                return(name.Text);
            }).ToList();

            Assert.Contains(newProductName, ducksNames);
        }
Esempio n. 15
0
        public static void Append(this ServerMessage message, CatalogPage page, Rank rank, CultureInfo lang)
        {
            message.AppendBool(page.Visible);
            message.AppendInteger(page.Icon);
            message.AppendInteger(page.Id);
            message.AppendString(page.Layout.Name);
            message.AppendString(page.Caption.Get(lang));
            message.AppendInteger(page.Offers.Count);

            foreach (CatalogOffer item in page.Offers)
            {
                message.AppendInteger(item.Id);
            }

            IOrderedEnumerable <CatalogPage> sortedSubPages =
                page.Children.Where(x => x.MinRank <= rank).OrderBy(x => x.Id);

            message.AppendInteger(sortedSubPages.Count());

            foreach (CatalogPage child in sortedSubPages)
            {
                message.Append(child, rank, lang);
            }
        }
Esempio n. 16
0
        protected void rpterPages_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                CatalogPage cp = (e.Item.DataItem as CatalogPage);

                HyperLink hl = (e.Item.FindControl("lnkGo") as HyperLink);
                hl.NavigateUrl = "/pagelist/view/default.aspx?Id=" + cp.ID;
                hl.Text        = cp.Name;
                hl.ToolTip     = string.Format("Ingresar al distribuidor {0}", cp.Name);

                (e.Item.FindControl("litParent") as Literal).Text = "N/D";
                if (cp.Parent != null)
                {
                    (e.Item.FindControl("litParent") as Literal).Text = cp.Parent.Name;
                }

                (e.Item.FindControl("litDescription") as Literal).Text = "N/D";
                if (!string.IsNullOrEmpty(cp.Description))
                {
                    (e.Item.FindControl("litDescription") as Literal).Text = StringFormat.Cut(cp.Description, 32);
                }
            }
        }
Esempio n. 17
0
        private ICriteria GetDistributorsCriteria(string name, Country country, PriceList priceList, Lookup paymentTerm, DistributorStatus?status, GridState gridState, Lookup saleCondition, Lookup type, CatalogPage page, IList priceListIds, bool isActive)
        {
            ICriteria crit = GetCriteria();

            if (priceListIds != null)
            {
                int[] intPriceListIds = new int[priceListIds.Count];
                for (int i = 0; i < priceListIds.Count; i++)
                {
                    intPriceListIds[i] = Convert.ToInt32(priceListIds[i]);
                }

                ICriteria critDistributor = crit.CreateCriteria("PriceList");
                critDistributor.Add(Expression.In("ID", intPriceListIds));
            }


            if (!string.IsNullOrEmpty(name))
            {
                Disjunction d = new Disjunction();
                d.Add(Expression.InsensitiveLike("Name", name, MatchMode.Anywhere));
                d.Add(Expression.InsensitiveLike("Code", name, MatchMode.Anywhere));
                crit.Add(d);
            }


            if (country != null)
            {
                ICriteria critCountry = crit.CreateCriteria("Country");
                critCountry.Add(Expression.Eq("ID", country.ID));
            }
            if (priceList != null)
            {
                ICriteria critPriceList = crit.CreateCriteria("PriceList");
                critPriceList.Add(Expression.Eq("ID", priceList.ID));
            }
            if (paymentTerm != null)
            {
                crit.Add(Expression.Eq("PaymentTerm", paymentTerm));
            }

            if (status != null)
            {
                crit.Add(Expression.Eq("DistributorStatus", status));
            }
            else
            if (isActive == false)
            {
                crit.Add(Expression.Eq("DistributorStatus", DistributorStatus.Active));
            }

            if (saleCondition != null)
            {
                crit.Add(Expression.Eq("SaleConditions", saleCondition));
            }

            if (type != null)
            {
                crit.Add(Expression.Eq("Type", type));
            }

            if (page != null)
            {
                crit.CreateCriteria("PriceList").CreateCriteria("CategoryPages").Add(Expression.Eq("ID", page.ID));
            }

            return(crit);
        }
Esempio n. 18
0
 public ServerMessage method_19(CatalogPage class48_0)
 {
     ServerMessage Message = new ServerMessage(127u);
     Message.AppendInt32(class48_0.Int32_0);
     string string_ = class48_0.string_1;
     switch (string_)
     {
     case "frontpage":
         Message.AppendStringWithBreak("frontpage3");
         Message.AppendInt32(3);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendStringWithBreak(class48_0.string_3);
         Message.AppendStringWithBreak("");
         Message.AppendInt32(11);
         Message.AppendStringWithBreak(class48_0.string_5);
         Message.AppendStringWithBreak(class48_0.string_9);
         Message.AppendStringWithBreak(class48_0.string_6);
         Message.AppendStringWithBreak(class48_0.string_7);
         Message.AppendStringWithBreak(class48_0.string_10);
         Message.AppendStringWithBreak("#FAF8CC");
         Message.AppendStringWithBreak("#FAF8CC");
         Message.AppendStringWithBreak("Read More >");
         Message.AppendStringWithBreak("magic.credits");
         goto IL_47F;
     case "recycler_info":
         Message.AppendStringWithBreak(class48_0.string_1);
         Message.AppendInt32(2);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendStringWithBreak(class48_0.string_3);
         Message.AppendInt32(3);
         Message.AppendStringWithBreak(class48_0.string_5);
         Message.AppendStringWithBreak(class48_0.string_6);
         Message.AppendStringWithBreak(class48_0.string_7);
         goto IL_47F;
     case "recycler_prizes":
         Message.AppendStringWithBreak("recycler_prizes");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak("catalog_recycler_headline3");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak(class48_0.string_5);
         goto IL_47F;
     case "spaces":
         Message.AppendStringWithBreak("spaces_new");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendInt32(1);
         Message.AppendStringWithBreak(class48_0.string_5);
         goto IL_47F;
     case "recycler":
         Message.AppendStringWithBreak(class48_0.string_1);
         Message.AppendInt32(2);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendStringWithBreak(class48_0.string_3);
         Message.AppendInt32(1);
         Message.AppendStringWithBreak(class48_0.string_5, 10);
         Message.AppendStringWithBreak(class48_0.string_6);
         Message.AppendStringWithBreak(class48_0.string_7);
         goto IL_47F;
     case "trophies":
         Message.AppendStringWithBreak("trophies");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendInt32(2);
         Message.AppendStringWithBreak(class48_0.string_5);
         Message.AppendStringWithBreak(class48_0.string_7);
         goto IL_47F;
     case "pets":
         Message.AppendStringWithBreak("pets");
         Message.AppendInt32(2);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendStringWithBreak(class48_0.string_3);
         Message.AppendInt32(4);
         Message.AppendStringWithBreak(class48_0.string_5);
         Message.AppendStringWithBreak("");
         Message.AppendStringWithBreak("Pick a color:");
         Message.AppendStringWithBreak("Pick a race:");
         goto IL_47F;
     case "club_buy":
         Message.AppendStringWithBreak("club_buy");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak("habboclub_2");
         Message.AppendInt32(1);
         goto IL_47F;
     case "club_gifts":
         Message.AppendStringWithBreak("club_gifts");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak("habboclub_2");
         Message.AppendInt32(1);
         Message.AppendStringWithBreak("");
         Message.AppendInt32(1);
         goto IL_47F;
     case "soundmachine":
         Message.AppendStringWithBreak(class48_0.string_1);
         Message.AppendInt32(2);
         Message.AppendStringWithBreak(class48_0.string_2);
         Message.AppendStringWithBreak(class48_0.string_3);
         Message.AppendInt32(2);
         Message.AppendStringWithBreak(class48_0.string_5);
         Message.AppendStringWithBreak(class48_0.string_7);
         goto IL_47F;
     }
     Message.AppendStringWithBreak(class48_0.string_1);
     Message.AppendInt32(3);
     Message.AppendStringWithBreak(class48_0.string_2);
     Message.AppendStringWithBreak(class48_0.string_3);
     Message.AppendStringWithBreak(class48_0.string_4);
     Message.AppendInt32(3);
     Message.AppendStringWithBreak(class48_0.string_5);
     Message.AppendStringWithBreak(class48_0.string_7);
     Message.AppendStringWithBreak(class48_0.string_8);
     IL_47F:
     Message.AppendInt32(class48_0.list_0.Count);
     foreach (CatalogItem current in class48_0.list_0)
     {
         current.method_1(Message);
     }
     return Message;
 }
Esempio n. 19
0
        public IList <Distributor> GetDistributors(string name, Country country, PriceList priceList, Lookup paymentTerm, DistributorStatus?status, GridState gridState, out int totalRecords, Lookup saleCondition, Lookup type, CatalogPage page)
        {
            ExecutePermissionValidator epv = new ExecutePermissionValidator();

            epv.ClassType     = typeof(PriceList);
            epv.KeyIdentifier = Config.SeePriceLists;

            bool  CanSeeAll    = PermissionManager.Check(epv);
            IList priceListIds = null;

            if (!CanSeeAll)
            {
                priceListIds = PermissionManager.GetPermissionIdentifiers(typeof(PriceList), PermissionAction.Create);
            }

            epv               = new ExecutePermissionValidator();
            epv.ClassType     = typeof(Distributor);
            epv.KeyIdentifier = Config.DistributorInactiveStatus;
            bool isActive = PermissionManager.Check(epv);

            return(repository.GetDistributors(name, country, priceList, paymentTerm, status, gridState, out totalRecords, saleCondition, type, page, priceListIds, isActive));
        }
Esempio n. 20
0
        private ICriteria GetDistributorsCriteria(string name, Country country, PriceList priceList,
                                                  Lookup paymentTerm, DistributorStatus?status,
                                                  GridState gridState, Incoterm?saleCondition, Lookup type, CatalogPage page)
        {
            ICriteria crit = GetCriteria();

            ExecutePermissionValidator epv = new ExecutePermissionValidator();

            epv.ClassType     = typeof(Distributor);
            epv.KeyIdentifier = Config.SeeAllDistributors;

            if (PermissionManager.Check(epv) == false)
            {
                IList priceListIds    = PermissionManager.GetPermissionIdentifiers(typeof(PriceList), PermissionAction.Create);
                int[] intPriceListIds = new int[priceListIds.Count];
                for (int i = 0; i < priceListIds.Count; i++)
                {
                    intPriceListIds[i] = Convert.ToInt32(priceListIds[i]);
                }

                ICriteria critDistributor = crit.CreateCriteria("PriceList");
                critDistributor.Add(Expression.In("ID", intPriceListIds));
            }


            if (!string.IsNullOrEmpty(name))
            {
                Disjunction d = new Disjunction();
                d.Add(Expression.InsensitiveLike("Name", name, MatchMode.Anywhere));
                d.Add(Expression.InsensitiveLike("Code", name, MatchMode.Anywhere));
                crit.Add(d);
            }


            if (country != null)
            {
                ICriteria critCountry = crit.CreateCriteria("Country");
                critCountry.Add(Expression.Eq("ID", country.ID));
            }
            if (priceList != null)
            {
                ICriteria critPriceList = crit.CreateCriteria("PriceList");
                critPriceList.Add(Expression.Eq("ID", priceList.ID));
            }
            if (paymentTerm != null)
            {
                crit.Add(Expression.Eq("PaymentTerm", paymentTerm));
            }

            if (status != null)
            {
                crit.Add(Expression.Eq("DistributorStatus", status));
            }
            else
            {
                epv               = new ExecutePermissionValidator();
                epv.ClassType     = typeof(Distributor);
                epv.KeyIdentifier = Config.DistributorInactiveStatus;

                if (PermissionManager.Check(epv) == false)
                {
                    crit.Add(Expression.Eq("DistributorStatus", DistributorStatus.Active));
                }
            }

            if (saleCondition != null)
            {
                crit.Add(Expression.Eq("SaleConditions", saleCondition));
            }

            if (type != null)
            {
                crit.Add(Expression.Eq("Type", type));
            }

            if (page != null)
            {
                crit.CreateCriteria("PriceList").CreateCriteria("CategoryPages").Add(Expression.Eq("ID", page.ID));
            }

            return(crit);
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int    PageId      = Packet.PopInt();
            int    ItemId      = Packet.PopInt();
            string Data        = Packet.PopString();
            string GiftUser    = StringCharFilter.Escape(Packet.PopString());
            string GiftMessage = StringCharFilter.Escape(Packet.PopString().Replace(Convert.ToChar(5), ' '));
            int    SpriteId    = Packet.PopInt();
            int    Ribbon      = Packet.PopInt();
            int    Colour      = Packet.PopInt();
            bool   dnow        = Packet.PopBoolean();

            if (PlusEnvironment.GetSettingsManager().TryGetValue("room.item.gifts.enabled") != "1")
            {
                Session.SendNotification("The hotel managers have disabled gifting");
                return;
            }

            /*if (PlusEnvironment.GetGame().GetCatalog().CatalogFlatOffers.ContainsKey(ItemId) && PageId < 0)
             * {
             *  PageId = PlusEnvironment.GetGame().GetCatalog().CatalogFlatOffers[ItemId];
             *
             *  CatalogPage P = null;
             *  if (!PlusEnvironment.GetGame().GetCatalog().Pages.TryGetValue(PageId, out P))
             *      PageId = 0;
             * }*/

            CatalogPage Page = null;

            if (!PlusEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page))
            {
                return;
            }

            if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1))
            {
                return;
            }

            CatalogItem Item = null;

            if (!Page.Items.TryGetValue(ItemId, out Item))
            {
                if (Page.ItemOffers.ContainsKey(ItemId))
                {
                    Item = (CatalogItem)Page.ItemOffers[ItemId];
                    if (Item == null)
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }

            if (!ItemUtility.CanGiftItem(Item))
            {
                return;
            }

            ItemData PresentData = null;

            if (!PlusEnvironment.GetGame().GetItemManager().GetGift(SpriteId, out PresentData) || PresentData.InteractionType != InteractionType.GIFT)
            {
                return;
            }

            if (Session.GetHabbo().Credits < Item.CostCredits)
            {
                Session.SendPacket(new PresentDeliverErrorMessageComposer(true, false));
                return;
            }

            if (Session.GetHabbo().Duckets < Item.CostPixels)
            {
                Session.SendPacket(new PresentDeliverErrorMessageComposer(false, true));
                return;
            }

            Habbo Habbo = PlusEnvironment.GetHabboByUsername(GiftUser);

            if (Habbo == null)
            {
                Session.SendPacket(new GiftWrappingErrorComposer());
                return;
            }

            if (!Habbo.AllowGifts)
            {
                Session.SendNotification("Oops, this user doesn't allow gifts to be sent to them!");
                return;
            }

            if ((DateTime.Now - Session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 15.0)
            {
                Session.SendNotification("You're purchasing gifts too fast! Please wait 15 seconds!");

                Session.GetHabbo().GiftPurchasingWarnings += 1;
                if (Session.GetHabbo().GiftPurchasingWarnings >= 25)
                {
                    Session.GetHabbo().SessionGiftBlocked = true;
                }
                return;
            }

            if (Session.GetHabbo().SessionGiftBlocked)
            {
                return;
            }


            string ED = GiftUser + Convert.ToChar(5) + GiftMessage + Convert.ToChar(5) + Session.GetHabbo().Id + Convert.ToChar(5) + Item.Data.Id + Convert.ToChar(5) + SpriteId + Convert.ToChar(5) + Ribbon + Convert.ToChar(5) + Colour;

            int NewItemId = 0;

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                //Insert the dummy item.
                dbClient.SetQuery("INSERT INTO `items` (`base_item`,`user_id`,`extra_data`) VALUES (@baseId, @habboId, @extra_data)");
                dbClient.AddParameter("baseId", PresentData.Id);
                dbClient.AddParameter("habboId", Habbo.Id);
                dbClient.AddParameter("extra_data", ED);
                NewItemId = Convert.ToInt32(dbClient.InsertQuery());

                string ItemExtraData = null;
                switch (Item.Data.InteractionType)
                {
                case InteractionType.NONE:
                    ItemExtraData = "";
                    break;

                    #region Pet handling

                case InteractionType.PET:

                    try
                    {
                        string[] Bits    = Data.Split('\n');
                        string   PetName = Bits[0];
                        string   Race    = Bits[1];
                        string   Color   = Bits[2];

                        int.Parse(Race);     // to trigger any possible errors

                        if (PetUtility.CheckPetName(PetName))
                        {
                            return;
                        }

                        if (Race.Length > 2)
                        {
                            return;
                        }

                        if (Color.Length != 6)
                        {
                            return;
                        }

                        PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1);
                    }
                    catch
                    {
                        return;
                    }

                    break;

                    #endregion

                case InteractionType.FLOOR:
                case InteractionType.WALLPAPER:
                case InteractionType.LANDSCAPE:

                    Double Number = 0;
                    try
                    {
                        if (string.IsNullOrEmpty(Data))
                        {
                            Number = 0;
                        }
                        else
                        {
                            Number = Double.Parse(Data, PlusEnvironment.CultureInfo);
                        }
                    }
                    catch
                    {
                    }

                    ItemExtraData = Number.ToString().Replace(',', '.');
                    break;     // maintain extra data // todo: validate

                case InteractionType.POSTIT:
                    ItemExtraData = "FFFF33";
                    break;

                case InteractionType.MOODLIGHT:
                    ItemExtraData = "1,1,1,#000000,255";
                    break;

                case InteractionType.TROPHY:
                    ItemExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + Data;
                    break;

                case InteractionType.MANNEQUIN:
                    ItemExtraData = "m" + Convert.ToChar(5) + ".ch-210-1321.lg-285-92" + Convert.ToChar(5) + "Default Mannequin";
                    break;

                case InteractionType.BADGE_DISPLAY:
                    if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Data))
                    {
                        Session.SendPacket(new BroadcastMessageAlertComposer("Oops, it appears that you do not own this badge."));
                        return;
                    }

                    ItemExtraData = Data + Convert.ToChar(9) + Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year;
                    break;

                default:
                    ItemExtraData = Data;
                    break;
                }

                //Insert the present, forever.
                dbClient.SetQuery("INSERT INTO `user_presents` (`item_id`,`base_id`,`extra_data`) VALUES (@itemId, @baseId, @extra_data)");
                dbClient.AddParameter("itemId", NewItemId);
                dbClient.AddParameter("baseId", Item.Data.Id);
                dbClient.AddParameter("extra_data", (string.IsNullOrEmpty(ItemExtraData) ? "" : ItemExtraData));
                dbClient.RunQuery();

                //Here we're clearing up a record, this is dumb, but okay.
                dbClient.SetQuery("DELETE FROM `items` WHERE `id` = @deleteId LIMIT 1");
                dbClient.AddParameter("deleteId", NewItemId);
                dbClient.RunQuery();
            }


            Item GiveItem = ItemFactory.CreateGiftItem(PresentData, Habbo, ED, ED, NewItemId, 0, 0);
            if (GiveItem != null)
            {
                GameClient Receiver = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Habbo.Id);
                if (Receiver != null)
                {
                    Receiver.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem);
                    Receiver.SendPacket(new FurniListNotificationComposer(GiveItem.Id, 1));
                    Receiver.SendPacket(new PurchaseOKComposer());
                    Receiver.SendPacket(new FurniListAddComposer(GiveItem));
                    Receiver.SendPacket(new FurniListUpdateComposer());
                }

                if (Habbo.Id != Session.GetHabbo().Id&& !string.IsNullOrWhiteSpace(GiftMessage))
                {
                    PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_GiftGiver", 1);
                    if (Receiver != null)
                    {
                        PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Receiver, "ACH_GiftReceiver", 1);
                    }
                    PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.GIFT_OTHERS);
                }
            }

            Session.SendPacket(new PurchaseOKComposer(Item, PresentData));

            if (Item.CostCredits > 0)
            {
                Session.GetHabbo().Credits -= Item.CostCredits;
                Session.SendPacket(new CreditBalanceComposer(Session.GetHabbo().Credits));
            }

            if (Item.CostPixels > 0)
            {
                Session.GetHabbo().Duckets -= Item.CostPixels;
                Session.SendPacket(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets));
            }

            Session.GetHabbo().LastGiftPurchaseTime = DateTime.Now;
        }
Esempio n. 22
0
        /// <summary>
        ///     Handles the purchase.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="pageId">The page identifier.</param>
        /// <param name="itemId">The item identifier.</param>
        /// <param name="extraData">The extra data.</param>
        /// <param name="priceAmount">The price amount.</param>
        /// <param name="isGift">if set to <c>true</c> [is gift].</param>
        /// <param name="giftUser">The gift user.</param>
        /// <param name="giftMessage">The gift message.</param>
        /// <param name="giftSpriteId">The gift sprite identifier.</param>
        /// <param name="giftLazo">The gift lazo.</param>
        /// <param name="giftColor">Color of the gift.</param>
        /// <param name="undef">if set to <c>true</c> [undef].</param>
        /// <param name="theGroup">The theGroup.</param>
        internal void HandlePurchase(GameClient session, uint pageId, uint itemId, string extraData, uint priceAmount, bool isGift, string giftUser, string giftMessage, int giftSpriteId, int giftLazo, int giftColor, bool undef, uint theGroup)
        {
            priceAmount = priceAmount < 1 || priceAmount > 100 ? 1 : priceAmount;

            uint totalPrice = priceAmount, limitedId = 0, limtot = 0;

            if (priceAmount >= 6)
            {
                totalPrice -= Convert.ToUInt32(Math.Ceiling(Convert.ToDouble(priceAmount) / 6)) * 2 - 1;
            }

            if (!Categories.Contains(pageId))
            {
                return;
            }

            CatalogPage catalogPage = GetPage(pageId);

            if (catalogPage == null || !catalogPage.Enabled || !catalogPage.Visible || session?.GetHabbo() == null)
            {
                return;
            }

            if (catalogPage.MinRank > session.GetHabbo().Rank || catalogPage.Layout == "sold_ltd_items")
            {
                return;
            }

            CatalogItem item = catalogPage.GetItem(itemId);

            if (item == null)
            {
                return;
            }

            if (session.GetHabbo().Credits < item.CreditsCost)
            {
                return;
            }

            if (session.GetHabbo().ActivityPoints < item.DucketsCost)
            {
                return;
            }

            if (session.GetHabbo().Diamonds < item.DiamondsCost)
            {
                return;
            }

            if (item.Name == "room_ad_plus_badge")
            {
                return;
            }

            #region Habbo Club Purchase
            if (catalogPage.Layout == "vip_buy" || catalogPage.Layout == "club_buy" || HabboClubItems.Contains(item))
            {
                string[] array = item.Name.Split('_');

                double dayLength;

                if (item.Name.Contains("DAY"))
                {
                    dayLength = double.Parse(array[3]);
                }
                else if (item.Name.Contains("MONTH"))
                {
                    dayLength = Math.Ceiling(double.Parse(array[3]) * 31 - 0.205);
                }
                else if (item.Name.Contains("YEAR"))
                {
                    dayLength = double.Parse(array[3]) * 31 * 12;
                }
                else
                {
                    dayLength = 31;
                }

                session.GetHabbo().GetSubscriptionManager().AddSubscription(dayLength);

                if (item.CreditsCost > 0)
                {
                    session.GetHabbo().Credits -= item.CreditsCost * totalPrice;
                    session.GetHabbo().UpdateCreditsBalance();
                }

                if (item.DucketsCost > 0)
                {
                    session.GetHabbo().ActivityPoints -= item.DucketsCost * totalPrice;
                    session.GetHabbo().UpdateActivityPointsBalance();
                }

                if (item.DiamondsCost > 0)
                {
                    session.GetHabbo().Diamonds -= item.DiamondsCost * totalPrice;
                    session.GetHabbo().UpdateSeasonalCurrencyBalance();
                }

                return;
            }
            #endregion

            #region Is Only for Habbo Club users Check
            if (item.ClubOnly && !session.GetHabbo().GetSubscriptionManager().HasSubscription)
            {
                ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("CatalogPurchaseNotAllowedMessageComposer"));
                serverMessage.AppendInteger(1);
                session.SendMessage(serverMessage);
                return;
            }
            #endregion

            #region Check if is a Pet. If is we have problem.

            if (item.Items.Keys.Any(current => InteractionTypes.AreFamiliar(GlobalInteractions.Pet, current.InteractionType)))
            {
                return;
            }

            #endregion

            #region Limited Items Purchase
            if (item.IsLimited)
            {
                totalPrice  = 1;
                priceAmount = 1;

                if (item.LimitedSelled >= item.LimitedStack)
                {
                    session.SendMessage(new ServerMessage(LibraryParser.OutgoingRequest("CatalogLimitedItemSoldOutMessageComposer")));
                    return;
                }

                item.LimitedSelled++;

                using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.RunFastQuery(string.Concat("UPDATE catalog_items SET limited_sells = ", item.LimitedSelled, " WHERE id = ", item.Id));

                    limitedId = item.LimitedSelled;
                    limtot    = item.LimitedStack;
                }
            }
            else if (isGift && priceAmount > 1)
            {
                totalPrice  = 1;
                priceAmount = 1;
            }
            #endregion

            uint toUserId = 0u;

            if (session.GetHabbo().Credits < item.CreditsCost * totalPrice)
            {
                return;
            }

            if (session.GetHabbo().ActivityPoints < item.DucketsCost * totalPrice)
            {
                return;
            }

            if (session.GetHabbo().Diamonds < item.DiamondsCost * totalPrice)
            {
                return;
            }

            if (!isGift)
            {
                if (item.CreditsCost > 0)
                {
                    session.GetHabbo().Credits -= item.CreditsCost * totalPrice;
                    session.GetHabbo().UpdateCreditsBalance();
                }

                if (item.DucketsCost > 0)
                {
                    session.GetHabbo().ActivityPoints -= item.DucketsCost * totalPrice;
                    session.GetHabbo().UpdateActivityPointsBalance();
                }

                if (item.DiamondsCost > 0)
                {
                    session.GetHabbo().Diamonds -= item.DiamondsCost * totalPrice;
                    session.GetHabbo().UpdateSeasonalCurrencyBalance();
                }
            }

            foreach (Item baseItem in item.Items.Keys)
            {
                if (isGift)
                {
                    if ((DateTime.Now - session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 15.0)
                    {
                        session.SendNotif(Yupi.GetLanguage().GetVar("user_send_gift"));
                        return;
                    }

                    if (!baseItem.AllowGift)
                    {
                        return;
                    }

                    DataRow row;

                    using (IQueryAdapter queryreactor3 = Yupi.GetDatabaseManager().GetQueryReactor())
                    {
                        queryreactor3.SetQuery("SELECT id FROM users WHERE username = @gift_user");
                        queryreactor3.AddParameter("gift_user", giftUser);
                        row = queryreactor3.GetRow();
                    }

                    if (row == null)
                    {
                        session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("GiftErrorMessageComposer"));
                        session.GetMessageHandler().GetResponse().AppendString(giftUser);
                        session.GetMessageHandler().SendResponse();
                        return;
                    }

                    toUserId = (uint)row["id"];

                    if (toUserId == 0u)
                    {
                        session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("GiftErrorMessageComposer"));
                        session.GetMessageHandler().GetResponse().AppendString(giftUser);
                        session.GetMessageHandler().SendResponse();
                        return;
                    }

                    if (item.CreditsCost > 0 && isGift)
                    {
                        session.GetHabbo().Credits -= item.CreditsCost * totalPrice;
                        session.GetHabbo().UpdateCreditsBalance();
                    }

                    if (item.DucketsCost > 0 && isGift)
                    {
                        session.GetHabbo().ActivityPoints -= item.DucketsCost * totalPrice;
                        session.GetHabbo().UpdateActivityPointsBalance();
                    }

                    if (item.DiamondsCost > 0 && isGift)
                    {
                        session.GetHabbo().Diamonds -= item.DiamondsCost * totalPrice;
                        session.GetHabbo().UpdateSeasonalCurrencyBalance();
                    }
                }

                if (isGift && baseItem.Type == 'e')
                {
                    session.SendNotif(Yupi.GetLanguage().GetVar("user_send_gift_effect"));
                    return;
                }

                if (item.Name.StartsWith("builders_club_addon_"))
                {
                    int furniAmount = Convert.ToInt32(item.Name.Replace("builders_club_addon_", "").Replace("furnis", ""));

                    session.GetHabbo().BuildersItemsMax += furniAmount;

                    ServerMessage update = new ServerMessage(LibraryParser.OutgoingRequest("BuildersClubMembershipMessageComposer"));

                    update.AppendInteger(session.GetHabbo().BuildersExpire);
                    update.AppendInteger(session.GetHabbo().BuildersItemsMax);
                    update.AppendInteger(2);
                    session.SendMessage(update);

                    using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery("UPDATE users SET builders_items_max = @max WHERE id = @userId");
                        queryReactor.AddParameter("max", session.GetHabbo().BuildersItemsMax);
                        queryReactor.AddParameter("userId", session.GetHabbo().Id);
                        queryReactor.RunQuery();
                    }

                    session.SendMessage(CatalogPageComposer.PurchaseOk(item, item.Items));
                    session.SendNotif("${notification.builders_club.membership_extended.message}", "${notification.builders_club.membership_extended.title}", "builders_club_membership_extended");
                    return;
                }

                if (item.Name.StartsWith("builders_club_time_"))
                {
                    int timeAmount = Convert.ToInt32(item.Name.Replace("builders_club_time_", "").Replace("seconds", ""));

                    session.GetHabbo().BuildersExpire += timeAmount;

                    ServerMessage update =
                        new ServerMessage(LibraryParser.OutgoingRequest("BuildersClubMembershipMessageComposer"));

                    update.AppendInteger(session.GetHabbo().BuildersExpire);
                    update.AppendInteger(session.GetHabbo().BuildersItemsMax);
                    update.AppendInteger(2);
                    session.SendMessage(update);

                    using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery("UPDATE users SET builders_expire = @max WHERE id = @userId");
                        queryReactor.AddParameter("max", session.GetHabbo().BuildersExpire);
                        queryReactor.AddParameter("userId", session.GetHabbo().Id);
                        queryReactor.RunQuery();
                    }

                    session.SendMessage(CatalogPageComposer.PurchaseOk(item, item.Items));
                    session.SendNotif("${notification.builders_club.membership_extended.message}", "${notification.builders_club.membership_extended.title}", "builders_club_membership_extended");
                    return;
                }

                string text = string.Empty;

                Interaction interactionType = baseItem.InteractionType;

                switch (interactionType)
                {
                case Interaction.None:
                case Interaction.Gate:
                case Interaction.Bed:
                case Interaction.PressurePadBed:
                case Interaction.Guillotine:
                case Interaction.HcGate:
                case Interaction.ScoreBoard:
                case Interaction.VendingMachine:
                case Interaction.Alert:
                case Interaction.OneWayGate:
                case Interaction.LoveShuffler:
                case Interaction.HabboWheel:
                case Interaction.Dice:
                case Interaction.Bottle:
                case Interaction.Hopper:
                case Interaction.Teleport:
                case Interaction.QuickTeleport:
                case Interaction.Pet:
                case Interaction.Pool:
                case Interaction.Roller:
                    break;

                case Interaction.PostIt:
                    extraData = "FFFF33";
                    break;

                case Interaction.RoomEffect:
                    double number = string.IsNullOrEmpty(extraData) ? 0.0 : double.Parse(extraData, Yupi.CultureInfo);
                    extraData = number.ToString(CultureInfo.InvariantCulture).Replace(',', '.');
                    break;

                case Interaction.Dimmer:
                    extraData = "1,1,1,#000000,255";
                    break;

                case Interaction.Trophy:
                    extraData = string.Concat(session.GetHabbo().UserName, Convert.ToChar(9),
                                              DateTime.Now.Day.ToString("00"), "-", DateTime.Now.Month.ToString("00"), "-",
                                              DateTime.Now.Year, Convert.ToChar(9), extraData);
                    break;

                case Interaction.Rentals:
                    extraData = item.ExtraData;
                    break;

                case Interaction.PetDog:
                case Interaction.PetCat:
                case Interaction.PetCrocodile:
                case Interaction.PetTerrier:
                case Interaction.PetBear:
                case Interaction.PetPig:
                case Interaction.PetLion:
                case Interaction.PetRhino:
                case Interaction.PetSpider:
                case Interaction.PetTurtle:
                case Interaction.PetChick:
                case Interaction.PetFrog:
                case Interaction.PetDragon:
                case Interaction.PetHorse:
                case Interaction.PetMonkey:
                case Interaction.PetGnomo:
                case Interaction.PetMonsterPlant:
                case Interaction.PetWhiteRabbit:
                case Interaction.PetEvilRabbit:
                case Interaction.PetLoveRabbit:
                case Interaction.PetCafeRabbit:
                case Interaction.PetPigeon:
                case Interaction.PetEvilPigeon:
                case Interaction.PetDemonMonkey:
                case Interaction.Pet24:
                case Interaction.Pet25:
                case Interaction.Pet26:
                case Interaction.Pet27:
                case Interaction.Pet28:
                case Interaction.Pet29:
                case Interaction.Pet30:
                case Interaction.Pet31:
                case Interaction.Pet32:
                case Interaction.Pet33:
                case Interaction.Pet34:
                    string[] data    = extraData.Split('\n');
                    string   petName = data[0];
                    string   race    = data[1];
                    string   color   = data[2];

                    if (!CheckPetName(petName))
                    {
                        return;
                    }
                    if (race.Length != 1 && race.Length != 2)
                    {
                        return;
                    }
                    if (color.Length != 6)
                    {
                        return;
                    }

                    Yupi.GetGame().GetAchievementManager().ProgressUserAchievement(session, "ACH_PetLover", 1);
                    break;

                case Interaction.Mannequin:
                    extraData = string.Concat("m", Convert.ToChar(5), "ch-215-92.lg-3202-1322-73", Convert.ToChar(5), "Mannequin");
                    break;

                case Interaction.VipGate:
                case Interaction.MysteryBox:
                case Interaction.YoutubeTv:
                case Interaction.TileStackMagic:
                case Interaction.Tent:
                case Interaction.BedTent:
                    break;

                case Interaction.BadgeDisplay:
                    if (!session.GetHabbo().GetBadgeComponent().HasBadge(extraData))
                    {
                        extraData = "UMAD";
                    }

                    extraData = $"{extraData}|{session.GetHabbo().UserName}|{DateTime.Now.Day.ToString("00")}-{DateTime.Now.Month.ToString("00")}-{DateTime.Now.Year}";
                    break;

                case Interaction.FootballGate:
                    extraData = "hd-99999-99999.lg-270-62;hd-99999-99999.ch-630-62.lg-695-62";
                    break;

                case Interaction.LoveLock:
                    extraData = "0";
                    break;

                case Interaction.Pinata:
                case Interaction.RunWaySage:
                case Interaction.Shower:
                    extraData = "0";
                    break;

                case Interaction.GroupForumTerminal:
                case Interaction.GuildItem:
                case Interaction.GuildGate:
                case Interaction.GuildForum:
                case Interaction.Poster:
                    break;

                case Interaction.Moplaseed:
                    extraData = new Random().Next(0, 12).ToString();
                    break;

                case Interaction.RareMoplaSeed:
                    extraData = new Random().Next(10, 12).ToString();
                    break;

                case Interaction.MusicDisc:

                    SongData song = SoundMachineSongManager.GetSongById(item.SongId);

                    extraData = string.Empty;

                    if (song == null)
                    {
                        break;
                    }

                    extraData = string.Concat(session.GetHabbo().UserName, '\n', DateTime.Now.Year, '\n', DateTime.Now.Month, '\n', DateTime.Now.Day, '\n', song.LengthSeconds, '\n', song.Name);

                    text = song.CodeName;

                    break;

                default:
                    extraData = item.ExtraData;
                    break;
                }

                session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("UpdateInventoryMessageComposer"));

                session.GetMessageHandler().SendResponse();

                session.SendMessage(CatalogPageComposer.PurchaseOk(item, item.Items));

                if (isGift)
                {
                    Item itemBySprite = Yupi.GetGame().GetItemManager().GetItemBySpriteId(giftSpriteId);

                    if (itemBySprite == null)
                    {
                        return;
                    }

                    uint insertId;

                    using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                    {
                        queryReactor.SetQuery("INSERT INTO items_rooms (item_name,user_id) VALUES (" + itemBySprite.Name + ", " + toUserId + ")");

                        insertId = (uint)queryReactor.InsertQuery();
                        queryReactor.SetQuery(string.Concat("INSERT INTO users_gifts (gift_id,item_id,extradata,giver_name,Message,ribbon,color,gift_sprite,show_sender,rare_id) VALUES (", insertId, ", ", baseItem.ItemId, ",@extradata, @name, @Message,", giftLazo, ",", giftColor, ",", giftSpriteId, ",", undef ? 1 : 0, ",", limitedId, ")"));
                        queryReactor.AddParameter("extradata", extraData);
                        queryReactor.AddParameter("name", giftUser);
                        queryReactor.AddParameter("message", giftMessage);
                        queryReactor.RunQuery();

                        if (session.GetHabbo().Id != toUserId)
                        {
                            Yupi.GetGame().GetAchievementManager().ProgressUserAchievement(session, "ACH_GiftGiver", 1, true);

                            queryReactor.RunFastQuery("UPDATE users_stats SET gifts_given = gifts_given + 1 WHERE id = " + session.GetHabbo().Id + ";UPDATE users_stats SET gifts_received = gifts_received + 1 WHERE id = " + toUserId);
                        }
                    }

                    GameClient clientByUserId = Yupi.GetGame().GetClientManager().GetClientByUserId(toUserId);

                    if (clientByUserId != null)
                    {
                        clientByUserId.GetHabbo().GetInventoryComponent().AddNewItem(insertId, itemBySprite.Name, string.Concat(session.GetHabbo().Id, (char)9, giftMessage, (char)9, giftLazo, (char)9, giftColor, (char)9, undef ? "1" : "0", (char)9, session.GetHabbo().UserName, (char)9, session.GetHabbo().Look, (char)9, item.Name), 0u, false, false, 0, 0);

                        if (clientByUserId.GetHabbo().Id != session.GetHabbo().Id)
                        {
                            Yupi.GetGame().GetAchievementManager().ProgressUserAchievement(clientByUserId, "ACH_GiftReceiver", 1, true);
                        }
                    }

                    session.GetHabbo().LastGiftPurchaseTime = DateTime.Now;

                    continue;
                }

                session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("NewInventoryObjectMessageComposer"));

                session.GetMessageHandler().GetResponse().AppendInteger(1);

                int i = 1;

                if (baseItem.Type == 's')
                {
                    i = InteractionTypes.AreFamiliar(GlobalInteractions.Pet, baseItem.InteractionType) ? 3 : 1;
                }

                session.GetMessageHandler().GetResponse().AppendInteger(i);

                List <UserItem> list = DeliverItems(session, baseItem, priceAmount * item.Items[baseItem], extraData, limitedId, limtot, text);

                session.GetMessageHandler().GetResponse().AppendInteger(list.Count);

                foreach (UserItem current3 in list)
                {
                    session.GetMessageHandler().GetResponse().AppendInteger(current3.Id);
                }

                session.GetMessageHandler().SendResponse();
                session.GetHabbo().GetInventoryComponent().UpdateItems(false);

                if (InteractionTypes.AreFamiliar(GlobalInteractions.Pet, baseItem.InteractionType))
                {
                    session.SendMessage(session.GetHabbo().GetInventoryComponent().SerializePetInventory());
                }
            }

            if (item.Badge.Length >= 1)
            {
                session.GetHabbo().GetBadgeComponent().GiveBadge(item.Badge, true, session);
            }
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int    PageId      = Packet.PopInt();
            int    ItemId      = Packet.PopInt();
            string Data        = Packet.PopString();
            string GiftUser    = StringCharFilter.Escape(Packet.PopString());
            string GiftMessage = StringCharFilter.Escape(Packet.PopString().Replace(Convert.ToChar(5), ' '));
            int    SpriteId    = Packet.PopInt();
            int    Ribbon      = Packet.PopInt();
            int    Colour      = Packet.PopInt();
            bool   dnow        = Packet.PopBoolean();

            if (QuasarEnvironment.GetDBConfig().DBData["gifts_enabled"] != "1")
            {
                Session.SendNotification("Het sturen van cadeau's is tijdelijk uitgeschakeld door het Hotel Management.");
                return;
            }

            /*if (QuasarEnvironment.GetGame().GetCatalog().CatalogFlatOffers.ContainsKey(ItemId) && PageId < 0)
             * {
             *  PageId = QuasarEnvironment.GetGame().GetCatalog().CatalogFlatOffers[ItemId];
             *
             *  CatalogPage P = null;
             *  if (!QuasarEnvironment.GetGame().GetCatalog().Pages.TryGetValue(PageId, out P))
             *      PageId = 0;
             * }*/

            CatalogPage Page = null;

            if (!QuasarEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page))
            {
                return;
            }

            if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank)  /*|| (Page.MinimumVIP > Session.GetHabbo().VIPRank && Session.GetHabbo().Rank == 1))*/
            {
                return;
            }

            CatalogItem Item = null;

            if (!Page.Items.TryGetValue(ItemId, out Item))
            {
                if (Page.ItemOffers.ContainsKey(ItemId))
                {
                    Item = (CatalogItem)Page.ItemOffers[ItemId];
                    if (Item == null)
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }

            if (!ItemUtility.CanGiftItem(Item))
            {
                return;
            }

            ItemData PresentData = null;

            if (!QuasarEnvironment.GetGame().GetItemManager().GetGift(SpriteId, out PresentData) || PresentData.InteractionType != InteractionType.GIFT)
            {
                return;
            }

            if (Session.GetHabbo().Credits < Item.CostCredits)
            {
                Session.SendMessage(new PresentDeliverErrorMessageComposer(true, false));
                return;
            }

            if (Session.GetHabbo().Duckets < Item.CostPixels)
            {
                Session.SendMessage(new PresentDeliverErrorMessageComposer(false, true));
                return;
            }

            Habbo Habbo = QuasarEnvironment.GetHabboByUsername(GiftUser);

            if (Habbo == null)
            {
                Session.SendMessage(new GiftWrappingErrorComposer());
                return;
            }

            if (!Habbo.AllowGifts)
            {
                Session.SendNotification("Oeps! Je kan geen cadeau's sturen naar deze Habbis.");
                return;
            }

            if (Session.GetHabbo().Rank < 4)
            {
                if ((DateTime.Now - Session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 10.0)
                {
                    Session.SendNotification("Oeps! Wacht minstens 10 seconden tussen het kopen van cadeau's.");
                    return;
                }
            }


            if (Session.GetHabbo().SessionGiftBlocked)
            {
                return;
            }


            string ED = GiftUser + Convert.ToChar(5) + GiftMessage + Convert.ToChar(5) + Session.GetHabbo().Id + Convert.ToChar(5) + Item.Data.Id + Convert.ToChar(5) + SpriteId + Convert.ToChar(5) + Ribbon + Convert.ToChar(5) + Colour;

            int NewItemId = 0;

            using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                //Insert the dummy item.
                dbClient.SetQuery("INSERT INTO `items` (`base_item`,`user_id`,`extra_data`) VALUES ('" + PresentData.Id + "', '" + Habbo.Id + "', @extra_data)");
                dbClient.AddParameter("extra_data", ED);
                NewItemId = Convert.ToInt32(dbClient.InsertQuery());

                string ItemExtraData = null;
                switch (Item.Data.InteractionType)
                {
                case InteractionType.NONE:
                    ItemExtraData = "";
                    break;


                    #region Pet handling

                case InteractionType.pet0:      // Hond
                case InteractionType.pet1:      // Kat
                case InteractionType.pet2:      // Krokodillen
                case InteractionType.pet3:      // Terriers
                case InteractionType.pet4:      // Beren
                case InteractionType.pet5:      // Varkens
                case InteractionType.pet6:      // Leeuwen
                case InteractionType.pet7:      // Neushoorns
                case InteractionType.pet8:      // Spinnen
                case InteractionType.pet9:      // Schildpadden
                case InteractionType.pet10:     // Kuikens
                case InteractionType.pet11:     // Kikkers
                case InteractionType.pet12:     // Draken
                case InteractionType.pet13:     // Slenderman
                case InteractionType.pet14:     // Apen
                case InteractionType.pet15:     // Paarden
                case InteractionType.pet16:     // Monsterplanten
                case InteractionType.pet17:     // Konijnen
                case InteractionType.pet18:     // Evil Konijnen
                case InteractionType.pet19:     // Depressieve Konijnen
                case InteractionType.pet20:     // Liefdes Konijnen
                case InteractionType.pet21:     // Witte Duiven
                case InteractionType.pet22:     // Zwarte Duiven
                case InteractionType.pet23:     // Rode Aap
                case InteractionType.pet24:     // Baby Beertjes
                case InteractionType.pet25:     // Baby Terriers
                case InteractionType.pet26:     // Kabouters
                case InteractionType.pet27:     // Baby's
                case InteractionType.pet28:     // Baby Beertjes
                case InteractionType.pet29:     // Baby Terriers
                case InteractionType.pet30:     // Kabouters
                case InteractionType.pet31:     // Oempa Loempa's
                case InteractionType.pet32:     // Stenen
                case InteractionType.pet33:     // Pterodactylussen
                case InteractionType.pet34:     // Velociraptors
                case InteractionType.pet35:     // Wolven
                case InteractionType.pet36:     // Monster Konijnen
                case InteractionType.pet37:     // Pickachu
                case InteractionType.pet38:     // Pinguins
                case InteractionType.pet39:     // Mario
                case InteractionType.pet40:     // Olifanten
                case InteractionType.pet41:     // Alien Konijnen
                case InteractionType.pet42:     // Gouden Konijnen
                case InteractionType.pet43:     // Roze Mewtwo
                case InteractionType.pet44:     // Entei
                case InteractionType.pet45:     // Blauwe Mewtwo
                case InteractionType.pet46:     // Cavia
                case InteractionType.pet47:     // Uil
                case InteractionType.pet48:     // Goude Mewtwo
                case InteractionType.pet49:     // Eend
                case InteractionType.pet50:     // Baby Bruin
                case InteractionType.pet51:     // Baby Wit
                case InteractionType.pet52:     // Dino
                case InteractionType.pet53:     // Yoshi
                case InteractionType.pet54:     // Koe
                case InteractionType.pet55:     // Pokémon: Gengar
                case InteractionType.pet56:     // Pokémon: Gengar
                case InteractionType.pet57:     // Pokémon: Gengar
                case InteractionType.pet58:     // Pokémon: Gengar
                case InteractionType.pet59:     // Pokémon: Gengar
                case InteractionType.pet60:     // Pokémon: Gengar
                case InteractionType.pet61:     // Pokémon: Gengar
                case InteractionType.pet62:     // Pokémon: Gengar
                case InteractionType.pet63:     // Pokémon: Gengar
                case InteractionType.pet64:     // Pokémon: Gengar
                case InteractionType.pet65:     // Pokémon: Gengar
                case InteractionType.pet66:     // Pokémon: Gengar
                case InteractionType.pet67:     // Pokémon: Gengar
                case InteractionType.pet68:     // Pokémon: Gengar
                case InteractionType.pet69:     // Pokémon: Gengar
                case InteractionType.pet70:     // Pokémon: Gengar
                    try
                    {
                        string[] Bits    = Data.Split('\n');
                        string   PetName = Bits[0];
                        string   Race    = Bits[1];
                        string   Color   = Bits[2];

                        int.Parse(Race);     // to trigger any possible errors

                        if (PetUtility.CheckPetName(PetName))
                        {
                            return;
                        }

                        if (Race.Length > 2)
                        {
                            return;
                        }

                        if (Color.Length != 6)
                        {
                            return;
                        }

                        QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1);
                    }
                    catch
                    {
                        return;
                    }

                    break;

                    #endregion

                case InteractionType.FLOOR:
                case InteractionType.WALLPAPER:
                case InteractionType.LANDSCAPE:

                    Double Number = 0;
                    try
                    {
                        if (string.IsNullOrEmpty(Data))
                        {
                            Number = 0;
                        }
                        else
                        {
                            Number = Double.Parse(Data, QuasarEnvironment.CultureInfo);
                        }
                    }
                    catch
                    {
                    }

                    ItemExtraData = Number.ToString().Replace(',', '.');
                    break;     // maintain extra data // todo: validate

                case InteractionType.POSTIT:
                    ItemExtraData = "FFFF33";
                    break;

                case InteractionType.MOODLIGHT:
                    ItemExtraData = "1,1,1,#000000,255";
                    break;

                case InteractionType.TROPHY:
                    ItemExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + Data;
                    break;

                case InteractionType.MANNEQUIN:
                    ItemExtraData = "m" + Convert.ToChar(5) + ".ch-210-1321.lg-285-92" + Convert.ToChar(5) + "Default Maniqui";
                    break;

                case InteractionType.BADGE_DISPLAY:
                    if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Data))
                    {
                        Session.SendMessage(new BroadcastMessageAlertComposer("Oeps! Je kan deze badge niet in een vitrine zetteno omdat je deze badge niet in je bezit hebt."));
                        return;
                    }

                    ItemExtraData = Data + Convert.ToChar(9) + Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year;
                    break;

                default:
                    ItemExtraData = Data;
                    break;
                }

                //Insert the present, forever.
                dbClient.SetQuery("INSERT INTO `user_presents` (`item_id`,`base_id`,`extra_data`) VALUES ('" + NewItemId + "', '" + Item.Data.Id + "', @extra_data)");
                dbClient.AddParameter("extra_data", (string.IsNullOrEmpty(ItemExtraData) ? "" : ItemExtraData));
                dbClient.RunQuery();

                //Here we're clearing up a record, this is dumb, but okay.
                dbClient.RunQuery("DELETE FROM `items` WHERE `id` = " + NewItemId + " LIMIT 1;");
            }


            Item GiveItem = ItemFactory.CreateGiftItem(PresentData, Habbo, ED, ED, NewItemId, 0, 0);
            if (GiveItem != null)
            {
                GameClient Receiver = QuasarEnvironment.GetGame().GetClientManager().GetClientByUserID(Habbo.Id);
                if (Receiver != null)
                {
                    if (Receiver.GetHabbo().Rank <= 5)
                    {
                        Session.SendMessage(new RoomCustomizedAlertComposer("Je hebt een cadeau ontvangen van " + Session.GetHabbo().Username + "."));
                    }
                    {
                        Receiver.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem);
                        Receiver.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1));
                        Receiver.SendMessage(new PurchaseOKComposer());
                        Receiver.SendMessage(new FurniListAddComposer(GiveItem));
                        Receiver.SendMessage(new FurniListUpdateComposer());
                    }
                }
                QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_GiftGiver", 1);
                QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Receiver, "ACH_GiftReceiver", 1);
                QuasarEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.GIFT_OTHERS);
                Session.SendMessage(new RoomCustomizedAlertComposer("Je cadeau is ingepakt en verzonden!"));
            }

            Session.SendMessage(new PurchaseOKComposer(Item, PresentData));

            if (Item.CostCredits > 0)
            {
                Session.GetHabbo().Credits -= Item.CostCredits;
                Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits));
            }

            if (Item.CostPixels > 0)
            {
                Session.GetHabbo().Duckets -= Item.CostPixels;
                Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets));
            }

            Session.GetHabbo().LastGiftPurchaseTime = DateTime.Now;
        }
Esempio n. 24
0
        public CatalogPageComposer(CatalogPage Page, string CataMode)
            : base(ServerPacketHeader.CatalogPageMessageComposer)
        {
            WriteInteger(Page.Id);
            WriteString(CataMode);
            WriteString(Page.Template);

            WriteInteger(Page.PageStrings1.Count);
            foreach (string s in Page.PageStrings1)
            {
                WriteString(s);
            }

            WriteInteger(Page.PageStrings2.Count);
            foreach (string s in Page.PageStrings2)
            {
                WriteString(s);
            }

            if (!Page.Template.Equals("frontpage") && !Page.Template.Equals("loyalty_vip_buy"))
            {
                WriteInteger(Page.Items.Count);
                foreach (CatalogItem Item in Page.Items.Values)
                {
                    WriteInteger(Item.Id);
                    WriteString(Item.Name);
                    WriteBoolean(false);                    //IsRentable
                    WriteInteger(Item.CostCredits);

                    if (Item.CostDiamonds > 0)
                    {
                        WriteInteger(Item.CostDiamonds);
                        WriteInteger(5);                         // Diamonds
                    }
                    else if (Item.CostPixels > 0)
                    {
                        WriteInteger(Item.CostPixels);
                        WriteInteger(0);                         // Type of PixelCost
                    }
                    else
                    {
                        WriteInteger(Item.CostGotw);
                        WriteInteger(103);                         // Gotw
                    }

                    WriteBoolean(Item.PredesignedId > 0 ? false : ItemUtility.CanGiftItem(Item));
                    if (Item.PredesignedId > 0)
                    {
                        WriteInteger(Page.PredesignedItems.Items.Count);
                        foreach (var predesigned in Page.PredesignedItems.Items.ToList())
                        {
                            ItemData Data = null;
                            if (CloudServer.GetGame().GetItemManager().GetItem(predesigned.Key, out Data))
                            {
                            }
                            WriteString(Data.Type.ToString());
                            WriteInteger(Data.SpriteId);
                            WriteString(string.Empty);
                            WriteInteger(predesigned.Value);
                            WriteBoolean(false);
                        }

                        WriteInteger(0);
                        WriteBoolean(false);
                        WriteBoolean(true);                      // Niu Rilí
                        WriteString("");                         // Niu Rilí
                    }
                    else if (Page.Deals.Count > 0)
                    {
                        foreach (var Deal in Page.Deals.Values)
                        {
                            WriteInteger(Deal.ItemDataList.Count);
                            foreach (var DealItem in Deal.ItemDataList.ToList())
                            {
                                WriteString(DealItem.Data.Type.ToString());
                                WriteInteger(DealItem.Data.SpriteId);
                                WriteString(string.Empty);
                                WriteInteger(DealItem.Amount);
                                WriteBoolean(false);
                            }

                            WriteInteger(0);
                            WriteBoolean(false);
                        }
                    }
                    else
                    {
                        WriteInteger(string.IsNullOrEmpty(Item.Badge) ? 1 : 2);                        //Count 1 item if there is no badge, otherwise count as 2.
                        {
                            if (!string.IsNullOrEmpty(Item.Badge))
                            {
                                WriteString("b");
                                WriteString(Item.Badge);
                            }

                            WriteString(Item.Data.Type.ToString());
                            if (Item.Data.Type.ToString().ToLower() == "b")
                            {
                                //This is just a badge, append the name.
                                WriteString(Item.Data.ItemName);
                            }
                            else
                            {
                                WriteInteger(Item.Data.SpriteId);
                                if (Item.Data.InteractionType == InteractionType.WALLPAPER || Item.Data.InteractionType == InteractionType.FLOOR || Item.Data.InteractionType == InteractionType.LANDSCAPE)
                                {
                                    WriteString(Item.Name.Split('_')[2]);
                                }
                                else if (Item.Data.InteractionType == InteractionType.BOT)//Bots
                                {
                                    CatalogBot CatalogBot = null;
                                    if (!CloudServer.GetGame().GetCatalog().TryGetBot(Item.ItemId, out CatalogBot))
                                    {
                                        WriteString("hd-180-7.ea-1406-62.ch-210-1321.hr-831-49.ca-1813-62.sh-295-1321.lg-285-92");
                                    }
                                    else
                                    {
                                        WriteString(CatalogBot.Figure);
                                    }
                                }
                                else if (Item.ExtraData != null)
                                {
                                    WriteString(Item.ExtraData ?? string.Empty);
                                }
                                WriteInteger(Item.Amount);
                                WriteBoolean(Item.IsLimited);                                 // IsLimited
                                if (Item.IsLimited)
                                {
                                    WriteInteger(Item.LimitedEditionStack);
                                    WriteInteger(Item.LimitedEditionStack - Item.LimitedEditionSells);
                                }
                            }
                            WriteInteger(0);                             //club_level
                            WriteBoolean(ItemUtility.CanSelectAmount(Item));

                            WriteBoolean(true);                          // Niu Rilí
                            WriteString("");                             // Niu Rilí
                        }
                    }
                }
                /*}*/
            }
            else
            {
                WriteInteger(0);
            }
            WriteInteger(-1);
            WriteBoolean(false);
            if (Page.Template.Equals("frontpage4"))
            {
                WriteInteger(4);                 // count

                //New Rare Jellyfish Lamp!
                WriteInteger(1);                                   // id
                WriteString(CatalogSettings.CATALOG_NOTICE_1);     // name
                WriteString(CatalogSettings.CATALOG_IMG_NOTICE_1); // image
                WriteInteger(0);
                WriteString(CatalogSettings.CATALOG_URL_NOTICE_1); // page link?
                WriteInteger(-1);                                  // page id?


                WriteInteger(2);
                WriteString(CatalogSettings.CATALOG_NOTICE_2);                 // name
                WriteString(CatalogSettings.CATALOG_IMG_NOTICE_2);             // image
                WriteInteger(0);
                WriteString(CatalogSettings.CATALOG_URL_NOTICE_2);             // page link?
                WriteInteger(-1);


                WriteInteger(3);
                WriteString(CatalogSettings.CATALOG_NOTICE_3);                 // name
                WriteString(CatalogSettings.CATALOG_IMG_NOTICE_3);             // image
                WriteInteger(0);
                WriteString(CatalogSettings.CATALOG_URL_NOTICE_3);             // page link?
                WriteInteger(-1);


                WriteInteger(4);
                WriteString(CatalogSettings.CATALOG_NOTICE_4);                 // name
                WriteString(CatalogSettings.CATALOG_IMG_NOTICE_4);             // image
                WriteInteger(0);
                WriteString(CatalogSettings.CATALOG_URL_NOTICE_4);             // page link?
                WriteInteger(-1);

                if (Page.Template.Equals("loyalty_vip_buy"))
                {
                    WriteInteger(0);                     //Page ID
                    WriteString("NORMAL");
                    WriteString("loyalty_vip_buy");
                    WriteInteger(2);
                    WriteString("hc2_clubtitle");
                    WriteString("clubcat_pic");
                    WriteInteger(0);                     // Nueva Release
                    WriteInteger(0);
                    WriteInteger(-1);
                    WriteBoolean(false);

                    if (Page.Template.Equals("club_gifts"))
                    {
                        WriteString("club_gifts");
                        WriteInteger(1);
                        WriteString(Convert.ToString(Page.PageStrings2));
                        WriteInteger(1);
                        WriteString(Convert.ToString(Page.PageStrings2));
                    }
                }
            }
        }
Esempio n. 25
0
        public void Handle(GameClient Session, ClientMessage Event)
        {
            CatalogPage @class = GoldTree.GetGame().GetCatalog().method_5(Event.PopWiredInt32());

            if (@class != null && @class.bool_1 && @class.bool_0 && @class.uint_0 <= Session.GetHabbo().Rank)
            {
                if (@class.bool_2 && !Session.GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club"))
                {
                    Session.SendNotif("This page is for GoldTree Club members only!");
                }
                else
                {
                    Session.SendMessage(@class.message5_0);
                    if (@class.string_1 == "recycler")
                    {
                        ServerMessage Message = new ServerMessage(507u);
                        Message.AppendBoolean(true);
                        Message.AppendBoolean(false);
                        Session.SendMessage(Message);
                    }
                    else
                    {
                        if (@class.string_1 == "club_buy")
                        {
                            ServerMessage Message2 = new ServerMessage(625u);
                            if (Session.GetHabbo().Vip)
                            {
                                Message2.AppendInt32(2);
                                Message2.AppendInt32(4535);
                                Message2.AppendStringWithBreak("HABBO_CLUB_VIP_1_MONTH");
                                Message2.AppendInt32(25);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(101);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Year);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Month);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Day);
                                Message2.AppendInt32(4536);
                                Message2.AppendStringWithBreak("HABBO_CLUB_VIP_3_MONTHS");
                                Message2.AppendInt32(60);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(3);
                                Message2.AppendInt32(163);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Year);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Month);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Day);
                            }
                            else
                            {
                                Message2.AppendInt32(4);
                                Message2.AppendInt32(4533);
                                Message2.AppendStringWithBreak("HABBO_CLUB_BASIC_1_MONTH");
                                Message2.AppendInt32(15);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(31);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Year);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Month);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Day);
                                Message2.AppendInt32(4534);
                                Message2.AppendStringWithBreak("HABBO_CLUB_BASIC_3_MONTHS");
                                Message2.AppendInt32(45);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(3);
                                Message2.AppendInt32(93);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Year);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Month);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Day);
                                Message2.AppendInt32(4535);
                                Message2.AppendStringWithBreak("HABBO_CLUB_VIP_1_MONTH");
                                Message2.AppendInt32(25);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(101);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Year);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Month);
                                Message2.AppendInt32(DateTime.Today.AddDays(30.0).Day);
                                Message2.AppendInt32(4536);
                                Message2.AppendStringWithBreak("HABBO_CLUB_VIP_3_MONTHS");
                                Message2.AppendInt32(60);
                                Message2.AppendInt32(0);
                                Message2.AppendInt32(1);
                                Message2.AppendInt32(3);
                                Message2.AppendInt32(163);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Year);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Month);
                                Message2.AppendInt32(DateTime.Today.AddDays(90.0).Day);
                            }
                            Session.SendMessage(Message2);
                        }
                    }
                }
            }
        }
Esempio n. 26
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (PlusEnvironment.GetDBConfig().DBData["catalogue_enabled"] != "1")
            {
                Session.SendNotification("The hotel managers have disabled the catalogue");
                return;
            }

            int    PageId    = Packet.PopInt();
            int    ItemId    = Packet.PopInt();
            string ExtraData = Packet.PopString();
            int    Amount    = Packet.PopInt();


            CatalogPage Page = null;

            if (!PlusEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page))
            {
                return;
            }

            if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1))
            {
                return;
            }

            CatalogItem Item = null;

            if (!Page.Items.TryGetValue(ItemId, out Item))
            {
                if (Page.ItemOffers.ContainsKey(ItemId))
                {
                    Item = (CatalogItem)Page.ItemOffers[ItemId];
                    if (Item == null)
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }

            if (Amount < 1 || Amount > 100 || !Item.HaveOffer)
            {
                Amount = 1;
            }

            int AmountPurchase = Item.Amount > 1 ? Item.Amount : Amount;

            int TotalCreditsCost = Amount > 1 ? ((Item.CostCredits * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostCredits)) : Item.CostCredits;
            int TotalPixelCost   = Amount > 1 ? ((Item.CostPixels * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostPixels)) : Item.CostPixels;
            int TotalDiamondCost = Amount > 1 ? ((Item.CostDiamonds * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostDiamonds)) : Item.CostDiamonds;

            if (Session.GetHabbo().Credits < TotalCreditsCost || Session.GetHabbo().Duckets < TotalPixelCost || Session.GetHabbo().Diamonds < TotalDiamondCost)
            {
                return;
            }

            int LimitedEditionSells = 0;
            int LimitedEditionStack = 0;

            #region Create the extradata
            switch (Item.Data.InteractionType)
            {
            case InteractionType.NONE:
                ExtraData = "";
                break;

            case InteractionType.GUILD_ITEM:
            case InteractionType.GUILD_GATE:
                break;

                #region Pet handling

            case InteractionType.pet0:
            case InteractionType.pet1:
            case InteractionType.pet2:
            case InteractionType.pet3:
            case InteractionType.pet4:
            case InteractionType.pet5:
            case InteractionType.pet6:
            case InteractionType.pet7:
            case InteractionType.pet8:
            case InteractionType.pet9:
            case InteractionType.pet10:
            case InteractionType.pet11:
            case InteractionType.pet12:
            case InteractionType.pet13:     //Caballo
            case InteractionType.pet14:
            case InteractionType.pet15:
            case InteractionType.pet16:     //Mascota agregada
            case InteractionType.pet17:     //Mascota agregada
            case InteractionType.pet18:     //Mascota agregada
            case InteractionType.pet19:     //Mascota agregada
            case InteractionType.pet20:     //Mascota agregada
            case InteractionType.pet21:     //Mascota agregada
            case InteractionType.pet22:     //Mascota agregada
            case InteractionType.pet28:
            case InteractionType.pet29:
            case InteractionType.pet30:
                try
                {
                    string[] Bits    = ExtraData.Split('\n');
                    string   PetName = Bits[0];
                    string   Race    = Bits[1];
                    string   Color   = Bits[2];

                    int.Parse(Race);     // to trigger any possible errors

                    if (!PetUtility.CheckPetName(PetName))
                    {
                        return;
                    }

                    if (Race.Length > 2)
                    {
                        return;
                    }

                    if (Color.Length != 6)
                    {
                        return;
                    }

                    PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1);
                }
                catch (Exception e)
                {
                    Logging.LogException(e.ToString());
                    return;
                }

                break;

                #endregion

            case InteractionType.FLOOR:
            case InteractionType.WALLPAPER:
            case InteractionType.LANDSCAPE:

                Double Number = 0;

                try
                {
                    if (string.IsNullOrEmpty(ExtraData))
                    {
                        Number = 0;
                    }
                    else
                    {
                        Number = Double.Parse(ExtraData, PlusEnvironment.CultureInfo);
                    }
                }
                catch (Exception e)
                {
                    Logging.HandleException(e, "Catalog.HandlePurchase: " + ExtraData);
                }

                ExtraData = Number.ToString().Replace(',', '.');
                break;     // maintain extra data // todo: validate

            case InteractionType.POSTIT:
                ExtraData = "FFFF33";
                break;

            case InteractionType.MOODLIGHT:
                ExtraData = "1,1,1,#000000,255";
                break;

            case InteractionType.TROPHY:
                ExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + ExtraData;
                break;

            case InteractionType.MANNEQUIN:
                ExtraData = "m" + Convert.ToChar(5) + ".ch-210-1321.lg-285-92" + Convert.ToChar(5) + "Default Mannequin";
                break;

            case InteractionType.BADGE_DISPLAY:
                if (!Session.GetHabbo().GetBadgeComponent().HasBadge(ExtraData))
                {
                    Session.SendMessage(new BroadcastMessageAlertComposer("Oops, it appears that you do not own this badge."));
                    return;
                }

                ExtraData = ExtraData + Convert.ToChar(9) + Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year;
                break;

            case InteractionType.BADGE:
            {
                if (Session.GetHabbo().GetBadgeComponent().HasBadge(Item.Data.ItemName))
                {
                    Session.SendMessage(new PurchaseErrorComposer(1));
                    return;
                }
                break;
            }

            default:
                ExtraData = "";
                break;
            }
            #endregion


            if (Item.IsLimited)
            {
                if (Item.LimitedEditionStack <= Item.LimitedEditionSells)
                {
                    Session.SendNotification("This item has sold out!\n\n" + "Please note, you have not recieved another item (You have also not been charged for it!)");
                    Session.SendMessage(new CatalogUpdatedComposer());
                    Session.SendMessage(new PurchaseOKComposer());
                    return;
                }

                Item.LimitedEditionSells++;
                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `catalog_items` SET `limited_sells` = '" + Item.LimitedEditionSells + "' WHERE `id` = '" + Item.Id + "' LIMIT 1");
                    LimitedEditionSells = Item.LimitedEditionSells;
                    LimitedEditionStack = Item.LimitedEditionStack;
                }
            }

            if (Item.CostCredits > 0)
            {
                Session.GetHabbo().Credits -= TotalCreditsCost;
                Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits));
            }

            if (Item.CostPixels > 0)
            {
                Session.GetHabbo().Duckets -= TotalPixelCost;
                Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets));//Love you, Tom.
            }

            if (Item.CostDiamonds > 0)
            {
                Session.GetHabbo().Diamonds -= TotalDiamondCost;
                Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5));
            }

            Item NewItem = null;
            switch (Item.Data.Type.ToString().ToLower())
            {
            default:
                List <Item> GeneratedGenericItems = new List <Item>();

                switch (Item.Data.InteractionType)
                {
                default:
                    if (AmountPurchase > 1)
                    {
                        List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase);

                        if (Items != null)
                        {
                            GeneratedGenericItems.AddRange(Items);
                        }
                    }
                    else
                    {
                        NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData, 0, LimitedEditionSells, LimitedEditionStack);

                        if (NewItem != null)
                        {
                            GeneratedGenericItems.Add(NewItem);
                        }
                    }
                    break;

                case InteractionType.GUILD_GATE:
                case InteractionType.GUILD_ITEM:
                case InteractionType.GUILD_FORUM:
                    if (AmountPurchase > 1)
                    {
                        List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase, Convert.ToInt32(ExtraData));

                        if (Items != null)
                        {
                            GeneratedGenericItems.AddRange(Items);
                        }
                    }
                    else
                    {
                        NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData, Convert.ToInt32(ExtraData));

                        if (NewItem != null)
                        {
                            GeneratedGenericItems.Add(NewItem);
                        }
                    }
                    break;

                case InteractionType.ARROW:
                case InteractionType.TELEPORT:
                    for (int i = 0; i < AmountPurchase; i++)
                    {
                        List <Item> TeleItems = ItemFactory.CreateTeleporterItems(Item.Data, Session.GetHabbo());

                        if (TeleItems != null)
                        {
                            GeneratedGenericItems.AddRange(TeleItems);
                        }
                    }
                    break;

                case InteractionType.MOODLIGHT:
                {
                    if (AmountPurchase > 1)
                    {
                        List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase);

                        if (Items != null)
                        {
                            GeneratedGenericItems.AddRange(Items);
                            foreach (Item I in Items)
                            {
                                ItemFactory.CreateMoodlightData(I);
                            }
                        }
                    }
                    else
                    {
                        NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData);

                        if (NewItem != null)
                        {
                            GeneratedGenericItems.Add(NewItem);
                            ItemFactory.CreateMoodlightData(NewItem);
                        }
                    }
                }
                break;

                case InteractionType.TONER:
                {
                    if (AmountPurchase > 1)
                    {
                        List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase);

                        if (Items != null)
                        {
                            GeneratedGenericItems.AddRange(Items);
                            foreach (Item I in Items)
                            {
                                ItemFactory.CreateTonerData(I);
                            }
                        }
                    }
                    else
                    {
                        NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData);

                        if (NewItem != null)
                        {
                            GeneratedGenericItems.Add(NewItem);
                            ItemFactory.CreateTonerData(NewItem);
                        }
                    }
                }
                break;

                case InteractionType.DEAL:
                {
                    //Fetch the deal where the ID is this items ID.
                    var DealItems = (from d in Page.Deals.Values.ToList() where d.Id == Item.Id select d);

                    //This bit, iterating ONE item? How can I make this simpler
                    foreach (CatalogDeal DealItem in DealItems)
                    {
                        //Here I loop the DealItems ItemDataList.
                        foreach (CatalogItem CatalogItem in DealItem.ItemDataList.ToList())
                        {
                            List <Item> Items = ItemFactory.CreateMultipleItems(CatalogItem.Data, Session.GetHabbo(), "", AmountPurchase);

                            if (Items != null)
                            {
                                GeneratedGenericItems.AddRange(Items);
                            }
                        }
                    }
                    break;
                }
                }

                foreach (Item PurchasedItem in GeneratedGenericItems)
                {
                    if (Session.GetHabbo().GetInventoryComponent().TryAddItem(PurchasedItem))
                    {
                        //Session.SendMessage(new FurniListAddComposer(PurchasedItem));
                        Session.SendMessage(new FurniListNotificationComposer(PurchasedItem.Id, 1));
                    }
                }
                break;

            case "e":
                AvatarEffect Effect = null;

                if (Session.GetHabbo().Effects().HasEffect(Item.Data.SpriteId))
                {
                    Effect = Session.GetHabbo().Effects().GetEffectNullable(Item.Data.SpriteId);

                    if (Effect != null)
                    {
                        Effect.AddToQuantity();
                    }
                }
                else
                {
                    Effect = AvatarEffectFactory.CreateNullable(Session.GetHabbo(), Item.Data.SpriteId, 3600);
                }

                if (Effect != null)    // && Session.GetHabbo().Effects().TryAdd(Effect))
                {
                    Session.SendMessage(new AvatarEffectAddedComposer(Item.Data.SpriteId, 3600));
                }
                break;

            case "r":
                Bot Bot = BotUtility.CreateBot(Item.Data, Session.GetHabbo().Id);
                if (Bot != null)
                {
                    Session.GetHabbo().GetInventoryComponent().TryAddBot(Bot);
                    Session.SendMessage(new BotInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetBots()));
                    Session.SendMessage(new FurniListNotificationComposer(Bot.Id, 5));
                }
                else
                {
                    Session.SendNotification("Oops! There was an error whilst purchasing this bot. It seems that there is no bot data for the bot!");
                }
                break;

            case "b":
            {
                Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.Data.ItemName, true, Session);
                Session.SendMessage(new FurniListNotificationComposer(0, 4));
                break;
            }

            case "p":
            {
                switch (Item.Data.InteractionType)
                {
                    #region Pets
                    #region Pet 0
                case InteractionType.pet0:
                    string[] PetData      = ExtraData.Split('\n');
                    Pet      GeneratedPet = PetUtility.CreatePet(Session.GetHabbo().Id, PetData[0], 0, PetData[1], PetData[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet);

                    break;

                    #endregion
                    #region Pet 1
                case InteractionType.pet1:
                    string[] PetData1      = ExtraData.Split('\n');
                    Pet      GeneratedPet1 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData1[0], 1, PetData1[1], PetData1[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet1);

                    break;

                    #endregion
                    #region Pet 2
                case InteractionType.pet2:
                    string[] PetData5      = ExtraData.Split('\n');
                    Pet      GeneratedPet5 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData5[0], 2, PetData5[1], PetData5[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet5);

                    break;

                    #endregion
                    #region Pet 3
                case InteractionType.pet3:
                    string[] PetData2      = ExtraData.Split('\n');
                    Pet      GeneratedPet2 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData2[0], 3, PetData2[1], PetData2[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet2);

                    break;

                    #endregion
                    #region Pet 4
                case InteractionType.pet4:
                    string[] PetData3      = ExtraData.Split('\n');
                    Pet      GeneratedPet3 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData3[0], 4, PetData3[1], PetData3[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet3);

                    break;

                    #endregion
                    #region Pet 5
                case InteractionType.pet5:
                    string[] PetData7      = ExtraData.Split('\n');
                    Pet      GeneratedPet7 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData7[0], 5, PetData7[1], PetData7[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet7);

                    break;

                    #endregion
                    #region Pet 6 (wrong?)
                case InteractionType.pet6:
                    string[] PetData4      = ExtraData.Split('\n');
                    Pet      GeneratedPet4 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData4[0], 6, PetData4[1], PetData4[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet4);

                    break;

                    #endregion
                    #region Pet 7 (wrong?)
                case InteractionType.pet7:
                    string[] PetData6      = ExtraData.Split('\n');
                    Pet      GeneratedPet6 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData6[0], 7, PetData6[1], PetData6[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet6);

                    break;

                    #endregion
                    #region Pet 8
                case InteractionType.pet8:
                    string[] PetData8      = ExtraData.Split('\n');
                    Pet      GeneratedPet8 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData8[0], 8, PetData8[1], PetData8[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet8);

                    break;

                    #endregion
                    #region Pet 8
                case InteractionType.pet9:
                    string[] PetData9      = ExtraData.Split('\n');
                    Pet      GeneratedPet9 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData9[0], 9, PetData9[1], PetData9[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet9);

                    break;

                    #endregion
                    #region Pet 10
                case InteractionType.pet10:
                    string[] PetData10      = ExtraData.Split('\n');
                    Pet      GeneratedPet10 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData10[0], 10, PetData10[1], PetData10[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet10);

                    break;

                    #endregion
                    #region Pet 11
                case InteractionType.pet11:
                    string[] PetData11      = ExtraData.Split('\n');
                    Pet      GeneratedPet11 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData11[0], 11, PetData11[1], PetData11[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet11);

                    break;

                    #endregion
                    #region Pet 12
                case InteractionType.pet12:
                    string[] PetData12      = ExtraData.Split('\n');
                    Pet      GeneratedPet12 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData12[0], 12, PetData12[1], PetData12[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet12);

                    break;

                    #endregion
                    #region Pet 13
                case InteractionType.pet13:             //Caballo - Horse
                    string[] PetData13      = ExtraData.Split('\n');
                    Pet      GeneratedPet13 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData13[0], 13, PetData13[1], PetData13[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet13);

                    break;

                    #endregion
                    #region Pet 14
                case InteractionType.pet14:
                    string[] PetData14      = ExtraData.Split('\n');
                    Pet      GeneratedPet14 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData14[0], 14, PetData14[1], PetData14[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet14);

                    break;

                    #endregion
                    #region Pet 15
                case InteractionType.pet15:
                    string[] PetData15      = ExtraData.Split('\n');
                    Pet      GeneratedPet15 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData15[0], 15, PetData15[1], PetData15[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet15);

                    break;

                    #endregion
                    #region Pet 16
                case InteractionType.pet16:             // Mascota Agregada
                    string[] PetData16      = ExtraData.Split('\n');
                    Pet      GeneratedPet16 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData16[0], 16, PetData16[1], PetData16[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet16);

                    break;

                    #endregion
                    #region Pet 17
                case InteractionType.pet17:             // Mascota Agregada
                    string[] PetData17      = ExtraData.Split('\n');
                    Pet      GeneratedPet17 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData17[0], 17, PetData17[1], PetData17[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet17);

                    break;

                    #endregion
                    #region Pet 18
                case InteractionType.pet18:             // Mascota Agregada
                    string[] PetData18      = ExtraData.Split('\n');
                    Pet      GeneratedPet18 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData18[0], 18, PetData18[1], PetData18[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet18);

                    break;

                    #endregion
                    #region Pet 19
                case InteractionType.pet19:             // Mascota Agregada
                    string[] PetData19      = ExtraData.Split('\n');
                    Pet      GeneratedPet19 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData19[0], 19, PetData19[1], PetData19[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet19);

                    break;

                    #endregion
                    #region Pet 20
                case InteractionType.pet20:             // Mascota Agregada
                    string[] PetData20      = ExtraData.Split('\n');
                    Pet      GeneratedPet20 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData20[0], 20, PetData20[1], PetData20[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet20);

                    break;

                    #endregion
                    #region Pet 21
                case InteractionType.pet21:             // Mascota Agregada
                    string[] PetData21      = ExtraData.Split('\n');
                    Pet      GeneratedPet21 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData21[0], 21, PetData21[1], PetData21[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet21);

                    break;

                    #endregion
                    #region Pet 22
                case InteractionType.pet22:             // Mascota Agregada
                    string[] PetData22      = ExtraData.Split('\n');
                    Pet      GeneratedPet22 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData22[0], 22, PetData22[1], PetData22[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet22);

                    break;

                    #endregion
                    #region Pet 28
                case InteractionType.pet28:             // Mascota Agregada
                    string[] PetData28      = ExtraData.Split('\n');
                    Pet      GeneratedPet28 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData28[0], 28, PetData28[1], PetData28[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet28);

                    break;

                    #endregion
                    #region Pet 29
                case InteractionType.pet29:
                    string[] PetData29      = ExtraData.Split('\n');
                    Pet      GeneratedPet29 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData29[0], 29, PetData29[1], PetData29[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet29);

                    break;

                    #endregion
                    #region Pet 30
                case InteractionType.pet30:
                    string[] PetData30      = ExtraData.Split('\n');
                    Pet      GeneratedPet30 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData30[0], 30, PetData30[1], PetData30[2]);

                    Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet30);

                    break;
                    #endregion
                    #endregion
                }

                Session.SendMessage(new FurniListNotificationComposer(0, 3));
                Session.SendMessage(new PetInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetPets()));

                ItemData PetFood = null;
                if (PlusEnvironment.GetGame().GetItemManager().GetItem(320, out PetFood))
                {
                    Item Food = ItemFactory.CreateSingleItemNullable(PetFood, Session.GetHabbo(), "", "");
                    if (Food != null)
                    {
                        Session.GetHabbo().GetInventoryComponent().TryAddItem(Food);
                        Session.SendMessage(new FurniListNotificationComposer(Food.Id, 1));
                    }
                }
                break;
            }
            }


            Session.SendMessage(new PurchaseOKComposer(Item, Item.Data));
            Session.SendMessage(new FurniListUpdateComposer());
        }
Esempio n. 27
0
        public IList <Distributor> GetDistributors(string name, Country country, PriceList priceList, Lookup paymentTerm, DistributorStatus?status, GridState gridState, out int totalRecords, Incoterm?saleCondition, Lookup type, CatalogPage page)
        {
            int pageNumber = gridState.PageNumber;
            int pageSize   = gridState.PageSize;

            ICriteria crit = GetDistributorsCriteria(name, country, priceList, paymentTerm, status, gridState, saleCondition, type, page);

            crit.SetProjection(Projections.ProjectionList().Add(Projections.Count("ID")));

            totalRecords = crit.UniqueResult <int>();
            if (totalRecords == 0)
            {
                return(new List <Distributor>());
            }

            pageNumber = Utils.AdjustPageNumber(pageNumber, pageSize, totalRecords);

            crit = GetDistributorsCriteria(name, country, priceList, paymentTerm, status, gridState, saleCondition, type, page);

            crit.SetMaxResults(gridState.PageSize);
            if (pageNumber == 1)
            {
                crit.SetFirstResult(0);
            }
            else
            {
                crit.SetFirstResult((pageNumber - 1) * gridState.PageSize);
            }

            string[] sort = gridState.SortField.Split('.');

            ICriteria critSort  = crit;
            string    sortField = gridState.SortField;

            if (!sortField.Contains("TimeStamp") && sort.Length > 1)
            {
                critSort  = crit.CreateCriteria(sort[0], JoinType.LeftOuterJoin);
                sortField = sort[1];
            }

            critSort.AddOrder(new Order(sortField, gridState.SortAscending));

            return(crit.List <Distributor>());
        }
Esempio n. 28
0
        public CatalogPageComposer(CatalogPage Page, string CataMode, Language Langue)
            : base(ServerPacketHeader.CatalogPageMessageComposer)
        {
            WriteInteger(Page.Id);
            WriteString(CataMode);
            WriteString(Page.Template);

            WriteInteger(Page.PageStrings1.Count);
            foreach (string s in Page.PageStrings1)
            {
                WriteString(s);
            }

            if (Page.GetPageStrings2ByLangue(Langue).Count == 1 && (Page.Template == "default_3x3" || Page.Template == "default_3x3_color_grouping") && string.IsNullOrEmpty(Page.GetPageStrings2ByLangue(Langue)[0]))
            {
                WriteInteger(1);
                WriteString(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("catalog.desc.default", Langue), Page.GetCaptionByLangue(Langue)));
            }
            else
            {
                WriteInteger(Page.GetPageStrings2ByLangue(Langue).Count);
                foreach (string s in Page.GetPageStrings2ByLangue(Langue))
                {
                    WriteString(s);
                }
            }

            if (!Page.Template.Equals("frontpage") && !Page.Template.Equals("club_buy"))
            {
                WriteInteger(Page.Items.Count);
                foreach (CatalogItem Item in Page.Items.Values)
                {
                    WriteInteger(Item.Id);
                    WriteString(Item.Name);
                    WriteBoolean(false);//IsRentable
                    WriteInteger(Item.CostCredits);

                    if (Item.CostDiamonds > 0)
                    {
                        WriteInteger(Item.CostDiamonds);
                        WriteInteger(105); // Diamonds
                    }
                    else
                    {
                        WriteInteger(Item.CostDuckets);
                        WriteInteger(0);
                    }

                    WriteBoolean(ItemUtility.CanGiftItem(Item));

                    WriteInteger(string.IsNullOrEmpty(Item.Badge) || Item.Data.Type.ToString() == "b" ? 1 : 2);

                    if (!string.IsNullOrEmpty(Item.Badge))
                    {
                        WriteString("b");
                        WriteString(Item.Badge);
                    }


                    if (Item.Data.Type.ToString().ToLower() != "b")
                    {
                        WriteString(Item.Data.Type.ToString());
                        WriteInteger(Item.Data.SpriteId);
                        if (Item.Data.InteractionType == InteractionType.WALLPAPER || Item.Data.InteractionType == InteractionType.FLOOR || Item.Data.InteractionType == InteractionType.LANDSCAPE)
                        {
                            WriteString(Item.Name.Split('_')[2]);
                        }
                        else if (Item.Data.InteractionType == InteractionType.bot)//Bots
                        {
                            CatalogBot CatalogBot = null;
                            if (!ButterflyEnvironment.GetGame().GetCatalog().TryGetBot(Item.ItemId, out CatalogBot))
                            {
                                WriteString("hd-180-7.ea-1406-62.ch-210-1321.hr-831-49.ca-1813-62.sh-295-1321.lg-285-92");
                            }
                            else
                            {
                                WriteString(CatalogBot.Figure);
                            }
                        }
                        else
                        {
                            WriteString("");
                        }
                        WriteInteger(Item.Amount);
                        WriteBoolean(Item.IsLimited); // IsLimited
                        if (Item.IsLimited)
                        {
                            WriteInteger(Item.LimitedEditionStack);
                            WriteInteger(Item.LimitedEditionStack - Item.LimitedEditionSells);
                        }
                    }
                    WriteInteger(0); //club_level
                    WriteBoolean(ItemUtility.CanSelectAmount(Item));

                    WriteBoolean(false); // TODO: Figure out
                    WriteString("");     //previewImage -> e.g; catalogue/pet_lion.png
                }
            }
            else
            {
                WriteInteger(0);
            }
            WriteInteger(-1);
            WriteBoolean(false);

            WriteInteger(ButterflyEnvironment.GetGame().GetCatalog().GetPromotions().ToList().Count);//Count
            foreach (CatalogPromotion Promotion in ButterflyEnvironment.GetGame().GetCatalog().GetPromotions().ToList())
            {
                WriteInteger(Promotion.Id);
                WriteString(Promotion.GetTitleByLangue(Langue));
                WriteString(Promotion.Image);
                WriteInteger(Promotion.Unknown);
                WriteString(Promotion.PageLink);
                WriteInteger(Promotion.ParentId);
            }
        }
Esempio n. 29
0
        private IList <Distributor> GetSelecteds(string name, Country country, PriceList priceList, Lookup paymentTerm, DistributorStatus?status
                                                 , GridState gridState, Incoterm?saleCondition, Lookup type, CatalogPage page)
        {
            ICriteria crit = GetDistributorsCriteria(name, country, priceList, paymentTerm, status, gridState, saleCondition, type, page);

            if (!gridState.MarkedAll)
            {
                crit.Add(Expression.In("ID", gridState.Items));
            }

            return(crit.List <Distributor>());
        }
 public CatalogAssertions(CatalogPage value) : base(value)
 {
 }
Esempio n. 31
0
        /// <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);
        }
Esempio n. 32
0
        public ServerMessage Handle(ValueHolder valueHolder = null)
        {
            CatalogPage page = valueHolder.GetValue <CatalogPage>("CatalogPage");

            ServerMessage message = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);

            message.Init(r63aOutgoing.CatalogPage);
            message.AppendInt32(page.PageID);

            switch (page.PageLayout)
            {
            case "frontpage":
            {
                message.AppendString("frontpage3");
                message.AppendInt32(3);
                message.AppendString(page.PageHeadline);
                message.AppendString(page.PageTeaser);
                message.AppendString("");
                message.AppendInt32(11);
                message.AppendString(page.PageText1);
                message.AppendString(page.PageLinkDescription);
                message.AppendString(page.PageText2);
                message.AppendString(page.PageTextDetails);
                message.AppendString(page.PageLinkPagename);
                message.AppendString("#FAF8CC");
                message.AppendString("#FAF8CC");
                message.AppendString("Read More >");
                message.AppendString("magic.credits");
            }
            break;

            case "club_buy":
            {
                message.AppendString("club_buy");
                message.AppendInt32(1);
                message.AppendString("habboclub_1");
                message.AppendInt32(1);
            }
            break;

            case "pets":
            {
                message.AppendString("pets");
                message.AppendInt32(2);
                message.AppendString(page.PageHeadline);
                message.AppendString(page.PageTeaser);
                message.AppendInt32(4);
                message.AppendString(page.PageText1);
                message.AppendString("");
                message.AppendString("Pick a color:");
                message.AppendString("Pick a race:");
            }
            break;

            case "spaces":
            {
                message.AppendString("spaces_new");
                message.AppendInt32(1);
                message.AppendString(page.PageHeadline);
                message.AppendInt32(1);
                message.AppendString(page.PageText1);
            }
            break;

            default:
            {
                message.AppendString(page.PageLayout);
                message.AppendInt32(3);
                message.AppendString(page.PageHeadline);
                message.AppendString(page.PageTeaser);
                message.AppendString(page.PageSpecial);
                message.AppendInt32(3);
                message.AppendString(page.PageText1);
                message.AppendString(page.PageTextDetails);
                message.AppendString(page.PageTextTeaser);
            }
            break;
            }

            message.AppendInt32(page.Items.Count); //items count
            foreach (CatalogItem item in page.Items.Values)
            {
                item.Serialize(message);
            }
            message.AppendBoolean(false); //new?
            return(message);
        }