示例#1
0
 public void OnPlace(GameClient Session, RoomItem Item)
 {
     checked
     {
         Item.GetRoom().GetRoomItemHandler().HopperCount++;
         using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
         {
             queryreactor.setQuery("INSERT INTO items_hopper (hopper_id, room_id) VALUES (@hopperid, @roomid);");
             queryreactor.addParameter("hopperid", Item.Id);
             queryreactor.addParameter("roomid", Item.RoomId);
             queryreactor.runQuery();
         }
         if (Item.InteractingUser != 0u)
         {
             RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);
             if (roomUserByHabbo != null)
             {
                 roomUserByHabbo.ClearMovement(true);
                 roomUserByHabbo.AllowOverride = false;
                 roomUserByHabbo.CanWalk       = true;
             }
             Item.InteractingUser = 0u;
         }
     }
 }
示例#2
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Digite o usuário que deseja congelar.", 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 = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Params[1]);

            if (TargetClient.GetRoleplay().EquippedWeapon != null)
            {
                TargetClient.GetRoleplay().EquippedWeapon = null;
            }

            if (TargetUser != null)
            {
                TargetUser.Frozen = true;
                TargetUser.ClearMovement(true);
                TargetUser.ApplyEffect(EffectsList.Ice);
            }

            Session.Shout("*Congela imediatamente o usuário " + TargetClient.GetHabbo().Username + "*", 23);
            Session.SendWhisper("Congelou " + TargetClient.GetHabbo().Username + " com sucesso!", 1);
        }
示例#3
0
        public override void OnPlace(GameClient session, RoomItem item)
        {
            item.GetRoom().GetRoomItemHandler().HopperCount++;

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery("INSERT INTO items_hopper (hopper_id, room_id) VALUES (@hopperid, @roomid);");
                queryReactor.AddParameter("hopperid", item.Id);
                queryReactor.AddParameter("roomid", item.RoomId);
                queryReactor.RunQuery();
            }

            if (item.InteractingUser == 0u)
            {
                return;
            }

            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

            if (roomUserByHabbo != null)
            {
                roomUserByHabbo.ClearMovement();
                roomUserByHabbo.AllowOverride = false;
                roomUserByHabbo.CanWalk       = true;
            }

            item.InteractingUser = 0u;
        }
示例#4
0
        public void OnPlace(GameClient Session, Item Item)
        {
            Item.GetRoom().GetRoomItemHandler().HopperCount++;
            using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("INSERT INTO items_hopper (hopper_id, room_id) VALUES (@hopperid, @roomid);");
                dbClient.AddParameter("hopperid", Item.Id);
                dbClient.AddParameter("roomid", Item.RoomId);
                dbClient.RunQuery();
            }

            if (Item.InteractingUser != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);

                if (User != null)
                {
                    User.ClearMovement(true);
                    User.AllowOverride = false;
                    User.CanWalk       = true;
                }

                Item.InteractingUser = 0;
            }
        }
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Item.ExtraData != "1" && Item.GetBaseItem().VendingIds.Count >= 1 && Item.InteractingUser == 0 &&
                Session != null)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                if (User == null)
                {
                    return;
                }

                if (!Gamemap.TilesTouching(User.X, User.Y, Item.GetX, Item.GetY))
                {
                    User.MoveTo(Item.SquareInFront);
                    return;
                }

                Item.InteractingUser = Session.GetHabbo().Id;

                if (!User.SetStep)
                {
                    User.CanWalk = false;
                    User.ClearMovement(true);
                    User.SetRot(Rotation.Calculate(User.X, User.Y, Item.GetX, Item.GetY), false);
                }

                Item.RequestUpdate(2, true);

                Item.ExtraData = "1";
                Item.UpdateState(false, true);
            }
        }
示例#6
0
        public override void OnTrigger(GameClient Session, RoomItem Item, int int_0, bool bool_0)
        {
            RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (roomUserByHabbo != null && (Item.SquareBehind.X < Item.GetRoom().Model.MapSizeX&& Item.SquareBehind.Y < Item.GetRoom().Model.MapSizeY))
            {
                if ((roomUserByHabbo.Coordinate != Item.SquareInFront) && roomUserByHabbo.CanWalk)
                {
                    roomUserByHabbo.MoveTo(Item.SquareInFront);
                }
                else
                {
                    if (Item.GetRoom().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, Item.GetZ, true, false) && Item.InteractingUser == 0u)
                    {
                        Item.InteractingUser    = roomUserByHabbo.HabboId;
                        roomUserByHabbo.CanWalk = false;
                        if (roomUserByHabbo.IsWalking && (roomUserByHabbo.GoalX != Item.SquareInFront.X || roomUserByHabbo.GoalY != Item.SquareInFront.Y))
                        {
                            roomUserByHabbo.ClearMovement(true);
                        }
                        roomUserByHabbo.AllowOverride = true;
                        roomUserByHabbo.MoveTo(Item.Coordinate);
                        Item.ReqUpdate(3);
                    }
                }
            }
        }
示例#7
0
        public void OnPlace(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";
            if (item.InteractingUser != 0u)
            {
                RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);
                if (roomUserByHabbo != null)
                {
                    roomUserByHabbo.ClearMovement();
                    roomUserByHabbo.AllowOverride = false;
                    roomUserByHabbo.CanWalk       = true;
                }
                item.InteractingUser = 0u;
            }
            if (item.InteractingUser2 == 0u)
            {
                return;
            }
            RoomUser roomUserByHabbo2 = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2);

            if (roomUserByHabbo2 != null)
            {
                roomUserByHabbo2.ClearMovement();
                roomUserByHabbo2.AllowOverride = false;
                roomUserByHabbo2.CanWalk       = true;
            }
            item.InteractingUser2 = 0u;
        }
示例#8
0
        public void OnPlace(GameClient Session, Item Item)
        {
            Item.ExtraData = "0";

            if (Item.InteractingUser != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);

                if (User != null)
                {
                    User.ClearMovement(true);
                    User.AllowOverride = false;
                    User.CanWalk       = true;
                }

                Item.InteractingUser = 0;
            }

            if (Item.InteractingUser2 != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser2);

                if (User != null)
                {
                    User.ClearMovement(true);
                    User.AllowOverride = false;
                    User.CanWalk       = true;
                }

                Item.InteractingUser2 = 0;
            }
        }
示例#9
0
 public override void OnPlace(GameClient Session, RoomItem RoomItem_0)
 {
     RoomItem_0.ExtraData = "0";
     if (RoomItem_0.InteractingUser != 0u)
     {
         RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(RoomItem_0.InteractingUser);
         if (@class != null)
         {
             @class.ClearMovement(true);
             @class.AllowOverride = false;
             @class.CanWalk       = true;
         }
         RoomItem_0.InteractingUser = 0u;
     }
     if (RoomItem_0.InteractingUser2 != 0u)
     {
         RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(RoomItem_0.InteractingUser2);
         if (@class != null)
         {
             @class.ClearMovement(true);
             @class.AllowOverride = false;
             @class.CanWalk       = true;
         }
         RoomItem_0.InteractingUser2 = 0u;
     }
 }
示例#10
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (item.ExtraData == "1" || !item.GetBaseItem().VendingIds.Any() || item.InteractingUser != 0u ||
                session == null)
            {
                return;
            }

            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (roomUserByHabbo == null)
            {
                return;
            }

            if (!Gamemap.TilesTouching(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y))
            {
                roomUserByHabbo.MoveTo(item.SquareInFront);
                return;
            }

            item.InteractingUser    = session.GetHabbo().Id;
            roomUserByHabbo.CanWalk = false;
            roomUserByHabbo.ClearMovement();

            roomUserByHabbo.SetRot(PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y));

            item.ReqUpdate(2, true);
            item.ExtraData = "1";
            item.UpdateState(false, true);
        }
示例#11
0
        public override void OnPlace(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0)
            {
                RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

                if (user != null)
                {
                    user.ClearMovement();
                    user.AllowOverride = false;
                    user.CanWalk       = true;
                }

                item.InteractingUser = 0;
            }

            if (item.InteractingUser2 != 0)
            {
                RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2);

                if (user != null)
                {
                    user.ClearMovement();
                    user.AllowOverride = false;
                    user.CanWalk       = true;
                }

                item.InteractingUser2 = 0;
            }
        }
示例#12
0
        public void OnTrigger(GameClient Session, RoomItem Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (Item.InteractingUser2 != roomUserByHabbo.UserID)
            {
                Item.InteractingUser2 = roomUserByHabbo.UserID;
            }
            if (roomUserByHabbo == null)
            {
                return;
            }
            if (roomUserByHabbo.Coordinate != Item.SquareInFront && roomUserByHabbo.CanWalk)
            {
                roomUserByHabbo.MoveTo(Item.SquareInFront);
                return;
            }
            if (!Item.GetRoom().GetGameMap().ValidTile(Item.SquareBehind.X, Item.SquareBehind.Y) || !Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, false, 0u) || !Item.GetRoom().GetGameMap().SquareIsOpen(Item.SquareBehind.X, Item.SquareBehind.Y, false))
            {
                return;
            }
            checked
            {
                if (roomUserByHabbo.LastInteraction - CyberEnvironment.GetUnixTimestamp() < 0 && roomUserByHabbo.InteractingGate && roomUserByHabbo.GateId == Item.Id)
                {
                    roomUserByHabbo.InteractingGate = false;
                    roomUserByHabbo.GateId          = 0u;
                }
                {
                    if (!Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, roomUserByHabbo.AllowOverride, 0u))
                    {
                        return;
                    }
                    if (Item.InteractingUser == 0u)
                    {
                        roomUserByHabbo.InteractingGate = true;
                        roomUserByHabbo.GateId          = Item.Id;
                        Item.InteractingUser            = roomUserByHabbo.HabboId;
                        roomUserByHabbo.CanWalk         = false;
                        if (roomUserByHabbo.IsWalking && (roomUserByHabbo.GoalX != Item.SquareInFront.X || roomUserByHabbo.GoalY != Item.SquareInFront.Y))
                        {
                            roomUserByHabbo.ClearMovement(true);
                        }

                        roomUserByHabbo.InteractingGate = false;
                        roomUserByHabbo.GateId          = 0u;
                        return;
                    }
                    return;
                }
            }
        }
示例#13
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("Por favor, insira o usuário que deseja teleportar para você", 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 fazer isso em você mesmo!", 1);
                return;
            }

            var Point       = new System.Drawing.Point(Session.GetRoomUser().X, Session.GetRoomUser().Y);
            var TargetPoint = new System.Drawing.Point(TargetUser.X, TargetUser.Y);

            if (Point == TargetPoint)
            {
                Session.SendWhisper("Esta pessoa já está em cima de você!", 1);
                return;
            }

            TargetUser.ClearMovement(true);

            if (TargetUser.TeleportEnabled)
            {
                TargetUser.MoveTo(Point);
            }
            else
            {
                TargetUser.TeleportEnabled = true;
                TargetUser.MoveTo(Point);
                TargetUser.TeleportEnabled = false;
            }
            Session.Shout("*Teleporta o usuário " + TargetClient.GetHabbo().Username + " para mim*", 23);
            return;
        }
示例#14
0
 public void OnPlace(GameClient Session, RoomItem Item)
 {
     Item.ExtraData = "0";
     if (Item.InteractingUser != 0u)
     {
         RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);
         if (roomUserByHabbo != null)
         {
             roomUserByHabbo.ClearMovement(true);
             roomUserByHabbo.UnlockWalking();
         }
         Item.InteractingUser = 0u;
     }
 }
示例#15
0
 public override void OnPlace(GameClient Session, RoomItem Item)
 {
     Item.ExtraData = "0";
     if (Item.InteractingUser != 0u)
     {
         RoomUser @class = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser);
         if (@class != null)
         {
             @class.ClearMovement(true);
             @class.UnlockWalking();
         }
         Item.InteractingUser = 0u;
     }
 }
示例#16
0
 public override void OnRemove(GameClient Session, RoomItem RoomItem_0)
 {
     RoomItem_0.ExtraData = "0";
     if (RoomItem_0.InteractingUser != 0u)
     {
         RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(RoomItem_0.InteractingUser);
         if (@class != null)
         {
             @class.ClearMovement(true);
             @class.UnlockWalking();
         }
         RoomItem_0.InteractingUser = 0u;
     }
 }
示例#17
0
        public override void OnPlace(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0)
            {
                RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

                if (user != null)
                {
                    user.ClearMovement();
                    user.UnlockWalking();
                }

                item.InteractingUser = 0;
            }
        }
示例#18
0
        public void OnRemove(GameClient Session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0)
            {
                RoomUser User = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

                if (User != null)
                {
                    User.ClearMovement();
                    User.UnlockWalking();
                }

                item.InteractingUser = 0;
            }
        }
示例#19
0
        public void OnPlace(GameClient Session, Item Item)
        {
            Item.ExtraData = "0";

            if (Item.InteractingUser != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);

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

                Item.InteractingUser = 0;
            }
        }
示例#20
0
        /// <summary>
        /// Adds user to a MWTeam
        /// </summary>
        public bool AddUserToGame(GameClient User, string TeamString)
        {
            if (User == null || User.GetHabbo() == null || User.GetRoleplay() == null)
            {
                return(false);
            }
            if (User.GetRoleplay().InMafiaWars == true)
            {
                return(false);
            }

            // Gets the MWTeam the user requested to join via the dictionary
            MWTeam MWTeamRequested = MWTeams[TeamString];

            if (MWTeamRequested == null)
            {
                return(false);
            }
            if (MWTeamRequested.WaitingAreaPOS == null)
            {
                return(false);
            }

            RoomUser RUser = User.GetHabbo().GetRoomUser();

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

            User.GetRoleplay().TeamString  = TeamString;
            User.GetRoleplay().InMafiaWars = true;
            MWTeamRequested.Players.Add(User, 0);

            User.GetRoleplay().figBeforeWar = User.GetHabbo().Look;
            User.GetHabbo().Look            = RoleplayManager.SplitFigure(User.GetHabbo().Look) + MWTeamRequested.Look;
            User.GetRoleplay().RefreshVals();

            RUser.SetPos(MWTeamRequested.WaitingAreaPOS.X, MWTeamRequested.WaitingAreaPOS.Y, 0);
            RUser.ClearMovement();

            // Attempt to start the game
            StartGame();
            return(true);
        }
示例#21
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (session == null)
            {
                return;
            }

            RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (user == null)
            {
                return;
            }

            if (user.Coordinate != item.SquareInFront && user.CanWalk)
            {
                user.MoveTo(item.SquareInFront);
                return;
            }

            if (!item.GetRoom().GetGameMap().CanWalk(item.SquareBehind.X, item.SquareBehind.Y, user.AllowOverride))
            {
                return;
            }

            if (item.InteractingUser == 0)
            {
                item.InteractingUser = user.HabboId;

                user.CanWalk = false;

                if (user.IsWalking && (user.GoalX != item.SquareInFront.X || user.GoalY != item.SquareInFront.Y))
                {
                    user.ClearMovement();
                }

                user.AllowOverride = true;
                user.MoveTo(item.Coordinate);

                item.ReqUpdate(4, true);
            }
        }
示例#22
0
 public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0)
 {
     if (RoomItem_0.ExtraData != "1" && RoomItem_0.GetBaseItem().VendingIds.Count >= 1 && RoomItem_0.InteractingUser == 0u)
     {
         if (Session != null)
         {
             RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id);
             if (@class == null)
             {
                 return;
             }
             if (!RoomItem_0.GetRoom().method_99(@class.X, @class.Y, RoomItem_0.GetX, RoomItem_0.GetY))
             {
                 if ([email protected])
                 {
                     return;
                 }
                 try
                 {
                     @class.MoveTo(RoomItem_0.SquareInFront);
                     return;
                 }
                 catch
                 {
                     return;
                 }
             }
             RoomItem_0.InteractingUser = Session.GetHabbo().Id;
             @class.CanWalk             = false;
             @class.ClearMovement(true);
             @class.SetRot(Rotation.Calculate(@class.X, @class.Y, RoomItem_0.GetX, RoomItem_0.GetY));
         }
         RoomItem_0.ReqUpdate(2);
         RoomItem_0.ExtraData = "1";
         RoomItem_0.UpdateState(false, true);
     }
 }
示例#23
0
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }

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

            if (Item.InteractingUser2 != User.UserId)
            {
                Item.InteractingUser2 = User.UserId;
            }

            if (User == null)
            {
                return;
            }
            if (Item.GetBaseItem().InteractionType == InteractionType.ONE_WAY_GATE)
            {
                if (User.Coordinate != Item.SquareInFront && User.CanWalk)
                {
                    User.MoveTo(Item.SquareInFront);
                    return;
                }
                if (!Item.GetRoom().GetGameMap().ValidTile(Item.SquareBehind.X, Item.SquareBehind.Y) ||
                    !Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, false) ||
                    !Item.GetRoom().GetGameMap().SquareIsOpen(Item.SquareBehind.X, Item.SquareBehind.Y, false))
                {
                    return;
                }

                if ((User.LastInteraction - PlusEnvironment.GetUnixTimestamp() < 0) && User.InteractingGate &&
                    User.GateId == Item.Id)
                {
                    User.InteractingGate = false;
                    User.GateId          = 0;
                }


                if (!Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, User.AllowOverride))
                {
                    return;
                }

                if (Item.InteractingUser == 0)
                {
                    User.InteractingGate = true;
                    User.GateId          = Item.Id;
                    Item.InteractingUser = User.HabboId;

                    User.CanWalk = false;

                    if (User.IsWalking && (User.GoalX != Item.SquareInFront.X || User.GoalY != Item.SquareInFront.Y))
                    {
                        User.ClearMovement(true);
                    }

                    User.AllowOverride = true;
                    User.MoveTo(Item.Coordinate);

                    Item.RequestUpdate(4, true);
                }
            }
        }
示例#24
0
        public static void ForceAddPlayerToTeam(GameClient Player, string team, RoomItem BanZaiTele = null, bool ForceAdd = false, bool sendToRoom = false)
        {
            try
            {
                // If we actually have a player
                if (Player != null && Player.GetRoleplay() != null && Player.GetHabbo() != null)
                {
                    // If the match has not started
                    if (!Started)
                    {
                        // If the player is not in colour wars
                        if (!Player.GetRoleplay().inColourWars)
                        {
                            // Get the team selected
                            Team ActualTeam = GetTeamByName(team);
                            // Now get the team based on balance

                            // Lets attempt to add the user to the team
                            ActualTeam.AddPlayerToTeam(Player);

                            // TODO: Change user motto, game state
                            CustomizePlayer(Player, ActualTeam);

                            // Set the players set & game state
                            Player.GetRoleplay().ColourWarTeam = ActualTeam;
                            Player.GetRoleplay().inColourWars  = true;
                            if (Player.GetHabbo().CurrentRoomId != 96 && !sendToRoom)
                            {
                                Player.GetMessageHandler().PrepareRoomForUser(96, "");
                            }
                            // Get the room user
                            RoomUser RUser = Player.GetHabbo().GetRoomUser();

                            // If it created the room user
                            if (RUser != null)
                            {
                                // Set the users position
                                RUser.SetPos(ActualTeam.WAX, ActualTeam.WAY, ActualTeam.WAZ);

                                // Set effect
                                if (Player.GetRoleplay() != null)
                                {
                                    Player.GetRoleplay().EffectSeconds--;
                                }
                                RUser.ApplyEffect(4);

                                // Clear movement
                                RUser.ClearMovement();
                            }

                            // Hmm, let's see if we can actually start the game
                            TryStart();
                        }
                    }
                    else
                    {
                        if (!Player.GetRoleplay().inColourWars)
                        {
                            // Get the team selected
                            Team ActualTeam = GetTeamByName(team);
                            // Now get the team based on balance

                            // Lets attempt to add the user to the team
                            ActualTeam.AddPlayerToTeam(Player);

                            // TODO: Change user motto, game state
                            CustomizePlayer(Player, ActualTeam);

                            // Set the players set & game state
                            Player.GetRoleplay().ColourWarTeam = ActualTeam;
                            Player.GetRoleplay().inColourWars  = true;

                            // Get the room user
                            RoomUser RUser = Player.GetHabbo().GetRoomUser();

                            // If it created the room user
                            if (RUser != null)
                            {
                                // Set the users position
                                if (!sendToRoom)
                                {
                                    Player.GetMessageHandler().PrepareRoomForUser(ActualTeam.BaseRID, "");
                                }

                                Player.GetRoleplay().CurHealth = 120;
                                Player.GetRoleplay().Energy    = 100;
                                Player.GetRoleplay().Hunger    = 0;
                            }
                        }
                    }
                }
            }
            catch (Exception ex) { Logging.LogCriticalException("Error in ForceAddPlayerToTeam() void " + ex.Message + "::" + ex.StackTrace); }
        }
示例#25
0
        /// <summary>
        /// Adds the player to the team
        /// </summary>
        /// <param name="Player">The player to add</param>
        public static void AddPlayerToTeam(GameClient Player, string team, RoomItem BanZaiTele = null)
        {
            try
            {
                // If we actually have a player
                if (Player != null && Player.GetRoleplay() != null && Player.GetHabbo() != null)
                {
                    // If the match has not started
                    if (!Started)
                    {
                        // If the player is not in colour wars
                        if (!Player.GetRoleplay().inColourWars)
                        {
                            if (getPlayerCount() < 24)
                            {
                                // Get the team selected
                                Team TeamSelected = GetTeamByName(team);
                                // Now get the team based on balance
                                Team ActualTeam = GetTeamBalanced(TeamSelected, Player);

                                // Lets attempt to add the user to the team
                                ActualTeam.AddPlayerToTeam(Player);

                                // TODO: Change user motto, game state
                                CustomizePlayer(Player, ActualTeam);

                                // Set the players set & game state
                                Player.GetRoleplay().ColourWarTeam = ActualTeam;
                                Player.GetRoleplay().inColourWars  = true;

                                // Get the room user
                                RoomUser RUser = Player.GetHabbo().GetRoomUser();

                                // If it created the room user
                                if (RUser != null)
                                {
                                    // Set the users position
                                    RUser.SetPos(ActualTeam.WAX, ActualTeam.WAY, ActualTeam.WAZ);

                                    // Set effect
                                    if (Player.GetRoleplay() != null)
                                    {
                                        Player.GetRoleplay().EffectSeconds--;
                                    }
                                    RUser.ApplyEffect(4);

                                    // Clear movement
                                    RUser.ClearMovement();
                                }

                                // Hmm, let's see if we can actually start the game
                                TryStart();
                            }
                        }
                        else
                        {
                            Player.SendWhisper("No spaces left sorry!");
                        }
                    }
                    else
                    {
                        // Tell the user they can't join this late
                        Player.SendWhisper("You cannot join the match as it has started!");
                        if (BanZaiTele != null)
                        {
                            if (Player.GetHabbo() != null)
                            {
                                if (Player.GetHabbo().GetRoomUser() != null)
                                {
                                    Player.GetHabbo().GetRoomUser().MoveTo(BanZaiTele.SquareInFront);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex) { Logging.LogCriticalException("Error in AddPlayerToTeam() void " + ex.Message + "::" + ex.StackTrace); }
        }
        public bool Execute(params object[] Params)
        {
            if (Params == null || Params.Length == 0)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(this.StringData))
            {
                return(false);
            }

            Habbo Player = (Habbo)Params[0];

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

            RoomUser Human = Instance.GetRoomUserManager().GetRoomUserByHabbo(Player.Id);

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

            string[] Stuff = this.StringData.Split(';');
            if (Stuff.Length != 2)
            {
                return(false);//This is important, incase a c**t scripts.
            }
            string Username = Stuff[1];

            RoomUser User = this.Instance.GetRoomUserManager().GetBotByName(Username);

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

            int FollowMode = 0;

            if (!int.TryParse(Stuff[0], out FollowMode))
            {
                return(false);
            }

            if (FollowMode == 0)
            {
                User.BotData.ForcedUserTargetMovement = 0;

                if (User.IsWalking)
                {
                    User.ClearMovement(true);
                }
            }
            else if (FollowMode == 1)
            {
                User.BotData.ForcedUserTargetMovement = Player.Id;

                if (User.IsWalking)
                {
                    User.ClearMovement(true);
                }
                User.MoveTo(Human.X, Human.Y);
            }

            return(true);
        }
示例#27
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);
            }
        }
示例#28
0
        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;
            }

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

            if (User == null)
            {
                return;
            }

            int  PetId = Packet.PopInt();
            bool Type  = Packet.PopBoolean();

            RoomUser Pet = null;

            if (!Room.GetRoomUserManager().TryGetPet(PetId, out Pet))
            {
                return;
            }

            if (Pet.PetData == null)
            {
                return;
            }

            if (Pet.PetData.AnyoneCanRide == 0 && Pet.PetData.OwnerId != User.UserId)
            {
                Session.SendNotification(
                    "Você não consegue montar este cavalo.\nO dono do animal de estimação selecionou para ninguém montá-lo.");
                return;
            }

            if (Type)
            {
                if (Pet.RidingHorse)
                {
                    string[] Speech2       = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.alreadymounted");
                    var      RandomSpeech2 = new Random();
                    Pet.Chat(Speech2[RandomSpeech2.Next(0, Speech2.Length - 1)], false);
                }
                else if (User.RidingHorse)
                {
                    Session.SendNotification("Você já está montado em um cavalo!");
                }
                else
                {
                    if (Pet.Statusses.Count > 0)
                    {
                        Pet.Statusses.Clear();
                    }

                    int NewX2 = User.X;
                    int NewY2 = User.Y;
                    Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(Pet, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2)));
                    Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(User, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2) + 1));

                    User.MoveTo(NewX2, NewY2);

                    Pet.ClearMovement(true);

                    User.RidingHorse = true;
                    Pet.RidingHorse  = true;
                    Pet.HorseID      = User.VirtualId;
                    User.HorseID     = Pet.VirtualId;

                    User.ApplyEffect(77);

                    User.RotBody = Pet.RotBody;
                    User.RotHead = Pet.RotHead;

                    User.UpdateNeeded = true;
                    Pet.UpdateNeeded  = true;
                }
            }
            else
            {
                if (User.VirtualId == Pet.HorseID)
                {
                    Pet.Statusses.Remove("sit");
                    Pet.Statusses.Remove("lay");
                    Pet.Statusses.Remove("snf");
                    Pet.Statusses.Remove("eat");
                    Pet.Statusses.Remove("ded");
                    Pet.Statusses.Remove("jmp");
                    User.RidingHorse = false;
                    User.HorseID     = 0;
                    Pet.RidingHorse  = false;
                    Pet.HorseID      = 0;
                    User.MoveTo(new Point(User.X + 2, User.Y + 2));
                    User.ApplyEffect(-1);
                    User.UpdateNeeded = true;
                    Pet.UpdateNeeded  = true;
                }
                else
                {
                    Session.SendNotification("Não foi possível descer deste cavalo - Você não está montando!");
                }
            }

            Room.SendMessage(new PetHorseFigureInformationComposer(Pet));
        }
示例#29
0
        /// <summary>
        ///     Turns the user thread
        /// </summary>
        /// <param name="roomUsers"></param>
        internal void UserCycleOnRoom(RoomUser roomUsers)
        {
            // Region Check User Elegibility
            if (!IsValid(roomUsers))
            {
                if (roomUsers.GetClient() != null)
                    RemoveUserFromRoom(roomUsers.GetClient(), false, false);
                else
                    RemoveRoomUser(roomUsers);
            }

            // Region Check User Remove Unlocking
            lock (_removeUsers)
            {
                if (roomUsers.NeedsAutokick && !_removeUsers.Contains(roomUsers))
                {
                    _removeUsers.Add(roomUsers);
                    return;
                }
            }

            // Region Idle and Room Tiem Check
            roomUsers.IdleTime++;

            // Region User Achievement of Room
            UserRoomTimeCycles(roomUsers);

            // Carry Item Hand Checking
            if (roomUsers.CarryItemId > 0)
            {
                roomUsers.CarryTimer--;

                // If The Carry Timer is 0.. Remove CarryItem.
                if (roomUsers.CarryTimer <= 0)
                    roomUsers.CarryItem(0);
            }

            // Region Check User Got Freezed
            if (_userRoom.GotFreeze())
                Freeze.CycleUser(roomUsers);

            // Region Variable Registering
            bool invalidStep = false;
            // Region Check User Tile Selection
            if (roomUsers.SetStep)
            {
                // Check if User is Going to the Door.
                lock (_removeUsers)
                {
                    if ((roomUsers.SetX == _userRoom.GetGameMap().Model.DoorX) && (roomUsers.SetY == _userRoom.GetGameMap().Model.DoorY) && !_removeUsers.Contains(roomUsers) && !roomUsers.IsBot && !roomUsers.IsPet)
                    {
                        _removeUsers.Add(roomUsers);
                        return;
                    }
                }

                // Check Elegibility of Walk In Tile
                invalidStep = UserCanWalkInTile(roomUsers);

                // User isn't Anymore Set a Tile to Walk
                roomUsers.SetStep = false;
            }

            // Pet Must Stop Too!
            if ((roomUsers.GoalX == roomUsers.X) && (roomUsers.GoalY == roomUsers.Y) && roomUsers.RidingHorse && !roomUsers.IsPet)
            {
                RoomUser horseStopWalkRidingPet = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                if (horseStopWalkRidingPet != null)
                {
                    ServerMessage horseStopWalkRidingPetMessage =
                        new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                    horseStopWalkRidingPetMessage.AppendInteger(1);
                    horseStopWalkRidingPet.SerializeStatus(horseStopWalkRidingPetMessage, "");
                    _userRoom.SendMessage(horseStopWalkRidingPetMessage);

                    horseStopWalkRidingPet.IsWalking = false;
                    horseStopWalkRidingPet.ClearMovement();
                }
            }

            // User Reached Goal Need Stop.
            if (((roomUsers.GoalX == roomUsers.X) && (roomUsers.GoalY == roomUsers.Y)) || roomUsers.Freezed)
            {
                roomUsers.IsWalking = false;
                roomUsers.ClearMovement();
                roomUsers.SetStep = false;
                UpdateUserStatus(roomUsers, false);
            }

            // Check if Proably the Pathfinder is with Some Errors..
            if (roomUsers.PathRecalcNeeded)
            {
                roomUsers.Path.Clear();
                roomUsers.Path = PathFinder.FindPath(roomUsers, _userRoom.GetGameMap().DiagonalEnabled,
                    _userRoom.GetGameMap(), new Vector2D(roomUsers.X, roomUsers.Y),
                    new Vector2D(roomUsers.GoalX, roomUsers.GoalY));

                if (roomUsers.Path.Count > 1)
                {
                    roomUsers.PathStep = 1;
                    roomUsers.IsWalking = true;
                    roomUsers.PathRecalcNeeded = false;
                }
                else
                {
                    roomUsers.PathRecalcNeeded = false;
                    roomUsers.Path.Clear();
                }
            }

            // If user Isn't Walking, Let's go Back..
            if (!roomUsers.IsWalking || roomUsers.Freezed)
            {
                if (roomUsers.Statusses.ContainsKey("mv"))
                    roomUsers.ClearMovement();
            }
            else
            {
                // If he Want's to Walk.. Let's Continue!..

                // Let's go to The Tile! And Walk :D
                UserGoToTile(roomUsers, invalidStep);

                // If User isn't Riding, Must Update Statusses...
                if (!roomUsers.RidingHorse)
                    roomUsers.UpdateNeeded = true;
            }

            // If is a Bot.. Let's Tick the Time Count of Bot..
            if (roomUsers.IsBot)
                roomUsers.BotAi.OnTimerTick();

            UpdateUserEffect(roomUsers, roomUsers.X, roomUsers.Y);
        }
示例#30
0
        internal void UserGoToTile(RoomUser roomUsers, bool invalidStep)
        {
            // If The Tile that the user want to Walk is Invalid!
            if (invalidStep || (roomUsers.PathStep >= roomUsers.Path.Count) ||
                ((roomUsers.GoalX == roomUsers.X) && (roomUsers.GoalY == roomUsers.Y)))
            {
                // Erase all Movement Data..
                roomUsers.IsWalking = false;
                roomUsers.ClearMovement();
                roomUsers.HandelingBallStatus = 0;
                RoomUserBreedInteraction(roomUsers);

                // Check if he is in a Horse, and if if Erase Horse and User Movement Data
                if (roomUsers.RidingHorse && !roomUsers.IsPet)
                {
                    RoomUser horseStopWalkRidingPet = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                    if (horseStopWalkRidingPet != null)
                    {
                        ServerMessage horseStopWalkRidingPetMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                        horseStopWalkRidingPetMessage.AppendInteger(1);
                        horseStopWalkRidingPet.SerializeStatus(horseStopWalkRidingPetMessage, "");
                        _userRoom.SendMessage(horseStopWalkRidingPetMessage);

                        horseStopWalkRidingPet.IsWalking = false;
                        horseStopWalkRidingPet.ClearMovement();
                    }
                }

                // Finally Update User Status
                UpdateUserStatus(roomUsers, false);
                return;
            }

            // Ins't a Invalid Step.. Continuing.
            // Region Set Variables
            int pathDataCount = roomUsers.Path.Count - roomUsers.PathStep - 1;
            Vector2D nextStep = roomUsers.Path[pathDataCount];

            // Increase Step Data...
            roomUsers.PathStep++;

            // Check Against if is a Valid Step...
            if (_userRoom.GetGameMap()
                .IsValidStep3(roomUsers, new Vector2D(roomUsers.X, roomUsers.Y), new Vector2D(nextStep.X, nextStep.Y),
                    (roomUsers.GoalX == nextStep.X) && (roomUsers.GoalY == nextStep.Y), roomUsers.AllowOverride,
                    roomUsers.GetClient()))
            {
                // If is a PET Must Give the Time Tick In Syncrony with User..
                if (roomUsers.RidingHorse && !roomUsers.IsPet)
                {
                    RoomUser horsePetAi = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                    if (horsePetAi != null)
                        horsePetAi.BotAi.OnTimerTick();
                }

                // Horse Ridding need be Updated First
                if (roomUsers.RidingHorse)
                {
                    // Set User Position Data
                    UserSetPositionData(roomUsers, nextStep);
                    CheckUserSittableLayable(roomUsers);

                    // Add Status of Walking
                    roomUsers.AddStatus("mv",
                        +roomUsers.SetX + "," + roomUsers.SetY + "," + ServerUserChatTextHandler.GetString(roomUsers.SetZ));
                }

                // Check if User is Ridding in Horse, if if Let's Update Ride Data.
                if (roomUsers.RidingHorse && !roomUsers.IsPet)
                {
                    RoomUser horseRidingPet = GetRoomUserByVirtualId(Convert.ToInt32(roomUsers.HorseId));

                    if (horseRidingPet != null)
                    {
                        string theUser = "******" + roomUsers.SetX + "," + roomUsers.SetY + "," +
                                      ServerUserChatTextHandler.GetString(roomUsers.SetZ);
                        string thePet = "mv " + roomUsers.SetX + "," + roomUsers.SetY + "," +
                                     ServerUserChatTextHandler.GetString(horseRidingPet.SetZ);

                        ServerMessage horseRidingPetMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer"));
                        horseRidingPetMessage.AppendInteger(2);
                        roomUsers.SerializeStatus(horseRidingPetMessage, theUser);
                        horseRidingPet.SerializeStatus(horseRidingPetMessage, thePet);
                        _userRoom.SendMessage(horseRidingPetMessage);

                        horseRidingPet.RotBody = roomUsers.RotBody;
                        horseRidingPet.RotHead = roomUsers.RotBody;
                        horseRidingPet.SetX = roomUsers.SetX;
                        horseRidingPet.SetY = roomUsers.SetY;
                        horseRidingPet.SetZ = roomUsers.SetZ - 1;
                        horseRidingPet.SetStep = true;

                        UpdateUserEffect(horseRidingPet, horseRidingPet.SetX, horseRidingPet.SetY);
                        UpdateUserStatus(horseRidingPet, false);
                    }
                }

                // If is not Ridding Horse doesn't Need Update Effect
                if (!roomUsers.RidingHorse)
                {
                    // Set User Position Data
                    UserSetPositionData(roomUsers, nextStep);
                    CheckUserSittableLayable(roomUsers);

                    // Add Status of Walking
                    roomUsers.AddStatus("mv",
                        +roomUsers.SetX + "," + roomUsers.SetY + "," + ServerUserChatTextHandler.GetString(roomUsers.SetZ));
                }

                // Region Update User Effect And Status
                UpdateUserEffect(roomUsers, roomUsers.SetX, roomUsers.SetY);

                // Update Effect if is Ridding
                if (roomUsers.RidingHorse)
                    UpdateUserStatus(roomUsers, false);

                // Region Update User Map Data
                _userRoom.GetGameMap().GameMap[roomUsers.X, roomUsers.Y] = roomUsers.SqState;
                roomUsers.SqState = _userRoom.GetGameMap().GameMap[roomUsers.SetX, roomUsers.SetY];

                // If user is in soccer proccess.
                if (_userRoom.GotSoccer())
                    _userRoom.GetSoccer().OnUserWalk(roomUsers);

                return;
            }

            // Isn't a Valid Step! And he Can Go? Erase Imediatile Effect
            if (roomUsers.Statusses.ContainsKey("mv"))
                roomUsers.ClearMovement();

            // If user isn't pet and Bot, we have serious Problems. Let Recalculate Path!
            if (!roomUsers.IsPet && !roomUsers.IsBot)
                roomUsers.PathRecalcNeeded = true;
        }
示例#31
0
        internal void ProcessUpdates()
        {
            this.UpdateCounter--;
            if (this.UpdateCounter <= 0)
            {
                this.UpdateNeeded  = false;
                this.UpdateCounter = 0;
                if (this.TimerRunning && this.int_0 > 0)
                {
                    this.int_0            += 500;
                    this.GetRoom().int_13 += 500;
                    this.UpdateNeeded      = true;
                    if (this.int_0 > SongManager.GetSong(Convert.ToInt32(this.ExtraData)).Length)
                    {
                        ServerMessage Message = new ServerMessage(327);
                        Message.AppendInt32(7);
                        Message.AppendInt32(6);
                        Message.AppendInt32(7);
                        Message.AppendInt32(0);
                        Message.AppendInt32(0);
                        this.GetRoom().SendMessage(Message, null);
                        this.int_0            = 1;
                        this.GetRoom().int_13 = 0;
                    }
                }
                else
                {
                    string text = this.GetBaseItem().InteractionType.ToLower();
                    switch (text)
                    {
                    case "onewaygate":
                    {
                        RoomUser roomUserByHabbo = null;
                        if (this.InteractingUser > 0)
                        {
                            roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                        }
                        if (roomUserByHabbo != null && roomUserByHabbo.X == this.mX && roomUserByHabbo.Y == this.mY && this.Extra1 != "tried")
                        {
                            this.ExtraData = "1";
                            this.Extra1    = "tried";
                            roomUserByHabbo.UnlockWalking();
                            roomUserByHabbo.MoveTo(this.SquareBehind);
                            this.ReqUpdate(0);
                            this.UpdateState(false, true);
                        }
                        else
                        {
                            if ((roomUserByHabbo != null && (roomUserByHabbo.Coordinate != this.SquareBehind)) || this.Extra1 == "tried")
                            {
                                this.Extra1          = "";
                                this.ExtraData       = "0";
                                this.InteractingUser = 0;
                                this.UpdateState(false, true);
                                this.GetRoom().GenerateMaps();
                            }
                            else
                            {
                                if (this.ExtraData == "1")
                                {
                                    this.ExtraData = "0";
                                    this.UpdateState(false, true);
                                }
                            }
                        }
                        if (roomUserByHabbo == null)
                        {
                            this.InteractingUser = 0u;
                        }
                        break;
                    }

                    case "teleport":
                    {
                        bool flag  = false;
                        bool flag2 = false;
                        if (this.InteractingUser > 0u)
                        {
                            RoomUser roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (roomUserByHabbo != null)
                            {
                                if (!(roomUserByHabbo.Coordinate == this.Coordinate))
                                {
                                    roomUserByHabbo.AllowOverride = false;
                                    if (roomUserByHabbo.TeleDelay == -1)
                                    {
                                        roomUserByHabbo.TeleDelay = 1;
                                    }
                                    if (TeleHandler.IsTeleLinked(this.Id))
                                    {
                                        flag2 = true;
                                        if (roomUserByHabbo.TeleDelay == 0)
                                        {
                                            uint num2 = TeleHandler.GetLinkedTele(this.Id);
                                            uint num3 = TeleHandler.GetTeleRoomId(num2);
                                            if (num3 == this.RoomId)
                                            {
                                                RoomItem class2 = this.GetRoom().GetItem(num2);
                                                if (class2 == null)
                                                {
                                                    roomUserByHabbo.UnlockWalking();
                                                }
                                                else
                                                {
                                                    roomUserByHabbo.SetPos(class2.GetX, class2.GetY, class2.GetZ);
                                                    roomUserByHabbo.SetRot(class2.Rot);
                                                    class2.ExtraData = "2";
                                                    class2.UpdateState(false, true);
                                                    class2.InteractingUser2 = this.InteractingUser;
                                                }
                                            }
                                            else
                                            {
                                                if (!roomUserByHabbo.IsBot)
                                                {
                                                    PhoenixEnvironment.GetGame().GetRoomManager().method_5(new TeleUserData(roomUserByHabbo.GetClient().GetMessageHandler(), roomUserByHabbo.GetClient().GetHabbo(), num3, num2));
                                                }
                                            }
                                            this.InteractingUser = 0u;
                                        }
                                        else
                                        {
                                            roomUserByHabbo.TeleDelay--;
                                        }
                                    }
                                    else
                                    {
                                        roomUserByHabbo.UnlockWalking();
                                        this.InteractingUser = 0u;
                                        roomUserByHabbo.MoveTo(this.SquareInFront);
                                    }
                                }
                                else
                                {
                                    if ((roomUserByHabbo.Coordinate == this.SquareInFront) && roomUserByHabbo.Item == this)
                                    {
                                        roomUserByHabbo.AllowOverride = true;
                                        flag = true;
                                        if (roomUserByHabbo.IsWalking && (roomUserByHabbo.GoalX != this.mX || roomUserByHabbo.GoalY != this.mY))
                                        {
                                            roomUserByHabbo.ClearMovement(true);
                                        }
                                        roomUserByHabbo.CanWalk       = false;
                                        roomUserByHabbo.AllowOverride = true;
                                        roomUserByHabbo.MoveTo(this.Coordinate);
                                    }
                                    else
                                    {
                                        this.InteractingUser = 0u;
                                    }
                                }
                            }
                            else
                            {
                                this.InteractingUser = 0u;
                            }
                        }
                        if (this.InteractingUser2 > 0u)
                        {
                            RoomUser user2 = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser2);
                            if (user2 != null)
                            {
                                flag = true;
                                user2.UnlockWalking();
                                if (user2.Coordinate == this.Coordinate)
                                {
                                    user2.MoveTo(this.SquareInFront);
                                }
                            }
                            this.InteractingUser2 = 0u;
                        }
                        if (flag)
                        {
                            if (this.ExtraData != "1")
                            {
                                this.ExtraData = "1";
                                this.UpdateState(false, true);
                            }
                        }
                        else
                        {
                            if (flag2)
                            {
                                if (this.ExtraData != "2")
                                {
                                    this.ExtraData = "2";
                                    this.UpdateState(false, true);
                                }
                            }
                            else
                            {
                                if (this.ExtraData != "0")
                                {
                                    this.ExtraData = "0";
                                    this.UpdateState(false, true);
                                }
                            }
                        }
                        this.ReqUpdate(1);
                        break;
                    }

                    case "bottle":
                    {
                        int num = PhoenixEnvironment.GetRandomNumber(0, 7);
                        this.ExtraData = num.ToString();
                        this.UpdateState();
                        break;
                    }

                    case "dice":
                        try
                        {
                            RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (@class.GetClient().GetHabbo().Rigger > 0)
                            {
                                this.ExtraData = @class.GetClient().GetHabbo().Rigger.ToString();
                                @class.GetClient().GetHabbo().Rigger = 0;
                            }
                            else
                            {
                                int num = PhoenixEnvironment.GetRandomNumber(1, 6);
                                this.ExtraData = num.ToString();
                            }
                        }
                        catch
                        {
                            int num = PhoenixEnvironment.GetRandomNumber(1, 6);
                            this.ExtraData = num.ToString();
                        }
                        this.UpdateState();
                        break;

                    case "habbowheel":
                    {
                        int num = PhoenixEnvironment.GetRandomNumber(1, 10);
                        this.ExtraData = num.ToString();
                        this.UpdateState();
                        break;
                    }

                    case "loveshuffler":
                        if (this.ExtraData == "0")
                        {
                            int num = PhoenixEnvironment.GetRandomNumber(1, 4);
                            this.ExtraData = num.ToString();
                            this.ReqUpdate(20);
                        }
                        else
                        {
                            if (this.ExtraData != "-1")
                            {
                                this.ExtraData = "-1";
                            }
                        }
                        this.UpdateState(false, true);
                        break;

                    case "alert":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "vendingmachine":
                        if (this.ExtraData == "1")
                        {
                            RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (@class != null)
                            {
                                @class.UnlockWalking();
                                int int_ = this.GetBaseItem().VendingIds[PhoenixEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)];
                                @class.CarryItem(int_);
                            }
                            this.InteractingUser = 0u;
                            this.ExtraData       = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "wf_trg_onsay":
                    case "wf_trg_enterroom":
                    case "wf_trg_furnistate":
                    case "wf_trg_onfurni":
                    case "wf_trg_offfurni":
                    case "wf_trg_gameend":
                    case "wf_trg_gamestart":
                    case "wf_trg_attime":
                    case "wf_trg_atscore":
                    case "wf_act_saymsg":
                    case "wf_act_togglefurni":
                    case "wf_act_givepoints":
                    case "wf_act_moverotate":
                    case "wf_act_matchfurni":
                    case "wf_act_give_phx":
                    case "wf_cnd_trggrer_on_frn":
                    case "wf_cnd_furnis_hv_avtrs":
                    case "wf_cnd_has_furni_on":
                    case "wf_cnd_phx":
                    case "bb_teleport":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "wf_trg_timer":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        if (this.Extra1.Length > 0)
                        {
                            this.GetRoom().method_15(this);
                            this.ReqUpdate(Convert.ToInt32(Convert.ToDouble(this.Extra1) * 2.0));
                        }
                        break;

                    case "wf_act_moveuser":
                        if (this.dictionary_1.Count > 0 && this.GetRoom().UserList != null)
                        {
                            int        num4      = 0;
                            RoomUser[] RoomUser_ = this.GetRoom().UserList;
                            for (int i = 0; i < RoomUser_.Length; i++)
                            {
                                RoomUser class4 = RoomUser_[i];
                                if (class4 != null)
                                {
                                    if (class4.IsBot)
                                    {
                                        this.dictionary_1.Remove(class4);
                                    }
                                    if (this.dictionary_1.ContainsKey(class4))
                                    {
                                        if (this.dictionary_1[class4] > 0)
                                        {
                                            if (this.dictionary_1[class4] == 10 && !class4.IsBot)
                                            {
                                                class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(4, true);
                                            }
                                            Dictionary <RoomUser, int> dictionary;
                                            RoomUser key;
                                            (dictionary = this.dictionary_1)[key = class4] = dictionary[key] - 1;
                                            num4++;
                                        }
                                        else
                                        {
                                            this.dictionary_1.Remove(class4);
                                            class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(0, true);
                                        }
                                    }
                                }
                            }
                            if (num4 > 0)
                            {
                                this.ReqUpdate(0);
                            }
                            else
                            {
                                this.dictionary_1.Clear();
                            }
                        }
                        break;

                    case "counter":
                        if (this.TimerRunning && this.Extra1 != "1")
                        {
                            this.ExtraData = Convert.ToString(Convert.ToInt32(this.ExtraData) - 1);
                            if (Convert.ToInt32(this.ExtraData) <= 0)
                            {
                                this.ExtraData    = "0";
                                this.TimerRunning = false;
                                this.GetRoom().method_89(0, this, true);
                            }
                            this.UpdateState(true, true);
                            this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData));
                            this.Extra1 = "1";
                            this.ReqUpdate(1);
                        }
                        else
                        {
                            if (this.TimerRunning)
                            {
                                this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData) - 0.5);
                                this.Extra1 = "0";
                                this.ReqUpdate(1);
                            }
                        }
                        break;
                    }
                }
            }
        }
示例#32
0
        public bool Execute(params object[] Params)
        {
            if (Params == null || Params.Length == 0 || String.IsNullOrEmpty(this.StringData))
            {
                return(false);
            }

            RoomUser User = this.Instance.GetRoomUserManager().GetBotByName(this.StringData);

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

            Random      rand  = new Random();
            List <Item> Items = SetItems.Values.ToList();

            Items = Items.OrderBy(x => rand.Next()).ToList();

            if (Items.Count == 0)
            {
                return(false);
            }

            Item Item = Items.First();

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

            if (!Instance.GetRoomItemHandler().GetFloor.Contains(Item))
            {
                SetItems.TryRemove(Item.Id, out Item);

                if (Items.Contains(Item))
                {
                    Items.Remove(Item);
                }

                if (SetItems.Count == 0 || Items.Count == 0)
                {
                    return(false);
                }

                Item = Items.First();
                if (Item == null)
                {
                    return(false);
                }
            }

            if (this.Instance.GetGameMap() == null)
            {
                return(false);
            }

            if (User.IsWalking)
            {
                User.ClearMovement(true);
            }

            User.BotData.ForcedMovement   = true;
            User.BotData.TargetCoordinate = new Point(Item.GetX, Item.GetY);
            User.MoveTo(Item.GetX, Item.GetY);

            return(true);
        }