/// <summary> /// Called when [status changed]. /// </summary> /// <param name="notification">if set to <c>true</c> [notification].</param> internal void OnStatusChanged(bool notification) { if (Friends == null) { return; } IEnumerable <GameClient> clientsById = Yupi.GetGame().GetClientManager().GetClientsById(Friends.Keys); if (clientsById == null) { return; } foreach ( GameClient current in clientsById.Where( current => current?.GetHabbo() != null && current.GetHabbo().GetMessenger() != null)) { Habbo user = current.GetHabbo(); HabboMessenger messenger = user?.GetMessenger(); if (messenger != null) { messenger.UpdateFriend(_userId, current, true); UpdateFriend(user.Id, current, notification); } } }
/// <summary> /// Called when [disconnect]. /// </summary> /// <param name="reason">The reason.</param> internal void OnDisconnect(string reason) { if (Disconnected) return; Disconnected = true; if (_inventoryComponent != null) { _inventoryComponent.RunDbUpdate(); _inventoryComponent.SetIdleState(); } string navilogs = string.Empty; if (NavigatorLogs.Any()) { navilogs = NavigatorLogs.Values.Aggregate(navilogs, (current, navi) => current + $"{navi.Id},{navi.Value1},{navi.Value2};"); navilogs = navilogs.Remove(navilogs.Length - 1); } Yupi.GetGame().GetClientManager().UnregisterClient(Id, UserName); Writer.WriteLine(UserName + " disconnected from game. Reason: " + reason, "Yupi.Users", ConsoleColor.DarkYellow); TimeSpan getOnlineSeconds = DateTime.Now - TimeLoggedOn; int secondsToGive = getOnlineSeconds.Seconds; if (!_habboinfoSaved) { _habboinfoSaved = true; using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery("UPDATE users SET activity_points = " + ActivityPoints + ", credits = " + Credits + ", diamonds = " + Diamonds + ", online='0', last_online = '" + Yupi.GetUnixTimeStamp() + "', builders_items_used = " + BuildersItemsUsed + ", navigator_logs = @navilogs WHERE id = " + Id + " LIMIT 1;UPDATE users_stats SET achievement_score=" + AchievementPoints + " WHERE id=" + Id + " LIMIT 1;"); queryReactor.AddParameter("navilogs", navilogs); queryReactor.RunQuery(); queryReactor.RunFastQuery("UPDATE users_stats SET online_seconds = online_seconds + " + secondsToGive + " WHERE id = " + Id); if (Rank >= 4) queryReactor.RunFastQuery( $"UPDATE moderation_tickets SET status='open', moderator_id=0 WHERE status='picked' AND moderator_id={Id}"); queryReactor.RunFastQuery("UPDATE users SET block_newfriends = '" + Convert.ToInt32(HasFriendRequestsDisabled) + "', hide_online = '" + Convert.ToInt32(AppearOffline) + "', hide_inroom = '" + Convert.ToInt32(HideInRoom) + "' WHERE id = " + Id); } } if (InRoom) CurrentRoom?.GetRoomUserManager().RemoveUserFromRoom(_mClient, false, false); if (_messenger != null) { _messenger.AppearOffline = true; _messenger.Destroy(); _messenger = null; } _avatarEffectComponent?.Dispose(); _mClient = null; }
/// <summary> /// Initializes the specified client. /// </summary> /// <param name="client">The client.</param> /// <param name="data">The data.</param> internal void Init(GameClient client, UserData data) { _mClient = client; _subscriptionManager = new SubscriptionManager(Id, data); _badgeComponent = new UserBadgeManager(Id, data); _inventoryComponent = new InventoryComponent(Id, client, data); _inventoryComponent.SetActiveState(client); _avatarEffectComponent = new AvatarEffectComponent(Id, client, data); Quests = data.Quests; _messenger = new HabboMessenger(Id); _messenger.Init(data.Friends, data.Requests); FriendCount = Convert.ToUInt32(data.Friends.Count); SpectatorMode = false; Disconnected = false; UsersRooms = data.Rooms; MinimailUnreadMessages = data.MiniMailCount; Relationships = data.Relations; AnsweredPolls = data.SuggestedPolls; ClothesManagerManager = new UserClothesManager(Id); Preferences = new UserPreferences(Id); YoutubeManager = new YoutubeManager(Id); }
/// <summary> /// Initializes the information. /// </summary> /// <param name="data">The data.</param> internal void InitInformation(UserData data) { _subscriptionManager = new SubscriptionManager(Id, data); _badgeComponent = new UserBadgeManager(Id, data); Quests = data.Quests; _messenger = new HabboMessenger(Id); _messenger.Init(data.Friends, data.Requests); SpectatorMode = false; Disconnected = false; UsersRooms = data.Rooms; Relationships = data.Relations; AnsweredPolls = data.SuggestedPolls; }