private List <ChatlogEntry> GetChatlogs(RoomData roomData, double timeEnter, double timeExit)
        {
            var chats = new List <ChatlogEntry>();

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `user_id`, `timestamp`, `message` FROM `chatlogs` WHERE `room_id` = " + roomData.Id + " AND `timestamp` > " + timeEnter + " AND `timestamp` < " + timeExit + " ORDER BY `timestamp` DESC LIMIT 100");
                var data = dbClient.GetTable();

                if (data != null)
                {
                    foreach (DataRow row in data.Rows)
                    {
                        var habbo = HabboFactory.GetHabboById(Convert.ToInt32(row["user_id"]));

                        if (habbo != null)
                        {
                            chats.Add(new ChatlogEntry(Convert.ToInt32(row["user_id"]), roomData.Id, Convert.ToString(row["message"]), Convert.ToDouble(row["timestamp"]), habbo));
                        }
                    }
                }
            }

            return(chats);
        }
Пример #2
0
        internal static UserData GetUserData(int UserId)
        {
            DataRow   dataRow;
            uint      num;
            DataRow   row;
            DataTable table;

            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.setQuery("SELECT users.* FROM users WHERE users.id = @id");
                queryreactor.addParameter("id", UserId);
                dataRow = queryreactor.getRow();
                CyberEnvironment.GetGame().GetClientManager().LogClonesOut(Convert.ToUInt32(UserId));
                if (dataRow == null)
                {
                    UserData result = null;
                    return(result);
                }
                num = Convert.ToUInt32(dataRow["id"]);
                if (CyberEnvironment.GetGame().GetClientManager().GetClientByUserID(num) != null)
                {
                    UserData result = null;
                    return(result);
                }
                queryreactor.setQuery("SELECT group_id,rank FROM group_memberships WHERE user_id=" + UserId);
                queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM user_stats WHERE id=" + num + " LIMIT 1");
                row = queryreactor.getRow();
                queryreactor.setQuery("SELECT * FROM user_relationships WHERE user_id=@id");
                queryreactor.addParameter("id", num);
                table = queryreactor.getTable();
            }
            Dictionary <string, UserAchievement> achievements = new Dictionary <string, UserAchievement>();
            Dictionary <int, UserTalent>         talents      = new Dictionary <int, UserTalent>();
            List <uint>         favouritedRooms          = new List <uint>();
            List <uint>         ignores                  = new List <uint>();
            List <string>       tags                     = new List <string>();
            List <Badge>        badges                   = new List <Badge>();
            List <UserItem>     inventory                = new List <UserItem>();
            List <AvatarEffect> effects                  = new List <AvatarEffect>();
            Dictionary <uint, MessengerBuddy>   friends  = new Dictionary <uint, MessengerBuddy>();
            Dictionary <uint, MessengerRequest> requests = new Dictionary <uint, MessengerRequest>();
            HashSet <RoomData>             rooms         = new HashSet <RoomData>();
            Dictionary <uint, Pet>         pets          = new Dictionary <uint, Pet>();
            Dictionary <uint, int>         quests        = new Dictionary <uint, int>();
            Dictionary <uint, RoomBot>     bots          = new Dictionary <uint, RoomBot>();
            HashSet <GroupUser>            group         = new HashSet <GroupUser>();
            HashSet <uint>                 pollData      = new HashSet <uint>();
            Dictionary <int, Relationship> dictionary    = new Dictionary <int, Relationship>();

            foreach (DataRow dataRow2 in table.Rows)
            {
                dictionary.Add((int)dataRow2[0], new Relationship((int)dataRow2[0], (int)dataRow2[2], Convert.ToInt32(dataRow2[3].ToString())));
            }
            Habbo user = HabboFactory.GenerateHabbo(dataRow, row, group);

            dataRow = null;

            return(new UserData(num, achievements, talents, favouritedRooms, ignores, tags, null, badges, inventory, effects, friends, requests, rooms, pets, quests, user, bots, dictionary, pollData, 0));
        }
Пример #3
0
        public void Parse(Player session, ClientPacket packet)
        {
            var groupId = packet.PopInt();
            var userId  = packet.PopInt();

            if (!Program.GameContext.GetGroupManager().TryGetGroup(groupId, out var group))
            {
                return;
            }

            if (session.GetHabbo().Id != group.CreatorId && !group.IsAdmin(session.GetHabbo().Id) && !session.GetHabbo().GetPermissions().HasRight("fuse_group_accept_any"))
            {
                return;
            }

            if (!group.HasRequest(userId))
            {
                return;
            }

            var habbo = HabboFactory.GetHabboById(userId);

            if (habbo == null)
            {
                session.SendNotification("Oops, an error occurred whilst finding this user.");
                return;
            }

            group.HandleRequest(userId, true);

            session.SendPacket(new GroupMemberUpdatedComposer(groupId, habbo, 4));
        }
Пример #4
0
        public GroupInfoComposer(Group Group, Player Session, bool NewWindow = false)
            : base(ServerPacketHeader.GroupInfoMessageComposer)
        {
            var Origin = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Group.CreateTime);

            WriteInteger(Group.Id);
            WriteBoolean(true);
            WriteInteger(Group.Type == GroupType.Open ? 0 : Group.Type == GroupType.Locked ? 1 : 2);
            WriteString(Group.Name);
            WriteString(Group.Description);
            WriteString(Group.Badge);
            WriteInteger(Group.RoomId);
            WriteString(Group.GetRoom() != null ? Group.GetRoom().Name : "No room found.."); // room name
            WriteInteger(Group.CreatorId == Session.GetHabbo().Id ? 3 : Group.HasRequest(Session.GetHabbo().Id) ? 2 : Group.IsMember(Session.GetHabbo().Id) ? 1 : 0);
            WriteInteger(Group.MemberCount);                                                 // Members
            WriteBoolean(false);                                                             //?? CHANGED
            WriteString(Origin.Day + "-" + Origin.Month + "-" + Origin.Year);
            WriteBoolean(Group.CreatorId == Session.GetHabbo().Id);
            WriteBoolean(Group.IsAdmin(Session.GetHabbo().Id));                                                                                                                                      // admin
            WriteString(HabboFactory.GetUsernameById(Group.CreatorId));
            WriteBoolean(NewWindow);                                                                                                                                                                 // Show group info
            WriteBoolean(Group.AdminOnlyDeco == 0);                                                                                                                                                  // Any user can place furni in home room
            WriteInteger(Group.CreatorId == Session.GetHabbo().Id ? Group.RequestCount : Group.IsAdmin(Session.GetHabbo().Id) ? Group.RequestCount : Group.IsMember(Session.GetHabbo().Id) ? 0 : 0); // Pending users
            //base.WriteInteger(0);//what the f**k
            WriteBoolean(Group != null ? Group.ForumEnabled : true);                                                                                                                                 //HabboTalk.
        }
Пример #5
0
        public void Parse(Player session, ClientPacket packet)
        {
            var userId = packet.PopInt();

            packet.PopBoolean(); //IsMe?

            var targetData = HabboFactory.GetHabboById(userId);

            if (targetData == null)
            {
                session.SendNotification("An error occured whilst finding that user's profile.");
                return;
            }

            var groups = Program.GameContext.GetGroupManager().GetGroupsForUser(targetData.Id);

            int friendCount;

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("SELECT COUNT(0) FROM `messenger_friendships` WHERE (`user_one_id` = @userid OR `user_two_id` = @userid)");
                dbClient.AddParameter("userid", userId);
                friendCount = dbClient.GetInteger();
            }

            session.SendPacket(new ProfileInformationComposer(targetData, session, groups, friendCount));
        }
Пример #6
0
        /// <summary>
        /// Gets the user data.
        /// </summary>
        /// <param name="userId">The user identifier.</param>
        /// <returns>UserData.</returns>
        internal static UserData GetUserData(int userId)
        {
            DataRow   dataRow;
            uint      num;
            DataRow   row;
            DataTable table;

            using (var queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(string.Format("SELECT * FROM users WHERE id = '{0}'", userId));
                dataRow = queryReactor.GetRow();
                Plus.GetGame().GetClientManager().LogClonesOut(Convert.ToUInt32(userId));
                if (dataRow == null)
                {
                    return(null);
                }
                num = Convert.ToUInt32(dataRow["id"]);
                if (Plus.GetGame().GetClientManager().GetClientByUserId(num) != null)
                {
                    return(null);
                }
                queryReactor.SetQuery(string.Format("SELECT job_id,job_rank FROM rp_stats WHERE id={0}", userId));
                queryReactor.GetTable();
                queryReactor.SetQuery(string.Format("SELECT * FROM users_stats WHERE id={0} LIMIT 1", num));
                row = queryReactor.GetRow();

                if (row == null)
                {
                }
                queryReactor.SetQuery("SELECT * FROM users_relationships WHERE user_id=@id");
                queryReactor.AddParameter("id", num);
                table = queryReactor.GetTable();
            }
            var achievements    = new Dictionary <string, UserAchievement>();
            var talents         = new Dictionary <int, UserTalent>();
            var favouritedRooms = new List <uint>();
            var ignores         = new List <uint>();
            var tags            = new List <string>();
            var badges          = new List <Badge>();
            var inventory       = new List <UserItem>();
            var effects         = new List <AvatarEffect>();
            var friends         = new Dictionary <uint, MessengerBuddy>();
            var requests        = new Dictionary <uint, MessengerRequest>();
            var rooms           = new HashSet <RoomData>();
            var pets            = new Dictionary <uint, Pet>();
            var quests          = new Dictionary <uint, int>();
            var bots            = new Dictionary <uint, RoomBot>();
            var group           = new HashSet <GroupUser>();
            var pollData        = new HashSet <uint>();
            var dictionary      = table.Rows.Cast <DataRow>()
                                  .ToDictionary(dataRow2 => (int)dataRow2[0],
                                                dataRow2 =>
                                                new Relationship((int)dataRow2[0], (int)dataRow2[2], Convert.ToInt32(dataRow2[3].ToString())));
            var user = HabboFactory.GenerateHabbo(dataRow, row, group);

            dataRow = null;

            return(new UserData(num, achievements, talents, favouritedRooms, ignores, tags, null, badges, inventory,
                                effects, friends, requests, rooms, pets, quests, user, bots, dictionary, pollData, 0));
        }
Пример #7
0
        public void Parse(Player session, ClientPacket packet)
        {
            if (!session.GetHabbo().InRoom)
            {
                return;
            }

            var userId = packet.PopInt();

            packet.PopInt(); //roomId
            var time = packet.PopInt();

            var room = session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            if (room.WhoCanMute == 0 && !room.CheckRights(session, true) && room.Group == null || room.WhoCanMute == 1 && !room.CheckRights(session) && room.Group == null || room.Group != null && !room.CheckRights(session, false, true))
            {
                return;
            }

            var target = room.GetRoomUserManager().GetRoomUserByHabbo(HabboFactory.GetUsernameById(userId));

            if (target == null)
            {
                return;
            }

            if (target.GetClient().GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                return;
            }

            if (room.MutedUsers.ContainsKey(userId))
            {
                if (room.MutedUsers[userId] < UnixUtilities.GetNow())
                {
                    room.MutedUsers.Remove(userId);
                }
                else
                {
                    return;
                }
            }

            room.MutedUsers.Add(userId, UnixUtilities.GetNow() + time * 60);

            target.GetClient().SendWhisper("The room owner has muted you for " + time + " minutes!");
            Program.GameContext.GetAchievementManager().ProgressAchievement(session, "ACH_SelfModMuteSeen", 1);
        }
Пример #8
0
        public void Parse(Player session, ClientPacket packet)
        {
            var userId = packet.PopInt();
            var habbo  = HabboFactory.GetHabboById(userId);

            if (habbo == null)
            {
                return;
            }

            session.SendPacket(new HabboUserBadgesComposer(habbo));
        }
        public void Parse(Player session, ClientPacket packet)
        {
            if (session == null || session.GetHabbo() == null || !session.GetHabbo().GetPermissions().HasRight("mod_trade_lock"))
            {
                return;
            }

            var userId  = packet.PopInt();
            var message = packet.PopString();
            var days    = packet.PopInt() / 1440.0;

            packet.PopString(); //unk1
            packet.PopString(); //unk2

            var length = UnixUtilities.GetNow() + days * 86400;

            var habbo = HabboFactory.GetHabboById(userId);

            if (habbo == null)
            {
                session.SendWhisper("An error occoured whilst finding that user in the database.");
                return;
            }

            if (habbo.GetPermissions().HasRight("mod_trade_lock") && !session.GetHabbo().GetPermissions().HasRight("mod_trade_lock_any"))
            {
                session.SendWhisper("Oops, you cannot trade lock another user ranked 5 or higher.");
                return;
            }

            if (days < 1)
            {
                days = 1;
            }

            if (days > 365)
            {
                days = 365;
            }

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '" + length + "', `trading_locks_count` = `trading_locks_count` + '1' WHERE `user_id` = '" + habbo.Id + "' LIMIT 1");
            }

            if (habbo.GetClient() != null)
            {
                habbo.TradingLockExpiry = length;
                habbo.GetClient().SendNotification("You have been trade banned for " + days + " day(s)!\r\rReason:\r\r" + message);
            }
        }
Пример #10
0
        public void Execute(Player Session, Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Please enter a username and a valid time in seconds (max 600, anything over will be set back to 600).");
                return;
            }

            var Habbo = HabboFactory.GetHabboByUsername(Params[1]);

            if (Habbo == null)
            {
                Session.SendWhisper("An error occoured whilst finding that user in the database.");
                return;
            }

            if (Habbo.GetPermissions().HasRight("mod_tool") && !Session.GetHabbo().GetPermissions().HasRight("mod_mute_any"))
            {
                Session.SendWhisper("Oops, you cannot mute that user.");
                return;
            }

            double Time;

            if (double.TryParse(Params[2], out Time))
            {
                if (Time > 600 && !Session.GetHabbo().GetPermissions().HasRight("mod_mute_limit_override"))
                {
                    Time = 600;
                }

                using (var dbClient = Program.DatabaseManager.GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `users` SET `time_muted` = '" + Time + "' WHERE `id` = '" + Habbo.Id + "' LIMIT 1");
                }

                if (Habbo.GetClient() != null)
                {
                    Habbo.TimeMuted = Time;
                    Habbo.GetClient().SendNotification("You have been muted by a moderator for " + Time + " seconds!");
                }

                Session.SendWhisper("You have successfully muted " + Habbo.Username + " for " + Time + " seconds.");
            }
            else
            {
                Session.SendWhisper("Please enter a valid integer.");
            }
        }
Пример #11
0
        public void Parse(Player session, ClientPacket packet)
        {
            var habbo = HabboFactory.GetHabboById(packet.PopInt());

            if (habbo == null)
            {
                return;
            }

            var rand = new Random();

            habbo.Relationships = habbo.Relationships.OrderBy(x => rand.Next()).ToDictionary(item => item.Key, item => item.Value);

            session.SendPacket(new GetRelationshipsComposer(habbo));
        }
        public void Parse(Player session, ClientPacket packet)
        {
            if (session == null || session.GetHabbo() == null)
            {
                return;
            }

            if (!session.GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                return;
            }

            var data = HabboFactory.GetHabboById(packet.PopInt());

            if (data == null)
            {
                session.SendNotification("Unable to load info for user.");
                return;
            }

            Program.GameContext.GetChatManager().GetLogs().FlushAndSave();

            var chatlogs = new List <KeyValuePair <RoomData, List <ChatlogEntry> > >();

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `room_id`,`entry_timestamp`,`exit_timestamp` FROM `user_roomvisits` WHERE `user_id` = '" + data.Id + "' ORDER BY `entry_timestamp` DESC LIMIT 7");
                var getLogs = dbClient.GetTable();

                if (getLogs != null)
                {
                    foreach (DataRow row in getLogs.Rows)
                    {
                        if (!RoomFactory.TryGetData(Convert.ToInt32(row["room_id"]), out var roomData))
                        {
                            continue;
                        }

                        var timestampExit = Convert.ToDouble(row["exit_timestamp"]) <= 0 ? UnixUtilities.GetNow() : Convert.ToDouble(row["exit_timestamp"]);

                        chatlogs.Add(new KeyValuePair <RoomData, List <ChatlogEntry> >(roomData, GetChatlogs(roomData, Convert.ToDouble(row["entry_timestamp"]), timestampExit)));
                    }
                }

                session.SendPacket(new ModeratorUserChatlogComposer(data, chatlogs));
            }
        }
        public void Parse(Player session, ClientPacket packet)
        {
            if (session == null || session.GetHabbo() == null)
            {
                return;
            }

            if (!session.GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                return;
            }

            packet.PopInt(); //junk
            var roomId = packet.PopInt();

            if (!Program.GameContext.GetRoomManager().TryGetRoom(roomId, out var room))
            {
                return;
            }

            Program.GameContext.GetChatManager().GetLogs().FlushAndSave();

            var chats = new List <ChatlogEntry>();

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `chatlogs` WHERE `room_id` = @id ORDER BY `id` DESC LIMIT 100");
                dbClient.AddParameter("id", roomId);
                var data = dbClient.GetTable();

                if (data != null)
                {
                    foreach (DataRow row in data.Rows)
                    {
                        var habbo = HabboFactory.GetHabboById(Convert.ToInt32(row["user_id"]));

                        if (habbo != null)
                        {
                            chats.Add(new ChatlogEntry(Convert.ToInt32(row["user_id"]), roomId, Convert.ToString(row["message"]), Convert.ToDouble(row["timestamp"]), habbo));
                        }
                    }
                }
            }

            session.SendPacket(new ModeratorRoomChatlogComposer(room, chats));
        }
Пример #14
0
        internal static Habbo GetUserDataCache(uint userId)
        {
            DataRow dUser;

            using (IQueryAdapter dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("SELECT id, username, real_name, rank, motto, account_created, look, gender, diamonds, machine_last, last_online, achievement_points, favoriteGroup, block_newfriends, block_trade, ignoreRoomInvitations, dontfocususers, prefer_old_chat, alertasAtivados, frankJaApareceu, moedas, corAtual, coresJaTenho, coins_purchased FROM users WHERE id = " + userId);
                dUser = dbClient.getRow();
            }

            if (dUser == null)
            {
                return(null);
            }

            return(HabboFactory.GenerateHabboCache(dUser));
        }
Пример #15
0
        public void Parse(Player session, ClientPacket packet)
        {
            var groupId = packet.PopInt();
            var userId  = packet.PopInt();

            if (!Program.GameContext.GetGroupManager().TryGetGroup(groupId, out var group))
            {
                return;
            }

            if (session.GetHabbo().Id != group.CreatorId || !group.IsMember(userId))
            {
                return;
            }

            var habbo = HabboFactory.GetHabboById(userId);

            if (habbo == null)
            {
                session.SendNotification("Oops, an error occurred whilst finding this user.");
                return;
            }

            group.MakeAdmin(userId);

            if (Program.GameContext.GetRoomManager().TryGetRoom(group.RoomId, out var room))
            {
                var user = room.GetRoomUserManager().GetRoomUserByHabbo(userId);
                if (user != null)
                {
                    if (!user.Statusses.ContainsKey("flatctrl 3"))
                    {
                        user.SetStatus("flatctrl 3");
                    }

                    user.UpdateNeeded = true;
                    if (user.GetClient() != null)
                    {
                        user.GetClient().SendPacket(new YouAreControllerComposer(3));
                    }
                }
            }

            session.SendPacket(new GroupMemberUpdatedComposer(groupId, habbo, 1));
        }
Пример #16
0
        public bool Execute(params object[] Params)
        {
            if (Params == null || Params.Length == 0)
            {
                return(false);
            }

            var Owner = HabboFactory.GetHabboById(Item.UserID);

            if (Owner == null || !Owner.GetPermissions().HasRight("room_item_wired_rewards"))
            {
                return(false);
            }

            var Player = (Habbo)Params[0];

            if (Player == null || Player.GetClient() == null)
            {
                return(false);
            }

            var User = Player.CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Player.Username);

            if (User == null)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(StringData))
            {
                return(false);
            }

            if (Player.GetBadgeComponent().HasBadge(StringData))
            {
                Player.GetClient().SendPacket(new WhisperComposer(User.VirtualId, "Oops, it appears you have already recieved this badge!", 0, User.LastBubble));
            }
            else
            {
                Player.GetBadgeComponent().GiveBadge(StringData, true, Player.GetClient());
                Player.GetClient().SendNotification("You have recieved a badge!");
            }

            return(true);
        }
Пример #17
0
        public void Parse(Player session, ClientPacket packet)
        {
            var ignoredUsers = new List <string>();

            foreach (var userId in new List <int>(session.GetHabbo().GetIgnores().IgnoredUserIds()))
            {
                var player = HabboFactory.GetHabboById(userId);
                if (player != null)
                {
                    if (!ignoredUsers.Contains(player.Username))
                    {
                        ignoredUsers.Add(player.Username);
                    }
                }
            }

            session.SendPacket(new IgnoredUsersComposer(ignoredUsers));
        }
Пример #18
0
        public string GetUsername()
        {
            if (IsBot)
            {
                return(string.Empty);
            }

            if (GetClient() != null)
            {
                if (GetClient().GetHabbo() != null)
                {
                    return(GetClient().GetHabbo().Username);
                }

                return(HabboFactory.GetUsernameById(HabboId));
            }

            return(HabboFactory.GetUsernameById(HabboId));
        }
Пример #19
0
        public void Parse(Player session, ClientPacket packet)
        {
            if (!session.GetHabbo().InRoom)
            {
                return;
            }

            var room = session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            var username = packet.PopString();

            var player = HabboFactory.GetHabboByUsername(username);

            if (player == null || player.GetPermissions().HasRight("mod_tool"))
            {
                return;
            }

            if (session.GetHabbo().GetIgnores().TryGet(player.Id))
            {
                return;
            }

            if (session.GetHabbo().GetIgnores().TryAdd(player.Id))
            {
                using (var dbClient = Program.DatabaseManager.GetQueryReactor())
                {
                    dbClient.SetQuery("INSERT INTO `user_ignores` (`user_id`,`ignore_id`) VALUES(@uid,@ignoreId);");
                    dbClient.AddParameter("uid", session.GetHabbo().Id);
                    dbClient.AddParameter("ignoreId", player.Id);
                    dbClient.RunQuery();
                }

                session.SendPacket(new IgnoreStatusComposer(1, player.Username));

                Program.GameContext.GetAchievementManager().ProgressAchievement(session, "ACH_SelfModIgnoreSeen", 1);
            }
        }
Пример #20
0
        public void Parse(Player session, ClientPacket packet)
        {
            if (!session.GetHabbo().InRoom)
            {
                return;
            }

            var room = session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            var username = packet.PopString();

            var player = HabboFactory.GetHabboByUsername(username);

            if (player == null)
            {
                return;
            }

            if (!session.GetHabbo().GetIgnores().TryGet(player.Id))
            {
                return;
            }

            if (session.GetHabbo().GetIgnores().TryRemove(player.Id))
            {
                using (var dbClient = Program.DatabaseManager.GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `user_ignores` WHERE `user_id` = @uid AND `ignore_id` = @ignoreId");
                    dbClient.AddParameter("uid", session.GetHabbo().Id);
                    dbClient.AddParameter("ignoreId", player.Id);
                    dbClient.RunQuery();
                }

                session.SendPacket(new IgnoreStatusComposer(3, player.Username));
            }
        }
Пример #21
0
        public void Parse(Player session, ClientPacket packet)
        {
            if (session?.GetHabbo() == null || !session.GetHabbo().GetPermissions().HasRight("mod_mute"))
            {
                return;
            }

            var userId = packet.PopInt();

            packet.PopString(); //message
            double length = packet.PopInt() * 60;

            packet.PopString(); //unk1
            packet.PopString(); //unk2

            var habbo = HabboFactory.GetHabboById(userId);

            if (habbo == null)
            {
                session.SendWhisper("An error occoured whilst finding that user in the database.");
                return;
            }

            if (habbo.GetPermissions().HasRight("mod_mute") && !session.GetHabbo().GetPermissions().HasRight("mod_mute_any"))
            {
                session.SendWhisper("Oops, you cannot mute that user.");
                return;
            }

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.RunQuery("UPDATE `users` SET `time_muted` = '" + length + "' WHERE `id` = '" + habbo.Id + "' LIMIT 1");
            }

            if (habbo.GetClient() != null)
            {
                habbo.TimeMuted = length;
                habbo.GetClient().SendNotification("You have been muted by a moderator for " + length + " seconds!");
            }
        }
Пример #22
0
        public void Execute(Player Session, Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Please enter the username of the user you'd like to IP ban & account ban.");
                return;
            }

            var Habbo = HabboFactory.GetHabboByUsername(Params[1]);

            if (Habbo == null)
            {
                Session.SendWhisper("An error occoured whilst finding that user in the database.");
                return;
            }

            if (Habbo.GetPermissions().HasRight("mod_tool") && !Session.GetHabbo().GetPermissions().HasRight("mod_ban_any"))
            {
                Session.SendWhisper("Oops, you cannot ban that user.");
                return;
            }

            var IPAddress = string.Empty;
            var Expire    = UnixUtilities.GetNow() + 78892200;
            var Username  = Habbo.Username;

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.RunQuery("UPDATE `user_info` SET `bans` = `bans` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1");

                dbClient.SetQuery("SELECT `ip_last` FROM `users` WHERE `id` = '" + Habbo.Id + "' LIMIT 1");
                IPAddress = dbClient.GetString();
            }

            string Reason = null;

            if (Params.Length >= 3)
            {
                Reason = CommandManager.MergeParams(Params, 2);
            }
            else
            {
                Reason = "No reason specified.";
            }

            if (!string.IsNullOrEmpty(IPAddress))
            {
                Program.GameContext.GetModerationManager().BanUser(Session.GetHabbo().Username, ModerationBanType.IP, IPAddress, Reason, Expire);
            }

            Program.GameContext.GetModerationManager().BanUser(Session.GetHabbo().Username, ModerationBanType.Username, Habbo.Username, Reason, Expire);

            var TargetClient = Program.GameContext.PlayerController.GetClientByUsername(Username);

            if (TargetClient != null)
            {
                TargetClient.Disconnect();
            }


            Session.SendWhisper("Success, you have IP and account banned the user '" + Username + "' for '" + Reason + "'!");
        }
Пример #23
0
        public static UserData GetUserData(int UserId)
        {
            DataRow   dUserInfo  = null;
            DataRow   UserInfo   = null;
            DataTable dRelations = null;
            DataTable dGroups    = null;

            using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `users` WHERE `id` = @id LIMIT 1");
                dbClient.AddParameter("id", UserId);
                dUserInfo = dbClient.getRow();

                QuasarEnvironment.GetGame().GetClientManager().LogClonesOut(Convert.ToInt32(UserId));

                if (dUserInfo == null)
                {
                    return(null);
                }

                if (QuasarEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId) != null)
                {
                    return(null);
                }


                dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + UserId + "' LIMIT 1");
                UserInfo = dbClient.getRow();
                if (UserInfo == null)
                {
                    dbClient.RunQuery("INSERT INTO `user_info` (`user_id`) VALUES ('" + UserId + "')");

                    dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + UserId + "' LIMIT 1");
                    UserInfo = dbClient.getRow();
                }

                dbClient.SetQuery("SELECT group_id,rank FROM group_memberships WHERE user_id=@id");
                dbClient.AddParameter("id", UserId);
                dGroups = dbClient.getTable();

                dbClient.SetQuery("SELECT `id`,`target`,`type` FROM user_relationships WHERE user_id=@id");
                dbClient.AddParameter("id", UserId);
                dRelations = dbClient.getTable();
            }

            ConcurrentDictionary <string, UserAchievement> Achievements = new ConcurrentDictionary <string, UserAchievement>();
            Dictionary <int, UserTalent> talents = new Dictionary <int, UserTalent>();
            List <int>   FavouritedRooms         = new List <int>();
            List <int>   Ignores = new List <int>();
            List <Badge> Badges  = new List <Badge>();
            Dictionary <int, MessengerBuddy>   Friends        = new Dictionary <int, MessengerBuddy>();
            Dictionary <int, MessengerRequest> FriendRequests = new Dictionary <int, MessengerRequest>();
            List <RoomData>                   Rooms           = new List <RoomData>();
            Dictionary <int, int>             Quests          = new Dictionary <int, int>();
            Dictionary <string, Subscription> subscriptions   = new Dictionary <string, Subscription>();

            Dictionary <int, Relationship> Relationships = new Dictionary <int, Relationship>();

            foreach (DataRow Row in dRelations.Rows)
            {
                if (!Relationships.ContainsKey(Convert.ToInt32(Row["id"])))
                {
                    Relationships.Add(Convert.ToInt32(Row["target"]), new Relationship(Convert.ToInt32(Row["id"]), Convert.ToInt32(Row["target"]), Convert.ToInt32(Row["type"].ToString())));
                }
            }

            Habbo user = HabboFactory.GenerateHabbo(dUserInfo, UserInfo);

            return(new UserData(UserId, Achievements, FavouritedRooms, Ignores, Badges, Friends, FriendRequests, Rooms, Quests, user, Relationships, talents, subscriptions));
        }
Пример #24
0
        public static UserData GetUserData(string SessionTicket, out byte errorCode)
        {
            int       UserId;
            DataRow   dUserInfo       = null;
            DataTable dAchievements   = null;
            DataTable dFavouriteRooms = null;
            DataTable dIgnores        = null;
            DataTable dBadges         = null;
            DataTable dEffects        = null;
            DataTable dFriends        = null;
            DataTable dRequests       = null;
            DataTable dRooms          = null;
            DataTable dQuests         = null;
            DataTable dRelations      = null;
            DataTable talentsTable    = null;
            DataRow   UserInfo        = null;
            DataTable Subscriptions   = null;

            using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `users` WHERE `auth_ticket` = @sso LIMIT 1");
                dbClient.AddParameter("sso", SessionTicket);
                dUserInfo = dbClient.getRow();

                if (dUserInfo == null)
                {
                    errorCode = 1;
                    return(null);
                }

                UserId = Convert.ToInt32(dUserInfo["id"]);
                if (QuasarEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId) != null)
                {
                    errorCode = 2;
                    QuasarEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId).Disconnect();
                    return(null);
                }

                dbClient.SetQuery("SELECT `group`,`level`,`progress` FROM `user_achievements` WHERE `userid` = '" + UserId + "'");
                dAchievements = dbClient.getTable();

                dbClient.SetQuery("SELECT room_id FROM user_favorites WHERE `user_id` = '" + UserId + "'");
                dFavouriteRooms = dbClient.getTable();

                dbClient.SetQuery("SELECT ignore_id FROM user_ignores WHERE `user_id` = '" + UserId + "'");
                dIgnores = dbClient.getTable();

                dbClient.SetQuery("SELECT `badge_id`,`badge_slot` FROM user_badges WHERE `user_id` = '" + UserId + "'");
                dBadges = dbClient.getTable();

                dbClient.SetQuery("SELECT `effect_id`,`total_duration`,`is_activated`,`activated_stamp` FROM user_effects WHERE `user_id` = '" + UserId + "'");
                dEffects = dbClient.getTable();

                dbClient.SetQuery(
                    "SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online " +
                    "FROM users " +
                    "JOIN messenger_friendships " +
                    "ON users.id = messenger_friendships.user_one_id " +
                    "WHERE messenger_friendships.user_two_id = " + UserId + " " +
                    "UNION ALL " +
                    "SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online " +
                    "FROM users " +
                    "JOIN messenger_friendships " +
                    "ON users.id = messenger_friendships.user_two_id " +
                    "WHERE messenger_friendships.user_one_id = " + UserId);
                dFriends = dbClient.getTable();

                dbClient.SetQuery("SELECT messenger_requests.from_id,messenger_requests.to_id,users.username FROM users JOIN messenger_requests ON users.id = messenger_requests.from_id WHERE messenger_requests.to_id = " + UserId);
                dRequests = dbClient.getTable();

                dbClient.SetQuery("SELECT * FROM rooms WHERE `owner` = '" + UserId + "' LIMIT 150");
                dRooms = dbClient.getTable();

                dbClient.SetQuery("SELECT * FROM users_talents WHERE userid = '" + UserId + "'");
                talentsTable = dbClient.getTable();

                dbClient.SetQuery("SELECT `quest_id`,`progress` FROM user_quests WHERE `user_id` = '" + UserId + "'");
                dQuests = dbClient.getTable();

                dbClient.SetQuery("SELECT * FROM `user_relationships` WHERE `user_id` = @id");
                dbClient.AddParameter("id", UserId);
                dRelations = dbClient.getTable();

                dbClient.SetQuery("SELECT * FROM user_subscriptions WHERE user_id = '" + UserId + "'");
                Subscriptions = dbClient.getTable();

                dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + UserId + "' LIMIT 1");
                UserInfo = dbClient.getRow();
                if (UserInfo == null)
                {
                    dbClient.RunQuery("INSERT INTO `user_info` (`user_id`) VALUES ('" + UserId + "')");

                    dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + UserId + "' LIMIT 1");
                    UserInfo = dbClient.getRow();
                }

                dbClient.runFastQuery("UPDATE users SET online='1' WHERE id=" + UserId + " LIMIT 1");
            }

            ConcurrentDictionary <string, UserAchievement> Achievements = new ConcurrentDictionary <string, UserAchievement>();

            foreach (DataRow dRow in dAchievements.Rows)
            {
                Achievements.TryAdd(Convert.ToString(dRow["group"]), new UserAchievement(Convert.ToString(dRow["group"]), Convert.ToInt32(dRow["level"]), Convert.ToInt32(dRow["progress"])));
            }

            List <int> favouritedRooms = new List <int>();

            foreach (DataRow dRow in dFavouriteRooms.Rows)
            {
                favouritedRooms.Add(Convert.ToInt32(dRow["room_id"]));
            }

            List <int> ignores = new List <int>();

            foreach (DataRow dRow in dIgnores.Rows)
            {
                ignores.Add(Convert.ToInt32(dRow["ignore_id"]));
            }

            List <Badge> badges = new List <Badge>();

            foreach (DataRow dRow in dBadges.Rows)
            {
                badges.Add(new Badge(Convert.ToString(dRow["badge_id"]), Convert.ToInt32(dRow["badge_slot"])));
            }

            Dictionary <int, MessengerBuddy> friends = new Dictionary <int, MessengerBuddy>();

            foreach (DataRow dRow in dFriends.Rows)
            {
                int    friendID         = Convert.ToInt32(dRow["id"]);
                string friendName       = Convert.ToString(dRow["username"]);
                string friendLook       = Convert.ToString(dRow["look"]);
                string friendMotto      = Convert.ToString(dRow["motto"]);
                int    friendLastOnline = Convert.ToInt32(dRow["last_online"]);
                bool   friendHideOnline = QuasarEnvironment.EnumToBool(dRow["hide_online"].ToString());
                bool   friendHideRoom   = QuasarEnvironment.EnumToBool(dRow["hide_inroom"].ToString());

                if (friendID == UserId)
                {
                    continue;
                }

                if (!friends.ContainsKey(friendID))
                {
                    friends.Add(friendID, new MessengerBuddy(friendID, friendName, friendLook, friendMotto, friendLastOnline, friendHideOnline, friendHideRoom));
                }
            }

            Dictionary <int, MessengerRequest> requests = new Dictionary <int, MessengerRequest>();

            foreach (DataRow dRow in dRequests.Rows)
            {
                int receiverID = Convert.ToInt32(dRow["from_id"]);
                int senderID   = Convert.ToInt32(dRow["to_id"]);

                string requestUsername = Convert.ToString(dRow["username"]);

                if (receiverID != UserId)
                {
                    if (!requests.ContainsKey(receiverID))
                    {
                        requests.Add(receiverID, new MessengerRequest(UserId, receiverID, requestUsername));
                    }
                }
                else
                {
                    if (!requests.ContainsKey(senderID))
                    {
                        requests.Add(senderID, new MessengerRequest(UserId, senderID, requestUsername));
                    }
                }
            }

            List <RoomData> rooms = new List <RoomData>();

            foreach (DataRow dRow in dRooms.Rows)
            {
                rooms.Add(QuasarEnvironment.GetGame().GetRoomManager().FetchRoomData(Convert.ToInt32(dRow["id"]), dRow));
            }

            Dictionary <int, int> quests = new Dictionary <int, int>();

            foreach (DataRow dRow in dQuests.Rows)
            {
                int questId = Convert.ToInt32(dRow["quest_id"]);

                if (quests.ContainsKey(questId))
                {
                    quests.Remove(questId);
                }

                quests.Add(questId, Convert.ToInt32(dRow["progress"]));
            }

            Dictionary <int, Relationship> Relationships = new Dictionary <int, Relationship>();

            foreach (DataRow Row in dRelations.Rows)
            {
                if (friends.ContainsKey(Convert.ToInt32(Row[2])))
                {
                    Relationships.Add(Convert.ToInt32(Row[2]), new Relationship(Convert.ToInt32(Row[0]), Convert.ToInt32(Row[2]), Convert.ToInt32(Row[3].ToString())));
                }
            }

            Dictionary <int, UserTalent> talents = new Dictionary <int, UserTalent>();

            if (talentsTable != null)
            {
                foreach (DataRow row in talentsTable.Rows)
                {
                    int num2  = (int)row["talent_id"];
                    int state = (int)row["talent_state"];

                    talents.Add(num2, new UserTalent(num2, state));
                }
            }

            Dictionary <string, Subscription> subscriptions = new Dictionary <string, Subscription>();

            foreach (DataRow dataRow in Subscriptions.Rows)
            {
                string str        = (string)dataRow["subscription_id"];
                int    TimeExpire = (int)dataRow["timestamp_expire"];

                subscriptions.Add(str, new Subscription(str, TimeExpire));
            }


            Habbo user = HabboFactory.GenerateHabbo(dUserInfo, UserInfo);

            dUserInfo       = null;
            dAchievements   = null;
            dFavouriteRooms = null;
            dIgnores        = null;
            dBadges         = null;
            dEffects        = null;
            dFriends        = null;
            dRequests       = null;
            dRooms          = null;
            dRelations      = null;

            errorCode = 0;
            return(new UserData(UserId, Achievements, favouritedRooms, ignores, badges, friends, requests, rooms, quests, user, Relationships, talents, subscriptions));
        }
Пример #25
0
        internal static UserData GetUserData(int userId)
        {
            DataRow   dUserInfo;
            DataRow   userInfo;
            DataTable dRelations;

            using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery(
                    "SELECT `id`,`username`,`rank`,`motto`,`look`,`gender`,`last_online`,`credits`,`activity_points`,`home_room`,`block_newfriends`,`hide_online`,`hide_inroom`,`vip`,`account_created`,`vip_points`,`machine_id`,`volume`,`chat_preference`, `focus_preference`, `pets_muted`,`bots_muted`,`advertising_report_blocked`,`last_change`,`gotw_points`,`ignore_invites`,`time_muted`,`allow_gifts`,`friend_bar_state`,`disable_forced_effects`,`allow_mimic`,`rank_vip` FROM `users` WHERE `id` = @id LIMIT 1");
                dbClient.AddParameter("id", userId);
                dUserInfo = dbClient.GetRow();
                PlusEnvironment.GetGame().GetClientManager().LogClonesOut(Convert.ToInt32(userId));
                if (dUserInfo == null)
                {
                    return(null);
                }
                if (PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(userId) != null)
                {
                    return(null);
                }

                dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + userId + "' LIMIT 1");
                userInfo = dbClient.GetRow();
                if (userInfo == null)
                {
                    dbClient.RunQuery("INSERT INTO `user_info` (`user_id`) VALUES ('" + userId + "')");
                    dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + userId + "' LIMIT 1");
                    userInfo = dbClient.GetRow();
                }
                dbClient.SetQuery("SELECT group_id,rank FROM group_memberships WHERE user_id=@id");
                dbClient.AddParameter("id", userId);
                dbClient.GetTable();
                dbClient.SetQuery("SELECT `id`,`target`,`type` FROM user_relationships WHERE user_id=@id");
                dbClient.AddParameter("id", userId);
                dRelations = dbClient.GetTable();
            }

            var achievements    = new ConcurrentDictionary <string, UserAchievement>();
            var favouritedRooms = new List <int>();
            var badges          = new List <Badge>();
            var friends         = new Dictionary <int, MessengerBuddy>();
            var friendRequests  = new Dictionary <int, MessengerRequest>();
            var rooms           = new List <RoomData>();
            var quests          = new Dictionary <int, int>();
            var relationships   = new Dictionary <int, Relationship>();

            foreach (DataRow row in dRelations.Rows)
            {
                if (!relationships.ContainsKey(Convert.ToInt32(row["id"])))
                {
                    relationships.Add(Convert.ToInt32(row["target"]),
                                      new Relationship(Convert.ToInt32(row["id"]), Convert.ToInt32(row["target"]),
                                                       Convert.ToInt32(row["type"].ToString())));
                }
            }

            var user = HabboFactory.GenerateHabbo(dUserInfo, userInfo);

            return(new UserData(userId, achievements, favouritedRooms, badges, friends, friendRequests, rooms, quests, user,
                                relationships));
        }
Пример #26
0
        public static UserData GetUserData(string sessionTicket, out byte errorCode)
        {
            int       userId;
            DataRow   dUserInfo;
            DataTable dAchievements;
            DataTable dFavouriteRooms;
            DataTable dBadges;
            DataTable dFriends;
            DataTable dRequests;
            DataTable dRooms;
            DataTable dQuests;
            DataTable dRelations;
            DataRow   userInfo;

            using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery(
                    "SELECT `id`,`username`,`rank`,`motto`,`look`,`gender`,`last_online`,`credits`,`activity_points`,`home_room`,`block_newfriends`,`hide_online`,`hide_inroom`,`vip`,`account_created`,`vip_points`,`machine_id`,`volume`,`chat_preference`,`focus_preference`, `pets_muted`,`bots_muted`,`advertising_report_blocked`,`last_change`,`gotw_points`,`ignore_invites`,`time_muted`,`allow_gifts`,`friend_bar_state`,`disable_forced_effects`,`allow_mimic`,`rank_vip` FROM `users` WHERE `auth_ticket` = @sso LIMIT 1");
                dbClient.AddParameter("sso", sessionTicket);
                dUserInfo = dbClient.GetRow();
                if (dUserInfo == null)
                {
                    errorCode = 1;
                    return(null);
                }

                userId = Convert.ToInt32(dUserInfo["id"]);
                if (PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(userId) != null)
                {
                    errorCode = 2;
                    PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(userId).Disconnect();
                    return(null);
                }

                dbClient.SetQuery("SELECT `group`,`level`,`progress` FROM `user_achievements` WHERE `userid` = '" + userId + "'");
                dAchievements = dbClient.GetTable();
                dbClient.SetQuery("SELECT room_id FROM user_favorites WHERE `user_id` = '" + userId + "'");
                dFavouriteRooms = dbClient.GetTable();
                dbClient.SetQuery("SELECT `badge_id`,`badge_slot` FROM user_badges WHERE `user_id` = '" + userId + "'");
                dBadges = dbClient.GetTable();
                dbClient.SetQuery(
                    "SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online " +
                    "FROM users " +
                    "JOIN messenger_friendships " +
                    "ON users.id = messenger_friendships.user_one_id " +
                    "WHERE messenger_friendships.user_two_id = " +
                    userId +
                    " " +
                    "UNION ALL " +
                    "SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online " +
                    "FROM users " +
                    "JOIN messenger_friendships " +
                    "ON users.id = messenger_friendships.user_two_id " +
                    "WHERE messenger_friendships.user_one_id = " +
                    userId);
                dFriends = dbClient.GetTable();
                dbClient.SetQuery(
                    "SELECT messenger_requests.from_id,messenger_requests.to_id,users.username FROM users JOIN messenger_requests ON users.id = messenger_requests.from_id WHERE messenger_requests.to_id = " +
                    userId);
                dRequests = dbClient.GetTable();
                dbClient.SetQuery("SELECT * FROM rooms WHERE `owner` = '" + userId + "' LIMIT 150");
                dRooms = dbClient.GetTable();
                dbClient.SetQuery("SELECT `quest_id`,`progress` FROM user_quests WHERE `user_id` = '" + userId + "'");
                dQuests = dbClient.GetTable();
                dbClient.SetQuery("SELECT `id`,`user_id`,`target`,`type` FROM `user_relationships` WHERE `user_id` = '" + userId +
                                  "'");
                dRelations = dbClient.GetTable();
                dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + userId + "' LIMIT 1");
                userInfo = dbClient.GetRow();
                if (userInfo == null)
                {
                    dbClient.RunQuery("INSERT INTO `user_info` (`user_id`) VALUES ('" + userId + "')");
                    dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + userId + "' LIMIT 1");
                    userInfo = dbClient.GetRow();
                }
                dbClient.RunQuery("UPDATE `users` SET `online` = '1', `auth_ticket` = '' WHERE `id` = '" + userId + "' LIMIT 1");
            }

            var achievements = new ConcurrentDictionary <string, UserAchievement>();

            foreach (DataRow dRow in dAchievements.Rows)
            {
                achievements.TryAdd(Convert.ToString(dRow["group"]),
                                    new UserAchievement(Convert.ToString(dRow["group"]), Convert.ToInt32(dRow["level"]),
                                                        Convert.ToInt32(dRow["progress"])));
            }

            var favouritedRooms = (from DataRow dRow in dFavouriteRooms.Rows select Convert.ToInt32(dRow["room_id"])).ToList();

            var badges = (from DataRow dRow in dBadges.Rows select new Badge(Convert.ToString(dRow["badge_id"]), Convert.ToInt32(dRow["badge_slot"]))).ToList();

            var friends = new Dictionary <int, MessengerBuddy>();

            foreach (DataRow dRow in dFriends.Rows)
            {
                var friendId         = Convert.ToInt32(dRow["id"]);
                var friendName       = Convert.ToString(dRow["username"]);
                var friendLook       = Convert.ToString(dRow["look"]);
                var friendMotto      = Convert.ToString(dRow["motto"]);
                var friendLastOnline = Convert.ToInt32(dRow["last_online"]);
                var friendHideOnline = PlusEnvironment.EnumToBool(dRow["hide_online"].ToString());
                var friendHideRoom   = PlusEnvironment.EnumToBool(dRow["hide_inroom"].ToString());

                if (friendId == userId)
                {
                    continue;
                }

                if (!friends.ContainsKey(friendId))
                {
                    friends.Add(friendId,
                                new MessengerBuddy(friendId, friendName, friendLook, friendMotto, friendLastOnline, friendHideOnline,
                                                   friendHideRoom));
                }
            }

            var requests = new Dictionary <int, MessengerRequest>();

            foreach (DataRow dRow in dRequests.Rows)
            {
                var receiverId      = Convert.ToInt32(dRow["from_id"]);
                var senderId        = Convert.ToInt32(dRow["to_id"]);
                var requestUsername = Convert.ToString(dRow["username"]);

                if (receiverId != userId)
                {
                    if (!requests.ContainsKey(receiverId))
                    {
                        requests.Add(receiverId, new MessengerRequest(userId, receiverId, requestUsername));
                    }
                }
                else
                {
                    if (!requests.ContainsKey(senderId))
                    {
                        requests.Add(senderId, new MessengerRequest(userId, senderId, requestUsername));
                    }
                }
            }

            var rooms = (from DataRow dRow in dRooms.Rows select PlusEnvironment.GetGame().GetRoomManager().FetchRoomData(Convert.ToInt32(dRow["id"]), dRow)).ToList();

            var quests = new Dictionary <int, int>();

            foreach (DataRow dRow in dQuests.Rows)
            {
                var questId = Convert.ToInt32(dRow["quest_id"]);
                if (quests.ContainsKey(questId))
                {
                    quests.Remove(questId);
                }
                quests.Add(questId, Convert.ToInt32(dRow["progress"]));
            }

            var relationships = new Dictionary <int, Relationship>();

            foreach (DataRow row in dRelations.Rows)
            {
                if (friends.ContainsKey(Convert.ToInt32(row[2])))
                {
                    relationships.Add(Convert.ToInt32(row[2]),
                                      new Relationship(Convert.ToInt32(row[0]), Convert.ToInt32(row[2]), Convert.ToInt32(row[3].ToString())));
                }
            }

            var user = HabboFactory.GenerateHabbo(dUserInfo, userInfo);

            errorCode = 0;

            return(new UserData(userId, achievements, favouritedRooms, badges, friends, requests, rooms, quests, user,
                                relationships));
        }
Пример #27
0
        public void Execute(Player Session, Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Please enter the username of the user you'd like to IP ban & account ban.");
                return;
            }

            var Habbo = HabboFactory.GetHabboByUsername(Params[1]);

            if (Habbo == null)
            {
                Session.SendWhisper("An error occoured whilst finding that user in the database.");
                return;
            }

            if (Habbo.GetPermissions().HasRight("mod_soft_ban") && !Session.GetHabbo().GetPermissions().HasRight("mod_ban_any"))
            {
                Session.SendWhisper("Oops, you cannot ban that user.");
                return;
            }

            double Expire = 0;
            var    Hours  = Params[2];

            if (string.IsNullOrEmpty(Hours) || Hours == "perm")
            {
                Expire = UnixUtilities.GetNow() + 78892200;
            }
            else
            {
                Expire = UnixUtilities.GetNow() + Convert.ToDouble(Hours) * 3600;
            }

            string Reason = null;

            if (Params.Length >= 4)
            {
                Reason = CommandManager.MergeParams(Params, 3);
            }
            else
            {
                Reason = "No reason specified.";
            }

            var Username = Habbo.Username;

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.RunQuery("UPDATE `user_info` SET `bans` = `bans` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1");
            }

            Program.GameContext.GetModerationManager().BanUser(Session.GetHabbo().Username, ModerationBanType.Username, Habbo.Username, Reason, Expire);

            var TargetClient = Program.GameContext.PlayerController.GetClientByUsername(Username);

            if (TargetClient != null)
            {
                TargetClient.Disconnect();
            }

            Session.SendWhisper("Success, you have account banned the user '" + Username + "' for " + Hours + " hour(s) with the reason '" + Reason + "'!");
        }
Пример #28
0
        internal static UserData GetUserData(string sessionTicket, string ip, out byte errorCode)
        {
            DataTable dataTable = null;
            DataRow   dataRow;
            uint      Userid;
            DataTable dataTable2;
            DataTable table;
            DataRow   row;
            DataTable dataTable3;
            DataTable dataTable4;
            DataTable dataTable5;
            DataRow   dataRow2;
            DataTable dataTable6;
            DataTable dataTable7;
            DataTable dataTable8;
            DataTable dataTable9;
            DataTable dataTable10;
            DataTable dataTable11;
            DataTable dataTable12;
            DataTable dataTable13;
            DataTable table2;
            DataTable dataTable14;
            DataTable dataTable15;

            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.setQuery("SELECT * FROM users WHERE auth_ticket = @sso ");
                queryreactor.addParameter("sso", sessionTicket);
                queryreactor.addParameter("ipaddress", ip);
                dataRow = queryreactor.getRow();
                if (dataRow == null)
                {
                    errorCode = 1;
                    throw new UserDataNotFoundException(string.Format("No user found with ip {0} and sso {1}.", ip, sessionTicket));
                }
                Userid = Convert.ToUInt32(dataRow["id"]);
                queryreactor.runFastQuery("UPDATE users SET online='1' WHERE id=" + Userid + " LIMIT 1");
                if (CyberEnvironment.GetGame().GetClientManager().GetClientByUserID(Userid) != null)
                {
                    errorCode = 2;
                    CyberEnvironment.GetGame().GetClientManager().GetClientByUserID(Userid).Disconnect();
                    return(null);
                }
                queryreactor.setQuery("SELECT * FROM user_achievement WHERE userid = " + Userid);
                dataTable2 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM user_talents WHERE userid = " + Userid);
                table = queryreactor.getTable();
                queryreactor.setQuery("SELECT COUNT(*) FROM user_stats WHERE id=" + Userid);
                if (int.Parse(queryreactor.getString()) == 0)
                {
                    queryreactor.runFastQuery("INSERT INTO user_stats (id) VALUES (" + Userid + ");");
                }
                queryreactor.setQuery("SELECT * FROM user_stats WHERE id=" + Userid + " LIMIT 1");
                row = queryreactor.getRow();
                queryreactor.setQuery("SELECT room_id FROM user_favorites WHERE user_id = " + Userid);
                dataTable3 = queryreactor.getTable();
                queryreactor.setQuery("SELECT ignore_id FROM user_ignores WHERE user_id = " + Userid);
                dataTable4 = queryreactor.getTable();
                queryreactor.setQuery("SELECT tag FROM user_tags WHERE user_id = " + Userid);
                dataTable5 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM user_subscriptions WHERE user_id = " + Userid + " AND timestamp_expire > UNIX_TIMESTAMP() ORDER BY subscription_id DESC LIMIT 1");
                dataRow2 = queryreactor.getRow();
                queryreactor.setQuery("SELECT * FROM user_badges WHERE user_id = " + Userid);
                dataTable6 = queryreactor.getTable();
                queryreactor.setQuery("SELECT `items`.* , COALESCE(`items_groups`.`group_id`, 0) AS group_id FROM `items` LEFT OUTER JOIN `items_groups` ON `items`.`id` = `items_groups`.`id` WHERE room_id='0' AND user_id=" + Userid + " LIMIT 8000");
                dataTable7 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM user_effects WHERE user_id =  " + Userid);
                dataTable8 = queryreactor.getTable();
                queryreactor.setQuery("SELECT poll_id FROM user_polldata WHERE user_id = " + Userid + " GROUP BY poll_id;");
                dataTable9 = queryreactor.getTable();
                queryreactor.setQuery(string.Concat(new object[]
                {
                    "SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online FROM users JOIN messenger_friendships ON users.id = messenger_friendships.user_one_id WHERE messenger_friendships.user_two_id = ",
                    Userid,
                    " UNION ALL SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online FROM users JOIN messenger_friendships ON users.id = messenger_friendships.user_two_id WHERE messenger_friendships.user_one_id = ",
                    Userid
                }));
                dataTable10 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM user_stats WHERE id=" + Userid + " LIMIT 1");
                row = queryreactor.getRow();
                queryreactor.setQuery("SELECT messenger_requests.from_id,messenger_requests.to_id,users.username FROM users JOIN messenger_requests ON users.id = messenger_requests.from_id WHERE messenger_requests.to_id = " + Userid);
                dataTable11 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM rooms WHERE owner = @name LIMIT 150");
                queryreactor.addParameter("name", (string)dataRow["username"]);
                dataTable12 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM bots WHERE user_id = " + Userid + " AND room_id = 0 AND ai_type='pet'");
                dataTable13 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM user_quests WHERE user_id = " + Userid);
                table2 = queryreactor.getTable();
                queryreactor.setQuery("SELECT * FROM bots WHERE user_id=" + Userid + " AND room_id=0 AND ai_type='generic'");
                dataTable14 = queryreactor.getTable();
                queryreactor.setQuery("SELECT group_id,rank FROM group_memberships WHERE user_id=" + Userid);
                dataTable = queryreactor.getTable();
                queryreactor.setQuery(string.Concat(new object[]
                {
                    "UPDATE user_info SET login_timestamp = '",
                    CyberEnvironment.GetUnixTimestamp(),
                    "' WHERE user_id = ",
                    Userid,
                    " ; "
                }));
                queryreactor.addParameter("ip", ip);
                queryreactor.runQuery();
                queryreactor.setQuery("SELECT * FROM user_relationships WHERE user_id=@id");
                queryreactor.addParameter("id", Userid);
                dataTable15 = queryreactor.getTable();
                queryreactor.runFastQuery("UPDATE users SET online='1' WHERE id=" + Userid + " LIMIT 1");
            }
            Dictionary <string, UserAchievement> dictionary = new Dictionary <string, UserAchievement>();

            foreach (DataRow dataRow3 in dataTable2.Rows)
            {
                string          text     = (string)dataRow3["group"];
                int             level    = (int)dataRow3["level"];
                int             progress = (int)dataRow3["progress"];
                UserAchievement value    = new UserAchievement(text, level, progress);
                dictionary.Add(text, value);
            }
            Dictionary <int, UserTalent> dictionary2 = new Dictionary <int, UserTalent>();

            foreach (DataRow dataRow4 in table.Rows)
            {
                int        num2   = (int)dataRow4["talent_id"];
                int        state  = (int)dataRow4["talent_state"];
                UserTalent value2 = new UserTalent(num2, state);
                dictionary2.Add(num2, value2);
            }
            List <uint> list = new List <uint>();

            foreach (DataRow dataRow5 in dataTable3.Rows)
            {
                uint item = Convert.ToUInt32(dataRow5["room_id"]);
                list.Add(item);
            }
            List <uint> list2 = new List <uint>();

            foreach (DataRow dataRow6 in dataTable4.Rows)
            {
                uint item2 = Convert.ToUInt32(dataRow6["ignore_id"]);
                list2.Add(item2);
            }
            List <string> list3 = new List <string>();

            foreach (DataRow dataRow7 in dataTable5.Rows)
            {
                string item3 = dataRow7["tag"].ToString().Replace(" ", "");
                list3.Add(item3);
            }
            Subscription sub = null;

            if (dataRow2 != null)
            {
                sub = new Subscription((int)dataRow2["subscription_id"], (int)dataRow2["timestamp_activated"], (int)dataRow2["timestamp_expire"], (int)dataRow2["timestamp_lastgift"]);
            }
            Dictionary <uint, RoomBot> dictionary3 = new Dictionary <uint, RoomBot>();

            foreach (DataRow row2 in dataTable14.Rows)
            {
                RoomBot roomBot = BotManager.GenerateBotFromRow(row2);
                dictionary3.Add(roomBot.BotId, roomBot);
            }
            List <Badge> list4 = new List <Badge>();

            foreach (DataRow dataRow8 in dataTable6.Rows)
            {
                string code = (string)dataRow8["badge_id"];
                int    slot = (int)dataRow8["badge_slot"];
                list4.Add(new Badge(code, slot));
            }

            int miniMailCount = 0;

            try
            {
                DataRow Rowi;
                using (IQueryAdapter dbClient = CyberEnvironment.GetDatabaseManager().getQueryReactor())
                {
                    dbClient.setQuery("SELECT Count( IsReaded ) FROM xdrcms_minimail WHERE InBin = 0 AND IsReaded = 0 AND SenderId != " + Userid + " AND OwnerId = " + Userid);
                    Rowi = dbClient.getRow();
                }
                if (Rowi != null)
                {
                    // We are using aXDR CMS with MiniMail!
                    miniMailCount = int.Parse(Rowi[0].ToString());
                }
            }
            catch { }

            List <UserItem> list5 = new List <UserItem>();

            foreach (DataRow dataRow9 in dataTable7.Rows)
            {
                uint   id       = Convert.ToUInt32(dataRow9[0]);
                uint   baseItem = Convert.ToUInt32(dataRow9[3]);
                string extraData;
                if (!DBNull.Value.Equals(dataRow9[4]))
                {
                    extraData = (string)dataRow9[4];
                }
                else
                {
                    extraData = string.Empty;
                }
                uint   group    = Convert.ToUInt32(dataRow9["group_id"]);
                string songCode = (string)dataRow9["songcode"];
                list5.Add(new UserItem(id, baseItem, extraData, group, songCode));
            }
            List <AvatarEffect> list6 = new List <AvatarEffect>();

            foreach (DataRow dataRow10 in dataTable8.Rows)
            {
                int    effectId          = (int)dataRow10["effect_id"];
                int    totalDuration     = (int)dataRow10["total_duration"];
                bool   activated         = CyberEnvironment.EnumToBool((string)dataRow10["is_activated"]);
                double activateTimestamp = (double)dataRow10["activated_stamp"];
                list6.Add(new AvatarEffect(effectId, totalDuration, activated, activateTimestamp));
            }

            HashSet <uint> pollSuggested = new HashSet <uint>();

            foreach (DataRow Row in dataTable9.Rows)
            {
                uint pId = (uint)Row["poll_id"];
                pollSuggested.Add(pId);
            }

            Dictionary <uint, MessengerBuddy> dictionary4 = new Dictionary <uint, MessengerBuddy>();
            string arg_A3D_0 = (string)dataRow["username"];
            int    num3      = checked (dataTable10.Rows.Count - 700);

            if (num3 > 0)
            {
                using (IQueryAdapter queryreactor2 = CyberEnvironment.GetDatabaseManager().getQueryReactor())
                {
                    queryreactor2.runFastQuery(string.Concat(new object[]
                    {
                        "DELETE FROM messenger_friendships WHERE user_one_id=",
                        Userid,
                        " OR user_two_id=",
                        Userid,
                        " LIMIT ",
                        num3
                    }));
                    queryreactor2.setQuery(string.Concat(new object[]
                    {
                        "SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online FROM users JOIN messenger_friendships ON users.id = messenger_friendships.user_one_id WHERE messenger_friendships.user_two_id = ",
                        Userid,
                        " UNION ALL SELECT users.id,users.username,users.motto,users.look,users.last_online,users.hide_inroom,users.hide_online FROM users JOIN messenger_friendships ON users.id = messenger_friendships.user_two_id WHERE messenger_friendships.user_one_id = ",
                        Userid
                    }));
                    dataTable10 = queryreactor2.getTable();
                }
            }
            foreach (DataRow dataRow12 in dataTable10.Rows)
            {
                uint   num4           = Convert.ToUInt32(dataRow12["id"]);
                string pUsername      = (string)dataRow12["username"];
                string pLook          = (string)dataRow12["look"];
                string pMotto         = (string)dataRow12["motto"];
                int    pLastOnline    = Convert.ToInt32(dataRow12["last_online"]);
                bool   pAppearOffline = CyberEnvironment.EnumToBool(dataRow12["hide_online"].ToString());
                bool   pHideInroom    = CyberEnvironment.EnumToBool(dataRow12["hide_inroom"].ToString());
                if (num4 != Userid && !dictionary4.ContainsKey(num4))
                {
                    dictionary4.Add(num4, new MessengerBuddy(num4, pUsername, pLook, pMotto, pLastOnline, pAppearOffline, pHideInroom));
                }
            }
            Dictionary <uint, MessengerRequest> dictionary5 = new Dictionary <uint, MessengerRequest>();

            foreach (DataRow dataRow13 in dataTable11.Rows)
            {
                uint   num5       = Convert.ToUInt32(dataRow13["from_id"]);
                uint   num6       = Convert.ToUInt32(dataRow13["to_id"]);
                string pUsername2 = (string)dataRow13["username"];
                if (num5 != Userid)
                {
                    if (!dictionary5.ContainsKey(num5))
                    {
                        dictionary5.Add(num5, new MessengerRequest(Userid, num5, pUsername2));
                    }
                }
                else
                {
                    if (!dictionary5.ContainsKey(num6))
                    {
                        dictionary5.Add(num6, new MessengerRequest(Userid, num6, pUsername2));
                    }
                }
            }
            HashSet <RoomData> list8 = new HashSet <RoomData>();

            foreach (DataRow dataRow14 in dataTable12.Rows)
            {
                uint roomId = Convert.ToUInt32(dataRow14["id"]);
                list8.Add(CyberEnvironment.GetGame().GetRoomManager().FetchRoomData(roomId, dataRow14));
            }
            Dictionary <uint, Pet> dictionary6 = new Dictionary <uint, Pet>();

            foreach (DataRow dataRow15 in dataTable13.Rows)
            {
                using (IQueryAdapter queryreactor3 = CyberEnvironment.GetDatabaseManager().getQueryReactor())
                {
                    queryreactor3.setQuery("SELECT * FROM bots_petdata WHERE id=" + dataRow15[0] + " LIMIT 1");
                    DataRow row3 = queryreactor3.getRow();
                    if (row3 != null)
                    {
                        Pet pet = Catalog.GeneratePetFromRow(dataRow15, row3);
                        dictionary6.Add(pet.PetId, pet);
                    }
                }
            }
            Dictionary <uint, int> dictionary7 = new Dictionary <uint, int>();

            foreach (DataRow dataRow16 in table2.Rows)
            {
                uint key    = Convert.ToUInt32(dataRow16["quest_id"]);
                int  value3 = (int)dataRow16["progress"];
                if (dictionary7.ContainsKey(key))
                {
                    dictionary7.Remove(key);
                }
                dictionary7.Add(key, value3);
            }
            HashSet <GroupUser> list9 = new HashSet <GroupUser>();

            foreach (DataRow dataRow17 in dataTable.Rows)
            {
                list9.Add(new GroupUser(Userid, (uint)dataRow17[0], (int)Convert.ToInt16(dataRow17[1])));
            }
            Dictionary <int, Relationship> dictionary8 = new Dictionary <int, Relationship>();

            foreach (DataRow dataRow18 in dataTable15.Rows)
            {
                dictionary8.Add((int)dataRow18[0], new Relationship((int)dataRow18[0], (int)dataRow18[2], Convert.ToInt32(dataRow18[3].ToString())));
            }
            Habbo user = HabboFactory.GenerateHabbo(dataRow, row, list9);

            dataRow     = null;
            dataTable2  = null;
            dataTable3  = null;
            dataTable4  = null;
            dataTable5  = null;
            dataRow2    = null;
            dataTable6  = null;
            dataTable7  = null;
            dataTable8  = null;
            dataTable10 = null;
            dataTable11 = null;
            dataTable12 = null;
            dataTable13 = null;
            dataTable14 = null;
            dataTable15 = null;
            dataTable9  = null;
            errorCode   = 0;
            return(new UserData(Userid, dictionary, dictionary2, list, list2, list3, sub, list4, list5, list6, dictionary4, dictionary5, list8, dictionary6, dictionary7, user, dictionary3, dictionary8, pollSuggested, miniMailCount));
        }
Пример #29
0
        public static UserData GetUserData(int UserId)
        {
            DataRow   dUserInfo  = null;
            DataRow   UserInfo   = null;
            DataTable dRelations = null;
            DataTable dBadges    = null;

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `id`,`username`,`rank`,`motto`,`look`,`gender`,`last_online`,`credits`,`activity_points`,`home_room`,`block_newfriends`,`hide_online`,`hide_inroom`,`account_created`,`vip_points`,`machine_id`,`volume`,`chat_preference`, `focus_preference`, `pets_muted`,`bots_muted`,`advertising_report_blocked`,`last_change`,`event_points`,`ignore_invites`,`time_muted`,`allow_gifts`,`friend_bar_state`,`disable_forced_effects`,`allow_mimic`,`rank_vip`,`colour` FROM `users` WHERE `id` = @id LIMIT 1");
                dbClient.AddParameter("id", UserId);
                dUserInfo = dbClient.getRow();

                PlusEnvironment.GetGame().GetClientManager().LogClonesOut(Convert.ToInt32(UserId));

                if (dUserInfo == null)
                {
                    return(null);
                }

                if (PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId) != null)
                {
                    return(null);
                }


                dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + UserId + "' LIMIT 1");
                UserInfo = dbClient.getRow();
                if (UserInfo == null)
                {
                    dbClient.RunQuery("INSERT INTO `user_info` (`user_id`) VALUES ('" + UserId + "')");

                    dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + UserId + "' LIMIT 1");
                    UserInfo = dbClient.getRow();
                }

                dbClient.SetQuery("SELECT `id`,`target`,`type` FROM user_relationships WHERE user_id=@id");
                dbClient.AddParameter("id", UserId);
                dRelations = dbClient.getTable();

                dbClient.SetQuery("SELECT `badge_id`,`badge_slot` FROM user_badges WHERE `user_id`=@id");
                dbClient.AddParameter("id", UserId);
                dBadges = dbClient.getTable();
            }

            ConcurrentDictionary <string, UserAchievement> Achievements = new ConcurrentDictionary <string, UserAchievement>();
            List <int> FavouritedRooms = new List <int>();
            List <int> Ignores         = new List <int>();

            List <Badge> Badges = new List <Badge>();

            foreach (DataRow Row in dBadges.Rows)
            {
                Badges.Add(new Badge(Convert.ToString(Row["badge_id"]), Convert.ToInt32(Row["badge_slot"])));
            }

            Dictionary <int, MessengerBuddy>   Friends        = new Dictionary <int, MessengerBuddy>();
            Dictionary <int, MessengerRequest> FriendRequests = new Dictionary <int, MessengerRequest>();
            List <RoomData>       Rooms  = new List <RoomData>();
            Dictionary <int, int> Quests = new Dictionary <int, int>();

            Dictionary <int, Relationship> Relationships = new Dictionary <int, Relationship>();

            foreach (DataRow Row in dRelations.Rows)
            {
                if (!Relationships.ContainsKey(Convert.ToInt32(Row["id"])))
                {
                    Relationships.Add(Convert.ToInt32(Row["target"]), new Relationship(Convert.ToInt32(Row["id"]), Convert.ToInt32(Row["target"]), Convert.ToInt32(Row["type"].ToString())));
                }
            }

            Habbo user = HabboFactory.GenerateHabbo(dUserInfo, UserInfo);

            return(new UserData(UserId, Achievements, FavouritedRooms, Ignores, Badges, Friends, FriendRequests, Rooms, Quests, user, Relationships, null));
        }
Пример #30
0
        public void Parse(Player session, ClientPacket packet)
        {
            if (session?.GetHabbo() == null)
            {
                return;
            }

            // Run a quick check to see if we have any existing tickets.
            if (Program.GameContext.GetModerationManager().UserHasTickets(session.GetHabbo().Id))
            {
                var pendingTicket = Program.GameContext.GetModerationManager().GetTicketBySenderId(session.GetHabbo().Id);
                if (pendingTicket != null)
                {
                    session.SendPacket(new CallForHelpPendingCallsComposer(pendingTicket));
                    return;
                }
            }

            var chats = new List <string>();

            var message        = StringUtilities.Escape(packet.PopString().Trim());
            var category       = packet.PopInt();
            var reportedUserId = packet.PopInt();
            var type           = packet.PopInt();// Unsure on what this actually is.

            var reportedUser = HabboFactory.GetHabboById(reportedUserId);

            if (reportedUser == null)
            {
                // User doesn't exist.
                return;
            }

            var messagecount = packet.PopInt();

            for (var i = 0; i < messagecount; i++)
            {
                packet.PopInt();
                chats.Add(packet.PopString());
            }

            var ticket = new ModerationTicket(1, type, category, UnixUtilities.GetNow(), 1, session.GetHabbo(), reportedUser, message, session.GetHabbo().CurrentRoom, chats);

            if (!Program.GameContext.GetModerationManager().TryAddTicket(ticket))
            {
                return;
            }

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                // TODO: Come back to this.

                /*dbClient.SetQuery("INSERT INTO `moderation_tickets` (`score`,`type`,`status`,`sender_id`,`reported_id`,`moderator_id`,`message`,`room_id`,`room_name`,`timestamp`) VALUES (1, '" + Category + "', 'open', '" + Session.GetHabbo().Id + "', '" + ReportedUserId + "', '0', @message, '0', '', '" + UnixTimestamp.GetNow() + "')");
                 * dbClient.AddParameter("message", Message);
                 * dbClient.RunQuery();*/

                dbClient.RunQuery("UPDATE `user_info` SET `cfhs` = `cfhs` + '1' WHERE `user_id` = '" + session.GetHabbo().Id + "' LIMIT 1");
            }

            Program.GameContext.PlayerController.ModAlert("A new support ticket has been submitted!");
            Program.GameContext.PlayerController.SendPacket(new ModeratorSupportTicketComposer(session.GetHabbo().Id, ticket), "mod_tool");
        }