Exemplo n.º 1
0
        public byte[] Encode()
        {
            List <Byte> data = new List <Byte>();

            data.AddInt32(0);
            data.AddInt64(m_vId);
            data.AddInt64(m_vCurrentHomeId);
            if (m_vAllianceId != 0)
            {
                data.Add(1);
                data.AddInt64(m_vAllianceId);
                Alliance alliance = ObjectManager.GetAlliance(m_vAllianceId);
                data.AddString(alliance.GetAllianceName());
                data.AddInt32(alliance.GetAllianceBadgeData());
                data.AddInt32(alliance.GetAllianceMember(m_vId).GetRole());
                data.AddInt32(alliance.GetAllianceLevel());
                data.Add(0);
                data.AddInt32(0);
            }
            else
            {
                data.Add(0);
                data.AddInt32(0);
            }

            //7.156
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(0);
            data.AddInt32(m_vLeagueId);//league

            data.AddInt32(GetAllianceCastleLevel());
            data.AddInt32(GetAllianceCastleTotalCapacity());
            data.AddInt32(GetAllianceCastleUsedCapacity());
            data.AddInt32(GetTownHallLevel());
            data.AddString(m_vAvatarName);
            data.AddInt32(-1);
            data.AddInt32(m_vAvatarLevel);
            data.AddInt32(m_vExperience);
            data.AddInt32(m_vCurrentGems);
            data.AddInt32(m_vCurrentGems); //FreeDiamonds
            data.AddInt32(0x04B0);
            data.AddInt32(0x003C);
            data.AddInt32(m_vScore);

            data.AddRange(new byte[] {
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00,
                0x01,
                0x00, 0x00, 0x00, 0xDC, 0x6C, 0xF5, 0xEB, 0x48
            });

            data.Add(m_vIsAvatarNameSet);
            data.AddInt32(0); //Cumulative Purchased Diamonds
            data.AddInt32(0);

            //7.65
            data.AddInt32(0);

            //7.1
            data.AddInt32(1);

            data.AddDataSlots(GetResourceCaps());
            data.AddDataSlots(GetResources());
            data.AddDataSlots(GetUnits());
            data.AddDataSlots(GetSpells());
            data.AddDataSlots(m_vUnitUpgradeLevel);
            data.AddDataSlots(m_vSpellUpgradeLevel);
            data.AddDataSlots(m_vHeroUpgradeLevel);
            data.AddDataSlots(m_vHeroHealth);
            data.AddDataSlots(m_vHeroState);

            data.AddRange(BitConverter.GetBytes(AllianceUnits.Count).Reverse());
            foreach (DataSlot u in AllianceUnits)
            {
                data.AddRange(BitConverter.GetBytes(u.Data.GetGlobalID()).Reverse());
                data.AddRange(BitConverter.GetBytes(u.Value).Reverse());
                data.AddRange(BitConverter.GetBytes(0).Reverse());//A CHANGER
            }

            data.AddRange(BitConverter.GetBytes(TutorialStepsCount).Reverse());
            for (uint i = 0; i < TutorialStepsCount; i++)
            {
                data.AddRange(BitConverter.GetBytes(0x01406F40 + i).Reverse());
            }

            //Unlocked Achievements
            data.AddRange(BitConverter.GetBytes(Achievements.Count).Reverse());
            foreach (DataSlot a in Achievements)
            {
                data.AddRange(BitConverter.GetBytes(a.Data.GetGlobalID()).Reverse());
            }

            //Achievement Progress
            data.AddRange(BitConverter.GetBytes(Achievements.Count).Reverse());
            foreach (DataSlot a in Achievements)
            {
                data.AddRange(BitConverter.GetBytes(a.Data.GetGlobalID()).Reverse());
                data.AddRange(BitConverter.GetBytes(0).Reverse());//A CHANGER
            }

            data.AddDataSlots(NpcStars);
            data.AddDataSlots(NpcLootedGold);
            data.AddDataSlots(NpcLootedElixir);

            //7.65
            data.AddInt32(0);

            return(data.ToArray());
        }
Exemplo n.º 2
0
        public async Task <byte[]> Encode()
        {
            try
            {
                Random      rnd  = new Random();
                List <byte> data = new List <byte>();
                data.AddInt64(m_vId);
                data.AddInt64(m_vCurrentHomeId);
                if (m_vAllianceId != 0)
                {
                    data.Add(1);
                    data.AddInt64(m_vAllianceId);
                    Alliance alliance = await ObjectManager.GetAlliance(m_vAllianceId);

                    data.AddString(alliance.GetAllianceName());
                    data.AddInt32(alliance.GetAllianceBadgeData());
                    data.AddInt32(alliance.GetAllianceMember(m_vId).GetRole());
                    data.AddInt32(alliance.GetAllianceLevel());
                }
                data.Add(0);

                if (m_vLeagueId == 22)
                {
                    data.AddInt32(m_vScore / 12);
                    data.AddInt32(1);
                    int month = DateTime.Now.Month;
                    data.AddInt32(month);
                    data.AddInt32(DateTime.Now.Year);
                    data.AddInt32(rnd.Next(1, 10));
                    data.AddInt32(m_vScore);
                    data.AddInt32(1);
                    if (month == 1)
                    {
                        data.AddInt32(12);
                        data.AddInt32(DateTime.Now.Year - 1);
                    }
                    else
                    {
                        int pmonth = month - 1;
                        data.AddInt32(pmonth);
                        data.AddInt32(DateTime.Now.Year);
                    }
                    data.AddInt32(rnd.Next(1, 10));
                    data.AddInt32(m_vScore / 2);
                }
                else
                {
                    data.AddInt32(0); //1
                    data.AddInt32(0); //2
                    data.AddInt32(0); //3
                    data.AddInt32(0); //4
                    data.AddInt32(0); //5
                    data.AddInt32(0); //6
                    data.AddInt32(0); //7
                    data.AddInt32(0); //8
                    data.AddInt32(0); //9
                    data.AddInt32(0); //10
                    data.AddInt32(0); //11
                }

                data.AddInt32(m_vLeagueId);
                data.AddInt32(GetAllianceCastleLevel());
                data.AddInt32(GetAllianceCastleTotalCapacity());
                data.AddInt32(GetAllianceCastleUsedCapacity());
                data.AddInt32(0);
                data.AddInt32(-1);
                data.AddInt32(GetTownHallLevel());
                data.AddString(m_vAvatarName);
                data.AddInt32(-1);
                data.AddInt32(m_vAvatarLevel);
                data.AddInt32(m_vExperience);
                data.AddInt32(m_vCurrentGems);
                data.AddInt32(m_vCurrentGems);
                data.AddInt32(1200);
                data.AddInt32(60);
                data.AddInt32(m_vScore);
                data.AddInt32(200); // Attack Wins
                data.AddInt32(m_vDonated);
                data.AddInt32(100); // Attack Loses
                data.AddInt32(m_vReceived);

                data.AddInt32(m_vAlliance_Gold);
                data.AddInt32(m_vAlliance_Elixir);
                data.AddInt32(m_vAlliance_DarkElixir);
                data.AddInt32(0);
                data.Add(1);
                data.AddInt64(946720861000);

                data.Add(m_vnameChosenByUser);

                data.AddInt32(0);
                data.AddInt32(0);
                data.AddInt32(0);
                data.AddInt32(1);

                data.AddInt32(0);
                data.AddInt32(0);
                data.Add(0);
                data.AddDataSlots(GetResourceCaps());
                data.AddDataSlots(GetResources());
                data.AddDataSlots(GetUnits());
                data.AddDataSlots(GetSpells());
                data.AddDataSlots(m_vUnitUpgradeLevel);
                data.AddDataSlots(m_vSpellUpgradeLevel);
                data.AddDataSlots(m_vHeroUpgradeLevel);
                data.AddDataSlots(m_vHeroHealth);
                data.AddDataSlots(m_vHeroState);

                data.AddRange(BitConverter.GetBytes(AllianceUnits.Count).Reverse());
                foreach (DonationSlot u in AllianceUnits)
                {
                    data.AddInt32(u.ID);
                    data.AddInt32(u.Count);
                    data.AddInt32(u.UnitLevel);
                }

                data.AddRange(BitConverter.GetBytes(TutorialStepsCount).Reverse());
                for (uint i = 0; i < TutorialStepsCount; i++)
                {
                    data.AddRange(BitConverter.GetBytes(0x01406F40 + i).Reverse());
                }

                data.AddRange(BitConverter.GetBytes(Achievements.Count).Reverse());
                foreach (var a in Achievements)
                {
                    data.AddRange(BitConverter.GetBytes(a.Data.GetGlobalID()).Reverse());
                }

                data.AddRange(BitConverter.GetBytes(Achievements.Count).Reverse());
                foreach (var a in Achievements)
                {
                    data.AddRange(BitConverter.GetBytes(a.Data.GetGlobalID()).Reverse());
                    data.AddRange(BitConverter.GetBytes(0).Reverse());
                }

                data.AddRange(BitConverter.GetBytes(ObjectManager.NpcLevels.Count).Reverse());
                {
                    for (var i = 17000000; i < 17000050; i++)
                    {
                        data.AddRange(BitConverter.GetBytes(i).Reverse());
                        data.AddRange(BitConverter.GetBytes(rnd.Next(3, 3)).Reverse());
                    }
                }

                data.AddDataSlots(NpcLootedGold);
                data.AddDataSlots(NpcLootedElixir);
                data.AddDataSlots(new List <DataSlot>());
                data.AddDataSlots(new List <DataSlot>());
                data.AddDataSlots(new List <DataSlot>());
                data.AddDataSlots(new List <DataSlot>());

                data.AddInt32(QuickTrain1.Count);
                foreach (var i in QuickTrain1)
                {
                    data.AddInt32(i.Data.GetGlobalID());
                    data.AddInt32(i.Value);
                }

                data.AddInt32(QuickTrain2.Count);
                foreach (var i in QuickTrain2)
                {
                    data.AddInt32(i.Data.GetGlobalID());
                    data.AddInt32(i.Value);
                }
                data.AddInt32(QuickTrain3.Count);
                foreach (var i in QuickTrain3)
                {
                    data.AddInt32(i.Data.GetGlobalID());
                    data.AddInt32(i.Value);
                }
                data.AddInt32(QuickTrain1.Count);
                foreach (var i in QuickTrain1)
                {
                    data.AddInt32(i.Data.GetGlobalID());
                    data.AddInt32(i.Value);
                }
                data.AddDataSlots(new List <DataSlot>());
                return(data.ToArray());
            } catch (Exception) { return(null); }
        }