コード例 #1
0
 public override void BuildPacket()
 {
     PushIntoStack(_pageCount);
     PushIntoStack(ContextUser.GameCoin);
     PushIntoStack(ContextUser.GoldNum);
     PushIntoStack(_mallItemsInfoArray.Count);
     foreach (MallItemsInfo mallItems in _mallItemsInfoArray)
     {
         ItemBaseInfo itemInfo    = new ConfigCacheSet <ItemBaseInfo>().FindKey(mallItems.ItemID);
         int          mallPrice   = 0;
         int          specilPrice = 0;
         if (itemInfo != null)
         {
             mallPrice = mallItems.Price;
             if (mallItems.MallType == ShopType.Props || mallItems.MallType == ShopType.PresendBox)
             {
                 mallPrice = (FestivalHelper.StoreDiscount() * mallPrice).ToInt();
             }
             specilPrice = mallItems.SpecialPrice;
         }
         DataStruct dsItem = new DataStruct();
         dsItem.PushIntoStack(mallItems.ItemID);
         dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
         dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
         dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.MaxHeadID.ToNotNullString());
         dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemDesc.ToNotNullString());
         dsItem.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : (short)itemInfo.QualityType);
         dsItem.PushIntoStack(mallPrice);
         dsItem.PushIntoStack(specilPrice);
         dsItem.PushIntoStack(mallItems.SeqNO);
         dsItem.PushIntoStack((short)_commandType);
         PushIntoStack(dsItem);
     }
     PushIntoStack(ContextUser.ObtainNum);
 }
コード例 #2
0
ファイル: Action10003.cs プロジェクト: zxx0367/Scut-samples
        public override bool TakeAction()
        {
            PlantType        pType            = (PlantType)Enum.Parse(typeof(PlantType), plantType.ToString());
            UserPlantQuality userPlantQuality = new GameDataCacheSet <UserPlantQuality>().FindKey(ContextUser.UserID, generalID, pType);

            if (userPlantQuality != null)
            {
                plantQualityType = (short)userPlantQuality.PlantQuality;
            }
            else
            {
                UserPlantQuality plant = new UserPlantQuality()
                {
                    UserID       = ContextUser.UserID,
                    GeneralID    = generalID,
                    PlantQuality = PlantQualityType.PuTong,
                    PlantType    = pType,
                    RefreshNum   = 0,
                    RefreshDate  = DateTime.Now,
                };
                new GameDataCacheSet <UserPlantQuality>().Add(plant);
                plantQualityType = 1;
            }
            PlantQualityType qualityType = (PlantQualityType)Enum.Parse(typeof(PlantQualityType), plantQualityType.ToString());
            short            generalLv   = 0;

            userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, generalID);
            if (userGeneral == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (pType == PlantType.Experience)
            {
                generalLv = ContextUser.UserLv;
            }
            else if (pType == PlantType.GameGoin)
            {
                generalLv = userGeneral.GeneralLv;
            }
            plantInfo = new ConfigCacheSet <PlantInfo>().FindKey(generalLv, plantType, qualityType);
            double addNum = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.ManorAddition);//活动加成

            rewardNum = plantInfo.GainNum;
            UserLand land = new GameDataCacheSet <UserLand>().FindKey(ContextUser.UserID, landPostion);

            if (land != null && land.IsRedLand == 1)
            {
                rewardNum = MathUtils.Addition(rewardNum, (int)(rewardNum * 0.2), int.MaxValue);
            }
            if (land != null && land.IsBlackLand == 1)
            {
                rewardNum = MathUtils.Addition(rewardNum, (int)(rewardNum * 0.4), int.MaxValue);
            }
            rewardNum = (rewardNum * addNum).ToInt();
            return(true);
        }
コード例 #3
0
ファイル: Action1008.cs プロジェクト: dongliang/Scut
        public override bool TakeAction()
        {
            short currMaxLv = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort();

            //NoviceHelper.CheckFestival(ContextUser);

            NoviceHelper.GetFunctionEnum(Uid); //默认开启金币,精力大作战功能
            if (!string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID);
            }
            PaymentService.Trigger(ContextUser);
            if (ContextUser.UserLv > currMaxLv)
            {
                genlv = currMaxLv;
            }
            else
            {
                genlv = ContextUser.UserLv;
            }
            var cacheSetGeneralEscalate = new ConfigCacheSet <GeneralEscalateInfo>();

            GeneralEscalateHelper.AddUserLv(ContextUser, 0);
            _honourNum = ContextUser.HonourNum;
            int lv = ContextUser.UserLv;

            lv = lv < 0 ? 1 : lv + 1;
            var generalEscalate =
                cacheSetGeneralEscalate.Find(s => s.GeneralType == GeneralType.YongHu && s.GeneralLv == lv);

            if (generalEscalate != null)
            {
                _nextHonourNum = generalEscalate.UpExperience;
            }
            guildID = ContextUser.MercenariesID;
            var userGeneralList = new GameDataCacheSet <UserGeneral>().FindAll(ContextUser.UserID);

            if (userGeneralList.Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }

            userGeneralInfo = userGeneralList[0]; //UserGeneral.GetMainGeneral(ContextUser.UserID);
            if (userGeneralInfo != null)
            {
                //wuzf 去掉刷新血量,其它改变血量接口有触发刷新
                //userGeneralInfo.RefreshMaxLife();
                generalID = userGeneralInfo.GeneralID;
                //careerInfo = new ConfigCacheSet<CareerInfo>().FindKey(userGeneralInfo.CareerID);
                headID       = userGeneralInfo.HeadID; //ContextUser.Sex ? careerInfo.HeadID2 : careerInfo.HeadID;
                escalateInfo = new ConfigCacheSet <GeneralEscalateInfo>().FindKey(genlv);
                lifeNum      = userGeneralInfo.LifeNum;
                careerID     = userGeneralInfo.CareerID;
            }
            lifeMaxNum   = UserHelper.GetMaxLife(ContextUser.UserID, generalID);
            maxEnergyNum = (short)ConfigEnvSet.GetInt("User.MaxEnergyNum");
            sex          = ContextUser.Sex ? 1 : 0;

            //道具图标
            _blessingList = UserHelper.BlessingInfoList(ContextUser);
            //变身卡图标
            List <UserProps> userPropsList = new GameDataCacheSet <UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 3 && u.ItemID != 5200 && u.ItemID != 7003);

            if (userPropsList.Count > 0)
            {
                UserProps    props    = userPropsList[0];
                int          pTime    = props.DoRefresh();
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(props.ItemID);
                if (itemInfo != null && pTime > pictureTime)
                {
                    pictureID   = itemInfo.PictrueID;
                    pictureTime = pTime;
                }
            }
            //兼容客户端上已版本血量图标
            List <UserProps> userPropsList2 = new GameDataCacheSet <UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 1);

            if (userPropsList2.Count > 0)
            {
                UserProps    props    = userPropsList2[0];
                int          pTime    = props.DoRefresh();
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(props.ItemID);
                if (itemInfo != null && pTime > pictureTime)
                {
                    _itemLiveNum    = props.SurplusNum;
                    _itemLiveMaxNum = itemInfo.EffectNum;
                }
            }


            //加量,领土战不能加血wuzf)
            if (ContextUser.UserStatus != UserStatus.CountryCombat)
            {
                UserHelper.GetGeneralLife(ContextUser.UserID);
            }



            //精力恢复
            List <UserQueue> energyQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.EnergyHuiFu);

            if (energyQueueArray.Count > 0)
            {
                UserQueue energyQueue     = energyQueueArray[0];
                short     energyMaxNum    = (short)ConfigEnvSet.GetInt("User.MaxEnergyNum");
                int       restorationDate = ConfigEnvSet.GetInt("UserQueue.EnergyRestorationDate"); //半小时
                int       restorationNum  = ConfigEnvSet.GetInt("UserQueue.EnergyRestorationNum");  //恢复5点

                if (energyQueue.Timing > DateTime.Now)
                {
                    energyQueue.Timing = DateTime.Now;
                }
                //原因:玩家满精力时,精力恢复累加
                int timeCount = (int)(DateTime.Now - energyQueue.Timing).TotalSeconds / restorationDate;
                if (timeCount > 0)
                {
                    short energyNum = (short)(timeCount * restorationNum);
                    if (ContextUser.EnergyNum < energyMaxNum)
                    {
                        ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, energyNum, energyMaxNum);
                    }
                    energyQueue.Timing = DateTime.Now;
                }
                else
                {
                    if (energyMaxNum > ContextUser.EnergyNum)
                    {
                        rstore      = (int)(energyQueue.Timing.AddSeconds(restorationDate) - DateTime.Now).TotalSeconds;
                        totalRstore =
                            (energyQueue.Timing.AddSeconds((energyMaxNum - ContextUser.EnergyNum) * restorationDate) -
                             DateTime.Now).TotalSeconds.ToInt();
                    }
                }
            }
            else
            {
                UserQueue queue = new UserQueue()
                {
                    QueueID       = Guid.NewGuid().ToString(),
                    UserID        = ContextUser.UserID,
                    QueueType     = QueueType.EnergyHuiFu,
                    QueueName     = QueueType.EnergyHuiFu.ToString(),
                    Timing        = DateTime.Now,
                    ColdTime      = 0,
                    TotalColdTime = 0,
                    IsSuspend     = false,
                    StrengNum     = 0
                };
                new GameDataCacheSet <UserQueue>().Add(queue, GameEnvironment.CacheUserPeriod);
            }


            VipLvInfo lvInfo = new ConfigCacheSet <VipLvInfo>().FindKey(MathUtils.Addition(ContextUser.VipLv, 1, int.MaxValue));

            if (lvInfo != null)
            {
                demandGold = MathUtils.Subtraction(lvInfo.PayGold, ContextUser.PayGold, 0);
                demandGold = MathUtils.Subtraction(demandGold, ContextUser.ExtGold, 0);
            }
            UserHelper.GetGameUserCombat(ContextUser.UserID);

            if ((int)(DateTime.Now - ContextUser.DailyLoginTime).TotalSeconds <= 5 && ContextUser.UserLv > 10)
            {
                isHelper = 1;
            }
            FestivalHelper.DoFestival(ContextUser);
            if (ContextUser.UserExtend != null)
            {
                if ((plotstatucID > 0 || ContextUser.TempEnergyNum == 0) && !ContextUser.UserExtend.IsBoss)
                {
                    ContextUser.TempEnergyNum = 1;
                }

                if ((plotstatucID == 0 && ContextUser.TempEnergyNum == 0) || ContextUser.UserExtend.IsBoss)
                {
                    ContextUser.UserExtend.UpdateNotify(obj =>
                    {
                        ContextUser.UserExtend.PlotStatusID = 0;
                        ContextUser.UserExtend.PlotNpcID    = -1;
                        ContextUser.UserExtend.MercenarySeq = 0;
                        ContextUser.UserExtend.IsBoss       = false;
                        return(true);
                    });
                }

                plotstatucID = ContextUser.UserExtend.PlotStatusID;
                mercenarySeq = ContextUser.UserExtend.MercenarySeq;
                cardUserID   = ContextUser.UserExtend.CardUserID;
            }

            //公会晨练结束,退出公会晨练
            int        activeID = 11;
            GameActive active   = new ShareCacheStruct <GameActive>().FindKey(activeID);

            if (active != null)
            {
                DateTime stratTime = active.BeginTime;
                DateTime endTime   = active.BeginTime.AddMinutes(active.Minutes);
                if (ContextUser.UserLocation == Location.GuildExercise && (DateTime.Now < stratTime || DateTime.Now > endTime))
                {
                    ContextUser.UserLocation = Location.Guid;
                }
            }
            DateTime   nextDate;
            FightStage stage = GuildFightCombat.GetStage(out nextDate);

            //公会战结束后
            if (stage == FightStage.Apply && ContextUser.UserStatus == UserStatus.FightCombat)
            {
                ContextUser.UserStatus = UserStatus.Normal;
            }
            battleNum   = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true).Count;
            totalBattle = EmbattleHelper.CurrEmbattle(ContextUser.UserID, false).Count;
            var userEmbattleList = EmbattleHelper.CurrEmbattle(ContextUser.UserID, true);

            foreach (var userEmbattle in userEmbattleList)
            {
                _talPriority = MathUtils.Addition(_talPriority, PriorityHelper.GeneralTotalPriority(ContextUser.UserID, userEmbattle.GeneralID));
            }
            functionList = new GameDataCacheSet <UserFunction>().FindAll(ContextUser.UserID);

            // 精灵祝福
            if (ContextUser != null)
            {
                if (MathUtils.SqlMinDate == ContextUser.WizardDate)  // 玩家第一次进入
                {
                    ContextUser.WizardDate = DateTime.Now;
                    ContextUser.WizardNum  = 1;
                }
                else
                {
                    double diffHours = (DateTime.Now - ContextUser.WizardDate).TotalHours;
                    if (diffHours >= 1)
                    {
                        ContextUser.WizardNum  = MathUtils.Addition(ContextUser.WizardNum, Convert.ToInt32(diffHours), 3);
                        ContextUser.WizardDate = DateTime.Now;
                    }
                }
            }

            // 未读信件的数量
            TjxMailService tjxMailService = new TjxMailService(ContextUser);

            tjxMailService.GetMail(out unReadCount);
            return(true);
        }
コード例 #4
0
 public override bool TakeAction()
 {
     minusNum = (decimal)FestivalHelper.TortoiseHare(ContextUser.UserID);
     petList  = new ShareCacheStruct <PetInfo>().FindAll();
     return(true);
 }
コード例 #5
0
ファイル: Action1010.cs プロジェクト: xushenghan/Scut-samples
        public override bool TakeAction()
        {
            int energyNum = ConfigEnvSet.GetInt("User.EnergyNum");

            UserHelper.ChechDailyRestrain(ContextUser.UserID);
            var               cacheSet     = new PersonalCacheStruct <UserDailyRestrain>();
            double            addNum       = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.PurchasedEnergy);//活动加成
            int               payNum       = FestivalHelper.SurplusEnergyNum(ContextUser.UserID);
            UserDailyRestrain userRestrain = cacheSet.FindKey(ContextUser.UserID);

            if (payNum == 0)
            {
                if (userRestrain != null && DateTime.Now.Date != userRestrain.RefreshDate.Date)
                {
                    userRestrain.Funtion4 = 0;
                }

                if (userRestrain != null && userRestrain.Funtion4 >= VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.GouMaiJingLi) && DateTime.Now.Date == userRestrain.RefreshDate.Date)
                {
                    this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                    this.ErrorInfo = LanguageManager.GetLang().St1010_JingliFull;
                    return(false);
                }
            }

            int useGold = (GetPayEnergyGold(ContextUser.UserID, ContextUser.VipLv, payType) * addNum).ToInt();

            if (payType == 1)
            {
                if (ops == 1)
                {
                    this.ErrorCode = 1;
                    this.ErrorInfo = string.Format(LanguageManager.GetLang().St1010_PayEnergyUseGold, useGold, energyNum);
                    return(false);
                }
                else if (ops == 2)
                {
                    if (ContextUser.GoldNum < useGold)
                    {
                        this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                        this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                        return(false);
                    }

                    ContextUser.UseGold   = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue);
                    ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, GetEnergyNum(ContextUser.UserID, ContextUser.VipLv, payType), short.MaxValue);
                    if (payNum == 0)
                    {
                        if (userRestrain != null)
                        {
                            userRestrain.Funtion4 = MathUtils.Addition(userRestrain.Funtion4, 1, int.MaxValue);
                        }
                        else
                        {
                            userRestrain             = new UserDailyRestrain();
                            userRestrain.UserID      = ContextUser.UserID;
                            userRestrain.RefreshDate = DateTime.Now;
                            userRestrain.Funtion4    = 1;
                            cacheSet.Add(userRestrain);
                        }
                    }

                    UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 1, 0, userRestrain.Funtion4, useGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, useGold, int.MaxValue));
                    FestivalHelper.PurchasedEnergy(ContextUser.UserID);
                }
            }
            else if (payType == 2)
            {
                short payEnergy = GetEnergyNum(ContextUser.UserID, ContextUser.VipLv, payType);
                if (!VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.ZiDongGouMaiJingLi))
                {
                    this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                    this.ErrorInfo = LanguageManager.GetLang().St_VipNotEnoughNotFuntion;
                    return(false);
                }
                if (ops == 1)
                {
                    this.ErrorCode = 1;
                    this.ErrorInfo = string.Format(LanguageManager.GetLang().St1010_PayEnergyUseGold, useGold, payEnergy);
                    return(false);
                }
                else if (ops == 2)
                {
                    if (ContextUser.GoldNum < useGold)
                    {
                        this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                        this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                        return(false);
                    }

                    ContextUser.UseGold   = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue);
                    ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, payEnergy, short.MaxValue);

                    if (userRestrain != null)
                    {
                        userRestrain.Funtion4 = MathUtils.Addition(userRestrain.Funtion4, 1, int.MaxValue);
                    }
                    else
                    {
                        userRestrain             = new UserDailyRestrain();
                        userRestrain.UserID      = ContextUser.UserID;
                        userRestrain.RefreshDate = DateTime.Now;
                        userRestrain.Funtion4    = 1;
                        cacheSet.Add(userRestrain);
                    }

                    UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 1, userRestrain.Funtion4, 1, useGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, useGold, int.MaxValue));
                }
            }
            return(true);
        }
コード例 #6
0
ファイル: Action1010.cs プロジェクト: xushenghan/Scut-samples
        public static int GetPayEnergyGold(string userID, int vipLv, int payType)
        {
            int payNum  = FestivalHelper.SurplusEnergyNum(userID);
            int currNum = 0;
            int maxNum  = 0;

            if (payNum == 0)
            {
                UserDailyRestrain dailyRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(userID);
                maxNum = VipHelper.GetVipUseNum(vipLv, RestrainType.GouMaiJingLi);

                if (DateTime.Now.Date == dailyRestrain.RefreshDate.Date)
                {
                    currNum = dailyRestrain.Funtion4;
                }
                else
                {
                    currNum = 0;
                }
            }
            int useGold = 0;

            if (payType == 1)
            {
                if (currNum == 0)
                {
                    useGold = 20;
                }
                else if (currNum > 0 && currNum <= 5)
                {
                    useGold = 20;
                }
                else if (currNum > 5 && currNum <= 20)
                {
                    useGold = 80;
                }
                else if (currNum > 20 && currNum <= 45)
                {
                    useGold = 200;
                }
                else if (currNum > 45 && currNum <= 80)
                {
                    useGold = 400;
                }
            }
            else if (payType == 2)
            {
                for (int i = currNum; i < maxNum; i++)
                {
                    if (currNum == 1)
                    {
                        useGold = 20;
                    }
                    else if (currNum > 1 && currNum <= 5)
                    {
                        useGold += 40;
                    }
                    else if (currNum > 5 && currNum <= 20)
                    {
                        useGold += 80;
                    }
                    else if (currNum > 20 && currNum <= 45)
                    {
                        useGold += 200;
                    }
                    else if (currNum > 45 && currNum <= 80)
                    {
                        useGold += 400;
                    }
                }
            }
            return(useGold);
        }
コード例 #7
0
ファイル: Action7004.cs プロジェクト: zxx0367/Scut-samples
        public override bool TakeAction()
        {
            ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(_itemId);

            //UserItemHelper.AddUserItem(ContextUser.UserID, 1702, 1);
            //UserItemHelper.AddUserItem(ContextUser.UserID, 1701, 1);
            //UserItemHelper.AddUserItem(ContextUser.UserID, 1213, 1);
            if (itemInfo == null)
            {
                return(false);
            }
            //判断背包是否已满

            string fullTitle = string.Empty;
            bool   isFull    = false;

            if (itemInfo.ItemType == ItemType.ZhuangBei)
            {
                isFull = UserPackHelper.PackIsFull(ContextUser, BackpackType.ZhuangBei, _num, out fullTitle);
            }
            else
            {
                isFull = UserPackHelper.PackIsFull(ContextUser, BackpackType.BeiBao, _num, out fullTitle);
            }

            if (isFull)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = fullTitle;
                //ErrorInfo = LanguageManager.GetLang().St7004_BeiBaoTimeOut;
                return(false);
            }
            //读取物品信息
            MallItemsInfo mallItemInfo = new ConfigCacheSet <MallItemsInfo>().FindKey(_itemId, CityId, _commandType);

            if (mallItemInfo == null)
            {
                return(false);
            }
            //物品价格
            int mallPrice = mallItemInfo.Price;

            if (mallItemInfo.MallType == ShopType.Props || mallItemInfo.MallType == ShopType.PresendBox)
            {
                mallPrice = (FestivalHelper.StoreDiscount() * mallPrice).ToInt();
            }
            else if (mallItemInfo.SpecialPrice > 0)
            {
                mallPrice = mallItemInfo.SpecialPrice;
            }
            //根据物品类型进行扣钱
            if (_commandType == ShopType.Props || _commandType == ShopType.PresendBox)
            {
                int useGold = mallPrice * _num;
                //if (mallItemInfo.MallType == ShopType.PresendBox)
                //{
                if (ContextUser.GoldNum < useGold)
                {
                    ErrorCode = 3;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }

                ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold);
                //增加道具日志统计
                var mallItemLog = new MallItemLog
                {
                    Amount     = useGold,
                    CreateDate = DateTime.Now,
                    ItemID     = _itemId,
                    ItemName   = itemInfo.ItemName,
                    ItemNum    = _num,
                    MobileType = ContextUser.MobileType,
                    Pid        = ContextUser.Pid,
                    PropType   = itemInfo.PropType,
                    RetailID   = ContextUser.RetailID,
                    Uid        = ContextUser.UserID.ToInt()
                };

                var sender = DataSyncManager.GetDataSender();
                sender.Send(mallItemLog);
                UserItemHelper.AddUserItem(ContextUser.UserID, _itemId, _num);
                UserLogHelper.AppenUseGoldLog(ContextUser.UserID, 8, 1, 1, useGold, ContextUser.GoldNum, MathUtils.Addition(ContextUser.GoldNum, useGold, int.MaxValue));
                //}
                //预留判断消耗的是金币还是晶石
                //else
                //{
                //    if (ContextUser.GameCoin <useGold)
                //    {
                //        ErrorCode = LanguageManager.GetLang().ErrorCode;
                //        ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough;
                //        return false;
                //    }
                //    ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, useGold);
                //    UserItemHelper.AddUserItem(ContextUser.UserID, _itemId, _num);
                //}
            }
            return(true);
        }
コード例 #8
0
        public override bool TakeAction()
        {
            short     optype       = 0;
            short     plantQuality = 0;
            PlantType pType        = (PlantType)Enum.Parse(typeof(PlantType), plantType.ToString());

            if (pType == PlantType.Experience)
            {
                optype = 6;
            }
            else
            {
                optype = 7;
            }
            short       generalLv   = 0;
            UserGeneral userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (userGeneral == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().LoadDataError;
                return(false);
            }
            generalLv = userGeneral.GeneralLv;

            if (pType == PlantType.Experience)
            {
                generalLv = ContextUser.UserLv;
            }
            else if (pType == PlantType.GameGoin)
            {
                generalLv = userGeneral.GeneralLv;
            }
            int      upexpNum = 0;
            int      expeNum  = 0;
            double   addNum   = FestivalHelper.SurplusPurchased(ContextUser.UserID, FestivalType.ManorAddition);//活动加成
            UserLand userLand = new PersonalCacheStruct <UserLand>().FindKey(ContextUser.UserID, landPositon);

            if (userLand != null)
            {
                if (userLand.IsGain == 2 || userLand.GeneralID == 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().LoadDataError;
                    return(false);
                }
                plantQuality = (short)userLand.PlantQuality;
                PlantInfo plantInfo = new ShareCacheStruct <PlantInfo>().FindKey(generalLv, plantType, userLand.PlantQuality);
                if (plantInfo != null)
                {
                    if (userLand.IsGain == 1)
                    {
                        userLand.GeneralID    = 0;
                        userLand.PlantType    = PlantType.Experience;
                        userLand.IsGain       = 2;
                        userLand.GainDate     = DateTime.Now;
                        userLand.PlantQuality = PlantQualityType.PuTong;
                    }
                    else
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        return(false);
                    }
                    gainNum = plantInfo.GainNum;
                    UserLand land = new PersonalCacheStruct <UserLand>().FindKey(ContextUser.UserID, landPositon);
                    if (land != null && land.IsRedLand == 1)
                    {
                        gainNum = MathUtils.Addition(gainNum, (int)(gainNum * 0.2), int.MaxValue);
                    }
                    if (land != null && land.IsBlackLand == 1)
                    {
                        gainNum = MathUtils.Addition(gainNum, (int)(gainNum * 0.4), int.MaxValue);
                    }
                    gainNum = (gainNum * addNum).ToInt();
                    if (pType == PlantType.Experience)
                    {
                        expeNum = MathUtils.Addition(userGeneral.CurrExperience, gainNum, int.MaxValue);

                        GeneralEscalateInfo generalEscalate = new ShareCacheStruct <GeneralEscalateInfo>().FindKey(userGeneral.GeneralLv);
                        if (generalEscalate != null)
                        {
                            upexpNum = generalEscalate.UpExperience;
                        }

                        if (gainNum > 0)
                        {
                            userGeneral.Experience2 = MathUtils.Addition(userGeneral.Experience2, gainNum, int.MaxValue);
                            //userGeneral.CurrExperience = MathUtils.Addition(userGeneral.CurrExperience, gainNum, int.MaxValue);
                            UserHelper.TriggerGeneral(userGeneral, gainNum);
                        }
                    }
                    else if (pType == PlantType.GameGoin)
                    {
                        if (gainNum > 0)
                        {
                            ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, gainNum, int.MaxValue);
                        }
                    }
                }
                UserLogHelper.AppenLandLog(ContextUser.UserID, optype, generalID, landPositon, 0, plantQuality, gainNum, 0);
            }

            if (pType == PlantType.Experience && expeNum >= upexpNum)
            {
                var    chatService = new TjxChatService();
                string content     = string.Format(LanguageManager.GetLang().St10006_UserGeneralUpLv,
                                                   userGeneral.GeneralName,
                                                   userGeneral.GeneralLv);
                chatService.SystemSendWhisper(ContextUser, content);
            }

            return(true);
        }
コード例 #9
0
        public override bool TakeAction()
        {
            if (!string.IsNullOrEmpty(_friendId) && new PersonalCacheStruct <GameUser>().FindKey(_friendId) == null)
            {
                UserCacheGlobal.LoadOffline(_friendId);
            }
            if (ContextUser.UserExtend == null || (_petId != petMinLevel && ContextUser.UserExtend.LightPetID != _petId))
            {
                //SaveLog(string.Format("宠物赛跑开始接口请求ID{0},当前点亮ID{1}", _petId, ContextUser.UserExtend.LightPetID));
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St3204_PetNoEnable;
                return(false);
            }

            PetRunPool petRunPool = new ShareCacheStruct <PetRunPool>().FindKey(Uid);

            if (petRunPool != null && petRunPool.IsRunning)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo      = LanguageManager.GetLang().St3204_PetRunning;
                return(false);
            }
            if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid) != null)
            {
                var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid);
                int maxNum       = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.PetRun).MaxNum;
                if (userRestrain.UserExtend != null)
                {
                    if (userRestrain.UserExtend.PetRunTimes >= maxNum)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St3204_PetRunTimesOut;
                        return(false);
                    }
                }
            }
            if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(_friendId) != null)
            {
                var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(_friendId);
                int maxNum       = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.PetHelp).MaxNum;
                if (userRestrain.UserExtend != null)
                {
                    if (userRestrain.UserExtend.PetHelp >= maxNum)
                    {
                        this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo      = LanguageManager.GetLang().St3204_PetHelpeTimesOut;
                        return(false);
                    }
                }
            }

            decimal minusNum = (decimal)FestivalHelper.TortoiseHare(ContextUser.UserID);

            ContextUser.UserExtend.UpdateNotify(obj =>
            {
                ContextUser.UserExtend.LightPetID = 0;
                return(true);
            }
                                                );
            //ContextUser.Update();
            var petCacheSet = new ShareCacheStruct <PetRunPool>();
            var petInfo     = new ShareCacheStruct <PetInfo>().FindKey(_petId) ?? new PetInfo();

            if (petRunPool == null)
            {
                petRunPool = new PetRunPool(Uid);
                petCacheSet.Add(petRunPool);
                petRunPool = petCacheSet.FindKey(Uid);
            }
            petRunPool.FriendID      = _friendId;
            petRunPool.PetID         = _petId;
            petRunPool.StartDate     = DateTime.Now;
            petRunPool.EndDate       = DateTime.Now.AddSeconds(petInfo.ColdTime);
            petRunPool.GameCoin      = (int)Math.Floor(petInfo.CoinRate * ContextUser.UserLv * minusNum);
            petRunPool.ObtainNum     = (int)Math.Floor(petInfo.ObtainRate * ContextUser.UserLv * minusNum);
            petRunPool.InterceptUser = string.Empty;



            if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid) != null)
            {
                var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(Uid);
                userRestrain.UserExtend.UpdateNotify(obj =>
                {
                    userRestrain.UserExtend.PetRunTimes = MathUtils.Addition(userRestrain.UserExtend.PetRunTimes, 1);
                    return(true);
                });
                //userRestrain.Update();
            }

            if (new PersonalCacheStruct <UserDailyRestrain>().FindKey(petRunPool.FriendID) != null)
            {
                var userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(petRunPool.FriendID);
                if (userRestrain.UserExtend == null)
                {
                    userRestrain.UserExtend = new DailyUserExtend();
                }
                userRestrain.UserExtend.UpdateNotify(obj =>
                {
                    userRestrain.UserExtend.PetHelp = MathUtils.Addition(userRestrain.UserExtend.PetHelp, 1);
                    return(true);
                });
                //userRestrain.Update();
            }
            return(true);
        }