Exemplo n.º 1
0
        /// <summary>
        ///     Adds the subscription.
        /// </summary>
        /// <param name="dayLength">Length of the day.</param>
        internal void AddSubscription(double dayLength)
        {
            int num = (int)Math.Round(dayLength);

            GameClient clientByUserId = Yupi.GetGame().GetClientManager().GetClientByUserId(_userId);
            DateTime   target;
            int        num2;
            int        num3;

            if (_subscription != null)
            {
                target = Yupi.UnixToDateTime(_subscription.ExpireTime).AddDays(num);
                num2   = _subscription.ActivateTime;
                num3   = _subscription.LastGiftTime;
            }
            else
            {
                target = DateTime.Now.AddDays(num);
                num2   = Yupi.GetUnixTimeStamp();
                num3   = Yupi.GetUnixTimeStamp();
            }

            int num4 = Yupi.DateTimeToUnix(target);

            _subscription = new Subscription(2, num2, num4, num3);

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery(string.Concat("REPLACE INTO users_subscriptions VALUES (", _userId, ", 2, ",
                                                        num2, ", ", num4, ", ", num3, ");"));

            clientByUserId.GetHabbo().SerializeClub();
            Yupi.GetGame().GetAchievementManager().TryProgressHabboClubAchievements(clientByUserId);
        }
Exemplo n.º 2
0
Arquivo: Chatlog.cs Projeto: sgf/Yupi
        /// <summary>
        ///     Saves the specified room identifier.
        /// </summary>
        /// <param name="databaseQueryChunk"></param>
        /// <param name="id">Auto increment</param>
        internal void Save(DatabaseQueryChunk databaseQueryChunk, uint id)
        {
            if (IsSaved)
            {
                return;
            }

            databaseQueryChunk.AddQuery("INSERT INTO users_chatlogs (user_id, room_id, timestamp, message) VALUES (@user" + id + ", @room, @time" + id + ", @message" + id + ")");
            databaseQueryChunk.AddParameter("user" + id, UserId);
            databaseQueryChunk.AddParameter("time" + id, Yupi.DateTimeToUnix(TimeStamp));
            databaseQueryChunk.AddParameter("message" + id, Message);
        }
Exemplo n.º 3
0
        /// <summary>
        ///     Saves the specified room identifier.
        /// </summary>
        /// <param name="adapter"></param>
        /// <param name="roomId"></param>
        internal void Save(IQueryAdapter adapter, uint roomId)
        {
            if (IsSaved)
            {
                return;
            }

            adapter.SetQuery("INSERT INTO users_chatlogs (user_id, room_id, timestamp, message) VALUES (@user, @room, @time, @message)");
            adapter.AddParameter("user", UserId);
            adapter.AddParameter("room", roomId);
            adapter.AddParameter("time", Yupi.DateTimeToUnix(TimeStamp));
            adapter.AddParameter("message", Message);

            adapter.RunQuery();
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Saves the specified room identifier.
        /// </summary>
        /// <param name="roomId"></param>
        internal void Save(uint roomId)
        {
            if (IsSaved)
            {
                return;
            }

            using (IQueryAdapter adapter = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                adapter.SetQuery($"INSERT INTO users_chatlogs (user_id, room_id, timestamp, message) VALUES ('{UserId}', '{roomId}', '{Yupi.DateTimeToUnix(TimeStamp)}', @messageid_{UserId})");
                adapter.AddParameter("messageid_" + UserId, Message);

                adapter.RunQuery();
            }
        }
Exemplo n.º 5
0
        /// <summary>
        ///     Runs the database update.
        /// </summary>
        internal void RunDbUpdate()
        {
            try
            {
                if (_mRemovedItems.Count <= 0 && _mAddedItems.Count <= 0 && _inventoryPets.Count <= 0)
                {
                    return;
                }

                DatabaseQueryChunk queryChunk = new DatabaseQueryChunk();

                if (_mAddedItems.Count > 0)
                {
                    foreach (UserItem userItem in _mAddedItems.Values)
                    {
                        queryChunk.AddQuery($"UPDATE items_rooms SET user_id='{UserId}', room_id='0' WHERE id='{userItem.Id}'");
                    }

                    _mAddedItems.Clear();
                }

                if (_mRemovedItems.Count > 0)
                {
                    try
                    {
                        foreach (UserItem userItem2 in _mRemovedItems.Values)
                        {
                            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                                GetClient().GetHabbo().CurrentRoom.GetRoomItemHandler().SaveFurniture(queryReactor);

                            if (SongDisks.Contains(userItem2.Id))
                            {
                                SongDisks.Remove(userItem2.Id);
                            }
                        }
                    }
                    catch
                    {
                        // ignored
                    }

                    _mRemovedItems.Clear();
                }

                foreach (Pet current in _inventoryPets.Values)
                {
                    if (current.DbState == DatabaseUpdateState.NeedsUpdate)
                    {
                        queryChunk.AddParameter($"{current.PetId}name", current.Name);
                        queryChunk.AddParameter($"{current.PetId}race", current.Race);
                        queryChunk.AddParameter($"{current.PetId}color", current.Color);

                        queryChunk.AddQuery(string.Concat("UPDATE bots_data SET room_id = ", current.RoomId, ", name = @", current.PetId, "name, x = ", current.X, ", Y = ", current.Y, ", Z = ", current.Z, " WHERE id = ", current.PetId));

                        queryChunk.AddQuery(string.Concat("UPDATE pets_data SET race = @", current.PetId, "race, color = @", current.PetId, "color, type = ", current.Type, ", experience = ", current.Experience, ", energy = ", current.Energy, ", nutrition = ", current.Nutrition, ", respect = ", current.Respect, ", createstamp = '", current.CreationStamp, "', lasthealth_stamp = ", Yupi.DateTimeToUnix(current.LastHealth), ", untilgrown_stamp = ", Yupi.DateTimeToUnix(current.UntilGrown), " WHERE id = ", current.PetId));
                    }

                    current.DbState = DatabaseUpdateState.Updated;
                }

                using (IQueryAdapter queryreactor2 = Yupi.GetDatabaseManager().GetQueryReactor())
                    queryChunk.Execute(queryreactor2);
            }
            catch (Exception ex)
            {
                ServerLogManager.LogCacheError($"FATAL ERROR DURING USER INVENTORY DB UPDATE: {ex}");
            }
        }