Ejemplo n.º 1
0
            public static COutPacket SelectCharacterResult(int uid, byte[] ip, short port)
            {
                var p = new COutPacket(SendOps.LP_SelectCharacterResult);

                p.Encode1(0);                 //v3 | World
                p.Encode1(0);                 //dwCharacterID | Selectec Char

                p.EncodeBuffer(ip, 0, ip.Length);
                p.Encode2(port);
                p.Encode4(uid);
                p.Encode1(0);
                p.Encode4(0);

                //v8 = CInPacket::Decode4(iPacket);
                //v9 = CInPacket::Decode2(iPacket);
                //v10 = CInPacket::Decode4(iPacket);
                //bAuthenCode = CInPacket::Decode1(iPacket);
                //v12 = CInPacket::Decode4(iPacket);
                //ZInetAddr::ZInetAddr((ZInetAddr*)&addrNet, v9);

                return(p);
            }
Ejemplo n.º 2
0
            public static COutPacket MigrateIn(Character c)
            {
                var p = new COutPacket(SendOps.LP_SetCashShop);

                DbCharFlags flag = DbCharFlags.CHARACTER;

                flag |= DbCharFlags.MONEY;
                flag |= DbCharFlags.ITEMSLOTEQUIP;
                flag |= DbCharFlags.ITEMSLOTCONSUME;
                flag |= DbCharFlags.ITEMSLOTINSTALL;
                flag |= DbCharFlags.ITEMSLOTETC;
                flag |= DbCharFlags.ITEMSLOTCASH;
                flag |= DbCharFlags.INVENTORYSIZE;

                c.Encode(p, flag);                  // m_character

                p.Encode1(true);                    // m_bCashShopAuthorized
                p.EncodeString(c.Account.Username); // m_sNexonClubID

                // CWvsContext::SetSaleInfo -> v95 || CShopInfo::EncodeSaleInfo -> BMS
                p.Encode4(CashShopConstants.DisabledItems.Length);
                foreach (var item in CashShopConstants.DisabledItems)
                {
                    p.Encode4(item);
                }

                var modifiedCommodities = new CommodityCollection();

                CashShopConstants.ModifiedCommodities
                .ForEach(mc => modifiedCommodities.Add(mc));

                modifiedCommodities.Encode(p);

                // modified items -- Rebirth.Server.Shop.Commodity.CommodityData.Encode(...)
                //p.Encode2(0); // count
                //			  // loop modified items

                // category discount rate -> foreach: byte (category), byte (tab), byte (rate)
                p.Encode1(0);                 // count
                // loop discounted items
                // (byte) Main tab (1 = event, 2 = equip, 3 = use, 4 = special, 5 = etc, 6 = pet, 7 = package)
                // (byte) Sub tab (Starts at 0)
                // (byte) Discount rate

                p.EncodeBuffer(new byte[1080], 0, 1080);

                // VERTISY
                //// aBest(buffer of 1080)
                //for (int j = 0; j < 2; j++)
                //{// gender
                //	int[] aBest = { 50200004, 50200069, 50200117, 50100008, 50000047 };
                //	int index = 0;
                //	List<BestItem> bestItems = new ArrayList<>(CashItemFactory.bestItems.values());
                //	Collections.sort(bestItems);
                //	for (BestItem bItem : bestItems)
                //	{
                //		if ((bItem.nCommodityGender == 2 || bItem.nCommodityGender == j))
                //		{
                //			aBest[index++] = bItem.sn;
                //		}
                //		if (index == aBest.length) break;
                //	}
                //	for (int i = 0; i < 9; i++)
                //	{// category
                //		for (int sn : aBest)
                //		{
                //			mplew.writeInt(i);// category
                //			mplew.writeInt(j);// gender
                //			mplew.writeInt(sn);// sn
                //		}
                //	}
                //	bestItems.clear();
                //}

                CLimitSell.Encode(p);

                //p.Encode2(0); // limit goods
                //p.Encode2(1);
                //{
                //	p.Encode4(1052017);
                //	p.Encode4(10002462);
                //	foreach (var i in new int[9])
                //	{
                //		p.Encode4(i);
                //	}

                //	p.Encode4(-1);
                //	p.Encode4(100);
                //	p.Encode4(50);
                //	p.Encode2(1);
                //	p.Encode4(0);
                //	p.Encode4(31);
                //	p.Encode4(0);
                //	p.Encode4(24);
                //	foreach(var item in new int[7])
                //	{
                //		p.Encode4(item + 1);
                //	}
                //}

                p.Encode2(0);                                  // zero goods

                p.Encode1(false);                              // event

                p.Encode4(c.Account.HighestLevelChar().Item1); // highest char level in account


                return(p);
            }