Exemplo n.º 1
0
        public Habbo(int Id, string Username, int Rank, string Motto, string Look, string Gender, int Credits, int ActivityPoints, int HomeRoom,
                     bool HasFriendRequestsDisabled, int LastOnline, bool AppearOffline, bool HideInRoom, double CreateDate, int Diamonds,
                     string machineID, string clientVolume, bool ChatPreference, bool FocusPreference, bool PetsMuted, bool BotsMuted, bool AdvertisingReportBlocked, double LastNameChange,
                     int GOTWPoints, int UserPoints, bool IgnoreInvites, double TimeMuted, double TradingLock, bool AllowGifts, int FriendBarState, bool DisableForcedEffects, bool AllowMimic, int VIPRank,
                     byte guidelevel, byte publicistalevel, byte builder, byte croupier, bool Nux, byte TargetedBuy, string NameColor, string Tag, string TagColor, byte NameChange, string PinClient, int CatRank)
        {
            this.Id          = Id;
            this.Username    = Username;
            this.Rank        = Rank;
            this.CatRank     = CatRank;
            this.Motto       = Motto;
            this.Look        = NeonEnvironment.GetGame().GetAntiMutant().RunLook(Look);
            this.Gender      = Gender.ToLower();
            FootballLook     = NeonEnvironment.FilterFigure(Look.ToLower());
            FootballGender   = Gender.ToLower();
            this.Credits     = Credits;
            Duckets          = ActivityPoints;
            this.Diamonds    = Diamonds;
            this.GOTWPoints  = GOTWPoints;
            this.PinClient   = PinClient;
            _NUX             = Nux;
            this.UserPoints  = UserPoints;
            this.HomeRoom    = HomeRoom;
            this.LastOnline  = LastOnline;
            _guidelevel      = guidelevel;
            _publicistalevel = publicistalevel;
            _builder         = builder;
            _croupier        = croupier;
            _TargetedBuy     = TargetedBuy;
            AccountCreated   = CreateDate;
            ClientVolume     = new List <int>();
            _nameColor       = NameColor;
            _tag             = Tag;
            _tagcolor        = TagColor;
            _changename      = NameChange;
            foreach (string Str in clientVolume.Split(','))
            {
                if (int.TryParse(Str, out _))
                {
                    ClientVolume.Add(int.Parse(Str));
                }
                else
                {
                    ClientVolume.Add(100);
                }
            }

            this.LastNameChange  = LastNameChange;
            MachineId            = machineID;
            this.ChatPreference  = ChatPreference;
            this.FocusPreference = FocusPreference;
            IsExpert             = IsExpert == true;

            this.AppearOffline    = AppearOffline;
            AllowTradingRequests  = true;                      //TODO
            AllowUserFollowing    = true;                      //TODO
            AllowFriendRequests   = HasFriendRequestsDisabled; //TODO
            AllowMessengerInvites = IgnoreInvites;
            AllowPetSpeech        = PetsMuted;
            AllowBotSpeech        = BotsMuted;
            AllowPublicRoomStatus = HideInRoom;
            AllowConsoleMessages  = true;
            this.AllowGifts       = AllowGifts;
            this.AllowMimic       = AllowMimic;
            _lastPhotoPreview     = lastPhotoPreview;
            ReceiveWhispers       = true;
            IgnorePublicWhispers  = false;
            PlayingFastFood       = false;
            FriendbarState        = FriendBarStateUtility.GetEnum(FriendBarState);
            ChristmasDay          = ChristmasDay;
            WantsToRideHorse      = 0;
            TimeAFK = 0;
            this.DisableForcedEffects = DisableForcedEffects;
            this.VIPRank = VIPRank;
            _bet         = 0;

            onDuty              = false;
            requestHelp         = false;
            requestTour         = false;
            userHelping         = 0;
            reportsOfHarassment = false;
            onService           = false;

            _disconnected = false;
            _habboSaved   = false;
            ChangingName  = false;

            FloodTime      = 0;
            FriendCount    = 0;
            this.TimeMuted = TimeMuted;
            _timeCached    = DateTime.Now;

            _sellingroom = false;

            //this._CurrentTalentLevel = GetCurrentTalentLevel();

            TradingLockExpiry = TradingLock;
            if (TradingLockExpiry > 0 && NeonEnvironment.GetUnixTimestamp() > TradingLockExpiry)
            {
                TradingLockExpiry = 0;
                using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '0' WHERE `user_id` = '" + Id + "' LIMIT 1");
                }
            }

            BannedPhraseCount  = 0;
            SessionStart       = NeonEnvironment.GetUnixTimestamp();
            MessengerSpamCount = 0;
            MessengerSpamTime  = 0;
            CreditsUpdateTick  = NeonStaticGameSettings.UserCreditsUpdateTimer;

            TentId            = 0;
            HopperId          = 0;
            IsHopping         = false;
            TeleporterId      = 0;
            IsTeleporting     = false;
            TeleportingRoomID = 0;
            RoomAuthOk        = false;
            CurrentRoomId     = 0;

            HasSpoken                  = false;
            LastAdvertiseReport        = 0;
            AdvertisingReported        = false;
            AdvertisingReportedBlocked = AdvertisingReportBlocked;

            _multiWhisper          = false;
            WiredInteraction       = false;
            QuestLastCompleted     = 0;
            InventoryAlert         = false;
            IgnoreBobbaFilter      = false;
            WiredTeleporting       = false;
            LastClothingUpdateTime = DateTime.Now;
            CustomBubbleId         = 0;
            OnHelperDuty           = false;
            FastfoodScore          = 0;
            PetId   = 0;
            TempInt = 0;

            LastGiftPurchaseTime       = DateTime.Now;
            LastMottoUpdateTime        = DateTime.Now;
            LastForumMessageUpdateTime = DateTime.Now;
            ClothingUpdateWarnings     = 0;

            GiftPurchasingWarnings = 0;
            MottoUpdateWarnings    = 0;

            SessionGiftBlocked     = false;
            SessionMottoBlocked    = false;
            _isFirstThrow          = true;
            SessionClothingBlocked = false;

            FavoriteRooms = new ArrayList();
            MutedUsers    = new List <int>();
            MultiWhispers = new List <RoomUser>();
            Achievements  = new ConcurrentDictionary <string, UserAchievement>();
            Relationships = new Dictionary <int, Relationship>();
            RatedRooms    = new List <int>();
            UsersRooms    = new List <RoomData>();
            TradeItems    = new List <Item>();

            //TODO: Nope.
            InitPermissions();

            #region Stats
            using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `id`,`roomvisits`,`onlinetime`,`respect`,`respectgiven`,`giftsgiven`,`giftsreceived`,`dailyrespectpoints`,`dailypetrespectpoints`,`achievementscore`,`quest_id`,`quest_progress`,`groupid`,`tickets_answered`,`respectstimestamp`,`forum_posts`, `PurchaseUsersConcurrent`, `vip_gifts` FROM `user_stats` WHERE `id` = @user_id LIMIT 1");
                dbClient.AddParameter("user_id", Id);

                DataRow StatRow = dbClient.getRow();

                if (StatRow == null)//No row, add it yo
                {
                    dbClient.RunQuery("INSERT INTO `user_stats` (`id`) VALUES ('" + Id + "')");
                    dbClient.SetQuery("SELECT `id`,`roomvisits`,`onlinetime`,`respect`,`respectgiven`,`giftsgiven`,`giftsreceived`,`dailyrespectpoints`,`dailypetrespectpoints`,`achievementscore`,`quest_id`,`quest_progress`,`groupid`,`tickets_answered`,`respectstimestamp`,`forum_posts`, `PurchaseUsersConcurrent`, `vip_gifts` FROM `user_stats` WHERE `id` = @user_id LIMIT 1");
                    dbClient.AddParameter("user_id", Id);
                    StatRow = dbClient.getRow();
                }

                try
                {
                    _habboStats = new HabboStats(Convert.ToInt32(StatRow["roomvisits"]), Convert.ToDouble(StatRow["onlineTime"]), Convert.ToInt32(StatRow["respect"]), Convert.ToInt32(StatRow["respectGiven"]), Convert.ToInt32(StatRow["giftsGiven"]),
                                                 Convert.ToInt32(StatRow["giftsReceived"]), Convert.ToInt32(StatRow["dailyRespectPoints"]), Convert.ToInt32(StatRow["dailyPetRespectPoints"]), Convert.ToInt32(StatRow["AchievementScore"]),
                                                 Convert.ToInt32(StatRow["quest_id"]), Convert.ToInt32(StatRow["quest_progress"]), Convert.ToInt32(StatRow["groupid"]), Convert.ToString(StatRow["respectsTimestamp"]), Convert.ToInt32(StatRow["forum_posts"]), Convert.ToBoolean(StatRow["PurchaseUsersConcurrent"]), Convert.ToInt32(StatRow["vip_gifts"]));

                    if (Convert.ToString(StatRow["respectsTimestamp"]) != DateTime.Today.ToString("MM/dd"))
                    {
                        _habboStats.RespectsTimestamp = DateTime.Today.ToString("MM/dd");
                        SubscriptionData SubData = null;

                        int DailyRespects = 3;

                        if (_permissions.HasRight("mod_tool"))
                        {
                            DailyRespects = 20;
                        }
                        else if (NeonEnvironment.GetGame().GetSubscriptionManager().TryGetSubscriptionData(VIPRank, out SubData))
                        {
                            DailyRespects = SubData.Respects;
                        }

                        _habboStats.DailyRespectPoints    = DailyRespects;
                        _habboStats.DailyPetRespectPoints = DailyRespects;

                        dbClient.RunQuery("UPDATE `user_stats` SET `dailyRespectPoints` = '" + DailyRespects + "', `dailyPetRespectPoints` = '" + DailyRespects + "', `respectsTimestamp` = '" + DateTime.Today.ToString("MM/dd") + "' WHERE `id` = '" + Id + "' LIMIT 1");
                    }
                }
                catch (Exception e)
                {
                    Logging.LogException(e.ToString());
                }
            }

            if (!NeonEnvironment.GetGame().GetGroupManager().TryGetGroup(_habboStats.FavouriteGroupId, out _))
            {
                _habboStats.FavouriteGroupId = 0;
            }
            #endregion
        }
Exemplo n.º 2
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (Session?.GetHabbo() == null)
            {
                return;
            }

            string Gender = Packet.PopString().ToUpper();
            string Look   = NeonEnvironment.GetGame().GetAntiMutant().RunLook(Packet.PopString());

            if (Look == Session.GetHabbo().Look)
            {
                return;
            }

            if ((DateTime.Now - Session.GetHabbo().LastClothingUpdateTime).TotalSeconds <= 2.0)
            {
                Session.GetHabbo().ClothingUpdateWarnings += 1;
                if (Session.GetHabbo().ClothingUpdateWarnings >= 25)
                {
                    Session.GetHabbo().SessionClothingBlocked = true;
                }

                return;
            }

            if (Session.GetHabbo().SessionClothingBlocked)
            {
                return;
            }

            Session.GetHabbo().LastClothingUpdateTime = DateTime.Now;

            string[] AllowedGenders = { "M", "F" };
            if (!AllowedGenders.Contains(Gender))
            {
                Session.SendMessage(new BroadcastMessageAlertComposer("Sorry, you chose an invalid gender."));
                return;
            }

            NeonEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.PROFILE_CHANGE_LOOK);

            Session.GetHabbo().Look   = NeonEnvironment.FilterFigure(Look);
            Session.GetHabbo().Gender = Gender.ToLower();

            using (Database.Interfaces.IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE users SET look = @look, gender = @gender WHERE `id` = '" +
                                  Session.GetHabbo().Id + "' LIMIT 1");
                dbClient.AddParameter("look", Look);
                dbClient.AddParameter("gender", Gender);
                dbClient.RunQuery();
            }

            NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_AvatarLooks", 1);
            Session.SendMessage(new AvatarAspectUpdateMessageComposer(Look, Gender)); //esto
            if (Session.GetHabbo().Look.Contains("ha-1006"))
            {
                NeonEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.WEAR_HAT);
            }

            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            HabboHotel.Rooms.RoomUser RoomUser =
                Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
            if (RoomUser == null)
            {
                return;
            }

            Session.SendMessage(new UserChangeComposer(RoomUser, true));
            Session.GetHabbo().CurrentRoom.SendMessage(new UserChangeComposer(RoomUser, false));
        }