Пример #1
0
        public void Init(GameClient client, UserData.UserData data)
        {
            Achievements = data.achievements;

            FavoriteRooms = new ArrayList();
            foreach (int id in data.favouritedRooms)
            {
                FavoriteRooms.Add(id);
            }

            _client            = client;
            BadgeComponent     = new BadgeComponent(this, data);
            InventoryComponent = new InventoryComponent(Id, client);

            quests = data.quests;

            Messenger = new HabboMessenger(Id);
            Messenger.Init(data.friends, data.requests);
            _friendCount  = Convert.ToInt32(data.friends.Count);
            _disconnected = false;
            Relationships = data.Relations;

            InitSearches();
            InitFX();
            InitClothing();
            InitIgnores();
        }
Пример #2
0
 public void InitInformation(UserData.UserData data)
 {
     BadgeComponent = new BadgeComponent(this, data);
     Relationships  = data.Relations;
 }
Пример #3
0
        public bool TryAuthenticate(string authTicket, GameClient client)
        {
            try
            {
                UserData.UserData userData = UserDataFactory.GetUserData(authTicket, out byte errorCode);
                if (errorCode == 1 || errorCode == 2)
                {
                    client.Disconnect();
                    return(false);
                }

                #region Ban Checking
                //Let's have a quick search for a ban before we successfully authenticate..
                if (!string.IsNullOrEmpty(client.MachineId))
                {
                    if (PlusEnvironment.GetGame().GetModerationManager().IsBanned(client.MachineId, out _))
                    {
                        if (PlusEnvironment.GetGame().GetModerationManager().MachineBanCheck(client.MachineId))
                        {
                            client.Disconnect();
                            return(false);
                        }
                    }
                }

                if (userData.user != null)
                {
                    if (PlusEnvironment.GetGame().GetModerationManager().IsBanned(userData.user.Username, out _))
                    {
                        if (PlusEnvironment.GetGame().GetModerationManager().UsernameBanCheck(userData.user.Username))
                        {
                            client.Disconnect();
                            return(false);
                        }
                    }
                }
                #endregion

                if (userData.user == null) //Possible NPE
                {
                    return(false);
                }

                PlusEnvironment.GetGame().GetClientManager().RegisterClient(client, userData.UserId, userData.user.Username);
                client.Habbo = userData.user;
                if (client.Habbo != null)
                {
                    userData.user.Init(client, userData);

                    client.SendPacket(new AuthenticationOKComposer());
                    client.SendPacket(new AvatarEffectsComposer(client.Habbo.Effects().GetAllEffects));
                    client.SendPacket(new NavigatorSettingsComposer(client.Habbo.HomeRoom));
                    client.SendPacket(new FavouritesComposer(userData.user.FavoriteRooms));
                    client.SendPacket(new FigureSetIdsComposer(client.Habbo.GetClothing().GetClothingParts));
                    client.SendPacket(new UserRightsComposer(client.Habbo.Rank));
                    client.SendPacket(new AvailabilityStatusComposer());
                    client.SendPacket(new AchievementScoreComposer(client.Habbo.GetStats().AchievementPoints));
                    client.SendPacket(new BuildersClubMembershipComposer());
                    client.SendPacket(new CfhTopicsInitComposer(PlusEnvironment.GetGame().GetModerationManager().UserActionPresets));

                    client.SendPacket(new BadgeDefinitionsComposer(_achievementManager.Achievements));
                    client.SendPacket(new SoundSettingsComposer(client.Habbo.ClientVolume, client.Habbo.ChatPreference, client.Habbo.AllowMessengerInvites, client.Habbo.FocusPreference, FriendBarStateUtility.GetInt(client.Habbo.FriendbarState)));
                    //SendMessage(new TalentTrackLevelComposer());

                    if (client.Habbo.GetMessenger() != null)
                    {
                        client.Habbo.GetMessenger().OnStatusChanged(true);
                    }

                    if (!string.IsNullOrEmpty(client.MachineId))
                    {
                        if (client.Habbo.MachineId != client.MachineId)
                        {
                            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                            {
                                dbClient.SetQuery("UPDATE `users` SET `machine_id` = @MachineId WHERE `id` = @id LIMIT 1");
                                dbClient.AddParameter("MachineId", client.MachineId);
                                dbClient.AddParameter("id", client.Habbo.Id);
                                dbClient.RunQuery();
                            }
                        }

                        client.Habbo.MachineId = client.MachineId;
                    }

                    if (PlusEnvironment.GetGame().GetPermissionManager().TryGetGroup(client.Habbo.Rank, out PermissionGroup group))
                    {
                        if (!string.IsNullOrEmpty(group.Badge))
                        {
                            if (!client.Habbo.GetBadgeComponent().HasBadge(group.Badge))
                            {
                                client.Habbo.GetBadgeComponent().GiveBadge(group.Badge, true, client);
                            }
                        }
                    }

                    if (PlusEnvironment.GetGame().GetSubscriptionManager().TryGetSubscriptionData(client.Habbo.VIPRank, out SubscriptionData subData))
                    {
                        if (!string.IsNullOrEmpty(subData.Badge))
                        {
                            if (!client.Habbo.GetBadgeComponent().HasBadge(subData.Badge))
                            {
                                client.Habbo.GetBadgeComponent().GiveBadge(subData.Badge, true, client);
                            }
                        }
                    }

                    if (!PlusEnvironment.GetGame().GetCacheManager().ContainsUser(client.Habbo.Id))
                    {
                        PlusEnvironment.GetGame().GetCacheManager().GenerateUser(client.Habbo.Id);
                    }

                    client.Habbo.Look = PlusEnvironment.GetFigureManager().ProcessFigure(client.Habbo.Look, client.Habbo.Gender, client.Habbo.GetClothing().GetClothingParts, true);
                    client.Habbo.InitProcess();

                    if (userData.user.GetPermissions().HasRight("mod_tickets"))
                    {
                        client.SendPacket(new ModeratorInitComposer(
                                              PlusEnvironment.GetGame().GetModerationManager().UserMessagePresets,
                                              PlusEnvironment.GetGame().GetModerationManager().RoomMessagePresets,
                                              PlusEnvironment.GetGame().GetModerationManager().GetTickets));
                    }

                    if (PlusEnvironment.GetSettingsManager().TryGetValue("user.login.message.enabled") == "1")
                    {
                        client.SendPacket(new MotdNotificationComposer(PlusEnvironment.GetLanguageManager().TryGetValue("user.login.message")));
                    }

                    PlusEnvironment.GetGame().GetRewardManager().CheckRewards(client);
                    return(true);
                }
            }
            catch (Exception e)
            {
                ExceptionLogger.LogException(e);
            }
            return(false);
        }