/// <summary> /// Gets the inventory. /// </summary> internal void GetInventory() { QueuedServerMessage queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); queuedServerMessage.AppendResponse(Session.GetHabbo().GetInventoryComponent().SerializeFloorItemInventory()); queuedServerMessage.SendResponse(); }
/// <summary> /// Gets the inventory. /// </summary> internal void GetInventory() { var queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); queuedServerMessage.AppendResponse(Session.GetHabbo().GetInventoryComponent().SerializeFloorItemInventory()); queuedServerMessage.SendResponse(); }
internal void SerializeOpenTickets(ref QueuedServerMessage serverMessages, uint userID) { foreach (SupportTicket ticket in Tickets) { if (ticket.Status == TicketStatus.OPEN || (ticket.Status == TicketStatus.PICKED && ticket.ModeratorId == userID) || (ticket.Status == TicketStatus.PICKED && ticket.ModeratorId == null)) { serverMessages.appendResponse(ticket.Serialize()); } } }
/// <summary> /// Serializes the open tickets. /// </summary> /// <param name="serverMessages">The server messages.</param> /// <param name="userId">The user identifier.</param> internal void SerializeOpenTickets(ref QueuedServerMessage serverMessages, uint userId) { var message = new ServerMessage(LibraryParser.OutgoingRequest("ModerationToolIssueMessageComposer")); foreach (SupportTicket current in this.Tickets.Where(current => current.Status == TicketStatus.Open || (current.Status == TicketStatus.Picked && current.ModeratorId == userId) || (current.Status == TicketStatus.Picked && current.ModeratorId == 0u))) { message = current.Serialize(message); serverMessages.AppendResponse(message); } }
internal void SerializeOpenTickets(ref QueuedServerMessage serverMessages, uint userID) { ServerMessage message = new ServerMessage(Outgoing.ModerationToolIssueMessageComposer); foreach (SupportTicket current in this.Tickets) { if (current.Status == TicketStatus.OPEN || (current.Status == TicketStatus.PICKED && current.ModeratorId == userID) || (current.Status == TicketStatus.PICKED && current.ModeratorId == 0u)) { message = current.Serialize(message); serverMessages.appendResponse(message); } } }
/// <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 = 0; UserData userData = UserDataFactory.GetUserData(authTicket, out errorCode); if (errorCode == 1 || errorCode == 2) { Disconnect("error"); return(false); } #region Ban Checking //Let's have a quick search for a ban before we successfully authenticate.. ModerationBan BanRecord; if (!string.IsNullOrEmpty(MachineId)) { if (Plus.GetGame().GetBanManager().IsBanned(MachineId, out BanRecord)) { if (Plus.GetGame().GetBanManager().MachineBanCheck(MachineId)) { Disconnect("machine banned - login attempt"); return(false); } } } if (userData.User != null) { //Now let us check for a username ban record.. BanRecord = null; if (Plus.GetGame().GetBanManager().IsBanned(userData.User.UserName, out BanRecord)) { if (Plus.GetGame().GetBanManager().UsernameBanCheck(userData.User.UserName)) { Disconnect("banned - login attempt"); return(false); } } } #endregion Plus.GetGame().GetClientManager().RegisterClient(this, userData.UserId, userData.User.UserName); _habbo = userData.User; if (_habbo != null) { userData.User.LoadData(userData); using (Database.Manager.Database.Session_Details.Interfaces.IQueryAdapter dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM `rp_stats` WHERE `id` = '" + userData.UserId + "'"); DataRow Row = dbClient.GetRow(); RoleplayInstance RPData = CreateRoleplayInstance.GenerateInstance(Row); _roleplay = RPData; _roleplay.setRoleplayComponents(); } userData.User.Init(this, userData); var queuedServerMessage = new QueuedServerMessage(_connection); var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UniqueMachineIDMessageComposer")); serverMessage.AppendString(MachineId); queuedServerMessage.AppendResponse(serverMessage); queuedServerMessage.AppendResponse( new ServerMessage(LibraryParser.OutgoingRequest("AuthenticationOKMessageComposer"))); if (_habbo != null) { var 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); var 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.ActivityPoints); serverMessage.AppendInteger(5); serverMessage.AppendInteger(userData.User.BelCredits); queuedServerMessage.AppendResponse(serverMessage); if (userData.User.HasFuse("fuse_mod")) { queuedServerMessage.AppendResponse(Plus.GetGame().GetModerationTool().SerializeTool(this)); } queuedServerMessage.AppendResponse( Plus.GetGame().GetAchievementManager().AchievementDataCached); if (!GetHabbo().NuxPassed&& ExtraSettings.NEW_users_gifts_ENABLED) { queuedServerMessage.AppendResponse( new ServerMessage(LibraryParser.OutgoingRequest("NuxSuggestFreeGiftsMessageComposer"))); } queuedServerMessage.AppendResponse(GetHabbo().GetAvatarEffectsInventoryComponent().GetPacket()); queuedServerMessage.SendResponse(); Plus.GetGame().GetAchievementManager().TryProgressHabboClubAchievements(this); Plus.GetGame().GetAchievementManager().TryProgressRegistrationAchievements(this); Plus.GetGame().GetAchievementManager().TryProgressLoginAchievements(this); return(true); } } catch (Exception e) { Logging.LogCriticalException("Bug during user login: " + e); } return(false); }
/// <summary> /// Serializes the quests. /// </summary> /// <param name="response">The response.</param> internal void SerializeQuests(ref QueuedServerMessage response) { Plus.GetGame().GetQuestManager().GetList(_mClient, null); }
internal QueuedServerMessage LoadRoomForUser() { Room currentLoadingRoom = CurrentLoadingRoom; QueuedServerMessage queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); if (currentLoadingRoom == null || !Session.GetHabbo().LoadingChecksPassed) return queuedServerMessage; if (Session.GetHabbo().FavouriteGroup > 0u) { if (CurrentLoadingRoom.RoomData.Group != null && !CurrentLoadingRoom.LoadedGroups.ContainsKey(CurrentLoadingRoom.RoomData.Group.Id)) CurrentLoadingRoom.LoadedGroups.Add(CurrentLoadingRoom.RoomData.Group.Id, CurrentLoadingRoom.RoomData.Group.Badge); if (!CurrentLoadingRoom.LoadedGroups.ContainsKey(Session.GetHabbo().FavouriteGroup) && Yupi.GetGame().GetGroupManager().GetGroup(Session.GetHabbo().FavouriteGroup) != null) CurrentLoadingRoom.LoadedGroups.Add(Session.GetHabbo().FavouriteGroup, Yupi.GetGame().GetGroupManager().GetGroup(Session.GetHabbo().FavouriteGroup).Badge); } Response.Init(LibraryParser.OutgoingRequest("RoomGroupMessageComposer")); Response.AppendInteger(CurrentLoadingRoom.LoadedGroups.Count); foreach (KeyValuePair<uint, string> guild1 in CurrentLoadingRoom.LoadedGroups) { Response.AppendInteger(guild1.Key); Response.AppendString(guild1.Value); } queuedServerMessage.AppendResponse(GetResponse()); Response.Init(LibraryParser.OutgoingRequest("InitialRoomInfoMessageComposer")); Response.AppendString(currentLoadingRoom.RoomData.ModelName); Response.AppendInteger(currentLoadingRoom.RoomId); queuedServerMessage.AppendResponse(GetResponse()); if (Session.GetHabbo().SpectatorMode) { Response.Init(LibraryParser.OutgoingRequest("SpectatorModeMessageComposer")); queuedServerMessage.AppendResponse(GetResponse()); } if (currentLoadingRoom.RoomData.WallPaper != "0.0") { Response.Init(LibraryParser.OutgoingRequest("RoomSpacesMessageComposer")); Response.AppendString("wallpaper"); Response.AppendString(currentLoadingRoom.RoomData.WallPaper); queuedServerMessage.AppendResponse(GetResponse()); } if (currentLoadingRoom.RoomData.Floor != "0.0") { Response.Init(LibraryParser.OutgoingRequest("RoomSpacesMessageComposer")); Response.AppendString("floor"); Response.AppendString(currentLoadingRoom.RoomData.Floor); queuedServerMessage.AppendResponse(GetResponse()); } Response.Init(LibraryParser.OutgoingRequest("RoomSpacesMessageComposer")); Response.AppendString("landscape"); Response.AppendString(currentLoadingRoom.RoomData.LandScape); queuedServerMessage.AppendResponse(GetResponse()); if (currentLoadingRoom.CheckRights(Session, true)) { Response.Init(LibraryParser.OutgoingRequest("RoomRightsLevelMessageComposer")); Response.AppendInteger(4); queuedServerMessage.AppendResponse(GetResponse()); Response.Init(LibraryParser.OutgoingRequest("HasOwnerRightsMessageComposer")); queuedServerMessage.AppendResponse(GetResponse()); } else if (currentLoadingRoom.CheckRights(Session, false, true)) { Response.Init(LibraryParser.OutgoingRequest("RoomRightsLevelMessageComposer")); Response.AppendInteger(1); queuedServerMessage.AppendResponse(GetResponse()); } else { Response.Init(LibraryParser.OutgoingRequest("RoomRightsLevelMessageComposer")); Response.AppendInteger(0); queuedServerMessage.AppendResponse(GetResponse()); } Response.Init(LibraryParser.OutgoingRequest("RoomRatingMessageComposer")); Response.AppendInteger(currentLoadingRoom.RoomData.Score); Response.AppendBool(!Session.GetHabbo().RatedRooms.Contains(currentLoadingRoom.RoomId) && !currentLoadingRoom.CheckRights(Session, true)); queuedServerMessage.AppendResponse(GetResponse()); Response.Init(LibraryParser.OutgoingRequest("RoomUpdateMessageComposer")); Response.AppendInteger(currentLoadingRoom.RoomId); queuedServerMessage.AppendResponse(GetResponse()); return queuedServerMessage; }
internal void PrepareRoomForUser(uint id, string pWd, bool isReload = false) { try { if (Session?.GetHabbo() == null || Session.GetHabbo().LoadingRoom == id) return; if (Yupi.ShutdownStarted) { Session.SendNotif(Yupi.GetLanguage().GetVar("server_shutdown")); return; } Session.GetHabbo().LoadingRoom = id; QueuedServerMessage queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); Room room; if (Session.GetHabbo().InRoom) { room = Yupi.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (room?.GetRoomUserManager() != null) room.GetRoomUserManager().RemoveUserFromRoom(Session, false, false); } room = Yupi.GetGame().GetRoomManager().LoadRoom(id); if (room == null) return; if (room.UserCount >= room.RoomData.UsersMax && !Session.GetHabbo().HasFuse("fuse_enter_full_rooms") && Session.GetHabbo().Id != (ulong) room.RoomData.OwnerId) { ServerMessage roomQueue = new ServerMessage(LibraryParser.OutgoingRequest("RoomsQueue")); roomQueue.AppendInteger(2); roomQueue.AppendString("visitors"); roomQueue.AppendInteger(2); roomQueue.AppendInteger(1); roomQueue.AppendString("visitors"); roomQueue.AppendInteger(room.UserCount - (int) room.RoomData.UsersNow); roomQueue.AppendString("spectators"); roomQueue.AppendInteger(1); roomQueue.AppendInteger(1); roomQueue.AppendString("spectators"); roomQueue.AppendInteger(0); Session.SendMessage(roomQueue); //ClearRoomLoading(); return; /* var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("RoomEnterErrorMessageComposer")); serverMessage.AppendInteger(1); Session.SendMessage(serverMessage); var message = new ServerMessage(LibraryParser.OutgoingRequest("OutOfRoomMessageComposer")); Session.SendMessage(message); ClearRoomLoading(); return; */ } CurrentLoadingRoom = room; if (!Session.GetHabbo().HasFuse("fuse_enter_any_room") && room.UserIsBanned(Session.GetHabbo().Id)) { if (!room.HasBanExpired(Session.GetHabbo().Id)) { ClearRoomLoading(); ServerMessage serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("RoomEnterErrorMessageComposer")); serverMessage2.AppendInteger(4); Session.SendMessage(serverMessage2); Response.Init(LibraryParser.OutgoingRequest("OutOfRoomMessageComposer")); queuedServerMessage.AppendResponse(GetResponse()); queuedServerMessage.SendResponse(); return; } room.RemoveBan(Session.GetHabbo().Id); } Response.Init(LibraryParser.OutgoingRequest("PrepareRoomMessageComposer")); queuedServerMessage.AppendResponse(GetResponse()); if (!isReload && !Session.GetHabbo().HasFuse("fuse_enter_any_room") && !room.CheckRightsDoorBell(Session, true, true, room.RoomData.Group != null && room.RoomData.Group.Members.ContainsKey(Session.GetHabbo().Id)) && !(Session.GetHabbo().IsTeleporting && Session.GetHabbo().TeleportingRoomId == id) && !Session.GetHabbo().IsHopping) { if (room.RoomData.State == 1) { if (room.UserCount == 0) { Response.Init(LibraryParser.OutgoingRequest("DoorbellNoOneMessageComposer")); queuedServerMessage.AppendResponse(GetResponse()); } else { Response.Init(LibraryParser.OutgoingRequest("DoorbellMessageComposer")); Response.AppendString(string.Empty); queuedServerMessage.AppendResponse(GetResponse()); ServerMessage serverMessage3 = new ServerMessage(LibraryParser.OutgoingRequest("DoorbellMessageComposer")); serverMessage3.AppendString(Session.GetHabbo().UserName); room.SendMessageToUsersWithRights(serverMessage3); } queuedServerMessage.SendResponse(); return; } if (room.RoomData.State == 2 && !string.Equals(pWd, room.RoomData.PassWord, StringComparison.CurrentCultureIgnoreCase)) { ClearRoomLoading(); Session.GetMessageHandler() .GetResponse() .Init(LibraryParser.OutgoingRequest("RoomErrorMessageComposer")); Session.GetMessageHandler().GetResponse().AppendInteger(-100002); Session.GetMessageHandler().SendResponse(); Session.GetMessageHandler() .GetResponse() .Init(LibraryParser.OutgoingRequest("OutOfRoomMessageComposer")); Session.GetMessageHandler().GetResponse(); Session.GetMessageHandler().SendResponse(); return; } } Session.GetHabbo().LoadingChecksPassed = true; queuedServerMessage.AddBytes(LoadRoomForUser().GetPacket); queuedServerMessage.SendResponse(); if (Session.GetHabbo().RecentlyVisitedRooms.Contains(room.RoomId)) Session.GetHabbo().RecentlyVisitedRooms.Remove(room.RoomId); Session.GetHabbo().RecentlyVisitedRooms.AddFirst(room.RoomId); } catch (Exception e) { YupiLogManager.LogException("PrepareRoomForUser. RoomId: " + id + "; UserId: " + (Session?.GetHabbo().Id.ToString(CultureInfo.InvariantCulture) ?? "null") + Environment.NewLine + e, "Failed Preparing Room for User."); } }
internal void OnRoomUserAdd() { if (Session == null || GetResponse() == null) return; QueuedServerMessage queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); if (CurrentLoadingRoom?.GetRoomUserManager() == null || CurrentLoadingRoom.GetRoomUserManager().UserList == null) return; IEnumerable<RoomUser> list = CurrentLoadingRoom.GetRoomUserManager().UserList.Values.Where(current => current != null && !current.IsSpectator); Response.Init(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer")); Response.StartArray(); foreach (RoomUser current2 in list) { try { current2.Serialize(Response, CurrentLoadingRoom.GetGameMap().GotPublicPool); Response.SaveArray(); } catch (Exception e) { YupiLogManager.LogException(e, "Registered Room YupiDatabaseManager Exception."); Response.Clear(); } } Response.EndArray(); queuedServerMessage.AppendResponse(GetResponse()); queuedServerMessage.AppendResponse(RoomFloorAndWallComposer(CurrentLoadingRoom)); queuedServerMessage.AppendResponse(GetResponse()); Response.Init(LibraryParser.OutgoingRequest("RoomOwnershipMessageComposer")); Response.AppendInteger(CurrentLoadingRoom.RoomId); Response.AppendBool(CurrentLoadingRoom.CheckRights(Session, true)); queuedServerMessage.AppendResponse(GetResponse()); foreach (Habbo habboForId in CurrentLoadingRoom.UsersWithRights.Select(Yupi.GetHabboById)) { if (habboForId == null) continue; GetResponse().Init(LibraryParser.OutgoingRequest("GiveRoomRightsMessageComposer")); GetResponse().AppendInteger(CurrentLoadingRoom.RoomId); GetResponse().AppendInteger(habboForId.Id); GetResponse().AppendString(habboForId.UserName); queuedServerMessage.AppendResponse(GetResponse()); } ServerMessage serverMessage = CurrentLoadingRoom.GetRoomUserManager().SerializeStatusUpdates(true); if (serverMessage != null) queuedServerMessage.AppendResponse(serverMessage); if (CurrentLoadingRoom.RoomData.Event != null) Yupi.GetGame().GetRoomEvents().SerializeEventInfo(CurrentLoadingRoom.RoomId); CurrentLoadingRoom.JustLoaded = false; foreach (RoomUser current4 in CurrentLoadingRoom.GetRoomUserManager().UserList.Values.Where(current4 => current4 != null)) { if (current4.IsBot) { if (current4.BotData.DanceId > 0) { Response.Init(LibraryParser.OutgoingRequest("DanceStatusMessageComposer")); Response.AppendInteger(current4.VirtualId); Response.AppendInteger(current4.BotData.DanceId); queuedServerMessage.AppendResponse(GetResponse()); } } else if (current4.IsDancing) { Response.Init(LibraryParser.OutgoingRequest("DanceStatusMessageComposer")); Response.AppendInteger(current4.VirtualId); Response.AppendInteger(current4.DanceId); queuedServerMessage.AppendResponse(GetResponse()); } if (current4.IsAsleep) { ServerMessage sleepMsg = new ServerMessage(LibraryParser.OutgoingRequest("RoomUserIdleMessageComposer")); sleepMsg.AppendInteger(current4.VirtualId); sleepMsg.AppendBool(true); queuedServerMessage.AppendResponse(sleepMsg); } if (current4.CarryItemId > 0 && current4.CarryTimer > 0) { Response.Init(LibraryParser.OutgoingRequest("ApplyHanditemMessageComposer")); Response.AppendInteger(current4.VirtualId); Response.AppendInteger(current4.CarryTimer); queuedServerMessage.AppendResponse(GetResponse()); } if (current4.IsBot) continue; try { if (current4.GetClient() != null && current4.GetClient().GetHabbo() != null) { if (current4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() != null && current4.CurrentEffect >= 1) { Response.Init(LibraryParser.OutgoingRequest("ApplyEffectMessageComposer")); Response.AppendInteger(current4.VirtualId); Response.AppendInteger(current4.CurrentEffect); Response.AppendInteger(0); queuedServerMessage.AppendResponse(GetResponse()); } ServerMessage serverMessage2 = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); serverMessage2.AppendInteger(current4.VirtualId); serverMessage2.AppendString(current4.GetClient().GetHabbo().Look); serverMessage2.AppendString(current4.GetClient().GetHabbo().Gender.ToLower()); serverMessage2.AppendString(current4.GetClient().GetHabbo().Motto); serverMessage2.AppendInteger(current4.GetClient().GetHabbo().AchievementPoints); CurrentLoadingRoom?.SendMessage(serverMessage2); } } catch (Exception e) { YupiLogManager.LogException(e, "Failed Broadcasting Room Data to Client.", "Yupi.Rooms"); } } queuedServerMessage.SendResponse(); }
internal void SerializeQuests(ref QueuedServerMessage response) { CyberEnvironment.GetGame().GetQuestManager().GetList(this.mClient, null); }
internal bool tryLogin(string AuthTicket) { try { if (GetConnection() == null) { return(false); } var userData = UserDataFactory.GetUserData(AuthTicket); if (userData == null) { this.Disconnect(); return(false); } OtanixEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.user.Id, userData.user.Username); Habbo = userData.user; if (userData.user.Username == null || GetHabbo() == null) { SendBanMessage("Você não possui um nome."); return(false); } userData.user.Init(userData); Habbo.MachineId = MachineId; var response = new QueuedServerMessage(Connection); var authok = new ServerMessage(Outgoing.AuthenticationOK); response.appendResponse(authok); var HomeRoom = new ServerMessage(Outgoing.HomeRoom); HomeRoom.AppendUInt((OtanixEnvironment.GetGame().GetPrisaoManager().estaPreso(GetHabbo().Id)) ? OtanixEnvironment.prisaoId() : GetHabbo().HomeRoom); // first home HomeRoom.AppendUInt((OtanixEnvironment.GetGame().GetPrisaoManager().estaPreso(GetHabbo().Id)) ? OtanixEnvironment.prisaoId() : GetHabbo().HomeRoom); // current home response.appendResponse(HomeRoom); var FavouriteRooms = new ServerMessage(Outgoing.FavouriteRooms); FavouriteRooms.AppendInt32(30); // max rooms FavouriteRooms.AppendInt32(userData.user.FavoriteRooms.Count); foreach (var Id in userData.user.FavoriteRooms.ToArray()) { FavouriteRooms.AppendUInt(Id); } response.appendResponse(FavouriteRooms); var sendClub = new ServerMessage(Outgoing.SerializeClub); sendClub.AppendString("club_habbo"); sendClub.AppendInt32(0); // days left sendClub.AppendInt32(0); // days multiplier sendClub.AppendInt32(0); // months left sendClub.AppendInt32(0); // ??? sendClub.AppendBoolean(true); // HC PRIVILEGE sendClub.AppendBoolean(true); // VIP PRIVILEGE sendClub.AppendInt32(0); // days i have on hc sendClub.AppendInt32(0); // days i've purchased sendClub.AppendInt32(495); // value 4 groups response.appendResponse(sendClub); var roomAccessConfig = new ServerMessage(Outgoing.RoomAccessConfig); roomAccessConfig.AppendBoolean(true); // isOpen roomAccessConfig.AppendBoolean(false); roomAccessConfig.AppendBoolean(true); response.appendResponse(roomAccessConfig); var fuserights = new ServerMessage(Outgoing.Fuserights); fuserights.AppendInt32(2); // normal|hc|vip fuserights.AppendUInt(GetHabbo().Rank); fuserights.AppendBoolean(GetHabbo().HasFuse("fuse_ambassador")); // embajador ? // fuserights.AppendInt32(0); // New Identity (1 == 1 min and Alert!) response.appendResponse(fuserights); var newidentity = new ServerMessage(Outgoing.SendNewIdentityState); newidentity.AppendInt32(GetHabbo().NewIdentity); response.appendResponse(newidentity); var HabboInformation = new ServerMessage(Outgoing.HabboInfomation); HabboInformation.AppendUInt(GetHabbo().Id); HabboInformation.AppendString(GetHabbo().Username); HabboInformation.AppendString(GetHabbo().Look); HabboInformation.AppendString(GetHabbo().Gender.ToUpper()); HabboInformation.AppendString(GetHabbo().Motto); HabboInformation.AppendString(GetHabbo().RealName); HabboInformation.AppendBoolean(false); HabboInformation.AppendUInt(GetHabbo().Respect); HabboInformation.AppendUInt(GetHabbo().DailyRespectPoints); // respect to give away HabboInformation.AppendUInt(GetHabbo().DailyPetRespectPoints); HabboInformation.AppendBoolean(true); HabboInformation.AppendString(OtanixEnvironment.UnixTimeStampToDateTime(GetHabbo().LastOnline).ToString()); HabboInformation.AppendBoolean(GetHabbo().NameChanges < EmuSettings.MAX_NAME_CHANGES); // CHANGENAME - HabboInformation.AppendBoolean((this.GetHabbo().Diamonds<=0||this.GetHabbo().NameChanges>=ButterflyEnvironment.maxNameChanges)?false:true); HabboInformation.AppendBoolean(false); response.appendResponse(HabboInformation); var IsGuide = (Habbo.Rank > 1) ? true : false; var VoteInCompetitions = false; var Trade = true; var Citizien = (Habbo.CitizenshipLevel >= 4) ? true : false; var JudgeChat = (Habbo.Rank > 2) ? true : false; var NavigatorThumbailCamera = false; var navigatorphaseTwo = true; var Camera = true; var CallHelpers = true; var BuilderAtWork = true; var MouseZoom = false; var Allows = new ServerMessage(Outgoing.PerkAllowancesMessageParser); Allows.AppendInt32(11); // count Allows.AppendString("TRADE"); Allows.AppendString((!Trade) ? "requirement.unfulfilled.citizenship_level_3" : ""); Allows.AppendBoolean(Trade); Allows.AppendString("NAVIGATOR_ROOM_THUMBNAIL_CAMERA"); Allows.AppendString((!NavigatorThumbailCamera) ? "" : ""); Allows.AppendBoolean(NavigatorThumbailCamera); Allows.AppendString("NAVIGATOR_PHASE_TWO_2014"); Allows.AppendString((!navigatorphaseTwo) ? "requirement.unfulfilled.feature_disabled" : ""); Allows.AppendBoolean(navigatorphaseTwo); Allows.AppendString("VOTE_IN_COMPETITIONS"); Allows.AppendString((!VoteInCompetitions) ? "requirement.unfulfilled.helper_level_2" : ""); Allows.AppendBoolean(VoteInCompetitions); Allows.AppendString("BUILDER_AT_WORK"); Allows.AppendString((!BuilderAtWork) ? "requirement.unfulfilled.group_membership" : ""); Allows.AppendBoolean(BuilderAtWork); Allows.AppendString("MOUSE_ZOOM"); Allows.AppendString((!MouseZoom) ? "requirement.unfulfilled.feature_disabled" : ""); Allows.AppendBoolean(MouseZoom); Allows.AppendString("CAMERA"); Allows.AppendString((!Camera) ? "requirement.unfulfilled.feature_disabled" : ""); Allows.AppendBoolean(Camera); Allows.AppendString("CALL_ON_HELPERS"); Allows.AppendString((!CallHelpers) ? "requirement.unfulfilled.citizenship_level_1" : ""); Allows.AppendBoolean(CallHelpers); Allows.AppendString("CITIZEN"); Allows.AppendString((!Citizien) ? "requirement.unfulfilled.citizenship_level_3" : ""); Allows.AppendBoolean(Citizien); Allows.AppendString("USE_GUIDE_TOOL"); Allows.AppendString((!IsGuide) ? "requirement.unfulfilled.helper_level_4" : ""); Allows.AppendBoolean(IsGuide); Allows.AppendString("JUDGE_CHAT_REVIEWS"); Allows.AppendString((!JudgeChat) ? "requirement.unfulfilled.citizenship_level_6" : ""); Allows.AppendBoolean(JudgeChat); response.appendResponse(Allows); var enabledBuilderClub = new ServerMessage(Outgoing.EnableBuilderClub); enabledBuilderClub.AppendInt32(GetHabbo().IsPremium() ? GetHabbo().GetPremiumManager().GetRemainingTime() : 0); // Tiempo restante de Constructor (2678400 = 1 mes entero (s)) enabledBuilderClub.AppendUInt(GetHabbo().IsPremium() ? GetHabbo().GetPremiumManager().GetMaxItems() : 50); // Furnis que puedo alquilar enabledBuilderClub.AppendInt32(20000); // Se puede ampliar la alquilación hasta.. enabledBuilderClub.AppendInt32(0); response.appendResponse(enabledBuilderClub); response.appendResponse(GetHabbo().GetUserClothingManager().SerializeClothes()); var achivPoints = new ServerMessage(Outgoing.AchievementPoints); achivPoints.AppendUInt(GetHabbo().AchievementPoints); response.appendResponse(achivPoints); var loadVolumen = new ServerMessage(Outgoing.LoadVolumen); loadVolumen.AppendInt32(int.Parse(GetHabbo().volumenSystem.Split(';')[0])); loadVolumen.AppendInt32(int.Parse(GetHabbo().volumenSystem.Split(';')[1])); loadVolumen.AppendInt32(int.Parse(GetHabbo().volumenSystem.Split(';')[2])); loadVolumen.AppendBoolean(GetHabbo().preferOldChat); loadVolumen.AppendBoolean(GetHabbo().IgnoreRoomInvitations); loadVolumen.AppendBoolean(GetHabbo().DontFocusUser); // fcus user loadVolumen.AppendInt32(0); // loadVolumen.AppendInt32(0); // freeFlowChat response.appendResponse(loadVolumen); var muteUsers = new ServerMessage(Outgoing.SerializeMuteUsers); muteUsers.AppendInt32(GetHabbo().MutedUsers.Count); foreach (string IgnoreName in GetHabbo().MutedUsers) { muteUsers.AppendString(IgnoreName); } response.appendResponse(muteUsers); TargetedOffer to = OtanixEnvironment.GetGame().GetTargetedOfferManager().GetRandomStaticTargetedOffer(); if (to != null) { if (!GetHabbo().TargetedOffers.ContainsKey(to.Id) || GetHabbo().TargetedOffers[to.Id] < to.PurchaseLimit) { response.appendResponse(OtanixEnvironment.GetGame().GetTargetedOfferManager().SerializeTargetedOffer(to)); } } /*var giftOptions = new ServerMessage(Outgoing.NewUserExperienceGiftOfferParser); * giftOptions.AppendInt32(1); // foreach * { * giftOptions.AppendInt32(0); * giftOptions.AppendInt32(0); * giftOptions.AppendInt32(1); // foreach (items?) * { * giftOptions.AppendString("Testeando"); // itemName ?? * giftOptions.AppendInt32(1); // foreach * { * giftOptions.AppendString("a1_kumiankka"); // item 1 * giftOptions.AppendString(""); // item 2 (if is empty == null) * } * } * } * response.appendResponse(giftOptions);*/ response.appendResponse(OtanixEnvironment.GetGame().GetAchievementManager().AchievementPrede); if (GetHabbo().HomeRoom <= 0) { var homeRoom = new ServerMessage(Outgoing.OutOfRoom); response.appendResponse(homeRoom); } else { Room room = OtanixEnvironment.GetGame().GetRoomManager().GetRoom(GetHabbo().HomeRoom); if (room != null) { this.GetMessageHandler().enterOnRoom3(room); } } response.sendResponse(); // Verifica a conta staff if (GetHabbo().Rank > 5) { ServerMessage VerificaSenha = new ServerMessage(Outgoing.MobilePhoneNumero); VerificaSenha.AppendInt32(1); VerificaSenha.AppendInt32(1); SendMessage(VerificaSenha); } // Termina de verificar a conta staff Ban BanReason = OtanixEnvironment.GetGame().GetBanManager().GetBanReason(Habbo.Username, Habbo.MachineId); if (BanReason != null) { SendScrollNotif("Você tem um banimento do tipo: " + BanReason.Type + "\r\nMotivo: " + BanReason.ReasonMessage); Disconnect(); return(false); } GetHabbo().InitMessenger(); if (GetHabbo().GetAvatarEffectsInventoryComponent() != null) { SendMessage(GetHabbo().GetAvatarEffectsInventoryComponent().Serialize()); } SendMessage(OtanixEnvironment.GetGame().GetModerationTool().SerializeCfhTopics()); if (LanguageLocale.welcomeAlertEnabled) { string strAlert = BlackWordsManager.SpecialReplace(LanguageLocale.welcomeAlert, this); if (LanguageLocale.welcomeAlertType == 0) { SendScrollNotif(strAlert); } else if (LanguageLocale.welcomeAlertType == 1) { SendNotif(strAlert); } else if (LanguageLocale.welcomeAlertType == 2) { SendNotifWithImage(strAlert, LanguageLocale.welcomeAlertImage); } } OtanixEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(Habbo.Id, "ACH_EmailVerification", 1); GetHabbo().UpdateCreditsBalance(); GetHabbo().UpdateExtraMoneyBalance(); GetHabbo().setMeOnline(); GetHabbo().InitExtra(); UsersCache.enterProvisionalRoom(this); return(true); } catch (UserDataNotFoundException e) { SendScrollNotif(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e); } return(false); }
internal void SerializeQuests(ref QueuedServerMessage response) { ButterflyEnvironment.GetGame().GetQuestManager().GetList(mClient, null); }
internal void GoToHotelView() { var room = AzureEmulator.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (room != null) room.GetRoomUserManager().RemoveUserFromRoom(Session, true, false); var hotelView = AzureEmulator.GetGame().GetHotelView(); if (hotelView.FurniRewardName != null) { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("LandingRewardMessageComposer")); serverMessage.AppendString(hotelView.FurniRewardName); serverMessage.AppendInteger(hotelView.FurniRewardId); serverMessage.AppendInteger(120); serverMessage.AppendInteger(120 - Session.GetHabbo().Respect); Session.SendMessage(serverMessage); } Session.CurrentRoomUserId = -1; if (roomQueue == true) { var queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); Response.Init(LibraryParser.OutgoingRequest("OutOfRoomMessageComposer")); queuedServerMessage.AppendResponse(GetResponse()); queuedServerMessage.SendResponse(); roomQueue = false; return; } }
/// <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.ActivityPoints); 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); if (!GetHabbo().NuxPassed&& ServerExtraSettings.NewUsersGiftsEnabled) { queuedServerMessage.AppendResponse(new ServerMessage(LibraryParser.OutgoingRequest("NuxSuggestFreeGiftsMessageComposer"))); } 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); }
internal void GetRoomData2() { try { if (Session != null && Session.GetConnection() != null) { var queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); if (Session.GetHabbo().LoadingRoom <= 0u || CurrentLoadingRoom == null) return; var roomData = CurrentLoadingRoom.RoomData; if (roomData == null) return; if (roomData.Model == null || CurrentLoadingRoom.GetGameMap() == null) { Session.SendMessage( new ServerMessage(LibraryParser.OutgoingRequest("OutOfRoomMessageComposer"))); ClearRoomLoading(); } else { queuedServerMessage.AppendResponse(CurrentLoadingRoom.GetGameMap().GetNewHeightmap()); queuedServerMessage.AppendResponse(CurrentLoadingRoom.GetGameMap().Model.GetHeightmap()); queuedServerMessage.SendResponse(); GetRoomData3(); } } } catch (Exception ex) { Logging.LogException("Unable to load room ID [" + Session.GetHabbo().LoadingRoom + "]" + ex); Logging.HandleException(ex, "Azure.Messages.Handlers.Rooms"); } }
internal void GetRoomData3() { if (Session.GetHabbo().LoadingRoom <= 0u || !Session.GetHabbo().LoadingChecksPassed || CurrentLoadingRoom == null || Session == null) return; var queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); var array = CurrentLoadingRoom.GetRoomItemHandler().FloorItems.Values.ToArray(); var array2 = CurrentLoadingRoom.GetRoomItemHandler().WallItems.Values.ToArray(); Response.Init(LibraryParser.OutgoingRequest("RoomFloorItemsMessageComposer")); if (CurrentLoadingRoom.RoomData.Group != null) { if (CurrentLoadingRoom.RoomData.Group.AdminOnlyDeco == 1u) { Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Admins.Count + 1); using (var enumerator = CurrentLoadingRoom.RoomData.Group.Admins.Values.GetEnumerator()) { while (enumerator.MoveNext()) { var current = enumerator.Current; if (AzureEmulator.GetHabboById(current.Id) == null) continue; Response.AppendInteger(current.Id); Response.AppendString(AzureEmulator.GetHabboById(current.Id).UserName); } goto IL_220; } } Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Members.Count + 1); foreach (var current2 in CurrentLoadingRoom.RoomData.Group.Members.Values) { Response.AppendInteger(current2.Id); Response.AppendString(AzureEmulator.GetHabboById(current2.Id).UserName); } IL_220: Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } else { Response.AppendInteger(1); Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } Response.AppendInteger(array.Length); var array3 = array; foreach (var roomItem in array3) { roomItem.Serialize(Response); } queuedServerMessage.AppendResponse(GetResponse()); Response.Init(LibraryParser.OutgoingRequest("RoomWallItemsMessageComposer")); if (CurrentLoadingRoom.RoomData.Group != null) { if (CurrentLoadingRoom.RoomData.Group.AdminOnlyDeco == 1u) { Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Admins.Count + 1); using (var enumerator3 = CurrentLoadingRoom.RoomData.Group.Admins.Values.GetEnumerator()) { while (enumerator3.MoveNext()) { var current3 = enumerator3.Current; Response.AppendInteger(current3.Id); Response.AppendString(AzureEmulator.GetHabboById(current3.Id).UserName); } goto IL_423; } } Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Members.Count + 1); foreach (var current4 in CurrentLoadingRoom.RoomData.Group.Members.Values) { Response.AppendInteger(current4.Id); Response.AppendString(AzureEmulator.GetHabboById(current4.Id).UserName); } IL_423: Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } else { Response.AppendInteger(1); Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } Response.AppendInteger(array2.Length); var array4 = array2; foreach (var roomItem2 in array4) { roomItem2.Serialize(Response); } queuedServerMessage.AppendResponse(GetResponse()); Array.Clear(array, 0, array.Length); Array.Clear(array2, 0, array2.Length); array = null; array2 = null; CurrentLoadingRoom.GetRoomUserManager().AddUserToRoom(Session, Session.GetHabbo().SpectatorMode, false); Session.GetHabbo().SpectatorMode = false; var competition = AzureEmulator.GetGame().GetRoomManager().GetCompetitionManager().Competition; if (competition != null) { if (CurrentLoadingRoom.CheckRights(Session, true, false)) { if (!competition.Entries.ContainsKey(CurrentLoadingRoom.RoomData.Id)) { competition.AppendEntrySubmitMessage(Response, CurrentLoadingRoom.RoomData.State != 0 ? 4 : 1); } else { if(competition.Entries[CurrentLoadingRoom.RoomData.Id].CompetitionStatus == 3) { } //Competition.AppendEntrySubmitMessage(Response, 0); else if(competition.HasAllRequiredFurnis(CurrentLoadingRoom)) competition.AppendEntrySubmitMessage(Response, 2); else competition.AppendEntrySubmitMessage(Response, 3, CurrentLoadingRoom); } } else if (!CurrentLoadingRoom.CheckRights(Session, true, false) && competition.Entries.ContainsKey(CurrentLoadingRoom.RoomData.Id)) { if(Session.GetHabbo().DailyCompetitionVotes > 0) competition.AppendVoteMessage(Response, Session.GetHabbo()); } queuedServerMessage.AppendResponse(GetResponse()); } queuedServerMessage.SendResponse(); if (AzureEmulator.GetUnixTimeStamp() < Session.GetHabbo().FloodTime && Session.GetHabbo().FloodTime != 0) { var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("FloodFilterMessageComposer")); serverMessage.AppendInteger((Session.GetHabbo().FloodTime - AzureEmulator.GetUnixTimeStamp())); Session.SendMessage(serverMessage); } ClearRoomLoading(); Poll poll; if (!AzureEmulator.GetGame().GetPollManager().TryGetPoll(CurrentLoadingRoom.RoomId, out poll) || Session.GetHabbo().GotPollData(poll.Id)) return; Response.Init(LibraryParser.OutgoingRequest("SuggestPollMessageComposer")); poll.Serialize(Response); SendResponse(); }
internal bool tryLogin(string AuthTicket) { try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return(false); } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return(false); } if (Program.LicHandeler != null && ButterflyEnvironment.GetGame().GetClientManager().ClientCount > Program.LicHandeler.AmountOfSlots) { Program.LicHandeler.ReportFullServer(); SendBanMessage(LanguageLocale.GetValue("server.full")); return(false); } ButterflyEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); if (userData.user.Username == null) { SendBanMessage("You have no username."); return(false); } string banReason = ButterflyEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return(false); } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); userData.user.SerializeQuests(ref response); List <string> Rights = ButterflyEnvironment.GetGame().GetRoleManager().GetRightsForHabbo(userData.user); ServerMessage appendingResponse = new ServerMessage(2); appendingResponse.Init(2); appendingResponse.AppendInt32(Rights.Count); foreach (string Right in Rights) { appendingResponse.AppendStringWithBreak(Right); } response.appendResponse(appendingResponse); if (userData.user.HasFuse("fuse_mod")) { response.appendResponse(ButterflyEnvironment.GetGame().GetModerationTool().SerializeTool()); ButterflyEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(ref response, userData.userID); } response.appendResponse(userData.user.GetAvatarEffectsInventoryComponent().Serialize()); appendingResponse.Init(290); appendingResponse.AppendBoolean(true); appendingResponse.AppendBoolean(false); response.appendResponse(appendingResponse); appendingResponse.Init(3); response.appendResponse(appendingResponse); appendingResponse.Init(517); appendingResponse.AppendBoolean(true); response.appendResponse(appendingResponse); //if (PixelManager.NeedsUpdate(this)) // PixelManager.GivePixels(this); if (ButterflyEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0) { PixelManager.GivePixels(this, ButterflyEnvironment.GetGame().GetClientManager().pixelsOnLogin); } if (ButterflyEnvironment.GetGame().GetClientManager().creditsOnLogin > 0) { userData.user.Credits += ButterflyEnvironment.GetGame().GetClientManager().creditsOnLogin; userData.user.UpdateCreditsBalance(); } if (userData.user.HomeRoom > 0) { appendingResponse.Init(455); appendingResponse.AppendUInt(userData.user.HomeRoom); response.appendResponse(appendingResponse); } appendingResponse.Init(458); appendingResponse.AppendInt32(30); appendingResponse.AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { appendingResponse.AppendUInt(Id); } response.appendResponse(appendingResponse); if (userData.user.HasFuse("fuse_use_club_badge") && !userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true); } else if (!userData.user.HasFuse("fuse_use_club_badge") && userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1"); } if (!userData.user.GetBadgeComponent().HasBadge("Z63")) { userData.user.GetBadgeComponent().GiveBadge("Z63", true); } appendingResponse.Init(2); appendingResponse.AppendInt32(0); if (userData.user.HasFuse("fuse_use_vip_outfits")) // VIP { appendingResponse.AppendInt32(2); } else if (userData.user.HasFuse("fuse_furni_chooser")) // HC { appendingResponse.AppendInt32(1); } else { appendingResponse.AppendInt32(0); } appendingResponse.AppendInt32(0); response.appendResponse(appendingResponse); appendingResponse.Init(2); appendingResponse.AppendInt32(Rights.Count); foreach (string Right in Rights) { appendingResponse.AppendStringWithBreak(Right); } response.appendResponse(appendingResponse); if (LanguageLocale.welcomeAlertEnabled) { ServerMessage alert = new ServerMessage(810); alert.AppendUInt(1); alert.AppendStringWithBreak(LanguageLocale.welcomeAlert); response.appendResponse(alert); } response.sendResponse(); Logging.WriteLine("[" + Habbo.Username + "] logged in"); return(true); } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { //Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return(false); }
internal bool tryLogin(string AuthTicket) { try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return(false); } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return(false); } PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); if (userData.user.Username == null) { SendBanMessage("You have no username."); return(false); } string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return(false); } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); userData.user.SerializeQuests(ref response); GetMessageHandler().GetResponse().Init(2); if (userData.user.HasRight("acc_anyroomowner")) { GetMessageHandler().GetResponse().AppendInt32(7); } else if (userData.user.HasRight("acc_anyroomrights")) { GetMessageHandler().GetResponse().AppendInt32(5); } else if (userData.user.HasRight("acc_supporttool")) { GetMessageHandler().GetResponse().AppendInt32(4); } else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) { GetMessageHandler().GetResponse().AppendInt32(2); } else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) { GetMessageHandler().GetResponse().AppendInt32(1); } else { GetMessageHandler().GetResponse().AppendInt32(0); } GetMessageHandler().SendResponse(); if (userData.user.HasRight("acc_supporttool")) { SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool()); PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this); } SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize()); GetMessageHandler().GetResponse().Init(290); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().GetResponse().AppendBoolean(false); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(3); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(517); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().SendResponse(); //if (PixelManager.NeedsUpdate(this)) // PixelManager.GivePixels(this); if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0) { PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin); } if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0) { userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin; userData.user.UpdateCreditsBalance(); } if (userData.user.HomeRoom > 0) { GetMessageHandler().GetResponse().Init(455); GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom); GetMessageHandler().SendResponse(); } GetMessageHandler().GetResponse().Init(458); GetMessageHandler().GetResponse().AppendInt32(30); GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { GetMessageHandler().GetResponse().AppendUInt(Id); } GetMessageHandler().SendResponse(); if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true); } else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1"); } if (!userData.user.GetBadgeComponent().HasBadge("Z63")) { userData.user.GetBadgeComponent().GiveBadge("Z63", true); } if (userData.user.Rank > 5 && !userData.user.GetBadgeComponent().HasBadge("ADM")) { userData.user.GetBadgeComponent().GiveBadge("ADM", true); } ServerMessage alert = new ServerMessage(810); alert.AppendUInt(1); alert.AppendStringWithBreak(LanguageLocale.welcomeAlert); SendMessage(alert); Logging.WriteLine("[" + Habbo.Username + "] logged in"); return(true); } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return(false); }
internal bool tryLogin(string AuthTicket) { int loginProgress = 0; try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return(false); } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return(false); } loginProgress++; FirewindEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); loginProgress++; if (userData.user.Username == null) { SendBanMessage("You have no username."); return(false); } string banReason = FirewindEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); loginProgress++; if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return(false); } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); ServerMessage UniqueId = new ServerMessage(Outgoing.UniqueID); UniqueId.AppendString(this.MachineId); response.appendResponse(UniqueId); ServerMessage authok = new ServerMessage(Outgoing.AuthenticationOK); response.appendResponse(authok); ServerMessage HomeRoom = new ServerMessage(Outgoing.HomeRoom); HomeRoom.AppendUInt(this.GetHabbo().HomeRoom); // first home HomeRoom.AppendUInt(this.GetHabbo().HomeRoom); // first home SendMessage(HomeRoom); loginProgress++; ServerMessage FavouriteRooms = new ServerMessage(Outgoing.FavouriteRooms); FavouriteRooms.AppendInt32(30); // max rooms FavouriteRooms.AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { FavouriteRooms.AppendUInt(Id); } response.appendResponse(FavouriteRooms); loginProgress++; ServerMessage fuserights = new ServerMessage(Outgoing.Fuserights); if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) // VIP { fuserights.AppendInt32(2); } else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) // HC { fuserights.AppendInt32(1); } else { fuserights.AppendInt32(0); } fuserights.AppendUInt(this.GetHabbo().Rank); response.appendResponse(fuserights); loginProgress++; ServerMessage bools1 = new ServerMessage(Outgoing.AvailabilityStatus); bools1.AppendBoolean(true); bools1.AppendBoolean(false); response.appendResponse(bools1); ServerMessage bools2 = new ServerMessage(Outgoing.InfoFeedEnable); bools2.AppendBoolean(false); response.appendResponse(bools2); loginProgress++; ServerMessage setRanking = new ServerMessage(Outgoing.SerializeCompetitionWinners); setRanking.AppendString("hlatCompetitions"); // competition type setRanking.AppendInt32(Ranking.getCompetitionForInfo("hlatCompetitions").Count); loginProgress++; int i = 0; foreach (Ranking r in Ranking.getCompetitionForInfo("hlatCompetitions")) { i++; setRanking.AppendUInt(r.UserId); Habbo data = FirewindEnvironment.getHabboForId(r.UserId); setRanking.AppendString((data != null) ? data.Username : "******"); setRanking.AppendString((data != null) ? data.Look : "sh-907-96.hd-3096-3.he-3082-91.lg-3018-81.ch-660-95.hr-9534-34"); setRanking.AppendInt32(i); // position setRanking.AppendInt32(r.Score); } response.appendResponse(setRanking); loginProgress++; if (userData.user.HasFuse("fuse_mod")) { this.SendMessage(FirewindEnvironment.GetGame().GetModerationTool().SerializeTool()); FirewindEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(ref response, userData.userID); } if (LanguageLocale.welcomeAlertEnabled) { this.SendMOTD(LanguageLocale.welcomeAlert); } loginProgress++; using (IQueryAdapter db = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { db.setQuery("UPDATE users SET online = '1' WHERE id = @id"); db.addParameter("id", this.GetHabbo().Id); db.runQuery(); } loginProgress++; // Send the big chunk response.sendResponse(); // fire the event! FirewindEnvironment.GetGame().GetClientManager().ClientLoggedIn(this); return(true); } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { Logging.LogCriticalException(String.Format("Invalid Dario bug duing user login (progress = {0}): ", loginProgress) + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return(false); }
internal void GetRoomData2() { try { if (Session?.GetConnection() != null) { QueuedServerMessage queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); if (Session.GetHabbo().LoadingRoom <= 0u || CurrentLoadingRoom == null) return; RoomData roomData = CurrentLoadingRoom.RoomData; if (roomData == null) return; if (roomData.Model == null || CurrentLoadingRoom.GetGameMap() == null) { Session.SendMessage(new ServerMessage(LibraryParser.OutgoingRequest("OutOfRoomMessageComposer"))); ClearRoomLoading(); } else { queuedServerMessage.AppendResponse(CurrentLoadingRoom.GetGameMap().GetNewHeightmap()); queuedServerMessage.AppendResponse(CurrentLoadingRoom.GetGameMap().Model.GetHeightmap()); queuedServerMessage.SendResponse(); GetRoomData3(); } } } catch (Exception ex) { YupiLogManager.LogException(ex, "Failed Broadcasting Room Data to Client.", "Yupi.Rooms"); } }
internal void GetRoomData3() { if (Session.GetHabbo().LoadingRoom <= 0u || !Session.GetHabbo().LoadingChecksPassed || CurrentLoadingRoom == null || Session == null) return; if (CurrentLoadingRoom.RoomData.UsersNow + 1 > CurrentLoadingRoom.RoomData.UsersMax && !Session.GetHabbo().HasFuse("fuse_enter_full_rooms")) { ServerMessage roomFull = new ServerMessage(LibraryParser.OutgoingRequest("RoomEnterErrorMessageComposer")); roomFull.AppendInteger(1); return; } QueuedServerMessage queuedServerMessage = new QueuedServerMessage(Session.GetConnection()); RoomItem[] array = CurrentLoadingRoom.GetRoomItemHandler().FloorItems.Values.ToArray(); RoomItem[] array2 = CurrentLoadingRoom.GetRoomItemHandler().WallItems.Values.ToArray(); Response.Init(LibraryParser.OutgoingRequest("RoomFloorItemsMessageComposer")); if (CurrentLoadingRoom.RoomData.Group != null) { if (CurrentLoadingRoom.RoomData.Group.AdminOnlyDeco == 1u) { Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Admins.Count + 1); using (Dictionary<uint, GroupMember>.ValueCollection.Enumerator enumerator = CurrentLoadingRoom.RoomData.Group.Admins.Values.GetEnumerator()) { while (enumerator.MoveNext()) { GroupMember current = enumerator.Current; if (current != null && Yupi.GetHabboById(current.Id) == null) continue; if (current != null) { Response.AppendInteger(current.Id); Response.AppendString(Yupi.GetHabboById(current.Id).UserName); } } goto IL_220; } } Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Members.Count + 1); foreach (GroupMember current2 in CurrentLoadingRoom.RoomData.Group.Members.Values) { Response.AppendInteger(current2.Id); Response.AppendString(Yupi.GetHabboById(current2.Id).UserName); } IL_220: Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } else { Response.AppendInteger(1); Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } Response.AppendInteger(array.Length); foreach (RoomItem roomItem in array) roomItem.Serialize(Response); queuedServerMessage.AppendResponse(GetResponse()); Response.Init(LibraryParser.OutgoingRequest("RoomWallItemsMessageComposer")); if (CurrentLoadingRoom.RoomData.Group != null) { if (CurrentLoadingRoom.RoomData.Group.AdminOnlyDeco == 1u) { Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Admins.Count + 1); using (Dictionary<uint, GroupMember>.ValueCollection.Enumerator enumerator3 = CurrentLoadingRoom.RoomData.Group.Admins.Values.GetEnumerator()) { while (enumerator3.MoveNext()) { GroupMember current3 = enumerator3.Current; if (current3 != null) { Response.AppendInteger(current3.Id); Response.AppendString(Yupi.GetHabboById(current3.Id).UserName); } } goto IL_423; } } Response.AppendInteger(CurrentLoadingRoom.RoomData.Group.Members.Count + 1); foreach (GroupMember current4 in CurrentLoadingRoom.RoomData.Group.Members.Values) { Response.AppendInteger(current4.Id); Response.AppendString(Yupi.GetHabboById(current4.Id).UserName); } IL_423: Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } else { Response.AppendInteger(1); Response.AppendInteger(CurrentLoadingRoom.RoomData.OwnerId); Response.AppendString(CurrentLoadingRoom.RoomData.Owner); } Response.AppendInteger(array2.Length); RoomItem[] array4 = array2; foreach (RoomItem roomItem2 in array4) roomItem2.Serialize(Response); queuedServerMessage.AppendResponse(GetResponse()); Array.Clear(array, 0, array.Length); Array.Clear(array2, 0, array2.Length); CurrentLoadingRoom.GetRoomUserManager().AddUserToRoom(Session, Session.GetHabbo().SpectatorMode); Session.GetHabbo().SpectatorMode = false; RoomCompetition competition = Yupi.GetGame().GetRoomManager().GetCompetitionManager().Competition; if (competition != null) { if (CurrentLoadingRoom.CheckRights(Session, true)) { if (!competition.Entries.ContainsKey(CurrentLoadingRoom.RoomData.Id)) competition.AppendEntrySubmitMessage(Response, CurrentLoadingRoom.RoomData.State != 0 ? 4 : 1); else { switch (competition.Entries[CurrentLoadingRoom.RoomData.Id].CompetitionStatus) { case 3: break; default: if (competition.HasAllRequiredFurnis(CurrentLoadingRoom)) competition.AppendEntrySubmitMessage(Response, 2); else competition.AppendEntrySubmitMessage(Response, 3, CurrentLoadingRoom); break; } } } else if (!CurrentLoadingRoom.CheckRights(Session, true) && competition.Entries.ContainsKey(CurrentLoadingRoom.RoomData.Id)) { if (Session.GetHabbo().DailyCompetitionVotes > 0) competition.AppendVoteMessage(Response, Session.GetHabbo()); } queuedServerMessage.AppendResponse(GetResponse()); } queuedServerMessage.SendResponse(); if (Yupi.GetUnixTimeStamp() < Session.GetHabbo().FloodTime && Session.GetHabbo().FloodTime != 0) { ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("FloodFilterMessageComposer")); serverMessage.AppendInteger(Session.GetHabbo().FloodTime - Yupi.GetUnixTimeStamp()); Session.SendMessage(serverMessage); } ClearRoomLoading(); Poll poll; if (!Yupi.GetGame().GetPollManager().TryGetPoll(CurrentLoadingRoom.RoomId, out poll) || Session.GetHabbo().GotPollData(poll.Id)) return; Response.Init(LibraryParser.OutgoingRequest("SuggestPollMessageComposer")); poll.Serialize(Response); SendResponse(); }
internal bool tryLogin(string AuthTicket) { try { string ip = this.GetConnection().getIp(); byte b = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out b); bool result; if (b == 1) { result = false; return(result); } if (b == 2) { result = false; return(result); } CyberEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); string banReason = CyberEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip, this.MachineId); if (!string.IsNullOrEmpty(banReason) || userData.user.Username == null) { this.SendNotifWithScroll(banReason); using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { queryreactor.setQuery("SELECT ip_last FROM users WHERE id=" + this.GetHabbo().Id + " LIMIT 1"); string @string = queryreactor.getString(); queryreactor.setQuery("SELECT COUNT(0) FROM bans_access WHERE user_id=" + this.Habbo.Id + " LIMIT 1"); int integer = queryreactor.getInteger(); if (integer > 0) { queryreactor.runFastQuery(string.Concat(new object[] { "UPDATE bans_access SET attempts = attempts + 1, ip='", @string, "' WHERE user_id=", this.GetHabbo().Id, " LIMIT 1" })); } else { queryreactor.runFastQuery(string.Concat(new object[] { "INSERT INTO bans_access (user_id, ip) VALUES (", this.GetHabbo().Id, ", '", @string, "')" })); } } result = false; return(result); } userData.user.Init(this, userData); QueuedServerMessage queuedServerMessage = new QueuedServerMessage(this.Connection); ServerMessage serverMessage = new ServerMessage(Outgoing.UniqueMachineIDMessageComposer); serverMessage.AppendString(this.MachineId); queuedServerMessage.appendResponse(serverMessage); queuedServerMessage.appendResponse(new ServerMessage(Outgoing.AuthenticationOKMessageComposer)); if (this.Habbo != null) { ServerMessage serverMessage2 = new ServerMessage(Outgoing.HomeRoomMessageComposer); serverMessage2.AppendUInt(this.Habbo.HomeRoom); serverMessage2.AppendUInt(this.Habbo.HomeRoom); queuedServerMessage.appendResponse(serverMessage2); } ServerMessage serverMessage3 = new ServerMessage(Outgoing.MinimailCountMessageComposer); serverMessage3.AppendInt32(this.Habbo.MinimailUnreadMessages); queuedServerMessage.appendResponse(serverMessage3); ServerMessage serverMessage4 = new ServerMessage(Outgoing.FavouriteRoomsMessageComposer); serverMessage4.AppendInt32(30); serverMessage4.AppendInt32(userData.user.FavoriteRooms.Count); object[] array = userData.user.FavoriteRooms.ToArray(); for (int i = 0; i < array.Length; i++) { uint i2 = (uint)array[i]; serverMessage4.AppendUInt(i2); } queuedServerMessage.appendResponse(serverMessage4); ServerMessage rightsMessage = new ServerMessage(Outgoing.UserClubRightsMessageComposer); rightsMessage.AppendInt32(userData.user.GetSubscriptionManager().HasSubscription ? 2 : 0); rightsMessage.AppendUInt(userData.user.Rank); rightsMessage.AppendInt32(0); queuedServerMessage.appendResponse(rightsMessage); ServerMessage serverMessage5 = new ServerMessage(Outgoing.EnableNotificationsMessageComposer); serverMessage5.AppendBoolean(true); serverMessage5.AppendBoolean(false); queuedServerMessage.appendResponse(serverMessage5); ServerMessage serverMessage6 = new ServerMessage(Outgoing.EnableTradingMessageComposer); serverMessage6.AppendBoolean(true); queuedServerMessage.appendResponse(serverMessage6); userData.user.UpdateCreditsBalance(); ServerMessage serverMessage7 = new ServerMessage(Outgoing.ActivityPointsMessageComposer); serverMessage7.AppendInt32(2); serverMessage7.AppendInt32(0); serverMessage7.AppendInt32(userData.user.ActivityPoints); serverMessage7.AppendInt32(5); serverMessage7.AppendInt32(userData.user.BelCredits); queuedServerMessage.appendResponse(serverMessage7); if (userData.user.HasFuse("fuse_mod")) { queuedServerMessage.appendResponse(CyberEnvironment.GetGame().GetModerationTool().SerializeTool()); } if (!string.IsNullOrWhiteSpace(CyberEnvironment.GetDBConfig().DBData["welcome_message"])) { this.SendBroadcastMessage(CyberEnvironment.GetDBConfig().DBData["welcome_message"]); } ServerMessage AchievementData = new ServerMessage(Outgoing.SendAchievementsRequirementsMessageComposer); AchievementData.AppendInt32(CyberEnvironment.GetGame().GetAchievementManager().Achievements.Count); foreach (Achievement Ach in CyberEnvironment.GetGame().GetAchievementManager().Achievements.Values) { AchievementData.AppendString(Ach.GroupName.Replace("ACH_", "")); AchievementData.AppendInt32(Ach.Levels.Count); for (int i = 1; i < Ach.Levels.Count + 1; i++) { AchievementData.AppendInt32(i); AchievementData.AppendInt32(Ach.Levels[i].Requirement); } } AchievementData.AppendInt32(0); queuedServerMessage.appendResponse(AchievementData); if (!GetHabbo().NUXPassed&& ExtraSettings.NEW_USER_GIFTS_ENABLED) { queuedServerMessage.appendResponse(new ServerMessage(Outgoing.NuxSuggestFreeGiftsMessageComposer)); } queuedServerMessage.appendResponse(this.GetHabbo().GetAvatarEffectsInventoryComponent().GetPacket()); queuedServerMessage.sendResponse(); result = true; return(result); } catch (Exception ex) { Logging.LogCriticalException("Bug during user login: " + ex.Message); } return(false); }