示例#1
0
        internal void ProgressUserQuest(GameClient Session, QuestType QuestType, uint EventData = 0)
        {
            if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentQuestId <= 0)
            {
                return;
            }

            var UserQuest = GetQuest(Session.GetHabbo().CurrentQuestId);

            if (UserQuest == null || UserQuest.GoalType != QuestType)
            {
                return;
            }

            var CurrentProgress = Session.GetHabbo().GetQuestProgress(UserQuest.Id);
            var NewProgress     = CurrentProgress;
            var PassQuest       = false;

            switch (QuestType)
            {
            default:

                NewProgress++;

                if (NewProgress >= UserQuest.GoalData)
                {
                    PassQuest = true;
                }

                break;

            case QuestType.EXPLORE_FIND_ITEM:

                if (EventData != UserQuest.GoalData)
                {
                    return;
                }

                NewProgress = (int)UserQuest.GoalData;
                PassQuest   = true;
                break;
            }

            using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("UPDATE user_quests SET progress = " + NewProgress + " WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id =  " + UserQuest.Id);
            }

            Session.GetHabbo().quests[Session.GetHabbo().CurrentQuestId] = NewProgress;
            Session.SendMessage(QuestStartedComposer.Compose(Session, UserQuest));

            if (PassQuest)
            {
                Session.GetHabbo().CurrentQuestId = 0;
                Session.GetHabbo().LastCompleted  = UserQuest.Id;
                Session.SendMessage(QuestCompletedComposer.Compose(Session, UserQuest));
                GetList(Session, null);
            }
        }
示例#2
0
        public void ProgressUserQuest(GameClient Session, QuestType QuestType, int EventData = 0)
        {
            if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentQuestId <= 0)
            {
                return;
            }
            Quest quest = this.GetQuest(Session.GetHabbo().CurrentQuestId);

            if (quest == null || quest.GoalType != QuestType)
            {
                return;
            }
            int  questProgress = Session.GetHabbo().GetQuestProgress(quest.Id);
            bool flag          = false;
            int  num;

            if (QuestType != QuestType.EXPLORE_FIND_ITEM)
            {
                num = questProgress + 1;
                if ((long)num >= (long)quest.GoalData)
                {
                    flag = true;
                }
            }
            else
            {
                if (EventData != quest.GoalData)
                {
                    return;
                }
                num  = quest.GoalData;
                flag = true;
            }
            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.RunQuery("UPDATE user_quests SET progress = " + num + " WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id =  " + quest.Id);
            }
            Session.GetHabbo().quests[Session.GetHabbo().CurrentQuestId] = num;
            Session.SendPacket(QuestStartedComposer.Compose(Session, quest));
            if (!flag)
            {
                return;
            }
            Session.GetHabbo().CurrentQuestId = 0;
            Session.GetHabbo().LastCompleted  = quest.Id;
            Session.SendPacket(QuestCompletedComposer.Compose(Session, quest));
            Session.GetHabbo().Duckets += quest.Reward;
            Session.GetHabbo().UpdateActivityPointsBalance();
            this.GetList(Session, (ClientPacket)null);
        }
示例#3
0
        internal void ProgressUserQuest(GameClient Session, QuestType QuestType, uint EventData = 0u)
        {
            if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentQuestId <= 0u)
            {
                return;
            }
            Quest quest = this.GetQuest(Session.GetHabbo().CurrentQuestId);

            if (quest == null || quest.GoalType != QuestType)
            {
                return;
            }
            int  questProgress = Session.GetHabbo().GetQuestProgress(quest.Id);
            int  num           = questProgress;
            bool flag          = false;

            checked
            {
                if (QuestType != QuestType.EXPLORE_FIND_ITEM)
                {
                    switch (QuestType)
                    {
                    case QuestType.STAND_ON:
                        if (EventData != quest.GoalData)
                        {
                            return;
                        }
                        num  = (int)quest.GoalData;
                        flag = true;
                        goto IL_DC;

                    case QuestType.GIVE_ITEM:
                        if (EventData != quest.GoalData)
                        {
                            return;
                        }
                        num  = (int)quest.GoalData;
                        flag = true;
                        goto IL_DC;

                    case QuestType.GIVE_COFFEE:
                    case QuestType.WAVE_REINDEER:
                        num++;
                        if (unchecked ((long)num >= (long)((ulong)quest.GoalData)))
                        {
                            flag = true;
                            goto IL_DC;
                        }
                        goto IL_DC;

                    case QuestType.XMAS_PARTY:
                        num++;
                        if (unchecked ((long)num == (long)((ulong)quest.GoalData)))
                        {
                            flag = true;
                            goto IL_DC;
                        }
                        goto IL_DC;
                    }
                }
                if (EventData != quest.GoalData)
                {
                    return;
                }
                num  = (int)quest.GoalData;
                flag = true;
IL_DC:
                using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
                {
                    queryreactor.runFastQuery(string.Concat(new object[]
                    {
                        "UPDATE user_quests SET progress = ",
                        num,
                        " WHERE user_id = ",
                        Session.GetHabbo().Id,
                        " AND quest_id =  ",
                        quest.Id
                    }));
                    if (flag)
                    {
                        queryreactor.runFastQuery("UPDATE user_stats SET quest_id = 0 WHERE id = " + Session.GetHabbo().Id);
                    }
                }
                Session.GetHabbo().quests[Session.GetHabbo().CurrentQuestId] = num;
                Session.SendMessage(QuestStartedComposer.Compose(Session, quest));
                if (flag)
                {
                    Session.GetHabbo().CurrentQuestId     = 0u;
                    Session.GetHabbo().LastQuestCompleted = quest.Id;
                    Session.SendMessage(QuestCompletedComposer.Compose(Session, quest));
                    Session.GetHabbo().ActivityPoints += quest.Reward;
                    Session.GetHabbo().NotifyNewPixels(quest.Reward);
                    Session.GetHabbo().UpdateSeasonalCurrencyBalance();
                    this.GetList(Session, null);
                }
            }
        }
示例#4
0
        internal void ProgressUserQuest(GameClient Session, QuestType QuestType, uint EventData = 0)
        {
            if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentQuestId <= 0)
            {
                return;
            }

            Quest UserQuest = GetQuest(Session.GetHabbo().CurrentQuestId);

            if (UserQuest == null || UserQuest.GoalType != QuestType)
            {
                return;
            }

            int  CurrentProgress = Session.GetHabbo().GetQuestProgress(UserQuest.Id);
            int  NewProgress     = CurrentProgress;
            bool PassQuest       = false;

            switch (QuestType)
            {
            default:

                NewProgress++;

                if (NewProgress >= UserQuest.GoalData)
                {
                    PassQuest = true;
                }

                break;

            case QuestType.EXPLORE_FIND_ITEM:

                if (EventData != UserQuest.GoalData)
                {
                    return;
                }

                NewProgress = (int)UserQuest.GoalData;
                PassQuest   = true;
                break;
            }

            using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("UPDATE user_quests SET progress = " + NewProgress + " WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id =  " + UserQuest.Id);

                if (PassQuest)
                {
                    dbClient.runFastQuery("UPDATE users SET currentquestid = 0 WHERE id = " + Session.GetHabbo().Id);
                    //Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1);

                    //if (NextQuest != null)
                    //    dbClient.runFastQuery("INSERT INTO user_quests (user_id, quest_id, progress) VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)");
                }
            }

            Session.GetHabbo().quests[Session.GetHabbo().CurrentQuestId] = NewProgress;
            Session.SendMessage(QuestStartedComposer.Compose(Session, UserQuest));

            if (PassQuest)
            {
                Session.GetHabbo().CurrentQuestId = 0;
                Session.GetHabbo().LastCompleted  = UserQuest.Id;
                Session.SendMessage(QuestCompletedComposer.Compose(Session, UserQuest));
                Session.GetHabbo().ActivityPoints += UserQuest.Reward;
                Session.GetHabbo().UpdateActivityPointsBalance(false);
                GetList(Session, null);
            }
        }
示例#5
0
        /// <summary>
        /// Progresses the user quest.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="questType">Type of the quest.</param>
        /// <param name="eventData">The event data.</param>
        internal void ProgressUserQuest(GameClient session, QuestType questType, uint eventData = 0u)
        {
            if (session == null || session.GetHabbo() == null || session.GetHabbo().CurrentQuestId <= 0u)
            {
                return;
            }
            var quest = GetQuest(session.GetHabbo().CurrentQuestId);

            if (quest == null || quest.GoalType != questType)
            {
                return;
            }
            var questProgress = session.GetHabbo().GetQuestProgress(quest.Id);
            var num           = questProgress;
            var flag          = false;

            {
                if (questType != QuestType.ExploreFindItem)
                {
                    switch (questType)
                    {
                    case QuestType.StandOn:
                        if (eventData != quest.GoalData)
                        {
                            return;
                        }
                        num  = (int)quest.GoalData;
                        flag = true;
                        goto IL_DC;

                    case QuestType.GiveItem:
                        if (eventData != quest.GoalData)
                        {
                            return;
                        }
                        num  = (int)quest.GoalData;
                        flag = true;
                        goto IL_DC;

                    case QuestType.GiveCoffee:
                    case QuestType.WaveReindeer:
                        num++;
                        if ((num >= quest.GoalData))
                        {
                            flag = true;
                        }
                        goto IL_DC;

                    case QuestType.XmasParty:
                        num++;
                        if ((num == quest.GoalData))
                        {
                            flag = true;
                        }
                        goto IL_DC;
                    }
                }
                if (eventData != quest.GoalData)
                {
                    return;
                }
                num  = (int)quest.GoalData;
                flag = true;
IL_DC:
                using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.RunFastQuery(string.Concat(new object[]
                    {
                        "UPDATE users_quests_data SET progress = ",
                        num,
                        " WHERE user_id = ",
                        session.GetHabbo().Id,
                        " AND quest_id =  ",
                        quest.Id
                    }));
                    if (flag)
                    {
                        queryReactor.RunFastQuery(string.Format("UPDATE users_stats SET quest_id = 0 WHERE id = {0}",
                                                                session.GetHabbo().Id));
                    }
                }
                session.GetHabbo().Quests[session.GetHabbo().CurrentQuestId] = num;
                session.SendMessage(QuestStartedComposer.Compose(session, quest));
                if (!flag)
                {
                    return;
                }
                session.GetHabbo().CurrentQuestId     = 0u;
                session.GetHabbo().LastQuestCompleted = quest.Id;
                session.SendMessage(QuestCompletedComposer.Compose(session, quest));
                session.GetHabbo().ActivityPoints += quest.Reward;
                session.GetHabbo().NotifyNewPixels(quest.Reward);
                session.GetHabbo().UpdateSeasonalCurrencyBalance();
                GetList(session, null);
            }
        }
示例#6
0
        public static void ProgressUserQuest(Session Session, QuestType QuestType, uint EventData = 0)
        {
            if (Session.QuestCache.CurrentQuestId <= 0)
            {
                return;
            }

            Quest UserQuest = GetQuest(Session.QuestCache.CurrentQuestId);

            if (UserQuest == null || UserQuest.GoalType != QuestType)
            {
                return;
            }

            int  CurrentProgress = Session.QuestCache.GetQuestProgress(UserQuest.Id);
            int  NewProgress     = CurrentProgress;
            bool PassQuest       = false;

            switch (QuestType)
            {
            default:

                NewProgress++;

                if (NewProgress >= UserQuest.GoalData)
                {
                    PassQuest = true;
                }

                break;

            case QuestType.EXPLORE_FIND_ITEM:

                if (EventData != UserQuest.GoalData)
                {
                    return;
                }

                NewProgress = (int)UserQuest.GoalData;
                PassQuest   = true;
                break;
            }

            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                Session.QuestCache.AddOrUpdateData(MySqlClient, UserQuest.Id, NewProgress, !PassQuest);

                if (PassQuest)
                {
                    Session.CharacterInfo.UpdateActivityPointsBalance(MySqlClient, UserQuest.Reward);

                    Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1);

                    if (NextQuest != null)
                    {
                        Session.QuestCache.AddOrUpdateData(MySqlClient, NextQuest.Id, 0, true);
                    }
                }
            }

            Session.SendData(QuestStartedComposer.Compose(Session, UserQuest));

            if (PassQuest)
            {
                Session.SendData(QuestCompletedComposer.Compose(Session, UserQuest));
                Session.SendData(ActivityPointsBalanceComposer.Compose(Session.CharacterInfo.ActivityPointsBalance,
                                                                       UserQuest.Reward));
                GetList(Session, null);

                Session.MessengerFriendCache.BroadcastToFriends(MessengerFriendEventComposer.Compose(Session.CharacterId,
                                                                                                     MessengerFriendEventType.QuestCompleted, UserQuest.Category + "." + UserQuest.QuestName));
            }
        }