Exemple #1
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username);

            if (User == null)
            {
                return;
            }

            var  Items    = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y);
            bool HasChair = Items.ToList().Where(x => x != null && x.GetBaseItem().IsSeat).Count() > 0;
            bool HasBed   = Items.ToList().Where(x => x != null && x.GetBaseItem().IsBed()).Count() > 0;

            if (HasChair || HasBed)
            {
                return;
            }

            if (User.isSitting)
            {
                User.Z += 0.35;
                User.RemoveStatus("sit");
                User.isSitting    = false;
                User.UpdateNeeded = true;
            }
            else if (User.isLying)
            {
                User.Z += 0.35;
                User.RemoveStatus("lay");
                User.isLying      = false;
                User.UpdateNeeded = true;
            }
        }
Exemple #2
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null)
            {
                return;
            }

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

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null || !User.CanWalk)
            {
                return;
            }

            int MoveX = Packet.PopInt();
            int MoveY = Packet.PopInt();

            if (User.RidingHorse)
            {
                RoomUser Horse = Room.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID);
                if (Horse != null)
                {
                    Horse.MoveTo(MoveX, MoveY);
                }
            }

            if (User.isLying)
            {
                User.Z += 0.35;
                User.RemoveStatus("lay");
                User.isLying      = false;
                User.UpdateNeeded = true;
            }

            if (User.isSitting)
            {
                User.Z += 0.35;
                User.RemoveStatus("sit");
                User.isSitting    = false;
                User.UpdateNeeded = true;
            }

            User.MoveTo(MoveX, MoveY);
        }
Exemple #3
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (Session.GetHabbo() == null)
            {
                return;
            }

            int UserId = Packet.PopInt();

            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room == null)
            {
                return;
            }

            if (room == null || !room.CheckRights(Session, true))
            {
                return;
            }

            if (room.UsersWithRights.Contains(UserId))
            {
                Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("user.giverights.error", Session.Langue));
            }
            else
            {
                Habbo Userright = ButterflyEnvironment.GetHabboById(UserId);
                if (Userright == null)
                {
                    return;
                }

                room.UsersWithRights.Add(UserId);

                using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                    queryreactor.RunQuery("INSERT INTO room_rights (room_id,user_id) VALUES (" + room.Id + "," + UserId + ")");

                ServerPacket Response = new ServerPacket(ServerPacketHeader.FlatControllerAddedMessageComposer);
                Response.WriteInteger(room.Id);
                Response.WriteInteger(UserId);
                Response.WriteString(Userright.Username);
                Session.SendPacket(Response);

                RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(UserId);
                if (roomUserByHabbo == null || roomUserByHabbo.IsBot)
                {
                    return;
                }

                roomUserByHabbo.RemoveStatus("flatctrl 0");
                roomUserByHabbo.SetStatus("flatctrl 1", "");
                roomUserByHabbo.UpdateNeeded = true;

                roomUserByHabbo.GetClient().SendPacket(new YouAreControllerComposer(1));
            }
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Room Room;

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room))
            {
                return;
            }

            if (!Room.CheckRights(Session, true))
            {
                return;
            }

            int Amount = Packet.PopInt();

            for (int i = 0; (i < Amount && i <= 100); i++)
            {
                int UserId = Packet.PopInt();
                if (UserId > 0 && Room.UsersWithRights.Contains(UserId))
                {
                    RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                    if (User != null && !User.IsBot)
                    {
                        User.RemoveStatus("flatctrl 1");
                        User.UpdateNeeded = true;


                        User.GetClient().SendMessage(new YouAreControllerComposer(0));
                    }

                    using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1");
                        dbClient.AddParameter("uid", UserId);
                        dbClient.AddParameter("rid", Room.Id);
                        dbClient.RunQuery();
                    }

                    if (Room.UsersWithRights.Contains(UserId))
                    {
                        Room.UsersWithRights.Remove(UserId);
                    }

                    Session.SendMessage(new FlatControllerRemovedComposer(Room, UserId));
                }
            }
        }
        public void Parse(GameClient session, ClientPacket packet)
        {
            if (!session.Habbo.InRoom)
            {
                return;
            }

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.Habbo.CurrentRoomId, out Room room))
            {
                return;
            }

            if (!room.CheckRights(session, true))
            {
                return;
            }

            int amount = packet.PopInt();

            for (int i = 0; (i < amount && i <= 100); i++)
            {
                int userId = packet.PopInt();
                if (userId > 0 && room.UsersWithRights.Contains(userId))
                {
                    RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(userId);
                    if (user != null && !user.IsBot)
                    {
                        user.RemoveStatus("flatctrl 1");
                        user.UpdateNeeded = true;


                        user.GetClient().SendPacket(new YouAreControllerComposer(0));
                    }

                    using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1");
                        dbClient.AddParameter("uid", userId);
                        dbClient.AddParameter("rid", room.Id);
                        dbClient.RunQuery();
                    }

                    if (room.UsersWithRights.Contains(userId))
                    {
                        room.UsersWithRights.Remove(userId);
                    }

                    session.SendPacket(new FlatControllerRemovedComposer(room, userId));
                }
            }
        }
Exemple #6
0
        private void RemovePetStatus()
        {
            RoomUser roomUser = this.GetRoomUser();

            roomUser.RemoveStatus("sit");
            roomUser.RemoveStatus("lay");
            roomUser.RemoveStatus("snf");
            roomUser.RemoveStatus("eat");
            roomUser.RemoveStatus("ded");
            roomUser.RemoveStatus("jmp");
            roomUser.RemoveStatus("beg");
        }
Exemple #7
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (Session.GetHabbo() == null)
            {
                return;
            }

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

            Room Room = null;

            if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room))
            {
                return;
            }

            if (!Room.CheckRights(Session))
            {
                return;
            }

            if (Room.UsersWithRights.Contains(Session.GetHabbo().Id))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);
                if (User != null && !User.IsBot)
                {
                    User.RemoveStatus("flatctrl 1");
                    User.UpdateNeeded = true;

                    User.GetClient().SendPacket(new YouAreNotControllerComposer());
                }

                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1");
                    dbClient.AddParameter("uid", Session.GetHabbo().Id);
                    dbClient.AddParameter("rid", Room.Id);
                    dbClient.RunQuery();
                }

                if (Room.UsersWithRights.Contains(Session.GetHabbo().Id))
                {
                    Room.UsersWithRights.Remove(Session.GetHabbo().Id);
                }
            }
        }
Exemple #8
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Room Instance;

            if (!CloudServer.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Instance))
            {
                return;
            }

            if (!Instance.CheckRights(Session, true))
            {
                return;
            }

            foreach (int UserId in new List <int>(Instance.UsersWithRights))
            {
                RoomUser User = Instance.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                if (User != null && !User.IsBot)
                {
                    User.RemoveStatus("flatctrl 1");
                    User.UpdateNeeded = true;

                    User.GetClient().SendMessage(new YouAreControllerComposer(0));
                }

                using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1");
                    dbClient.AddParameter("uid", UserId);
                    dbClient.AddParameter("rid", Instance.Id);
                    dbClient.RunQuery();
                }

                Session.SendMessage(new FlatControllerRemovedComposer(Instance, UserId));
                Session.SendMessage(new RoomRightsListComposer(Instance));
                Session.SendMessage(new UserUpdateComposer(Instance.GetRoomUserManager().GetUserList().ToList()));
            }

            if (Instance.UsersWithRights.Count > 0)
            {
                Instance.UsersWithRights.Clear();
            }
        }
Exemple #9
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId))
            {
                return;
            }

            Habbo Habbo = PlusEnvironment.GetHabboById(UserId);

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

            Group.TakeAdmin(UserId);

            Room Room = null;

            if (PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                if (User != null)
                {
                    if (User.Statusses.ContainsKey("flatctrl 3"))
                    {
                        User.RemoveStatus("flatctrl 3");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendMessage(new YouAreControllerComposer(0));
                    }
                }
            }

            Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 2));
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!CloudServer.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId))
            {
                return;
            }

            Habbo Habbo = CloudServer.GetHabboById(UserId);

            if (Habbo == null)
            {
                Session.SendNotification("Ops! Ocorreu um erro ao encontrar esse usuário.");
                return;
            }

            Group.TakeAdmin(UserId);

            Room Room = null;

            if (CloudServer.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                if (User != null)
                {
                    if (User.Statusses.ContainsKey("flatctrl 3"))
                    {
                        User.RemoveStatus("flatctrl 3");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendMessage(new YouAreControllerComposer(0));
                    }
                }
            }

            Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 2));
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!RavenEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (!Group.IsMember(UserId) || !Group.IsAdmin(Session.GetHabbo().Id))
            {
                return;
            }

            Habbo Habbo = RavenEnvironment.GetHabboById(UserId);

            if (Habbo == null)
            {
                Session.SendNotification("Oops, ocurrio un error mientras se realizaba la busqueda de este usuario.");
                return;
            }

            Group.TakeAdmin(UserId);

            Room Room = null;

            if (RavenEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId);
                if (User != null)
                {
                    if (User.Statusses.ContainsKey("flatctrl 3"))
                    {
                        User.RemoveStatus("flatctrl 3");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendMessage(new YouAreControllerComposer(0));
                    }
                }
            }

            Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 2));
        }
Exemple #12
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId))
            {
                return;
            }

            Habbo Habbo = ButterflyEnvironment.GetHabboById(UserId);

            if (Habbo == null)
            {
                return;
            }

            Group.TakeAdmin(UserId);

            Room Room = null;

            if (ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(UserId);
                if (User != null)
                {
                    if (User.Statusses.ContainsKey("flatctrl 3"))
                    {
                        User.RemoveStatus("flatctrl 3");
                    }
                    User.UpdateNeeded = true;
                    if (User.GetClient() != null)
                    {
                        User.GetClient().SendPacket(new YouAreControllerComposer(0));
                    }
                }
            }

            Session.SendPacket(new GroupMemberUpdatedComposer(GroupId, Habbo, 2));
        }
        public void Parse(GameClient session, ClientPacket packet)
        {
            if (!session.Habbo.InRoom)
            {
                return;
            }

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.Habbo.CurrentRoomId, out Room instance))
            {
                return;
            }

            if (!instance.CheckRights(session, true))
            {
                return;
            }

            foreach (int userId in new List <int>(instance.UsersWithRights))
            {
                RoomUser user = instance.GetRoomUserManager().GetRoomUserByHabbo(userId);
                if (user != null && !user.IsBot)
                {
                    user.RemoveStatus("flatctrl 1");
                    user.UpdateNeeded = true;

                    user.GetClient().SendPacket(new YouAreControllerComposer(0));
                }

                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1");
                    dbClient.AddParameter("uid", userId);
                    dbClient.AddParameter("rid", instance.Id);
                    dbClient.RunQuery();
                }

                session.SendPacket(new FlatControllerRemovedComposer(instance, userId));
                session.SendPacket(new RoomRightsListComposer(instance));
                session.SendPacket(new UserUpdateComposer(instance.GetRoomUserManager().GetUserList().ToList()));
            }

            if (instance.UsersWithRights.Count > 0)
            {
                instance.UsersWithRights.Clear();
            }
        }
        public void Parse(GameClient session, ClientPacket packet)
        {
            int groupId = packet.PopInt();
            int userId  = packet.PopInt();

            if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(groupId, out Group group))
            {
                return;
            }

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

            Habbo habbo = PlusEnvironment.GetHabboById(userId);

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

            group.TakeAdmin(userId);

            if (PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(group.RoomId, out Room room))
            {
                RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(userId);
                if (user != null)
                {
                    if (user.Statusses.ContainsKey("flatctrl 3"))
                    {
                        user.RemoveStatus("flatctrl 3");
                    }
                    user.UpdateNeeded = true;
                    if (user.GetClient() != null)
                    {
                        user.GetClient().SendPacket(new YouAreControllerComposer(0));
                    }
                }
            }

            session.SendPacket(new GroupMemberUpdatedComposer(groupId, habbo, 2));
        }
Exemple #15
0
        public void Handle(GameClient Session, ClientMessage Event)
        {
            Room @class = Essential.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (@class != null && @class.CheckRights(Session, true))
            {
                StringBuilder stringBuilder = new StringBuilder();
                int           num           = Event.PopWiredInt32();
                for (int i = 0; i < num; i++)
                {
                    if (i > 0)
                    {
                        stringBuilder.Append(" OR ");
                    }
                    uint num2 = Event.PopWiredUInt();
                    @class.UsersWithRights.Remove(num2);
                    stringBuilder.Append(string.Concat(new object[]
                    {
                        "room_id = '",
                        @class.Id,
                        "' AND user_id = '",
                        num2,
                        "'"
                    }));
                    RoomUser class2 = @class.GetRoomUserByHabbo(num2);
                    if (class2 != null && !class2.IsBot)
                    {
                        ServerMessage Rights = new ServerMessage(Outgoing.QuitRights); // Updated
                        class2.GetClient().SendMessage(Rights);
                        class2.RemoveStatus("flatctrl");
                        class2.UpdateNeeded = true;
                    }
                    ServerMessage Message = new ServerMessage(Outgoing.RemovePowers); // Updated
                    Message.AppendUInt(@class.Id);
                    Message.AppendUInt(num2);
                    Session.SendMessage(Message);
                }
                using (DatabaseClient class3 = Essential.GetDatabase().GetClient())
                {
                    class3.ExecuteQuery("DELETE FROM room_rights WHERE " + stringBuilder.ToString());
                }
            }
        }
Exemple #16
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);

            if (roomUserByHabbo == null)
            {
                return;
            }
            roomUserByHabbo.Unidle();
            int num = Packet.PopInt();

            if (roomUserByHabbo._statusses.ContainsKey("sign"))
            {
                roomUserByHabbo.RemoveStatus("sign");
            }
            roomUserByHabbo.SetStatus("sign", Convert.ToString(num));
            roomUserByHabbo.UpdateNeeded = true;
        }
Exemple #17
0
        private void FreeTimeCycle(RoomUser Bot)
        {
            if (!this.IsAllowZone(Bot) || this.Health != this.Config.Health)
            {
                this.ResetBot      = true;
                this.ResetBotTimer = 60;

                if (this.Config.ResetPosition && !this.IsAllowZone(Bot))
                {
                    Bot.MoveTo(Bot.BotData.X, Bot.BotData.Y);
                }


                if (this.Health != this.Config.Health)
                {
                    Bot.ApplyEffect(4, true);
                    Bot.TimerResetEffect = 4;
                }

                return;
            }

            //Action bot
            if (this.ActionTimer > 0)
            {
                this.ActionTimer--;
                return;
            }

            if (Bot.IsWalking)
            {
                return;
            }

            this.ActionTimer = ButterflyEnvironment.GetRandomNumber(15, 30);
            if (this.ActionTimer >= 25 && !this.Config.ZombieMode)
            {
                if (this.ActionTimer == 30)
                {
                    if (Bot.RotBody != Bot.BotData.Rot)
                    {
                        Bot.RotHead      = Bot.BotData.Rot;
                        Bot.RotBody      = Bot.BotData.Rot;
                        Bot.UpdateNeeded = true;
                    }
                }
                else
                {
                    if (Bot.IsSit)
                    {
                        Bot.RemoveStatus("sit");
                        Bot.IsSit        = false;
                        Bot.UpdateNeeded = true;
                    }
                    else
                    {
                        if (Bot.RotBody % 2 == 0)
                        {
                            if (Bot.IsPet)
                            {
                                Bot.SetStatus("sit", "");
                            }
                            else
                            {
                                Bot.SetStatus("sit", "0.5");
                            }
                            Bot.IsSit        = true;
                            Bot.UpdateNeeded = true;
                        }
                    }
                }
            }
            else
            {
                if (this.Config.ZoneDistance > 0)
                {
                    //Bouge le bot aléatoirement dans sa zone
                    int LenghtX = ButterflyEnvironment.GetRandomNumber(0, this.Config.ZoneDistance);
                    int LenghtY = ButterflyEnvironment.GetRandomNumber(0, this.Config.ZoneDistance);
                    Bot.MoveTo(Bot.BotData.X + ((ButterflyEnvironment.GetRandomNumber(1, 2) == 2) ? -LenghtX : LenghtX), Bot.BotData.Y + ((ButterflyEnvironment.GetRandomNumber(1, 2) == 2) ? -LenghtY : LenghtY), true);
                }
            }
        }
Exemple #18
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            RoomUser User = Session.GetRoomUser();

            if (User == null)
            {
                return;
            }

            if (User.Statusses.ContainsKey("lay") || User.isLying || User.RidingHorse || User.IsWalking)
            {
                return;
            }

            var  Items    = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y);
            bool HasChair = Items.ToList().Where(x => x != null && x.GetBaseItem().IsSeat).Count() > 0;

            if (User.ForceSit || User.ForceLay)
            {
                return;
            }

            if (HasChair)
            {
                return;
            }

            if (!User.Statusses.ContainsKey("sit"))
            {
                if ((User.RotBody % 2) == 0)
                {
                    if (User == null)
                    {
                        return;
                    }

                    try
                    {
                        User.Statusses.Add("sit", "1.0");
                        User.Z           -= 0.35;
                        User.isSitting    = true;
                        User.UpdateNeeded = true;
                    }
                    catch { }
                }
                else
                {
                    User.RotBody--;
                    User.Statusses.Add("sit", "1.0");
                    User.Z           -= 0.35;
                    User.isSitting    = true;
                    User.UpdateNeeded = true;
                }
            }
            else
            {
                User.Z += 0.35;
                User.RemoveStatus("sit");
                User.isSitting    = false;
                User.UpdateNeeded = true;
            }
        }
Exemple #19
0
        public void Parse(GameClient session, ClientPacket packet)
        {
            int userId = packet.PopInt();

            if (session == null || session.Habbo == null || !session.Habbo.InRoom)
            {
                return;
            }

            Room room = session.Habbo.CurrentRoom;

            if (room == null)
            {
                return;
            }

            RoomUser roomUser = room.GetRoomUserManager().GetRoomUserByHabbo(session.Habbo.Id);

            if (roomUser == null)
            {
                return;
            }

            RoomUser targetUser = room.GetRoomUserManager().GetRoomUserByVirtualId(userId);

            if (targetUser == null)
            {
                return;
            }

            if (session.Habbo.TradingLockExpiry > 0)
            {
                if (session.Habbo.TradingLockExpiry > PlusEnvironment.GetUnixTimestamp())
                {
                    session.SendNotification("You're currently banned from trading.");
                    return;
                }

                session.Habbo.TradingLockExpiry = 0;
                session.SendNotification("Your trading ban has now expired.");

                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '0' WHERE `id` = '" + session.Habbo.Id + "' LIMIT 1");
                }
            }

            if (!session.Habbo.GetPermissions().HasRight("room_trade_override"))
            {
                if (room.TradeSettings == 0)
                {
                    session.SendPacket(new TradingErrorComposer(6, targetUser.GetUsername()));
                    return;
                }

                if (room.TradeSettings == 1 && room.OwnerId != session.Habbo.Id)
                {
                    session.SendPacket(new TradingErrorComposer(6, targetUser.GetUsername()));
                    return;
                }
            }

            if (roomUser.IsTrading && roomUser.TradePartner != targetUser.UserId)
            {
                session.SendPacket(new TradingErrorComposer(7, targetUser.GetUsername()));
                return;
            }

            if (targetUser.IsTrading && targetUser.TradePartner != roomUser.UserId)
            {
                session.SendPacket(new TradingErrorComposer(8, targetUser.GetUsername()));
                return;
            }

            if (!targetUser.GetClient().Habbo.AllowTradingRequests)
            {
                session.SendPacket(new TradingErrorComposer(4, targetUser.GetUsername()));
                return;
            }

            if (targetUser.GetClient().Habbo.TradingLockExpiry > 0)
            {
                session.SendPacket(new TradingErrorComposer(4, targetUser.GetUsername()));
                return;
            }

            if (!room.GetTrading().StartTrade(roomUser, targetUser, out Trade trade))
            {
                session.SendNotification("An error occured trying to start this trade");
                return;
            }

            if (targetUser.HasStatus("trd"))
            {
                targetUser.RemoveStatus("trd");
            }
            if (roomUser.HasStatus("trd"))
            {
                roomUser.RemoveStatus("trd");
            }

            targetUser.SetStatus("trd");
            targetUser.UpdateNeeded = true;
            roomUser.SetStatus("trd");
            roomUser.UpdateNeeded = true;

            trade.SendPacket(new TradingStartComposer(roomUser.UserId, targetUser.UserId));
        }
Exemple #20
0
        /// <summary>
        /// Sends the user to desired chair in the room
        /// </summary>
        /// <param name="Client"></param>
        public static void SpawnChairs(GameClient Client, string ChairName, RoomUser Bot = null)
        {
            try
            {
                RoomUser RoomUser;

                if (Client != null)
                {
                    if (Client.GetHabbo().CurrentRoomId != Convert.ToInt32(RoleplayData.GetData("court", "roomid")))
                    {
                        Client.GetHabbo().Look  = Client.GetRoleplay().OriginalOutfit;
                        Client.GetHabbo().Motto = Client.GetRoleplay().Class;
                        Client.GetHabbo().Poof(false);
                    }
                }

                if (Bot != null)
                {
                    RoomUser = Bot;
                }
                else
                {
                    RoomUser = Client.GetRoomUser();
                }

                List <Item> Chairs = new List <Item>();

                if (RoomUser == null)
                {
                    return;
                }

                if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit"))
                {
                    if (RoomUser.Statusses.ContainsKey("sit"))
                    {
                        RoomUser.RemoveStatus("sit");
                    }
                    RoomUser.isSitting    = false;
                    RoomUser.UpdateNeeded = true;
                }

                if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay"))
                {
                    if (RoomUser.Statusses.ContainsKey("lay"))
                    {
                        RoomUser.RemoveStatus("lay");
                    }
                    RoomUser.isLying      = false;
                    RoomUser.UpdateNeeded = true;
                }

                RoomUser.CanWalk = false;
                RoomUser.ClearMovement(true);

                lock (RoomUser.GetRoom().GetRoomItemHandler().GetFloor)
                {
                    foreach (Item item in RoomUser.GetRoom().GetRoomItemHandler().GetFloor)
                    {
                        if (item.GetBaseItem().ItemName == ChairName)
                        {
                            if (!Chairs.Contains(item))
                            {
                                Chairs.Add(item);
                            }
                        }
                    }

                    var Chairs2 = new List <Item>();
                    foreach (var chair in Chairs)
                    {
                        if (!chair.GetRoom().GetGameMap().SquareHasUsers(chair.GetX, chair.GetY))
                        {
                            if (!Chairs2.Contains(chair))
                            {
                                Chairs2.Add(chair);
                            }
                        }
                    }

                    Item   LandItem = null;
                    Random Random   = new Random();
                    if (Chairs2.Count >= 1)
                    {
                        if (Chairs2.Count == 1)
                        {
                            LandItem = Chairs2[0];
                        }
                        else
                        {
                            LandItem = Chairs2[Random.Next(0, Chairs2.Count)];
                        }
                    }
                    else if (Chairs2.Count >= 1)
                    {
                        if (Chairs.Count == 1)
                        {
                            LandItem = Chairs[0];
                        }
                        else
                        {
                            LandItem = Chairs[Random.Next(0, Chairs.Count)];
                        }
                    }

                    if (LandItem != null)
                    {
                        if (RoomUser.Statusses.ContainsKey("sit"))
                        {
                            RoomUser.RemoveStatus("sit");
                        }
                        if (RoomUser.Statusses.ContainsKey("lay"))
                        {
                            RoomUser.RemoveStatus("lay");
                        }
                        RoomUser.Statusses.Add("sit", Utilities.TextHandling.GetString(LandItem.GetBaseItem().Height));

                        Point OldCoord = new Point(RoomUser.Coordinate.X, RoomUser.Coordinate.Y);
                        Point NewCoord = new Point(LandItem.GetX, LandItem.GetY);

                        var Room = GenerateRoom(RoomUser.RoomId);

                        if (Room != null)
                        {
                            Room.GetGameMap().UpdateUserMovement(OldCoord, NewCoord, RoomUser);
                        }

                        RoomUser.X       = LandItem.GetX;
                        RoomUser.Y       = LandItem.GetY;
                        RoomUser.Z       = LandItem.GetZ;
                        RoomUser.RotHead = LandItem.Rotation;
                        RoomUser.RotBody = LandItem.Rotation;
                    }
                    RoomUser.CanWalk      = true;
                    RoomUser.UpdateNeeded = true;
                }
            }
            catch { }
        }
Exemple #21
0
        /// <summary>
        /// Determines whether [is valid step] [the specified user].
        /// </summary>
        /// <param name="RoomUser">The user.</param>
        /// <param name="StartPosition">From.</param>
        /// <param name="NextPosition">To.</param>
        /// <param name="endOfPath">if set to <c>true</c> [end of path].</param>
        /// <param name="HasOverride">if set to <c>true</c> [override].</param>
        /// <returns><c>true</c> if [is valid step] [the specified user]; otherwise, <c>false</c>.</returns>
        internal bool IsValidStep(RoomUser RoomUser, Vector2D StartPosition, Vector2D NextPosition, bool endOfPath, bool HasOverride)
        {
            if (RoomUser == null)
                return false;

            Point NextPositionSquare = new Point(NextPosition.X, NextPosition.Y);
            RoomUser RoomUsersInTile = UserRoom.GetRoomUserManager().GetUserForSquare(NextPosition.X, NextPosition.Y);
            List<RoomItem> RoomItemsInTile = GetCoordinatedItems(NextPositionSquare);

            if (RoomItemsInTile.Any(item => item.Height > (RoomUser.Z + 1.5))) return false;

            if ((!RoomUser.IsBot) && (!RoomUser.IsPet) && (RoomUser.GetClient() != null))
            {
                if (GuildGates.ContainsKey(NextPositionSquare))
                {
                    int GroupId = GuildGates[NextPositionSquare].GroupId;

                    if (GroupId > 0 && RoomUser.GetClient().GetHabbo().UserGroups.Any(member => ((member != null) && (member.GroupId == GroupId))))
                        return true;
                }
            }

            if (!ValidTile(NextPosition.X, NextPosition.Y))
                return false;

            if (HasOverride)
                return true;

            if (!CanWalk(NextPosition.X, NextPosition.Y, HasOverride))
                return false;

            if ((RoomUsersInTile != null) && (!RoomUsersInTile.IsWalking) && (endOfPath))
                return false;

            if (((GameMap[NextPosition.X, NextPosition.Y] == 3) && (!endOfPath)) || (GameMap[NextPosition.X, NextPosition.Y] == 0) || ((GameMap[NextPosition.X, NextPosition.Y] == 2) && (!endOfPath)))
                return false;

            if ((RoomUsersInTile != null) && (endOfPath) && (!UserRoom.RoomData.AllowWalkThrough))
            {
                RoomUser.HasPathBlocked = true;
                RoomUser.Path.Clear();
                RoomUser.IsWalking = false;
                RoomUser.RemoveStatus("mv");
                UserRoom.GetRoomUserManager().UpdateUserStatus(RoomUser, false);

                if (!RoomUser.RidingHorse || RoomUser.IsPet || RoomUser.IsBot)
                    return true;

                RoomUser roomUserByVirtualId = UserRoom.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(RoomUser.HorseId));
                ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                message.AppendInteger(1);

                if (roomUserByVirtualId != null)
                {
                    roomUserByVirtualId.IsWalking = false;
                    roomUserByVirtualId.ClearMovement();
                    roomUserByVirtualId.RemoveStatus("mv");
                    roomUserByVirtualId.SerializeStatus(message, "");
                }

                RoomUser.GetClient().GetHabbo().CurrentRoom.SendMessage(message);
            }
            else if (RoomItemsInTile.All(item => item.GetBaseItem().Walkable))
                return true;
            else if ((RoomUsersInTile != null) && (!UserRoom.RoomData.AllowWalkThrough) && (!RoomUsersInTile.IsWalking))
                return false;

            return ((SqAbsoluteHeight(NextPosition.X, NextPosition.Y) - SqAbsoluteHeight(StartPosition.X, StartPosition.Y)) <= 1.5);
        }
Exemple #22
0
        /// <summary>
        ///     Determines whether [is valid step] [the specified user].
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="from">From.</param>
        /// <param name="to">To.</param>
        /// <param name="endOfPath">if set to <c>true</c> [end of path].</param>
        /// <param name="Override">if set to <c>true</c> [override].</param>
        /// <returns><c>true</c> if [is valid step] [the specified user]; otherwise, <c>false</c>.</returns>
        internal bool IsValidStep(RoomUser user, Vector2D @from, Vector2D to, bool endOfPath, bool Override)
        {
            if (user == null)
                return false;
            Point square = new Point(to.X, to.Y);
            if (user.IsBot == false && user.GetClient() != null)
            {
                if (GuildGates.ContainsKey(square))
                {
                    uint guildId = GuildGates[square].GroupId;
                    if (guildId > 0 &&
                        user.GetClient()
                            .GetHabbo()
                            .UserGroups.Any(member => member != null && member.GroupId == guildId)) return true;
                }
            }

            if (!ValidTile(to.X, to.Y))
                return false;
            if (Override)
                return true;
            if (GameMap[to.X, to.Y] == 3 && !endOfPath || GameMap[to.X, to.Y] == 0 ||
                GameMap[to.X, to.Y] == 2 && !endOfPath)
                return false;
            RoomUser userForSquare = _room.GetRoomUserManager().GetUserForSquare(to.X, to.Y);
            if (userForSquare != null && endOfPath && !_room.RoomData.AllowWalkThrough)
            {
                user.HasPathBlocked = true;
                user.Path.Clear();
                user.IsWalking = false;
                user.RemoveStatus("mv");
                _room.GetRoomUserManager().UpdateUserStatus(user, false);
                if (!user.RidingHorse || user.IsPet || user.IsBot)
                    return true;
                RoomUser roomUserByVirtualId =
                    _room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(user.HorseId));

                ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                message.AppendInteger(1);
                if (roomUserByVirtualId != null)
                {
                    roomUserByVirtualId.IsWalking = false;
                    roomUserByVirtualId.ClearMovement();
                    roomUserByVirtualId.RemoveStatus("mv");
                    roomUserByVirtualId.SerializeStatus(message, "");
                }
                user.GetClient().GetHabbo().CurrentRoom.SendMessage(message);
            }
            else if (userForSquare != null && !_room.RoomData.AllowWalkThrough && !userForSquare.IsWalking)
                return false;
            return SqAbsoluteHeight(to.X, to.Y) - SqAbsoluteHeight(@from.X, @from.Y) <= 1.5;
        }
Exemple #23
0
        private void HandleSetMovement(SquarePoint Point, RoomUser User, ref bool updated, bool setSquareMap)
        {
            int nextX = Point.X;
            int nextY = Point.Y;

            User.RemoveStatus("mv");

            //double nextZ = room.GetGameMap().SqAbsoluteHeight(nextX, nextY);
            double nextZ = room.GetGameMap().GetNewZForUser(nextX, nextY, User.Z);

            //if (room.GetGameMap().SquareOccupied(nextX, nextY, nextZ))
            //    return;

            if (User.UserIsRidingAHorse())
                nextZ += 1;

            User.Statusses.Remove("lay");
            User.Statusses.Remove("sit");
            if (!User.isFlying)
                User.AddStatus("mv", nextX + "," + nextY + "," + TextHandling.GetString(nextZ));
            else
                User.AddStatus("mv", nextX + "," + nextY + "," + TextHandling.GetString(nextZ + 4 + (0.5 * Math.Sin(0.7 * User.flyk))));

            int newRot = Rotation.Calculate(User.X, User.Y, nextX, nextY, User.moonwalkEnabled);

            User.RotBody = newRot;
            User.RotHead = newRot;

            User.SetStep = true;
            User.SetX = nextX;
            User.SetY = nextY;
            User.SetZ = nextZ;

            UpdateUserEffect(User, User.SetX, User.SetY);
            updated = true;
            User.UpdateNeeded = true;


            if (setSquareMap)
            {
                room.GetGameMap().GameMap[User.X, User.Y] = User.SqState; // REstore the old one
                User.SqState = room.GetGameMap().GameMap[User.SetX, User.SetY];//Backup the new one
                
                if (!room.AllowWalkthrough)
                    room.GetGameMap().GameMap[nextX, nextY] = 0;
            }
        }
Exemple #24
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (UserId == Session.GetHabbo().Id)
            {
                if (Group.IsMember(UserId))
                {
                    Group.DeleteMember(UserId);
                }

                Session.GetHabbo().MyGroups.Remove(Group.Id);

                if (Group.IsAdmin(UserId))
                {
                    if (Group.IsAdmin(UserId))
                    {
                        Group.TakeAdmin(UserId);
                    }

                    Room Room;

                    if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
                    {
                        return;
                    }

                    RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);
                    if (User != null)
                    {
                        User.RemoveStatus("flatctrl 1");
                        User.UpdateNeeded = true;

                        if (User.GetClient() != null)
                        {
                            User.GetClient().SendPacket(new YouAreControllerComposer(0));
                        }
                    }
                }

                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `group_memberships` WHERE `group_id` = @GroupId AND `user_id` = @UserId");
                    dbClient.AddParameter("GroupId", GroupId);
                    dbClient.AddParameter("UserId", UserId);
                    dbClient.RunQuery();
                }

                Session.SendPacket(new GroupInfoComposer(Group, Session));
                if (Session.GetHabbo().FavouriteGroupId == GroupId)
                {
                    Session.GetHabbo().FavouriteGroupId = 0;
                    using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("UPDATE `user_stats` SET `groupid` = '0' WHERE `id` = @userId LIMIT 1");
                        dbClient.AddParameter("userId", UserId);
                        dbClient.RunQuery();
                    }

                    if (Group.AdminOnlyDeco == 0)
                    {
                        Room Room;
                        if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
                        {
                            return;
                        }

                        RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);
                        if (User != null)
                        {
                            User.RemoveStatus("flatctrl 1");
                            User.UpdateNeeded = true;

                            if (User.GetClient() != null)
                            {
                                User.GetClient().SendPacket(new YouAreControllerComposer(0));
                            }
                        }
                    }

                    if (Session.GetHabbo().InRoom&& Session.GetHabbo().CurrentRoom != null)
                    {
                        RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);
                        if (User != null)
                        {
                            Session.GetHabbo().CurrentRoom.SendPacket(new UpdateFavouriteGroupComposer(Group, User.VirtualId));
                        }
                        Session.GetHabbo().CurrentRoom.SendPacket(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id));
                    }
                    else
                    {
                        Session.SendPacket(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id));
                    }
                }
                return;
            }
            else
            {
                if (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id))
                {
                    if (!Group.IsMember(UserId))
                    {
                        return;
                    }

                    if (Group.IsAdmin(UserId) && Group.CreatorId != Session.GetHabbo().Id)
                    {
                        Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.groupremoveuser.error", Session.Langue));
                        return;
                    }

                    if (Group.IsAdmin(UserId))
                    {
                        Group.TakeAdmin(UserId);
                    }

                    if (Group.IsMember(UserId))
                    {
                        Group.DeleteMember(UserId);
                    }

                    Habbo Habbo = ButterflyEnvironment.GetHabboById(UserId);
                    Habbo.MyGroups.Remove(Group.Id);

                    int StartIndex = (1 - 1) * 14 + 14;

                    List <Habbo> Members   = new List <Habbo>();
                    List <int>   MemberIds = Group.GetMembers.Skip(StartIndex).Take(14).ToList();
                    foreach (int Id in MemberIds.ToList())
                    {
                        Habbo GroupMember = ButterflyEnvironment.GetHabboById(Id);
                        if (GroupMember == null)
                        {
                            continue;
                        }

                        if (!Members.Contains(GroupMember))
                        {
                            Members.Add(GroupMember);
                        }
                    }

                    int FinishIndex  = 14 < Members.Count ? 14 : Members.Count;
                    int MembersCount = Group.GetMembers.Count;

                    Session.SendPacket(new GroupMembersComposer(Group, Members.Take(FinishIndex).ToList(), MembersCount, 1, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), 0, ""));
                }
            }
        }
Exemple #25
0
 internal bool IsValidStep(RoomUser User, Vector2D From, Vector2D To, bool EndOfPath, bool Override)
 {
     if (!this.ValidTile(To.X, To.Y))
         return false;
     if (Override)
         return true;
     if ((int)this.mGameMap[To.X, To.Y] == 3 && !EndOfPath || (int)this.mGameMap[To.X, To.Y] == 0 || (int)this.mGameMap[To.X, To.Y] == 2 && !EndOfPath || this.SqAbsoluteHeight(To.X, To.Y) - this.SqAbsoluteHeight(From.X, From.Y) > 1.5)
         return false;
     RoomUser userForSquare = this.room.GetRoomUserManager().GetUserForSquare(To.X, To.Y);
     if (userForSquare != null && EndOfPath && this.room.AllowWalkthrough == 0)
     {
         User.HasPathBlocked = true;
         User.Path.Clear();
         User.IsWalking = false;
         User.RemoveStatus("mv");
         this.room.GetRoomUserManager().UpdateUserStatus(User, false);
         if (User.RidingHorse && !User.IsPet && !User.IsBot)
         {
             RoomUser roomUserByVirtualId = this.room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(User.HorseID));
             roomUserByVirtualId.IsWalking = false;
             roomUserByVirtualId.RemoveStatus("mv");
             ServerMessage Message = new ServerMessage(Outgoing.UpdateUserStatusMessageComposer);
             Message.AppendInt32(1);
             roomUserByVirtualId.SerializeStatus(Message, "");
             User.GetClient().GetHabbo().CurrentRoom.SendMessage(Message);
         }
     }
     else if (userForSquare != null && this.room.AllowWalkthrough == 0 && !userForSquare.IsWalking)
         return false;
     return true;
 }
Exemple #26
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            RoomUser User = Session.GetRoomUser();

            if (User == null)
            {
                return;
            }

            if (!Room.GetGameMap().ValidTile(User.X + 2, User.Y + 2) && !Room.GetGameMap().ValidTile(User.X + 1, User.Y + 1))
            {
                Session.SendWhisper("Opa, não pode deitar aqui - tente em outro lugar!", 1);
                return;
            }

            if (User.ForceSit || User.ForceLay)
            {
                return;
            }

            if (User.Statusses.ContainsKey("sit") || User.isSitting || User.RidingHorse || User.IsWalking)
            {
                return;
            }

            var  Items  = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y);
            bool HasBed = Items.ToList().Where(x => x != null && x.GetBaseItem().IsBed()).Count() > 0;

            if (HasBed)
            {
                return;
            }

            if (Session.GetHabbo().Effects().CurrentEffect > 0)
            {
                Session.GetHabbo().Effects().ApplyEffect(0);
            }

            if (!User.Statusses.ContainsKey("lay"))
            {
                if ((User.RotBody % 2) == 0)
                {
                    if (User == null)
                    {
                        return;
                    }

                    try
                    {
                        User.Statusses.Add("lay", "1.0 null");
                        User.Z           -= 0.35;
                        User.isLying      = true;
                        User.UpdateNeeded = true;
                    }
                    catch { }
                }
                else
                {
                    User.RotBody--;
                    User.Statusses.Add("lay", "1.0 null");
                    User.Z           -= 0.35;
                    User.isLying      = true;
                    User.UpdateNeeded = true;
                }
            }
            else
            {
                User.Z += 0.35;
                User.RemoveStatus("lay");
                User.isLying      = false;
                User.UpdateNeeded = true;
            }
        }
Exemple #27
0
        private void UpdateUserEffect(RoomUser User, int x, int y)
        {
            if (User.IsBot)
                return;
            byte NewCurrentUserItemEffect = room.GetGameMap().EffectMap[x, y];
            if (NewCurrentUserItemEffect > 0)
            {
                ItemEffectType Type = ByteToItemEffectEnum.Parse(NewCurrentUserItemEffect);
                if (Type != User.CurrentItemEffect)
                {
                    switch (Type)
                    {
                        case ItemEffectType.Iceskates:
                            {
                                if (User.GetClient().GetHabbo().Gender == "M")
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(38);
                                else
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(39);
                                User.CurrentItemEffect = ItemEffectType.Iceskates;
                                break;
                            }

                        case ItemEffectType.Normalskates:
                            {
                                if (User.GetClient().GetHabbo().Gender == "M")
                                {
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(55);
                                }
                                else
                                {
                                    User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(56);
                                }
                                //56=girls
                                //55=
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.Swim:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(29);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.SwimLow:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(30);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.SwimHalloween:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(37);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.None:
                            {
                                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(-1);
                                User.CurrentItemEffect = Type;
                                break;
                            }
                        case ItemEffectType.PublicPool:
                            {
                                User.AddStatus("swim", string.Empty);
                                User.CurrentItemEffect = Type;
                                break;
                            }

                    }
                }
            }
            else if (User.CurrentItemEffect != ItemEffectType.None && NewCurrentUserItemEffect == 0)
            {
                User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(-1);
                User.CurrentItemEffect = ItemEffectType.None;
                User.RemoveStatus("swim");
            }
        }
Exemple #28
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null)
            {
                return;
            }

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

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null || !User.CanWalk)
            {
                return;
            }

            if (!User.IsBot)
            {
                User.GetClient().GetRoleplay().WalkDirection = HabboHotel.Roleplay.Web.Incoming.Interactions.WalkDirections.None;
            }

            int MoveX = Packet.PopInt();
            int MoveY = Packet.PopInt();

            List <Item> BedItems = Room.GetRoomItemHandler().GetFloor.Where(x => x.GetBaseItem().IsBed()).ToList();

            if (BedItems.Count > 0)
            {
                bool HasBed = BedItems.Where(x => x.GetAffectedTiles.Contains(new Point(MoveX, MoveY))).ToList().Count > 0;
                if (HasBed)
                {
                    var Item = BedItems.Where(x => x.GetAffectedTiles.Contains(new Point(MoveX, MoveY))).FirstOrDefault();

                    Point Square;
                    if (Item.GetBedTiles(new Point(MoveX, MoveY), out Square).Count > 0)
                    {
                        MoveX = Square.X;
                        MoveY = Square.Y;
                    }
                }
            }

            if (User.RidingHorse)
            {
                RoomUser Horse = Room.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID);
                if (Horse != null)
                {
                    Horse.MoveTo(MoveX, MoveY);
                }
            }

            if (User.isLying)
            {
                User.Z += 0.35;
                User.RemoveStatus("lay");
                User.isLying      = false;
                User.UpdateNeeded = true;
            }

            if (User.isSitting)
            {
                User.Z += 0.35;
                User.RemoveStatus("sit");
                User.isSitting    = false;
                User.UpdateNeeded = true;
            }

            User.MoveTo(MoveX, MoveY);
        }
Exemple #29
0
        public void Execute(GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Opa, você esqueceu de escolher um usuário-alvo!");
                return;
            }

            GameClient TargetSession = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
            RoomUser   User          = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);

            if (User == null)
            {
                return;
            }

            if (User == null)
            {
                return;
            }

            if (User.ForceSit)
            {
                return;
            }

            if (User.Statusses.ContainsKey("sit") || User.isSitting || User.RidingHorse || User.IsWalking)
            {
                return;
            }

            var  Items  = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y);
            bool HasBed = Items.ToList().Where(x => x != null && x.GetBaseItem().IsBed()).Count() > 0;

            if (HasBed || TargetSession.GetHabbo().VIPRank > 2)
            {
                return;
            }

            if (TargetSession.GetHabbo().Effects().CurrentEffect > 0)
            {
                TargetSession.GetHabbo().Effects().ApplyEffect(0);
            }

            if (!User.Statusses.ContainsKey("lay"))
            {
                if ((User.RotBody % 2) == 0)
                {
                    if (User == null)
                    {
                        return;
                    }

                    try
                    {
                        User.Statusses.Add("lay", "1.0 null");
                        User.Z           -= 0.35;
                        User.isLying      = true;
                        User.UpdateNeeded = true;
                    }
                    catch { }
                }
                else
                {
                    User.RotBody--;
                    User.Statusses.Add("lay", "1.0 null");
                    User.Z           -= 0.35;
                    User.isLying      = true;
                    User.UpdateNeeded = true;
                }

                User.Frozen = true;
                User.ClearMovement(true);
                User.ForceLay = true;

                PlusEnvironment.GetGame().GetChatManager().GetCommands().Parse(User.GetClient(), ":unequip");
                Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + " forçando ele a sentar*", 23);
            }
            else
            {
                User.Z += 0.35;
                User.RemoveStatus("lay");
                User.isLying      = false;
                User.UpdateNeeded = true;

                User.Frozen = false;
                User.ClearMovement(true);
                User.ForceLay = false;

                Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + " fazendo ele se levantar*", 23);
            }
        }
Exemple #30
0
        public void OnCycle(RoomUser Bot, Room Room)
        {
            if (this.SlowTimer > 0 || this.Config.ZombieMode)
            {
                if (this.SlowTimer > 0)
                {
                    this.SlowTimer--;
                }

                if (!Bot.breakwalk)
                {
                    Bot.breakwalk = true;
                }
            }
            else
            {
                if (Bot.breakwalk)
                {
                    Bot.breakwalk = false;
                }
            }

            this.ReloadGunCycle(Bot);

            if (this.AggroVirtuelId > 0)
            {
                this.AggroCycle(Bot, Room);
            }

            if (this.Config.AggroDistance > 0 && this.AggroVirtuelId == 0 && !this.Dead)
            {
                this.AggroSearch(Bot, Room);
            }

            if (!this.ResetBot && !this.Dead && this.AggroVirtuelId == 0 && !Bot.Freeze)
            {
                this.FreeTimeCycle(Bot);
            }

            if (this.ResetBot && !this.Dead && this.AggroVirtuelId == 0)
            {
                this.CheckResetBot(Bot, Room);
            }

            if (this.Dead)
            {
                this.DeadTimer--;
                if (this.DeadTimer <= 0)
                {
                    this.Dead   = false;
                    this.Health = this.Config.Health;


                    Bot.RemoveStatus("lay");
                    Bot.Freeze           = false;
                    Bot.FreezeEndCounter = 0;
                    Bot.IsLay            = false;
                    Bot.UpdateNeeded     = true;
                }
            }
        }
Exemple #31
0
        /// <summary>
        /// Sends the user to desired bed in the room
        /// </summary>
        /// <param name="Client"></param>
        public static void SpawnBeds(GameClient Client, string BedName, RoomUser Bot = null)
        {
            RoomUser RoomUser;

            if (Bot != null)
            {
                RoomUser = Bot;
            }
            else
            {
                RoomUser = Client.GetRoomUser();
            }

            List <Item> Beds = new List <Item>();

            if (RoomUser == null)
            {
                return;
            }

            if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit"))
            {
                if (RoomUser.Statusses.ContainsKey("sit"))
                {
                    RoomUser.RemoveStatus("sit");
                }
                RoomUser.isSitting    = false;
                RoomUser.UpdateNeeded = true;
            }

            if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay"))
            {
                if (RoomUser.Statusses.ContainsKey("lay"))
                {
                    RoomUser.RemoveStatus("lay");
                }
                RoomUser.isLying      = false;
                RoomUser.UpdateNeeded = true;
            }

            if (RoomUser != null)
            {
                RoomUser.ClearMovement(true);
            }

            lock (RoomUser.GetRoom().GetRoomItemHandler().GetFloor)
            {
                foreach (Item item in RoomUser.GetRoom().GetRoomItemHandler().GetFloor)
                {
                    if (item.GetBaseItem().ItemName == BedName)
                    {
                        if (!Beds.Contains(item))
                        {
                            Beds.Add(item);
                        }
                    }
                }

                var Beds2 = new List <Item>();
                foreach (var bed in Beds)
                {
                    if (!bed.GetRoom().GetGameMap().SquareHasUsers(bed.GetX, bed.GetY))
                    {
                        if (!Beds2.Contains(bed))
                        {
                            Beds2.Add(bed);
                        }
                    }
                }
                Item   LandItem = null;
                Random Random   = new Random();
                if (Beds2.Count >= 1)
                {
                    if (Beds2.Count == 1)
                    {
                        LandItem = Beds2[0];
                    }
                    else
                    {
                        LandItem = Beds2[Random.Next(0, Beds2.Count)];
                    }
                }
                else if (Beds.Count >= 1)
                {
                    if (Beds.Count == 1)
                    {
                        LandItem = Beds[0];
                    }
                    else
                    {
                        LandItem = Beds[Random.Next(0, Beds.Count)];
                    }
                }

                if (LandItem != null)
                {
                    if (RoomUser.Statusses.ContainsKey("sit"))
                    {
                        RoomUser.RemoveStatus("sit");
                    }
                    if (RoomUser.Statusses.ContainsKey("lay"))
                    {
                        RoomUser.RemoveStatus("lay");
                    }
                    RoomUser.Statusses.Add("lay", Utilities.TextHandling.GetString(LandItem.GetBaseItem().Height) + " null");

                    Point OldCoord = new Point(RoomUser.X, RoomUser.Y);
                    Point NewCoord = new Point(LandItem.GetX, LandItem.GetY);


                    RoomUser.X       = LandItem.GetX;
                    RoomUser.Y       = LandItem.GetY;
                    RoomUser.Z       = LandItem.GetZ;
                    RoomUser.RotHead = LandItem.Rotation;
                    RoomUser.RotBody = LandItem.Rotation;

                    RoomUser.UpdateNeeded = true;
                    RoomUser.GetRoom().GetGameMap().UpdateUserMovement(OldCoord, NewCoord, RoomUser);
                }
            }
        }
Exemple #32
0
        /// <summary>
        ///     Determines whether [is valid step2] [the specified user].
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="from">From.</param>
        /// <param name="to">To.</param>
        /// <param name="endOfPath">if set to <c>true</c> [end of path].</param>
        /// <param name="Override">if set to <c>true</c> [override].</param>
        /// <returns><c>true</c> if [is valid step2] [the specified user]; otherwise, <c>false</c>.</returns>
        internal bool IsValidStep2(RoomUser user, Point @from, Point to, bool endOfPath, bool Override)
        {
            if (user == null)
                return false;

            if (GuildGates.ContainsKey(to))
            {
                RoomItem roomItem = GuildGates[to];
                uint guildId = roomItem.GroupId;
                if (guildId > 0)
                    if (user.GetClient().GetHabbo() != null &&
                        user.GetClient().GetHabbo().MyGroups != null &&
                        user.GetClient().GetHabbo().MyGroups.Contains(guildId))
                    {
                        roomItem.ExtraData = "1";
                        roomItem.UpdateState();
                        return true;
                    }
            }
            if (!ValidTile2(to.X, to.Y))
                return false;
            if (Override)
                return true;
            if (GameMap[to.X, to.Y] == 3 && !endOfPath || GameMap[to.X, to.Y] == 0 ||
                GameMap[to.X, to.Y] == 2 && !endOfPath ||
                SqAbsoluteHeight(to.X, to.Y) - SqAbsoluteHeight(@from.X, @from.Y) > 1.5)
                return false;
            RoomUser userForSquare = _room.GetRoomUserManager().GetUserForSquare(to.X, to.Y);
            if (userForSquare != null && endOfPath && !_room.RoomData.AllowWalkThrough)
            {
                user.HasPathBlocked = true;
                user.Path.Clear();
                user.IsWalking = false;
                user.RemoveStatus("mv");
                _room.GetRoomUserManager().UpdateUserStatus(user, false);
                if (user.RidingHorse && !user.IsPet && !user.IsBot)
                {
                    RoomUser roomUserByVirtualId =
                        _room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(user.HorseId));
                    roomUserByVirtualId.IsWalking = false;
                    roomUserByVirtualId.RemoveStatus("mv");
                    ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                    message.AppendInteger(1);
                    roomUserByVirtualId.SerializeStatus(message, "");
                    user.GetClient().GetHabbo().CurrentRoom.SendMessage(message);
                }
            }
            else if (userForSquare != null && !_room.RoomData.AllowWalkThrough && !userForSquare.IsWalking)
                return false;
            user.HasPathBlocked = false;
            return true;
        }
        public void Parse(GameClient session, ClientPacket packet)
        {
            int groupId = packet.PopInt();
            int userId  = packet.PopInt();

            if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(groupId, out Group group))
            {
                return;
            }

            if (userId == session.Habbo.Id)
            {
                if (group.IsMember(userId))
                {
                    group.DeleteMember(userId);
                }

                if (group.IsAdmin(userId))
                {
                    if (group.IsAdmin(userId))
                    {
                        group.TakeAdmin(userId);
                    }

                    if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(group.RoomId, out Room room))
                    {
                        return;
                    }

                    RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.Habbo.Id);
                    if (user != null)
                    {
                        user.RemoveStatus("flatctrl 1");
                        user.UpdateNeeded = true;

                        if (user.GetClient() != null)
                        {
                            user.GetClient().SendPacket(new YouAreControllerComposer(0));
                        }
                    }
                }

                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery(
                        "DELETE FROM `group_memberships` WHERE `group_id` = @GroupId AND `user_id` = @UserId");
                    dbClient.AddParameter("GroupId", groupId);
                    dbClient.AddParameter("UserId", userId);
                    dbClient.RunQuery();
                }

                session.SendPacket(new GroupInfoComposer(group, session));
                if (session.Habbo.GetStats().FavouriteGroupId == groupId)
                {
                    session.Habbo.GetStats().FavouriteGroupId = 0;
                    using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("UPDATE `user_stats` SET `groupid` = '0' WHERE `id` = @userId LIMIT 1");
                        dbClient.AddParameter("userId", userId);
                        dbClient.RunQuery();
                    }

                    if (group.AdminOnlyDeco == 0)
                    {
                        if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(group.RoomId, out Room room))
                        {
                            return;
                        }

                        RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.Habbo.Id);
                        if (user != null)
                        {
                            user.RemoveStatus("flatctrl 1");
                            user.UpdateNeeded = true;

                            if (user.GetClient() != null)
                            {
                                user.GetClient().SendPacket(new YouAreControllerComposer(0));
                            }
                        }
                    }

                    if (session.Habbo.InRoom && session.Habbo.CurrentRoom != null)
                    {
                        RoomUser user = session.Habbo.CurrentRoom.GetRoomUserManager()
                                        .GetRoomUserByHabbo(session.Habbo.Id);
                        if (user != null)
                        {
                            session.Habbo.CurrentRoom
                            .SendPacket(new UpdateFavouriteGroupComposer(group, user.VirtualId));
                        }
                        session.Habbo.CurrentRoom
                        .SendPacket(new RefreshFavouriteGroupComposer(session.Habbo.Id));
                    }
                    else
                    {
                        session.SendPacket(new RefreshFavouriteGroupComposer(session.Habbo.Id));
                    }
                }

                return;
            }

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

                if (group.IsAdmin(userId) && group.CreatorId != session.Habbo.Id)
                {
                    session.SendNotification(
                        "Sorry, only group creators can remove other administrators from the group.");
                    return;
                }

                if (group.IsAdmin(userId))
                {
                    group.TakeAdmin(userId);
                }

                if (group.IsMember(userId))
                {
                    group.DeleteMember(userId);
                }

                List <UserCache> members   = new List <UserCache>();
                List <int>       memberIds = group.GetAllMembers;
                foreach (int id in memberIds.ToList())
                {
                    UserCache groupMember = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(id);
                    if (groupMember == null)
                    {
                        continue;
                    }

                    if (!members.Contains(groupMember))
                    {
                        members.Add(groupMember);
                    }
                }


                int finishIndex  = 14 < members.Count ? 14 : members.Count;
                int membersCount = members.Count;

                session.SendPacket(new GroupMembersComposer(group, members.Take(finishIndex).ToList(), membersCount, 1,
                                                            (group.CreatorId == session.Habbo.Id || group.IsAdmin(session.Habbo.Id)), 0, ""));
            }
        }
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (Session.GetHabbo() == null)
            {
                return;
            }

            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room == null || !room.CheckRights(Session, true))
            {
                return;
            }

            StringBuilder DeleteParams = new StringBuilder();
            int           Amount       = Packet.PopInt();

            for (int index = 0; index < Amount; ++index)
            {
                if (index > 0)
                {
                    DeleteParams.Append(" OR ");
                }

                int UserId = Packet.PopInt();
                if (room.UsersWithRights.Contains(UserId))
                {
                    room.UsersWithRights.Remove(UserId);
                }

                DeleteParams.Append("room_id = '" + room.Id + "' AND user_id = '" + UserId + "'");

                RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(UserId);
                if (roomUserByHabbo != null && !roomUserByHabbo.IsBot)
                {
                    roomUserByHabbo.GetClient().SendPacket(new YouAreControllerComposer(0));

                    roomUserByHabbo.RemoveStatus("flatctrl 1");
                    roomUserByHabbo.SetStatus("flatctrl 0", "");
                    roomUserByHabbo.UpdateNeeded = true;
                }
                ServerPacket Response2 = new ServerPacket(ServerPacketHeader.FlatControllerRemovedMessageComposer);
                Response2.WriteInteger(room.Id);
                Response2.WriteInteger(UserId);
                Session.SendPacket(Response2);

                if (room.UsersWithRights.Count <= 0)
                {
                    ServerPacket Response3 = new ServerPacket(ServerPacketHeader.RoomRightsListMessageComposer);
                    Response3.WriteInteger(room.RoomData.Id);
                    Response3.WriteInteger(0);
                    Session.SendPacket(Response3);
                }
                else
                {
                    ServerPacket Response = new ServerPacket(ServerPacketHeader.RoomRightsListMessageComposer);
                    Response.WriteInteger(room.RoomData.Id);
                    Response.WriteInteger(room.UsersWithRights.Count);
                    foreach (int UserId2 in room.UsersWithRights)
                    {
                        Habbo habboForId = ButterflyEnvironment.GetHabboById(UserId2);
                        Response.WriteInteger(UserId2);
                        Response.WriteString((habboForId == null) ? "Undefined (error)" : habboForId.Username);
                    }
                    Session.SendPacket(Response);
                }
            }

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                queryreactor.RunQuery("DELETE FROM room_rights WHERE " + (DeleteParams).ToString());
        }
Exemple #35
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Opa, você esqueceu de escolher um usuário!");
                return;
            }

            RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);

            if (User == null)
            {
                return;
            }

            if (User.Statusses.ContainsKey("lay") || User.isLying || User.RidingHorse || User.IsWalking)
            {
                return;
            }

            var  Items    = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y);
            bool HasChair = Items.ToList().Where(x => x != null && x.GetBaseItem().IsSeat).Count() > 0;

            if (HasChair || User.GetClient().GetHabbo().VIPRank > 2)
            {
                return;
            }

            if (!User.Statusses.ContainsKey("sit"))
            {
                if ((User.RotBody % 2) == 0)
                {
                    if (User == null)
                    {
                        return;
                    }

                    try
                    {
                        User.Statusses.Add("sit", "1.0");
                        User.Z           -= 0.35;
                        User.isSitting    = true;
                        User.UpdateNeeded = true;
                    }
                    catch { }
                }
                else
                {
                    User.RotBody--;
                    User.Statusses.Add("sit", "1.0");
                    User.Z           -= 0.35;
                    User.isSitting    = true;
                    User.UpdateNeeded = true;
                }

                User.Frozen = true;
                User.ClearMovement(true);
                User.ForceSit = true;

                PlusEnvironment.GetGame().GetChatManager().GetCommands().Parse(User.GetClient(), ":unequip");
                Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + "', causando medo nele fazendo com que eles se sente*", 23);
            }
            else if (User.isSitting == true)
            {
                User.Z += 0.35;
                User.RemoveStatus("sit");
                User.isSitting    = false;
                User.UpdateNeeded = true;

                User.Frozen = false;
                User.ClearMovement(true);
                User.ForceSit = false;


                Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + "' fazendo com que ele se levante com medo*", 23);
            }
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!BiosEmuThiago.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (UserId == Session.GetHabbo().Id)
            {
                if (Group.IsMember(UserId))
                {
                    Group.DeleteMember(UserId);
                }

                if (Group.IsAdmin(UserId))
                {
                    if (Group.IsAdmin(UserId))
                    {
                        Group.TakeAdmin(UserId);
                    }

                    Room Room;

                    if (!BiosEmuThiago.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
                    {
                        return;
                    }

                    RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                    if (User != null)
                    {
                        User.RemoveStatus("flatctrl 1");
                        User.UpdateNeeded = true;

                        if (User.GetClient() != null)
                        {
                            User.GetClient().SendMessage(new YouAreControllerComposer(0));
                        }
                    }
                }

                using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `group_memberships` WHERE `group_id` = @GroupId AND `user_id` = @UserId");
                    dbClient.AddParameter("GroupId", GroupId);
                    dbClient.AddParameter("UserId", UserId);
                    dbClient.RunQuery();
                }

                Session.SendMessage(new GroupInfoComposer(Group, Session));
                if (Session.GetHabbo().GetStats().FavouriteGroupId == GroupId)
                {
                    Session.GetHabbo().GetStats().FavouriteGroupId = 0;
                    using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("UPDATE `user_stats` SET `groupid` = '0' WHERE `id` = @userId LIMIT 1");
                        dbClient.AddParameter("userId", UserId);
                        dbClient.RunQuery();
                    }

                    if (Group.AdminOnlyDeco == 0)
                    {
                        Room Room;
                        if (!BiosEmuThiago.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
                        {
                            return;
                        }

                        RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                        if (User != null)
                        {
                            User.RemoveStatus("flatctrl 1");
                            User.UpdateNeeded = true;

                            if (User.GetClient() != null)
                            {
                                User.GetClient().SendMessage(new YouAreControllerComposer(0));
                            }
                        }
                    }

                    if (Session.GetHabbo().InRoom&& Session.GetHabbo().CurrentRoom != null)
                    {
                        RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                        if (User != null)
                        {
                            Session.GetHabbo().CurrentRoom.SendMessage(new UpdateFavouriteGroupComposer(Session.GetHabbo().Id, Group, User.VirtualId));
                        }
                        Session.GetHabbo().CurrentRoom.SendMessage(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id));
                    }
                    else
                    {
                        Session.SendMessage(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id));
                    }
                }
                if (Group.HasChat)
                {
                    var Client = BiosEmuThiago.GetGame().GetClientManager().GetClientByUserID(UserId);
                    if (Client != null)
                    {
                        Client.SendMessage(new FriendListUpdateComposer(Group, -1));
                    }
                }
                return;
            }
            else
            {
                if (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id))
                {
                    if (!Group.IsMember(UserId))
                    {
                        return;
                    }

                    if (Group.IsAdmin(UserId) && Group.CreatorId != Session.GetHabbo().Id)
                    {
                        Session.SendNotification("Sentimos muito, mas só os criadores do grupo podem tirar os ADM");
                        return;
                    }

                    if (Group.IsAdmin(UserId))
                    {
                        Group.TakeAdmin(UserId);
                    }

                    if (Group.IsMember(UserId))
                    {
                        Group.DeleteMember(UserId);
                    }

                    List <UserCache> Members   = new List <UserCache>();
                    List <int>       MemberIds = Group.GetAllMembers;
                    foreach (int Id in MemberIds.ToList())
                    {
                        UserCache GroupMember = BiosEmuThiago.GetGame().GetCacheManager().GenerateUser(Id);
                        if (GroupMember == null)
                        {
                            continue;
                        }

                        if (!Members.Contains(GroupMember))
                        {
                            Members.Add(GroupMember);
                        }
                    }


                    int FinishIndex  = 14 < Members.Count ? 14 : Members.Count;
                    int MembersCount = Members.Count;

                    Session.SendMessage(new GroupMembersComposer(Group, Members.Take(FinishIndex).ToList(), MembersCount, 1, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), 0, ""));
                    if (Group.HasChat)
                    {
                        var Client = BiosEmuThiago.GetGame().GetClientManager().GetClientByUserID(UserId);
                        if (Client != null)
                        {
                            Client.SendMessage(new FriendListUpdateComposer(Group, -1));
                        }
                    }
                }
            }
        }
Exemple #37
0
        private void CalculatePath(RoomUser User, ref bool updated)
        {
            Gamemap map = room.GetGameMap();
            SquarePoint Point = DreamPathfinder.GetNextStep(User.X, User.Y, User.Z, User.GoalX, User.GoalY, map.GameMap, map.GetStackmap(), map.Model.SqFloorHeight,
                map.Model.MapSizeX, map.Model.MapSizeY, User.AllowOverride, map.DiagonalEnabled, map);

            if (Point.X == User.X && Point.Y == User.Y) //No path found, or reached goal (:
            {
                User.IsWalking = false;
                User.IsHorseWalking = false;
                User.OnStopWalk();
                User.RemoveStatus("mv");

                UpdateUserStatus(User, false);
            }
            else
            {
                HandleSetMovement(Point, User, ref updated, true);
                if (User.IsPet && User.PetGotUserRiding())
                {
                    RoomUser ridingPet = User.GetRoomUserRiding();
                    SetStepForUser(ridingPet);
                    HandleSetMovement(Point, ridingPet, ref updated, false);
                    UpdateUserEffect(ridingPet, ridingPet.X, ridingPet.Y);
                    ridingPet.UpdateNeeded = true;
                    FinishUserCycle(ridingPet);
                }
            }

            User.UpdateNeeded = true;
        }