Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        public static async Task <int> Update(string userID, NoneSimulationQuestCountValue noneSimulCountValue, Int64 traceId = 0)
        {
            int updateCount = 0;

            var userQuestInfo = await DBUserGameData.GetQuestData(userID);

            if (userQuestInfo != null)
            {
                updateCount = CountUpdaterInst.Update(noneSimulCountValue, ref userQuestInfo, traceId);
                if (updateCount > 0)
                {
                    await DBUserGameData.SaveQuestData(userQuestInfo);
                }
            }
            else
            {
                OPLogger.Error(LOG_TYPE.QUEST_PR_UPDATE, traceId, string.Format("{0} 유저의 퀘스트 정보가 없습니다", userID));
            }

            return(updateCount);
        }
Exemplo n.º 4
0
        public static void AddAuthInfo(MemoryDBUserAuth newAuthInfo, Int64 traceId)
        {
            var userID = newAuthInfo.UserID;
            MemoryDBUserAuth oldAuthInfo;

            if (Cache.TryGetValue(userID, out oldAuthInfo) == false)
            {
                IfMaxThenRemove();

                LoginSeqQueue.Enqueue(userID);
                Cache.TryAdd(userID, newAuthInfo);

                OPLogger.Trace(LOG_TYPE.T_AUTH_TO_GAMESERVER, traceId, string.Format("AddAuthInfo:New. UserID:{0}, Token:{1}", userID, newAuthInfo.GameAuthToken));
            }
            else
            {
                var oldToken = oldAuthInfo.GameAuthToken;
                Cache.TryUpdate(userID, newAuthInfo, oldAuthInfo);

                OPLogger.Trace(LOG_TYPE.T_AUTH_TO_GAMESERVER, traceId, string.Format("AddAuthInfo:Update. UserID:{0}, New-Token:{1}, Old-Token:{2}", userID, newAuthInfo.GameAuthToken, oldToken));
            }
        }