Beispiel #1
0
        public override bool TakeAction()
        {
            UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);

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

            if (gameactive == null || !gameactive.State)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseIsOpen;
                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_GuildExerciseIsOpen;
                return(false);
            }
            if (gameactive.EndTime < DateTime.Now.AddSeconds(2))
            {
                ContextUser.UserLocation = Location.City;
                Status    = 3;
                ColdTime  = 10;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseClose;
                return(true);
            }
            if (guild.GuildExercise == null)
            {
                ContextUser.UserLocation = Location.City;
                Status    = 3;
                ColdTime  = 10;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseClose;
                return(true);
            }
            if (guild.GuildExercise.UserList.Count == 0)
            {
                ContextUser.UserLocation = Location.City;
                Status    = 3;
                ColdTime  = 10;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseClose;
                return(true);
            }
            ExerciseUser exUser = guild.GuildExercise.UserList.Find(u => u.UserID == ContextUser.UserID);

            if (exUser == null)
            {
                ContextUser.UserLocation = Location.City;
                Status    = 3;
                ColdTime  = 10;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseClose;
                return(true);
            }

            Question = GuildExerciseHelper.GetQuestion(guild, gameactive, exUser, ref ColdTime);
            if (Question == null)
            {
                Question = null;
            }
            if (Question != null)
            {
                Level      = guild.GuildExercise.Level;
                QuestionNo = guild.GuildExercise.QuestionNo;
            }

            if (guild.GuildExercise.QuestionNo - exUser.QuestionNo > 5)
            {
                ContextUser.UserLocation = Location.City;
                Status    = 3;
                ColdTime  = 10;
                ErrorInfo = LanguageManager.GetLang().St6301_GuildExerciseTimeOut;
                return(true);
            }
            if (guild.GuildExercise.CheckAllAnswer == 0)
            {
                if (guild.GuildExercise.QuestionNo != exUser.QuestionNo)
                {
                    exUser.QuestionStatus = GuildQuestionStatus.ToAnswer;
                }
            }
            else
            {
                exUser.QuestionStatus = GuildQuestionStatus.ToNext;
            }
            Status      = guild.GuildExercise.Status;
            QueueStatus = (int)exUser.QuestionStatus;
            IsAuto      = exUser.Status == GuildExerciseStatus.All ? 1 : 0;
            return(true);
        }
Beispiel #2
0
        public override bool TakeAction()
        {
            ErrorCode = ops;
            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 (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 (exUser.QuestionNo == guild.GuildExercise.QuestionNo)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6305_GuildExerciseISAnswer;
                return(false);
            }

            //自动答题
            if (exUser.Status == GuildExerciseStatus.All)
            {
                ops = 4;
            }
            if (ops == 0)
            {
                exUser.QuestionNo = QuestionNo;
                GuildQuestion Question = new ConfigCacheSet <GuildQuestion>().FindKey(guild.GuildExercise.QuestionID);
                if (Question != null && Question.Answer == Answer)
                {
                    exUser.AnswerStatus = true;
                }
                else
                {
                    exUser.AnswerStatus = false;
                }
            }
            int expen = 0;

            if (ops == 1)//晶石询问
            {
                expen     = baseexpen + exUser.GameConisCount * 2;
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St6305_GuildExerciseGoldAnswer, expen);
                return(false);
            }
            if (ops == 2)//晶石确认
            {
                expen = baseexpen + exUser.GameConisCount * 2;
                //晶石不足
                if (ContextUser.GoldNum < expen)
                {
                    this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                    this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }
                exUser.QuestionNo     = QuestionNo;
                exUser.AnswerStatus   = true;
                exUser.GameConisCount = MathUtils.Addition(exUser.GameConisCount, 1);
                ContextUser.UseGold   = MathUtils.Addition(ContextUser.UseGold, expen, int.MaxValue);
                //ContextUser.Update();
            }
            if (ops == 3)//自动答题询问
            {
                int expenAll = 200;
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St6305_GuildExerciseAutoAnswer, expenAll);
                return(false);
            }
            if (ops == 4)//自动答题
            {
                if (exUser.Status != GuildExerciseStatus.All)
                {
                    int expenAll = 200;
                    //晶石不足
                    if (ContextUser.GoldNum < expenAll)
                    {
                        this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                        this.ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                        return(false);
                    }
                    exUser.Status       = GuildExerciseStatus.All;
                    ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, expenAll, int.MaxValue);
                    //ContextUser.Update();
                }
                exUser.QuestionNo   = QuestionNo;
                exUser.AnswerStatus = true;
            }
            Result = exUser.AnswerStatus ? 1 : 0;
            //奖励
            if (QuestionNo == guild.GuildExercise.QuestionNo &&
                exUser.AnswerStatus)
            {
                int Expen      = 0;
                int Experience = 0;
                GuildExerciseHelper.DoPrize(guild, gameactive, exUser, ContextUser, ref Expen, ref Experience);
                ErrorInfo = string.Format(LanguageManager.GetLang().St6305_GuildExerciseAnswerSuss, Expen, Experience);
                //答对提示
            }
            else
            {
                ErrorInfo = LanguageManager.GetLang().St6305_GuildExerciseAnswerFail;
                new TjxChatService(ContextUser).SystemGuildSend(ChatType.Guild,
                                                                string.Format(LanguageManager.GetLang().St6305_GuildExerciseGuildChat, ContextUser.NickName));
            }
            exUser.QuestionStatus = GuildQuestionStatus.WaitForResults;
            //guild.Update();
            return(true);
        }