コード例 #1
0
ファイル: InteractorHopper.cs プロジェクト: sgf/Yupi
        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;
        }
コード例 #2
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            RoomUser roomUser = null;

            if (session != null)
                roomUser = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (roomUser == null)
                return;

            if (Gamemap.TilesTouching(item.X, item.Y, roomUser.X, roomUser.Y))
            {
                var num = item.GetBaseItem().Modes - 1;
                int num2, num3;
                int.TryParse(item.ExtraData, out num2);

                if (num2 <= 0)
                    num3 = 1;
                else
                {
                    if (num2 >= num)
                        num3 = 0;
                    else
                        num3 = num2 + 1;
                }

                item.ExtraData = num3.ToString();
                item.UpdateState();
                item.GetRoom().GetWiredHandler().ExecuteWired(Interaction.TriggerStateChanged, roomUser, item);

                return;
            }

            roomUser.MoveTo(item.SquareInFront);
        }
コード例 #3
0
ファイル: InteractorHCGate.cs プロジェクト: sgf/Yupi
        public override void OnWiredTrigger(RoomItem item)
        {
            uint num = item.GetBaseItem().Modes - 1;

            if (num <= 0)
                item.UpdateState(false, true);

            int num2;
            int.TryParse(item.ExtraData, out num2);
            int num3;

            if (num2 <= 0)
                num3 = 1;
            else
            {
                if (num2 >= num)
                    num3 = 0;
                else
                    num3 = num2 + 1;
            }

            if (num3 == 0 && !item.GetRoom().GetGameMap().ItemCanBePlacedHere(item.X, item.Y))
                return;

            item.ExtraData = num3.ToString();
            item.UpdateState();
            item.GetRoom().GetGameMap().UpdateMapForItem(item);
        }
コード例 #4
0
ファイル: InteractorOneWayGate.cs プロジェクト: sgf/Yupi
        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);
            }
        }
コード例 #5
0
ファイル: InteractorJukebox.cs プロジェクト: BjkGkh/Azure2
        public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (!hasRights)
                return;

            switch (request)
            {
                case -1: // Open interface

                    break;

                default:
                    if (item.ExtraData == "1")
                    {
                        item.GetRoom().GetRoomMusicController().Stop();
                        item.ExtraData = "0";
                    }
                    else
                    {
                        item.GetRoom().GetRoomMusicController().Start();
                        item.ExtraData = "1";
                    }

                    item.UpdateState();

                    item.GetRoom().GetRoomMusicController().BroadcastCurrentSongData(item.GetRoom());
                    break;
            }
        }
コード例 #6
0
ファイル: InteractorHopper.cs プロジェクト: BjkGkh/Custom-R2
        public void OnPlace(GameClients.GameClient Session, RoomItem Item)
        {
            Item.GetRoom().GetRoomItemHandler().HopperCount++;
            using (IQueryAdapter dbClient = SilverwaveEnvironment.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;
            }
        }
コード例 #7
0
        public override void OnPlace(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0u)
            {
                var 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;

            var roomUserByHabbo2 = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2);

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

            item.InteractingUser2 = 0u;
        }
コード例 #8
0
ファイル: InteractorTeleport.cs プロジェクト: BjkGkh/Azure2
        public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (item == null || item.GetRoom() == null || session == null || session.GetHabbo() == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);
            if (roomUserByHabbo == null)
            {
                return;
            }

            if(roomUserByHabbo.Coordinate == item.Coordinate || roomUserByHabbo.Coordinate == item.SquareInFront)
            {
                if(item.InteractingUser != 0)
                {
                    return;
                }
                item.InteractingUser = roomUserByHabbo.GetClient().GetHabbo().Id;
            }
            else if (roomUserByHabbo.CanWalk)
            {
                roomUserByHabbo.MoveTo(item.SquareInFront);
            }
        }
コード例 #9
0
		public void OnTrigger(GameClient Session, RoomItem Item, int Request, bool HasRights)
		{
			if (Item == null || Item.GetRoom() == null || Session == null || Session.GetHabbo() == null)
			{
				return;
			}
			RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
			if (roomUserByHabbo == null)
			{
				return;
			}
			if (!(roomUserByHabbo.Coordinate == Item.Coordinate) && !(roomUserByHabbo.Coordinate == Item.SquareInFront))
			{
				if (roomUserByHabbo.CanWalk)
				{
					roomUserByHabbo.MoveTo(Item.SquareInFront);
				}
				return;
			}
			if (Item.InteractingUser != 0u)
			{
				return;
			}
			roomUserByHabbo.TeleDelay = 2;
			Item.InteractingUser = roomUserByHabbo.GetClient().GetHabbo().Id;
		}
コード例 #10
0
ファイル: InteractorTeleport.cs プロジェクト: BjkGkh/Mercury
		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.AllowOverride = false;
					roomUserByHabbo.CanWalk = true;
				}
				Item.InteractingUser = 0u;
			}
			if (Item.InteractingUser2 != 0u)
			{
				RoomUser roomUserByHabbo2 = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser2);
				if (roomUserByHabbo2 != null)
				{
					roomUserByHabbo2.ClearMovement(true);
					roomUserByHabbo2.AllowOverride = false;
					roomUserByHabbo2.CanWalk = true;
				}
				Item.InteractingUser2 = 0u;
			}
		}
コード例 #11
0
ファイル: TeleportTrigger.cs プロジェクト: BjkGkh/R106
        void IFurniTrigger.OnRemove(GameClient Session, RoomItem Item)
        {
            Item.ExtraData = "0";

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

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

                Item.InteractingUser = 0;
            }

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

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

                Item.InteractingUser2 = 0;
            }

            //Item.GetRoom().RegenerateUserMatrix();
        }
コード例 #12
0
ファイル: TeleportTrigger.cs プロジェクト: BjkGkh/R106
        void IFurniTrigger.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(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;
            }

            //Item.GetRoom().RegenerateUserMatrix();
        }
コード例 #13
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;
				}
			}
		}
コード例 #14
0
ファイル: InteractorTeleport.cs プロジェクト: BjkGkh/07052014
        public void OnRemove(GameClients.GameClient Session, RoomItem Item)
        {
            Item.ExtraData = "0";

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

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

                Item.InteractingUser = 0;
            }

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

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

                Item.InteractingUser2 = 0;
            }
        }
コード例 #15
0
ファイル: InteractorTeleport.cs プロジェクト: sgf/Yupi
        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;
            }
        }
コード例 #16
0
ファイル: InteractorTeleport.cs プロジェクト: BjkGkh/07052014
        public void OnPlace(GameClients.GameClient Session, RoomItem 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;
            }
        }
コード例 #17
0
        public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
        {
            RoomUser User = Item.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            if (Item.GetRoom().TilesTouching(Item.X, Item.Y, User.X, User.Y))
            {
                if (Item.ExtraData != "-1")
                {
                    if (Request == -1)
                    {
                        Item.ExtraData = "0";
                        Item.UpdateState();
                    }
                    else
                    {
                        Item.ExtraData = "-1";
                        Item.UpdateState(false, true);
                        Item.ReqUpdate(4);
                    }
                }
            }
            else
            {
                User.MoveTo(Item.SquareInFront);
            }
        }
コード例 #18
0
ファイル: InteractorHopper.cs プロジェクト: BjkGkh/Custom-R2
        public void OnTrigger(GameClients.GameClient Session, RoomItem Item, int Request, bool HasRights)
        {
            if (Item == null || Item.GetRoom() == null || Session == null || Session.GetHabbo() == null)
                return;
            RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

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

                User.TeleDelay = 2;
                Item.InteractingUser = User.GetClient().GetHabbo().Id;

            }
            else if (User.CanWalk)
            {
                User.MoveTo(Item.SquareInFront);
            }
        }
コード例 #19
0
        public override void OnWiredTrigger(RoomItem item)
        {
            if (item.OnCannonActing)
                return;

            item.OnCannonActing = true;

            var coords = new HashSet<Point>();

            var itemX = item.X;
            var itemY = item.Y;

            switch (item.Rot)
            {
                case 0: // TESTEADO OK
                    var startingcoordX = itemX - 1;

                    for (var i = startingcoordX; i > 0; i--)
                        coords.Add(new Point(i, itemY));

                    break;

                case 4: // TESTEADO OK
                    var startingcoordX2 = itemX + 2;
                    var mapsizeX = item.GetRoom().GetGameMap().Model.MapSizeX;

                    for (var i = startingcoordX2; i < mapsizeX; i++)
                        coords.Add(new Point(i, itemY));

                    break;

                case 2: // TESTEADO OK
                    var startingcoordY = itemY - 1;

                    for (var i = startingcoordY; i > 0; i--)
                        coords.Add(new Point(itemX, i));

                    break;

                case 6: // OK!
                    var startingcoordY2 = itemY + 2;
                    var mapsizeY = item.GetRoom().GetGameMap().Model.MapSizeY;

                    for (var i = startingcoordY2; i < mapsizeY; i++)
                        coords.Add(new Point(itemX, i));

                    break;
            }

            item.ExtraData = (item.ExtraData == "0") ? "1" : "0";
            item.UpdateState();

            _mItem = item;
            _mCoords = coords;

            var explodeTimer = new Timer(1350);
            explodeTimer.Elapsed += ExplodeAndKick;
            explodeTimer.Enabled = true;
        }
コード例 #20
0
        public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (!hasRights)
            {
                return;
            }
            int result;
            if (!int.TryParse(item.ExtraData, out result))
            {
                item.ExtraData = "0";
                result = 0;
            }
            if (request == 0 && result == 0)
            {
                result = 30;
            }
            else
            {
                switch (request)
                {
                    case 2:
                        if (item.GetRoom().GetBanzai().IsBanzaiActive && item.PendingReset && result > 0)
                        {
                            result = 0;
                            item.PendingReset = false;
                        }
                        else
                        {
                            result = result >= 30 ? (result != 30 ? (result != 60 ? (result != 120 ? (result != 180 ? (result != 300 ? 0 : 600) : 300) : 180) : 120) : 60) : 30;
                            item.UpdateNeeded = false;
                        }
                        break;

                    case 0:
                    case 1:
                        if (!item.GetRoom().GetBanzai().IsBanzaiActive)
                        {
                            item.UpdateNeeded = !item.UpdateNeeded;
                            if (item.UpdateNeeded)
                            {
                                item.GetRoom().GetBanzai().BanzaiStart();
                            }
                            item.PendingReset = true;
                        }
                        else
                        {
                            item.UpdateNeeded = !item.UpdateNeeded;
                            if (item.UpdateNeeded)
                            {
                                item.GetRoom().GetBanzai().BanzaiEnd();
                            }
                            item.PendingReset = true;
                        }
                        break;
                }
            }
            item.ExtraData = Convert.ToString(result);
            item.UpdateState();
        }
コード例 #21
0
        public void OnTrigger(GameClients.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 (!((Math.Abs((int)(User.X - Item.GetX)) >= 2) || (Math.Abs((int)(User.Y - Item.GetY)) >= 2)))
            {
                User.SetRot(Rotation.Calculate(User.X, User.Y, Item.GetX, Item.GetY), false);
                if (User.RotBody % 2 != 0)
                {
                    User.MoveTo(Item.GetX + 1, Item.GetY);
                    return;
                }
                Room Room = Item.GetRoom();
                Point NewPoint = new Point(0, 0);
                if (User.RotBody == 4)
                { NewPoint = new Point(Item.GetX, Item.GetY + 1); }

                if (User.RotBody == 0)
                { NewPoint = new Point(Item.GetX, Item.GetY - 1); }

                if (User.RotBody == 6)
                { NewPoint = new Point(Item.GetX - 1, Item.GetY); }

                if (User.RotBody == 2)
                { NewPoint = new Point(Item.GetX + 1, Item.GetY); }

                if (Room.GetGameMap().ValidTile(NewPoint.X, NewPoint.Y) && Room.GetGameMap().itemCanBePlacedHere(NewPoint.X, NewPoint.Y) && Room.GetGameMap().CanRollItemHere(NewPoint.X, NewPoint.Y))
                {
                    Double NewZ = Item.GetRoom().GetGameMap().SqAbsoluteHeight(NewPoint.X, NewPoint.Y);

                    ServerMessage mMessage = new ServerMessage();
                    mMessage.Init(Outgoing.ObjectOnRoller); // Cf
                    mMessage.AppendInt32(Item.GetX);
                    mMessage.AppendInt32(Item.GetY);
                    mMessage.AppendInt32(NewPoint.X);
                    mMessage.AppendInt32(NewPoint.Y);
                    mMessage.AppendInt32(1);
                    mMessage.AppendInt32(Item.Id);
                    mMessage.AppendString(Item.GetZ.ToString().Replace(',', '.'));
                    mMessage.AppendString(NewZ.ToString().Replace(',', '.'));
                    mMessage.AppendInt32(0);
                    Room.SendMessage(mMessage);

                    Item.GetRoom().GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, NewPoint.X, NewPoint.Y, Item.Rot, false, false, false);
                }
            }
            else
            {
                User.MoveTo(Item.GetX + 1, Item.GetY);
            }
        }
コード例 #22
0
ファイル: InteractorJukebox.cs プロジェクト: BjkGkh/Azure2
        public void OnRemove(GameClient session, RoomItem item)
        {
            if (item.GetRoom().GetRoomMusicController().IsPlaying)
            {
                item.GetRoom().GetRoomMusicController().Stop();
                item.GetRoom().GetRoomMusicController().BroadcastCurrentSongData(session.GetHabbo().CurrentRoom);
            }

            item.GetRoom().GetRoomMusicController().Reset();
        }
コード例 #23
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 - MercuryEnvironment.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;
				}
			}
		}
コード例 #24
0
ファイル: BanzaiTimerTrigger.cs プロジェクト: BjkGkh/R106
        void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
        {
            if (!UserHasRights)
            {
                return;
            }

            int oldValue = 0;

            if (!string.IsNullOrEmpty(Item.ExtraData))
            {
                try
                {
                    oldValue = int.Parse(Item.ExtraData);
                }
                catch { }
            }

            if (Request == 2)
            {
                if (Item.pendingReset && oldValue > 0)
                {
                    oldValue = 0;
                    Item.pendingReset = false;
                }
                else
                {
                    oldValue = oldValue + 60;
                    Item.UpdateNeeded = false;
                }
            }
            else if (Request == 1)
            {
                if (!Item.GetRoom().GetBanzai().isBanzaiActive)
                {
                    Item.UpdateNeeded = !Item.UpdateNeeded;

                    if (Item.UpdateNeeded)
                    {
                        //Console.WriteLine("Game started");
                        Item.GetRoom().GetBanzai().BanzaiStart();
                    }

                    Item.pendingReset = true;
                }
            }


            Item.ExtraData = oldValue.ToString();
            Item.UpdateState();
        }
コード例 #25
0
 public void OnWiredTrigger(RoomItem Item)
 {
     if (!Item.GetRoom().GetBanzai().isBanzaiActive)
     {
         Item.UpdateNeeded = !Item.UpdateNeeded;
         if (Item.UpdateNeeded)
             Item.GetRoom().GetBanzai().BanzaiStart();
         Item.pendingReset = true;
     }
     Item.UpdateNeeded = !Item.UpdateNeeded;
     if (Item.UpdateNeeded)
         Item.GetRoom().GetBanzai().BanzaiEnd();
     Item.pendingReset = true;
 }
コード例 #26
0
ファイル: InteractorJukebox.cs プロジェクト: BjkGkh/Azure2
 public void OnWiredTrigger(RoomItem item)
 {
     if (item.ExtraData == "1")
     {
         item.GetRoom().GetRoomMusicController().Stop();
         item.ExtraData = "0";
     }
     else
     {
         item.GetRoom().GetRoomMusicController().Start();
         item.ExtraData = "1";
     }
     item.UpdateState();
 }
コード例 #27
0
ファイル: JukeBoxTrigger.cs プロジェクト: BjkGkh/R106
        void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
        {
            if (Item.ExtraData == "1")
            {
                Item.GetRoom().GetRoomMusicController().Stop();
                Item.ExtraData = "0";
            }
            else
            {
                Item.GetRoom().GetRoomMusicController().Start();
                Item.ExtraData = "1";
            }

            Item.UpdateState();
        }
コード例 #28
0
ファイル: GroupGate.cs プロジェクト: BjkGkh/R106
        void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
        {
            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;
            }

            string[] extraData = Item.ExtraData.Split(':');
            uint groupID = TextHandling.ParseUInt32(extraData[0]);
            GroupData group = ButterflyEnvironment.GetGame().GetGroupManager().GetGroup(groupID);

            if (group == null || !group.IsMember(Session.GetHabbo().Id))
                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(true);
                }

                SetExtraData("1", Item);
                Item.UpdateState();
                User.AllowOverride = true;
                User.MoveTo(Item.Coordinate);

                Item.ReqUpdate(4, true);
            }
        }
コード例 #29
0
		public void OnTrigger(GameClient Session, RoomItem Item, int Request, bool HasRights)
		{
			checked
			{
				int num = Item.GetBaseItem().Modes - 1;
				if (Session == null || !HasRights || num <= 0 || Item.GetBaseItem().InteractionType == InteractionType.pinata)
				{
					return;
				}
				CyberEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_SWITCH, 0u);
				int num2 = 0;
				int.TryParse(Item.ExtraData, out num2);
				int num3;
				if (num2 <= 0)
				{
					num3 = 1;
				}
				else
				{
					if (num2 >= num)
					{
						num3 = 0;
					}
					else
					{
						num3 = num2 + 1;
					}
				}
				Item.ExtraData = num3.ToString();
				Item.UpdateState();
				Item.GetRoom().GetWiredHandler().ExecuteWired(WiredItemType.TriggerToggleFurni, new object[]
				{
					Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id),
					Item
				});
				if (Item.GetBaseItem().StackMultipler)
				{
					Room room = Item.GetRoom();
					foreach (RoomUser current in room.GetRoomUserManager().UserList.Values)
					{
						if (current.Statusses.ContainsKey("sit"))
						{
							room.GetRoomUserManager().UpdateUserStatus(current, true);
						}
					}
				}
			}
		}
コード例 #30
0
ファイル: BanzaiPuckTrigger.cs プロジェクト: BjkGkh/R106
        void IFurniTrigger.OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights)
        {
            if (Session == null)
                return;
            RoomUser interactingUser = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            Point userCoord = interactingUser.Coordinate;
            Point ballCoord = Item.Coordinate;

            int differenceX = userCoord.X - ballCoord.X;
            int differenceY = userCoord.Y - ballCoord.Y;

            if (differenceX <= 1 && differenceX >= -1 && differenceY <= 1 && differenceY >= -1)
            {
                differenceX = differenceX * 2;
                differenceY = differenceY * 2;

                int newX = Item.GetX + differenceX;
                int newY = Item.GetY + differenceY;

                Item.GetRoom().GetSoccer().MoveBall(Item, Session, newX, newY);
                interactingUser.MoveTo(ballCoord);
            }
            else //if (differenceX == 2 || differenceY == 2 || differenceY == - 2 || differenceX == -2)
            {
                Item.interactingBallUser = Session.GetHabbo().Id;

                differenceX = differenceX * (-1);
                differenceY = differenceY * (-1);

                if (differenceX > 1)
                    differenceX = 1;
                else if (differenceX < -1)
                    differenceX = -1;


                if (differenceY > 1)
                    differenceY = 1;
                else if (differenceY < -1)
                    differenceY = -1;


                int newX = Item.GetX + differenceX;
                int newY = Item.GetY + differenceY;

                interactingUser.MoveTo(new Point(newX, newY));
            }
        }
コード例 #31
0
        public override void OnUserWalk(GameClient session, RoomItem item, RoomUser user)
        {
            if (item?.GetRoom() == null || session?.GetHabbo() == null)
            {
                return;
            }

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

            if (roomUserByHabbo == null)
            {
                return;
            }

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

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

            item.InteractingUser = roomUserByHabbo.GetClient().GetHabbo().Id;
        }
コード例 #32
0
ファイル: InteractorTeleport.cs プロジェクト: xXSicilyXx/Yupi
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (item?.GetRoom() == null || session?.GetHabbo() == null)
            {
                return;
            }

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

            if (user != null)
            {
                if (user.Coordinate == item.Coordinate || user.Coordinate == item.SquareInFront)
                {
                    if (item.InteractingUser != 0)
                    {
                        return;
                    }

                    item.InteractingUser = user.GetClient().GetHabbo().Id;
                }
                else if (user.CanWalk)
                {
                    user.MoveTo(item.SquareInFront);
                }
            }
        }
コード例 #33
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (item?.GetRoom() == null || session == null || session.GetHabbo() == null)
            {
                return;
            }

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

            if (roomUserByHabbo == null)
            {
                return;
            }

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

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

            roomUserByHabbo.TeleDelay = 2;
            item.InteractingUser      = roomUserByHabbo.GetClient().GetHabbo().Id;
        }
コード例 #34
0
        public static void SaveWired(GameClient session, RoomItem item, ClientMessage request)
        {
            if (item == null || !item.IsWired)
            {
                return;
            }

            Room room = item.GetRoom();

            WiredHandler wiredHandler = room?.GetWiredHandler();

            if (wiredHandler == null)
            {
                return;
            }

            switch (item.GetBaseItem().InteractionType)
            {
            case Interaction.TriggerTimer:
            {
                request.GetInteger();
                IWiredItem wired = wiredHandler.GetWired(item);
                int        delay = request.GetInteger() * 500;
                wired.Delay = delay;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.TriggerRoomEnter:
            {
                request.GetInteger();
                string     otherString = request.GetString();
                IWiredItem wired       = wiredHandler.GetWired(item);
                wired.OtherString = otherString;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.TriggerLongRepeater:
            {
                request.GetInteger();
                int        delay  = request.GetInteger() * 5000;
                IWiredItem wired2 = wiredHandler.GetWired(item);
                wired2.Delay = delay;
                wiredHandler.ReloadWired(wired2);
                break;
            }

            case Interaction.TriggerRepeater:
            {
                request.GetInteger();
                int        delay  = request.GetInteger() * 500;
                IWiredItem wired2 = wiredHandler.GetWired(item);
                wired2.Delay = delay;
                wiredHandler.ReloadWired(wired2);
                break;
            }

            case Interaction.TriggerOnUserSay:
            {
                request.GetInteger();
                int        num          = request.GetInteger();
                string     otherString2 = request.GetString();
                IWiredItem wired3       = wiredHandler.GetWired(item);
                wired3.OtherString = otherString2;
                wired3.OtherBool   = num == 1;
                wiredHandler.ReloadWired(wired3);
                break;
            }

            case Interaction.TriggerStateChanged:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems = GetFurniItems(request, room);
                int             num2       = request.GetInteger();
                IWiredItem      wired4     = wiredHandler.GetWired(item);
                wired4.Delay = num2 * 500;
                wired4.Items = furniItems;
                wiredHandler.ReloadWired(wired4);
                break;
            }

            case Interaction.TriggerWalkOnFurni:
            case Interaction.ActionChase:
            case Interaction.ActionResetTimer:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems2 = GetFurniItems(request, room);
                int             num3        = request.GetInteger();
                IWiredItem      wired5      = wiredHandler.GetWired(item);
                wired5.Delay = num3 * 500;
                wired5.Items = furniItems2;
                wiredHandler.ReloadWired(wired5);
                break;
            }

            case Interaction.TriggerWalkOffFurni:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems3 = GetFurniItems(request, room);
                int             num4        = request.GetInteger();
                IWiredItem      wired6      = wiredHandler.GetWired(item);
                wired6.Delay = num4 * 500;
                wired6.Items = furniItems3;
                wiredHandler.ReloadWired(wired6);
                break;
            }

            case Interaction.ActionMoveRotate:
            case Interaction.ActionMoveToDir:
            {
                request.GetInteger();
                int dir = request.GetInteger();
                int rot = request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems4 = GetFurniItems(request, room);
                int             delay       = request.GetInteger();
                IWiredItem      wired7      = wiredHandler.GetWired(item);
                wired7.Items       = furniItems4;
                wired7.Delay       = delay * 500;
                wired7.OtherString = $"{dir};{rot}";
                wiredHandler.ReloadWired(wired7);
                break;
            }

            case Interaction.ActionShowMessage:
            case Interaction.ActionKickUser:
            {
                request.GetInteger();
                string     otherString3 = request.GetString();
                IWiredItem wired8       = wiredHandler.GetWired(item);
                wired8.OtherString = otherString3;
                wiredHandler.ReloadWired(wired8);
                break;
            }

            case Interaction.ActionTeleportTo:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems5 = GetFurniItems(request, room);
                int             num8        = request.GetInteger();
                IWiredItem      wired9      = wiredHandler.GetWired(item);
                wired9.Items = furniItems5;
                wired9.Delay = num8 * 500;
                wiredHandler.ReloadWired(wired9);
                break;
            }

            case Interaction.ActionToggleState:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems6 = GetFurniItems(request, room);
                int             num9        = request.GetInteger();
                IWiredItem      wired10     = wiredHandler.GetWired(item);
                wired10.Items = furniItems6;
                wired10.Delay = num9 * 500;
                wiredHandler.ReloadWired(wired10);
                break;
            }

            case Interaction.ActionGiveReward:
            {
                if (!session.GetHabbo().HasFuse("fuse_use_superwired"))
                {
                    return;
                }

                request.GetInteger();
                int  often  = request.GetInteger();
                bool unique = request.GetIntegerAsBool();
                int  limit  = request.GetInteger();
                request.GetInteger();
                string          extrainfo   = request.GetString();
                List <RoomItem> furniItems7 = GetFurniItems(request, room);
                IWiredItem      wired11     = wiredHandler.GetWired(item);
                wired11.Items             = furniItems7;
                wired11.Delay             = 0;
                wired11.OtherBool         = unique;
                wired11.OtherString       = extrainfo;
                wired11.OtherExtraString  = often.ToString();
                wired11.OtherExtraString2 = limit.ToString();
                wiredHandler.ReloadWired(wired11);
                break;
            }

            case Interaction.ActionMuteUser:
            {
                request.GetInteger();
                int             minutes     = request.GetInteger() * 500;
                string          message     = request.GetString();
                List <RoomItem> furniItems7 = GetFurniItems(request, room);
                IWiredItem      wired11     = wiredHandler.GetWired(item);
                wired11.Items       = furniItems7;
                wired11.Delay       = minutes;
                wired11.OtherBool   = false;
                wired11.OtherString = message;
                wiredHandler.ReloadWired(wired11);
                break;
            }

            case Interaction.TriggerScoreAchieved:
            {
                request.GetInteger();
                int pointsRequired = request.GetInteger();

                IWiredItem wired11 = wiredHandler.GetWired(item);
                wired11.Delay       = 0;
                wired11.OtherString = pointsRequired.ToString();
                wiredHandler.ReloadWired(wired11);
                break;
            }

            case Interaction.ConditionItemsMatches:
            case Interaction.ConditionItemsDontMatch:
            case Interaction.ActionPosReset:
            {
                request.GetInteger();
                bool actualExtraData = request.GetIntegerAsBool();
                bool actualRot       = request.GetIntegerAsBool();
                bool actualPosition  = request.GetIntegerAsBool();

                string booleans = $"{actualExtraData},{actualRot},{actualPosition}".ToLower();

                request.GetString();
                List <RoomItem> items = GetFurniItems(request, room);

                int        delay = request.GetInteger() * 500;
                IWiredItem wiry  = wiredHandler.GetWired(item);

                string dataToSave       = string.Empty;
                string extraStringForWi = string.Empty;

                foreach (RoomItem aItem in items)
                {
                    if (aItem.GetBaseItem().InteractionType == Interaction.Dice)
                    {
                        // Why have a RETURN here?
                        dataToSave += string.Format("0|0|0|0,0,0", aItem.Id, aItem.ExtraData, aItem.Rot, aItem.X,
                                                    aItem.Y, aItem.Z);
                        extraStringForWi +=
                            $"{aItem.Id},{(actualExtraData ? aItem.ExtraData : "N")},{(actualRot ? aItem.Rot.ToString() : "N")},{(actualPosition ? aItem.X.ToString() : "N")},{(actualPosition ? aItem.Y.ToString() : "N")}";

                        return;
                    }

                    dataToSave       += $"{aItem.Id}|{aItem.ExtraData}|{aItem.Rot}|{aItem.X},{aItem.Y},{aItem.Z}";
                    extraStringForWi +=
                        $"{aItem.Id},{(actualExtraData ? aItem.ExtraData : "N")},{(actualRot ? aItem.Rot.ToString() : "N")},{(actualPosition ? aItem.X.ToString() : "N")},{(actualPosition ? aItem.Y.ToString() : "N")}";

                    if (aItem == items.Last())
                    {
                        continue;
                    }

                    dataToSave       += "/";
                    extraStringForWi += ";";
                }

                wiry.Items             = items;
                wiry.Delay             = delay;
                wiry.OtherBool         = true;
                wiry.OtherString       = booleans;
                wiry.OtherExtraString  = dataToSave;
                wiry.OtherExtraString2 = extraStringForWi;
                wiredHandler.ReloadWired(wiry);
                break;
            }

            case Interaction.ConditionGroupMember:
            case Interaction.ConditionNotGroupMember:
            case Interaction.TriggerCollision:
            {
                break;
            }

            case Interaction.ConditionHowManyUsersInRoom:
            case Interaction.ConditionNegativeHowManyUsers:
            {
                request.GetInteger();
                int minimum = request.GetInteger();
                int maximum = request.GetInteger();

                string     ei      = $"{minimum},{maximum}";
                IWiredItem wired12 = wiredHandler.GetWired(item);
                wired12.Items       = new List <RoomItem>();
                wired12.OtherString = ei;
                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ConditionUserNotWearingEffect:
            case Interaction.ConditionUserWearingEffect:
            {
                request.GetInteger();
                int        effect  = request.GetInteger();
                IWiredItem wired12 = wiredHandler.GetWired(item);
                wired12.Items       = new List <RoomItem>();
                wired12.OtherString = effect.ToString();
                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ConditionUserWearingBadge:
            case Interaction.ConditionUserNotWearingBadge:
            case Interaction.ConditionUserHasFurni:
            {
                request.GetInteger();
                string     badge   = request.GetString();
                IWiredItem wired12 = wiredHandler.GetWired(item);
                wired12.Items       = new List <RoomItem>();
                wired12.OtherString = badge;
                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ConditionDateRangeActive:
            {
                request.GetInteger();

                int startDate = request.GetInteger();
                int endDate   = request.GetInteger();

                IWiredItem wired12 = wiredHandler.GetWired(item);
                wired12.Items       = new List <RoomItem>();
                wired12.OtherString = $"{startDate},{endDate}";

                if (startDate == 0)
                {
                    wired12.OtherString = string.Empty;
                    session.SendNotif(Yupi.GetLanguage().GetVar("user_wired_con_date_range"));
                }

                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ConditionFurnisHaveUsers:
            case Interaction.ConditionTriggerOnFurni:
            case Interaction.ConditionFurniTypeMatches:
            case Interaction.ConditionFurnisHaveNotUsers:
            case Interaction.ConditionTriggererNotOnFurni:
            case Interaction.ConditionFurniTypeDontMatch:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems = GetFurniItems(request, room);
                IWiredItem      wired12    = wiredHandler.GetWired(item);

                wired12.Items = furniItems;
                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ConditionFurniHasFurni:
            case Interaction.ConditionFurniHasNotFurni:
            {
                request.GetInteger();
                bool allItems = request.GetIntegerAsBool();
                request.GetString();

                List <RoomItem> furniItems = GetFurniItems(request, room);
                IWiredItem      wired      = wiredHandler.GetWired(item);

                wired.OtherBool = allItems;
                wired.Items     = furniItems;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionGiveScore:
            {
                request.GetInteger();
                int scoreToGive     = request.GetInteger();
                int maxTimesPerGame = request.GetInteger();

                string newExtraInfo = $"{scoreToGive},{maxTimesPerGame}";

                List <RoomItem> furniItems8 = GetFurniItems(request, room);
                IWiredItem      wired12     = wiredHandler.GetWired(item);
                wired12.Items       = furniItems8;
                wired12.OtherString = newExtraInfo;
                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ActionJoinTeam:
            {
                request.GetInteger();
                int        team  = request.GetInteger();
                IWiredItem wired = wiredHandler.GetWired(item);
                wired.Delay = team * 500;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionBotTalk:
            {
                request.GetInteger();
                bool       type  = request.GetIntegerAsBool();
                string[]   data  = request.GetString().Split((char)9);
                IWiredItem wired = wiredHandler.GetWired(item);
                wired.OtherBool        = type;
                wired.OtherString      = data[0];
                wired.OtherExtraString = data[1];
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionBotClothes:
            {
                request.GetInteger();
                string[]   data  = request.GetString().Split((char)9);
                IWiredItem wired = wiredHandler.GetWired(item);
                wired.OtherString      = data[0];
                wired.OtherExtraString = data[1];
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionBotTeleport:
            {
                request.GetInteger();
                string          botName    = request.GetString();
                List <RoomItem> furniItems = GetFurniItems(request, room);
                IWiredItem      wired      = wiredHandler.GetWired(item);
                wired.Items       = furniItems;
                wired.OtherString = botName;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionBotGiveHanditem:
            {
                request.GetInteger();
                int        handitem = request.GetInteger();
                string     botName  = request.GetString();
                IWiredItem wired    = wiredHandler.GetWired(item);
                wired.OtherString = botName;
                wired.Delay       = handitem * 500;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionBotMove:
            {
                request.GetInteger();
                string          botName    = request.GetString();
                List <RoomItem> furniItems = GetFurniItems(request, room);
                IWiredItem      wired      = wiredHandler.GetWired(item);
                wired.Items       = furniItems;
                wired.OtherString = botName;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionCallStacks:
            {
                request.GetInteger();
                request.GetString();
                List <RoomItem> furniItems = GetFurniItems(request, room);
                IWiredItem      wired      = wiredHandler.GetWired(item);
                int             num        = request.GetInteger();
                wired.Items = furniItems;
                wired.Delay = num * 500;
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ActionBotTalkToAvatar:
            {
                request.GetInteger();
                bool       type  = request.GetIntegerAsBool();
                string[]   data  = request.GetString().Split((char)9);
                IWiredItem wired = wiredHandler.GetWired(item);
                wired.OtherBool        = type;
                wired.OtherString      = data[0];
                wired.OtherExtraString = data[1];
                wiredHandler.ReloadWired(wired);
                break;
            }

            case Interaction.ConditionTimeMoreThan:
            case Interaction.ConditionTimeLessThan:
            {
                request.GetInteger();
                int        time    = request.GetInteger();
                IWiredItem wired12 = wiredHandler.GetWired(item);
                Console.WriteLine(time);
                wired12.Delay = time * 500;
                wiredHandler.ReloadWired(wired12);
                break;
            }

            case Interaction.ConditionUserHasHanditem:
            {
                request.GetInteger();
                int        handitem = request.GetInteger();
                IWiredItem wired    = wiredHandler.GetWired(item);
                wired.Delay = handitem * 500;
                wiredHandler.ReloadWired(wired);
                break;
            }
            }

            session.SendMessage(new ServerMessage(LibraryParser.OutgoingRequest("SaveWiredMessageComposer")));
        }
コード例 #35
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (session == null)
            {
                return;
            }

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

            if (roomUserByHabbo == null)
            {
                return;
            }

            if (PathFinder.GetDistance(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y) > 1)
            {
                roomUserByHabbo.MoveTo(item.X + 1, item.Y);
            }

            if (Math.Abs(roomUserByHabbo.X - item.X) < 2 && Math.Abs(roomUserByHabbo.Y - item.Y) < 2)
            {
                roomUserByHabbo.SetRot(
                    PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y), false);

                Room  room  = item.GetRoom();
                Point point = new Point(0, 0);

                switch (roomUserByHabbo.RotBody)
                {
                case 4:
                    point = new Point(item.X, item.Y + 1);
                    break;

                case 0:
                    point = new Point(item.X, item.Y - 1);
                    break;

                case 6:
                    point = new Point(item.X - 1, item.Y);
                    break;

                default:
                    if (roomUserByHabbo.RotBody != 2)
                    {
                        return;
                    }

                    point = new Point(item.X + 1, item.Y);
                    break;
                }

                if (!room.GetGameMap().ValidTile2(point.X, point.Y))
                {
                    return;
                }

                List <RoomItem> coordinatedItems = room.GetGameMap().GetCoordinatedItems(point);

                if (coordinatedItems.Any(i => !i.GetBaseItem().Stackable))
                {
                    return;
                }

                double num = item.GetRoom().GetGameMap().SqAbsoluteHeight(point.X, point.Y);

                ServerMessage serverMessage = new ServerMessage();

                serverMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer"));

                serverMessage.AppendInteger(item.X);
                serverMessage.AppendInteger(item.Y);
                serverMessage.AppendInteger(point.X);
                serverMessage.AppendInteger(point.Y);
                serverMessage.AppendInteger(1);
                serverMessage.AppendInteger(item.Id);
                serverMessage.AppendString(item.Z.ToString(Yupi.CultureInfo));
                serverMessage.AppendString(num.ToString(Yupi.CultureInfo));
                serverMessage.AppendInteger(0);

                room.SendMessage(serverMessage);

                item.GetRoom()
                .GetRoomItemHandler()
                .SetFloorItem(roomUserByHabbo.GetClient(), item, point.X, point.Y, item.Rot, false, false, false);
            }
        }