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 }
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())); }
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())); }