Exemple #1
0
        public bool IncrementAndCheckFlood(out int MuteTime)
        {
            MuteTime = 0;

            ChatSpamCount++;
            if (ChatSpamTicks == -1)
            {
                ChatSpamTicks = 8;
            }
            else if (ChatSpamCount >= 6)
            {
                if (GetClient().GetHabbo().GetPermissions().HasRight("events_staff"))
                {
                    MuteTime = 3;
                }
                else if (GetClient().GetHabbo().GetPermissions().HasRight("gold_vip"))
                {
                    MuteTime = 7;
                }
                else if (GetClient().GetHabbo().GetPermissions().HasRight("silver_vip"))
                {
                    MuteTime = 10;
                }
                else
                {
                    MuteTime = 20;
                }

                GetClient().GetHabbo().FloodTime = UnixUtilities.GetNow() + MuteTime;

                ChatSpamCount = 0;
                return(true);
            }
            return(false);
        }
Exemple #2
0
        public ModeratorUserChatlogComposer(Habbo habbo, List <KeyValuePair <RoomData, List <ChatlogEntry> > > chatlogs)
            : base(ServerPacketHeader.ModeratorUserChatlogMessageComposer)
        {
            WriteInteger(habbo.Id);
            WriteString(habbo.Username);

            WriteInteger(chatlogs.Count); // Room Visits Count
            foreach (var Chatlog in chatlogs)
            {
                WriteByte(1);
                WriteShort(2);//Count
                WriteString("roomName");
                WriteByte(2);
                WriteString(Chatlog.Key.Name); // room name
                WriteString("roomId");
                WriteByte(1);
                WriteInteger(Chatlog.Key.Id);

                WriteShort(Chatlog.Value.Count); // Chatlogs Count
                foreach (var Entry in Chatlog.Value)
                {
                    var Username = "******";
                    if (Entry.PlayerNullable() != null)
                    {
                        Username = Entry.PlayerNullable().Username;
                    }

                    WriteString(UnixUtilities.FromUnixTimestamp(Entry.Timestamp).ToShortTimeString());
                    WriteInteger(Entry.PlayerId);                                                                          // UserId of message
                    WriteString(Username);                                                                                 // Username of message
                    WriteString(!string.IsNullOrEmpty(Entry.Message) ? Entry.Message : "** user sent a blank message **"); // Message
                    WriteBoolean(habbo.Id == Entry.PlayerId);
                }
            }
        }
 public ModeratorSupportTicketComposer(int Id, ModerationTicket Ticket)
     : base(ServerPacketHeader.ModeratorSupportTicketMessageComposer)
 {
     WriteInteger(Ticket.Id);                                                                                             // Id
     WriteInteger(Ticket.GetStatus(Id));                                                                                  // Tab ID
     WriteInteger(Ticket.Type);                                                                                           // Type
     WriteInteger(Ticket.Category);                                                                                       // Category
     WriteInteger(Convert.ToInt32((DateTime.Now - UnixUtilities.FromUnixTimestamp(Ticket.Timestamp)).TotalMilliseconds)); // This should fix the overflow?
     WriteInteger(Ticket.Priority);                                                                                       // Priority
     WriteInteger(0);                                                                                                     //??
     WriteInteger(Ticket.Sender == null ? 0 : Ticket.Sender.Id);                                                          // Sender ID
     //base.WriteInteger(1);
     WriteString(Ticket.Sender == null ? string.Empty : Ticket.Sender.Username);                                          // Sender Name
     WriteInteger(Ticket.Reported == null ? 0 : Ticket.Reported.Id);                                                      // Reported ID
     WriteString(Ticket.Reported == null ? string.Empty : Ticket.Reported.Username);                                      // Reported Name
     WriteInteger(Ticket.Moderator == null ? 0 : Ticket.Moderator.Id);                                                    // Moderator ID
     WriteString(Ticket.Moderator == null ? string.Empty : Ticket.Moderator.Username);                                    // Mod Name
     WriteString(Ticket.Issue);                                                                                           // Issue
     WriteInteger(Ticket.Room == null ? 0 : Ticket.Room.Id);                                                              // Room Id
     WriteInteger(0);
     {
         // push String
         // push Integer
         // push Integer
     }
 }
Exemple #4
0
        public bool IsBanned(int UserId)
        {
            if (!_bans.ContainsKey(UserId))
            {
                return(false);
            }

            var BanTime = _bans[UserId] - UnixUtilities.GetNow();

            if (BanTime <= 0)
            {
                double time;
                _bans.TryRemove(UserId, out time);

                using (var dbClient = Program.DatabaseManager.GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `room_bans` WHERE `room_id` = @rid AND `user_id` = @uid;");
                    dbClient.AddParameter("rid", _instance.Id);
                    dbClient.AddParameter("uid", UserId);
                    dbClient.RunQuery();
                }
                return(false);
            }

            return(true);
        }
        public ProfileInformationComposer(Habbo habbo, Player session, List <Group> groups, int friendCount)
            : base(ServerPacketHeader.ProfileInformationMessageComposer)
        {
            var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(habbo.AccountCreated);

            WriteInteger(habbo.Id);
            WriteString(habbo.Username);
            WriteString(habbo.Look);
            WriteString(habbo.Motto);
            WriteString(origin.ToString("dd/MM/yyyy"));
            WriteInteger(habbo.GetStats().AchievementPoints);
            WriteInteger(friendCount);                                                                                                                                                    // Friend Count
            WriteBoolean(habbo.Id != session.GetHabbo().Id&& session.GetHabbo().GetMessenger().FriendshipExists(habbo.Id));                                                               //  Is friend
            WriteBoolean(habbo.Id != session.GetHabbo().Id&& !session.GetHabbo().GetMessenger().FriendshipExists(habbo.Id) && session.GetHabbo().GetMessenger().RequestExists(habbo.Id)); // Sent friend request
            WriteBoolean(Program.GameContext.PlayerController.GetClientByUserId(habbo.Id) != null);

            WriteInteger(groups.Count);
            foreach (var group in groups)
            {
                WriteInteger(group.Id);
                WriteString(group.Name);
                WriteString(group.Badge);
                WriteString(Program.GameContext.GetGroupManager().GetColourCode(group.Colour1, true));
                WriteString(Program.GameContext.GetGroupManager().GetColourCode(group.Colour2, false));
                WriteBoolean(habbo.GetStats().FavouriteGroupId == group.Id); // todo favs
                WriteInteger(0);                                             //what the f**k
                WriteBoolean(group != null ? group.ForumEnabled : true);     //HabboTalk
            }

            WriteInteger(Convert.ToInt32(UnixUtilities.GetNow() - habbo.LastOnline)); // Last online
            WriteBoolean(true);                                                       // Show the profile
        }
Exemple #6
0
        public void Ban(RoomUser Avatar, double Time)
        {
            if (Avatar == null || _instance.CheckRights(Avatar.GetClient(), true) || IsBanned(Avatar.UserId))
            {
                return;
            }

            var BanTime = UnixUtilities.GetNow() + Time;

            if (!_bans.TryAdd(Avatar.UserId, BanTime))
            {
                _bans[Avatar.UserId] = BanTime;
            }

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("REPLACE INTO `room_bans` (`user_id`,`room_id`,`expire`) VALUES (@uid, @rid, @expire);");
                dbClient.AddParameter("rid", _instance.Id);
                dbClient.AddParameter("uid", Avatar.UserId);
                dbClient.AddParameter("expire", BanTime);
                dbClient.RunQuery();
            }

            _instance.GetRoomUserManager().RemoveUserFromRoom(Avatar.GetClient(), true, true);
        }
        public ModeratorTicketChatlogComposer(ModerationTicket ticket, RoomData roomData, double timestamp)
            : base(ServerPacketHeader.ModeratorTicketChatlogMessageComposer)
        {
            WriteInteger(ticket.Id);
            WriteInteger(ticket.Sender != null ? ticket.Sender.Id : 0);
            WriteInteger(ticket.Reported != null ? ticket.Reported.Id : 0);
            WriteInteger(roomData.Id);

            WriteByte(1);
            WriteShort(2);//Count
            WriteString("roomName");
            WriteByte(2);
            WriteString(roomData.Name);
            WriteString("roomId");
            WriteByte(1);
            WriteInteger(roomData.Id);

            WriteShort(ticket.ReportedChats.Count);
            foreach (var Chat in ticket.ReportedChats)
            {
                WriteString(UnixUtilities.FromUnixTimestamp(timestamp).ToShortTimeString());
                WriteInteger(ticket.Id);
                WriteString(ticket.Reported != null ? ticket.Reported.Username : "******");
                WriteString(Chat);
                WriteBoolean(false);
            }
        }
Exemple #8
0
 public PetInformationComposer(Habbo Habbo)
     : base(ServerPacketHeader.PetInformationMessageComposer)
 {
     WriteInteger(Habbo.Id);
     WriteString(Habbo.Username);
     WriteInteger(Habbo.Rank);
     WriteInteger(10);
     WriteInteger(0);
     WriteInteger(0);
     WriteInteger(100);
     WriteInteger(100);
     WriteInteger(100);
     WriteInteger(100);
     WriteInteger(Habbo.GetStats().Respect);
     WriteInteger(Habbo.Id);
     WriteInteger(Convert.ToInt32(Math.Floor((UnixUtilities.GetNow() - Habbo.AccountCreated) / 86400))); //How?
     WriteString(Habbo.Username);
     WriteInteger(1);                                                                                    //3 on hab
     WriteBoolean(false);
     WriteBoolean(false);
     WriteInteger(0); //5 on hab
     WriteInteger(0); // Anyone can ride horse
     WriteInteger(0);
     WriteInteger(0); //512 on hab
     WriteInteger(0); //1536
     WriteInteger(0); //2560
     WriteInteger(0); //3584
     WriteInteger(0);
     WriteString("");
     WriteBoolean(false);
     WriteInteger(-1);//255 on hab
     WriteInteger(-1);
     WriteInteger(-1);
     WriteBoolean(false);
 }
Exemple #9
0
        public void BanzaiStart()
        {
            if (IsBanzaiActive)
            {
                return;
            }

            floorMap    = new byte[_room.GetGameMap().Model.MapSizeY, _room.GetGameMap().Model.MapSizeX];
            field       = new GameField(floorMap, true);
            timestarted = UnixUtilities.GetNow();
            _room.GetGameManager().LockGates();
            for (var i = 1; i < 5; i++)
            {
                _room.GetGameManager().Points[i] = 0;
            }

            foreach (var tile in _banzaiTiles.Values)
            {
                tile.ExtraData = "1";
                tile.value     = 0;
                tile.team      = Team.None;
                tile.UpdateState();
            }

            ResetTiles();
            IsBanzaiActive = true;

            _room.GetWired().TriggerEvent(WiredBoxType.TriggerGameStarts, null);

            foreach (var user in _room.GetRoomUserManager().GetRoomUsers())
            {
                user.LockedTilesCount = 0;
            }
        }
        public ModeratorRoomChatlogComposer(Room room, ICollection <ChatlogEntry> chats)
            : base(ServerPacketHeader.ModeratorRoomChatlogMessageComposer)
        {
            WriteByte(1);
            WriteShort(2);//Count
            WriteString("roomName");
            WriteByte(2);
            WriteString(room.Name);
            WriteString("roomId");
            WriteByte(1);
            WriteInteger(room.Id);

            WriteShort(chats.Count);
            foreach (var Entry in chats)
            {
                var Username = "******";
                if (Entry.PlayerNullable() != null)
                {
                    Username = Entry.PlayerNullable().Username;
                }

                WriteString(UnixUtilities.FromUnixTimestamp(Entry.Timestamp).ToShortTimeString());                     // time?
                WriteInteger(Entry.PlayerId);                                                                          // User Id
                WriteString(Username);                                                                                 // Username
                WriteString(!string.IsNullOrEmpty(Entry.Message) ? Entry.Message : "** user sent a blank message **"); // Message
                WriteBoolean(false);                                                                                   //TODO, AI's?
            }
        }
Exemple #11
0
 public RoomPromotion(string name, string description, int categoryId)
 {
     Name             = name;
     Description      = description;
     TimestampStarted = UnixUtilities.GetNow();
     TimestampExpires = UnixUtilities.GetNow() + Convert.ToInt32(Program.SettingsManager.TryGetValue("room.promotion.lifespan")) * 60;
     CategoryId       = categoryId;
 }
Exemple #12
0
        public void ChangeName(string Username)
        {
            LastNameChange = UnixUtilities.GetNow();
            this.Username  = Username;

            SaveKey("username", Username);
            SaveKey("last_change", LastNameChange.ToString());
        }
Exemple #13
0
 public CallForHelpPendingCallsComposer(ModerationTicket ticket)
     : base(ServerPacketHeader.CallForHelpPendingCallsMessageComposer)
 {
     WriteInteger(1);// Count for whatever reason?
     {
         WriteString(ticket.Id.ToString());
         WriteString(UnixUtilities.FromUnixTimestamp(ticket.Timestamp).ToShortTimeString());// "11-02-2017 04:07:05";
         WriteString(ticket.Issue);
     }
 }
Exemple #14
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);
        }
Exemple #15
0
 public void LogCommand(int UserId, string Data, string MachineId)
 {
     using (var dbClient = Program.DatabaseManager.GetQueryReactor())
     {
         dbClient.SetQuery("INSERT INTO `logs_client_staff` (`user_id`,`data_string`,`machine_id`, `timestamp`) VALUES (@UserId,@Data,@MachineId,@Timestamp)");
         dbClient.AddParameter("UserId", UserId);
         dbClient.AddParameter("Data", Data);
         dbClient.AddParameter("MachineId", MachineId);
         dbClient.AddParameter("Timestamp", UnixUtilities.GetNow());
         dbClient.RunQuery();
     }
 }
        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);
            }
        }
        public ModeratorUserRoomVisitsComposer(Habbo Data, Dictionary <double, RoomData> Visits)
            : base(ServerPacketHeader.ModeratorUserRoomVisitsMessageComposer)
        {
            WriteInteger(Data.Id);
            WriteString(Data.Username);
            WriteInteger(Visits.Count);

            foreach (var Visit in Visits)
            {
                WriteInteger(Visit.Value.Id);
                WriteString(Visit.Value.Name);
                WriteInteger(UnixUtilities.FromUnixTimestamp(Visit.Key).Hour);
                WriteInteger(UnixUtilities.FromUnixTimestamp(Visit.Key).Minute);
            }
        }
Exemple #18
0
        public bool Activate()
        {
            var TsNow = UnixUtilities.GetNow();

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `user_effects` SET `is_activated` = '1', `activated_stamp` = @ts WHERE `id` = @id");
                dbClient.AddParameter("ts", TsNow);
                dbClient.AddParameter("id", Id);
                dbClient.RunQuery();

                Activated          = true;
                TimestampActivated = TsNow;
                return(true);
            }
        }
        public bool Execute(params object[] Params)
        {
            if (Params.Length != 1)
            {
                return(false);
            }

            var Player = (Habbo)Params[0];

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

            var User = Instance.GetRoomUserManager().GetRoomUserByHabbo(Player.Id);

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

            if (Player.GetPermissions().HasRight("mod_tool") || Instance.OwnerId == Player.Id)
            {
                Player.GetClient().SendPacket(new WhisperComposer(User.VirtualId, "Wired Mute Exception: Unmutable Player", 0, 0));
                return(false);
            }

            var Time = StringData != null?int.Parse(StringData.Split(';')[0]) : 0;

            var Message = StringData != null?StringData.Split(';')[1] : "No message!";

            if (Time > 0)
            {
                Player.GetClient().SendPacket(new WhisperComposer(User.VirtualId, "Wired Mute: Muted for " + Time + "! Message: " + Message, 0, 0));
                if (!Instance.MutedUsers.ContainsKey(Player.Id))
                {
                    Instance.MutedUsers.Add(Player.Id, UnixUtilities.GetNow() + Time * 60);
                }
                else
                {
                    Instance.MutedUsers.Remove(Player.Id);
                    Instance.MutedUsers.Add(Player.Id, UnixUtilities.GetNow() + Time * 60);
                }
            }

            return(true);
        }
Exemple #20
0
        public void ReCacheBans()
        {
            if (_bans.Count > 0)
            {
                _bans.Clear();
            }

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                DataTable GetBans = null;
                dbClient.SetQuery("SELECT `bantype`,`value`,`reason`,`expire` FROM `bans` WHERE `bantype` = 'machine' OR `bantype` = 'user'");
                GetBans = dbClient.GetTable();

                if (GetBans != null)
                {
                    foreach (DataRow dRow in GetBans.Rows)
                    {
                        var value   = Convert.ToString(dRow["value"]);
                        var reason  = Convert.ToString(dRow["reason"]);
                        var expires = (double)dRow["expire"];
                        var type    = Convert.ToString(dRow["bantype"]);

                        var Ban = new ModerationBan(BanTypeUtility.GetModerationBanType(type), value, reason, expires);
                        if (Ban != null)
                        {
                            if (expires > UnixUtilities.GetNow())
                            {
                                if (!_bans.ContainsKey(value))
                                {
                                    _bans.Add(value, Ban);
                                }
                            }
                            else
                            {
                                dbClient.SetQuery("DELETE FROM `bans` WHERE `bantype` = '" + BanTypeUtility.FromModerationBanType(Ban.Type) + "' AND `value` = @Key LIMIT 1");
                                dbClient.AddParameter("Key", value);
                                dbClient.RunQuery();
                            }
                        }
                    }
                }
            }

            Logger.Trace("Cached " + _bans.Count + " username and machine bans.");
        }
Exemple #21
0
        public bool CheckMute(Player session)
        {
            if (MutedUsers.ContainsKey(session.GetHabbo().Id))
            {
                if (MutedUsers[session.GetHabbo().Id] < UnixUtilities.GetNow())
                {
                    MutedUsers.Remove(session.GetHabbo().Id);
                }
                else
                {
                    return(true);
                }
            }

            if (session.GetHabbo().TimeMuted > 0 || RoomMuted && session.GetHabbo().Username != OwnerName)
            {
                return(true);
            }

            return(false);
        }
        public void OnTrigger(Player Session, Item Item, int Request, bool HasRights)
        {
            if (Item == null || Item.GetRoom() == null || Session == null || Session.GetHabbo() == null)
            {
                return;
            }

            var User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            User.LastInteraction = UnixUtilities.GetNow();

            // Alright. But is this user in the right position?
            if (User.Coordinate == Item.Coordinate || User.Coordinate == Item.SquareInFront)
            {
                // Fine. But is this tele even free?
                if (Item.InteractingUser != 0)
                {
                    return;
                }

                if (!User.CanWalk || Session.GetHabbo().IsTeleporting || Session.GetHabbo().TeleporterId != 0 ||
                    User.LastInteraction + 2 - UnixUtilities.GetNow() < 0)
                {
                    return;
                }

                User.TeleDelay = 2;

                Item.InteractingUser = User.GetClient().GetHabbo().Id;
            }
            else if (User.CanWalk)
            {
                User.MoveTo(Item.SquareInFront);
            }
        }
Exemple #23
0
        public void Parse(Player session, ClientPacket packet)
        {
            var signId = packet.PopInt();

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

            var user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (user == null)
            {
                return;
            }


            user.UnIdle();

            user.SetStatus("sign", Convert.ToString(signId));
            user.UpdateNeeded = true;
            user.SignTime     = UnixUtilities.GetNow() + 5;
        }
Exemple #24
0
        public bool TryCreateGroup(Habbo player, string name, string description, int roomId, string badge, int colour1, int colour2, out Group group)
        {
            group = new Group(0, name, description, badge, roomId, player.Id, (int)UnixUtilities.GetNow(), 0, colour1, colour2, 0, false);
            if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(badge))
            {
                return(false);
            }

            using (var dbClient = Program.DatabaseManager.GetQueryReactor())
            {
                dbClient.SetQuery("INSERT INTO `groups` (`name`, `desc`, `badge`, `owner_id`, `created`, `room_id`, `state`, `colour1`, `colour2`, `admindeco`) VALUES (@name, @desc, @badge, @owner, UNIX_TIMESTAMP(), @room, '0', @colour1, @colour2, '0')");
                dbClient.AddParameter("name", group.Name);
                dbClient.AddParameter("desc", group.Description);
                dbClient.AddParameter("owner", group.CreatorId);
                dbClient.AddParameter("badge", group.Badge);
                dbClient.AddParameter("room", group.RoomId);
                dbClient.AddParameter("colour1", group.Colour1);
                dbClient.AddParameter("colour2", group.Colour2);
                group.Id = Convert.ToInt32(dbClient.InsertQuery());

                group.AddMember(player.Id);
                group.MakeAdmin(player.Id);

                if (!_groups.TryAdd(group.Id, group))
                {
                    return(false);
                }

                dbClient.SetQuery("UPDATE `rooms` SET `group_id` = @gid WHERE `id` = @rid LIMIT 1");
                dbClient.AddParameter("gid", group.Id);
                dbClient.AddParameter("rid", group.RoomId);
                dbClient.RunQuery();

                dbClient.RunQuery("DELETE FROM `room_rights` WHERE `room_id` = '" + roomId + "'");
            }
            return(true);
        }
        public ModeratorUserInfoComposer(DataRow User, DataRow Info)
            : base(ServerPacketHeader.ModeratorUserInfoMessageComposer)
        {
            var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(Info["trading_locked"]));


            WriteInteger(User != null ? Convert.ToInt32(User["id"]) : 0);
            WriteString(User != null ? Convert.ToString(User["username"]) : "Unknown");
            WriteString(User != null ? Convert.ToString(User["look"]) : "Unknown");
            WriteInteger(User != null ? Convert.ToInt32(Math.Ceiling((UnixUtilities.GetNow() - Convert.ToDouble(User["account_created"])) / 60)) : 0);
            WriteInteger(User != null ? Convert.ToInt32(Math.Ceiling((UnixUtilities.GetNow() - Convert.ToDouble(User["last_online"])) / 60)) : 0);
            WriteBoolean(User != null ? Program.GameContext.PlayerController.GetClientByUserId(Convert.ToInt32(User["id"])) != null : false);
            WriteInteger(Info != null ? Convert.ToInt32(Info["cfhs"]) : 0);
            WriteInteger(Info != null ? Convert.ToInt32(Info["cfhs_abusive"]) : 0);
            WriteInteger(Info != null ? Convert.ToInt32(Info["cautions"]) : 0);
            WriteInteger(Info != null ? Convert.ToInt32(Info["bans"]) : 0);
            WriteInteger(Info != null ? Convert.ToInt32(Info["trading_locks_count"]) : 0);                             //Trading lock counts
            WriteString(Convert.ToDouble(Info["trading_locked"]) != 0 ? origin.ToString("dd/MM/yyyy HH:mm:ss") : "0"); //Trading lock
            WriteString("");                                                                                           //Purchases
            WriteInteger(0);                                                                                           //Itendity information tool
            WriteInteger(0);                                                                                           //Id bans.
            WriteString(User != null ? Convert.ToString(User["mail"]) : "Unknown");
            WriteString("");                                                                                           //user_classification
        }
Exemple #26
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 + "'!");
        }
        public void Parse(Player session, ClientPacket packet)
        {
            //0 = sent, 1 = blocked, 2 = no chat, 3 = already reported.
            if (session == null)
            {
                return;
            }

            var userId = packet.PopInt();

            if (userId == session.GetHabbo().Id)//Hax
            {
                return;
            }

            if (session.GetHabbo().AdvertisingReportedBlocked)
            {
                session.SendPacket(new SubmitBullyReportComposer(1));//This user is blocked from reporting.
                return;
            }

            var client = Program.GameContext.PlayerController.GetClientByUserId(Convert.ToInt32(userId));

            if (client == null)
            {
                session.SendPacket(new SubmitBullyReportComposer(0));//Just say it's sent, the user isn't found.
                return;
            }

            if (session.GetHabbo().LastAdvertiseReport > UnixUtilities.GetNow())
            {
                session.SendNotification("Reports can only be sent per 5 minutes!");
                return;
            }

            if (client.GetHabbo().GetPermissions().HasRight("mod_tool"))//Reporting staff, nope!
            {
                session.SendNotification("Sorry, you cannot report staff members via this tool.");
                return;
            }

            //This user hasn't even said a word, nope!
            if (!client.GetHabbo().HasSpoken)
            {
                session.SendPacket(new SubmitBullyReportComposer(2));
                return;
            }

            //Already reported, nope.
            if (client.GetHabbo().AdvertisingReported&& session.GetHabbo().Rank < 2)
            {
                session.SendPacket(new SubmitBullyReportComposer(3));
                return;
            }

            if (session.GetHabbo().Rank <= 1)
            {
                session.GetHabbo().LastAdvertiseReport = UnixUtilities.GetNow() + 300;
            }
            else
            {
                session.GetHabbo().LastAdvertiseReport = UnixUtilities.GetNow();
            }

            client.GetHabbo().AdvertisingReported = true;
            session.SendPacket(new SubmitBullyReportComposer(0));
            //Program.Game.GameClientManager.ModAlert("New advertising report! " + Client.GetHabbo().Username + " has been reported for advertising by " + Session.GetHabbo().Username +".");
            Program.GameContext.PlayerController.DoAdvertisingReport(session, client);
        }
Exemple #28
0
        public void BanzaiEnd(bool triggeredByUser = false)
        {
            IsBanzaiActive = false;
            _room.GetGameManager().StopGame();
            floorMap = null;

            if (!triggeredByUser)
            {
                _room.GetWired().TriggerEvent(WiredBoxType.TriggerGameEnds, null);
            }

            var winners = _room.GetGameManager().GetWinningTeam();

            _room.GetGameManager().UnlockGates();
            foreach (var tile in _banzaiTiles.Values)
            {
                if (tile.team == winners)
                {
                    tile.interactionCount       = 0;
                    tile.interactionCountHelper = 0;
                    tile.UpdateNeeded           = true;
                }
                else if (tile.team == Team.None)
                {
                    tile.ExtraData = "0";
                    tile.UpdateState();
                }
            }

            if (winners != Team.None)
            {
                var Winners = _room.GetRoomUserManager().GetRoomUsers();

                foreach (var User in Winners.ToList())
                {
                    if (User.Team != Team.None)
                    {
                        if (UnixUtilities.GetNow() - timestarted > 5)
                        {
                            Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallTilesLocked", User.LockedTilesCount);
                            Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallPlayer", 1);
                        }
                    }
                    if (winners == Team.Blue)
                    {
                        if (User.CurrentEffect == 35)
                        {
                            if (UnixUtilities.GetNow() - timestarted > 5)
                            {
                                Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1);
                            }

                            _room.SendPacket(new ActionComposer(User.VirtualId, 1));
                        }
                    }
                    else if (winners == Team.Red)
                    {
                        if (User.CurrentEffect == 33)
                        {
                            if (UnixUtilities.GetNow() - timestarted > 5)
                            {
                                Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1);
                            }

                            _room.SendPacket(new ActionComposer(User.VirtualId, 1));
                        }
                    }
                    else if (winners == Team.Green)
                    {
                        if (User.CurrentEffect == 34)
                        {
                            if (UnixUtilities.GetNow() - timestarted > 5)
                            {
                                Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1);
                            }

                            _room.SendPacket(new ActionComposer(User.VirtualId, 1));
                        }
                    }
                    else if (winners == Team.Yellow)
                    {
                        if (User.CurrentEffect == 36)
                        {
                            if (UnixUtilities.GetNow() - timestarted > 5)
                            {
                                Program.GameContext.GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_BattleBallWinner", 1);
                            }

                            _room.SendPacket(new ActionComposer(User.VirtualId, 1));
                        }
                    }
                }
                if (field != null)
                {
                    field.Dispose();
                }
            }
        }
        public void Parse(Player session, ClientPacket packet)
        {
            if (session == null || session.GetHabbo() == null)
            {
                return;
            }

            var room = session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            if (session.GetHabbo().InRoom)
            {
                if (!Program.GameContext.GetRoomManager().TryGetRoom(session.GetHabbo().CurrentRoomId, out var oldRoom))
                {
                    return;
                }

                if (oldRoom.GetRoomUserManager() != null)
                {
                    oldRoom.GetRoomUserManager().RemoveUserFromRoom(session, false);
                }
            }

            if (!room.GetRoomUserManager().AddAvatarToRoom(session))
            {
                room.GetRoomUserManager().RemoveUserFromRoom(session, false);
                return;//TODO: Remove?
            }

            room.SendObjects(session);

            if (session.GetHabbo().GetMessenger() != null)
            {
                session.GetHabbo().GetMessenger().OnStatusChanged(true);
            }

            if (session.GetHabbo().GetStats().QuestId > 0)
            {
                Program.GameContext.GetQuestManager().QuestReminder(session, session.GetHabbo().GetStats().QuestId);
            }

            session.SendPacket(new RoomEntryInfoComposer(room.RoomId, room.CheckRights(session, true)));
            session.SendPacket(new RoomVisualizationSettingsComposer(room.WallThickness, room.FloorThickness, room.Hidewall.ToString() == "1"));

            var user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Username);

            if (user != null && session.GetHabbo().PetId == 0)
            {
                room.SendPacket(new UserChangeComposer(user, false));
            }

            session.SendPacket(new RoomEventComposer(room, room.Promotion));

            if (room.GetWired() != null)
            {
                room.GetWired().TriggerEvent(WiredBoxType.TriggerRoomEnter, session.GetHabbo());
            }

            if (UnixUtilities.GetNow() < session.GetHabbo().FloodTime&& session.GetHabbo().FloodTime != 0)
            {
                session.SendPacket(new FloodControlComposer((int)session.GetHabbo().FloodTime - (int)UnixUtilities.GetNow()));
            }
        }
Exemple #30
0
        public void Parse(Player session, ClientPacket packet)
        {
            if (session == null || session.GetHabbo() == null || !session.GetHabbo().InRoom)
            {
                return;
            }

            var room = session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            var user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (user == null)
            {
                return;
            }

            var message = StringUtilities.Escape(packet.PopString());

            if (message.Length > 100)
            {
                message = message.Substring(0, 100);
            }

            var colour = packet.PopInt();

            if (!Program.GameContext.GetChatManager().GetChatStyles().TryGetStyle(colour, out var style) || style.RequiredRight.Length > 0 && !session.GetHabbo().GetPermissions().HasRight(style.RequiredRight))
            {
                colour = 0;
            }

            user.UnIdle();

            if (UnixUtilities.GetNow() < session.GetHabbo().FloodTime&& session.GetHabbo().FloodTime != 0)
            {
                return;
            }

            if (session.GetHabbo().TimeMuted > 0)
            {
                session.SendPacket(new MutedComposer(session.GetHabbo().TimeMuted));
                return;
            }

            if (!session.GetHabbo().GetPermissions().HasRight("room_ignore_mute") && room.CheckMute(session))
            {
                session.SendWhisper("Oops, you're currently muted.");
                return;
            }

            user.LastBubble = session.GetHabbo().CustomBubbleId == 0 ? colour : session.GetHabbo().CustomBubbleId;

            if (!session.GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                if (user.IncrementAndCheckFlood(out var muteTime))
                {
                    session.SendPacket(new FloodControlComposer(muteTime));
                    return;
                }
            }

            Program.GameContext.GetChatManager().GetLogs().StoreChatlog(new ChatlogEntry(session.GetHabbo().Id, room.Id, message, UnixUtilities.GetNow(), session.GetHabbo(), room));

            if (message.StartsWith(":", StringComparison.CurrentCulture) && Program.GameContext.GetChatManager().GetCommands().Parse(session, message))
            {
                return;
            }

            if (Program.GameContext.GetChatManager().GetFilter().CheckBannedWords(message))
            {
                session.GetHabbo().BannedPhraseCount++;
                if (session.GetHabbo().BannedPhraseCount >= Convert.ToInt32(Program.SettingsManager.TryGetValue("room.chat.filter.banned_phrases.chances")))
                {
                    Program.GameContext.GetModerationManager().BanUser("System", ModerationBanType.Username, session.GetHabbo().Username, "Spamming banned phrases (" + message + ")", UnixUtilities.GetNow() + 78892200);
                    session.Disconnect();
                    return;
                }

                session.SendPacket(new ChatComposer(user.VirtualId, message, 0, colour));
                return;
            }

            if (!session.GetHabbo().GetPermissions().HasRight("word_filter_override"))
            {
                message = Program.GameContext.GetChatManager().GetFilter().CheckMessage(message);
            }


            Program.GameContext.GetQuestManager().ProgressUserQuest(session, QuestType.SocialChat);

            user.OnChat(user.LastBubble, message, false);
        }