/// <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); }
/// <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); }
/// <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(); }
/// <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(); } }
/// <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}"); } }