public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (!Room.CheckRights(Session, true))
            {
                return;
            }

            Room.GetRoomItemHandler().RemoveItems(Session);

            using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `room_id` = @RoomId AND `user_id` = @UserId");
                dbClient.AddParameter("RoomId", Room.Id);
                dbClient.AddParameter("UserId", Session.GetHabbo().Id);
                dbClient.RunQuery();
            }

            List <Item> Items = Room.GetRoomItemHandler().GetWallAndFloor.ToList();

            if (Items.Count > 0)
            {
                Session.SendWhisper("Er zijn nog steeds items in deze kamer. Gebruik :pickalles om ook die op te pakken!");
            }

            Session.SendMessage(new FurniListUpdateComposer());
        }
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (!Room.CheckRights(Session, true))
            {
                return;
            }

            Room.GetRoomItemHandler().RemoveItems(Session);
            Room.GetGameMap().GenerateMaps();

            using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `room_id` = @RoomId AND `user_id` = @UserId");
                dbClient.AddParameter("RoomId", Room.Id);
                dbClient.AddParameter("UserId", Session.GetHabbo().Id);
                dbClient.RunQuery();
                Session.LogsNotif("Todos mobis foram coletados", "command_notification");
            }

            List <Item> Items = Room.GetRoomItemHandler().GetWallAndFloor.ToList();

            if (Items.Count > 0)
            {
                Session.SendWhisper("Ainda há mais elementos nesta sala, removidos manualmente ou usar: ejectall expulsá-los!");
            }

            Session.SendMessage(new FurniListUpdateComposer());
        }
예제 #3
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (!Room.CheckRights(Session, true))
            {
                return;
            }

            Room.GetRoomItemHandler().RemoveItems(Session);
            Room.GetGameMap().GenerateMaps();

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `room_id` = @RoomId AND `user_id` = @UserId");
                dbClient.AddParameter("RoomId", Room.Id);
                dbClient.AddParameter("UserId", Session.GetHabbo().Id);
                dbClient.RunQuery();
            }

            List <Item> Items = Room.GetRoomItemHandler().GetWallAndFloor.ToList();

            if (Items.Count > 0)
            {
                Session.SendWhisper("There are still more items in this room, manually remove them or use :ejectall to eject them!");
            }

            Session.SendPacket(new FurniListUpdateComposer());
        }
예제 #4
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Room == null)
            {
                return;
            }
            //if (PlusEnvironment.GetGame().GetCatalog().GetPredesignedRooms().Exists((uint)Room.Id))
            //{
            //    Session.SendWhisper("La sala ya está agregada en la lista.");
            //    return;
            //}

            StringBuilder itemAmounts = new StringBuilder(), floorItemsData = new StringBuilder(), wallItemsData = new StringBuilder(),
                          decoration = new StringBuilder();
            var floorItems           = Room.GetRoomItemHandler().GetFloor;
            var wallItems            = Room.GetRoomItemHandler().GetWall;

            foreach (var roomItem in floorItems)
            {
                var itemCount = floorItems.Count(item => item.BaseItem == roomItem.BaseItem);
                if (!itemAmounts.ToString().Contains(roomItem.BaseItem + "," + itemCount + ";"))
                {
                    itemAmounts.Append(roomItem.BaseItem + "," + itemCount + ";");
                }

                floorItemsData.Append(roomItem.BaseItem + "$$$$" + roomItem.GetX + "$$$$" + roomItem.GetY + "$$$$" + roomItem.GetZ +
                                      "$$$$" + roomItem.Rotation + "$$$$" + roomItem.ExtraData + ";");
            }
            foreach (var roomItem in wallItems)
            {
                var itemCount = wallItems.Count(item => item.BaseItem == roomItem.BaseItem);
                if (!itemAmounts.ToString().Contains(roomItem.BaseItem + "," + itemCount + ";"))
                {
                    itemAmounts.Append(roomItem.BaseItem + "," + itemCount + ";");
                }

                wallItemsData.Append(roomItem.BaseItem + "$$$$" + roomItem.wallCoord + "$$$$" + roomItem.ExtraData + ";");
            }

            decoration.Append(Room.RoomData.FloorThickness + ";" + Room.RoomData.WallThickness + ";" +
                              Room.RoomData.Model.WallHeight + ";" + Room.RoomData.Hidewall + ";" + Room.RoomData.Wallpaper + ";" +
                              Room.RoomData.Landscape + ";" + Room.RoomData.Floor);

            using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("INSERT INTO catalog_predesigned_rooms(room_model,flooritems,wallitems,catalogitems,room_id,room_decoration) VALUES('" + Room.RoomData.ModelName +
                                  "', '" + floorItemsData + "', '" + wallItemsData + "', '" + itemAmounts + "', " + Room.Id + ", '" + decoration + "');");
                var predesignedId = (uint)dbClient.InsertQuery();

                PlusEnvironment.GetGame().GetCatalog().GetPredesignedRooms().predesignedRoom.Add(predesignedId,
                                                                                                 new PredesignedRooms(predesignedId, (uint)Room.Id, Room.RoomData.ModelName,
                                                                                                                      floorItemsData.ToString().TrimEnd(';'), wallItemsData.ToString().TrimEnd(';'),
                                                                                                                      itemAmounts.ToString().TrimEnd(';'), decoration.ToString()));
            }

            Session.SendWhisper("O quarto foi salvo com sucesso na lista.");
        }
예제 #5
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            RoomUser roomUser = Room?.GetRoomUserManager()?.GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (roomUser == null)
            {
                return;
            }

            List <Items.Item> userBooth = Room.GetRoomItemHandler().GetFloor.Where(x => x != null && Gamemap.TilesTouching(
                                                                                       x.Coordinate, roomUser.Point) && x.Data.InteractionType == Items.InteractionType.DICE).ToList();

            if (userBooth.Count != 5)
            {
                Session.SendWhisper("Oeps! Er zijn helaas geen vijf dices gevonden.");
                return;
            }

            userBooth.ForEach(x => {
                x.ExtraData = "0";
                x.UpdateState();
            });

            Session.SendWhisper("Hoppa! De dices zijn gesloten.");
        }
예제 #6
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            RoomUser roomUser = Room?.GetRoomUserManager()?.GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (roomUser == null)
            {
                return;
            }

            List <Items.Item> userBooth = Room.GetRoomItemHandler().GetFloor.Where(x => x != null && Gamemap.TilesTouching(
                                                                                       x.Coordinate, roomUser.Coordinate) && x.Data.InteractionType == Items.InteractionType.DICE).ToList();

            if (userBooth.Count != 5)
            {
                Session.SendWhisper("Debes tener 5 dados cerca de ti.", 34);
                return;
            }

            userBooth.ForEach(x => {
                x.ExtraData = "0";
                x.UpdateState();
            });

            Session.SendWhisper("Los dados han sido cerrados", 34);
        }
예제 #7
0
        internal bool PlayVideoInRoom(Rooms.Room Room, string Video)
        {
            Video = Video.Replace("http://www.youtube.", "");
            Video = Video.Replace("www.youtube.", "");
            try
            {
                Video = Video.Split('=')[1];
            }
            catch { return(false); }

            if (Video == "")
            {
                return(false);
            }

            foreach (PlayerTV Tv in LoadedTVs.Values)
            {
                if (Tv.RoomId == Room.RoomId)
                {
                    Tv.CustomVideo = Video;

                    RoomItem Item = Room.GetRoomItemHandler().GetItem(Tv.Item);
                    if (Item != null)
                    {
                        Item.ExtraData = Video;
                        var ServerMessage = new ServerMessage(Outgoing.UpdateRoomItemMessageComposer);
                        Item.Serialize(ServerMessage);
                        Room.SendMessage(ServerMessage);
                    }
                }
            }

            return(true);
        }
예제 #8
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Session.GetHabbo().VIPRank < 2 && Room.OwnerId != Session.GetHabbo().Id)
            {
                House House;
                if (Room.TryGetHouse(out House))
                {
                    if (House.OwnerId != Session.GetHabbo().Id)
                    {
                        Session.SendWhisper("Somente o proprietário do apartamento pode usar esse comando!", 1);
                        return;
                    }
                }
                else
                {
                    Session.SendWhisper("Desculpe, este quarto não é uma casa!", 1);
                    return;
                }
            }

            Room.GetRoomItemHandler().RemoveItems(Session);

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `items` SET `room_id` = '0', `user_id` = @UserId WHERE `room_id` = @RoomId");
                dbClient.AddParameter("RoomId", Room.Id);
                dbClient.AddParameter("UserId", Session.GetHabbo().Id);
                dbClient.RunQuery();
            }

            List <Item> Items = Room.GetRoomItemHandler().GetWallAndFloor.ToList();

            if (Items.Count > 0)
            {
                Session.SendWhisper("Ainda há mais itens nesta sala, remova-os manualmente!", 1);
            }

            Session.SendMessage(new FurniListUpdateComposer());
        }
예제 #9
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Oops, debes especificar si quieres comenzar modo casino o dar pl! Escribe :casino start o :casino pl", 34);
                return;
            }
            string query = Params[1];

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

            if (roomUser == null)
            {
                return;
            }

            List <Items.Item> userBooth = Room.GetRoomItemHandler().GetFloor.Where(x => x != null && Gamemap.TilesTouching(
                                                                                       x.Coordinate, roomUser.Coordinate) && x.Data.InteractionType == Items.InteractionType.DICE).ToList();

            if (userBooth.Count != 5)
            {
                Session.SendWhisper("Debes tener 5 dados cerca para iniciar un juego de da2", 34);
                return;
            }

            if (query == "pl" || query == "PL")
            {
                Room.SendMessage(RoomNotificationComposer.SendBubble("ganador", "El usuario " + Session.GetHabbo().Username + " ha sacado " + Session.GetHabbo().casinoCount + " en los dados (PL Automatico)", ""));
                Session.GetHabbo().casinoEnabled = false;
                Session.GetHabbo().casinoCount   = 0;
            }
            else if (query == "start" || query == "START")
            {
                Session.SendWhisper("Has iniciado el modo casino. El contador de dados esta activado", 34);
                Session.GetHabbo().casinoEnabled = true;
            }
            else
            {
                Session.SendWhisper("Oops, debes especificar si quieres comenzar modo casino o dar pl! Escribe :casino start o :casino pl");
            }
        }
예제 #10
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Room.MoodlightData == null)
            {
                foreach (Item Item in Room.GetRoomItemHandler().GetWall.ToList())
                {
                    if (Item.GetBaseItem().InteractionType == InteractionType.MOODLIGHT)
                    {
                        Room.MoodlightData = new MoodlightData(Item.Id);
                    }
                }
            }

            if (Room.MoodlightData == null)
            {
                Session.SendWhisper("Opa, parece que não há reguladores de luz nesta sala!", 1);
                return;
            }

            Session.SendMessage(new MoodlightConfigComposer(Room.MoodlightData));
        }
예제 #11
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            string height = Params[1];

            if (Session.GetHabbo().Id == Room.OwnerId)
            {
                if (!Room.CheckRights(Session, true))
                {
                    return;
                }
                Item[] items = Room.GetRoomItemHandler().GetFloor.ToArray();
                foreach (Item Item in items.ToList())
                {
                    GameClient TargetClient = RavenEnvironment.GetGame().GetClientManager().GetClientByUserID(Item.UserID);
                    if (Item.GetBaseItem().InteractionType == InteractionType.STACKTOOL)
                    {
                        Room.SendMessage(new UpdateMagicTileComposer(Item.Id, int.Parse(height)));
                    }
                }
            }
        }
예제 #12
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Session.GetHabbo().Id == Room.OwnerId)
            {
                //Let us check anyway.
                if (!Room.CheckRights(Session, true))
                {
                    return;
                }

                foreach (Item Item in Room.GetRoomItemHandler().GetWallAndFloor.ToList())
                {
                    if (Item == null || Item.UserID == Session.GetHabbo().Id)
                    {
                        continue;
                    }

                    GameClient TargetClient = CloudServer.GetGame().GetClientManager().GetClientByUserID(Item.UserID);
                    if (TargetClient != null && TargetClient.GetHabbo() != null)
                    {
                        Room.GetRoomItemHandler().RemoveFurniture(TargetClient, Item.Id);
                        TargetClient.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, Item.LimitedNo, Item.LimitedTot);
                        TargetClient.GetHabbo().GetInventoryComponent().UpdateItems(false);
                    }
                    else
                    {
                        Room.GetRoomItemHandler().RemoveFurniture(null, Item.Id);
                        using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
                        {
                            dbClient.runFastQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = '" + Item.Id + "' LIMIT 1");
                        }
                    }
                }
            }
            else
            {
                foreach (Item Item in Room.GetRoomItemHandler().GetWallAndFloor.ToList())
                {
                    if (Item == null || Item.UserID != Session.GetHabbo().Id)
                    {
                        continue;
                    }

                    GameClient TargetClient = CloudServer.GetGame().GetClientManager().GetClientByUserID(Item.UserID);
                    if (TargetClient != null && TargetClient.GetHabbo() != null)
                    {
                        Room.GetRoomItemHandler().RemoveFurniture(TargetClient, Item.Id);
                        TargetClient.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, Item.LimitedNo, Item.LimitedTot);
                        TargetClient.GetHabbo().GetInventoryComponent().UpdateItems(false);
                    }
                    else
                    {
                        Room.GetRoomItemHandler().RemoveFurniture(null, Item.Id);
                        using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
                        {
                            dbClient.runFastQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = '" + Item.Id + "' LIMIT 1");
                        }
                    }
                }
            }
        }
예제 #13
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Por favor, insira o item que você gostaria de entregar!", 1);
                return;
            }

            if (RoleplayManager.CalledDelivery)
            {
                Session.SendWhisper("O remetente está muito ocupado agora mesmo! Por favor, tente novamente mais tarde.", 1);
                return;
            }

            bool DeliveryCame = false;

            string Item = Params[1];

            switch (Item.ToLower())
            {
                #region Weapons
            case "glock":
            case "magnum":
            case "mp5":
            case "pistola":
            {
                if (!Room.DeliveryEnabled)
                {
                    Session.SendWhisper("O remetente não entrega a este quarto!", 1);
                    break;
                }

                if (!Session.GetRoleplay().IsWorking&& !Session.GetHabbo().GetPermissions().HasRight("offer_anything"))
                {
                    Session.SendWhisper("Você deve estar trabalhando para chamar o homem de entrega!", 1);
                    break;
                }

                if (!GroupManager.HasJobCommand(Session, "weapon") && !Session.GetHabbo().GetPermissions().HasRight("offer_anything"))
                {
                    Session.SendWhisper("Você não trabalha na loja de armas!", 1);
                    break;
                }

                var Weapon = WeaponManager.getWeapon(Item.ToLower());

                if (Weapon == null)
                {
                    Session.SendWhisper("Por algum motivo, esta arma não pôde ser encontrada", 1);
                    break;
                }

                if (Weapon.Stock > 0)
                {
                    Session.SendWhisper("Aguarde até o " + Weapon.PublicName + " acabar o estoque para chamar o entregador!", 1);
                    break;
                }

                RoleplayBot Bot = RoleplayBotManager.GetCachedBotByAI(RoleplayBotAIType.DELIVERY);

                if (Bot == null)
                {
                    Session.SendWhisper("Nenhum mecanismo de entrega foi encontrado, entre em contato com um membro da equipe!", 1);
                    break;
                }

                RoleplayManager.UserWhoCalledDelivery = Session.GetHabbo().Id;
                RoleplayManager.CalledDelivery        = true;
                RoleplayManager.DeliveryWeapon        = Weapon;

                new Thread(() =>
                    {
                        if (Session.GetRoomUser() != null)
                        {
                            Session.Shout("*Pega seu telefone e chama o remetente, ordenando um novo estoque de " + Weapon.PublicName + "*", 4);
                            Session.GetRoomUser().ApplyEffect(EffectsList.CellPhone);
                        }

                        Thread.Sleep(3000);

                        if (Session.GetRoomUser() != null)
                        {
                            Session.GetRoomUser().ApplyEffect(0);
                        }
                    }).Start();

                var BotUser = RoleplayBotManager.GetDeployedBotById(Bot.Id);
                new Thread(() =>
                    {
                        Thread.Sleep(15000);


                        RoleplayBot DeliverrBot = RoleplayBotManager.GetCachedBotByAI(RoleplayBotAIType.DELIVERY);

                        if (!DeliveryCame)
                        {
                            if (DeliverrBot == null)
                            {
                                Session.SendWhisper("Não é possível obter o bot de entrega, tente novamente mais tarde!", 1);
                                Thread.CurrentThread.Abort();
                                return;
                            }
                            else
                            {
                                RoleplayBotManager.DeployBotByAI(RoleplayBotAIType.DELIVERY, "default", Room.Id);
                                DeliveryCame = true;
                            }
                        }

                        while (Room != null && Room.GetRoomItemHandler() != null && Room.GetRoomItemHandler().GetFloor.Where(x => x.GetBaseItem().InteractionType == HabboHotel.Items.InteractionType.DELIVERY_BOX).ToList().Count <= 0)
                        {
                            Thread.Sleep(10);
                        }

                        Thread.Sleep(2000);
                        RoleplayManager.CalledDelivery = false;
                    }).Start();
                break;
            }
                #endregion

                #region Default
            default:
            {
                Session.SendWhisper("Isso não é um item entregue!", 1);
                break;
            }
                #endregion
            }
        }
예제 #14
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Digite o nome de usuário do usuário que deseja puxar.", 1);
                return;
            }

            if (!Room.PullEnabled && !Session.GetHabbo().GetPermissions().HasRight("room_override_custom_config"))
            {
                Session.SendWhisper("Você não pode puxar este quarto!", 1);
                return;
            }

            if (Session.GetRoleplay().StaffOnDuty || Session.GetRoleplay().AmbassadorOnDuty&& !Session.GetHabbo().GetPermissions().HasRight("room_override_custom_config"))
            {
                Session.SendWhisper("Você não pode puxar alguém enquanto você está plantão!", 1);
                return;
            }

            GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

            if (TargetClient == null)
            {
                Session.SendWhisper("Ocorreu um erro ao encontrar esse usuário, talvez ele não esteja online.", 1);
                return;
            }

            RoomUser TargetUser = Room.GetRoomUserManager().GetRoomUserByHabbo(TargetClient.GetHabbo().Username);

            if (TargetUser == null)
            {
                Session.SendWhisper("Ocorreu um erro ao encontrar esse usuário, talvez eles não estejam online ou no quarto.", 1);
                return;
            }

            if (TargetClient.GetHabbo().Username == Session.GetHabbo().Username)
            {
                Session.SendWhisper("Você não pode se puxar!", 1);
                return;
            }

            if (TargetUser.IsAsleep)
            {
                Session.SendWhisper("Você não pode puxar alguém está ausente!", 1);
                return;
            }

            if (TargetUser.TeleportEnabled)
            {
                Session.SendWhisper("Opa, você não pode puxar um usuário enquanto ele está com o modo teleporte ativado!", 1);
                return;
            }

            if (TargetClient.GetRoleplay().StaffOnDuty)
            {
                Session.SendWhisper("Você não pode puxar um membro da equipe que está de plantão!", 1);
                return;
            }

            if (TargetClient.GetRoleplay().AmbassadorOnDuty)
            {
                Session.SendWhisper("Você não pode puxar um embaixador que está de plantão!", 1);
                return;
            }

            if (Session.GetRoleplay().Team != null && TargetClient.GetRoleplay().Team != null)
            {
                if (Session.GetRoleplay().Team == TargetClient.GetRoleplay().Team)
                {
                    Session.SendWhisper("Você não pode puxar o membro da sua equipe enquanto estiver dentro de um evento!", 1);
                    return;
                }
            }

            if (Session.GetRoleplay().TryGetCooldown("pull"))
            {
                return;
            }

            RoomUser ThisUser = Session.GetRoomUser();

            if (ThisUser == null)
            {
                return;
            }

            if (!HabboRoleplay.Misc.RoleplayManager.PushPullOnArrows)
            {
                if (TargetClient.GetRoleplay().Game == null || TargetClient.GetRoleplay().Team == null)
                {
                    List <Item> RoomArrow = Room.GetRoomItemHandler().GetFloor.Where(x => x != null && x.GetBaseItem() != null && x.GetBaseItem().InteractionType == InteractionType.ARROW && (ThisUser.RotBody == 0 ? TargetUser.SetY - 1 == x.GetY : (ThisUser.RotBody == 1 ? TargetUser.SetX + 1 == x.GetX && TargetUser.Y - 1 == x.GetY : (ThisUser.RotBody == 2 ? TargetUser.SetX + 1 == x.GetX : (ThisUser.RotBody == 3 ? TargetUser.X + 1 == x.GetX && TargetUser.Y + 1 == x.GetY : (ThisUser.RotBody == 4 ? TargetUser.SetY + 1 == x.GetY : (ThisUser.RotBody == 5 ? TargetUser.X - 1 == x.GetX && TargetUser.Y + 1 == x.GetY : (ThisUser.RotBody == 6 ? TargetUser.SetX - 1 == x.GetX : (ThisUser.RotBody == 7 ? TargetUser.X - 1 == x.GetX && TargetUser.Y - 1 == x.GetY : false))))))))).ToList();
                    if (RoomArrow.Count > 0)
                    {
                        Session.SendWhisper("Você não pode retirar os usuários desta sala!", 1);
                        return;
                    }
                }
            }

            string PushDirection = "down";

            if (TargetClient.GetHabbo().CurrentRoomId == Session.GetHabbo().CurrentRoomId&& (Math.Abs(ThisUser.X - TargetUser.X) < 3 && Math.Abs(ThisUser.Y - TargetUser.Y) < 3))
            {
                if (ThisUser.RotBody == 0)
                {
                    PushDirection = "up";
                }
                if (ThisUser.RotBody == 2)
                {
                    PushDirection = "right";
                }
                if (ThisUser.RotBody == 4)
                {
                    PushDirection = "down";
                }
                if (ThisUser.RotBody == 6)
                {
                    PushDirection = "left";
                }

                if (PushDirection == "up")
                {
                    TargetUser.MoveTo(ThisUser.X, ThisUser.Y - 1);
                }

                if (PushDirection == "right")
                {
                    TargetUser.MoveTo(ThisUser.X + 1, ThisUser.Y);
                }

                if (PushDirection == "down")
                {
                    TargetUser.MoveTo(ThisUser.X, ThisUser.Y + 1);
                }

                if (PushDirection == "left")
                {
                    TargetUser.MoveTo(ThisUser.X - 1, ThisUser.Y);
                }

                Session.Shout("*Puxa " + TargetClient.GetHabbo().Username + " em minha direção*", 4);
                Session.GetRoleplay().CooldownManager.CreateCooldown("pull", 1000, 3);
                return;
            }
            else
            {
                Session.SendWhisper("Esse usuário não está perto o suficiente, tente se aproximar!", 1);
                return;
            }
        }
예제 #15
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Variables
            bool     Stolen  = false;
            int      DrinkId = 0;
            Item     Item    = null;
            RoomUser User    = Session.GetRoomUser();
            #endregion

            #region Conditions
            if (User == null)
            {
                return;
            }

            foreach (Item item in Room.GetRoomItemHandler().GetFloor)
            {
                if (item.GetX == User.SquareInFront.X && item.GetY == User.SquareInFront.Y)
                {
                    if (FoodManager.GetFood(item.BaseItem) != null)
                    {
                        Item    = item;
                        DrinkId = item.BaseItem;
                    }
                }
            }

            Food Food = FoodManager.GetFood(DrinkId);

            if (Food == null || Item == null)
            {
                Session.SendWhisper("Não há bebida na sua frente!", 1);
                return;
            }

            if (Food.Type != "drink")
            {
                if (Food.Type == "food")
                {
                    Session.SendWhisper("Use o comando :comer para comer isso!", 1);
                    return;
                }
                else
                {
                    Session.SendWhisper("Você não pode beber isso!", 1);
                    return;
                }
            }

            if (Session.GetRoleplay().IsDead)
            {
                Session.SendWhisper("Você não pode beber coisas enquanto está morto!", 1);
                return;
            }

            if (Session.GetRoleplay().IsJailed)
            {
                Session.SendWhisper("Você não pode beber coisas enquanto está preso!", 1);
                return;
            }

            if (Session.GetRoleplay().CurEnergy >= Session.GetRoleplay().MaxEnergy)
            {
                Session.SendWhisper("Sua energia já está esgotada!", 1);
                return;
            }

            if (Food.Cost > 0)
            {
                if (Session.GetHabbo().Credits < Food.Cost)
                {
                    if (Session.GetRoleplay().RobItem != Item)
                    {
                        Session.GetRoleplay().RobItem = Item;
                        Session.SendWhisper("Você não tem dinheiro suficiente para pagar isso! Tente de novo...", 1);
                        return;
                    }
                    else
                    {
                        Session.GetRoleplay().RobItem = null;
                        Session.SendWhisper("Você bebeu sem pagar! Fique atento se alguém o viu!", 1);
                        Stolen = true;
                    }
                }
            }
            #endregion

            #region Execute
            string EatText = Food.EatText;

            if (Food.Health == 0)
            {
                EatText = EatText.Replace("[HEALTH]", "");
            }
            else
            {
                EatText = EatText.Replace("[HEALTH]", "[+" + Food.Health + " HP]");
            }

            if (Food.Energy == 0)
            {
                EatText = EatText.Replace("[ENERGY]", "");
            }
            else
            {
                EatText = EatText.Replace("[ENERGY]", "[+" + Food.Energy + " Energia]");
            }

            if (Food.Cost == 0)
            {
                EatText = EatText.Replace("[COST]", "");
            }
            else
            {
                EatText = EatText.Replace("[COST]", "[-$" + Food.Cost + "]");
            }

            if (Food.Hunger == 0)
            {
                EatText = EatText.Replace("[HUNGER]", "");
            }
            else
            {
                EatText = EatText.Replace("[HUNGER]", "[-" + Food.Hunger + " Fome]");
            }

            if (!Food.Name.ToLower().Contains("bleach"))
            {
                PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_Drinking", 1);
                PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.DRINK_DRINK);
            }

            if (Food.Hunger > 0)
            {
                int HungerChange = Session.GetRoleplay().Hunger - Food.Hunger;

                if (HungerChange <= 0)
                {
                    Session.GetRoleplay().Hunger = 0;
                }
                else
                {
                    Session.GetRoleplay().Hunger = HungerChange;
                }
            }

            if (Food.Energy > 0)
            {
                int EnergyChange = Session.GetRoleplay().CurEnergy + Food.Energy;

                if (EnergyChange >= Session.GetRoleplay().MaxEnergy)
                {
                    Session.GetRoleplay().CurEnergy = Session.GetRoleplay().MaxEnergy;
                }
                else
                {
                    Session.GetRoleplay().CurEnergy = EnergyChange;
                }
            }

            if (Food.Health > 0)
            {
                int HealthChange = Session.GetRoleplay().CurHealth + Food.Health;

                if (HealthChange >= Session.GetRoleplay().MaxHealth)
                {
                    Session.GetRoleplay().CurHealth = Session.GetRoleplay().MaxHealth;
                }
                else
                {
                    Session.GetRoleplay().CurHealth = HealthChange;
                }
            }

            if (Food.Cost > 0 && !Stolen)
            {
                Session.GetHabbo().Credits -= Food.Cost;
                Session.GetHabbo().UpdateCreditsBalance();
            }

            string FoodName = Food.Name.Substring(0, 1).ToUpper() + Food.Name.Substring(1);

            if (FoodName.ToLower().Contains("bleach"))
            {
                Session.Shout(EatText, 4);

                // kill the civilian, haha
                Session.GetRoleplay().CurHealth = 0;
            }
            else
            {
                if (Stolen)
                {
                    Session.Shout("*Rapidamente bebe o " + FoodName + " sem pagar*", 4);

                    if (!Session.GetRoleplay().WantedFor.Contains("roubando bebidas"))
                    {
                        Session.GetRoleplay().WantedFor = Session.GetRoleplay().WantedFor + "roubando bebidas, ";
                    }
                }
                else
                {
                    Session.Shout(EatText, 4);
                }
            }

            if (Item.InteractingUser > 0 && !Stolen)
            {
                var Server = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Item.InteractingUser);

                if (Server != null)
                {
                    if (Session != Server)
                    {
                        Server.GetHabbo().Credits += 1;
                        Server.GetHabbo().UpdateCreditsBalance();
                        Server.SendWhisper("Você ganhou R$1 por servir alguma bebida para " + Session.GetHabbo().Username + "!", 1);
                        PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Server, "ACH_ServingDrinks", 1);
                    }
                }

                Item.InteractingUser = 0;
            }

            Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id);
            #endregion
        }
예제 #16
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Opa, você esqueceu de entrar em um comando!", 1);
                return;
            }

            string Command = Convert.ToString(Params[1]);

            switch (Command)
            {
                #region follow
            case "follow":
            case "followme":
            case "mesiga":
            {
                RoomUser Target = null;

                foreach (RoomUser Bot in Room.GetRoomUserManager()._bots.Values)
                {
                    if (!Bot.IsRoleplayBot)
                    {
                        continue;
                    }

                    Target = Bot;
                }

                if (Target == null)
                {
                    Session.SendWhisper("Nenhum BOT para interagir foi encontrado, desculpe!");
                    return;
                }

                Target.GetBotRoleplay().UserFollowing = Session;
                Target.GetBotRoleplay().Following     = true;

                Session.Shout("*Avisa " + Target.GetBotRoleplay().Name + " para me seguir");

                return;
            }
            break;
                #endregion

                #region attack
            case "attack":
            case "attackme":
            case "fight":
            case "fightme":
            case "atacar":
            {
                RoomUser Target = null;

                foreach (RoomUser Bot in Room.GetRoomUserManager()._bots.Values)
                {
                    if (!Bot.IsRoleplayBot)
                    {
                        continue;
                    }

                    Target = Bot;
                }

                if (Target == null)
                {
                    Session.SendWhisper("Nenhum BOT para interagir foi encontrado, desculpe!");
                    return;
                }

                Target.GetBotRoleplay().UserAttacking = Session;
                Target.GetBotRoleplay().Roaming       = false;
                Target.GetBotRoleplay().Attacking     = true;

                Session.Shout("*Avisa " + Target.GetBotRoleplay().Name + " para me atacar");

                return;
            }
            break;
                #endregion

                #region tele
            case "randomtele":
            case "tele":
            {
                RoomUser Target   = null;
                Item     Randtele = null;
                foreach (RoomUser Bot in Room.GetRoomUserManager()._bots.Values)
                {
                    if (!Bot.IsRoleplayBot)
                    {
                        continue;
                    }

                    Target = Bot;
                }

                if (Target == null)
                {
                    Session.SendWhisper("Nenhum BOT para interagir foi encontrado, desculpe!");
                    return;
                }

                foreach (Item Item in Room.GetRoomItemHandler().GetFloor.ToList())
                {
                    if (Item == null || Item.GetBaseItem() == null)
                    {
                        continue;
                    }

                    if (Item.GetBaseItem().InteractionType != InteractionType.ARROW)
                    {
                        continue;
                    }

                    Randtele = Item;
                }

                if (Randtele == null)
                {
                    Session.SendWhisper("Não foi encontrado TELEPORTE para interagir, desculpe!");
                    return;
                }


                Target.GetBotRoleplay().TeleporterEntering = Randtele;
                int LinkedTele = ItemTeleporterFinder.GetLinkedTele(Target.GetBotRoleplay().TeleporterEntering.Id, Room);
                int TeleRoomId = ItemTeleporterFinder.GetTeleRoomId(LinkedTele, Room);

                Room NewRoom = RoleplayManager.GenerateRoom(TeleRoomId);

                Target.GetBotRoleplay().TeleporterExiting = NewRoom.GetRoomItemHandler().GetItem(LinkedTele);
                Target.GetBotRoleplay().Teleporting       = true;

                Session.Shout("*Avisa " + Target.GetBotRoleplay().Name + " para pisar na seta*");

                return;
            }
            break;
                #endregion
            }
        }
예제 #17
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length < 2)
            {
                Session.SendWhisper("Sintaxe de comando inválida! Use :montar <usuário>", 1);
                return;
            }

            string Username = Convert.ToString(Params[1]);

            RoomUser UserHorsie = Room.GetRoomUserManager().GetRoomUserByHabbo(Username);

            #region Conditions
            if (UserHorsie == null)
            {
                Session.SendWhisper("Usuário não encontrado ou não é um cavalo!", 1);
                return;
            }

            if (UserHorsie.GetClient() == null)
            {
                Session.SendWhisper("Usuário não encontrado ou não é um cavalo!", 1);
                return;
            }

            if (UserHorsie.GetClient().GetHabbo() == null)
            {
                Session.SendWhisper("Usuário não encontrado ou não é um cavalo!", 1);
                return;
            }

            if (UserHorsie.GetClient().GetHabbo().PetId <= 0)
            {
                Session.SendWhisper("Usuário não é um cavalo!", 1);
                return;
            }
            #endregion


            if (UserHorsie.RidingHorse)
            {
                Session.SendWhisper("Este usuário já está sendo montado!", 1);
                return;
            }

            if (UserHorsie.HorseID == Session.GetRoomUser().VirtualId)
            {
                // unmount
                UserHorsie.Statusses.Remove("sit");
                UserHorsie.Statusses.Remove("lay");
                UserHorsie.Statusses.Remove("snf");
                UserHorsie.Statusses.Remove("eat");
                UserHorsie.Statusses.Remove("ded");
                UserHorsie.Statusses.Remove("jmp");
                Session.GetRoomUser().RidingHorse = false;
                Session.GetRoomUser().HorseID     = 0;
                UserHorsie.RidingHorse = false;
                UserHorsie.HorseID     = 0;
                Session.GetRoomUser().MoveTo(new Point(Session.GetRoomUser().X + 2, Session.GetRoomUser().Y + 2));
                Session.GetRoomUser().ApplyEffect(-1);
                Session.GetRoomUser().UpdateNeeded = true;
                UserHorsie.UpdateNeeded = true;
            }
            else
            {
                int NewX2 = Session.GetRoomUser().X;
                int NewY2 = Session.GetRoomUser().Y;
                Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(UserHorsie, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2)));
                Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(Session.GetRoomUser(), new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2) + 1));

                Session.GetRoomUser().MoveTo(NewX2, NewY2);

                UserHorsie.ClearMovement(true);

                Session.GetRoomUser().RidingHorse = true;
                UserHorsie.RidingHorse = true;
                UserHorsie.HorseID     = Session.GetRoomUser().VirtualId;
                Session.GetRoomUser().HorseID = UserHorsie.VirtualId;

                Session.GetRoomUser().ApplyEffect(77);

                Session.GetRoomUser().RotBody = UserHorsie.RotBody;
                Session.GetRoomUser().RotHead = UserHorsie.RotHead;

                Session.GetRoomUser().UpdateNeeded = true;
                UserHorsie.UpdateNeeded = true;


                Session.Shout("*Pula em " + UserHorsie.GetClient().GetHabbo().Username + ", e começa a cavalgar como sua vadia*");
            }
        }
예제 #18
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Digite o nome de usuário do usuário que deseja empurrar.", 1);
                return;
            }

            if (!Room.PushEnabled && !Session.GetHabbo().GetPermissions().HasRight("room_override_custom_config"))
            {
                Session.SendWhisper("Você não pode empurrar nesta sala!", 1);
                return;
            }

            if (Session.GetRoleplay().StaffOnDuty || Session.GetRoleplay().AmbassadorOnDuty&& !Session.GetHabbo().GetPermissions().HasRight("room_override_custom_config"))
            {
                Session.SendWhisper("Você não pode empurrar alguém enquanto você está de plantão!", 1);
                return;
            }

            GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);

            if (TargetClient == null)
            {
                Session.SendWhisper("Ocorreu um erro ao encontrar esse usuário, talvez ele não esteja online.", 1);
                return;
            }

            RoomUser TargetUser = Room.GetRoomUserManager().GetRoomUserByHabbo(TargetClient.GetHabbo().Username);

            if (TargetUser == null)
            {
                Session.SendWhisper("Ocorreu um erro ao encontrar esse usuário, talvez ele não esteja online ou nesta sala.", 1);
                return;
            }

            if (TargetClient.GetHabbo().Username == Session.GetHabbo().Username)
            {
                Session.SendWhisper("Você não pode se empurrar!", 1);
                return;
            }

            if (TargetUser.IsAsleep)
            {
                Session.SendWhisper("Você não pode empurrar alguém que não está jogando o jogo agora!", 1);
                return;
            }

            if (TargetUser.TeleportEnabled)
            {
                Session.SendWhisper("Opa, você não pode empurrar um usuário que possui o modo de teleporte ativado.", 1);
                return;
            }

            if (TargetClient.GetRoleplay().StaffOnDuty)
            {
                Session.SendWhisper("Você não pode empurrar alguém que está de plantão!", 1);
                return;
            }

            if (TargetClient.GetRoleplay().AmbassadorOnDuty)
            {
                Session.SendWhisper("Você não pode empurrar um embaixador que está de plantão!", 1);
                return;
            }

            if (Session.GetRoleplay().TryGetCooldown("empurrar"))
            {
                return;
            }

            if (Session.GetRoleplay().Team != null && TargetClient.GetRoleplay().Team != null)
            {
                if (Session.GetRoleplay().Team == TargetClient.GetRoleplay().Team)
                {
                    Session.SendWhisper("Você não pode empurrar o membro da sua equipe enquanto estiver dentro de um evento!", 1);
                    return;
                }
            }

            RoomUser ThisUser = Session.GetRoomUser();

            if (ThisUser == null)
            {
                return;
            }

            if (!((Math.Abs(TargetUser.X - ThisUser.X) >= 2) || (Math.Abs(TargetUser.Y - ThisUser.Y) >= 2)))
            {
                if (!HabboRoleplay.Misc.RoleplayManager.PushPullOnArrows)
                {
                    if (TargetClient.GetRoleplay().Game == null || TargetClient.GetRoleplay().Team == null)
                    {
                        List <Item> RoomArrow = Room.GetRoomItemHandler().GetFloor.Where(x => x != null && x.GetBaseItem() != null && x.GetBaseItem().InteractionType == InteractionType.ARROW && (ThisUser.RotBody == 0 ? TargetUser.SetY - 1 == x.GetY : (ThisUser.RotBody == 1 ? TargetUser.SetX + 1 == x.GetX && TargetUser.Y - 1 == x.GetY : (ThisUser.RotBody == 2 ? TargetUser.SetX + 1 == x.GetX : (ThisUser.RotBody == 3 ? TargetUser.X + 1 == x.GetX && TargetUser.Y + 1 == x.GetY : (ThisUser.RotBody == 4 ? TargetUser.SetY + 1 == x.GetY : (ThisUser.RotBody == 5 ? TargetUser.X - 1 == x.GetX && TargetUser.Y + 1 == x.GetY : (ThisUser.RotBody == 6 ? TargetUser.SetX - 1 == x.GetX : (ThisUser.RotBody == 7 ? TargetUser.X - 1 == x.GetX && TargetUser.Y - 1 == x.GetY : false))))))))).ToList();
                        if (RoomArrow.Count > 0)
                        {
                            Session.SendWhisper("Você não pode expulsar os usuários desta sala!", 1);
                            return;
                        }
                    }
                }

                if (TargetUser.RotBody == 4)
                {
                    TargetUser.MoveTo(TargetUser.X, TargetUser.Y + 1);
                }

                if (ThisUser.RotBody == 0)
                {
                    TargetUser.MoveTo(TargetUser.X, TargetUser.Y - 1);
                }

                if (ThisUser.RotBody == 6)
                {
                    TargetUser.MoveTo(TargetUser.X - 1, TargetUser.Y);
                }

                if (ThisUser.RotBody == 2)
                {
                    TargetUser.MoveTo(TargetUser.X + 1, TargetUser.Y);
                }

                if (ThisUser.RotBody == 3)
                {
                    TargetUser.MoveTo(TargetUser.X + 1, TargetUser.Y);
                    TargetUser.MoveTo(TargetUser.X, TargetUser.Y + 1);
                }

                if (ThisUser.RotBody == 1)
                {
                    TargetUser.MoveTo(TargetUser.X + 1, TargetUser.Y);
                    TargetUser.MoveTo(TargetUser.X, TargetUser.Y - 1);
                }

                if (ThisUser.RotBody == 7)
                {
                    TargetUser.MoveTo(TargetUser.X - 1, TargetUser.Y);
                    TargetUser.MoveTo(TargetUser.X, TargetUser.Y - 1);
                }

                if (ThisUser.RotBody == 5)
                {
                    TargetUser.MoveTo(TargetUser.X - 1, TargetUser.Y);
                    TargetUser.MoveTo(TargetUser.X, TargetUser.Y + 1);
                }

                Session.Shout("*Empurra " + TargetClient.GetHabbo().Username + " para longe*");
                Session.GetRoleplay().CooldownManager.CreateCooldown("puxar", 1000, 3);
            }
            else
            {
                Session.SendWhisper("Opa, " + TargetClient.GetHabbo().Username + " não está perto!", 1);
            }
        }
예제 #19
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (ExtraSettings.STAFF_EFFECT_ENABLED_ROOM)
            {
                if (Session.GetHabbo().isLoggedIn&& Session.GetHabbo().Rank > Convert.ToInt32(BiosEmuThiago.GetConfig().data["MineRankStaff"]))
                {
                }
                else
                {
                    Session.SendWhisper("Você precisa estar logado como staff para usar este comando.");
                    return;
                }
            }
            if (Room == null)
            {
                return;
            }
            StringBuilder itemAmounts = new StringBuilder(), floorItemsData = new StringBuilder(), wallItemsData = new StringBuilder(),
                          decoration = new StringBuilder();
            var floorItems           = Room.GetRoomItemHandler().GetFloor;
            var wallItems            = Room.GetRoomItemHandler().GetWall;

            foreach (var roomItem in floorItems)
            {
                var itemCount = floorItems.Count(item => item.BaseItem == roomItem.BaseItem);
                if (!itemAmounts.ToString().Contains(roomItem.BaseItem + "," + itemCount + ";"))
                {
                    itemAmounts.Append(roomItem.BaseItem + "," + itemCount + ";");
                }

                floorItemsData.Append(roomItem.BaseItem + "$$$$" + roomItem.GetX + "$$$$" + roomItem.GetY + "$$$$" + roomItem.GetZ +
                                      "$$$$" + roomItem.Rotation + "$$$$" + roomItem.ExtraData + ";");
            }
            foreach (var roomItem in wallItems)
            {
                var itemCount = wallItems.Count(item => item.BaseItem == roomItem.BaseItem);
                if (!itemAmounts.ToString().Contains(roomItem.BaseItem + "," + itemCount + ";"))
                {
                    itemAmounts.Append(roomItem.BaseItem + "," + itemCount + ";");
                }

                wallItemsData.Append(roomItem.BaseItem + "$$$$" + roomItem.wallCoord + "$$$$" + roomItem.ExtraData + ";");
            }

            decoration.Append(Room.RoomData.FloorThickness + ";" + Room.RoomData.WallThickness + ";" +
                              Room.RoomData.Model.WallHeight + ";" + Room.RoomData.Hidewall + ";" + Room.RoomData.Wallpaper + ";" +
                              Room.RoomData.Landscape + ";" + Room.RoomData.Floor);

            using (var dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("INSERT INTO catalog_predesigned_rooms(room_model,flooritems,wallitems,catalogitems,room_id,room_decoration) VALUES('" + Room.RoomData.ModelName +
                                  "', '" + floorItemsData + "', '" + wallItemsData + "', '" + itemAmounts + "', " + Room.Id + ", '" + decoration + "');");
                var predesignedId = (uint)dbClient.InsertQuery();

                BiosEmuThiago.GetGame().GetCatalog().GetPredesignedRooms().predesignedRoom.Add(predesignedId,
                                                                                               new PredesignedRooms(predesignedId, (uint)Room.Id, Room.RoomData.ModelName,
                                                                                                                    floorItemsData.ToString().TrimEnd(';'), wallItemsData.ToString().TrimEnd(';'),
                                                                                                                    itemAmounts.ToString().TrimEnd(';'), decoration.ToString()));
            }

            Session.SendWhisper("O quarto foi colocado a lista de pack do hotel!");
        }
예제 #20
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Conditions
            if (Params.Length == 1 && Params[0].ToLower() != "explodir" && Params[0].ToLower() != "reparar")
            {
                if (Params[0].ToLower() == "plantar")
                {
                    Session.SendWhisper("Digite o ID da planta que você deseja usar! Digite ':agricultura' para ver os IDs da planta.", 1);
                    return;
                }
                else
                {
                    Session.SendWhisper("Digite o item que deseja colocar para baixo!", 1);
                    return;
                }
            }

            string Type;
            if (Params[0].ToLower() == "explodir")
            {
                Type = "dinamite";
            }
            else if (Params[0].ToLower() == "reparar")
            {
                Type = "grade";
            }
            else if (Params[0].ToLower() == "plantar")
            {
                Type = "planta";
            }
            else
            {
                Type = Params[1].ToLower();
            }
            #endregion

            switch (Type)
            {
                #region Dynamite
            case "dynamite":
            case "dinamite":
            {
                if (Session.GetRoleplay().Dynamite < 1)
                {
                    Session.SendWhisper("Você não tem nenhuma dinamite para colocar!", 1);
                    return;
                }

                if (JailbreakManager.JailbreakActivated)
                {
                    Session.SendWhisper("Uma fuga da prisão já está em andamento!", 1);
                    JailbreakManager.JailbreakActivated = false;
                    return;
                }

                int    RoomId = Convert.ToInt32(RoleplayData.GetData("jail", "outsideroomid"));
                int    X      = Convert.ToInt32(RoleplayData.GetData("jailbreak", "xposition"));
                int    Y      = Convert.ToInt32(RoleplayData.GetData("jailbreak", "yposition"));
                double Z      = Convert.ToDouble(RoleplayData.GetData("jailbreak", "zposition"));
                int    Rot    = Convert.ToInt32(RoleplayData.GetData("jailbreak", "rotation"));

                if (Session.GetRoomUser() == null)
                {
                    return;
                }

                if (Room.Id != RoomId)
                {
                    Session.SendWhisper("Você não está fora da prisão para iniciar uma fuga!", 1);
                    return;
                }

                Item BTile = Room.GetRoomItemHandler().GetFloor.FirstOrDefault(x => x.GetBaseItem().ItemName.ToLower() == "bb_rnd_tele" && x.Coordinate == Session.GetRoomUser().Coordinate);

                if (BTile == null)
                {
                    Session.SendWhisper("Você deve estar parado em um tele banzai da prisao para começar a explosão e causar a fuga!", 1);
                    return;
                }

                List <GameClient> CurrentJailedUsers = PlusEnvironment.GetGame().GetClientManager().GetClients.Where(x => x != null && x.GetHabbo() != null && x.GetRoleplay() != null && x.GetRoleplay().IsJailed).ToList();

                if (CurrentJailedUsers == null || CurrentJailedUsers.Count <= 0)
                {
                    Session.SendWhisper("Não há ninguém na prisão agora!", 1);
                    return;
                }

                Session.GetRoleplay().Dynamite--;
                JailbreakManager.JailbreakActivated = true;
                Session.Shout("*Coloca uma dinamite na parede, tentando explodir e libertar os prisioneiros*", 4);

                if (!Session.GetRoleplay().WantedFor.Contains("fugindo da prisão"))
                {
                    Session.GetRoleplay().WantedFor = Session.GetRoleplay().WantedFor + "fugindo da prisão, ";
                }

                Item Item  = RoleplayManager.PlaceItemToRoom(null, 6088, 0, X, Y, Z, Rot, false, Room.Id, false, "0");
                Item Item2 = RoleplayManager.PlaceItemToRoom(null, 3011, 0, X, Y, 0, Rot, false, Room.Id, false, "0");

                object[] Items = { Session, Item, Item2 };
                RoleplayManager.TimerManager.CreateTimer("dinamite", 500, false, Items);
                break;
            }
                #endregion

                #region Fence Repair
            case "repair":
            case "reparar":
            {
                if (!JailbreakManager.FenceBroken)
                {
                    Session.SendWhisper("Não há grade que precise de reparo!", 1);
                    return;
                }

                if (!GroupManager.HasJobCommand(Session, "guide") && !Session.GetHabbo().GetPermissions().HasRight("corporation_rights"))
                {
                    Session.SendWhisper("Apenas um policial tem o equipamento certo para reparar essa grade!", 1);
                    return;
                }

                if (!Session.GetRoleplay().IsWorking&& !Session.GetHabbo().GetPermissions().HasRight("corporation_rights"))
                {
                    Session.SendWhisper("Você deve estar trabalhando para reparar essa grade!", 1);
                    return;
                }

                if (Session.GetRoleplay().TimerManager.ActiveTimers.ContainsKey("reparar"))
                {
                    Session.SendWhisper("Você já está reparando a grade!", 1);
                    return;
                }

                Item BTile = Room.GetRoomItemHandler().GetFloor.FirstOrDefault(x => x.GetBaseItem().ItemName.ToLower() == "bb_rnd_tele" && x.Coordinate == Session.GetRoomUser().Coordinate);

                if (BTile == null)
                {
                    Session.SendWhisper("Você deve estar parado em um tele banzai para começar a reparar a grade!", 1);
                    return;
                }

                Session.Shout("*Comece a reparar a grade*", 4);
                Session.SendWhisper("Você tem 2 minutos até você reparar essa grade!", 1);
                Session.GetRoleplay().TimerManager.CreateTimer("reparar", 1000, false, BTile.Id);

                if (Session.GetRoomUser().CurrentEffect != 59)
                {
                    Session.GetRoomUser().ApplyEffect(59);
                }
                break;
            }
                #endregion

                #region Plant
            case "plant":
            case "plantar":
            {
                int Id;
                if (!int.TryParse(Params[1], out Id))
                {
                    Session.SendWhisper("Digite o ID da planta que você deseja usar! Digite ':agricultura' para ver os IDs das plantas.", 1);
                    break;
                }

                if (!Session.GetRoleplay().FarmingStats.HasSeedSatchel)
                {
                    Session.SendWhisper("Você não tem uma bolsa de sementes para transportar sementes!", 1);
                    return;
                }

                if (Id == 0)
                {
                    Session.SendWhisper("Você guardou todas as suas sementes de volta ao seu saco de sementes", 1);
                    Session.GetRoleplay().FarmingItem = null;
                    break;
                }

                FarmingItem Item = FarmingManager.GetFarmingItem(Id);

                ItemData Furni;

                if (Item.BaseItem == null)
                {
                    Session.SendWhisper("Desculpe, mas este ID da planta não existe! Digite ':agricultura' para ver os IDs das planta.", 1);
                    return;
                }

                if (!PlusEnvironment.GetGame().GetItemManager().GetItem(Item.BaseItem, out Furni) || Item == null)
                {
                    Session.SendWhisper("Desculpe, mas este ID da planta não existe! Digite ':agricultura' para ver os IDs das planta.", 1);
                    return;
                }

                if (Item.LevelRequired > Session.GetRoleplay().FarmingStats.Level)
                {
                    Session.SendWhisper("Desculpe, mas você não tem um nível de agricultura alto suficiente para esta semente!", 1);
                    return;
                }

                Session.GetRoleplay().FarmingItem = Item;

                int Amount;
                if (FarmingManager.GetSatchelAmount(Session, false, out Amount))
                {
                    if (Amount <= 0)
                    {
                        Session.SendWhisper("Você não tem nenhuma semente para plantar! Compre alguma no supermercado.", 1);
                        Session.GetRoleplay().FarmingItem = null;
                        break;
                    }
                    else
                    {
                        Session.SendWhisper("Você preparou sua semente " + Amount + " " + Furni.PublicName + " para a plantação!", 1);
                        break;
                    }
                }
                else
                {
                    Session.SendWhisper("Você não tem sementes para plantar! Compre alguma no supermercado.", 1);
                    Session.GetRoleplay().FarmingItem = null;
                    break;
                }
            }
                #endregion

                #region Default
            default:
            {
                Session.SendWhisper("Desculpe, mas este item não pode ser encontrado!", 1);
                break;
            }
                #endregion
            }
        }
예제 #21
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Conditions
            if (Session.GetRoomUser() == null)
            {
                return;
            }

            if (Session.GetRoleplay().IsWorkingOut)
            {
                Session.SendWhisper("Você já está malhando!", 1);
                return;
            }

            if (Session.GetRoleplay().IsWorking)
            {
                Session.SendWhisper("Você não pode fazer exercícios enquanto trabalha!", 1);
                return;
            }

            if (Session.GetRoleplay().IsDead)
            {
                Session.SendWhisper("Você não pode fazer exercícios enquanto está morto!", 1);
                return;
            }

            if (Session.GetRoleplay().IsJailed)
            {
                Session.SendWhisper("Você não pode fazer exercícios enquanto está preso!", 1);
                return;
            }

            if (!Room.GymEnabled)
            {
                Session.SendWhisper("Você deve estar dentro da academia para se exercitar!", 1);
                return;
            }

            if (Session.GetRoleplay().CurEnergy <= 0)
            {
                Session.SendWhisper("Você não tem energia suficiente para treinar!", 1);
                return;
            }

            bool HasTreadmill = Room.GetRoomItemHandler().GetFloor.Where(x => (x.GetBaseItem().ItemName.ToLower() == "olympics_c16_treadmill" || x.GetBaseItem().ItemName.ToLower() == "olympics_c16_crosstrainer") && x.Coordinate == Session.GetRoomUser().Coordinate).ToList().Count > 0;

            if (!HasTreadmill)
            {
                Session.SendWhisper("Você deve estar em uma esteira ou crosstrainer para treinar!!", 1);
                return;
            }

            Item Treadmill = Room.GetRoomItemHandler().GetFloor.FirstOrDefault(x => (x.GetBaseItem().ItemName.ToLower() == "olympics_c16_treadmill" || x.GetBaseItem().ItemName.ToLower() == "olympics_c16_crosstrainer") && x.Coordinate == Session.GetRoomUser().Coordinate);

            if (Treadmill == null)
            {
                Session.SendWhisper("Você deve estar em uma esteira ou crosstrainer para treinar!!", 1);
                return;
            }

            bool Strength = false;
            if (Treadmill.GetBaseItem().ItemName.ToLower() == "olympics_c16_treadmill")
            {
                Strength = true;
            }

            if (Strength && Session.GetRoleplay().Strength >= RoleplayManager.StrengthCap)
            {
                Session.SendWhisper("Você atingiu o nível máximo de força de: " + RoleplayManager.StrengthCap + "!", 1);
                return;
            }

            if (!Strength && Session.GetRoleplay().Stamina >= RoleplayManager.StaminaCap)
            {
                Session.SendWhisper("Você alcançou o nível de resistência máxima de: " + RoleplayManager.StaminaCap + "!", 1);
                return;
            }
            #endregion

            #region Execute
            if (Session.GetRoomUser().isSitting)
            {
                Session.GetRoomUser().Z += 0.35;
                Session.GetRoomUser().RemoveStatus("sit");
                Session.GetRoomUser().isSitting    = false;
                Session.GetRoomUser().UpdateNeeded = true;
            }
            else if (Session.GetRoomUser().isLying)
            {
                Session.GetRoomUser().Z += 0.35;
                Session.GetRoomUser().RemoveStatus("lay");
                Session.GetRoomUser().isLying      = false;
                Session.GetRoomUser().UpdateNeeded = true;
            }

            Treadmill.ExtraData       = "1";
            Treadmill.InteractingUser = Session.GetHabbo().Id;
            Treadmill.UpdateState(false, true);
            Treadmill.RequestUpdate(1, true);

            if (!Strength)
            {
                Session.GetRoomUser().ApplyEffect(195);
            }
            else
            {
                Session.GetRoomUser().ApplyEffect(194);
            }

            object[] Data = { Treadmill.Id, Strength };

            Session.GetRoomUser().SetRot(Treadmill.Rotation, false);
            Session.GetRoleplay().IsWorkingOut = true;

            Session.GetRoleplay().TimerManager.CreateTimer("workout", 1000, true, Data);

            if (Strength)
            {
                Session.Shout("*Começa a correr na esteira para treinar sua Força*", 4);
                Session.SendWhisper("Tempo de exercício necessário: " + String.Format("{0:N0}", Session.GetRoleplay().StrengthEXP) + "/" + String.Format("{0:N0}", ((!LevelManager.StrengthLevels.ContainsKey(Session.GetRoleplay().Strength + 1) ? 10400 : LevelManager.StrengthLevels[Session.GetRoleplay().Strength + 1]))), 1);
            }
            else
            {
                Session.Shout("*Começa correndo no crosstrainer para exercitar seu Sangue*", 4);
                Session.SendWhisper("Tempo de exercício necessário: " + String.Format("{0:N0}", Session.GetRoleplay().StaminaEXP) + "/" + String.Format("{0:N0}", ((!LevelManager.StaminaLevels.ContainsKey(Session.GetRoleplay().Stamina + 1) ? 25200 : LevelManager.StaminaLevels[Session.GetRoleplay().Stamina + 1]))), 1);
            }
            #endregion
        }