예제 #1
0
        public override bool TakeAction()
        {
            var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(debrisId);

            if (itemcfg == null || itemcfg.ItemType != ItemType.Debris)
            {
                return(false);
            }

            ItemData gemData    = GetPackage.FindItem(debrisId);
            int      needNumber = ConfigEnvSet.GetInt("Elf.CompoundCardNeedNumber");

            if (gemData == null || gemData.Num < needNumber)
            {
                return(false);
            }


            GetPackage.RemoveItem(debrisId, needNumber);
            //GetPackage.AddItem(gemcfg.GemID, 1);
            UserHelper.RewardsItem(Current.UserId, itemcfg.ResourceNum.ToInt(), 1);

            receipt = true;
            return(true);
        }
        public static async Task <GrpcPackage> GetPackageById(GrpcString grpcRequest)
        {
            try
            {
                var id      = GrpcStringAdapter.GetFrom(grpcRequest);
                var package = await GetPackage.Execute(id);

                return(PackagePresenter.PresentePackage(package));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
예제 #3
0
        public override bool TakeAction()
        {
            receipt = UsedItemResult.Successfully;

            var itemconfig = new ShareCacheStruct <Config_Item>().FindKey(itemId);

            if (itemconfig == null)
            {
                new BaseLog().SaveLog(string.Format("No found item config. ID={0}", itemId));
                return(false);
            }

            var itemdata = GetPackage.FindItem(itemId);

            if (itemdata == null)
            {
                receipt = UsedItemResult.NoItem;
                return(true);
            }
            if (itemdata.Num < useNum)
            {
                receipt = UsedItemResult.ItemNumError;
                return(true);
            }

            BigInteger sellgold = BigInteger.Parse(itemconfig.SellGold);

            if (sellgold == 0)
            {
                receipt = UsedItemResult.Unavailable;
                return(true);
            }


            BigInteger resourceNum = BigInteger.Parse(itemconfig.SellGold);

            UserHelper.RewardsGold(Current.UserId, resourceNum * useNum, UpdateCoinOperate.UserItemReward);
            //receipt.GainGold = resourceNum;

            GetPackage.RemoveItem(itemId, useNum);
            return(true);
        }
예제 #4
0
        public override bool TakeAction()
        {
            ItemData gemData = GetPackage.FindItem(gemID);

            if (gemData == null)
            {
                receipt = UsedItemResult.NoItem;
                return(true);
            }

            var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(gemID);
            var gemcfg  = new ShareCacheStruct <Config_Gem>().Find(t => (t.ItemID == gemID));

            if (itemcfg == null || gemcfg == null || itemcfg.ItemType != ItemType.Gem)
            {
                return(false);
            }
            var nextItemcfg = new ShareCacheStruct <Config_Item>().Find(t => (
                                                                            t.ItemType == ItemType.Gem && t.Species == itemcfg.Species && (t.ItemGrade == itemcfg.ItemGrade + 1))
                                                                        );

            if (nextItemcfg == null)
            {
                return(false);
            }
            int compoundNum = gemData.Num / gemcfg.Number;
            int needNum     = compoundNum * gemcfg.Number;

            if (gemData.Num < needNum)
            {
                receipt = UsedItemResult.ItemNumError;
                return(true);
            }

            UserHelper.RewardsItem(Current.UserId, nextItemcfg.ItemID, compoundNum);
            receipt = UsedItemResult.Successfully;

            GetPackage.RemoveItem(gemID, needNum);

            return(true);
        }
예제 #5
0
        public override bool TakeAction()
        {
            ItemData gemData = GetPackage.FindItem(gemID);

            if (gemData == null)
            {
                receipt = UsedItemResult.NoItem;
                return(true);
            }
            if (gemData.Num < gemNum)
            {
                receipt = UsedItemResult.ItemNumError;
                return(true);
            }

            var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(gemID);
            var gemcfg  = new ShareCacheStruct <Config_Gem>().Find(t => (t.ItemID == gemID));

            if (itemcfg == null || gemcfg == null || itemcfg.ItemType != ItemType.Gem)
            {
                return(false);
            }

            float fprob = gemNum.ToFloat() / gemcfg.Number;

            if (random.Next(1000) <= fprob * 1000)
            {
                //GetPackage.AddItem(gemcfg.GemID, 1);
                UserHelper.RewardsItem(Current.UserId, gemcfg.GemID, 1);
                receipt = UsedItemResult.Successfully;
            }
            else
            {
                receipt = UsedItemResult.GemFailed;
            }
            GetPackage.RemoveItem(gemID, gemNum);

            return(true);
        }
예제 #6
0
        public override bool TakeAction()
        {
            EquipData equip = GetEquips.FindEquipData(equipID);

            GetPackage.AddItem(equip.AtkGem, 1);
            GetPackage.AddItem(equip.DefGem, 1);
            GetPackage.AddItem(equip.HpGem, 1);
            GetPackage.AddItem(equip.CritGem, 1);
            GetPackage.AddItem(equip.HitGem, 1);
            GetPackage.AddItem(equip.DodgeGem, 1);
            GetPackage.AddItem(equip.TenacityGem, 1);
            equip.AtkGem      = 0;
            equip.DefGem      = 0;
            equip.HpGem       = 0;
            equip.CritGem     = 0;
            equip.HitGem      = 0;
            equip.DodgeGem    = 0;
            equip.TenacityGem = 0;

            UserHelper.RefreshUserFightValue(Current.UserId);
            receipt = true;
            return(true);
        }
예제 #7
0
        public override bool TakeAction()
        {
            EquipData equip = GetEquips.FindEquipData(equipID);


            switch (gemType)
            {
            case GemType.Attack:
            {
                if (equip.AtkGem != 0)
                {
                    GetPackage.AddItem(equip.AtkGem, 1);
                    equip.AtkGem = 0;
                }
            }
            break;

            case GemType.Defense:
            {
                if (equip.DefGem != 0)
                {
                    GetPackage.AddItem(equip.DefGem, 1);
                    equip.DefGem = 0;
                }
            }
            break;

            case GemType.Hp:
            {
                if (equip.HpGem != 0)
                {
                    GetPackage.AddItem(equip.HpGem, 1);
                    equip.HpGem = 0;
                }
            }
            break;

            case GemType.Crit:
            {
                if (equip.CritGem != 0)
                {
                    GetPackage.AddItem(equip.CritGem, 1);
                    equip.CritGem = 0;
                }
            }
            break;

            case GemType.Hit:
            {
                if (equip.HitGem != 0)
                {
                    GetPackage.AddItem(equip.HitGem, 1);
                    equip.HitGem = 0;
                }
            }
            break;

            case GemType.Dodge:
            {
                if (equip.DodgeGem != 0)
                {
                    GetPackage.AddItem(equip.DodgeGem, 1);
                    equip.DodgeGem = 0;
                }
            }
            break;

            case GemType.Tenacity:
            {
                if (equip.TenacityGem != 0)
                {
                    GetPackage.AddItem(equip.TenacityGem, 1);
                    equip.TenacityGem = 0;
                }
            }
            break;
            }
            UserHelper.RefreshUserFightValue(Current.UserId);
            receipt = true;
            return(true);
        }
예제 #8
0
        public override bool TakeAction()
        {
            EquipData equip = GetEquips.FindEquipData(equipID);

            List <int> gemList = new List <int>();

            if (atkGem != 0)
            {
                gemList.Add(atkGem);
            }
            if (defGem != 0)
            {
                gemList.Add(defGem);
            }
            if (hpGem != 0)
            {
                gemList.Add(hpGem);
            }
            if (critGem != 0)
            {
                gemList.Add(critGem);
            }
            if (hitGem != 0)
            {
                gemList.Add(hitGem);
            }
            if (dodgeGem != 0)
            {
                gemList.Add(dodgeGem);
            }
            if (tenacityGem != 0)
            {
                gemList.Add(tenacityGem);
            }
            foreach (var v in gemList)
            {
                if (GetPackage.FindItem(v) == null)
                {
                    receipt = UsedItemResult.NoItem;
                    return(true);
                }
            }
            foreach (var v in gemList)
            {
                var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(v);
                if (itemcfg.ItemType != ItemType.Gem)
                {
                    return(false);
                }


                switch ((GemType)itemcfg.Species)
                {
                case GemType.Attack:
                {
                    if (equip.AtkGem != 0)
                    {
                        return(false);
                    }
                    equip.AtkGem = v;
                }
                break;

                case GemType.Defense:
                {
                    if (equip.DefGem != 0)
                    {
                        return(false);
                    }
                    equip.DefGem = v;
                }
                break;

                case GemType.Hp:
                {
                    if (equip.HpGem != 0)
                    {
                        return(false);
                    }
                    equip.HpGem = v;
                }
                break;

                case GemType.Crit:
                {
                    if (equip.CritGem != 0)
                    {
                        return(false);
                    }
                    equip.CritGem = v;
                }
                break;

                case GemType.Hit:
                {
                    if (equip.HitGem != 0)
                    {
                        return(false);
                    }
                    equip.HitGem = v;
                }
                break;

                case GemType.Dodge:
                {
                    if (equip.DodgeGem != 0)
                    {
                        return(false);
                    }
                    equip.DodgeGem = v;
                }
                break;

                case GemType.Tenacity:
                {
                    if (equip.TenacityGem != 0)
                    {
                        return(false);
                    }
                    equip.TenacityGem = v;
                }
                break;
                }



                GetPackage.RemoveItem(v, 1);
            }
            UserHelper.RefreshUserFightValue(Current.UserId);


            receipt = UsedItemResult.Successfully;
            return(true);
        }
예제 #9
0
        public override bool TakeAction()
        {
            if (GetPackage.FindItem(gemID) == null)
            {
                receipt = UsedItemResult.NoItem;
                return(true);
            }
            var itemcfg = new ShareCacheStruct <Config_Item>().FindKey(gemID);

            if (itemcfg.ItemType != ItemType.Gem)
            {
                return(false);
            }
            EquipData equip = GetEquips.FindEquipData(equipID);


            switch ((GemType)itemcfg.Species)
            {
            case GemType.Attack:
            {
                if (equip.AtkGem != 0)
                {
                    return(false);
                }
                equip.AtkGem = gemID;
            }
            break;

            case GemType.Defense:
            {
                if (equip.DefGem != 0)
                {
                    return(false);
                }
                equip.DefGem = gemID;
            }
            break;

            case GemType.Hp:
            {
                if (equip.HpGem != 0)
                {
                    return(false);
                }
                equip.HpGem = gemID;
            }
            break;

            case GemType.Crit:
            {
                if (equip.CritGem != 0)
                {
                    return(false);
                }
                equip.CritGem = gemID;
            }
            break;

            case GemType.Hit:
            {
                if (equip.HitGem != 0)
                {
                    return(false);
                }
                equip.HitGem = gemID;
            }
            break;

            case GemType.Dodge:
            {
                if (equip.DodgeGem != 0)
                {
                    return(false);
                }
                equip.DodgeGem = gemID;
            }
            break;

            case GemType.Tenacity:
            {
                if (equip.TenacityGem != 0)
                {
                    return(false);
                }
                equip.TenacityGem = gemID;
            }
            break;
            }
            GetPackage.RemoveItem(gemID, 1);

            UserHelper.RefreshUserFightValue(Current.UserId);


            receipt = UsedItemResult.Successfully;
            return(true);
        }
예제 #10
0
        public override bool TakeAction()
        {
            receipt = new SendTransferItemReceipt();
            if (GetTransfer.SendCount >= 3)
            {
                receipt.Result = TransferItemResult.SendCountOut;
                return(true);
            }

            var itemdata = GetPackage.FindItem(itemId);

            if (itemdata == null || itemdata.Num < itemNum)
            {
                return(false);
            }
            var dest = UserHelper.FindUserBasis(destId);

            if (dest == null)
            {
                return(false);
            }
            var destTransfer = UserHelper.FindUserTransfer(destId);

            string newId = Guid.NewGuid().ToString("N");
            ReceiveTransferItemData receiveData = new ReceiveTransferItemData()
            {
                ID               = newId,
                Sender           = Current.UserId,
                SenderName       = GetBasis.NickName,
                SenderProfession = GetBasis.Profession,
                SenderAvatar     = GetBasis.AvatarUrl,
                Date             = DateTime.Now,
                IsReceived       = false,
            };

            receiveData.AppendItem.ID  = itemId;
            receiveData.AppendItem.Num = itemNum;

            receipt.Data = new SendTransferItemData()
            {
                ID                 = newId,
                Receiver           = dest.UserID,
                ReceiverName       = dest.NickName,
                ReceiverProfession = dest.Profession,
                ReceiverAvatar     = dest.AvatarUrl,
                Date               = DateTime.Now,
                IsReceived         = false,
            };
            receipt.Data.Password       = Util.GetRandom4Pwd();
            receipt.Data.AppendItem.ID  = itemId;
            receipt.Data.AppendItem.Num = itemNum;

            GetPackage.RemoveItem(itemId, itemNum);

            destTransfer.ReceiveList.Add(receiveData);
            PushMessageHelper.NewReceiveTransferItemNotification(GameSession.Get(destId), newId);

            GetTransfer.SendList.Add(receipt.Data);

            GetTransfer.SendCount++;
            receipt.Result = TransferItemResult.Successfully;
            return(true);
        }
예제 #11
0
        public override bool TakeAction()
        {
            receipt = UsedItemResult.Successfully;

            var itemconfig = new ShareCacheStruct <Config_Item>().FindKey(itemId);

            if (itemconfig == null)
            {
                new BaseLog().SaveLog(string.Format("No found item config. ID={0}", itemId));
                return(false);
            }

            var itemdata = GetPackage.FindItem(itemId);

            if (itemdata == null)
            {
                receipt = UsedItemResult.NoItem;
                return(true);
            }
            if (itemdata.Num < useNum)
            {
                receipt = UsedItemResult.ItemNumError;
                return(true);
            }

            switch (itemconfig.ResourceType)
            {
            case ResourceType.Gold:
            {
                BigInteger resourceNum = BigInteger.Parse(itemconfig.ResourceNum);
                BigInteger value       = Math.Ceiling(GetBasis.UserLv / 50.0).ToInt() * resourceNum;
                UserHelper.RewardsGold(Current.UserId, value * useNum, UpdateCoinOperate.UserItemReward);
                //receipt.GainGold = resourceNum;
            }
            break;

            case ResourceType.Diamond:
            {
                UserHelper.RewardsDiamond(Current.UserId, itemconfig.ResourceNum.ToInt() * useNum, UpdateCoinOperate.UseItem);
                //receipt.GainDiamond = resourceNum * useNum;
            }
            break;

            case ResourceType.Gift:
            {
                var giftconfig = new ShareCacheStruct <Config_Giftbag>().Find(t => t.ItemID == itemconfig.ItemID);
                if (giftconfig == null)
                {
                    new BaseLog().SaveLog(string.Format("No found gift config. ID={0}", itemconfig.ItemID));
                    return(false);
                }

                //receipt.GainItem = giftconfig.GetRewardsItem();
                var list = giftconfig.GetRewardsItem();
                foreach (var v in list)
                {
                    v.Num *= useNum;
                }
                UserHelper.RewardsItems(Current.UserId, list);
            }
            break;

            case ResourceType.Elf:
            {
                var elfconfig = new ShareCacheStruct <Config_Elves>().Find(t => t.ElvesID == itemconfig.ResourceNum.ToInt());
                if (elfconfig == null)
                {
                    new BaseLog().SaveLog(string.Format("No found elf config. ID={0}", itemconfig.ResourceNum));
                    return(false);
                }

                if (itemconfig.ItemType == ItemType.Elf)
                {
                    UserHelper.RewardsElf(Current.UserId, elfconfig.ElvesID);
                }
                else if (itemconfig.ItemType == ItemType.ElfExperienceCard)
                {
                    long experienceTimeMin = itemconfig.ItemGrade * 60 * 24;

                    UserHelper.RewardsElf(Current.UserId, elfconfig.ElvesID, true, experienceTimeMin);
                }
            }
            break;

            case ResourceType.Vit:
            {
                UserHelper.RewardsVit(Current.UserId, itemconfig.ResourceNum.ToInt() * useNum);
                //receipt.GainDiamond = resourceNum * useNum;
            }
            break;

            default:
            {
                receipt = UsedItemResult.Cannot;
                return(true);
            }
            }

            GetPackage.RemoveItem(itemId, useNum);
            return(true);
        }