public bool CheckAndAddQuest(int userLevel, Int64 영업턴, DBUserQuests userQuestInfo, Int64 traceId)
        {
            var userID = userQuestInfo._id;

            if (userQuestInfo.CQID == 0 && userQuestInfo.Quest.ID == 0)
            {
                var firstQuestData = Loader.First일반퀘스트(userLevel);
                if (firstQuestData == null)
                {
                    OPLogger.Error(LOG_TYPE.NEW_NORMAL_QUEST, traceId, string.Format("첫 퀘스트가 없음. UserID:{0}", userID));
                    return(false);
                }

                AddQuest(영업턴, firstQuestData, userQuestInfo);
                return(true);
            }

            // 현재 진행 중인 것이 있으면 새로 받지 못한다.
            if (userQuestInfo.Quest.ID != 0)
            {
                return(false);
            }

            // 다음 퀘스트 조건에 부합하면 퀘스트를 받는다.
            var questData = Loader.Next일반퀘스트(userLevel, userQuestInfo.CQID, traceId);

            if (questData == null)
            {
                OPLogger.Trace(LOG_TYPE.T_NEW_QUEST, traceId, string.Format("{0} 다음의 일반 퀘스트가 없다. UserID:{1}, Level:{2}", userQuestInfo.CQID, userID, userLevel));
                return(false);
            }

            AddQuest(영업턴, questData, userQuestInfo);
            return(true);
        }
        public int CheckAndAdd일일Quest(int userLevel, ref DBUserQuests userQuestInfo)
        {
            if (Manager.Is일일퀘스트_시간지남(userQuestInfo.DQTick) == false)
            {
                return(0);
            }
            var dayileQuestInfo = Loader.SelectNew일일퀘스트(userLevel);

            if (dayileQuestInfo == null)
            {
                return(0);
            }

            var count = Add일일Quest(dayileQuestInfo, ref userQuestInfo);

            return(count);
        }
Beispiel #3
0
        public int Update(NoneSimulationQuestCountValue noneSimulCountValue, ref DBUserQuests userQuestInfo, Int64 traceId)
        {
            var userID   = userQuestInfo._id;
            var hitCount = 0;

            if (noneSimulCountValue != null)
            {
                if (userQuestInfo.Quest.ID != 0 && userQuestInfo.Quest.IsC == false && userQuestInfo.Quest.ST > 0)
                {
                    var quest = Loader.GetQuestData(userQuestInfo.Quest.ID);
                    if (quest == null)
                    {
                        OPLogger.Error(LOG_TYPE.QUEST_PR_UPDATE, traceId, string.Format("UserID:{0}, 퀘스트ID:{1} 정보가 없음", userID, userQuestInfo.Quest.ID));
                        return(hitCount);
                    }

                    hitCount += noneSimulCountValue.Update(quest.SubjectID,
                                                           quest.SubjectCountOpenStart,
                                                           ref userQuestInfo.Quest.PR);

                    CheckUpdateComplete(quest.SubjectCount, userQuestInfo.Quest.PR, ref userQuestInfo.Quest.IsC);
                }

                for (int i = 0; i < userQuestInfo.DQList.Count; ++i)
                {
                    if (userQuestInfo.DQList[i].ID != 0 && userQuestInfo.DQList[i].IsC == false && userQuestInfo.DQList[i].ST > 0)
                    {
                        var quest = Loader.GetQuestData(userQuestInfo.DQList[i].ID);
                        if (quest == null)
                        {
                            OPLogger.Error(LOG_TYPE.QUEST_PR_UPDATE, traceId, string.Format("UserID:{0}, 퀘스트ID:{1} 정보가 없음", userID, userQuestInfo.DQList[i].ID));
                            continue;
                        }

                        hitCount += noneSimulCountValue.Update(quest.SubjectID,
                                                               quest.SubjectCountOpenStart,
                                                               ref userQuestInfo.DQList[i].PR);

                        CheckUpdateComplete(quest.SubjectCount, userQuestInfo.DQList[i].PR, ref userQuestInfo.DQList[i].IsC);
                    }
                }
            }

            return(hitCount);
        }