示例#1
0
        /// <summary>
        /// 加载数据
        /// </summary>
        public static void InitBoss(UserGuild userGuild)
        {
            try
            {
                if (_userGuildList.ContainsKey(userGuild.GuildID))
                {
                    _userGuildList[userGuild.GuildID] = userGuild;
                }
                else
                {
                    _userGuildList.Add(userGuild.GuildID, userGuild);
                }

                CombatGeneral general = CreateBossGeneral(userGuild);
                if (!_bossGeneralList.ContainsKey(userGuild.GuildID))
                {
                    _bossGeneralList.Add(userGuild.GuildID, new BossDictionary { BossGeneral = general });
                }
                else
                {
                    _bossGeneralList[userGuild.GuildID].BossGeneral = general;
                }
            }
            catch (Exception ex)
            {
                new BaseLog().SaveLog(ex);
            }
        }
示例#2
0
 /// <summary>
 /// 答题奖励
 /// </summary>
 /// <param name="userGuild"></param>
 /// <param name="gameActive"></param>
 /// <param name="exuser"></param>
 /// <param name="user"></param>
 public static void DoPrize(UserGuild userGuild, GameActive gameActive, ExerciseUser exuser, GameUser user, ref int expNum, ref int Experience)
 {
     DateTime dt = DateTime.Now;
     if (dt < gameActive.BeginTime)
     {
         userGuild.GuildExercise.Status = 0;
         return;
     }
     if (exuser.Status == GuildExerciseStatus.All ||
         (userGuild.GuildExercise.QuestionNo == exuser.QuestionNo
         && exuser.AnswerStatus))
     {
         GuildExercisePrize prize = new ConfigCacheSet<GuildExercisePrize>().FindKey(userGuild.GuildExercise.Level);
         if (prize == null)
             return;
         decimal precent = GetExercisePrecent(userGuild);
         expNum = (int)Math.Floor((decimal)prize.ExpNum * precent);
         Experience = (int)Math.Floor((decimal)prize.Experience * precent);
         user.ExpNum = MathUtils.Addition(user.ExpNum, expNum, int.MaxValue);
         UserHelper.UserGeneralExp(user.UserID, Experience);
     }
 }
示例#3
0
文件: Action3009.cs 项目: 0jpq0/Scut
 public override bool TakeAction()
 {
     _gameActiveList = new GameActiveCenter(Uid).GetActiveList();
     guild = new ShareCacheStruct<UserGuild>().FindKey(ContextUser.MercenariesID);
     return true;
 }
示例#4
0
 public override bool TakeAction()
 {
     userGuild = new ShareCacheStruct<UserGuild>().FindKey(guildID);
     if (userGuild != null)
     {
         nextLv = MathUtils.Addition(userGuild.GuildLv, (short) 1, (short) GuildLvInfo.GuildMaxLv);
         GuildLvInfo guildLvInfo = new ConfigCacheSet<GuildLvInfo>().FindKey(nextLv);
         if (guildLvInfo != null)
         {
             demandExperience = MathUtils.Subtraction(guildLvInfo.UpExperience, userGuild.CurrExperience, 0);
             activityArray = guildLvInfo.ActivityDesc.ToList();
         }
     }
     return true;
 }
示例#5
0
        public static GuildQuestion GetQuestion(UserGuild userGuild, GameActive gameActive, ExerciseUser exUser, ref int ColdTime)
        {
            DateTime dt = DateTime.Now;
            DateTime beginTime = gameActive.BeginTime.AddMinutes(gameActive.WaitMinutes);
            if (dt < gameActive.BeginTime.AddMinutes(gameActive.WaitMinutes))
            {
                ColdTime = (int)(beginTime - dt).TotalSeconds;
                userGuild.GuildExercise.UpdateNotify(obj =>
                    {
                        userGuild.GuildExercise.Status = 1;
                        return true;
                    });
                return null;
            }

            GuildQuestion Question = new GuildQuestion();
            if (userGuild.GuildExercise.QuesTime != null
                && dt < userGuild.GuildExercise.QuesTime.AddSeconds(QuestionWaitTime)
                && userGuild.GuildExercise.QuestionID != 0)
            {
                Question = new ConfigCacheSet<GuildQuestion>().FindKey(userGuild.GuildExercise.QuestionID);
            }
            else
            {
                int questionid = GetID(userGuild.GuildExercise.QuestionIDList.ToList());
                userGuild.GuildExercise.QuestionID = questionid;
                Question = new ConfigCacheSet<GuildQuestion>().FindKey(userGuild.GuildExercise.QuestionID);
                userGuild.GuildExercise.UpdateNotify(obj =>
                {
                    if (userGuild.GuildExercise.QuesTime < beginTime)
                        userGuild.GuildExercise.QuesTime = beginTime;
                    int count = ((int)(dt - userGuild.GuildExercise.QuesTime).TotalSeconds) / QuestionWaitTime;
                    if (count <= 0)
                    {
                        count = 0;
                    }
                    userGuild.GuildExercise.QuestionNo = MathUtils.Addition(userGuild.GuildExercise.QuestionNo, (count <= 1 ? 1 : count), int.MaxValue);
                    userGuild.GuildExercise.QuesTime = beginTime.AddSeconds((userGuild.GuildExercise.QuestionNo - 1) * QuestionWaitTime);
                    userGuild.GuildExercise.Status = 2; //已开始活动
                    userGuild.GuildExercise.CheckAllAnswer = 0;
                    return true;
                });//userGuild.Update();
                exUser.QuestionStatus = GuildQuestionStatus.ToAnswer;
            }
            ColdTime = QuestionWaitTime - (int)(dt - userGuild.GuildExercise.QuesTime).TotalSeconds;

            if (userGuild.GuildExercise.CheckAllAnswer == 0)
            {
                ColdTime -= 10;
            }

            if (ColdTime <= 0)
            {
                ColdTime = 0;
                return null;
            }
            return Question;
        }
示例#6
0
 /// <summary>
 /// 奖励加成
 /// </summary>
 /// <param name="guild"></param>
 /// <returns></returns>
 public static decimal GetExercisePrecent(UserGuild guild)
 {
     decimal precent = 0.05M;
     int count = 0;
     foreach (ExerciseUser user in guild.GuildExercise.UserList)
     {
         if (user.QuestionNo != guild.GuildExercise.QuestionNo)
         {
             if (guild.GuildExercise.QuestionNo - user.QuestionNo >= 5)
             {
                 continue;
             }
         }
         count++;
     }
     count = count - 1;
     if (count <= 0)
         count = 0;
     return (decimal)1 + (decimal)count * precent;
 }
示例#7
0
 public override bool TakeAction()
 {
     UserHelper.ChecheDailyContribution(ContextUser.MercenariesID, ContextUser.UserID);
     guild = new ShareCacheStruct<UserGuild>().FindKey(guildID);
     if (guild != null)
     {
         var memberLog = new ShareCacheStruct<GuildMemberLog>().FindKey(guildID) ?? new GuildMemberLog();
         List<MemberLog> guildLogArray = memberLog.GetLog(null);
         foreach (MemberLog log in guildLogArray)
         {
             if (IsCurrentWeek(log.InsertDate))
             {
                 weekExperience = MathUtils.Addition(weekExperience, log.Experience, int.MaxValue);
             }
         }
         List<GuildMember> memberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.GuildID == guild.GuildID);
         foreach (GuildMember member in memberArray)
         {
             if (member.PostType == PostType.Chairman)
             {
                 GameUser userInfo = UserCacheGlobal.CheckLoadUser(member.UserID); 
                 if (userInfo != null)
                 {
                     chairman = userInfo.NickName;
                 }
             }
             if (member.UserID == ContextUser.UserID)
             {
                 memberPost = (short)member.PostType;
             }
         }
         currPeople = memberArray.Count;
         GuildLvInfo guildLvInfo = new ConfigCacheSet<GuildLvInfo>().FindKey(guild.GuildLv);
         if (guildLvInfo != null)
         {
             int upLv =MathUtils.Addition(guild.GuildLv, (short)1, (short)GuildLvInfo.GuildMaxLv);
             if (new ConfigCacheSet<GuildLvInfo>().FindKey(upLv) != null)
             {
                 upExperience = new ConfigCacheSet<GuildLvInfo>().FindKey(upLv).UpExperience;
             }
             maxPeople = MathUtils.Addition(guildLvInfo.MaxPeople, guild.AddMember);
         }
     }
     return true;
 }
示例#8
0
文件: Action6101.cs 项目: 0jpq0/Scut
        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;
        }
示例#9
0
        /// <summary>
        /// 捐献数量,贡献声望
        /// </summary>
        /// <param name="guild"></param>
        /// <param name="member"></param>
        /// <param name="wholeNum"></param>
        private void GetAddDonate(UserGuild guild, GuildMember member, int wholeNum)
        {
            guild.CurrDonateNum = MathUtils.Addition(guild.CurrDonateNum, wholeNum);
            //guild.Update();

            if (donateType == 1)
            {
                ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, totalDonateNum);
                member.DonateCoin = MathUtils.Addition(member.DonateCoin, totalDonateNum);
            }
            else if (donateType == 2)
            {
                ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, totalDonateNum);
                member.DonateGold = MathUtils.Addition(member.DonateGold, totalDonateNum);
            }
            ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, wholeNum);
            //ContextUser.Update();
            member.Contribution = MathUtils.Addition(member.Contribution, wholeNum);
            member.TotalContribution = MathUtils.Addition(member.TotalContribution, wholeNum);
            //member.Update();
            UserHelper.UserGuildUpLv(member.GuildID, wholeNum); //公会添加经验,升级
            GuildMemberLog.AddLog(member.GuildID, new MemberLog
            {
                UserID = ContextUser.UserID,
                IdolID = 0,
                LogType = 1,
                GainObtion = wholeNum,
                Experience = wholeNum,
                GainAura = 0,
                InsertDate = DateTime.Now
            });
        }
示例#10
0
 /// <summary>
 /// 初始化BOSS数据
 /// </summary>
 /// <returns></returns>
 private static CombatGeneral CreateBossGeneral(UserGuild guild)
 {
     CombatGeneral boss = null;
     if (guild != null)
     {
         GuildBossInfo bossInfo = guild.GuildBossInfo;
         if (bossInfo != null)
         {
             var plotNpcInfoList = new ConfigCacheSet<PlotNPCInfo>().FindAll(m => m.PlotID == gameActive.BossPlotID);
             if (plotNpcInfoList.Count > 0)
             {
                 var embattleList = new ConfigCacheSet<PlotEmbattleInfo>().FindAll(m => m.PlotNpcID == plotNpcInfoList[0].PlotNpcID);
                 if (embattleList.Count > 0)
                 {
                     boss = (CombatGeneral)MonsterQueue.Create(embattleList[0]);
                     boss.Lv = (short)MathUtils.Subtraction(bossInfo.BossLv, 0, gameActive.BossDefLv);
                     int bossLiftNum = MonsterQueue.BossProperty(embattleList[0].PlotNpcID, AbilityType.ShengMing).ToInt();
                     int lifeNum = boss.LifeNum + (boss.Lv - gameActive.BossDefLv) * bossLiftNum; //ConfigEnvSet.GetInt("BossCombat.IncreaseLiveNum");
                     boss.LifeMaxNum = lifeNum;
                     boss.LifeNum = lifeNum;
                 }
             }
             else
             {
                 throw new Exception(string.Format("公会战未配置BOSS:{0}", gameActive.BossPlotID));
             }
         }
     }
     if (boss == null)
     {
         throw new Exception("Loading guid boss faild.");
     }
     return boss;
 }
示例#11
0
 /// <summary>
 /// 释放
 /// </summary>
 /// <param name="userGuild"></param>
 public static void Dispose(UserGuild userGuild)
 {
     if (_bossGeneralList.ContainsKey(userGuild.GuildID))
     {
         _bossGeneralList[userGuild.GuildID].Clear();
     }
     if (_userGuildList.ContainsKey(userGuild.GuildID))
     {
         _userGuildList.Remove(userGuild.GuildID);
     }
 }
示例#12
0
文件: Action6303.cs 项目: 0jpq0/Scut
 /// <summary>
 /// 检查答题状态
 /// </summary>
 /// <param name="guild"></param>
 /// <returns></returns>
 private bool checkAnswer(UserGuild guild)
 {
     if (guild.GuildExercise.CheckAllAnswer != 0)
         return false;
     foreach (ExerciseUser user in guild.GuildExercise.UserList)
     {
         if (user.Status == GuildExerciseStatus.All)
         {
             continue;
         }
         if (user.QuestionNo != guild.GuildExercise.QuestionNo)
         {
             if (guild.GuildExercise.QuestionNo - user.QuestionNo >= 5)
             {
                 continue;
             }
             else
             {
                 guild.GuildExercise.CheckAllAnswer = 2;
                 return false;
             }
         }
         if (!user.AnswerStatus)
         {
             guild.GuildExercise.CheckAllAnswer = 2;
             return false;
         }
     }
     guild.GuildExercise.CheckAllAnswer = 1;
     return true;
 }
 public static void DisposeData(UserGuild userGuild)
 {
     if (userGuild.LoadSuccess)
     {
         GameActive gameActive = new ShareCacheStruct<GameActive>().FindKey(UserGuild.ActiveID);
         userGuild.LoadSuccess = false;
         if (gameActive != null && gameActive.ActiveType == FunctionEnum.Goujili)
         {
             GuildBossCombat.Dispose(userGuild);
         }
     }
 }
 public static void LoadData(UserGuild userGuild)
 {
     if ((userGuild.CombatStatus == CombatStatus.Wait || userGuild.CombatStatus == CombatStatus.Combat) && !userGuild.LoadSuccess)
     {
         GameActive gameActive = new ShareCacheStruct<GameActive>().FindKey(UserGuild.ActiveID);
         userGuild.LoadSuccess = true;
         if (gameActive != null && gameActive.ActiveType == FunctionEnum.Gonghui)
         {
             GuildBossCombat.InitBoss(userGuild);
         }
     }
 }
示例#15
0
        public override bool TakeAction()
        {
            int nameLength = System.Text.Encoding.Default.GetByteCount(guildName);
            List<UserQueue> queueArray = new PersonalCacheStruct<UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.TuiChuGongHui);
            if (queueArray.Count > 0 && queueArray[0].DoRefresh() > 0 && queueArray[0].IsSuspend == false)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6006_GuildMemberNotDate;
                return false;
            }
            int createGoinNum = ConfigEnvSet.GetInt("UserGuild.CreateGoinNum");
            int createLv = ConfigEnvSet.GetInt("UserGuild.CreateUserLv");
            if (ContextUser.UserLv < createLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                return false;
            }

            if (ContextUser.GameCoin < createGoinNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough;
                return false;
            }
            if (guildName == "")
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6017_GuildNameNotEmpty;
                return false;
            }

            if (nameLength < 4 || nameLength > 12)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6017_GuildNameTooLong;
                return false;
            }

            List<GuildMember> memberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID == ContextUser.UserID);
            if (memberArray.Count > 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6017_UnionMembers;
                return false;
            }
            List<UserGuild> guildArray = new ShareCacheStruct<UserGuild>().FindAll(u => u.GuildName == guildName);
            if (guildArray.Count > 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6017_GuildRename;
                return false;
            }
            List<UserGuild> userGuildArray = new ShareCacheStruct<UserGuild>().FindAll();
            int rankID = 0;
            if (userGuildArray.Count > 0)
            {
                rankID = MathUtils.Addition(userGuildArray.Count, 1, int.MaxValue);
            }
            else
            {
                rankID = 1;
            }

            string guildID = Guid.NewGuid().ToString();
            ContextUser.MercenariesID = guildID;

            ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, createGoinNum, 0);

            UserGuild userGuild = new UserGuild()
            {
                GuildID = guildID,
                UserID = ContextUser.UserID,
                GuildName = guildName,
                GuildLv = 1,
                GuildRank = rankID,
                WeekExperience = 0,
                CurrExperience = 0,
                CreateDate = DateTime.Now,
            };
            new ShareCacheStruct<UserGuild>().Add(userGuild);


            GuildMember member = new GuildMember()
            {
                GuildID = guildID,
                UserID = ContextUser.UserID,
                PostType = PostType.Chairman,
                Contribution = 0,
                TotalContribution = 0,
                DevilNum = 0,
                SummonNum = 0,
                IsDevil = 0,
                IncenseNum = 0,
                InsertDate = DateTime.Now
            };
            new ShareCacheStruct<GuildMember>().Add(member);
            var temp = new ShareCacheStruct<GuildMember>().FindKey(guildID, ContextUser.UserID);
            if (temp.HasChanged)
            {
                TraceLog.WriteInfo("6017 GuildMember update success.");
            }
            GuildIdol idolInfo = new GuildIdol()
            {
                GuildID = guildID,
                IdolLv = 1,
                CurrExperience = 0
            };
            new ShareCacheStruct<GuildIdol>().Add(idolInfo);
            return true;
        }