Example #1
0
        /// <summary>
        /// Activates the quest.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="message">The message.</param>
        internal void ActivateQuest(GameClient session, ClientMessage message)
        {
            var quest = GetQuest(message.GetUInteger());

            if (quest == null)
            {
                return;
            }
            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "REPLACE INTO users_quests_data(user_id,quest_id) VALUES (",
                    session.GetHabbo().Id,
                    ", ",
                    quest.Id,
                    ")"
                }));
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "UPDATE users_stats SET quest_id = ",
                    quest.Id,
                    " WHERE id = ",
                    session.GetHabbo().Id
                }));
            }
            session.GetHabbo().CurrentQuestId = quest.Id;
            GetList(session, null);
            session.SendMessage(QuestStartedComposer.Compose(session, quest));
        }
Example #2
0
        /// <summary>
        /// Gets the current quest.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="message">The message.</param>
        internal void GetCurrentQuest(GameClient session, ClientMessage message)
        {
            if (!session.GetHabbo().InRoom)
            {
                return;
            }
            var quest             = GetQuest(session.GetHabbo().LastQuestCompleted);
            var nextQuestInSeries = GetNextQuestInSeries(quest.Category, (quest.Number + 1));

            if (nextQuestInSeries == null)
            {
                return;
            }
            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "REPLACE INTO users_quests_data(user_id,quest_id) VALUES (",
                    session.GetHabbo().Id,
                    ", ",
                    nextQuestInSeries.Id,
                    ")"
                }));
                queryReactor.RunFastQuery(string.Concat(new object[]
                {
                    "UPDATE users_stats SET quest_id = ",
                    nextQuestInSeries.Id,
                    " WHERE id = ",
                    session.GetHabbo().Id
                }));
            }
            session.GetHabbo().CurrentQuestId = nextQuestInSeries.Id;
            GetList(session, null);
            session.SendMessage(QuestStartedComposer.Compose(session, nextQuestInSeries));
        }
Example #3
0
        internal void GetCurrentQuest(GameClient Session, ClientMessage Message)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Quest UserQuest = GetQuest(Session.GetHabbo().LastCompleted);
            Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1);

            if (NextQuest == null)
            {
                return;
            }



            using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)");
                dbClient.runFastQuery("UPDATE users SET currentquestid = " + NextQuest.Id + " WHERE id = " + Session.GetHabbo().Id);
            }

            Session.GetHabbo().CurrentQuestId = NextQuest.Id;
            GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest));


            //Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest));
        }
Example #4
0
        internal void ActivateQuest(GameClient Session, ClientMessage Message)
        {
            Quest Quest = GetQuest(Message.PopWiredUInt());

            if (Quest == null)
            {
                return;
            }

            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == Database_Manager.Database.DatabaseType.MySQL)
                {
                    dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + Quest.Id + ", 0)");
                }
                else
                {
                    dbClient.runFastQuery("IF NOT EXISTS (SELECT user_id FROM user_quests WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + Quest.Id + ") " +
                                          "INSERT INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + Quest.Id + ", 0)");
                }
                dbClient.runFastQuery("UPDATE users SET currentquestid = " + Quest.Id + " WHERE id = " + Session.GetHabbo().Id);
            }

            Session.GetHabbo().CurrentQuestId = Quest.Id;
            GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, Quest));
        }
Example #5
0
        internal void ActivateQuest(GameClient Session, ClientMessage Message)
        {
            Quest quest = this.GetQuest(Message.PopWiredUInt());

            if (quest == null)
            {
                return;
            }
            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.runFastQuery(string.Concat(new object[]
                {
                    "REPLACE INTO user_quests(user_id,quest_id) VALUES (",
                    Session.GetHabbo().Id,
                    ", ",
                    quest.Id,
                    ")"
                }));
                queryreactor.runFastQuery(string.Concat(new object[]
                {
                    "UPDATE user_stats SET quest_id = ",
                    quest.Id,
                    " WHERE id = ",
                    Session.GetHabbo().Id
                }));
            }
            Session.GetHabbo().CurrentQuestId = quest.Id;
            this.GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, quest));
        }
Example #6
0
        internal void GetCurrentQuest(GameClient Session, ClientMessage Message)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }
            Quest quest             = this.GetQuest(Session.GetHabbo().LastQuestCompleted);
            Quest nextQuestInSeries = this.GetNextQuestInSeries(quest.Category, checked (quest.Number + 1));

            if (nextQuestInSeries == null)
            {
                return;
            }
            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.runFastQuery(string.Concat(new object[]
                {
                    "REPLACE INTO user_quests(user_id,quest_id) VALUES (",
                    Session.GetHabbo().Id,
                    ", ",
                    nextQuestInSeries.Id,
                    ")"
                }));
                queryreactor.runFastQuery(string.Concat(new object[]
                {
                    "UPDATE user_stats SET quest_id = ",
                    nextQuestInSeries.Id,
                    " WHERE id = ",
                    Session.GetHabbo().Id
                }));
            }
            Session.GetHabbo().CurrentQuestId = nextQuestInSeries.Id;
            this.GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, nextQuestInSeries));
        }
Example #7
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);
            }
        }
Example #8
0
        private static void GetRoomObjects(Session Session, ClientMessage Message)
        {
            RoomInstance Instance = RoomManager.GetInstanceByRoomId(Session.AbsoluteRoomId);

            if (Instance == null || Session.RoomJoined || !Session.RoomAuthed) // if instance not found, or user already joined us, OR if the user isn't authed in the first place, let's gtfo
            {
                return;
            }

            Instance.SendObjects(Session);

            if (!Instance.AddUserToRoom(Session))
            {
                RoomManager.RemoveUserFromRoom(Session);
                return;
            }

            Session.RoomAuthed = true;
            Session.RoomJoined = true;

            ModerationLogs.LogRoomEntry(Session.CharacterId, Instance.RoomId);
            MessengerHandler.MarkUpdateNeeded(Session, 0, false);

            Session.SendData(RoomWallsStatusComposer.Compose(Instance.Info.HideWalls, Instance.Info.WallThickness, Instance.Info.FloorThickness));
            Session.SendData(RoomInfoRightsComposer.Compose(Instance.Info.Type == RoomType.Flat, Instance.RoomId,
                                                            (Instance.Info.Type == RoomType.Flat && Instance.CheckUserRights(Session, true)), Instance.Info.PubInternalName));

            /*if (Instance.Info.Type == RoomType.Flat)
             * {
             *  Session.SendData(RoomInfoComposer.Compose(Instance.Info, true));
             * }*/

            if (Session.CharacterInfo.IsMuted)
            {
                Session.SendData(RoomMutedComposer.Compose((int)Session.CharacterInfo.MutedSecondsLeft));
            }

            if (Instance.Info.OwnerId != Session.CharacterId)
            {
                QuestManager.ProgressUserQuest(Session, QuestType.SOCIAL_VISIT);
            }

            if (Session.QuestCache.CurrentQuestId > 0)
            {
                Quest Quest = QuestManager.GetQuest(Session.QuestCache.CurrentQuestId);

                if (Quest != null)
                {
                    Session.SendData(QuestStartedComposer.Compose(Session, Quest));
                }
            }
        }
Example #9
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);
        }
Example #10
0
        private static void GetCurrentQuest(Session Session, ClientMessage Message)
        {
            if (!Session.InRoom)
            {
                return;
            }

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

            if (Quest == null)
            {
                return;
            }

            Session.SendData(QuestStartedComposer.Compose(Session, Quest));
        }
Example #11
0
        public void ActivateQuest(GameClient Session, ClientPacket Message)
        {
            Quest quest = this.GetQuest(Message.PopInt());

            if (quest == null)
            {
                return;
            }
            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.RunQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + quest.Id + ", 0)");
            }
            Session.GetHabbo().CurrentQuestId = quest.Id;
            this.GetList(Session, (ClientPacket)null);
            Session.SendPacket(QuestStartedComposer.Compose(Session, quest));
        }
Example #12
0
        private static void ActivateQuest(Session Session, ClientMessage Message)
        {
            Quest Quest = GetQuest(Message.PopWiredUInt32());

            if (Quest == null)
            {
                return;
            }

            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                Session.QuestCache.AddOrUpdateData(MySqlClient, Quest.Id, Session.QuestCache.GetQuestProgress(Quest.Id), true);
            }

            GetList(Session, null);
            Session.SendData(QuestStartedComposer.Compose(Session, Quest));
        }
Example #13
0
        internal void ActivateQuest(GameClient Session, ClientMessage Message)
        {
            var Quest = GetQuest(Message.PopWiredUInt());

            if (Quest == null)
            {
                return;
            }

            using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + Quest.Id + ", 0)");
            }

            Session.GetHabbo().CurrentQuestId = Quest.Id;
            GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, Quest));
        }
Example #14
0
        internal void ActivateQuest(GameClient Session, ClientMessage Message)
        {
            Quest Quest = GetQuest(Message.ReadUInt32());

            if (Quest == null)
            {
                return;
            }

            using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + Quest.Id + ", 0)");
                dbClient.runFastQuery("UPDATE users SET currentquestid = " + Quest.Id + " WHERE id = " + Session.GetHabbo().Id);
            }

            Session.GetHabbo().CurrentQuestId = Quest.Id;
            GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, Quest));
        }
Example #15
0
        public void GetCurrentQuest(GameClient Session, ClientPacket Message)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }
            Quest quest             = this.GetQuest(Session.GetHabbo().LastCompleted);
            Quest nextQuestInSeries = this.GetNextQuestInSeries(quest.Category, quest.Number + 1);

            if (nextQuestInSeries == null)
            {
                return;
            }
            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.RunQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + nextQuestInSeries.Id + ", 0)");
            }
            Session.GetHabbo().CurrentQuestId = nextQuestInSeries.Id;
            this.GetList(Session, (ClientPacket)null);
            Session.SendPacket(QuestStartedComposer.Compose(Session, nextQuestInSeries));
        }
Example #16
0
        internal void GetCurrentQuest(GameClient Session, ClientMessage Message)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Quest UserQuest = GetQuest(Session.GetHabbo().LastCompleted);
            Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1);

            if (NextQuest == null)
            {
                return;
            }



            using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == Database_Manager.Database.DatabaseType.MySQL)
                {
                    dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)");
                }
                else
                {
                    dbClient.runFastQuery("IF NOT EXISTS (SELECT user_id FROM user_quests WHERE user_id = " + Session.GetHabbo().Id + " AND quest_id = " + NextQuest.Id + ") " +
                                          "INSERT INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)");
                }
                dbClient.runFastQuery("UPDATE users SET currentquestid = " + NextQuest.Id + " WHERE id = " + Session.GetHabbo().Id);
            }

            Session.GetHabbo().CurrentQuestId = NextQuest.Id;
            GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest));


            //Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest));
        }
Example #17
0
        internal void GetCurrentQuest(GameClient Session, ClientMessage Message)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            var UserQuest = GetQuest(Session.GetHabbo().LastCompleted);
            var NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1);

            if (NextQuest == null)
            {
                return;
            }

            using (var dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.runFastQuery("REPLACE INTO user_quests VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ", 0)");
            }

            Session.GetHabbo().CurrentQuestId = NextQuest.Id;
            GetList(Session, null);
            Session.SendMessage(QuestStartedComposer.Compose(Session, NextQuest));
        }
Example #18
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);
                }
            }
        }
Example #19
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));
            }
        }
Example #20
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);
            }
        }
Example #21
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);
            }
        }