Beispiel #1
0
 public override bool TakeAction()
 {
     var package = UserItemPackage.Get(ContextUser.UserID);
     UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID == userItemID);
     if (userItem != null)
     {
         UserTrump userTrump = new PersonalCacheStruct<UserTrump>().FindKey(ContextUser.UserID, TrumpInfo.CurrTrumpID);
         if (userTrump != null && userTrump.TrumpLv >= GameConfigSet.MaxTrumpLv)
         {
             ErrorCode = LanguageManager.GetLang().ErrorCode;
             ErrorInfo = LanguageManager.GetLang().St1456_OutTrumpMaxLv;
             return false;
         }
         ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(userItem.ItemID);
         if (itemInfo != null && itemInfo.PropType == 10)
         {
             TrumpHelper.CheckTrumpEscalate(ContextUser.UserID, itemInfo.EffectNum);
             UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1);
             var usergeneral = UserGeneral.GetMainGeneral(ContextUser.UserID);
             if (usergeneral != null)
             {
                 usergeneral.RefreshMaxLife();
             }
         }
     }
     return true;
 }
Beispiel #2
0
        public static short _currMaxLv = GameConfigSet.CurrMaxLv.ToShort(); //玩家最大等级

        /// <summary>
        /// 将星佣兵完成任务后奖励物品名称
        /// </summary>
        /// <param name="prize"></param>
        /// <returns></returns>
        public static string PrizeItemName(PrizeInfo prize)
        {
            string name = string.Empty;
            switch (prize.Type)
            {
                case RewardType.CrystalId:
                    CrystalInfo crystal = new ShareCacheStruct<CrystalInfo>().FindKey(prize.ItemID);
                    name = crystal == null ? string.Empty : crystal.CrystalName;
                    break;
                case RewardType.Item:
                    ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(prize.ItemID);
                    name = itemInfo == null ? string.Empty : itemInfo.ItemName;
                    break;
                case RewardType.Spare:
                    SparePartInfo sparePartInfo = new ShareCacheStruct<SparePartInfo>().FindKey(prize.ItemID);
                    name = sparePartInfo == null ? string.Empty : sparePartInfo.Name;
                    break;
                case RewardType.CrystalType:
                    name = string.Format(LanguageManager.GetLang().St_Crystal,
                                         CrystalHelper.GetQualityName(prize.CrystalType.ToEnum<CrystalQualityType>()),
                                         string.Empty);
                    break;

            }
            return name;
        }
Beispiel #3
0
 public override void BuildPacket()
 {
     PushIntoStack(pageCount);
     PushIntoStack(_itemCount);
     PushIntoStack(_gridNum);
     PushIntoStack(ContextUser.GameCoin);
     PushIntoStack(ContextUser.GoldNum);
     PushIntoStack(mlist.Count);
     foreach (UserItemInfo item in mlist)
     {
         DataStruct ds = new DataStruct();
         ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(item.ItemID);
         ds.PushIntoStack(item.UserItemID.ToNotNullString());
         ds.PushIntoStack(itemInfo == null ? 0 : itemInfo.ItemID);
         ds.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : (short)itemInfo.ItemType);
         ds.PushIntoStack(item.Num);
         ds.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
         ds.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.PropType);
         ds.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
         ds.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemDesc.ToNotNullString());
         ds.PushIntoStack(itemInfo == null ? 0 : itemInfo.SalePrice);
         ds.PushIntoStack(itemInfo == null ? 0 : itemInfo.IsUse ? 1 : 0);
         ds.PushIntoStack(itemInfo == null ? 0 : itemInfo.IsCostly ? 1 : 0);
         ds.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.MaxHeadID);
         ds.PushIntoStack(itemInfo == null ? 0 : itemInfo.PropType != 15 ? 0 : ItemUseHelper.ItemNum(ContextUser.UserID, itemInfo.EffectNum) <= 0 ? 0 : 1);
         PushIntoStack(ds);
     }
 }
Beispiel #4
0
        public override void BuildPacket()
        {
            PushIntoStack(_currVersion);
            PushIntoStack(_chatArray.Count);

            foreach (var chatMessage in _chatArray)
            {
                var chat = chatMessage as ChatData ?? new ChatData();
                UserFriends friends = new ShareCacheStruct<UserFriends>().FindKey(ContextUser.UserID, chat.FromUserID);
                int isFriend = friends != null && friends.FriendType == FriendType.Friend ? 1 : 2;
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(chat.FromUserID.ToNotNullString());
                dsItem.PushIntoStack(chat.FromUserName.ToNotNullString());
                dsItem.PushIntoStack(chat.Content.ToNotNullString());
                dsItem.PushIntoStack(FormatDate(chat.SendDate));
                dsItem.PushIntoStack((short)chat.ChatType);
                dsItem.PushIntoStack(chat.ToUserID.ToNotNullString());
                dsItem.PushIntoStack(chat.ToUserName.ToNotNullString());
                dsItem.PushIntoStack(isFriend);
                dsItem.PushIntoStack(chat.FromUserVip);
                dsItem.PushIntoStack(chat.ToUserVip);
                PushIntoStack(dsItem);
            }
            PushIntoStack(_charItemNum);
        }
Beispiel #5
0
 public override bool TakeAction() {
     var cache = new ShareCacheStruct<UserRanking>();
     rankingList = cache.FindAll(false);
     rankingList = MathUtils.QuickSort<UserRanking>(rankingList, compareTo);
     rankingList = rankingList.GetPaging(pageIndex, pageSize, out pageCount);
     return true;
 }
Beispiel #6
0
 public override bool TakeAction()
 {
     GuildMember member = new ShareCacheStruct<GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);
     if (member != null)
     {
         if (member.PostType == PostType.Member)
         {
             ErrorCode = LanguageManager.GetLang().ErrorCode;
             ErrorInfo = LanguageManager.GetLang().St6007_AuditPermissions;
             return false;
         }
         else
         {
             var cacheSet = new ShareCacheStruct<UserApply>();
             List<UserApply> userApplyArray = cacheSet.FindAll(m => m.GuildID == member.GuildID);
             foreach (UserApply apply in userApplyArray)
             {
                 List<GuildMember> gMemberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID == apply.UserID);
                 if (gMemberArray.Count > 0)
                 {
                     cacheSet.Delete(apply);
                 }
             }
             applyArray = userApplyArray.GetPaging(pageIndex, pageSize, out pageCount);
         }
     }
     return true;
 }
Beispiel #7
0
        public override void BuildPacket()
        {
            var cacheSetItemEqu = new ShareCacheStruct<ItemEquAttrInfo>();
            PushIntoStack(_userItemArray.Count);
            foreach (UserItemInfo item in _userItemArray)
            {
                ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(item.ItemID);
                var general = new PersonalCacheStruct<UserGeneral>().FindKey(Uid, item.GeneralID);
                var itemEquList = cacheSetItemEqu.FindAll(e => e.ItemID.Equals(item.ItemID));
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(item.UserItemID.ToNotNullString());
                dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
                dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
                dsItem.PushIntoStack(item.ItemLv);
                dsItem.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : (short)itemInfo.QualityType);
                dsItem.PushIntoStack(general != null ? general.GeneralName : string.Empty);
                PushIntoStack(dsItem);
                dsItem.PushIntoStack(itemEquList.Count);
                foreach (var itemEquAttrInfo in itemEquList)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(itemEquAttrInfo.AttributeID.ToInt());
                    int strengNum = 0;
                    strengNum = MathUtils.Addition(itemEquAttrInfo.BaseNum, (itemEquAttrInfo.IncreaseNum * item.ItemLv), int.MaxValue);
                    //    dsItem1.PushIntoStack(itemEqu.BaseNum);
                    dsItem1.PushIntoStack(strengNum);
                    dsItem.PushIntoStack(dsItem1);
                }
               


            }
        }
Beispiel #8
0
 /// <summary>
 /// 创始成功之后处理事件
 /// </summary>
 public void OnCreateAfter(GameUser user)
 {
     var cacheSet = new ShareCacheStruct<UserNickName>();
     UserNickName u = new UserNickName(user.UserId);
     u.NickName = user.NickName;
     cacheSet.Add(u);
 }
Beispiel #9
0
        protected override void ProcessCmd(string[] args)
        {
            int magicID = args.Length > 0 ? args[0].Trim().ToInt() : 0;
            short magicLv = args.Length > 1 ? args[1].Trim().ToShort() : (short)1;

            var cacheSet = new PersonalCacheStruct<UserMagic>();
            var userMagic = cacheSet.FindKey(UserID, magicID);
            MagicInfo magic = new ShareCacheStruct<MagicInfo>().FindKey(magicID);
            if (magic == null)
            {
                return;
            }
            if (userMagic == null)
            {
                userMagic = new UserMagic()
                {
                    UserID = UserID,
                    MagicID = magicID,
                    MagicLv = magicLv,
                    IsEnabled = false,
                    MagicType = magic.MagicType,
                };
                cacheSet.Add(userMagic);
            }
            else
            {
                userMagic.MagicLv = magicLv;
            }
        }
Beispiel #10
0
 /// <summary>
 /// 每日限制次数
 /// </summary>
 /// <returns></returns>
 public static int GetVipUseNum(int vipLv, RestrainType restrainType)
 {
     int rType = (int)restrainType;
     int baseNum = 0;
     int MaxNum = 0;
     int vipNum = 0;
     DailyRestrainSet restrainSet = new ShareCacheStruct<DailyRestrainSet>().FindKey(restrainType);
     if (restrainSet != null)
     {
         baseNum = restrainSet.MaxNum;
     }
     VipLvInfo lvInfo = new ConfigCacheSet<VipLvInfo>().FindKey(vipLv);
     var restrainArray = new CacheList<DailyRestrain>();
     if (lvInfo != null)
     {
         restrainArray = lvInfo.DailyRestrain;
     }
     foreach (DailyRestrain daily in restrainArray)
     {
         if (daily.ID == rType)
         {
             vipNum = daily.Num;
         }
     }
     MaxNum = MathUtils.Addition(baseNum, vipNum, int.MaxValue);
     return MaxNum;
 }
Beispiel #11
0
        public override bool TakeAction()
        {
            var plotTeam = new PlotTeamCombat(ContextUser);
            MorePlotTeam moreTeam = plotTeam.GetTeam(teamID);

            if (moreTeam != null && moreTeam.UserList.Count <= 1)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St4210_PeopleNotEnough;
                return false;
            }

            PlotInfo plotInfo = new ShareCacheStruct<PlotInfo>().FindKey(plotID);
            if (plotInfo == null)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St4210_PlotNotEnough;
                return false;
            }

            if(!plotTeam.DoStart(teamID))
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                return false;
            }

            return true;
        }
Beispiel #12
0
        public override void BuildPacket()
        {
            this.PushIntoStack(magicList.Count);
            foreach (MagicInfo magicInfo in magicList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(magicInfo.MagicID);
                dsItem.PushIntoStack(magicInfo.MagicType.ToInt());
                dsItem.PushIntoStack(magicInfo.MagicName.ToNotNullString());
                dsItem.PushIntoStack(magicInfo.HeadID.ToNotNullString());
                dsItem.PushIntoStack(magicInfo.MagicDesc.ToNotNullString());

                var magicLvList = new ShareCacheStruct<MagicLvInfo>().FindAll(m => m.MagicID == magicInfo.MagicID);
                dsItem.PushIntoStack(magicLvList.Count);
                foreach (MagicLvInfo magicLv in magicLvList)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(magicLv.MagicLv.ToShort());
                    dsItem1.PushIntoStack(magicLv.ExpNum);
                    dsItem1.PushIntoStack(magicLv.ColdTime);
                    dsItem1.PushIntoStack(magicLv.EscalateMinLv.ToShort());
                    dsItem1.PushIntoStack(magicLv.AbilityType.ToShort());
                    dsItem1.PushIntoStack(magicLv.EffectNum.ToNotNullString());
                    dsItem1.PushIntoStack(magicLv.GridMaxNum);

                    dsItem.PushIntoStack(dsItem1);
                }

                this.PushIntoStack(dsItem);
            }

        }
Beispiel #13
0
        public override void BuildPacket()
        {
            PushIntoStack(firstName.ToNotNullString());
            this.PushIntoStack((short)postType);
            this.PushIntoStack((short)isApply);
            this.PushIntoStack(fightList.Count);
            foreach (var fight in fightList)
            {
                CityInfo cityInfo = new ShareCacheStruct<CityInfo>().FindKey(fight.CityID);
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(fight.CityID);
                dsItem.PushIntoStack(cityInfo == null ? string.Empty : cityInfo.CityName.ToNotNullString());
                dsItem.PushIntoStack(fight.CityHead.ToNotNullString());
                dsItem.PushIntoStack((short)fight.GuildLv);
                dsItem.PushIntoStack(fight.SkillNum);
                this.PushIntoStack(dsItem);
            }
            this.PushIntoStack(currCityName.ToNotNullString());
            this.PushIntoStack(rewardDesc.ToNotNullString());
            this.PushIntoStack(guildName.ToNotNullString());
            this.PushIntoStack(endData);
            this.PushIntoStack((short)isChampion);


        }
Beispiel #14
0
        /// <summary>
        /// 竞技场每日奖励
        /// </summary>
        /// <param name="user"></param>
        public static void DailySportsRankPrize(GameUser user)
        {
            UserDailyRestrain dailyRestrain = new PersonalCacheStruct<UserDailyRestrain>().FindKey(user.UserID);
            if (IsGainSportsReward(user.UserID) && dailyRestrain != null && dailyRestrain.UserExtend != null)
            {
                //var envSet = ServerEnvSet.Get(ServerEnvKey.JingJiChangReward, "");
                SportsRewardInfo sportsInfo = new ShareCacheStruct<SportsRewardInfo>().FindKey(dailyRestrain.UserExtend.UserRankID);
                //if (envSet != null && sportsInfo != null && envSet.ToDateTime().Date > dailyRestrain.Funtion11.Date &&
                // dailyRestrain.UserExtend.UserRankID > 0)
                if (sportsInfo != null && DateTime.Now.Date != dailyRestrain.Funtion11.Date &&
                 dailyRestrain.UserExtend.UserRankID > 0)
                {
                    dailyRestrain.Funtion11 = DateTime.Now;
                    dailyRestrain.UserExtend.UserRankID = 0;

                    user.SportsIntegral = MathUtils.Addition(user.SportsIntegral, sportsInfo.RewardObtian,
                                                             int.MaxValue);
                    user.GameCoin = MathUtils.Addition(user.GameCoin, sportsInfo.RewardGoin, int.MaxValue);
                    string sportContent = string.Format(LanguageManager.GetLang().St5106_JingJiChangRankReward,
                                                        sportsInfo.RewardObtian, sportsInfo.RewardGoin);
                    var chatService = new TjxChatService();
                    chatService.SystemSendWhisper(user, sportContent);
                }
            }
        }
Beispiel #15
0
        public override void BuildPacket()
        {
            this.PushIntoStack(TaskHelper.DailyEveryMaxNum);
            this.PushIntoStack(currNum);
            this.PushIntoStack(userTaskList.Count);
            foreach (UserTask userTask in userTaskList)
            {
                DailyTaskInfo dtaskInfo = new ShareCacheStruct<DailyTaskInfo>().FindKey(userTask.TaskID);
                var userItem = userTask.GetDailyItem(userLv);
                ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(userItem != null ? userItem.ItemID : 0);

                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(userTask.TaskID);
                dsItem.PushIntoStack(dtaskInfo.TaskName.ToNotNullString());
                dsItem.PushIntoStack((short)userTask.TaskState);
                dsItem.PushIntoStack((short)userTask.TaskType);
                dsItem.PushIntoStack((short)userTask.TaskStar);
                dsItem.PushIntoStack(dtaskInfo.TaskDescp.ToNotNullString());
                dsItem.PushIntoStack(dtaskInfo.TaskTarget);
                dsItem.PushIntoStack((int)userTask.TaskStar);
                dsItem.PushIntoStack(userTask.TaskTargetNum.ToInt());
                dsItem.PushIntoStack(userTask.GetDailyExpNum(userLv));
                dsItem.PushIntoStack(itemInfo != null ? itemInfo.ItemName.ToNotNullString() : string.Empty);
                dsItem.PushIntoStack(userItem != null ? userItem.Num : 0);

                this.PushIntoStack(dsItem);
            }

        }
Beispiel #16
0
        public override bool TakeAction()
        {
            if (!string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                int maxDonateGold = ConfigEnvSet.GetInt("UserGuild.MaxDonateGold");
                int maxDonateCoin = UserHelper.MaxDonateGameCoin(ContextUser.UserLv.ToInt());
                int gameCoinProportion = ConfigEnvSet.GetInt("UserGuild.DonateGameCoinProportion");
                int goldProportion = ConfigEnvSet.GetInt("UserGuild.DonateGoldProportion");
                GuildMember member = new ShareCacheStruct<GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);
                if (member != null)
                {
                    if (donateType == 1)
                    {
                        donateNum = member.DonateCoin;
                        maxDonateNum = maxDonateCoin;
                        proportion = gameCoinProportion;
                    }
                    else if (donateType == 2)
                    {
                        donateNum = member.DonateGold;
                        maxDonateNum = maxDonateGold;
                        proportion = goldProportion;
                    }
                }
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6203_GuildMemberNotEnough;
                return false;
            }

            return true;
        }
        //private MiddlewareSection section;
        public ServersDataProvider()
        {
            if (_provider == null)
            {
                _provider = DbConnectionProvider.CreateDbProvider(ConnectKey);

                var command = _provider.CreateCommandStruct("StaticServer", CommandMode.Inquiry,"ServerId,Name,Ip,Port");

                command.Parser();

                using (var dr = _provider.ExecuteReader(CommandType.Text, command.Sql, command.Parameters))
                {

                    var serversDatas = new ShareCacheStruct<StaticServer>();
                    while (dr.Read())
                    {
                        StaticServer oneServerModel = new StaticServer();
                        oneServerModel.ServerId = Convert.ToInt32(dr["ServerId"]) ;
                        oneServerModel.Name = dr["Name"].ToString();
                        oneServerModel.Ip = dr["Ip"].ToString();
                        oneServerModel.Port = Convert.ToInt32(dr["Port"]);
                        //ServerList.Add(oneServerModel);
                        serversDatas.Add(oneServerModel);

                    }
                }
                //this.AddATestCache();

            }
        }
Beispiel #18
0
        public override bool TakeAction()
        {
            UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID);
            int summonGold = ConfigEnvSet.GetInt("GuildMember.SummonSanxian");
            List<GuildMember> guildMemberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID == ContextUser.UserID && m.IsDevil == 1 && DateTime.Now.Date == m.DevilDate.Date);
            if (guildMemberArray.Count > 0)
            {
                GuildMember member = guildMemberArray[0];
                if (ops == 1)
                {
                    ErrorCode = 1;
                    ErrorInfo = string.Format(LanguageManager.GetLang().St6015_SummonSanxian, summonGold);
                    return false;
                }
                else if (ops == 2)
                {
                    if (ContextUser.GoldNum < summonGold)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                        return false;
                    }
                    member.SummonNum = MathUtils.Addition(member.SummonNum, 1, int.MaxValue);
                    member.CurrNum = MathUtils.Addition(member.CurrNum, 1, int.MaxValue);
                    //member.Update();

                    ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, summonGold, int.MaxValue);
                    //ContextUser.Update();
                }
            }
            return true;
        }
Beispiel #19
0
 public override void BuildPacket()
 {
     PushIntoStack(ContextUser.GoldNum);
     PushIntoStack(ContextUser.GameCoin);
     PushIntoStack(freeNum);
     PushIntoStack(isSale);
     PushIntoStack(issTelegrams);
     PushIntoStack(grayCrystalArray.Count);
     foreach (GrayCrystal crystal in grayCrystalArray)
     {
         CrystalInfo crystalInfo = new ShareCacheStruct<CrystalInfo>().FindKey(crystal.CrystalID) ?? new CrystalInfo();
         DataStruct dsItem = new DataStruct();
         dsItem.PushIntoStack(crystal.UserCrystalID);
         dsItem.PushIntoStack(crystalInfo.CrystalID);
         dsItem.PushIntoStack(crystalInfo.CrystalName.ToNotNullString());
         dsItem.PushIntoStack(crystalInfo.HeadID.ToNotNullString());
         dsItem.PushIntoStack((short)crystalInfo.CrystalQuality);
         PushIntoStack(dsItem);
     }
     PushIntoStack(userLightArray.Count);
     foreach (UserLight light in userLightArray)
     {
         ProbabilityInfo probabilityInfo = new ShareCacheStruct<ProbabilityInfo>().FindKey(light.HuntingID);
         DataStruct dsItem = new DataStruct();
         dsItem.PushIntoStack(light.HuntingID);
         dsItem.PushIntoStack(probabilityInfo == null ? 0 : probabilityInfo.Price);
         dsItem.PushIntoStack(light.IsLight);
         PushIntoStack(dsItem);
     }
 }
Beispiel #20
0
        public override bool TakeAction()
        {

            if (new GameDataCacheSet<UserFunction>().FindKey(Uid, FunctionEnum.PetRun) == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_NoFun;
                return false;
            }
            UserDailyRestrain restrain = new GameDataCacheSet<UserDailyRestrain>().FindKey(Uid);
            if (restrain != null && restrain.UserExtend != null)
            {
                var dailyCacheSet = new ShareCacheStruct<DailyRestrainSet>();
                if (dailyCacheSet.FindKey(RestrainType.PetRun) != null)
                    _runTimes = MathUtils.Subtraction(dailyCacheSet.FindKey(RestrainType.PetRun).MaxNum, restrain.UserExtend.PetRunTimes, 0);
                if (dailyCacheSet.FindKey(RestrainType.PetIntercept) != null)
                    _interceptTimes = MathUtils.Subtraction(dailyCacheSet.FindKey(RestrainType.PetIntercept).MaxNum, restrain.UserExtend.PetIntercept, 0);
                if (dailyCacheSet.FindKey(RestrainType.PetHelp) != null)
                    _helpTimes = MathUtils.Subtraction(dailyCacheSet.FindKey(RestrainType.PetHelp).MaxNum, restrain.UserExtend.PetHelp, 0);
            }
            var petRun = new ShareCacheStruct<PetRunPool>().FindKey(Uid);
            if (petRun != null)
            {
                //问题:在赛跑时有重刷点亮宠物后,等赛跑完服务端与客户端记录宠物ID不一致,原因是赛跑完有将宠物ID清除
                if (petRun.PetID > 0 && petRun.ColdTime == 0)
                {
                    UserHelper.ProcessPetPrize(petRun);
                }
                _coldTime = petRun.ColdTime;
                _petHead = (new ConfigCacheSet<PetInfo>().FindKey(petRun.PetID) ?? new PetInfo()).PetHead;
                if (ContextUser.UserExtend != null)
                    _petId = ContextUser.UserExtend.LightPetID;
            }
            return true;
        }
Beispiel #21
0
 public override bool TakeAction()
 {
     var package = UserEnchant.Get(ContextUser.UserID);
     if (package == null)
     {
         return false;
     }
     UserEnchantInfo userEnchantInfo = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID);
     if (userEnchantInfo == null)
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough;
         return false;
     }
     EnchantInfo enchant = new ShareCacheStruct<EnchantInfo>().FindKey(userEnchantInfo.EnchantID);
     EnchantLvInfo enchantLvInfo = new ShareCacheStruct<EnchantLvInfo>().FindKey(userEnchantInfo.EnchantID, userEnchantInfo.EnchantLv);
     if (enchant != null && enchantLvInfo != null)
     {
         ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, enchantLvInfo.CoinPrice);
         if (ContextUser.UserExtend == null)
         {
             ContextUser.UserExtend = new GameUserExtend();
         }
         ContextUser.UserExtend.UpdateNotify(obj =>
         {
             ContextUser.UserExtend.MoJingNum = MathUtils.Addition(ContextUser.UserExtend.MoJingNum, enchantLvInfo.MoJingPrice);
             return true;
         });
         UserLogHelper.AppenEnchantLog(ContextUser.UserID, 1, userEnchantInfo, new CacheList<SynthesisInfo>());
         package.RemoveEnchant(userEnchantInfo);
     }
     return true;
 }
Beispiel #22
0
        public override void BuildPacket()
        {

            PushIntoStack(generalInfo == null ? string.Empty : generalInfo.GeneralName.ToNotNullString());
            PushIntoStack(generalMedicineArray.Count);
            foreach (GeneralMedicine item in generalMedicineArray)
            {
                ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(item.MedicineID);

                int itemcount = TrumpHelper.GetUserItemNum(item.UserID, item.MedicineID);
                if (itemcount > 0)
                {
                    gridStatus = 1;
                }
                else
                {
                    gridStatus = 2;
                }

                DataStruct ds = new DataStruct();
                ds.PushIntoStack(item.MedicineID);
                ds.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
                ds.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.MedicineLv);
                ds.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.MedicineType);
                ds.PushIntoStack((short)GetGeneralMedicine(item));
                ds.PushIntoStack(gridStatus);
                ds.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
                PushIntoStack(ds);
            }
            this.PushIntoStack(powerNum);
            this.PushIntoStack(soulNum);
            this.PushIntoStack(intellectNum);
        }
Beispiel #23
0
 public override bool TakeAction()
 {
     if (string.IsNullOrEmpty(ContextUser.MercenariesID))
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         return false;
     }
     var cacheSet = new ShareCacheStruct<ServerFight>();
     FightCombat combat = new FightCombat();
     ServerFight fight = cacheSet.FindKey(combat.FastID, ContextUser.MercenariesID);
     if (fight != null)
     {
         if (!string.IsNullOrEmpty(fight.CombatMember))
         {
             fight.CombatMember = fight.CombatMember.Replace(ContextUser.UserID, "").Replace(",,", ",");
             if (fight.CombatMember == ",")
             {
                 fight.CombatMember = string.Empty;
             }
         }
         FightUser fightUser = GuildFightCombat._fightUserList.Find(m => m.UserId == ContextUser.UserID);
         if (fightUser != null)
         {
             GuildFightCombat._fightUserList.Remove(fightUser);
         }
         ContextUser.UserStatus = UserStatus.Normal;
     }
     else
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().St6411_FailedToExit;
         return false;
     }
     return true;
 }
Beispiel #24
0
        public override void BuildPacket()
        {
            this.PushIntoStack(abilityInfoArray.Count);
            foreach (GuildAbilityInfo abilityInfo in abilityInfoArray)
            {
                var guildAbilityLvInfos = new ShareCacheStruct<GuildAbilityLvInfo>().FindAll(m => m.ID == abilityInfo.ID);
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(abilityInfo.ID);
                dsItem.PushIntoStack(abilityInfo.IsCityCombat ? (short)1 : (short)0);
                dsItem.PushIntoStack(abilityInfo.AbilityName.ToNotNullString());
                dsItem.PushIntoStack((short)abilityInfo.GuildAbilityType);
                dsItem.PushIntoStack(abilityInfo.AbilityHead.ToNotNullString());
                dsItem.PushIntoStack(abilityInfo.AbilityDesc.ToNotNullString());

                dsItem.PushIntoStack(guildAbilityLvInfos.Count);
                foreach (GuildAbilityLvInfo lvInfo in guildAbilityLvInfos)
                {
                    DataStruct dsItem1 = new DataStruct();
                    dsItem1.PushIntoStack(lvInfo.AbilityLv);
                    dsItem1.PushIntoStack(lvInfo.UpDonateNum);
                    dsItem1.PushIntoStack(lvInfo.EffectNum.ToString().ToNotNullString());
                    dsItem.PushIntoStack(dsItem1);
                }
                this.PushIntoStack(dsItem);
            }

        }
Beispiel #25
0
 public static void AddPrize(string UserID, int itemID, string mailContent)
 {
     string ItemPackage = itemID + "=1=1";
     var cacheset = new ShareCacheStruct<UserTakePrize>();
     UserTakePrize takeprize = new UserTakePrize()
     {
         CreateDate = DateTime.Now,
         CrystalPackage = string.Empty,
         EnergyNum = 0,
         ExpNum = 0,
         GainBlessing = 0,
         GameCoin = 0,
         Gold = 0,
         ID = Guid.NewGuid().ToString(),
         ItemPackage = ItemPackage,
         IsTasked = false,
         MailContent = mailContent,
         ObtainNum = 0,
         OpUserID = 0,
         SparePackage = string.Empty,
         UserID = UserID.ToInt(),
         VipLv = 0,
     };
     cacheset.Add(takeprize, GameEnvironment.CacheGlobalPeriod);
 }
Beispiel #26
0
        public override bool TakeAction()
        {
            List<GameUser> friendArray = new List<GameUser>();
            new PersonalCacheStruct<GameUser>().Foreach((personId, key, user) =>
            {
                //查找相同等级的 并且好友类型非好友和关注的类型 
                if (user.UserLv == ContextUser.UserLv && user.UserID != ContextUser.UserID)
                {
                    UserFriends userInfo = new ShareCacheStruct<UserFriends>().FindKey(ContextUser.UserID, user.UserID);
                    if (userInfo == null)
                    {
                        friendArray.Add(user);
                    }
                    else
                    {
                        if (userInfo.FriendType != FriendType.Friend && userInfo.FriendType != FriendType.Attention)
                        {
                            friendArray.Add(user);
                        }
                    }

                }
                return true;
            });

            _userFriendArray = friendArray.GetPaging(_pageIndex, _pageSize, out _pageCount);
            return true;
        }
Beispiel #27
0
        public bool Add(int type,int index,string code)
        {
            var cache = new ShareCacheStruct<ExchangeCode>();
            int key = UniqueKey(type, index);
            //if (null != cache.FindKey(key)) return false; // this type has been added
            ExchangeCode ec = cache.FindKey(key);
            if (null != ec)
            {
                return true;
            }
            else
            {
                ec = new ExchangeCode();
                ec.key = key;
                ec.Type = (byte)type;
                ec.Index = index;
                ec.Code = code;
                if (ec.Type == (byte)GameConfigExchangeCode.ExchangeCodeType.ASType_NSNSDuiHuan_AnHuiTai_1 ||
                    ec.Type == (byte)GameConfigExchangeCode.ExchangeCodeType.ASType_NSNSDuiHuan_JiaRi_1)
                {
                    ec.cnt = int.MaxValue;

                }
                cache.Add(ec);
            }
            return true;
        }
Beispiel #28
0
 private GameTable()
 {
     _cardRole = new CardRole();
     _pokerConfig = new ShareCacheStruct<PokerInfo>();
     _userCacheSet = new GameDataCacheSet<GameUser>();
     _roomStruct = new MemoryCacheStruct<RoomData>();
 }
Beispiel #29
0
        public override bool TakeAction()
        {
            ItemBaseInfo itemBaseInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(_materialsID);
            if (itemBaseInfo.ItemType == ItemType.CaiLiao)
            {
                //寻材料
                List<MonsterInfo> monsterArray = new ShareCacheStruct<MonsterInfo>().FindAll(m => m.ItemID == _materialsID);
                if (monsterArray.Count > 0)
                {
                    MonsterInfo monsterInfo = monsterArray[0];
                    var plotEmbattles = new ShareCacheStruct<PlotEmbattleInfo>().FindAll(m => m.MonsterID == monsterInfo.MonsterID);
                    foreach (var embattle in plotEmbattles)
                    {
                        PlotNPCInfo npcInfo = new ShareCacheStruct<PlotNPCInfo>().FindKey(embattle.PlotNpcID);
                        if (npcInfo != null)
                        {
                            PlotInfo temp = new ShareCacheStruct<PlotInfo>().FindKey(npcInfo.PlotID);
                            if (temp != null && temp.CityID > CurrCityID(ContextUser.UserLv))
                            {
                                ErrorCode = LanguageManager.GetLang().ErrorCode;
                                ErrorInfo = LanguageManager.GetLang().St1604_MaterialsCityID;
                                return false;
                            }
                            if (CheckPlot(temp))
                            {
                                _plotInfo = temp;
                                break;
                            }
                        }
                    }
                }
            }

            return true;
        }
Beispiel #30
0
 public override void BuildPacket()
 {
     PushIntoStack(_pageCount);
     PushIntoStack(ContextUser.GameCoin);
     PushIntoStack(ContextUser.GoldNum);
     PushIntoStack(_mallItemsInfoArray.Count);
     foreach (MallItemsInfo mallItems in _mallItemsInfoArray)
     {
         ItemBaseInfo itemInfo = new ShareCacheStruct<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);
 }
Beispiel #31
0
        public override bool TakeAction()
        {
            ContextUser.UserLocation = Location.City;
            UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);

            if (guild == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            GameActive gameactive = new ShareCacheStruct <GameActive>().FindKey(11);

            if (gameactive == null || !gameactive.State)
            {
                return(false);
            }
            gameactive.BeginTime = gameactive.EnablePeriod.ToDateTime(DateTime.MinValue);
            gameactive.EndTime   = gameactive.BeginTime.AddMinutes(gameactive.Minutes);
            DateTime readytime = gameactive.BeginTime.AddMinutes(0 - gameactive.WaitMinutes);

            if (gameactive.BeginTime > DateTime.Now)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseNoOpen;
                return(false);
            }
            if (gameactive.BeginTime.AddMinutes(gameactive.WaitMinutes) < DateTime.Now && gameactive.EndTime > DateTime.Now)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseIsOpen;
                return(false);
            }
            if (gameactive.EndTime < DateTime.Now)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseClose;
                return(false);
            }
            if (guild.GuildExercise == null)
            {
                TraceLog.ReleaseWriteFatal("重新刷了6301接口1");
                guild.GuildExercise = new GuildExercise();
            }
            if (guild.GuildExercise.QuestionNo > 0)
            {
                TraceLog.ReleaseWriteFatal("重新刷了6301接口2");
                guild.GuildExercise = new GuildExercise();
            }
            if (guild.GuildExercise.UserList.Find(u => u.UserID == ContextUser.UserID) == null)
            {
                ExerciseUser exUser = new ExerciseUser();
                exUser.AnswerStatus = false;
                exUser.QuestionNo   = 0;
                exUser.Status       = GuildExerciseStatus.Default;
                exUser.UserID       = ContextUser.UserID;
                guild.GuildExercise.UpdateNotify(obj =>
                {
                    guild.GuildExercise.UserList.Add(exUser);
                    return(true);
                });
                //guild.Update();
            }
            ContextUser.UserLocation = Location.GuildExercise;
            //ContextUser.Update();
            return(true);
        }
Beispiel #32
0
        public override bool TakeAction()
        {
            if (string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6203_GuildMemberNotEnough;
                return(false);
            }
            string   guildFight = string.Empty;
            DateTime nextDate;

            stage = GuildFightCombat.GetStage(out nextDate);
            if (stage != FightStage.Apply)
            {
                codeTime = (int)(nextDate - DateTime.Now).TotalSeconds;
            }

            ServerFight fight = new ShareCacheStruct <ServerFight>().FindKey(fightCombat.FastID, ContextUser.MercenariesID);

            if (fight != null)
            {
                CityInfo cityInfo = new ConfigCacheSet <CityInfo>().FindKey(fight.CityID);
                if (cityInfo != null)
                {
                    cityName = cityInfo.CityName;
                }
                FightStage fightStage;
                if (stage <= FightStage.quarter_final)
                {
                    fightStage = FightStage.quarter_final;
                }
                else if (stage > FightStage.quarter_final && stage < FightStage.final_Wait)
                {
                    fightStage = FightStage.semi_final;
                }
                else
                {
                    fightStage = FightStage.final;
                }
                var fightGroupList = new ShareCacheStruct <ServerFightGroup>().FindAll(s => s.FastID == fightCombat.FastID && s.Stage == fightStage);
                if (fightGroupList.Count == 0)
                {
                    fightGroupList = new ShareCacheStruct <ServerFightGroup>().FindAll(s => s.FastID == fightCombat.FastID && s.Stage < fightStage);
                    if (fightGroupList.Count == 0)
                    {
                        fightGroupList = new ShareCacheStruct <ServerFightGroup>().FindAll(s => s.FastID == fightCombat.FastID && s.Stage >= fightStage);
                    }
                }
                foreach (var fightGroup in fightGroupList)
                {
                    if (!string.IsNullOrEmpty(fightGroup.WinGuildID) && fightGroup.WinGuildID == ContextUser.MercenariesID)
                    {
                        guildFight = fightGroup.WinGuildID;
                        continue;
                    }
                    if (fightGroup.GuildIDA == ContextUser.MercenariesID || fightGroup.GuildIDB == ContextUser.MercenariesID)
                    {
                        guildFight = fightGroup.GuildIDA + "," + fightGroup.GuildIDB;
                    }
                }
                if (!string.IsNullOrEmpty(guildFight))
                {
                    guildStr = guildFight.Split(',');
                }
                TraceLog.ReleaseWriteFatal("6409公会争斗战配对城市{0} 阶段:{1},公会:{2}。", fight.CityID, stage, guildFight.ToNotNullString());
            }
            var totalfatigue = ContextUser.Fatigue * GameConfigSet.Fatigue;
            int tfatigue     = (int)(totalfatigue * 100);

            fatigue = string.Format(LanguageManager.GetLang().St6409_fatigueDesc, ContextUser.Fatigue, tfatigue);
            if (guildStr.Length == 0)
            {
                guildFight = ContextUser.MercenariesID + ",";
                guildStr   = guildFight.Split(',');
            }
            return(true);
        }
Beispiel #33
0
        protected override bool DoSuccess(int userId, out IUser user)
        {
            user = null;
            //原因:重登录时,数据会回档问题
            var      cacheSet = new PersonalCacheStruct <GameUser>();
            GameUser userInfo = cacheSet.FindKey(userId.ToString());

            if (userInfo != null)
            {
                //原因:还在加载中时,返回
                if (userInfo.IsRefreshing)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().ServerLoading;
                    return(false);
                }
            }

            if (userInfo == null ||
                string.IsNullOrEmpty(userInfo.SessionID) ||
                !userInfo.IsOnline)
            {
                UserCacheGlobal.Load(userId.ToString()); //重新刷缓存
                userInfo = cacheSet.FindKey(userId.ToString());
            }
            if (userInfo != null)
            {
                if (userInfo.UserStatus == UserStatus.FengJin)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1004_IDDisable;
                    return(false);
                }
                user = new SessionUser(userInfo);
                //todo
                //NoticeHelper.RankNotice(userInfo); //公告
                CombatHelper.LoadProperty(userInfo);
                //todo
                //NoviceHelper.OldFriendPack(Uid, userInfo.LoginTime); //好友礼包
                UserLoginLog userLoginLog = new UserLoginLog();
                userLoginLog.UserId     = userInfo.UserID;
                userLoginLog.SessionID  = Sid;
                userLoginLog.MobileType = MobileType;
                userLoginLog.ScreenX    = ScreenX;
                userLoginLog.ScreenY    = ScreenY;
                userLoginLog.RetailId   = RetailID;
                userLoginLog.AddTime    = DateTime.Now;
                userLoginLog.State      = LoginStatus.Logined;
                userLoginLog.DeviceID   = DeviceID;
                userLoginLog.Ip         = this.GetRealIP();
                userLoginLog.Pid        = userInfo.Pid;
                userLoginLog.UserLv     = userInfo.UserLv;
                //原因:报表统计
                userLoginLog.PlotID = userInfo.PlotProgress;
                PlotInfo plotInfo = new ShareCacheStruct <PlotInfo>().FindKey(userInfo.PlotProgress);
                if (plotInfo != null)
                {
                    userLoginLog.PlotName = plotInfo.PlotName;
                }

                var sender = DataSyncManager.GetDataSender();
                sender.Send(userLoginLog);

                //int vipLv;
                //var vipLvArray = new ShareCacheStruct<VipLvInfo>().FindAll(u => u.PayGold <= userInfo.PayGold);
                //vipLv = vipLvArray.Count > 0 ? vipLvArray[vipLvArray.Count - 1].VipLv : (short)0;

                userInfo.LoginTime = DateTime.Now;
                userInfo.SessionID = Sid;
                userInfo.IsOnline  = true;
                //userInfo.VipLv = vipLv;
                userInfo.GameId          = GameType;
                userInfo.ServerId        = ServerID;
                userInfo.ChatVesion      = 0;
                userInfo.ChatDate        = DateTime.MinValue;
                userInfo.BroadcastVesion = 0;
                if (userInfo.DailyLoginTime == MathUtils.SqlMinDate ||
                    userInfo.DailyLoginTime.Date != DateTime.Now.Date)
                {
                    userInfo.DailyLoginTime = DateTime.Now;
                }
                //todo
                RankingHelper.DailySportsRankPrize(userInfo);
            }
            else
            {
                user = new SessionUser()
                {
                    UserId     = userId,
                    PassportId = PassportId
                };
                ErrorCode = 1005;
                ErrorInfo = LanguageManager.GetLang().St1005_RoleCheck;
            }
            return(true);
        }
Beispiel #34
0
        public override bool TakeAction()
        {
            var cacheSet = new ShareCacheStruct <UserFriends>();

            _isSuccess = 1;
            if (_friendId != "")
            {
                //找到本玩家的数据
                List <UserFriends> friendArray = cacheSet.FindAll(m => m.UserID == ContextUser.UserID);
                int friendNum = ConfigEnvSet.GetInt("UserFriends.MaxFriendNum");
                //添加的好友上限
                if (friendArray.Count >= friendNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St9103_TheMaximumReachedAFriend;
                    return(false);
                }
                //查看是否在user库中有该玩家
                GameUser userInfo = new GameDataCacheSet <GameUser>().FindKey(_friendId);
                if (userInfo == null)
                {
                    UserCacheGlobal.LoadOffline(_friendId);
                    userInfo = new GameDataCacheSet <GameUser>().FindKey(_friendId);
                }
                if (userInfo == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St9103_NotFriendsUserID;
                    return(false);
                }

                //在好友表中查找本玩家 和添加好友的关系
                var userFriend  = cacheSet.FindKey(ContextUser.UserID, _friendId);
                var userFriend1 = cacheSet.FindKey(_friendId, ContextUser.UserID);

                if (userFriend == null)
                {
                    //创建新的数据 并且添加成关注类型
                    var friends = new UserFriends
                    {
                        UserID     = ContextUser.UserID,
                        FriendID   = _friendId,
                        FriendType = FriendType.Attention
                    };
                    cacheSet.Add(friends);
                    //todo test
                    friends.ChatTime = DateTime.Now;
                }
                //如果玩家数据不为空
                else
                {
                    //判断两个玩家的关系
                    if (userFriend.FriendType == FriendType.Friend)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St9103_TheUserHasAFriendIn;
                        return(false);
                    }

                    ////如果已经发送请求就不在继续发
                    //if (userFriend.FriendType == FriendType.Attention)
                    //{
                    //    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    //    ErrorInfo = LanguageManager.GetLang().St_FirendNoticeTip;
                    //    return false;
                    //}

                    //加好友都是变为关注 从仇敌那里也能转换为关注
                    if (userFriend.FriendType != FriendType.Friend)
                    {
                        userFriend.FriendType = FriendType.Attention;
                    }
                }

                //判断对方是否有和本玩家的数据 如果没有创建 有改状态
                if (userFriend1 == null)
                {
                    var friends2 = new UserFriends
                    {
                        UserID     = _friendId,
                        FriendID   = ContextUser.UserID,
                        FriendType = FriendType.Fans,
                    };
                    cacheSet.Add(friends2);
                    //todo test
                    friends2.ChatTime = DateTime.Now;
                }

                // 发送系统信件
                try
                {
                    Guid     newGuid  = Guid.NewGuid();
                    UserMail userMail = new UserMail(newGuid);
                    userMail.UserId       = Int32.Parse(_friendId);
                    userMail.MailType     = (int)MailType.Friends;
                    userMail.Title        = LanguageManager.GetLang().St_AskFirendMailTitle;
                    userMail.Content      = string.Format(LanguageManager.GetLang().St_AskFirendTip, ContextUser.NickName);
                    userMail.SendDate     = DateTime.Now;
                    userMail.IsReply      = true;
                    userMail.ReplyStatus  = 0;
                    userMail.FromUserId   = Int32.Parse(ContextUser.UserID);
                    userMail.FromUserName = ContextUser.NickName;
                    TjxMailService mailService = new TjxMailService(ContextUser);
                    mailService.Send(userMail);
                }
                catch (Exception)
                {
                }
            }
            //上传的好友名字不为空
            else if (_friendName != null)
            {
                List <UserFriends> friendArray = cacheSet.FindAll(m => m.UserID == ContextUser.UserID);
                int friendNum = ConfigEnvSet.GetInt("UserFriends.MaxFriendNum");
                if (friendArray.Count >= friendNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St9103_TheMaximumReachedAFriend;
                    return(false);
                }
                GameUser friend = null;
                new GameDataCacheSet <GameUser>().Foreach((personalId, key, user) =>
                {
                    if (user.NickName == _friendName)
                    {
                        friend = user;
                        return(false);
                    }
                    return(true);
                });
                if (friend != null)
                {
                    GameUser    gameUser   = new GameDataCacheSet <GameUser>().FindKey(friend.UserID);
                    UserFriends userFriend = cacheSet.FindKey(ContextUser.UserID, _friendId);
                    if (userFriend != null)
                    {
                        if (userFriend.FriendType == FriendType.Fans)
                        {
                            this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                            this.ErrorInfo = LanguageManager.GetLang().St9103_TheUserHasTheFansIn;
                            return(false);
                        }
                        else if (userFriend.FriendType == FriendType.Blacklist)
                        {
                            this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                            this.ErrorInfo = LanguageManager.GetLang().St9103_TheUserHasTheBlacklist;
                            return(false);
                        }
                        else
                        {
                            this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                            this.ErrorInfo = LanguageManager.GetLang().St9103_TheUserHasAFriendIn;
                            return(false);
                        }
                    }
                    UserFriends friends = new UserFriends()
                    {
                        UserID     = ContextUser.UserID,
                        FriendID   = gameUser.UserID,
                        FriendType = FriendType.Attention
                    };
                    cacheSet.Add(friends);

                    UserFriends friends2 = new UserFriends()
                    {
                        UserID     = gameUser.UserID,
                        FriendID   = ContextUser.UserID,
                        FriendType = FriendType.Fans,
                    };
                    cacheSet.Add(friends2);
                }
                else
                {
                    this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                    this.ErrorInfo = LanguageManager.GetLang().St9103_DoesNotExistTheUser;
                    return(false);
                }
            }
            return(true);
        }
Beispiel #35
0
        public override bool TakeAction()
        {
            UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID);
            chaoShengNum = ConfigEnvSet.GetInt("GuildMember.QiXingZhaoSheng");
            var         guidCacheSet = new ShareCacheStruct <GuildMember>();
            GuildMember member       = guidCacheSet.FindKey(ContextUser.MercenariesID, ContextUser.UserID);

            if (member != null)
            {
                List <GuildMember> gmemberArray = new ShareCacheStruct <GuildMember>().FindAll(m => m.GuildID == member.GuildID && m.IsDevil == 1);
                foreach (GuildMember guildMember in gmemberArray)
                {
                    if (guildMember.DevilDate.Date != DateTime.Now.Date)
                    {
                        guildMember.IsDevil  = 2;
                        guildMember.DevilNum = 0;
                    }
                }
                memberArray = new ShareCacheStruct <GuildMember>().FindAll(m => m.GuildID == member.GuildID && m.IsDevil == 1 && (DateTime.Now.Date == m.DevilDate.Date));
                foreach (GuildMember guildMember in memberArray)
                {
                    currNum = MathUtils.Addition(currNum, guildMember.CurrNum, int.MaxValue);
                    if (guildMember.UserID == ContextUser.UserID)
                    {
                        isPilgrimage = 1;
                    }
                }
                int totalNum = MathUtils.Addition(memberArray.Count, currNum, int.MaxValue);
                if (totalNum >= 7)
                {
                    isSuccess = 1;
                    foreach (GuildMember guildMember in memberArray)
                    {
                        guildMember.IsDevil = 2;
                        if (guildMember.DevilNum <= 1)
                        {
                            GameUser gameUser = UserCacheGlobal.CheckLoadUser(guildMember.UserID);
                            if (gameUser != null)
                            {
                                gameUser.ObtainNum = MathUtils.Addition(gameUser.ObtainNum, chaoShengNum, int.MaxValue);
                                UserHelper.Contribution(guildMember.UserID, chaoShengNum);
                                GuildMemberLog.AddLog(member.GuildID, new MemberLog()
                                {
                                    UserID     = guildMember.UserID,
                                    IdolID     = 0,
                                    LogType    = 1,
                                    GainObtion = chaoShengNum,
                                    Experience = chaoShengNum,
                                    GainAura   = 0,
                                    InsertDate = DateTime.Now,
                                });
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        guildMember.CurrNum = 0;
                    }
                }
                else
                {
                    isSuccess = 2;
                }
            }
            return(true);
        }
Beispiel #36
0
        private static GeneralProperty GetAbilityProperty(string userID, int generalID, AbilityType abilityType)
        {
            decimal     val         = 0;
            int         careerID    = 0;
            UserGeneral ugeneral    = new PersonalCacheStruct <UserGeneral>().FindKey(userID, generalID);
            GeneralInfo generalInfo = new ShareCacheStruct <GeneralInfo>().FindKey(generalID);

            if (ugeneral != null)
            {
                careerID = ugeneral.CareerID;
            }
            else if (generalInfo != null)
            {
                careerID = generalInfo.CareerID;
            }

            if (abilityType == AbilityType.WuLiGongJi || abilityType == AbilityType.WuLiFangYu || abilityType == AbilityType.HunJiGongJi || abilityType == AbilityType.HunJiFangYu || abilityType == AbilityType.MoFaGongJi || abilityType == AbilityType.MoFaFangYu)
            {
                int equNum      = GetEquNum(userID, generalID, abilityType).ToInt();
                int fateNum     = GetFateNum(userID, generalID, abilityType).ToInt();
                int propertyNum = GetPropertyNum(userID, generalID, abilityType).ToInt();
                int magicNum    = (int)GetEmbattleNum(userID, abilityType);
                int upgradeNum  = GeneralUpGradeProperty(userID, generalID, abilityType).ToInt();

                val = MathUtils.Addition(equNum, fateNum, int.MaxValue);
                val = MathUtils.Addition(val, propertyNum, int.MaxValue);
                val = MathUtils.Addition(val, magicNum, int.MaxValue);
                val = MathUtils.Addition(val, upgradeNum);

                //佣兵好感度数值加成
                int feelNum = FeelEffectNum(userID, generalID, abilityType);
                val = MathUtils.Addition(val, feelNum, int.MaxValue);
                //法宝附加属性值
                int trumpPro = (int)TrumpAbilityAttack.TrumpGeneralProperty(userID, generalID, abilityType);
                val = MathUtils.Addition(val, trumpPro, int.MaxValue);

                //附魔符属性值
                int enchantNum = EnchantProprety(userID, generalID, abilityType).ToInt();
                val = MathUtils.Addition(val, enchantNum);

                //属性转换
                //val = MathUtils.Addition(val, (int)TrumpAbilityAttack.ConversionPropertyNum(userID, val, abilityType), int.MaxValue);
            }
            else if (abilityType == AbilityType.BaoJi || abilityType == AbilityType.MingZhong || abilityType == AbilityType.PoJi || abilityType == AbilityType.RenXing || abilityType == AbilityType.ShanBi || abilityType == AbilityType.GeDang || abilityType == AbilityType.BiSha)
            {
                val = GetCareerNum(careerID, abilityType);
                val = MathUtils.Addition(val, GetEquNum(userID, generalID, abilityType), decimal.MaxValue);
                val = MathUtils.Addition(val, GetFateNum(userID, generalID, abilityType), decimal.MaxValue);
                val = MathUtils.Addition(val, GetEmbattleNum(userID, abilityType), decimal.MaxValue);
                val = MathUtils.Addition(val, GeneralUpGradeProperty(userID, generalID, abilityType).ToDecimal());
                //法宝附加属性值
                decimal trumpPro = TrumpAbilityAttack.TrumpGeneralProperty(userID, generalID, abilityType);
                val = MathUtils.Addition(val, trumpPro, int.MaxValue);

                //附魔符属性值
                decimal enchantNum = EnchantProprety(userID, generalID, abilityType);
                val = MathUtils.Addition(val, enchantNum);

                //属性转换
                //val = MathUtils.Addition(val, TrumpAbilityAttack.ConversionPropertyNum(userID, val, abilityType), decimal.MaxValue);
            }
            return(new GeneralProperty()
            {
                AbilityType = abilityType, AbilityValue = val
            });
        }
Beispiel #37
0
        public override bool TakeAction()
        {
            bool isAtevent = false;
            var  guildsSet = new ShareCacheStruct <GuildsCache>();
            var  guildData = guildsSet.FindKey(GetGuild.GuildID);

            if (guildData == null)
            {
                return(false);
            }


            var member = guildData.FindMember(Current.UserId);

            if (member == null)
            {
                return(false);
            }

            isAtevent = member.JobTitle == GuildJobTitle.Atevent;


            guildData.RemoveMember(member);
            GetGuild.GuildID = string.Empty;

            if (guildData.MemberList.Count > 0)
            {
                if (isAtevent)
                {
                    var ac = guildData.FindAteventCandidate();
                    if (ac != null)
                    {
                        ac.JobTitle = GuildJobTitle.Atevent;
                        foreach (var v in guildData.MemberList)
                        {
                            PushMessageHelper.GuildMemberChangeNotification(GameSession.Get(v.UserID), ac.UserID);
                        }
                    }
                }

                GuildLogData log = new GuildLogData()
                {
                    UserId   = Current.UserId,
                    UserName = GetBasis.NickName,
                    LogTime  = DateTime.Now,
                    Content  = string.Format("玩家 {0} 退出了公会。", GetBasis.NickName),
                };
                guildData.NewLog(log);

                foreach (var v in guildData.MemberList)
                {
                    PushMessageHelper.GuildMemberRemoveNotification(GameSession.Get(v.UserID), Current.UserId);
                    PushMessageHelper.NewGuildLogNotification(GameSession.Get(v.UserID));
                }
            }


            GlobalRemoteService.SendUserData(GetBasis, GetGuild.GuildID);

            receipt = true;
            return(true);
        }
Beispiel #38
0
        public override bool TakeAction()
        {
            ItemBaseInfo itemInfo      = new ShareCacheStruct <ItemBaseInfo>().FindKey(medicineID);
            var          userItemArray = UserItemHelper.GetItems(Uid).FindAll(u => (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu));

            if (userItemArray.Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1407_MedicineNum;
                return(false);
            }
            UserGeneral general = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (general == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St10006_DoesNotExistTheGeneral;
                return(false);
            }
            if (itemInfo.DemandLv > general.GeneralLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                return(false);
            }

            int   sum     = 0;
            short baseNum = 0;
            //佣兵服用ID为medicineID的丹药
            var generalMedicineArray = new PersonalCacheStruct <GeneralMedicine>().FindAll(ContextUser.UserID, g => g.MedicineID.Equals(medicineID) && g.GeneralID == generalID);

            if (generalMedicineArray.Count > 0)
            {
                int mLv  = itemInfo.MedicineLv;
                int mNum = generalMedicineArray.Count;
                if (mLv == 1 && mNum >= 2 || mLv == 2 && mNum >= 3 || mLv == 3 && mNum >= 4 || mLv == 4 && mNum >= 5 || mLv == 5 && mNum >= 6 || mLv == 6 && mNum >= 7)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1407_MedicineNumFull;
                    return(false);
                }

                sum     = mNum * 5; //
                baseNum = MathUtils.Subtraction(itemInfo.MedicineNum, (short)sum, (short)0);
            }
            else
            {
                baseNum = itemInfo.MedicineNum;
            }

            //vip
            int useGold = 0;

            int[] vipMeArray = { 30, 150, 300, 600, 1200, 2400 };
            for (int i = 1; i <= vipMeArray.Length; i++)
            {
                if (itemInfo.MedicineLv == i)
                {
                    useGold = vipMeArray[i - 1];
                }
            }

            if (ops == 0)
            {
                GeneralMedicine generalMedicine = new GeneralMedicine()
                {
                    GeneralMedicineID = Guid.NewGuid().ToString(),
                    UserID            = ContextUser.UserID,
                    GeneralID         = generalID,
                    MedicineID        = medicineID,
                    BaseNum           = (int)baseNum
                };
                var cacheSet = new PersonalCacheStruct <GeneralMedicine>();
                cacheSet.Add(generalMedicine);

                UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1);

                if (itemInfo.MedicineType == 1)
                {
                    general.PowerNum = MathUtils.Addition(general.PowerNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 2)
                {
                    general.SoulNum = MathUtils.Addition(general.SoulNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 3)
                {
                    general.IntellectNum = MathUtils.Addition(general.IntellectNum, baseNum, short.MaxValue);
                }
                //general.Update();
            }
            else if (ops == 1)
            {
                ErrorCode = 1;
                ErrorInfo = string.Format(LanguageManager.GetLang().St1407_MedicineUseGold, useGold);
                return(false);
            }
            else if (ops == 2)
            {
                if (ContextUser.GoldNum < useGold)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }

                GeneralMedicine generalMedicine = new GeneralMedicine()
                {
                    GeneralMedicineID = Guid.NewGuid().ToString(),
                    UserID            = ContextUser.UserID,
                    GeneralID         = generalID,
                    MedicineID        = medicineID,
                    BaseNum           = (int)baseNum
                };
                var cacheSet = new PersonalCacheStruct <GeneralMedicine>();
                cacheSet.Add(generalMedicine);

                ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue);
                //ContextUser.Update();

                if (itemInfo.MedicineType == 1)
                {
                    general.PowerNum = MathUtils.Addition(general.PowerNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 2)
                {
                    general.SoulNum = MathUtils.Addition(general.SoulNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 3)
                {
                    general.IntellectNum = MathUtils.Addition(general.IntellectNum, baseNum, short.MaxValue);
                }
                //general.Update();
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().UrlElement;
                return(false);
            }
            return(true);
        }
Beispiel #39
0
        protected override void ChangeRankNo(GuildRank item)
        {
            var guilddata = new ShareCacheStruct <GuildsCache>().FindKey(item.GuildID);

            guilddata.RankID = item.RankId;
        }
Beispiel #40
0
        public override void BuildPacket()
        {
            this.PushIntoStack(plotList.Count);
            foreach (PlotInfo plotInfo in plotList)
            {
                DataStruct ds = new DataStruct();
                ds.PushIntoStack(plotInfo.PlotID);
                ds.PushIntoStack(plotInfo.CityID);
                ds.PushIntoStack(plotInfo.PlotType.ToShort());
                ds.PushIntoStack(plotInfo.PlotSeqNo);
                ds.PushIntoStack(plotInfo.PlotName.ToNotNullString());
                ds.PushIntoStack(plotInfo.BossHeadID.ToNotNullString());
                ds.PushIntoStack(plotInfo.BgScene.ToNotNullString());
                ds.PushIntoStack(plotInfo.FgScene.ToNotNullString());
                ds.PushIntoStack(plotInfo.AftPlotID);
                ds.PushIntoStack(plotInfo.SceneY1);
                ds.PushIntoStack(plotInfo.SceneY2);

                var npcList = new ShareCacheStruct <PlotNPCInfo>().FindAll(m => m.PlotID == plotInfo.PlotID);
                ds.PushIntoStack(npcList.Count);
                foreach (PlotNPCInfo npcInfo in npcList)
                {
                    DataStruct dsItem = new DataStruct();
                    dsItem.PushIntoStack(npcInfo.PlotNpcID);
                    dsItem.PushIntoStack(npcInfo.NpcName.ToNotNullString());
                    dsItem.PushIntoStack(npcInfo.HeadID.ToNotNullString());
                    dsItem.PushIntoStack(npcInfo.NpcSeqNo.ToInt());
                    dsItem.PushIntoStack(npcInfo.PointX);
                    dsItem.PushIntoStack(npcInfo.PointY);
                    dsItem.PushIntoStack(npcInfo.NpcTip.ToNotNullString());
                    dsItem.PushIntoStack(npcInfo.PreStoryCode.ToNotNullString());
                    dsItem.PushIntoStack(npcInfo.AftStoryCode.ToNotNullString());
                    dsItem.PushIntoStack(npcInfo.IsBoss.ToShort());

                    var plotEmbattleList = new ShareCacheStruct <PlotEmbattleInfo>().FindAll(m => m.PlotNpcID == npcInfo.PlotNpcID);
                    dsItem.PushIntoStack(plotEmbattleList.Count);
                    foreach (PlotEmbattleInfo embattleInfo in plotEmbattleList)
                    {
                        MonsterInfo monster = new ShareCacheStruct <MonsterInfo>().FindKey(embattleInfo.MonsterID);
                        if (monster == null)
                        {
                            SaveLog(new Exception(string.Format(LanguageManager.GetLang().St4011_NoMonster, plotInfo.PlotID, embattleInfo.MonsterID)));
                        }
                        DataStruct dsItem1 = new DataStruct();
                        dsItem1.PushIntoStack(embattleInfo.MonsterID);
                        dsItem1.PushIntoStack(embattleInfo.GridSeqNo.ToInt());
                        dsItem1.PushIntoStack(monster == null ? (short)0 : monster.MonsterType.ToShort());
                        dsItem1.PushIntoStack(monster == null ? string.Empty : monster.HeadID.ToNotNullString());
                        dsItem1.PushIntoStack(monster == null ? string.Empty : monster.GeneralName.ToNotNullString());
                        dsItem1.PushIntoStack(monster == null ? (short)0 : monster.GeneralLv.ToShort());
                        dsItem1.PushIntoStack(monster == null ? (int)0 : monster.LifeNum);
                        dsItem1.PushIntoStack(monster == null ? (int)0 : monster.MomentumNum);
                        dsItem1.PushIntoStack(monster == null ? (short)0 : monster.CareerID);
                        dsItem1.PushIntoStack(monster == null ? (int)0 : monster.ItemID);

                        dsItem.PushIntoStack(dsItem1);
                    }


                    ds.PushIntoStack(dsItem);
                }
                this.PushIntoStack(ds);
            }
        }
Beispiel #41
0
        public override bool TakeAction()
        {
            if (string.IsNullOrEmpty(name))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6405_GuildBannerNotEnough;
                return(false);
            }
            UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);

            if (guild == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6011_GuildMemberNotMember;
                return(false);
            }
            GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);

            if (member == null || member.PostType == PostType.Member)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_OrdinaryMemberNotCompetence;
                return(false);
            }
            FightCombat fightCombat = new FightCombat();
            int         fastID      = MathUtils.Subtraction(fightCombat.FastID, 1);
            ServerFight fight       = new ShareCacheStruct <ServerFight>().FindKey(fastID, ContextUser.MercenariesID);

            if (fight != null && fight.IsBanner)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6413_HaveBeenModified;
                return(false);
            }

            if (fight == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6405_GuildNotEnterName;
                return(false);
            }

            if (name.Length > 1)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6405_FillInACharacter;
                return(false);
            }

            if (fight.FastID == fastID && fight.RankID == 1 && !fight.IsRemove)
            {
                if (fight.IsBanner)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St6413_HaveBeenModified;
                    return(false);
                }
                fight.IsBanner = true;
            }
            fight.GuildBanner = name.Substring(0, 1);
            ErrorCode         = 0;
            ErrorInfo         = LanguageManager.GetLang().St6405_SettingTheBannerSuccess;
            return(true);
        }
Beispiel #42
0
        /// <summary>
        /// 玩家获得奖励
        /// </summary>
        /// <param name="userInfo"></param>
        /// <param name="prizeList"></param>
        /// <returns></returns>
        public static string GetPrizeUserTake(GameUser userInfo, List <PrizeInfo> prizeList)
        {
            string prizeContent = string.Empty;

            foreach (var prize in prizeList)
            {
                switch (prize.Type)
                {
                case RewardType.GameGoin:
                    userInfo.GameCoin = MathUtils.Addition(userInfo.GameCoin, prize.Num);
                    prizeContent     += string.Format(LanguageManager.GetLang().St_GameCoin, prize.Num) + ",";
                    break;

                case RewardType.ExpNum:
                    userInfo.ExpNum = MathUtils.Addition(userInfo.ExpNum, prize.Num);
                    prizeContent   += string.Format(LanguageManager.GetLang().St_ExpNum, prize.Num) + ",";
                    break;

                case RewardType.EnergyNum:
                    userInfo.EnergyNum = MathUtils.Addition(userInfo.EnergyNum, prize.Num.ToShort());
                    prizeContent      += string.Format(LanguageManager.GetLang().St_EnergyNum, prize.Num) + ",";
                    break;

                case RewardType.HonourNum:
                    GeneralEscalateHelper.AddUserLv(userInfo, prize.Num);
                    prizeContent += string.Format(LanguageManager.GetLang().St_HonourNum, prize.Num) + ",";
                    break;

                case RewardType.Experience:
                    UserHelper.UserGeneralExp(userInfo.UserID, prize.Num);
                    prizeContent += string.Format(LanguageManager.GetLang().St_Experience, prize.Num) + ",";
                    break;

                case RewardType.Gold:
                    userInfo.GiftGold = MathUtils.Addition(userInfo.GiftGold, prize.Num);
                    prizeContent     += string.Format(LanguageManager.GetLang().St_GiftGoldNum, prize.Num) + ",";
                    break;

                case RewardType.Item:
                    short        itemLv   = prize.UserLv > 0 ? prize.UserLv : 1.ToShort();
                    int          priNum   = prize.Num > 0 ? prize.Num : 1;
                    ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(prize.ItemID);
                    if (itemInfo != null)
                    {
                        UserItemHelper.AddUserItem(userInfo.UserID, itemInfo.ItemID, priNum, itemLv);
                        prizeContent += string.Format("{0}*{1}", itemInfo.ItemName, priNum) + ",";
                    }
                    break;

                case RewardType.CrystalType:
                    List <CrystalInfo> crystalArray = new ShareCacheStruct <CrystalInfo>().FindAll(s => s.CrystalQuality == prize.CrystalType);
                    if (crystalArray.Count > 0)
                    {
                        int         index1      = RandomUtils.GetRandom(0, crystalArray.Count);
                        CrystalInfo crystalInfo = crystalArray[index1];
                        short       crystalLv   = prize.UserLv > 0 ? prize.UserLv : 1.ToShort();
                        CrystalHelper.AppendCrystal(userInfo.UserID, crystalInfo.CrystalID, crystalLv);
                    }
                    break;

                case RewardType.CrystalId:
                    short       cLv     = prize.UserLv > 0 ? prize.UserLv : 1.ToShort();
                    CrystalInfo crystal = new ShareCacheStruct <CrystalInfo>().FindKey(prize.ItemID);
                    if (crystal != null)
                    {
                        CrystalHelper.AppendCrystal(userInfo.UserID, crystal.CrystalID, cLv);
                        prizeContent += string.Format("{0}*{1}", crystal.CrystalName, prize.Num) + ",";
                    }
                    break;

                case RewardType.Spare:
                    break;

                case RewardType.Enchant:
                    break;

                case RewardType.PayGold:
                    userInfo.PayGold = MathUtils.Addition(userInfo.PayGold, prize.Num);
                    prizeContent    += string.Format(LanguageManager.GetLang().St_PayGoldNum, prize.Num) + ",";
                    break;

                default:
                    break;
                }
            }
            return(prizeContent);
        }
Beispiel #43
0
        public static UserTakePrize GetUserTake(PrizeInfo prize, string userID, FestivalInfo info)
        {
            UserTakePrize userPrize = new UserTakePrize();

            userPrize.CreateDate     = DateTime.Now;
            userPrize.ID             = Guid.NewGuid().ToString();
            userPrize.UserID         = Convert.ToInt32(userID);
            userPrize.MailContent    = info.FestivalExtend.KeyWord;
            userPrize.IsTasked       = false;
            userPrize.TaskDate       = MathUtils.SqlMinDate;
            userPrize.ItemPackage    = string.Empty;
            userPrize.SparePackage   = string.Empty;
            userPrize.CrystalPackage = string.Empty;
            userPrize.EnchantPackage = string.Empty;
            userPrize.OpUserID       = 10000;
            switch (prize.Type)
            {
            case RewardType.GameGoin:
                userPrize.GameCoin     = prize.Num;
                userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GameCoin, prize.Num);
                break;

            case RewardType.Obtion:
                userPrize.ObtainNum    = prize.Num;
                userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ObtionNum, prize.Num);
                break;

            case RewardType.ExpNum:
                userPrize.ExpNum       = prize.Num;
                userPrize.MailContent += string.Format(LanguageManager.GetLang().St_ExpNum, prize.Num);
                break;

            case RewardType.EnergyNum:
                userPrize.EnergyNum    = prize.Num;
                userPrize.MailContent += string.Format(LanguageManager.GetLang().St_EnergyNum, prize.Num);
                break;

            case RewardType.Experience:
                break;

            case RewardType.Gold:
                userPrize.Gold         = prize.Num;
                userPrize.MailContent += string.Format(LanguageManager.GetLang().St_GiftGoldNum, prize.Num);
                break;

            case RewardType.Item:
                userPrize.ItemPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num);
                ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(prize.ItemID);
                if (itemInfo != null)
                {
                    userPrize.MailContent += string.Format("{0}*{1}", itemInfo.ItemName, prize.Num);
                }
                break;

            case RewardType.CrystalType:
                //List<CrystalInfo> crystalArray2 = new ShareCacheStruct<CrystalInfo>().FindAll(CrystalInfo.Index_CrystalQuality, prize.CrystalType);
                //userPrize.CrystalPackage = string.Format("{0}={1}={2}", itemID, prize.UserLv, itemNum);
                break;

            case RewardType.CrystalId:

                userPrize.CrystalPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num);
                CrystalInfo crystal = new ShareCacheStruct <CrystalInfo>().FindKey(prize.ItemID);
                if (crystal != null)
                {
                    userPrize.MailContent += string.Format("{0}*{1}", crystal.CrystalName, prize.Num);
                }
                break;

            case RewardType.Spare:
                userPrize.SparePackage = string.Format("{0}={1}={2}", prize.ItemID, prize.Num, prize.Num);
                SparePartInfo spare = new ShareCacheStruct <SparePartInfo>().FindKey(prize.ItemID);
                if (spare != null)
                {
                    userPrize.MailContent += string.Format("{0}*{1}", spare.Name, prize.Num);
                }
                break;

            case RewardType.Enchant:
                userPrize.EnchantPackage = string.Format("{0}={1}={2}", prize.ItemID, prize.UserLv, prize.Num);
                EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(prize.ItemID);
                if (enchantInfo != null)
                {
                    userPrize.MailContent += string.Format("{0}*{1}", enchantInfo.EnchantName, prize.Num);
                }
                break;

            default:
                break;
            }
            return(userPrize);
        }
Beispiel #44
0
        public static string HuntingLife(GameUser user, out string errStr)
        {
            #region
            errStr = string.Empty;
            int huntingID  = UserLightLit(user.UserID);
            int huntingID2 = UserNextLight(user.UserID, huntingID);
            UserDailyRestrain userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(user.UserID);
            var probabilityInfo            = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID); //当前猎命人物的概率
            if (probabilityInfo == null)
            {
                return(errStr);
            }
            ProbabilityInfo probability1 = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID2);
            if (userRestrain != null && userRestrain.Funtion2 >= VipHelper.GetVipUseNum(user.VipLv, RestrainType.MianFeiLieMing) && DateTime.Now.Date == userRestrain.RefreshDate.Date)
            {
                if (probabilityInfo.Price > user.GameCoin)
                {
                    errStr = LanguageManager.GetLang().St_GameCoinNotEnough;
                    return(errStr);
                }
            }
            //暑期第三弹
            if (huntingID2 == 1001 && !NoviceHelper.IsGianCrystalPack(user))
            {
                errStr = LanguageManager.GetLang().St1305_BeiBaoBackpackFull;
                return(errStr);
            }
            var lightCacheSet = new PersonalCacheStruct <UserLight>();
            if (huntingID != 1001)
            {
                UserLight userLight1 = lightCacheSet.FindKey(user.UserID, huntingID);
                if (userLight1.IsLight == 2)
                {
                    return(string.Empty);
                }
                if (userLight1.IsLight == 1)
                {
                    userLight1.IsLight = 2;
                }
            }
            UserLight userLight = new PersonalCacheStruct <UserLight>().FindKey(user.UserID, huntingID2);
            if (RandomUtils.IsHit(probability1.Light))
            {
                if (userLight != null)
                {
                    userLight.IsLight = 1;
                    if (userLight.HuntingID == 1005)
                    {
                        errStr = LanguageManager.GetLang().St1305_HuntingIDLight;
                    }
                }
                else
                {
                    userLight = new UserLight()
                    {
                        UserID    = user.UserID,
                        HuntingID = huntingID2,
                        IsLight   = 1
                    };
                    lightCacheSet.Add(userLight);
                }
            }

            if (userRestrain != null)
            {
                if (userRestrain.Funtion2 >= VipHelper.GetVipUseNum(user.VipLv, RestrainType.MianFeiLieMing) && DateTime.Now.Date == userRestrain.RefreshDate.Date)
                {
                    user.GameCoin = MathUtils.Subtraction(user.GameCoin, probabilityInfo.Price, 0);
                }
                else
                {
                    userRestrain.Funtion2 = MathUtils.Addition(userRestrain.Funtion2, 1, int.MaxValue);
                }
            }
            else
            {
                user.GameCoin = MathUtils.Subtraction(user.GameCoin, probabilityInfo.Price, 0);
            }

            //每种品质的概率
            double[]           probabilityArray2 = { (double)probabilityInfo.Gray, (double)probabilityInfo.Green, (double)probabilityInfo.Blue, (double)probabilityInfo.Purple, (double)probabilityInfo.Yellow, (double)probabilityInfo.Red };
            int                index2            = RandomUtils.GetHitIndex(probabilityArray2);
            CrystalQualityType qualityType       = (CrystalQualityType)Enum.Parse(typeof(CrystalQualityType), (index2 + 1).ToString());
            List <CrystalInfo> crystalArray2     = new ShareCacheStruct <CrystalInfo>().FindAll(u => u.CrystalQuality == qualityType && u.DemandLv <= user.UserLv);
            if (crystalArray2.Count > 0)
            {
                int randomNum = RandomUtils.GetRandom(0, crystalArray2.Count);
                var crystal   = new ShareCacheStruct <CrystalInfo>().FindKey(crystalArray2[randomNum].CrystalID);
                if (crystal != null && crystal.CrystalQuality == CrystalQualityType.Gray)
                {
                    //wuzf修改 8-15 灰色放在临时背包不存DB
                    CrystalHelper.AppendGrayCrystal(user, crystal.CrystalID);
                }
                else if (crystal != null)
                {
                    var package = UserCrystalPackage.Get(user.UserID);

                    UserCrystalInfo userCrystal = new UserCrystalInfo()
                    {
                        UserCrystalID = Guid.NewGuid().ToString(),
                        CrystalID     = crystal.CrystalID,
                        CrystalLv     = 1,
                        CurrExprience = 0,
                        GeneralID     = 0,
                        IsSale        = 1,
                        CreateDate    = DateTime.Now
                    };
                    package.SaveCrystal(userCrystal);
                    UserLogHelper.AppenCtystalLog(user.UserID, 5, crystal.CrystalID, probabilityInfo.Price, 0, null, 1, 0);
                    //高品质聊天通知);
                    if (crystal.CrystalQuality >= CrystalQualityType.Yellow)
                    {
                        var    cacheChat = new TjxChatService();
                        string content   = string.Format(LanguageManager.GetLang().St1305_HighQualityNotice,
                                                         user.NickName,
                                                         CrystalHelper.GetQualityName(crystal.CrystalQuality),
                                                         crystal.CrystalName
                                                         );
                        cacheChat.SystemSend(ChatType.World, content);
                    }
                }
            }
            return(errStr);

            #endregion
        }
Beispiel #45
0
        public override bool TakeAction()
        {
            UserHelper.GetFeelHunger(ContextUser.UserID, generalID);
            UserHelper.ChechDailyRestrain(ContextUser.UserID);
            generalInfo = new ShareCacheStruct <GeneralInfo>().FindKey(generalID);
            if (generalInfo != null)
            {
                giftName = GiftHelper.GetGiftTypeName(generalInfo.GiftType);
                if (generalInfo.ReplaceSkills != null)
                {
                    demandLv = generalInfo.ReplaceSkills.FeelLv;
                    AbilityInfo abilityInfo =
                        new ShareCacheStruct <AbilityInfo>().FindKey(generalInfo.ReplaceSkills.AbilityID);
                    if (abilityInfo != null)
                    {
                        skillName = abilityInfo.AbilityName;
                        skillDesc = abilityInfo.AbilityDesc;
                    }
                }
            }
            userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);
            if (userGeneral != null)
            {
                FeelLvInfo feelLvInfo = new ShareCacheStruct <FeelLvInfo>().FindKey(userGeneral.FeelLv);
                if (feelLvInfo != null)
                {
                    propertyList = feelLvInfo.Property.ToList();
                }
                short      feelLv       = MathUtils.Addition(userGeneral.FeelLv, (short)1, GiftHelper.maxFeelLv);
                FeelLvInfo upfeelLvInfo = new ShareCacheStruct <FeelLvInfo>().FindKey(feelLv);
                if (upfeelLvInfo != null)
                {
                    upExperience = upfeelLvInfo.Experience;
                }
                if (demandLv > 0 && userGeneral.FeelLv >= demandLv)
                {
                    isLearn = 1;
                }
                else
                {
                    isLearn = 0;
                }
            }

            goldNum = GiftHelper.SurplusGoldNum(ContextUser.UserID);
            int _itemid   = 5050; //消除饱食度物品ID
            var package   = UserItemPackage.Get(ContextUser.UserID);
            var itemArray =
                package.ItemPackage.FindAll(
                    m => m.ItemStatus.Equals(ItemStatus.BeiBao) && m.ItemID.Equals(_itemid));

            if (itemArray.Count > 0)
            {
                isSaturation = 1;
            }
            else
            {
                isSaturation = 0;
            }

            return(true);
        }
Beispiel #46
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);
        }
Beispiel #47
0
        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 ShareCacheStruct <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 PersonalCacheStruct <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 ShareCacheStruct<CareerInfo>().FindKey(userGeneralInfo.CareerID);
                headID       = userGeneralInfo.HeadID; //ContextUser.Sex ? careerInfo.HeadID2 : careerInfo.HeadID;
                escalateInfo = new ShareCacheStruct <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 PersonalCacheStruct <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 ShareCacheStruct <ItemBaseInfo>().FindKey(props.ItemID);
                if (itemInfo != null && pTime > pictureTime)
                {
                    pictureID   = itemInfo.PictrueID;
                    pictureTime = pTime;
                }
            }
            //兼容客户端上已版本血量图标
            List <UserProps> userPropsList2 = new PersonalCacheStruct <UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 1);

            if (userPropsList2.Count > 0)
            {
                UserProps    props    = userPropsList2[0];
                int          pTime    = props.DoRefresh();
                ItemBaseInfo itemInfo = new ShareCacheStruct <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 PersonalCacheStruct <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 PersonalCacheStruct <UserQueue>().Add(queue);
            }


            VipLvInfo lvInfo = new ShareCacheStruct <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 PersonalCacheStruct <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);
        }
Beispiel #48
0
        public override bool TakeAction()
        {
            if (string.IsNullOrEmpty(ContextUser.MercenariesID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6203_GuildMemberNotEnough;
                return(false);
            }
            GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);

            if (member == null || member.PostType == PostType.Member)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_OrdinaryMemberNotCompetence;
                return(false);
            }
            UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);

            if (guild == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }

            FightCombat fightCombat = new FightCombat();
            var         cacheSet    = new ShareCacheStruct <ServerFight>();
            ServerFight fight       = cacheSet.FindKey(fightCombat.FastID, ContextUser.MercenariesID);

            if (fight != null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_HaveSignedUp;
                return(false);
            }

            DateTime   nextDate;
            FightStage stage = GuildFightCombat.GetStage(out nextDate);

            if (GuildFightCombat.IsFightDate())
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_CityABattleTime;
                return(false);
            }

            if (stage != FightStage.Apply)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_CityABattleTime;
                return(false);
            }

            //if (DateTime.Now > fightCombat.GuildEndTime && DateTime.Now < fightCombat.GuildStartTime)
            //{
            //    ErrorCode = LanguageManager.GetLang().ErrorCode;
            //    ErrorInfo = LanguageManager.GetLang().St6404_OutRegistrationTime;
            //    return false;
            //}

            GuildFightInfo fightInfo = new ShareCacheStruct <GuildFightInfo>().FindKey(cityID);

            if (fightInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (guild.GuildLv < fightInfo.GuildLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_GuildLvNotEnough;
                return(false);
            }
            if (guild.CurrDonateNum < fightInfo.SkillNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6404_CurrDonateNumNotEnough;
                return(false);
            }
            guild.CurrDonateNum = MathUtils.Subtraction(guild.CurrDonateNum, fightInfo.SkillNum);

            fight             = new ServerFight(fightCombat.FastID, ContextUser.MercenariesID);
            fight.GuildBanner = string.Empty;
            fight.CityID      = cityID;
            fight.RankID      = 0;
            fight.ApplyDate   = DateTime.Now;
            fight.IsRemove    = false;
            fight.IsBanner    = false;
            cacheSet.Add(fight);
            ErrorCode = 0;
            ErrorInfo = LanguageManager.GetLang().St6401_SuccessfulRegistration;
            return(true);
        }
Beispiel #49
0
        public override bool TakeAction()
        {
            PostType    pType      = (PostType)Enum.Parse(typeof(PostType), postType.ToString());
            GuildMember gMember    = new ShareCacheStruct <GuildMember>().FindKey(guildID, memberID);
            GuildMember userMember = new ShareCacheStruct <GuildMember>().FindKey(guildID, ContextUser.UserID);

            if (userMember.PostType != PostType.Chairman)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6008_NotChairman;
                return(false);
            }
            if (ops == 1)
            {
                var memberArray = new ShareCacheStruct <GuildMember>().FindAll(m => m.GuildID == guildID && m.PostType == PostType.VicePresident);
                if (memberArray.Count >= 2)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St6008_VicePresidentNum;
                    return(false);
                }
                if (gMember != null)
                {
                    gMember.PostType = pType;
                    //gMember.Update();
                }
            }
            else if (ops == 2)
            {
                if (gMember.PostType != PostType.VicePresident)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St6008_NotVicePresident;
                    return(false);
                }
                if (gMember.PostType != PostType.Chairman)
                {
                    gMember.PostType = PostType.Chairman;
                    //gMember.Update();
                }
                if (userMember.PostType != PostType.Member)
                {
                    userMember.PostType = PostType.Member;
                    //userMember.Update();
                }
            }
            else if (ops == 3)
            {
                if (gMember.PostType != PostType.VicePresident)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St6008_NotVicePresidentCeXiao;
                    return(false);
                }

                if (gMember.PostType != PostType.Member)
                {
                    gMember.PostType = PostType.Member;
                    //gMember.Update();
                }
            }
            return(true);
        }
Beispiel #50
0
        public static int IsSelect(string guildID, BossDate bossDate)
        {
            DateTime   priod      = new DateTime();
            DateTime   endPriod   = new DateTime();
            int        isSelect   = 0;
            GameActive gameActive = new ShareCacheStruct <GameActive>().FindKey(UserGuild.ActiveID);

            UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(guildID);

            if (guild != null && guild.GuildBossInfo != null)
            {
                if (UserHelper.IsCurrentWeek(guild.GuildBossInfo.RefreshDate))
                {
                    priod    = UserHelper.GuildBossDate(guild.GuildBossInfo);
                    endPriod = priod.AddMinutes(gameActive.Minutes);

                    if (guild.GuildBossInfo.EnableWeek == (int)bossDate.EnableWeek)
                    {
                        isSelect = 1;
                    }
                    else if (DateTime.Now > endPriod)
                    {
                        isSelect = 2;
                    }
                    else if ((priod - DateTime.Now).TotalSeconds > 3600)
                    {
                        isSelect = 0;
                    }
                }
                else
                {
                    priod    = UserHelper.GuildEnableWeek(bossDate.EnableWeek);
                    endPriod = priod.AddMinutes(gameActive.Minutes);
                    if ((priod - DateTime.Now).TotalSeconds > 3600)
                    {
                        isSelect = 0;
                    }
                    else if (DateTime.Now > endPriod)
                    {
                        isSelect = 2;
                    }
                }
            }
            else
            {
                priod    = UserHelper.GuildEnableWeek(bossDate.EnableWeek);
                endPriod = priod.AddMinutes(gameActive.Minutes);
                if (DateTime.Now > endPriod)
                {
                    isSelect = 2;
                }
                else if ((priod - DateTime.Now).TotalSeconds > 3600)
                {
                    isSelect = 0;
                }
                else
                {
                    isSelect = 2;
                }
            }

            return(isSelect);
        }
Beispiel #51
0
        public override bool TakeAction()
        {
            int    currMaxLv  = GameConfigSet.CurrMaxLv;
            string lifeUserID = string.Empty;

            UserCrystalInfo[] userCrystalsArrray = new UserCrystalInfo[0];
            if (!string.IsNullOrEmpty(toUserID))
            {
                var packageCrystal = UserCrystalPackage.Get(toUserID);
                userGeneral        = new PersonalCacheStruct <UserGeneral>().FindKey(toUserID, generalID);
                userCrystalsArrray = packageCrystal.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(generalID)).ToArray();
                var package = UserItemPackage.Get(toUserID);
                userItemArray = package.ItemPackage.FindAll(
                    u => !u.IsRemove && u.GeneralID.Equals(generalID) &&
                    u.ItemStatus == ItemStatus.YongBing);
                lifeUserID = toUserID;
            }
            else
            {
                var packageCrystal = UserCrystalPackage.Get(ContextUser.UserID);
                userGeneral        = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);
                userCrystalsArrray = packageCrystal.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(generalID)).ToArray();

                var package = UserItemPackage.Get(ContextUser.UserID);
                userItemArray = package.ItemPackage.FindAll(u => !u.IsRemove && u.GeneralID.Equals(generalID) && u.ItemStatus == ItemStatus.YongBing);
                lifeUserID    = ContextUser.UserID;
            }
            UserCacheGlobal.LoadOffline(lifeUserID);
            GeneralInfo generalInfo = new ShareCacheStruct <GeneralInfo>().FindKey(generalID);

            generalQuality = generalInfo == null ? (short)0 : generalInfo.GeneralQuality;
            if (generalInfo != null && userGeneral != null)
            {
                description = generalInfo.Description;
                if (userGeneral.GeneralLv >= currMaxLv)
                {
                    genLv = (short)currMaxLv;
                    userGeneral.CurrExperience = 0;
                }
                else
                {
                    genLv = userGeneral.GeneralLv;
                }
                generalName     = userGeneral.GeneralName;
                headID          = userGeneral.HeadID;
                picturesID      = userGeneral.PicturesID;
                _battleHeadId   = generalInfo.BattleHeadID;
                _hitProbability = generalInfo.HitProbability;
                careerInfo      = new ShareCacheStruct <CareerInfo>().FindKey(userGeneral.CareerID);
                GeneralEscalateInfo generalEscalate = new ShareCacheStruct <GeneralEscalateInfo>().FindKey(genLv);
                if (generalEscalate != null)
                {
                    currExperience = userGeneral.CurrExperience;
                    maxExperience  = generalEscalate.UpExperience;
                }
                powerNum     = MathUtils.Addition(userGeneral.PowerNum, userGeneral.TrainingPower, short.MaxValue);
                soulNum      = MathUtils.Addition(userGeneral.SoulNum, userGeneral.TrainingSoul, short.MaxValue);
                intellectNum = MathUtils.Addition(userGeneral.IntellectNum, userGeneral.TrainingIntellect, short.MaxValue);
                if (!string.IsNullOrEmpty(ContextUser.MercenariesID) && generalID == LanguageManager.GetLang().GameUserGeneralID)
                {
                    //公会技能加成
                    powerNum     = MathUtils.RoundCustom(powerNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.PowerNum)).ToShort();
                    soulNum      = MathUtils.RoundCustom(soulNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.SoulNum)).ToShort();
                    intellectNum = MathUtils.RoundCustom(intellectNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.IntellectNum)).ToShort();
                }
                if (generalID == LanguageManager.GetLang().GameUserGeneralID)
                {
                    //法宝基础属性加成
                    powerNum     = MathUtils.Addition(powerNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.PowerNum));
                    soulNum      = MathUtils.Addition(soulNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.SoulNum));
                    intellectNum = MathUtils.Addition(intellectNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.IntelligenceNum));

                    //法宝--技能属性转换获得的值
                    //法宝--技能属性转换获得的值
                    decimal trumpPower     = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.PowerNum);
                    decimal trumpsoul      = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.SoulNum);
                    decimal trumpintellect = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.IntelligenceNum);
                    powerNum     = MathUtils.Addition(trumpPower.ToShort(), powerNum);
                    soulNum      = MathUtils.Addition(trumpsoul.ToShort(), soulNum);
                    intellectNum = MathUtils.Addition(trumpintellect.ToShort(), intellectNum);
                }
                lifeNum       = userGeneral.LifeNum;
                lifeMaxNum    = UserHelper.GetMaxLife(lifeUserID, generalID);
                genLv         = userGeneral.GeneralLv;
                generalStatus = (short)userGeneral.GeneralStatus;

                talentAbility = userGeneral.AbilityID;
                _potential    = userGeneral.Potential;
                _battleHeadID = generalInfo.BattleHeadID;
                //玩家佣兵职业名称
                userCareerName = careerInfo.CareerName;
            }
            else if (generalInfo != null)
            {
                genLv         = 1;
                generalName   = generalInfo.GeneralName;
                headID        = generalInfo.HeadID;
                picturesID    = generalInfo.PicturesID;
                _battleHeadId = generalInfo.BattleHeadID;
                careerInfo    = new ShareCacheStruct <CareerInfo>().FindKey(generalInfo.CareerID);
                GeneralEscalateInfo generalEscalate = new ShareCacheStruct <GeneralEscalateInfo>().FindKey(genLv);
                if (generalEscalate != null)
                {
                    currExperience = 0;
                    maxExperience  = generalEscalate.UpExperience;
                }
                powerNum      = generalInfo.PowerNum;
                soulNum       = generalInfo.SoulNum;
                intellectNum  = generalInfo.IntellectNum;
                lifeNum       = generalInfo.LifeNum;
                lifeMaxNum    = generalInfo.LifeNum;
                genLv         = generalInfo.GeneralLv;
                generalStatus = (short)GeneralStatus.KeZhaoMu;

                talentAbility = generalInfo.AbilityID;
            }
            AbilityInfo ability = new ShareCacheStruct <AbilityInfo>().FindKey(talentAbility);

            talentName = ability == null ? string.Empty : ability.AbilityName;

            gPropertyList = CombatHelper.GetAbility(lifeUserID, generalID, userGeneral);

            int sumCrystal = 0;

            foreach (UserCrystalInfo crystal in userCrystalsArrray)
            {
                sumCrystal = MathUtils.Addition(sumCrystal, crystal.CurrExprience, int.MaxValue);
            }
            vitalityNum  = (sumCrystal / 10);
            functionList = ViewHelper.GetFunctionList(lifeUserID);

            //佣兵魂技
            UserAbility userAbility = new PersonalCacheStruct <UserAbility>().FindKey(ContextUser.UserID);

            if (userAbility != null)
            {
                abilityList = userAbility.AbilityList.FindAll(s => s.GeneralID == generalID);
            }
            soulGrid = UserPackHelper.GetPackTypePositionNum(BackpackType.HunJi, ContextUser.UserID);

            // 缘分系统
            KarmaInfo karmaInfo = new ShareCacheStruct <KarmaInfo>().FindKey(generalID);

            if (karmaInfo != null && karmaInfo.KarmaList != null)
            {
                // 满足缘分条件显示激活状态

                // 判断佣兵
                UserMagic    userMagic            = new PersonalCacheStruct <UserMagic>().Find(ContextUser.UserID, s => s.IsEnabled);
                var          cacheSetUserEmbattle = new PersonalCacheStruct <UserEmbattle>();
                List <Karma> yongBingList         = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.YongBing);
                yongBingList.ForEach(yongBingInfo =>
                {
                    //yongBingInfo.IsActive = 1;
                    // 若阵型中存在该记录,该缘分为激活状态
                    if (yongBingInfo.ValueID.Contains(","))
                    {
                        string[] valueID = yongBingInfo.ValueID.Split(',');
                        int i            = 0;
                        foreach (var id in valueID)
                        {
                            if (cacheSetUserEmbattle.Find(ContextUser.UserID, s => s.MagicID == userMagic.MagicID && s.GeneralID == MathUtils.ToInt(id)) != null)
                            {
                                i++;
                            }
                        }
                        yongBingInfo.IsActive = i == valueID.Length ? 1 : 0;
                    }
                    else
                    {
                        if (cacheSetUserEmbattle.Find(ContextUser.UserID, s => s.MagicID == userMagic.MagicID && s.GeneralID == MathUtils.ToInt(yongBingInfo.ValueID)) != null)
                        {
                            yongBingInfo.IsActive = 1;
                        }
                        else
                        {
                            yongBingInfo.IsActive = 0;
                        }
                    }
                });
                // 判断装备
                UserItemPackage itemPackage = new PersonalCacheStruct <UserItemPackage>().FindKey(UserId.ToString());
                if (itemPackage != null)
                {
                    List <Karma> itemList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.ZhuangBei);
                    itemList.ForEach(itemInfo =>
                    {
                        if (itemPackage.ItemPackage.Find(s => s.ItemID == MathUtils.ToInt(itemInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            itemInfo.IsActive = 1;
                        }
                        else
                        {
                            itemInfo.IsActive = 0;
                        }
                    });
                }

                // 判断命运水晶
                UserCrystalPackage crystalPackage = new PersonalCacheStruct <UserCrystalPackage>().FindKey(UserId.ToString());
                if (itemPackage != null)
                {
                    List <Karma> crystalList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.ShuiJing);
                    crystalList.ForEach(crystalInfo =>
                    {
                        if (crystalPackage.CrystalPackage.Find(s => s.CrystalID == MathUtils.ToInt(crystalInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            crystalInfo.IsActive = 1;
                        }
                        else
                        {
                            crystalInfo.IsActive = 0;
                        }
                    });
                }

                // 判断技能
                UserAbility userAbilityInfo = new PersonalCacheStruct <UserAbility>().FindKey(UserId.ToString());
                if (userAbilityInfo != null)
                {
                    List <Karma> abilityList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.JiNen);
                    abilityList.ForEach(abilityInfo =>
                    {
                        if (userAbilityInfo.AbilityList.Find(s => s.AbilityID == MathUtils.ToInt(abilityInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            abilityInfo.IsActive = 1;
                        }
                        else
                        {
                            abilityInfo.IsActive = 0;
                        }
                    });
                }
                karmaList = karmaInfo.KarmaList;
                if (userGeneral != null)
                {
                    lifeNum    = userGeneral.TLifeNum;
                    lifeMaxNum = userGeneral.TLifeMaxNun;
                }
            }
            return(true);
        }
Beispiel #52
0
        public override bool TakeAction()
        {
            //判断充值礼包是否开启
            FestivalInfo festivalInfo = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID);

            if (festivalInfo != null && !festivalInfo.IsStop)
            {
                return(false);
            }

            UserRecharge         recharges   = new GameDataCacheSet <UserRecharge>().FindKey(ContextUser.UserID);
            RechargePacks        rePacksInfo = new ConfigCacheSet <RechargePacks>().FindKey(_packsID);
            List <PackageReward> rewardArray = new List <PackageReward>();

            if (rePacksInfo != null)
            {
                rewardArray = rePacksInfo.Reward.ToList();
                var userItemArray = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);
                int subPackNum    = MathUtils.Subtraction(ContextUser.GridNum, userItemArray.Count, 0);
                if (rewardArray.Count > subPackNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                    return(false);
                }
            }
            else
            {
                return(false);
            }
            if (!isRecevies(ContextUser.UserID, _packsID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived;
                return(false);
            }
            List <PackageReceive> receiveArray = new GameDataCacheSet <PackageReceive>().FindAll(ContextUser.UserID, m => m.PacksID == _packsID);

            bool           isRece   = false;
            PackageReceive pReceive = null;

            foreach (PackageReceive receive in receiveArray)
            {
                if (!receive.IsReceive)
                {
                    isRece            = true;
                    receive.IsReceive = true;
                    pReceive          = receive;
                    break;
                }
            }
            if (pReceive == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived;
                return(false);
            }


            pReceive.IsReceive   = true;
            pReceive.ReceiveDate = DateTime.Now;
            //pReceive.Update();


            if (pReceive.PacksType == 1 && recharges != null && isRece)
            {
                int totalPay = (int)(recharges.FirstNum * rePacksInfo.ProportionNum);
                if (totalPay >= 1)
                {
                    ContextUser.ItemGold = MathUtils.Addition(ContextUser.ItemGold, totalPay, int.MaxValue);
                    //ContextUser.Update();
                }
                //ContextUser.PayGold = ContextUser.PayGold.Addition(recharges.FirstNum, int.MaxValue);

                foreach (PackageReward reward in rewardArray)
                {
                    UserItemHelper.AddUserItem(ContextUser.UserID, reward.Num, 1);
                }
            }
            else if (recharges != null && isRece)
            {
                foreach (PackageReward reward in rewardArray)
                {
                    if (reward.Type == 2)
                    {
                        ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 3)
                    {
                        ContextUser.ExpNum = MathUtils.Addition(ContextUser.ExpNum, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 4)
                    {
                        ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 5)
                    {
                        ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, reward.Num.ToShort(), short.MaxValue);
                    }
                    else if (reward.Type == 6)
                    {
                        GameUserExtend extend = ContextUser.UserExtend;
                        extend.GainBlessing = MathUtils.Addition(extend.GainBlessing, reward.Num, int.MaxValue);

                        //List<GuildMember> memberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID ==  ContextUser.UserID);
                        //if (memberArray.Length > 0)
                        //{
                        //    memberArray[0].GainBlessing = memberArray[0].GainBlessing.Addition(reward.Num, int.MaxValue);
                        //    memberArray[0].Update();
                        //}
                    }
                    //ContextUser.Update();
                }
            }

            PackageReceiveLog receiveLog = new PackageReceiveLog()
            {
                LogID       = Guid.NewGuid().ToString(),
                ReceiveID   = receiveArray[0].ReceiveID,
                PacksID     = _packsID,
                UserID      = ContextUser.UserID,
                ReceiveDate = DateTime.Now,
            };
            var sender = DataSyncManager.GetDataSender();

            sender.Send(receiveLog);
            return(true);
        }
Beispiel #53
0
        protected override object ProcessPrize()
        {
            var userGeneral = UserGeneral.GetMainGeneral(UserId.ToString());

            if (userGeneral == null)
            {
                return(null);
            }
            var noviceUser = new GameDataCacheSet <NoviceUser>().FindKey(UserId.ToString());

            if (noviceUser == null)
            {
                return(null);
            }
            var noviceTaskInfo = new ShareCacheStruct <NoviceTaskInfo>().FindKey(noviceUser.CurrGuideId);

            if (noviceTaskInfo == null || noviceTaskInfo.PrizeList.Count <= 0)
            {
                return(null);
            }
            var itemList = new List <ItemBaseInfo>();

            foreach (var prizeInfo in noviceTaskInfo.PrizeList)
            {
                switch (prizeInfo.Key)
                {
                case 0:
                    foreach (var itemId in prizeInfo.Value)
                    {
                        var itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(itemId);
                        if (itemInfo == null)
                        {
                            continue;
                        }
                        UserItemHelper.AddUserItem(UserId.ToString(), itemId, 1);
                        itemList.Add(itemInfo);

                        var gameUser = new GameDataCacheSet <GameUser>().FindKey(UserId.ToString());
                        if (gameUser != null)
                        {
                            if (gameUser.UserExtend.NoviceIsPase == true)
                            {
                                var noviceTask = new ConfigCacheSet <NoviceTaskInfo>().FindKey("1013");
                                if (noviceTask != null && noviceTask.PrizeList != null)
                                {
                                    foreach (var gift in noviceTask.PrizeList)
                                    {
                                        foreach (var Id in gift.Value)
                                        {
                                            var item = new ConfigCacheSet <ItemBaseInfo>().FindKey(Id);
                                            UserItemHelper.AddUserItem(UserId.ToString(), Id, 1);
                                            itemList.Add(item);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    break;

                case 1:
                    if (prizeInfo.Value.Count > userGeneral.CareerID)
                    {
                        var itemId   = prizeInfo.Value[userGeneral.CareerID];
                        var itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(itemId);
                        if (itemInfo == null)
                        {
                            continue;
                        }
                        UserItemHelper.AddUserItem(UserId.ToString(), itemId, 1);
                        itemList.Add(itemInfo);
                    }
                    break;
                }
            }
            return(itemList);
        }
Beispiel #54
0
        public override bool TakeAction()
        {
            List <UserTakePrize> userPrizeList = new ShareCacheStruct <UserTakePrize>().FindAll(m => !m.IsTasked && m.UserID == ObjectExtend.ToInt(Uid));

            if (userPrizeList.Count > 0)
            {
                var userPrize = userPrizeList[0];
                if (userPrize.ItemPackage.Length > 0)
                {
                    if (UserItemHelper.CheckItemOut(ContextUser, ItemStatus.BeiBao, PutItemNum(userPrize)))
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1107_GridNumFull;
                        return(false);
                    }
                }
                if (userPrize.SparePackage.Length > 0)
                {
                    int currNum = ContextUser.SparePartList.FindAll(m => string.IsNullOrEmpty(m.UserItemID)).Count;
                    currNum = MathUtils.Addition(currNum, PutCrystalSpareNum(userPrize.SparePackage.Split(','), 1));
                    //原因:零件等于开启格子时提示背包已满
                    if (currNum > ContextUser.UserExtend.SparePartGridNum)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1213_GridNumFull;
                        return(false);
                    }
                }

                if (userPrize.CrystalPackage.Length > 0)
                {
                    var package = UserCrystalPackage.Get(ContextUser.UserID);
                    UserCrystalInfo[] crystalArrayErr =
                        package.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(0)).ToArray();
                    int crystalNum = MathUtils.Addition(crystalArrayErr.Length, PutCrystalSpareNum(userPrize.CrystalPackage.Split(','), 2));
                    //原因:命运水晶等于开启格子时提示背包已满
                    if (crystalNum > ContextUser.CrystalNum)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1307_FateBackpackFull;
                        return(false);
                    }
                }

                if (!string.IsNullOrEmpty(userPrize.EnchantPackage) && userPrize.EnchantPackage.Length > 0)
                {
                    var package = UserEnchant.Get(ContextUser.UserID);
                    if (package != null)
                    {
                        var enchantList = package.EnchantPackage.FindAll(m => string.IsNullOrEmpty(m.UserItemID));
                        int enchantNum  = MathUtils.Addition(enchantList.Count, PutCrystalSpareNum(userPrize.EnchantPackage.Split(','), 2));
                        if (ContextUser.UserExtend != null && enchantNum > ContextUser.UserExtend.EnchantGridNum)
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St1259_EnchantGridNumFull;
                            return(false);
                        }
                    }
                }

                if (doProcessPrize(userPrize))
                {
                    ErrorInfo = userPrize.MailContent;
                }
                else
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
            }
            return(true);
        }
Beispiel #55
0
        public override void BuildPacket()
        {
            PushIntoStack(generalName.ToNotNullString());
            this.PushIntoStack(headID.ToNotNullString());
            this.PushIntoStack(picturesID.ToNotNullString());

            this.PushIntoStack((short)generalQuality);
            this.PushIntoStack(currExperience);
            this.PushIntoStack(maxExperience);
            this.PushIntoStack(powerNum);
            this.PushIntoStack(soulNum);
            this.PushIntoStack(intellectNum);
            this.PushIntoStack(careerInfo == null ? 0 : careerInfo.CareerID);
            this.PushIntoStack(careerInfo == null ? string.Empty : careerInfo.CareerName.ToNotNullString());
            this.PushIntoStack(lifeNum);
            this.PushIntoStack(lifeMaxNum);
            this.PushIntoStack(genLv);
            this.PushIntoStack(generalStatus);
            this.PushIntoStack(description.ToNotNullString());
            this.PushIntoStack(attackNum);
            this.PushIntoStack(vitalityNum);
            this.PushIntoStack(talentAbility);
            this.PushIntoStack(talentName.ToNotNullString());
            this.PushIntoStack(userItemArray.Count);
            foreach (var item in userItemArray)
            {
                int          isSynthesis;
                DataStruct   dsItem   = new DataStruct();
                ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(item.ItemID);
                if (IsSynthesis(ContextUser.UserID, item.ItemID, genLv))
                {
                    isSynthesis = 1;
                }
                else
                {
                    isSynthesis = 2;
                }
                dsItem.PushIntoStack(item.UserItemID.ToNotNullString());
                dsItem.PushIntoStack(item.ItemID);
                dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
                dsItem.PushIntoStack(itemInfo == null ? 0 : (int)itemInfo.EquParts);
                dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
                dsItem.PushIntoStack((short)item.ItemLv);
                dsItem.PushIntoStack((short)isSynthesis);
                dsItem.PushIntoStack(itemInfo == null ? 0 : itemInfo.QualityType.ToInt());
                this.PushIntoStack(dsItem);
            }
            this.PushIntoStack(abilityList.Count);
            foreach (var ability in abilityList)
            {
                DataStruct  dsItem      = new DataStruct();
                AbilityInfo abilityInfo = new ShareCacheStruct <AbilityInfo>().FindKey(ability.AbilityID);
                dsItem.PushIntoStack(ability.AbilityID);
                dsItem.PushIntoStack(abilityInfo == null ? string.Empty : abilityInfo.AbilityName.ToNotNullString());
                dsItem.PushIntoStack((short)ability.AbilityLv);
                dsItem.PushIntoStack(abilityInfo == null ? string.Empty : abilityInfo.AbilityDesc.ToNotNullString());
                dsItem.PushIntoStack(abilityInfo == null ? string.Empty : abilityInfo.HeadID.ToNotNullString());
                dsItem.PushIntoStack(ability.Position);
                dsItem.PushIntoStack(ability.UserItemID.ToNotNullString());
                dsItem.PushIntoStack(abilityInfo != null ? abilityInfo.AbilityQuality : 0);
                this.PushIntoStack(dsItem);
            }
            this.PushIntoStack(gPropertyList.Count);
            foreach (var property in gPropertyList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(property.AbilityType.ToShort());
                if (property.AbilityType == AbilityType.MingZhong)
                {
                    string value = (property.AbilityValue + _hitProbability).ToNotNullString();
                    dsItem.PushIntoStack(value);
                }
                else
                {
                    dsItem.PushIntoStack(property.AbilityValue.ToNotNullString());
                }

                this.PushIntoStack(dsItem);
            }

            this.PushIntoStack(functionList.Count);
            foreach (var function in functionList)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(function.FunEnum.ToShort());
                this.PushIntoStack(dsItem);
            }
            PushIntoStack(_potential);
            this.PushIntoStack(soulGrid);
            this.PushIntoStack(_battleHeadId.ToNotNullString());
            PushIntoStack(userGeneral != null ? userGeneral.AbilityNum : 3);

            // 缘分信息
            if (karmaList != null)
            {
                PushIntoStack(karmaList.Count);
                foreach (var karmaInfo in karmaList)
                {
                    DataStruct dsItem = new DataStruct();
                    dsItem.PushIntoStack(karmaInfo.KarmaName);
                    dsItem.PushIntoStack(karmaInfo.KarmaDesc);
                    dsItem.PushIntoStack(karmaInfo.IsActive);
                    this.PushIntoStack(dsItem);
                }
            }
            else
            {
                PushIntoStack(0);
            }

            PushIntoStack(userCareerName);
        }
Beispiel #56
0
        public override bool TakeAction()
        {
            if (!string.IsNullOrEmpty(ContextUser.MercenariesID) && ContextUser.MercenariesID == guildID)
            {
                if (CombatHelper.GuildBossKill(ContextUser.MercenariesID))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St5405_BossKilled;
                    return(false);
                }
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                GameActive gameActive = new ShareCacheStruct <GameActive>().FindKey(_activeId);
                if (gameActive != null)
                {
                    bossPlotID = gameActive.BossPlotID;
                    GuildBossCombat bossCombat = new GuildBossCombat(guildID);
                    if (bossCombat.HasCombat)
                    {
                        _guild = bossCombat.UserGuild;
                        if (_guild != null && _guild.GuildBossInfo != null)
                        {
                            if (_guild.GuildBossInfo.EnableWeek > 0 && _guild.GuildBossInfo.BossLv > 0)
                            {
                                _guild.BeginTime = UserHelper.GuildBossDate(_guild.GuildBossInfo);
                                _guild.EndTime   = _guild.BeginTime.AddMinutes(gameActive.Minutes);
                                CombatStatus combatStatus = _guild.GuildBossRefreshStatus();
                                if (UserHelper.IsCurrentWeek(_guild.BeginTime) &&
                                    UserHelper.IsCurrentWeek(_guild.GuildBossInfo.RefreshDate))
                                {
                                    if (DateTime.Now < _guild.BeginTime)
                                    {
                                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                                        ErrorInfo = LanguageManager.GetLang().St6101_GuildBossNotOpen;
                                        return(false);
                                    }
                                    else if ((combatStatus == CombatStatus.Killed && DateTime.Now < _guild.EndTime) ||
                                             DateTime.Now > _guild.EndTime)
                                    {
                                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                                        ErrorInfo = LanguageManager.GetLang().St6101_GuildBossOver;
                                        return(true);
                                    }
                                }
                                else
                                {
                                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                    ErrorInfo = LanguageManager.GetLang().St6101_GuildBossSet;
                                    return(false);
                                }

                                if (combatStatus == CombatStatus.Wait || combatStatus == CombatStatus.Combat)
                                {
                                    bossCombat.Append(ContextUser);
                                    BossUser bossUser = bossCombat.GetCombatUser(ContextUser.UserID);
                                    if (bossUser != null)
                                    {
                                        _inspirePercent       = bossUser.InspirePercent;
                                        _reliveInspirePercent = bossUser.ReliveInspirePercent;
                                        _reLiveNum            = bossUser.ReliveNum;
                                    }
                                }
                                List <BossUser> userList = bossCombat.GetCombatUser();
                                _regNum = userList.Count;
                                int recordCount = 0;
                                _bossUserList = userList.GetPaging(_pageIndex, _pageSize, out recordCount);
                            }
                        }
                    }
                    else
                    {
                        UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);
                        if (guild != null && guild.GuildBossInfo != null)
                        {
                            if (guild.GuildBossInfo.EnableWeek > 0 && guild.GuildBossInfo.BossLv > 0)
                            {
                                guild.BeginTime = UserHelper.GuildBossDate(guild.GuildBossInfo);
                                guild.EndTime   = guild.BeginTime.AddMinutes(gameActive.Minutes);
                                if (UserHelper.IsCurrentWeek(guild.BeginTime) &&
                                    UserHelper.IsCurrentWeek(guild.GuildBossInfo.RefreshDate))
                                {
                                    if (DateTime.Now < guild.BeginTime.AddMinutes(1))
                                    {
                                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                                        ErrorInfo = LanguageManager.GetLang().St6101_GuildBossNotOpen;
                                        return(false);
                                    }
                                    else
                                    {
                                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                                        ErrorInfo = LanguageManager.GetLang().St6101_GuildBossOver;
                                        return(true);
                                    }
                                }
                                else
                                {
                                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                    ErrorInfo = LanguageManager.GetLang().St6101_GuildBossSet;
                                    return(false);
                                }
                            }
                        }
                        else
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St6101_GuildBossSet;
                            return(false);
                        }
                    }
                }
                stopwatch.Stop();
                new BaseLog().SaveLog("公会boss6101所需时间:" + stopwatch.Elapsed.TotalMilliseconds + "ms");
            }
            return(true);
        }
Beispiel #57
0
        public override bool TakeAction()
        {
            UserGeneral userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (userGeneral == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (ops == 0)
            {
                //用户装备更换
                var package = UserItemPackage.Get(Uid);
                if (package == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));
                if (userItem == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(userItem.ItemID);
                if (itemInfo != null)
                {
                    if (string.IsNullOrEmpty(itemInfo.CareerRange) || itemInfo.CareerRange.IndexOf(userGeneral.CareerID.ToString()) == -1)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1203_CareerError;
                        return(false);
                    }
                    //佣兵装备部位为空才能更换
                    var generalItem = package.ItemPackage.Find(s => !s.IsRemove && s.Equparts == itemInfo.EquParts && s.GeneralID == userGeneral.GeneralID && s.ItemStatus == ItemStatus.YongBing);
                    if (generalItem != null)
                    {
                        generalItem.GeneralID  = 0;
                        generalItem.ItemStatus = ItemStatus.BeiBao;
                        package.SaveItem(generalItem);
                        userItem.GeneralID  = generalID;
                        userItem.ItemStatus = ItemStatus.YongBing;
                        package.SaveItem(userItem);
                    }
                    else
                    {
                        userItem.GeneralID  = generalID;
                        userItem.ItemStatus = ItemStatus.YongBing;
                        package.SaveItem(userItem);
                    }
                    //int equCount = UserItemHelper.GetItems(Uid).FindAll(
                    //    m => new UserItemHelper(m).EquPartsID == (int)itemInfo.EquParts && m.GeneralID == userGeneral.GeneralID && m.ItemStatus == ItemStatus.YongBing).Count;
                    //if (equCount == 0)
                    //{
                    //    userItem.GeneralID = generalID;
                    //    userItem.ItemStatus = ItemStatus.YongBing;
                    //    package.SaveItem(userItem);
                    //}
                }
            }
            else if (ops == 1)
            {
                //卸下
                //if (UserItemHelper.CheckItemOut(ContextUser, ItemStatus.BeiBao))
                //{
                //    ErrorCode = LanguageManager.GetLang().ErrorCode;
                //    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                //    return false;
                //}
                string str = string.Empty;
                if (UserPackHelper.PackIsFull(ContextUser, BackpackType.ZhuangBei, 1, out str))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                    ErrorInfo = str;
                    return(false);
                }
                var          package  = UserItemPackage.Get(Uid);
                UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));

                if (userItem != null && userItem.GeneralID > 0 && userItem.ItemStatus == ItemStatus.YongBing)
                {
                    userItem.GeneralID  = 0;
                    userItem.ItemStatus = ItemStatus.BeiBao;
                    package.SaveItem(userItem);
                }
            }
            userGeneral.RefreshMaxLife();
            return(true);
        }
Beispiel #58
0
        public override bool TakeAction()
        {
            UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);

            if (guild == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            GameActive gameactive = new ShareCacheStruct <GameActive>().FindKey(11);

            if (gameactive == null || !gameactive.State)
            {
                return(false);
            }
            gameactive.BeginTime = gameactive.EnablePeriod.ToDateTime(DateTime.MinValue);
            gameactive.EndTime   = gameactive.BeginTime.AddMinutes(gameactive.Minutes);
            DateTime readytime = gameactive.BeginTime.AddMinutes(0 - gameactive.WaitMinutes);

            if (readytime > DateTime.Now)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseNoOpen;
                return(false);
            }
            if (gameactive.EndTime < DateTime.Now)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseClose;
                return(false);
            }
            if (guild.GuildExercise == null)
            {
                return(false);
            }

            ExerciseUser exUser = guild.GuildExercise.UserList.Find(u => u.UserID == ContextUser.UserID);

            if (exUser == null)
            {
                return(false);
            }
            if (QuestionNo != guild.GuildExercise.QuestionNo)
            {
                return(false);
            }


            if ((DateTime.Now - guild.GuildExercise.QuesTime).TotalSeconds < 20)
            {
                return(false);
            }
            if (guild.GuildExercise.CheckAllAnswer == 0)
            {
                checkAnswer(guild);
                if (guild.GuildExercise.CheckAllAnswer == 1)
                {
                    if (guild.GuildExercise.Level < 20)
                    {
                        guild.GuildExercise.Level = MathUtils.Addition(guild.GuildExercise.Level, 1);
                    }
                }
                if (guild.GuildExercise.CheckAllAnswer == 2)
                {
                    guild.GuildExercise.Level = guild.GuildExercise.Level = 1;
                }
                //guild.Update();
            }
            if (guild.GuildExercise.CheckAllAnswer == 1)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6303_GuildExerciseAllAnswerTrue;
            }
            if (guild.GuildExercise.CheckAllAnswer == 2)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6303_GuildExerciseAllAnswerFalse;
            }
            return(true);
        }
Beispiel #59
0
        public override bool TakeAction()
        {
            receipt     = new RobData();
            receipt.Rob = GetLottery.Rob;

            var rob = UserHelper.FindUserBasis(GetLottery.Rob.RivalUid);

            receipt.Rob.RivalLevel = rob.UserLv;
            var lotterycfg = new ShareCacheStruct <Config_Lottery>().Find(t => (t.Type == LotteryAwardType.Rob));

            if (lotterycfg == null)
            {
                return(false);
            }
            receipt.TodayRobList = GetFriends.TodayRobList.ToList();
            foreach (var v in GetFriends.FriendsList)
            {
                JPFriendRobData friendrob = new JPFriendRobData()
                {
                    UserId = v.UserId,
                };
                if (v.RobGold.Equals("0"))
                {
                    var enemy = GetEnemys.FindEnemy(v.UserId);
                    if (enemy != null && !enemy.RobGold.Equals("0"))
                    {
                        v.RobGold = enemy.RobGold;
                        continue;
                    }
                    var        rival      = UserHelper.FindUserBasis(v.UserId);
                    int        baseValue  = lotterycfg.Content.ToInt();
                    int        goldMin    = baseValue / 4;
                    int        goldmax    = random.Next(baseValue - goldMin) + goldMin;
                    BigInteger targetGold = Math.Ceiling(rival.UserLv / 50.0).ToInt() * goldmax;
                    v.RobGold = targetGold.ToString();
                }
                friendrob.Gold = v.RobGold;
                receipt.FriendRobList.Add(friendrob);
            }
            foreach (var v in GetEnemys.EnemyList)
            {
                JPEnemyRobData enemyrob = new JPEnemyRobData()
                {
                    UserId = v.UserId,
                };
                if (v.RobGold.Equals("0"))
                {
                    var friend = GetFriends.FindFriend(v.UserId);
                    if (friend != null && !friend.RobGold.Equals("0"))
                    {
                        v.RobGold = friend.RobGold;
                        continue;
                    }
                    var        rival      = UserHelper.FindUserBasis(v.UserId);
                    int        baseValue  = lotterycfg.Content.ToInt();
                    int        goldMin    = baseValue / 4;
                    int        goldmax    = random.Next(baseValue - goldMin) + goldMin;
                    BigInteger targetGold = Math.Ceiling(rival.UserLv / 50.0).ToInt() * goldmax;
                    v.RobGold = targetGold.ToString();
                }
                enemyrob.Gold = v.RobGold;
                receipt.EnemyRobList.Add(enemyrob);
            }

            return(true);
        }
Beispiel #60
0
        public override bool TakeAction()
        {
            GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(guildID, ContextUser.UserID);

            if (member != null && member.PostType == PostType.Member)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6007_AuditPermissions;
                return(false);
            }

            List <GuildMember> memberArray = new ShareCacheStruct <GuildMember>().FindAll(m => m.GuildID == guildID);
            UserGuild          guildInfo   = new ShareCacheStruct <UserGuild>().FindKey(guildID);

            if (guildInfo != null)
            {
                GuildLvInfo guildLvInfo = new ShareCacheStruct <GuildLvInfo>().FindKey(guildInfo.GuildLv);
                if (guildLvInfo != null)
                {
                    int maxPeople = MathUtils.Addition(guildInfo.AddMember, guildLvInfo.MaxPeople);
                    if (memberArray.Count > 0 && memberArray.Count >= maxPeople)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St6019_GuildMaxPeople;
                        return(false);
                    }
                }
            }
            GameUser userInfo = UserCacheGlobal.CheckLoadUser(memberID);

            if (userInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            var memberList = new ShareCacheStruct <GuildMember>().FindAll(s => s.UserID == memberID);

            if (memberList.Count > 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6019_AddGuild;
                return(false);
            }

            GuildMember gMember = new GuildMember()
            {
                GuildID           = guildID,
                UserID            = memberID,
                PostType          = PostType.Member,
                Contribution      = 0,
                TotalContribution = 0,
                IncenseNum        = 0,
                DevilNum          = 0,
                IsDevil           = 0,
                InsertDate        = DateTime.Now
            };

            new ShareCacheStruct <GuildMember>().Add(gMember);
            userInfo.MercenariesID = guildID;
            CombatHelper.LoadGuildAbility(userInfo.UserID); //加载公会技能

            var cacheSet = new ShareCacheStruct <UserApply>();
            List <UserApply> appliesArray = cacheSet.FindAll(m => m.UserID == memberID);

            foreach (UserApply apply in appliesArray)
            {
                cacheSet.Delete(apply);
            }

            return(true);
        }