Ejemplo n.º 1
0
        public static int UpdateEvolution(int TemplateID, int lv)
        {
            int             num              = TemplateID;
            int             num2             = Convert.ToInt32(PetMgr.FindConfig("EvolutionLevel1").Value);
            int             num3             = Convert.ToInt32(PetMgr.FindConfig("EvolutionLevel2").Value);
            PetTemplateInfo petTemplateInfo  = PetMgr.FindPetTemplate(num);
            PetTemplateInfo petTemplateInfo2 = PetMgr.FindPetTemplate(num + 1);
            PetTemplateInfo petTemplateInfo3 = PetMgr.FindPetTemplate(num + 2);

            if (petTemplateInfo3 != null)
            {
                if (lv >= num2 && lv < num3 && petTemplateInfo2.EvolutionID != 0)
                {
                    num = petTemplateInfo.EvolutionID;
                }
                else
                {
                    if (lv >= num3)
                    {
                        num = petTemplateInfo2.EvolutionID;
                    }
                }
            }
            else
            {
                if (petTemplateInfo2 != null && lv >= num3)
                {
                    num = petTemplateInfo.EvolutionID;
                }
            }
            return(num);
        }
Ejemplo n.º 2
0
        public static string UpdateSkillPet(int Level, int TemplateID)
        {
            PetTemplateInfo petTemplateInfo = PetMgr.FindPetTemplate(TemplateID);

            if (petTemplateInfo == null)
            {
                PetMgr.log.Error("Pet not found: " + TemplateID);
                return("");
            }
            List <int> petSkillByKindID = PetMgr.GetPetSkillByKindID(petTemplateInfo.KindID, Level);
            string     text             = petSkillByKindID[0] + ",0";

            for (int i = 1; i < petSkillByKindID.Count; i++)
            {
                object obj = text;
                text = string.Concat(new object[]
                {
                    obj,
                    "|",
                    petSkillByKindID[i],
                    ",",
                    i
                });
            }
            return(text);
        }
Ejemplo n.º 3
0
        public static List <UsersPetinfo> CreateFirstAdoptList(int userID)
        {
            List <int> list = new List <int>
            {
                100601,
                110601,
                120601,
                130601
            };
            List <UsersPetinfo> list2 = new List <UsersPetinfo>();

            using (PlayerBussiness playerBussiness = new PlayerBussiness())
            {
                playerBussiness.RemoveUserAdoptPet(userID);
                for (int i = 0; i < list.Count; i++)
                {
                    PetTemplateInfo info         = PetMgr.FindPetTemplate(list[i]);
                    UsersPetinfo    usersPetinfo = PetMgr.CreatePet(info, userID, i);
                    usersPetinfo.IsExit = true;
                    playerBussiness.AddUserAdoptPet(usersPetinfo, false);
                    list2.Add(usersPetinfo);
                }
            }
            return(list2);
        }
Ejemplo n.º 4
0
        public static int TemplateReset(int TemplateID)
        {
            int             num              = TemplateID;
            PetTemplateInfo petTemplateInfo  = PetMgr.FindPetTemplate(num - 1);
            PetTemplateInfo petTemplateInfo2 = PetMgr.FindPetTemplate(num - 2);

            if (petTemplateInfo != null)
            {
                num = petTemplateInfo.TemplateID;
            }
            else
            {
                if (petTemplateInfo2 != null)
                {
                    num = petTemplateInfo2.TemplateID;
                }
            }
            return(num);
        }
Ejemplo n.º 5
0
        public static List <int> GetPetTemplateByStar(int star)
        {
            List <int> list = new List <int>();
            int        num  = 0;

            for (int i = 1; i <= PetMgr.GetPetCount(); i++)
            {
                PetTemplateInfo petTemplateInfo = PetMgr.FindPetTemplateById(i);
                if (petTemplateInfo.StarLevel <= star)
                {
                    int num2 = petTemplateInfo.TemplateID - num;
                    if (num2 != 1 && num2 != -1 && num2 != 2 && num2 != -2)
                    {
                        list.Add(petTemplateInfo.TemplateID);
                    }
                    num = petTemplateInfo.TemplateID;
                }
            }
            return(list);
        }
Ejemplo n.º 6
0
        public static List <UsersPetinfo> CreateAdoptList(int userID)
        {
            int                 num = Convert.ToInt32(PetMgr.FindConfig("AdoptCount").Value);
            List <int>          petTemplateByStar = PetMgr.GetPetTemplateByStar(PetMgr.MaxStar);
            List <UsersPetinfo> list = new List <UsersPetinfo>();

            using (PlayerBussiness playerBussiness = new PlayerBussiness())
            {
                playerBussiness.RemoveUserAdoptPet(userID);
                for (int i = 0; i < num; i++)
                {
                    int             index        = PetMgr.rand.Next(petTemplateByStar.Count);
                    PetTemplateInfo info         = PetMgr.FindPetTemplate(petTemplateByStar[index]);
                    UsersPetinfo    usersPetinfo = PetMgr.CreatePet(info, userID, i);
                    usersPetinfo.IsExit = true;
                    playerBussiness.AddUserAdoptPet(usersPetinfo, false);
                    list.Add(usersPetinfo);
                }
            }
            return(list);
        }
Ejemplo n.º 7
0
        public static UsersPetinfo CreatePet(PetTemplateInfo info, int userID, int place)
        {
            UsersPetinfo usersPetinfo = new UsersPetinfo();
            int          starLevel    = info.StarLevel;
            int          minValue     = 200 + 100 * starLevel;
            int          maxValue     = 350 + 100 * starLevel;
            int          minValue2    = 1700 + 1000 * starLevel;
            int          maxValue2    = 2200 + 2500 * starLevel;

            usersPetinfo.BloodGrow   = PetMgr.rand.Next(minValue2, maxValue2);
            usersPetinfo.AttackGrow  = PetMgr.rand.Next(minValue, maxValue);
            usersPetinfo.DefenceGrow = PetMgr.rand.Next(minValue, maxValue);
            usersPetinfo.AgilityGrow = PetMgr.rand.Next(minValue, maxValue);
            usersPetinfo.LuckGrow    = PetMgr.rand.Next(minValue, maxValue);
            usersPetinfo.DamageGrow  = 0;
            usersPetinfo.GuardGrow   = 0;
            double num  = (double)PetMgr.rand.Next(54, 61) * 0.1;
            double num2 = (double)PetMgr.rand.Next(9, 13) * 0.1;

            usersPetinfo.Blood      = (int)((double)(PetMgr.rand.Next(minValue2, maxValue2) / 10) * 0.1 * num);
            usersPetinfo.Attack     = (int)((double)(PetMgr.rand.Next(minValue, maxValue) / 10) * 0.1 * num2);
            usersPetinfo.Defence    = (int)((double)(PetMgr.rand.Next(minValue, maxValue) / 10) * 0.1 * num2);
            usersPetinfo.Agility    = (int)((double)(PetMgr.rand.Next(minValue, maxValue) / 10) * 0.1 * num2);
            usersPetinfo.Luck       = (int)((double)(PetMgr.rand.Next(minValue, maxValue) / 10) * 0.1 * num2);
            usersPetinfo.Damage     = 0;
            usersPetinfo.Guard      = 0;
            usersPetinfo.Hunger     = 10000;
            usersPetinfo.TemplateID = info.TemplateID;
            usersPetinfo.Name       = info.Name;
            usersPetinfo.UserID     = userID;
            usersPetinfo.Place      = place;
            usersPetinfo.Level      = 1;
            usersPetinfo.Skill      = PetMgr.UpdateSkillPet(1, info.TemplateID);
            usersPetinfo.SkillEquip = PetMgr.ActiveEquipSkill(1);
            return(usersPetinfo);
        }
Ejemplo n.º 8
0
 private static bool LoadPetMgr(Dictionary <string, PetConfig> Config, Dictionary <int, PetLevel> Level, Dictionary <int, PetSkillElementInfo> SkillElement, Dictionary <int, PetSkillInfo> Skill, Dictionary <int, PetSkillTemplateInfo> SkillTemplate, Dictionary <int, PetTemplateInfo> TemplateId)
 {
     using (PlayerBussiness playerBussiness = new PlayerBussiness())
     {
         PetConfig[]            allPetConfig            = playerBussiness.GetAllPetConfig();
         PetLevel[]             allPetLevel             = playerBussiness.GetAllPetLevel();
         PetSkillElementInfo[]  allPetSkillElementInfo  = playerBussiness.GetAllPetSkillElementInfo();
         PetSkillInfo[]         allPetSkillInfo         = playerBussiness.GetAllPetSkillInfo();
         PetSkillTemplateInfo[] allPetSkillTemplateInfo = playerBussiness.GetAllPetSkillTemplateInfo();
         PetTemplateInfo[]      allPetTemplateInfo      = playerBussiness.GetAllPetTemplateInfo();
         PetConfig[]            array = allPetConfig;
         for (int i = 0; i < array.Length; i++)
         {
             PetConfig petConfig = array[i];
             if (!Config.ContainsKey(petConfig.Name))
             {
                 Config.Add(petConfig.Name, petConfig);
             }
         }
         PetLevel[] array2 = allPetLevel;
         for (int j = 0; j < array2.Length; j++)
         {
             PetLevel petLevel = array2[j];
             if (!Level.ContainsKey(petLevel.Level))
             {
                 Level.Add(petLevel.Level, petLevel);
             }
         }
         PetSkillElementInfo[] array3 = allPetSkillElementInfo;
         for (int k = 0; k < array3.Length; k++)
         {
             PetSkillElementInfo petSkillElementInfo = array3[k];
             if (!SkillElement.ContainsKey(petSkillElementInfo.ID))
             {
                 SkillElement.Add(petSkillElementInfo.ID, petSkillElementInfo);
             }
         }
         PetSkillTemplateInfo[] array4 = allPetSkillTemplateInfo;
         for (int l = 0; l < array4.Length; l++)
         {
             PetSkillTemplateInfo petSkillTemplateInfo = array4[l];
             if (!SkillTemplate.ContainsKey(petSkillTemplateInfo.ID))
             {
                 SkillTemplate.Add(petSkillTemplateInfo.ID, petSkillTemplateInfo);
             }
         }
         PetTemplateInfo[] array5 = allPetTemplateInfo;
         for (int m = 0; m < array5.Length; m++)
         {
             PetTemplateInfo petTemplateInfo = array5[m];
             if (!TemplateId.ContainsKey(petTemplateInfo.ID))
             {
                 TemplateId.Add(petTemplateInfo.ID, petTemplateInfo);
             }
         }
         PetSkillInfo[] array6 = allPetSkillInfo;
         for (int n = 0; n < array6.Length; n++)
         {
             PetSkillInfo petSkillInfo = array6[n];
             if (!Skill.ContainsKey(petSkillInfo.ID))
             {
                 Skill.Add(petSkillInfo.ID, petSkillInfo);
             }
         }
     }
     return(true);
 }
Ejemplo n.º 9
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            byte   b    = packet.ReadByte();
            string text = "Xu không đủ!";
            int    num  = 1;

            switch (b)
            {
            case 1:
                this.UpdatePetHandle(client, packet.ReadInt());
                break;

            case 2:
            {
                Console.WriteLine("//ADD_PET ");
                int place = packet.ReadInt();
                num = packet.ReadInt();
                int iD   = client.Player.PlayerCharacter.ID;
                int num2 = client.Player.PetBag.FindFirstEmptySlot();
                if (num2 == -1)
                {
                    client.Player.SendMessage("Số lượng pet đã đạt giới hạn!");
                }
                else
                {
                    ItemInfo        itemAt          = client.Player.GetItemAt((eBageType)num, place);
                    PetTemplateInfo petTemplateInfo = PetMgr.FindPetTemplate(itemAt.Template.Property5);
                    UsersPetinfo    usersPetinfo    = PetMgr.CreatePet(petTemplateInfo, iD, num2);
                    using (PlayerBussiness playerBussiness = new PlayerBussiness())
                    {
                        usersPetinfo.IsExit = false;
                        playerBussiness.AddUserAdoptPet(usersPetinfo, true);
                    }
                    usersPetinfo.IsExit = true;
                    PlayerInventory inventory = client.Player.GetInventory((eBageType)num);
                    if (inventory.RemoveCountFromStack(itemAt, 1))
                    {
                        client.Player.PetBag.AddPetTo(usersPetinfo, num2);
                        client.Player.SendMessage("Bạn nhận được 1 " + petTemplateInfo.Name);
                    }
                    client.Player.SaveIntoDatabase();
                }
                break;
            }

            case 3:
            {
                int num3 = packet.ReadInt();
                break;
            }

            case 4:
            {
                int place = packet.ReadInt();
                num = packet.ReadInt();
                int      num3    = packet.ReadInt();
                bool     flag    = false;
                ItemInfo itemAt2 = client.Player.GetItemAt((eBageType)num, place);
                if (itemAt2 == null)
                {
                    client.Player.SendMessage("Vật phẩm lạ không tìm thấy!!! Hack chăng???!!!");
                    return(0);
                }
                int          num4      = Convert.ToInt32(PetMgr.FindConfig("MaxHunger").Value);
                int          num5      = Convert.ToInt32(PetMgr.FindConfig("MaxLevel").Value);
                UsersPetinfo petAt     = client.Player.PetBag.GetPetAt(num3);
                int          num6      = itemAt2.Count;
                int          property  = itemAt2.Template.Property2;
                int          property2 = itemAt2.Template.Property3;
                int          num7      = num6 * property2;
                int          num8      = num7 + petAt.Hunger;
                int          num9      = num6 * property;
                text = "";
                if (itemAt2.TemplateID == 334100)
                {
                    num9 = itemAt2.DefendCompose;
                }
                if (petAt.Level > 11 && itemAt2.TemplateID == 334100)
                {
                    text = "Pet level 10 trở xuống mới dùng đuợc " + itemAt2.Template.Name;
                }
                else
                {
                    if (petAt.Level < num5)
                    {
                        num9 += petAt.GP;
                        int level  = petAt.Level;
                        int level2 = PetMgr.GetLevel(num9);
                        int gP     = PetMgr.GetGP(level2 + 1);
                        int gP2    = PetMgr.GetGP(num5);
                        int num10  = num9;
                        if (num9 > gP2)
                        {
                            num9 -= gP2;
                            if (num9 >= property && property != 0)
                            {
                                num6 = num9 / property;
                            }
                        }
                        petAt.GP     = ((num10 >= gP2) ? gP2 : num10);
                        petAt.Level  = level2;
                        petAt.MaxGP  = ((gP == 0) ? gP2 : gP);
                        petAt.Hunger = ((num8 > num4) ? num4 : num8);
                        flag         = client.Player.PetBag.UpGracePet(petAt, num3, true, level, level2, ref text);
                        if (itemAt2.TemplateID == 334100)
                        {
                            client.Player.StoreBag.RemoveItem(itemAt2);
                        }
                        else
                        {
                            client.Player.StoreBag.RemoveCountFromStack(itemAt2, num6);
                            client.Player.OnUsingItem(itemAt2.TemplateID);
                        }
                    }
                    else
                    {
                        int hunger = petAt.Hunger;
                        int num11  = num4 - hunger;
                        if (num8 >= num4 && num8 >= property2)
                        {
                            num6 = num8 / property2;
                        }
                        num8         = hunger + num11;
                        petAt.Hunger = num8;
                        if (hunger < num4)
                        {
                            client.Player.StoreBag.RemoveCountFromStack(itemAt2, num6);
                            flag = client.Player.PetBag.UpGracePet(petAt, num3, false, 0, 0, ref text);
                            text = "Ðộ vui vẻ tang thêm " + num11;
                        }
                        else
                        {
                            text = "Ðộ vui vui đã đạt mức tối da";
                        }
                    }
                }
                if (flag)
                {
                    UsersPetinfo[] pets = client.Player.PetBag.GetPets();
                    client.Player.Out.SendUpdatePetInfo(client.Player.PlayerCharacter, pets);
                }
                if (!string.IsNullOrEmpty(text))
                {
                    client.Player.SendMessage(text);
                }
                break;
            }

            case 5:
            {
                bool refreshBtn = packet.ReadBoolean();
                this.RefreshPetHandle(client, refreshBtn, text);
                break;
            }

            case 6:
            {
                int num3  = packet.ReadInt();
                int num12 = client.Player.PetBag.FindFirstEmptySlot();
                if (num12 == -1)
                {
                    client.Player.Out.SendRefreshPet(client.Player, client.Player.PetBag.GetAdoptPet(), null, false);
                    client.Player.SendMessage("Số lượng pet đã đạt giới hạn!");
                }
                else
                {
                    UsersPetinfo adoptPetAt = client.Player.PetBag.GetAdoptPetAt(num3);
                    if (client.Player.PetBag.AddPetTo(adoptPetAt, num12))
                    {
                        client.Player.PetBag.RemoveAdoptPet(adoptPetAt);
                        client.Player.OnAdoptPetEvent();
                    }
                }
                break;
            }

            case 7:
            {
                int num3      = packet.ReadInt();
                int killId    = packet.ReadInt();
                int killindex = packet.ReadInt();
                if (client.Player.PetBag.EquipSkillPet(num3, killId, killindex))
                {
                    UsersPetinfo[] pets = client.Player.PetBag.GetPets();
                    client.Player.Out.SendUpdatePetInfo(client.Player.PlayerCharacter, pets);
                }
                else
                {
                    client.Player.SendMessage("Skill này đã trang bị!");
                }
                break;
            }

            case 8:
            {
                int          num3   = packet.ReadInt();
                UsersPetinfo petAt2 = client.Player.PetBag.GetPetAt(num3);
                if (client.Player.PetBag.RemovePet(petAt2))
                {
                    using (PlayerBussiness playerBussiness2 = new PlayerBussiness())
                    {
                        playerBussiness2.UpdateUserAdoptPet(petAt2.ID);
                    }
                }
                client.Player.SendMessage("Thả pet thành công!");
                break;
            }

            case 9:
            {
                int    num3  = packet.ReadInt();
                string name  = packet.ReadString();
                int    num13 = Convert.ToInt32(PetMgr.FindConfig("ChangeNameCost").Value);
                if (client.Player.PlayerCharacter.Money >= num13)
                {
                    if (client.Player.PetBag.RenamePet(num3, name))
                    {
                        UsersPetinfo[] pets = client.Player.PetBag.GetPets();
                        client.Out.SendUpdatePetInfo(client.Player.PlayerCharacter, pets);
                        text = "Đổi tên thành công!";
                    }
                    client.Player.RemoveMoney(num13);
                }
                client.Player.SendMessage(text);
                break;
            }

            case 16:
            {
                Console.WriteLine("//PAY_SKILL ");
                int num3 = packet.ReadInt();
                break;
            }

            case 17:
            {
                int  num3    = packet.ReadInt();
                bool isEquip = packet.ReadBoolean();
                if (client.Player.PetBag.SetIsEquip(num3, isEquip))
                {
                    UsersPetinfo[] pets = client.Player.PetBag.GetPets();
                    client.Player.MainBag.UpdatePlayerProperties();
                    client.Player.Out.SendUpdatePetInfo(client.Player.PlayerCharacter, pets);
                }
                break;
            }

            case 18:
            {
                int num3 = packet.ReadInt();
                this.RevertPetHandle(client, num3, text);
                break;
            }

            case 19:
            {
                Console.WriteLine("//BUY_PET_EXP_ITEM ");
                bool         buyPetExpItem         = packet.ReadBoolean();
                int          GoodsID               = packet.ReadInt();
                int          count                 = 20 * 80;
                ShopItemInfo shopItem              = ShopMgr.GetShopItemInfoById(GoodsID);
                SqlDataProvider.Data.ItemInfo item = SqlDataProvider.Data.ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(334103), 20, 0x66);
                client.Player.RemoveMoney(count);
                client.Player.AddItem(item);
                text = "Mua thức ăn thành công.";
                client.Player.SendMessage(text);
                break;
            }
            }
            client.Player.PetBag.SaveToDatabase();
            return(0);
        }