Esempio n. 1
0
        public Shu_ChangeCurrentShu(long beforeCharacterItemID, long shuitemid, DBShuInfo infos, byte last)
        {
            /*FF 2E 05 0C 00 00 00 00 00 00 00 FF FF FF FF FF
             * FF FF FF 7F B8 37 00 00 00 00 00 00 00 00 00 01
             * 00 00 00 7F B8 37 00 00 00 00 00 7F B8 37 00 00
             * 00 00 00 3A AA 00 00 30 00 7F B8 37 00 00 00 00
             * 00 80 B8 37 00 00 00 00 00 81 B8 37 00 00 00 00
             * 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
             * FF FF FF FF FF FF FF FF FF 10 00 E4 00 00 00 64
             * 00 00 00 E8 03 00 00 00 00 00 00 00 04 04 00 00
             * 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 A6
             * 75 C5 40 C6 46 01 00 00 00 04*/
            /*FF 2E 05 0C 00 00 00 00 00 00 00 7F B8 37 00 00
             * 00 00 00 FF FF FF FF FF FF FF FF 00 00 00 00 00
             * 00 00 00 01*/
            ns.Write((byte)0xFF);
            ns.Write((short)0x52E); //opcode
            ns.Write(0xC);          //sub opcode
            ns.Write(0);
            ns.Write(beforeCharacterItemID);
            ns.Write(shuitemid);

            ns.Write(0);

            if (shuitemid != -1)
            {
                ns.Write(infos.characterItemID.Count);
                foreach (var charid in infos.characterItemID)
                {
                    infos.shuchars.TryGetValue(charid, out var shuchar);
                    infos.shuavatars.TryGetValue(charid, out var shuavatar);
                    infos.shustatus.TryGetValue(charid, out var shustate);
                    ns.Write(charid);
                    ns.Write(charid);
                    ns.Write(shuchar.avatarItemNum);

                    ns.Write((short)0x30);//size
                    foreach (var i in shuavatar.OrderBy(o => o.Position))
                    {
                        ns.Write(i.itemID);
                    }

                    ns.Write((short)0x10);//size
                    foreach (var i in shustate)
                    {
                        ns.Write(i.value);
                    }
                    ns.Write(shuchar.MotionList);
                    ns.Write(shuchar.PurchaseMotionList);
                    ns.WriteBIG5Fixed_intSize(shuchar.Name);
                    ns.Write(shuchar.state);
                }
            }
            else
            {
                ns.Write(0);
            }

            ns.Write(last);  //end
        }
Esempio n. 2
0
        public Shu_HatchOK(long eggitemid, DBShuInfo infos, byte last)//DataTable shuinfo, DataTable shuavatarinfo, DataTable shustatus, byte last)
        {
            /*FF 2E 05 01 00 00 00 00 00 00 00 65 B8 37 00 00 00 00 00
             * 7F B8 37 00 00 00 00 00 04 00 00 00 00 00 00 00 65 B8 37
             * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
             * 00 00 3A AA 00 00 7F B8 37 00 00 00 00 00 20 89 70 DB 68
             * 01 00 00 01 00 00 00 01 00 00 00 3B AA 00 00 80 B8 37 00
             * 00 00 00 00 20 89 70 DB 68 01 00 00 01 00 00 00 01 00 00
             * 00 3D AA 00 00 81 B8 37 00 00 00 00 00 20 89 70 DB 68 01
             * 00 00 01 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 7F
             * B8 37 00 00 00 00 00 7F B8 37 00 00 00 00 00 3A AA 00 00
             * 30 00 7F B8 37 00 00 00 00 00 80 B8 37 00 00 00 00 00 81
             * B8 37 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF
             * FF FF FF FF FF FF FF FF FF FF FF FF 10 00 F0 00 00 00 64
             * 00 00 00 E8 03 00 00 00 00 00 00 00 04 04 00 00 00 00 00
             * 00 00 00 00 00 00 00 00 06 00 00 00 A6 75 C5 40 C6 46 00
             * 00 00 00 01*/
            ns.Write((byte)0xFF);
            ns.Write((short)0x52E); //opcode
            ns.Write(1);            //sub opcode
            ns.Write(0);
            ns.Write(eggitemid);
            ns.Write(infos.characterItemID[0]);
            int  count   = infos.shuitems.Values.Sum(s => s.Count);
            bool haveegg = false;

            if (infos.shuitems.TryGetValue(0, out var eggitem))
            {
                haveegg = true;
            }
            else
            {
                count += 1;
            }
            ns.Write(count);
            if (haveegg)
            {
                ns.Write(0);//itemdescnum
                ns.Write(eggitemid);
                ns.Write(eggitem[0].gotDateTime);
                ns.Write(eggitem[0].count);
                ns.Write(eggitem[0].state);
                //ns.Write(Utility.ConvertToTimestamp(Convert.ToDateTime(egginfo.Rows[0]["gotDateTime"])));
                //ns.Write((int)egginfo.Rows[0]["count"]);
                //ns.Write((int)egginfo.Rows[0]["state"]);
            }
            else
            {
                ns.Write(0);//itemdescnum
                ns.Write(eggitemid);
                ns.Fill(0x10);
            }

            foreach (var i in infos.shuitems.Where(w => w.Key != 0))
            {
                foreach (var j in i.Value)
                {
                    ns.Write(j.itemdescnum);
                    ns.Write(j.itemID);
                    ns.Write(j.gotDateTime);
                    ns.Write(j.count);
                    ns.Write(j.state);
                }
            }

            ns.Write(0);

            ns.Write(infos.characterItemID.Count);
            foreach (var charid in infos.characterItemID)
            {
                infos.shuchars.TryGetValue(charid, out var shuchar);
                infos.shuavatars.TryGetValue(charid, out var shuavatar);
                infos.shustatus.TryGetValue(charid, out var shustate);
                ns.Write(charid);
                ns.Write(charid);
                ns.Write(shuchar.avatarItemNum);

                ns.Write((short)0x30);//size
                foreach (var i in shuavatar.OrderBy(o => o.Position))
                {
                    ns.Write(i.itemID);
                }

                ns.Write((short)0x10);//size
                foreach (var i in shustate)
                {
                    ns.Write(i.value);
                }
                ns.Write(shuchar.MotionList);
                ns.Write(shuchar.PurchaseMotionList);
                ns.WriteBIG5Fixed_intSize(shuchar.Name);
                ns.Write(shuchar.state);
            }

            ns.Write(last);  //end
            //Console.WriteLine("Shu_Hatch: {0}", Utility.ByteArrayToString(ns.ToArray()));
        }
Esempio n. 3
0
        public Shu_GetUserCharacterItemList(DBShuInfo infos, byte last)//List<ShuItemInfo> iteminfos, DataTable shuinfo, DataTable shuavatarinfo, DataTable shustatus, byte last)
        {
            /*FF 2E 05 02 00 00 00 00 00 00 00 00 00 00 00 00
             * 00 00 00 03 00 00 00 3A AA 00 00 AA 10 34 00 00
             * 00 00 00 28 38 57 97 64 01 00 00 01 00 00 00 01
             * 00 00 00 3B AA 00 00 AB 10 34 00 00 00 00 00 28
             * 38 57 97 64 01 00 00 01 00 00 00 01 00 00 00 3D
             * AA 00 00 AC 10 34 00 00 00 00 00 28 38 57 97 64
             * 01 00 00 01 00 00 00 01 00 00 00 00 00 00 00 01
             * 00 00 00 AA 10 34 00 00 00 00 00 AA 10 34 00 00
             * 00 00 00 3A AA 00 00 30 00 AA 10 34 00 00 00 00
             * 00 AB 10 34 00 00 00 00 00 AC 10 34 00 00 00 00
             * 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
             * FF FF FF FF FF FF FF FF FF 10 00 00 00 00 00 64
             * 00 00 00 64 00 00 00 10 03 06 00 1F FE 2F 00 00
             * 00 00 00 00 40 00 00 00 00 00 00 06 00 00 00 A6
             * 75 C5 40 C6 46 00 00 00 00 04*/
            ns.Write((byte)0xFF);
            ns.Write((short)0x52E); //opcode
            ns.Write(2);            //sub opcode
            ns.Write(0);
            ns.Write(0L);
            int count = infos.shuitems.Values.Sum(s => s.Count);

            ns.Write(count);
            if (count > 0)
            {
                foreach (var i in infos.shuitems.Values)
                {
                    foreach (var j in i)
                    {
                        ns.Write(j.itemdescnum);
                        ns.Write(j.itemID);
                        ns.Write(j.gotDateTime);
                        ns.Write(j.count);
                        ns.Write(j.state);
                    }
                }

                /*foreach (var i in iteminfos)
                 * {
                 *  ns.Write(i.itemdescnum);
                 *  ns.Write(i.itemID);
                 *  ns.Write(i.gotDateTime);
                 *  ns.Write(i.count);
                 *  ns.Write(i.state);
                 * }*/
                ns.Write(0);
                ns.Write(infos.characterItemID.Count);
                foreach (var charid in infos.characterItemID)
                {
                    infos.shuchars.TryGetValue(charid, out var shuchar);
                    infos.shuavatars.TryGetValue(charid, out var shuavatar);
                    infos.shustatus.TryGetValue(charid, out var shustate);
                    ns.Write(charid);
                    ns.Write(charid);
                    ns.Write(shuchar.avatarItemNum);

                    ns.Write((short)0x30);//size
                    foreach (var i in shuavatar.OrderBy(o => o.Position))
                    {
                        ns.Write(i.itemID);
                    }

                    ns.Write((short)0x10);//size
                    foreach (var i in shustate)
                    {
                        ns.Write(i.value);
                    }
                    ns.Write(shuchar.MotionList);
                    ns.Write(shuchar.PurchaseMotionList);
                    ns.WriteBIG5Fixed_intSize(shuchar.Name);
                    ns.Write(shuchar.state);
                }
            }
            else
            {
                ns.Write(0L);
            }
            ns.Write(last);  //end
            //Console.WriteLine("Shu_GetUserCharacterItemList: {0}", Utility.ByteArrayToString(ns.ToArray()));
        }