/// <summary> /// Initializes a new instance of the <see cref="TeleUserData" /> class. /// </summary> /// <param name="handler">The p handler.</param> /// <param name="userRefference">The p user refference.</param> /// <param name="roomId">The room identifier.</param> /// <param name="teleId">The tele identifier.</param> internal TeleUserData(GameClientMessageHandler handler, Habbo userRefference, uint roomId, uint teleId) { _mHandler = handler; _userRefference = userRefference; _roomId = roomId; _teleId = teleId; }
internal ServerMessage AppendVoteMessage(ServerMessage message, Habbo user, int status = 0) { message.Init(LibraryParser.OutgoingRequest("CompetitionVotingInfoMessageComposer")); message.AppendInteger(Id); message.AppendString(Name); message.AppendInteger(status); // 0 : vote - 1 : can't vote - 2 : you need the vote badge message.AppendInteger(user.DailyCompetitionVotes); return message; }
/// <summary> /// Stops this instance. /// </summary> internal void Stop() { if (GetMessageHandler() != null) GetMessageHandler().Destroy(); if (GetHabbo() != null) GetHabbo().OnDisconnect("disconnect"); CurrentRoomUserId = -1; _messageHandler = null; _habbo = null; _connection = null; }
/// <summary> /// Tries the login. /// </summary> /// <param name="authTicket">The authentication ticket.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> internal bool TryLogin(string authTicket) { try { string ip = GetConnection().GetIp(); uint errorCode; UserData userData = UserDataFactory.GetUserData(authTicket, out errorCode); if (errorCode == 1 || errorCode == 2) return false; Yupi.GetGame().GetClientManager().RegisterClient(this, userData.UserId, userData.User.UserName); _habbo = userData.User; userData.User.LoadData(userData); string banReason = Yupi.GetGame().GetBanManager().GetBanReason(userData.User.UserName, ip, MachineId); if (!string.IsNullOrEmpty(banReason) || userData.User.UserName == null) { SendNotifWithScroll(banReason); using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery($"SELECT ip_last FROM users WHERE id={GetHabbo().Id} LIMIT 1"); string supaString = queryReactor.GetString(); queryReactor.SetQuery( $"SELECT COUNT(0) FROM users_bans_access WHERE user_id={_habbo.Id} LIMIT 1"); int integer = queryReactor.GetInteger(); if (integer > 0) queryReactor.RunFastQuery( "UPDATE users_bans_access SET attempts = attempts + 1, ip='" + supaString + "' WHERE user_id=" + GetHabbo().Id + " LIMIT 1"); else queryReactor.RunFastQuery("INSERT INTO users_bans_access (user_id, ip) VALUES (" + GetHabbo().Id + ", '" + supaString + "')"); } return false; } using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor()) queryReactor.RunFastQuery($"UPDATE users SET ip_last='{ip}' WHERE id={GetHabbo().Id}"); userData.User.Init(this, userData); QueuedServerMessage queuedServerMessage = new QueuedServerMessage(_connection); ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UniqueMachineIDMessageComposer")); serverMessage.AppendString(MachineId); queuedServerMessage.AppendResponse(serverMessage); queuedServerMessage.AppendResponse( new ServerMessage(LibraryParser.OutgoingRequest("AuthenticationOKMessageComposer"))); ServerMessage serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("HomeRoomMessageComposer")); serverMessage2.AppendInteger(_habbo.HomeRoom); serverMessage2.AppendInteger(_habbo.HomeRoom); queuedServerMessage.AppendResponse(serverMessage2); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("MinimailCountMessageComposer")); serverMessage.AppendInteger(_habbo.MinimailUnreadMessages); queuedServerMessage.AppendResponse(serverMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("FavouriteRoomsMessageComposer")); serverMessage.AppendInteger(30); if (userData.User.FavoriteRooms == null || !userData.User.FavoriteRooms.Any()) serverMessage.AppendInteger(0); else { serverMessage.AppendInteger(userData.User.FavoriteRooms.Count); foreach (uint i in userData.User.FavoriteRooms) serverMessage.AppendInteger(i); } queuedServerMessage.AppendResponse(serverMessage); ServerMessage rightsMessage = new ServerMessage(LibraryParser.OutgoingRequest("UserClubRightsMessageComposer")); rightsMessage.AppendInteger(userData.User.GetSubscriptionManager().HasSubscription ? 2 : 0); rightsMessage.AppendInteger(userData.User.Rank); rightsMessage.AppendInteger(0); queuedServerMessage.AppendResponse(rightsMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("EnableNotificationsMessageComposer")); serverMessage.AppendBool(true); //isOpen serverMessage.AppendBool(false); queuedServerMessage.AppendResponse(serverMessage); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("EnableTradingMessageComposer")); serverMessage.AppendBool(true); queuedServerMessage.AppendResponse(serverMessage); userData.User.UpdateCreditsBalance(); serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ActivityPointsMessageComposer")); serverMessage.AppendInteger(2); serverMessage.AppendInteger(0); serverMessage.AppendInteger(userData.User.Duckets); serverMessage.AppendInteger(5); serverMessage.AppendInteger(userData.User.Diamonds); queuedServerMessage.AppendResponse(serverMessage); if (userData.User.HasFuse("fuse_mod")) queuedServerMessage.AppendResponse(Yupi.GetGame().GetModerationTool().SerializeTool(this)); queuedServerMessage.AppendResponse(Yupi.GetGame().GetAchievementManager().AchievementDataCached); queuedServerMessage.AppendResponse(GetHabbo().GetAvatarEffectsInventoryComponent().GetPacket()); queuedServerMessage.SendResponse(); Yupi.GetGame().GetAchievementManager().TryProgressHabboClubAchievements(this); Yupi.GetGame().GetAchievementManager().TryProgressRegistrationAchievements(this); Yupi.GetGame().GetAchievementManager().TryProgressLoginAchievements(this); return true; } catch (Exception ex) { ServerLogManager.LogCriticalException($"Bug during user login: {ex}"); } return false; }