예제 #1
0
파일: BattleBanzai.cs 프로젝트: BjkGkh/R106
        internal void OnUserWalk(RoomUser User)
        {
            if (User == null)
                return;
            foreach (RoomItem item in pucks.Values)
            {
                int differenceX = User.X - item.GetX;
                int differenceY = User.Y - item.GetY;

                if (differenceX <= 1 && differenceX >= -1 && differenceY <= 1 && differenceY >= -1)
                {
                    int NewX = differenceX * -1;
                    int NewY = differenceY * -1;

                    NewX = NewX + item.GetX;
                    NewY = NewY + item.GetY;

                    if (item.interactingBallUser == User.userID && room.GetGameMap().ValidTile(NewX, NewY))
                    {
                        item.interactingBallUser = 0;

                        MovePuck(item, User.GetClient(), User.Coordinate, item.Coordinate, 6, User.team);
                    }
                    else if (room.GetGameMap().ValidTile(NewX, NewY))
                    {
                        MovePuck(item, User.GetClient(), NewX, NewY, User.team);
                    }
                }
            }

            if (banzaiStarted)
            {
                HandleBanzaiTiles(User.Coordinate, User.team, User);
            }
        }
예제 #2
0
        /// <summary>
        /// Delivers the random pinata item.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="room">The room.</param>
        /// <param name="item">The item.</param>
        internal void DeliverRandomPinataItem(RoomUser user, Room room, RoomItem item)
        {
            if (room == null || item == null || item.GetBaseItem().InteractionType != Interaction.Pinata || !Pinatas.ContainsKey(item.GetBaseItem().ItemId))
                return;

            PinataItem pinataItem;
            Pinatas.TryGetValue(item.GetBaseItem().ItemId, out pinataItem);

            if (pinataItem == null || pinataItem.Rewards.Count < 1)
                return;

            item.RefreshItem();
            item.BaseItem = pinataItem.Rewards[new Random().Next((pinataItem.Rewards.Count - 1))];

            item.ExtraData = string.Empty;
            room.GetRoomItemHandler().RemoveFurniture(user.GetClient(), item.Id, false);
            using (var queryReactor = AzureEmulator.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.RunFastQuery(string.Format("UPDATE items_rooms SET base_item='{0}', extra_data='' WHERE id='{1}'", item.BaseItem, item.Id));
                queryReactor.RunQuery();
            }

            if (!room.GetRoomItemHandler().SetFloorItem(user.GetClient(), item, item.X, item.Y, 0, true, false, true))
                user.GetClient().GetHabbo().GetInventoryComponent().AddItem(item);
        }
예제 #3
0
파일: Soccer.cs 프로젝트: BjkGkh/R106
        internal void OnUserWalk(RoomUser User)
        {
            if (User == null)
                return;
            foreach (RoomItem item in balls.Values)
            {
                int differenceX = User.X - item.GetX;
                int differenceY = User.Y - item.GetY;

                if (differenceX <= 1 && differenceX >= -1 && differenceY <= 1 && differenceY >= -1)
                {
                    int NewX = differenceX * -1;
                    int NewY = differenceY * -1;

                    NewX = NewX + item.GetX;
                    NewY = NewY + item.GetY;

                    if (item.interactingBallUser == User.userID && item.GetRoom().GetGameMap().ValidTile(NewX, NewY))
                    {
                        item.interactingBallUser = 0;
                        MoveBall(item, User.GetClient(), User.Coordinate, item.Coordinate, 6);
                    }
                    else if (item.GetRoom().GetGameMap().ValidTile(NewX, NewY))
                    {
                        MoveBall(item, User.GetClient(), NewX, NewY);
                    }
                }
            }
        }
예제 #4
0
        /// <summary>
        ///     Delivers the random pinata item.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="room">The room.</param>
        /// <param name="item">The item.</param>
        internal void DeliverRandomPinataItem(RoomUser user, Room room, RoomItem item)
        {
            if (room == null || item == null || item.GetBaseItem().InteractionType != Interaction.Pinata ||
                !Pinatas.ContainsKey(item.GetBaseItem().ItemId))
                return;

            PinataItem pinataItem;
            Pinatas.TryGetValue(item.GetBaseItem().ItemId, out pinataItem);

            if (pinataItem == null || pinataItem.Rewards.Count < 1)
                return;

            item.RefreshItem();

            //@TODO :: KESSILER, now PINATA DOESNT WORK. MUST CREATE SOLUTION LATER.

            //item.BaseName = pinataItem.Rewards[new Random().Next((pinataItem.Rewards.Count - 1))];

            item.ExtraData = string.Empty;
            room.GetRoomItemHandler().RemoveFurniture(user.GetClient(), item.Id, false);

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                queryReactor.RunFastQuery(
                    $"UPDATE items_rooms SET item_name='{item.BaseName}', extra_data='' WHERE id='{item.Id}'");

            if (!room.GetRoomItemHandler().SetFloorItem(user.GetClient(), item, item.X, item.Y, 0, true, false, true))
                user.GetClient().GetHabbo().GetInventoryComponent().AddItem(item);
        }
예제 #5
0
파일: PetBot.cs 프로젝트: BjkGkh/Mercury
		internal override void OnUserEnterRoom(RoomUser User)
		{
			if (User.GetClient() != null && User.GetClient().GetHabbo() != null)
			{
				RoomUser roomUser = base.GetRoomUser();
				if (roomUser != null && User.GetClient().GetHabbo().Username == roomUser.PetData.OwnerName)
				{
					Random random = new Random();
					string[] value = PetLocale.GetValue("welcome.speech.pet");
					string message = value[random.Next(0, checked(value.Length - 1))];
                    message += User.GetUsername();
					roomUser.Chat(null, message, false, 0, 0);
				}
			}
		}
예제 #6
0
 public override void OnUserEnterRoom(RoomUser RoomUser_0)
 {
     speechthread = new Thread(delegate()
     {
         try
         {
             if (RoomUser_0 != null && RoomUser_0.GetClient() != null && this.uBot.BotType == "friendbot")
             {
                 Thread.Sleep(1000);
                 base.GetRoomUser().HandleSpeech(null, "Hallo " + RoomUser_0.GetClient().GetHabbo().Username + " wie gehts dir?", false);
             }
         }
         catch { }
     });
     speechthread.Start();
 }
예제 #7
0
파일: TeleportToFurni.cs 프로젝트: sgf/Yupi
        private bool Teleport(RoomUser user)
        {
            if (!Items.Any())
            {
                return(true);
            }

            if (user?.GetClient() == null || user.GetClient().GetHabbo() == null)
            {
                return(true);
            }

            Random rnd = new Random();

            Items = (from x in Items orderby rnd.Next() select x).ToList();

            RoomItem roomItem = null;

            foreach (RoomItem current in Items.Where(current => current != null && Room.GetRoomItemHandler().FloorItems.ContainsKey(current.Id)))
            {
                roomItem = current;
            }

            if (roomItem == null)
            {
                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(0);
                return(false);
            }

            Room.GetGameMap().TeleportToItem(user, roomItem);
            Room.GetRoomUserManager().OnUserUpdateStatus();
            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(0);

            return(true);
        }
예제 #8
0
 private static void ActivateShield(RoomUser user)
 {
     int Effect = (int)user.team + 48;
     user.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(Effect, true);
     user.shieldActive = true;
     user.shieldCounter += 10;
 }
예제 #9
0
        public bool Handle(RoomUser user, Team team, RoomItem item)
        {
            if (user != null && !user.IsBot && user.GetClient() != null)
            {
                ServerMessage servermsg = new ServerMessage();
                servermsg.Init(25);
                servermsg.AppendInt32(user.VirtualId);
                servermsg.AppendStringWithBreak(message);
                servermsg.AppendBoolean(false);

                user.GetClient().SendMessage(servermsg);
                handler.OnEvent(itemID);
                return true;
            }

            return false;
        }
예제 #10
0
 internal override void OnUserChat(RoomUser user, string text, bool shout)
 {
     if (!_unit.GetRoom().CheckRights(user.GetClient(), true))
         return;
     if (text == "yes")
     {
     }
 }
예제 #11
0
        public bool Handle(RoomUser user, Team team, RoomItem item)
        {
            if (user != null && !user.IsBot && user.GetClient() != null && !string.IsNullOrWhiteSpace(message))
            {
                ServerMessage servermsg = new ServerMessage();
                servermsg.Init(Outgoing.Whisp);
                servermsg.AppendInt32(user.VirtualId);
                servermsg.AppendString(message);
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(0);
                servermsg.AppendInt32(-1);
                user.GetClient().SendMessage(servermsg);
                handler.OnEvent(itemID);
                return true;
            }

            return false;
        }
예제 #12
0
 public bool Handle(RoomUser user, Team team, RoomItem item)
 {
     if (user == null || user.GetClient() == null || user.GetClient().GetHabbo() == null)
         return false;
     user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(4);
     cycles = 0;
     if (delay == 0 && user != null)
     {
         return TeleportUser(user);
     }
     else
     {
         lock (delayedUsers.SyncRoot)
         {
             delayedUsers.Enqueue(user);
         }
         handler.RequestCycle(this);
     }
     return false;
 }
예제 #13
0
		internal void DeliverRandomPinataItem(RoomUser User, Room Room, RoomItem Item)
		{
			if (Room == null || Item == null || Item.GetBaseItem().InteractionType != InteractionType.pinata || !this.Pinatas.ContainsKey(Item.GetBaseItem().ItemId))
			{
				return;
			}
			PinataItem pinataItem;
			this.Pinatas.TryGetValue(Item.GetBaseItem().ItemId, out pinataItem);
			if (pinataItem == null || pinataItem.Rewards.Count < 1)
			{
				return;
			}
			int getX = Item.GetX;
			int getY = Item.GetY;
			double getZ = Item.GetZ;
			Thread.Sleep(900);
			Item.refreshItem();
			Item.BaseItem = pinataItem.Rewards[new Random().Next(checked(pinataItem.Rewards.Count - 1))];
			Item.ExtraData = "";
			Room.GetRoomItemHandler().RemoveFurniture(User.GetClient(), Item.Id, false);
			using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
			{
				queryreactor.runFastQuery(string.Concat(new object[]
				{
					"UPDATE items SET base_item = '",
					Item.BaseItem,
					"', extra_data = '' WHERE id = ",
					Item.Id
				}));
				queryreactor.runQuery();
			}
			Room.GetRoomItemHandler().SetFloorItem(Item, getX, getY, getZ, 0, false);
			ServerMessage serverMessage = new ServerMessage(Outgoing.AddFloorItemMessageComposer);
			Item.Serialize(serverMessage);
			serverMessage.AppendString(Room.Owner);
			Room.SendMessage(serverMessage);
			Room.GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, Item.GetX, Item.GetY, 0, true, false, true);
		}
예제 #14
0
		internal void DeliverRandomPinataItem(RoomUser User, Room Room, RoomItem Item)
		{
			if (Room == null || Item == null || Item.GetBaseItem().InteractionType != InteractionType.pinata || !this.Pinatas.ContainsKey(Item.GetBaseItem().ItemId))
			{
				return;
			}
			PinataItem pinataItem;
			this.Pinatas.TryGetValue(Item.GetBaseItem().ItemId, out pinataItem);
			if (pinataItem == null || pinataItem.Rewards.Count < 1)
			{
				return;
			}
			int getX = Item.GetX;
			int getY = Item.GetY;
            double getZ = Item.GetZ;
			Item.refreshItem();
			Item.BaseItem = pinataItem.Rewards[new Random().Next(checked(pinataItem.Rewards.Count - 1))];
			Item.ExtraData = "";
			Room.GetRoomItemHandler().RemoveFurniture(User.GetClient(), Item.Id, false);
			using (IQueryAdapter queryreactor = MercuryEnvironment.GetDatabaseManager().getQueryreactor())
			{
				queryreactor.runFastQuery(string.Concat(new object[]
				{
					"UPDATE items SET base_item = '",
					Item.BaseItem,
					"', extra_data = '' WHERE id = ",
					Item.Id
				}));
				queryreactor.runQuery();
			}
			//Room.GetRoomItemHandler().SetFloorItem(Item, getX, getY, getZ, 0, false);
			if (!Room.GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, Item.GetX, Item.GetY, 0, true, false, true))
            {
                User.GetClient().GetHabbo().GetInventoryComponent().AddItem(Item);
            }
		}
예제 #15
0
		public override void OnUserSay(RoomUser RoomUser_0, string string_0)
		{
            if (base.GetRoom().method_100(base.GetRoomUser().X, base.GetRoomUser().Y, RoomUser_0.X, RoomUser_0.Y) <= 8)
			{
                BotResponse @class = base.GetRoomBot().GetResponse(string_0);
				if (@class != null)
				{
                    string text = base.GetRoom().method_20(RoomUser_0, @class.Response);
					string text2 = @class.ResponseType.ToLower();
					if (text2 != null)
					{
						if (!(text2 == "say"))
						{
							if (!(text2 == "shout"))
							{
								if (text2 == "whisper")
								{
                                    ServerMessage Message = new ServerMessage(Outgoing.Whisp); // Updated
									Message.AppendInt32(base.GetRoomUser().VirtualId);
									Message.AppendStringWithBreak(text);
                                    Message.AppendInt32(0);
                                    Message.AppendInt32(0);
                                    Message.AppendInt32(-1);
									RoomUser_0.GetClient().SendMessage(Message);
								}
							}
							else
							{
								base.GetRoomUser().HandleSpeech(null, text, true);
							}
						}
						else
						{
							base.GetRoomUser().HandleSpeech(null, text, false);
						}
					}
					if (@class.ServeId >= 1)
					{
						RoomUser_0.CarryItem(@class.ServeId);
					}
				}
			}
		}
예제 #16
0
        public bool Execute(params object[] stuff)
        {
            if (stuff[0] == null)
            {
                return(false);
            }

            RoomUser    roomUser = (RoomUser)stuff[0];
            Interaction item     = (Interaction)stuff[1];

            if (_mBanned.Contains(item))
            {
                return(false);
            }

            if (roomUser?.GetClient() != null && !string.IsNullOrEmpty(OtherString))
            {
                roomUser.GetClient().SendWhisper(OtherString, true);
            }

            return(true);
        }
예제 #17
0
        public bool Execute(params object[] stuff)
        {
            if (stuff[0] == null)
            {
                return(false);
            }

            RoomUser    roomUser = (RoomUser)stuff[0];
            Interaction item     = (Interaction)stuff[1];

            if (_mBanned.Contains(item))
            {
                return(false);
            }

            if (roomUser?.GetClient() != null && roomUser.GetClient().GetHabbo() != null &&
                !string.IsNullOrWhiteSpace(OtherString))
            {
                if (roomUser.GetClient().GetHabbo().HasFuse("fuse_mod") || Room.RoomData.Owner == roomUser.GetUserName())
                {
                    return(false);
                }

                roomUser.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(4, false);
                roomUser.GetClient().SendWhisper(OtherString);
                _mUsers.Add(roomUser);
            }

            if (_mTimer == null)
            {
                _mTimer = new Timer(2000);
            }

            _mTimer.Elapsed += ExecuteKick;
            _mTimer.Enabled  = true;

            return(true);
        }
예제 #18
0
파일: Kick.cs 프로젝트: BjkGkh/R106
        public bool Handle(RoomUser user, Team team, RoomItem item)
        {
            if (user != null && !user.IsBot && user.GetClient() != null)
            {
                if (user.GetClient().GetHabbo().Rank >= 6) // staff can't be kicked
                    return false;

                if (user.IsOwner()) // can't kick room owner
                {
                    user.GetClient().SendillustrationMessage("admin.persistent", "WIRED REACTIE: Gebruiker wegsturen", "Je bent uit de kamer gestuurd door de Wired.<br><br><b>" + message + "</b>\r\r<i>De kamer eigenaar zal niet worden weggestuurd!");
                    return false;
                }

                GenericTriggerWithModes.DoAnimation(this.item);

                user.GetClient().SendillustrationMessage("admin.persistent", user.GetClient().GetHabbo().CurrentRoom.Name, "Je bent uit de kamer gestuurd door de Wired.<br><br><b>" + message);
                ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(user.RoomId).GetRoomUserManager().RemoveUserFromRoom(user.GetClient(), true, false);
                handler.OnEvent(this.item.Id);

                return true;

            }
            return false;
        }
예제 #19
0
        internal bool UserCanWalkInTile(RoomUser roomUsers)
        {
            // Check if User CanWalk...
            if (_userRoom.GetGameMap().CanWalk(roomUsers.SetX, roomUsers.SetY, roomUsers.AllowOverride) ||
                roomUsers.RidingHorse)
            {
                // Let's Update his Movement...
                _userRoom.GetGameMap()
                    .UpdateUserMovement(new Point(roomUsers.Coordinate.X, roomUsers.Coordinate.Y),
                        new Point(roomUsers.SetX, roomUsers.SetY), roomUsers);
                List<RoomItem> hasItemInPlace = _userRoom.GetGameMap().GetCoordinatedItems(new Point(roomUsers.X, roomUsers.Y));

                // Set His Actual X,Y,Z Position...
                roomUsers.X = roomUsers.SetX;
                roomUsers.Y = roomUsers.SetY;
                roomUsers.Z = roomUsers.SetZ;

                // Check Sub Items Interactionables
                foreach (RoomItem roomItem in hasItemInPlace.ToArray())
                {
                    roomItem.UserWalksOffFurni(roomUsers);
                    switch (roomItem.GetBaseItem().InteractionType)
                    {
                        case Interaction.RunWaySage:
                        case Interaction.ChairState:
                        case Interaction.Shower:
                        case Interaction.PressurePad:
                        case Interaction.PressurePadBed:
                        case Interaction.Guillotine:
                            roomItem.ExtraData = "0";
                            roomItem.UpdateState();
                            break;

                        case Interaction.Tent:
                        case Interaction.BedTent:
                            if (!roomUsers.IsBot && roomUsers.OnCampingTent)
                            {
                                ServerMessage serverMessage = new ServerMessage();
                                serverMessage.Init(
                                    LibraryParser.OutgoingRequest("UpdateFloorItemExtraDataMessageComposer"));
                                serverMessage.AppendString(roomItem.Id.ToString());
                                serverMessage.AppendInteger(0);
                                serverMessage.AppendString("0");
                                roomUsers.GetClient().SendMessage(serverMessage);
                                roomUsers.OnCampingTent = false;
                            }
                            break;

                        case Interaction.None:
                            break;
                    }
                }

                // Let's Update user Status..
                UpdateUserStatus(roomUsers, true);
                return false;
            }

            return true;
        }
예제 #20
0
파일: Freeze.cs 프로젝트: habb0/Bfly
        private void PickUpPowerUp(RoomItem item, RoomUser user)
        {
            switch (item.freezePowerUp)
            {
                case FreezePowerUp.Heart:
                    {
                        if (user.FreezeLives < 3)
                        {
                            user.FreezeLives++;
                            room.GetGameManager().AddPointToTeam(user.team, 10, user);
                        }

                        ServerMessage message = new ServerMessage();
                        message.Init(701);
                        message.AppendInt32(user.InternalRoomID);
                        message.AppendInt32(user.FreezeLives);

                        user.GetClient().SendMessage(message);
                        break;
                    }
                case FreezePowerUp.Shield:
                    {
                        ActivateShield(user);
                        break;
                    }
                case FreezePowerUp.BlueArrow:
                case FreezePowerUp.GreenArrow:
                case FreezePowerUp.OrangeSnowball:
                    {
                        user.banzaiPowerUp = item.freezePowerUp;
                        break;
                    }
            }

            item.freezePowerUp = FreezePowerUp.None;
            item.ExtraData = "1" + item.ExtraData;
            item.UpdateState(false, true);
        }
예제 #21
0
		public void AddUser(RoomUser user)
		{
			if (user.team.Equals(Team.blue))
			{
				this.BlueTeam.Add(user);
			}
			else
			{
				if (user.team.Equals(Team.red))
				{
					this.RedTeam.Add(user);
				}
				else
				{
					if (user.team.Equals(Team.yellow))
					{
						this.YellowTeam.Add(user);
					}
					else
					{
						if (user.team.Equals(Team.green))
						{
							this.GreenTeam.Add(user);
						}
					}
				}
			}
			string a;
			if ((a = this.Game.ToLower()) != null)
			{
				if (!(a == "banzai"))
				{
					if (!(a == "freeze"))
					{
						return;
					}
				}
				else
				{
					Room currentRoom = user.GetClient().GetHabbo().CurrentRoom;
					using (Dictionary<uint, RoomItem>.ValueCollection.Enumerator enumerator = currentRoom.GetRoomItemHandler().mFloorItems.Values.GetEnumerator())
					{
						while (enumerator.MoveNext())
						{
							RoomItem current = enumerator.Current;
							if (current.GetBaseItem().InteractionType.Equals(InteractionType.banzaigateblue))
							{
								current.ExtraData = this.BlueTeam.Count.ToString();
								current.UpdateState();
								if (this.BlueTeam.Count == 5)
								{
									foreach (RoomUser current2 in currentRoom.GetGameMap().GetRoomUsers(new Point(current.GetX, current.GetY)))
									{
										current2.SqState = 0;
									}
									currentRoom.GetGameMap().GameMap[current.GetX, current.GetY] = 0;
								}
							}
							else
							{
								if (current.GetBaseItem().InteractionType.Equals(InteractionType.banzaigatered))
								{
									current.ExtraData = this.RedTeam.Count.ToString();
									current.UpdateState();
									if (this.RedTeam.Count == 5)
									{
										foreach (RoomUser current3 in currentRoom.GetGameMap().GetRoomUsers(new Point(current.GetX, current.GetY)))
										{
											current3.SqState = 0;
										}
										currentRoom.GetGameMap().GameMap[current.GetX, current.GetY] = 0;
									}
								}
								else
								{
									if (current.GetBaseItem().InteractionType.Equals(InteractionType.banzaigategreen))
									{
										current.ExtraData = this.GreenTeam.Count.ToString();
										current.UpdateState();
										if (this.GreenTeam.Count == 5)
										{
											foreach (RoomUser current4 in currentRoom.GetGameMap().GetRoomUsers(new Point(current.GetX, current.GetY)))
											{
												current4.SqState = 0;
											}
											currentRoom.GetGameMap().GameMap[current.GetX, current.GetY] = 0;
										}
									}
									else
									{
										if (current.GetBaseItem().InteractionType.Equals(InteractionType.banzaigateyellow))
										{
											current.ExtraData = this.YellowTeam.Count.ToString();
											current.UpdateState();
											if (this.YellowTeam.Count == 5)
											{
												foreach (RoomUser current5 in currentRoom.GetGameMap().GetRoomUsers(new Point(current.GetX, current.GetY)))
												{
													current5.SqState = 0;
												}
												currentRoom.GetGameMap().GameMap[current.GetX, current.GetY] = 0;
											}
										}
									}
								}
							}
						}
						return;
					}
				}
				Room currentRoom2 = user.GetClient().GetHabbo().CurrentRoom;
				foreach (RoomItem current6 in currentRoom2.GetRoomItemHandler().mFloorItems.Values)
				{
					if (current6.GetBaseItem().InteractionType.Equals(InteractionType.freezebluegate))
					{
						current6.ExtraData = this.BlueTeam.Count.ToString();
						current6.UpdateState();
					}
					else
					{
						if (current6.GetBaseItem().InteractionType.Equals(InteractionType.freezeredgate))
						{
							current6.ExtraData = this.RedTeam.Count.ToString();
							current6.UpdateState();
						}
						else
						{
							if (current6.GetBaseItem().InteractionType.Equals(InteractionType.freezegreengate))
							{
								current6.ExtraData = this.GreenTeam.Count.ToString();
								current6.UpdateState();
							}
							else
							{
								if (current6.GetBaseItem().InteractionType.Equals(InteractionType.freezeyellowgate))
								{
									current6.ExtraData = this.YellowTeam.Count.ToString();
									current6.UpdateState();
								}
							}
						}
					}
				}
			}
		}
예제 #22
0
        private void FreezeUser(RoomUser user)
        {
            if (user.IsBot || user.ShieldActive || user.Team == Team.none || user.Freezed)
            {
                return;
            }
            user.Freezed       = true;
            user.FreezeCounter = 0;

            {
                --user.FreezeLives;
            }
            if (user.FreezeLives <= 0)
            {
                var serverMessage = new ServerMessage();
                serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer"));
                serverMessage.AppendInteger(user.InternalRoomId);
                serverMessage.AppendInteger(user.FreezeLives);
                user.GetClient().SendMessage(serverMessage);
                user.ApplyEffect(-1);
                _room.GetGameManager().AddPointToTeam(user.Team, -10, user);
                var managerForFreeze = _room.GetTeamManagerForFreeze();
                managerForFreeze.OnUserLeave(user);
                user.Team = Team.none;
                if (ExitTeleport != null)
                {
                    _room.GetGameMap().TeleportToItem(user, ExitTeleport);
                }
                user.Freezed      = false;
                user.SetStep      = false;
                user.IsWalking    = false;
                user.UpdateNeeded = true;
                if (!managerForFreeze.BlueTeam.Any() && !managerForFreeze.RedTeam.Any() &&
                    !managerForFreeze.GreenTeam.Any() && managerForFreeze.YellowTeam.Any())
                {
                    StopGame();
                }
                else if (managerForFreeze.BlueTeam.Any() && !managerForFreeze.RedTeam.Any() &&
                         !managerForFreeze.GreenTeam.Any() && !managerForFreeze.YellowTeam.Any())
                {
                    StopGame();
                }
                else if (!managerForFreeze.BlueTeam.Any() && managerForFreeze.RedTeam.Any() &&
                         !managerForFreeze.GreenTeam.Any() && !managerForFreeze.YellowTeam.Any())
                {
                    StopGame();
                }
                else
                {
                    if (managerForFreeze.BlueTeam.Any() || managerForFreeze.RedTeam.Any() ||
                        !managerForFreeze.GreenTeam.Any() || managerForFreeze.YellowTeam.Any())
                    {
                        return;
                    }
                    StopGame();
                }
            }
            else
            {
                _room.GetGameManager().AddPointToTeam(user.Team, -10, user);
                user.ApplyEffect(12);
                var serverMessage = new ServerMessage();
                serverMessage.Init(LibraryParser.OutgoingRequest("UpdateFreezeLivesMessageComposer"));
                serverMessage.AppendInteger(user.InternalRoomId);
                serverMessage.AppendInteger(user.FreezeLives);
                user.GetClient().SendMessage(serverMessage);
            }
        }
예제 #23
0
        public void Parse(GameClient session, ClientPacket packet)
        {
            if (!session.GetHabbo().InRoom)
            {
                return;
            }

            if (session.GetHabbo() == null || session.GetHabbo().GetInventoryComponent() == null)
            {
                return;
            }

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

            int petId = packet.PopInt();

            if (!room.GetRoomUserManager().TryGetPet(petId, out RoomUser pet))
            {
                //Check kick rights, just because it seems most appropriate.
                if ((!room.CheckRights(session) && room.WhoCanKick != 2 && room.Group == null) || (room.Group != null && !room.CheckRights(session, false, true)))
                {
                    return;
                }

                //Okay so, we've established we have no pets in this room by this virtual Id, let us check out users, maybe they're creeping as a pet?!
                RoomUser targetUser = session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(petId);
                if (targetUser == null)
                {
                    return;
                }

                //Check some values first, please!
                if (targetUser.GetClient() == null || targetUser.GetClient().GetHabbo() == null)
                {
                    return;
                }

                //Update the targets PetId.
                targetUser.GetClient().GetHabbo().PetId = 0;

                //Quickly remove the old user instance.
                room.SendPacket(new UserRemoveComposer(targetUser.VirtualId));

                //Add the new one, they won't even notice a thing!!11 8-)
                room.SendPacket(new UsersComposer(targetUser));
                return;
            }

            if (session.GetHabbo().Id != pet.PetData.OwnerId && !room.CheckRights(session, true))
            {
                session.SendWhisper("You can only pickup your own pets, to kick a pet you must have room rights.");
                return;
            }

            if (pet.RidingHorse)
            {
                RoomUser userRiding = room.GetRoomUserManager().GetRoomUserByVirtualId(pet.HorseID);
                if (userRiding != null)
                {
                    userRiding.RidingHorse = false;
                    userRiding.ApplyEffect(-1);
                    userRiding.MoveTo(new Point(userRiding.X + 1, userRiding.Y + 1));
                }
                else
                {
                    pet.RidingHorse = false;
                }
            }

            pet.PetData.RoomId       = 0;
            pet.PetData.PlacedInRoom = false;

            Pet data = pet.PetData;

            if (data != null)
            {
                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `bots` SET `room_id` = '0', `x` = '0', `Y` = '0', `Z` = '0' WHERE `id` = '" + data.PetId + "' LIMIT 1");
                    dbClient.RunQuery("UPDATE `bots_petdata` SET `experience` = '" + data.experience + "', `energy` = '" + data.Energy + "', `nutrition` = '" + data.Nutrition + "', `respect` = '" + data.Respect + "' WHERE `id` = '" + data.PetId + "' LIMIT 1");
                }
            }

            if (data.OwnerId != session.GetHabbo().Id)
            {
                GameClient target = PlusEnvironment.GetGame().GetClientManager().GetClientByUserId(data.OwnerId);
                if (target != null)
                {
                    target.GetHabbo().GetInventoryComponent().TryAddPet(pet.PetData);
                    room.GetRoomUserManager().RemoveBot(pet.VirtualId, false);

                    target.SendPacket(new PetInventoryComposer(target.GetHabbo().GetInventoryComponent().GetPets()));
                    return;
                }
            }

            room.GetRoomUserManager().RemoveBot(pet.VirtualId, false);
        }
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            RoomUser User = null;

            if (Session != null)
            {
                User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
            }

            if (User == null)
            {
                return;
            }

            if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y))
            {
                if (Item.ExtraData == null || Item.ExtraData.Length <= 1 || !Item.ExtraData.Contains(Convert.ToChar(5).ToString()))
                {
                    Point pointOne;
                    Point pointTwo;

                    switch (Item.Rotation)
                    {
                    case 2:
                        pointOne = new Point(Item.GetX, Item.GetY + 1);
                        pointTwo = new Point(Item.GetX, Item.GetY - 1);
                        break;

                    case 4:
                        pointOne = new Point(Item.GetX - 1, Item.GetY);
                        pointTwo = new Point(Item.GetX + 1, Item.GetY);
                        break;

                    default:
                        return;
                    }

                    RoomUser UserOne = Item.GetRoom().GetRoomUserManager().GetUserForSquare(pointOne.X, pointOne.Y);
                    RoomUser UserTwo = Item.GetRoom().GetRoomUserManager().GetUserForSquare(pointTwo.X, pointTwo.Y);

                    if (UserOne == null || UserTwo == null)
                    {
                        Session.SendNotification("No se encontro un usuario valido para poder bloquear esta cerradura de amor");
                    }
                    else if (UserOne.GetClient() == null || UserTwo.GetClient() == null)
                    {
                        Session.SendNotification("No se encontro un usuario valido para poder bloquear esta cerradura de amor");
                    }
                    else if (UserOne.HabboId != Item.UserID && UserTwo.HabboId != Item.UserID)
                    {
                        Session.SendNotification("Esta maquina solo la puede usar el dueño");
                    }
                    else
                    {
                        UserOne.CanWalk = false;
                        UserTwo.CanWalk = false;

                        Item.InteractingUser  = UserOne.GetClient().GetHabbo().Id;
                        Item.InteractingUser2 = UserTwo.GetClient().GetHabbo().Id;

                        UserOne.GetClient().SendMessage(new LoveLockDialogueMessageComposer(Item.Id));
                        UserTwo.GetClient().SendMessage(new LoveLockDialogueMessageComposer(Item.Id));
                    }
                }
                else
                {
                    return;
                }
            }
            else
            {
                User.MoveTo(Item.SquareInFront);
            }
        }
예제 #25
0
        /// <summary>
        ///     Adds the user to room.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="spectator">if set to <c>true</c> [spectator].</param>
        /// <param name="snow">if set to <c>true</c> [snow].</param>
        internal void AddUserToRoom(GameClient session, bool spectator, bool snow = false)
        {
            if (session == null || session.GetHabbo() == null)
                return;
            RoomUser roomUser = new RoomUser(session.GetHabbo().Id, _userRoom.RoomId, _primaryPrivateUserId++, _userRoom,
                spectator);
            if (roomUser.GetClient() == null || roomUser.GetClient().GetHabbo() == null)
                return;

            roomUser.UserId = session.GetHabbo().Id;
            string userName = session.GetHabbo().UserName;
            uint userId = roomUser.UserId;
            if (UsersByUserName.Contains(userName.ToLower()))
                UsersByUserName.Remove(userName.ToLower());
            if (UsersByUserId.Contains(userId))
                UsersByUserId.Remove(userId);
            UsersByUserName.Add(session.GetHabbo().UserName.ToLower(), roomUser);
            UsersByUserId.Add(session.GetHabbo().Id, roomUser);
            int num = _secondaryPrivateUserId++;
            roomUser.InternalRoomId = num;
            session.CurrentRoomUserId = num;
            session.GetHabbo().CurrentRoomId = _userRoom.RoomId;
            UserList.TryAdd(num, roomUser);
            OnUserAdd(roomUser);

            session.GetHabbo().LoadingRoom = 0;

            if (Yupi.GetGame().GetNavigator().PrivateCategories.Contains(_userRoom.RoomData.Category))
                ((PublicCategory) Yupi.GetGame().GetNavigator().PrivateCategories[_userRoom.RoomData.Category]).UsersNow++;
        }
예제 #26
0
파일: MafiaBot.cs 프로젝트: Mereos/HabboEMU
        /// <summary>
        /// Attacks the victim
        /// </summary>
        internal void TryAttack(object StateInfo)
        {
            try
            {
                if (GetRoomUser() == null || GetRoom() == null ||
                    _AttackTimer == null || _Victim == null ||
                    _Victim.RoomId != GetRoom().RoomId)
                {
                    _Victim = null; return;
                }

                if (GetBotData().CoolDown != null)
                {
                    return;
                }

                GameClient Session = _Victim.GetClient();
                if (Session == null || Session.GetHabbo() == null || Session.GetRoleplay() == null || Session.GetHabbo().CurrentRoom == null)
                {
                    _AttackTimer.Change(2000, 2000); _Victim = null; return;
                }

                Vector2D VictimPOS = new Vector2D(_Victim.X, _Victim.Y);
                Vector2D MyPOS     = new Vector2D(GetRoomUser().X, GetRoomUser().Y);

                if (RoleplayManager.BotWithinAttackDistance(GetRoomUser(), _Victim))
                {
                    int ExtraDamage = (new Random()).Next(5, 15);
                    int Damage      = GetBotData().strength + ExtraDamage;

                    // Kill this punk
                    if (Session.GetRoleplay().CurHealth - Damage <= 0)
                    {
                        GetRoomUser().Chat(null, "*Da um soco em " + _Victim.GetUserName() + ", nocauteando-o*", true, 1);
                        Session.GetRoleplay().CurHealth = 120;
                        Session.GetRoleplay().Energy    = 120;
                        Session.GetRoleplay().Hunger    = 0;
                        Session.GetRoleplay().UpdateStats++;

                        // Tell this n***a he got f****d up by our bot
                        Session.SendNotif("Você foi nocauteado pelo BOT-" + GetBotData().Name);
                        _Victim = null;
                        // SEND THIS N***A BACK TO HIS SHIT HOLE
                        Session.GetMessageHandler().PrepareRoomForUser(Plus.GetGame().MafiaWars.GraveYardID, "");

                        // Get next victim init
                        LookForVictim();
                        _AttackTimer.Change(1000, 1000);
                        return;
                    }

                    GetRoomUser().Chat(null, "*Bate em " + _Victim.GetUserName() + ", causando " + Damage + " dano*", true, 1);
                    RoleplayManager.Shout(Session, "*[" + Session.GetRoleplay().CurHealth + "/" + Session.GetRoleplay().MaxHealth + "]*");

                    Session.GetRoleplay().CurHealth -= Damage;
                    Session.GetRoleplay().UpdateStats++;

                    GetBotData().ApplyCooldown();
                    _AttackTimer.Change(1000, 1000);
                    return;
                }

                if (RoleplayManager.Distance(MyPOS, VictimPOS) >= 1 && RoleplayManager.Distance(MyPOS, VictimPOS) <= 2)
                {
                    // Miss
                    GetRoomUser().Chat(null, "*Tenta bater em " + _Victim.GetUserName() + " mas erra*", true, 1);

                    GetBotData().ApplyCooldown(2000);
                    _AttackTimer.Change(1000, 1000);
                    return;
                }

                if (RoleplayManager.Distance(MyPOS, VictimPOS) >= 5)
                {
                    _AttackTimer.Change(1000, 1000);
                    return; // Don't even bother
                }
            }
            catch { }
        }
예제 #27
0
파일: PetBot.cs 프로젝트: xXSicilyXx/Yupi
        /// <summary>
        ///     Called when [user say].
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="msg">The MSG.</param>
        internal override void OnUserSay(RoomUser user, string msg)
        {
            RoomUser roomUser = GetRoomUser();

            if (roomUser.PetData.OwnerId != user.GetClient().GetHabbo().Id)
            {
                return;
            }

            if (string.IsNullOrEmpty(msg))
            {
                msg = " ";
            }

            PetCommand command = PetCommandHandler.GetPetCommandByInput(msg.Substring(1).ToLower());

            if (!command.PetTypes.Contains(roomUser.PetData.Type))
            {
                return;
            }

            if (roomUser.PetData.Level < command.MinLevel)
            {
                return;
            }

            RemovePetStatus();

            _actionTimer = 25;
            _energyTimer = 10;

            if (roomUser.PetData.Energy < command.LostEnergy && roomUser.PetData.Nutrition < 25 ||
                roomUser.PetData.Energy < command.LostEnergy)
            {
                roomUser.UpdateNeeded = true;

                string[] valueLazy   = PetLocale.GetValue("pet.lazy");
                string   messageLazy = valueLazy[new Random().Next(0, valueLazy.Length - 1)];

                roomUser.Chat(null, messageLazy, false, 0);

                return;
            }

            roomUser.UpdateNeeded = true;

            roomUser.PetData.AddExperience(command.GainedExperience);

            roomUser.Statusses.Add(command.PetStatus, string.Empty);
            roomUser.Statusses.Add("gst", command.PetGesture);

            roomUser.FollowingOwner = null;

            SubtractAttributes(command.LostEnergy);

            Random random = new Random();

            string[] value   = PetLocale.GetValue(command.PetSpeech);
            string   message = value[random.Next(0, value.Length - 1)];

            roomUser.Statusses.Clear();
            roomUser.Chat(null, message, false, 0);

            /* other gestures that isnt listed */

            // roomUser.Statusses.Add("jmp", "");
            //roomUser.Statusses.Add("gst", "joy");

            //roomUser.AddStatus("lay", "");
            //roomUser.AddStatus("gst", "eyb");

            //roomUser.Statusses.Add("beg", "");
            //roomUser.Statusses.Add("gst", "sml");

            switch (command.CommandAction)
            {
            case "follow":
                roomUser.FollowingOwner = roomUser;

                RemovePetStatus();

                switch (roomUser.RotBody)
                {
                case 0:
                    roomUser.MoveTo(roomUser.X + 2, roomUser.Y);
                    break;

                case 1:
                    roomUser.MoveTo(roomUser.X - 2, roomUser.Y - 2);
                    break;

                case 2:
                    roomUser.MoveTo(roomUser.X, roomUser.Y + 2);
                    break;

                case 3:
                    roomUser.MoveTo(roomUser.X + 2, roomUser.Y - 2);
                    break;

                case 4:
                    roomUser.MoveTo(roomUser.X - 2, roomUser.Y);
                    break;

                case 5:
                    roomUser.MoveTo(roomUser.X + 2, roomUser.Y + 2);
                    break;

                case 6:
                    roomUser.MoveTo(roomUser.X, roomUser.Y - 2);
                    break;

                case 7:
                    roomUser.MoveTo(roomUser.X - 2, roomUser.Y + 2);
                    break;
                }

                break;

            case "breed":
                Point coord = new Point();

                switch (roomUser.PetData.Type)
                {
                case "pet_terrier":
                    coord = GetRoom().GetRoomItemHandler().GetRandomBreedingTerrier(roomUser.PetData);
                    break;

                case "pet_bear":
                    coord = GetRoom().GetRoomItemHandler().GetRandomBreedingBear(roomUser.PetData);
                    break;
                }

                if (coord == new Point())
                {
                    ServerMessage alert = new ServerMessage(LibraryParser.OutgoingRequest("PetBreedErrorMessageComposer"));

                    alert.AppendInteger(0);

                    user.GetClient().SendMessage(alert);
                }

                roomUser.MoveTo(coord, true);

                break;

            case "sleep":
                string[] valueSleep   = PetLocale.GetValue("tired");
                string   messageSleep = valueSleep[new Random().Next(0, valueSleep.Length - 1)];

                roomUser.Chat(null, messageSleep, false, 0);
                break;

            case "unknown":
                string[] valueUnknown   = PetLocale.GetValue("pet.unknowncommand");
                string   messageUnknown = valueUnknown[new Random().Next(0, valueUnknown.Length - 1)];

                roomUser.Chat(null, messageUnknown, false, 0);
                break;

            case "lazy":
                string[] valueLazy   = PetLocale.GetValue("pet.lazy");
                string   messageLazy = valueLazy[new Random().Next(0, valueLazy.Length - 1)];

                roomUser.Chat(null, messageLazy, false, 0);
                break;

            case "nest":
                RemovePetStatus();

                IEnumerable <RoomItem> petNest =
                    GetRoom()
                    .GetRoomItemHandler()
                    .FloorItems.Values.Where(x => x.GetBaseItem().InteractionType == Interaction.PetNest);

                IEnumerable <RoomItem> enumerable = petNest as RoomItem[] ?? petNest.ToArray();

                // @todo rewrite this to redo actionsss
                if (!enumerable.Any())
                {
                    command.CommandAction = "lazy";
                }

                RoomItem roomItems = enumerable.FirstOrDefault();

                if (roomItems != null)
                {
                    roomUser.MoveTo(roomItems.X, roomItems.Y);
                }

                roomUser.PetData.AddExperience(40);

                break;

            case "default":
                break;
            }
        }
예제 #28
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int  pId         = Packet.PopInt();
            bool isConfirmed = Packet.PopBoolean();

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

            Item Item = Room.GetRoomItemHandler().GetItem(pId);

            if (Item == null || Item.GetBaseItem() == null || Item.GetBaseItem().InteractionType != InteractionType.LOVELOCK)
            {
                return;
            }

            int UserOneId = Item.InteractingUser;
            int UserTwoId = Item.InteractingUser2;

            RoomUser UserOne = Room.GetRoomUserManager().GetRoomUserByHabbo(UserOneId);
            RoomUser UserTwo = Room.GetRoomUserManager().GetRoomUserByHabbo(UserTwoId);

            if (UserOne == null && UserTwo == null)
            {
                Item.InteractingUser  = 0;
                Item.InteractingUser2 = 0;
                Session.SendNotification("Su pareja ha salido de la sala o ha cancelado sus candados del amor.");
                return;
            }
            else if (UserOne.GetClient() == null || UserTwo.GetClient() == null)
            {
                Item.InteractingUser  = 0;
                Item.InteractingUser2 = 0;
                Session.SendNotification("Su pareja ha salido de la sala o ha cancelado sus candados del amor.");
                return;
            }
            else if (UserOne == null)
            {
                UserTwo.CanWalk = true;
                UserTwo.GetClient().SendNotification("Su pareja ha salido de la sala o ha cancelado sus candados del amor.");
                UserTwo.LLPartner     = 0;
                Item.InteractingUser  = 0;
                Item.InteractingUser2 = 0;
                return;
            }
            else if (UserTwo == null)
            {
                UserOne.CanWalk = true;
                UserOne.GetClient().SendNotification("Su pareja ha salido de la sala o ha cancelado sus candados del amor.");
                UserOne.LLPartner     = 0;
                Item.InteractingUser  = 0;
                Item.InteractingUser2 = 0;
                return;
            }
            else if (Item.ExtraData.Contains(Convert.ToChar(5).ToString()))
            {
                UserTwo.CanWalk = true;
                UserTwo.GetClient().SendNotification("Parece que este candado del amor ya ha sido bloqueado.");
                UserTwo.LLPartner = 0;

                UserOne.CanWalk = true;
                UserOne.GetClient().SendNotification("Parece que este candado del amor ya ha sido bloqueado.");
                UserOne.LLPartner = 0;

                Item.InteractingUser  = 0;
                Item.InteractingUser2 = 0;
                return;
            }
            else if (!isConfirmed)
            {
                Item.InteractingUser  = 0;
                Item.InteractingUser2 = 0;

                UserOne.LLPartner = 0;
                UserTwo.LLPartner = 0;

                UserOne.CanWalk = true;
                UserTwo.CanWalk = true;
                return;
            }
            else
            {
                if (UserOneId == Session.GetHabbo().Id)
                {
                    Session.SendMessage(new LoveLockDialogueSetLockedMessageComposer(pId));
                    UserOne.LLPartner = UserTwoId;
                }
                else if (UserTwoId == Session.GetHabbo().Id)
                {
                    Session.SendMessage(new LoveLockDialogueSetLockedMessageComposer(pId));
                    UserTwo.LLPartner = UserOneId;
                }

                if (UserOne.LLPartner == 0 || UserTwo.LLPartner == 0)
                {
                    return;
                }
                else
                {
                    Item.ExtraData = "1" + (char)5 + UserOne.GetUsername() + (char)5 + UserTwo.GetUsername() + (char)5 + UserOne.GetClient().GetHabbo().Look + (char)5 + UserTwo.GetClient().GetHabbo().Look + (char)5 + DateTime.Now.ToString("dd/MM/yyyy");

                    Item.InteractingUser  = 0;
                    Item.InteractingUser2 = 0;

                    UserOne.LLPartner = 0;
                    UserTwo.LLPartner = 0;

                    Item.UpdateState(true, true);

                    using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("UPDATE items SET extra_data = @extraData WHERE id = @ID LIMIT 1");
                        dbClient.AddParameter("extraData", Item.ExtraData);
                        dbClient.AddParameter("ID", Item.Id);
                        dbClient.RunQuery();
                    }

                    UserOne.GetClient().SendMessage(new LoveLockDialogueCloseMessageComposer(pId));
                    UserTwo.GetClient().SendMessage(new LoveLockDialogueCloseMessageComposer(pId));

                    UserOne.CanWalk = true;
                    UserTwo.CanWalk = true;

                    UserOne = null;
                    UserTwo = null;
                }
            }
        }
예제 #29
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom)
            {
                return;
            }

            Room Room;

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

            if (!Room.CanTradeInRoom)
            {
                return;
            }

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

            if (User == null)
            {
                return;
            }

            if (Session.GetHabbo().TradingLockExpiry > 0)
            {
                if (Session.GetHabbo().TradingLockExpiry > RocketEmulador.GetUnixTimestamp())
                {
                    Session.SendNotification("You're currently banned from trading.");
                    return;
                }
                else
                {
                    Session.GetHabbo().TradingLockExpiry = 0;
                    Session.SendNotification("Your trading ban has now expired, please do not scam again.");

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

            RoomUser TargetUser = Room.GetRoomUserManager().GetRoomUserByVirtualId(Packet.PopInt());

            if (TargetUser == null || TargetUser.GetClient() == null || TargetUser.GetClient().GetHabbo() == null)
            {
                return;
            }

            if (TargetUser.IsTrading)
            {
                Session.SendMessage(new TradingErrorComposer(8, TargetUser.GetUsername()));
                return;
            }

            if (!Session.GetHabbo().GetPermissions().HasRight("room_trade_override"))
            {
                if (Room.TradeSettings == 1 && Room.OwnerId != Session.GetHabbo().Id)//Owner only.
                {
                    Session.SendMessage(new TradingErrorComposer(6, TargetUser.GetUsername()));
                    return;
                }
                else if (Room.TradeSettings == 0 && Room.OwnerId != Session.GetHabbo().Id)//Trading is disabled.
                {
                    Session.SendMessage(new TradingErrorComposer(6, TargetUser.GetUsername()));
                    return;
                }
            }

            if (TargetUser.GetClient().GetHabbo().TradingLockExpiry > 0)
            {
                Session.SendNotification("Oops, it appears this user is currently banned from trading!");
                return;
            }

            Room.TryStartTrade(User, TargetUser);
        }
예제 #30
0
        public bool Execute(params object[] Params)
        {
            if (Params == null || Params.Length == 0)
            {
                return(false);
            }

            Habbo Player = (Habbo)Params[0];

            if (Player == null || Player.GetClient() == null)
            {
                return(false);
            }

            RoomUser User = Player.CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Player.Username);

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

            User.FastWalking = !User.FastWalking;

            if (User.SuperFastWalking)
            {
                User.SuperFastWalking = false;
            }

            if (!User.FastWalking)
            {
                Player.GetClient().SendMessage(RoomNotificationComposer.SendBubble("wffwalk", "" + User.GetClient().GetHabbo().Username + ", acabas de desactivar la hiperactividad mediante Wired.", ""));
            }
            else
            {
                Player.GetClient().SendMessage(RoomNotificationComposer.SendBubble("wffwalk", "" + User.GetClient().GetHabbo().Username + ", acabas de activar la hiperactividad mediante Wired, ve con cuidado, ahora vas más rápido que la luz.", ""));
            }
            return(true);
        }
예제 #31
0
        /// <summary>
        ///     Updates the user effect.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="x">The x.</param>
        /// <param name="y">The y.</param>
        private void UpdateUserEffect(RoomUser user, int x, int y)
        {
            if (user.IsBot)
                return;
            try
            {
                byte b = _userRoom.GetGameMap().EffectMap[x, y];
                if (b > 0)
                {
                    if (user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().CurrentEffect == 0)
                        user.CurrentItemEffect = ItemEffectType.None;
                    ItemEffectType itemEffectType = ByteToItemEffectEnum.Parse(b);
                    if (itemEffectType == user.CurrentItemEffect)
                        return;
                    switch (itemEffectType)
                    {
                        case ItemEffectType.None:
                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(-1);
                            user.CurrentItemEffect = itemEffectType;
                            break;

                        case ItemEffectType.Swim:
                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(28);
                            user.CurrentItemEffect = itemEffectType;
                            break;

                        case ItemEffectType.SwimLow:
                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(30);
                            user.CurrentItemEffect = itemEffectType;
                            break;

                        case ItemEffectType.SwimHalloween:
                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(37);
                            user.CurrentItemEffect = itemEffectType;
                            break;

                        case ItemEffectType.Iceskates:
                            user.GetClient()
                                .GetHabbo()
                                .GetAvatarEffectsInventoryComponent()
                                .ActivateCustomEffect(user.GetClient().GetHabbo().Gender.ToUpper() == "M" ? 38 : 39);
                            user.CurrentItemEffect = ItemEffectType.Iceskates;
                            break;

                        case ItemEffectType.Normalskates:
                            user.GetClient()
                                .GetHabbo()
                                .GetAvatarEffectsInventoryComponent()
                                .ActivateCustomEffect(user.GetClient().GetHabbo().Gender.ToUpper() == "M" ? 55 : 56);
                            user.CurrentItemEffect = itemEffectType;
                            break;

                        case ItemEffectType.SnowBoard:
                        {
                            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(97);
                            user.CurrentItemEffect = itemEffectType;
                        }
                            break;
                    }
                }
                else
                {
                    if (user.CurrentItemEffect == ItemEffectType.None || b != 0)
                        return;
                    user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(-1);
                    user.CurrentItemEffect = ItemEffectType.None;
                }
            }
            catch
            {
                // ignored
            }
        }
예제 #32
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                return;
            }

            Room Room = null;

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Packet.PopInt(), out Room))
            {
                return;
            }

            bool SetLock = Packet.PopInt() == 1;
            bool SetName = Packet.PopInt() == 1;
            bool KickAll = Packet.PopInt() == 1;

            if (SetName)
            {
                Room.RoomData.Name        = "Inappropriate to Hotel Management";
                Room.RoomData.Description = "Inappropriate to Hotel Management";
            }

            if (SetLock)
            {
                Room.RoomData.Access = RoomAccess.DOORBELL;
            }

            if (Room.Tags.Count > 0)
            {
                Room.ClearTags();
            }

            if (Room.RoomData.HasActivePromotion)
            {
                Room.RoomData.EndPromotion();
            }

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                if (SetName && SetLock)
                {
                    dbClient.RunQuery("UPDATE `rooms` SET `caption` = 'Inappropriate to Hotel Management', `description` = 'Inappropriate to Hotel Management', `tags` = '', `state` = '1' WHERE `id` = '" + Room.RoomId + "' LIMIT 1");
                }
                else if (SetName && !SetLock)
                {
                    dbClient.RunQuery("UPDATE `rooms` SET `caption` = 'Inappropriate to Hotel Management', `description` = 'Inappropriate to Hotel Management', `tags` = '' WHERE `id` = '" + Room.RoomId + "' LIMIT 1");
                }
                else if (!SetName && SetLock)
                {
                    dbClient.RunQuery("UPDATE `rooms` SET `state` = '1', `tags` = '' WHERE `id` = '" + Room.RoomId + "' LIMIT 1");
                }
            }

            Room.SendPacket(new RoomSettingsSavedComposer(Room.RoomId));
            Room.SendPacket(new RoomInfoUpdatedComposer(Room.RoomId));

            if (KickAll)
            {
                foreach (RoomUser RoomUser in Room.GetRoomUserManager().GetUserList().ToList())
                {
                    if (RoomUser == null || RoomUser.IsBot)
                    {
                        continue;
                    }

                    if (RoomUser.GetClient() == null || RoomUser.GetClient().GetHabbo() == null)
                    {
                        continue;
                    }

                    if (RoomUser.GetClient().GetHabbo().Rank >= Session.GetHabbo().Rank || RoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id)
                    {
                        continue;
                    }

                    Room.GetRoomUserManager().RemoveUserFromRoom(RoomUser.GetClient(), true, false);
                }
            }
        }
예제 #33
0
        /// <summary>
        ///     Handles the <see cref="E:Remove" /> event.
        /// </summary>
        /// <param name="user"></param>
        private void OnRemove(RoomUser user)
        {
            try
            {
                if (user == null || user.GetClient() == null) return;
                GameClient client = user.GetClient();
                IEnumerable<RoomUser> list = UserList.Values.Where(current => current.IsBot && !current.IsPet && current.BotAi != null);
                List<RoomUser> list2 = new List<RoomUser>();

                List<RoomItem> userOnCurrentItem = _userRoom.GetGameMap().GetCoordinatedItems(new Point(user.X, user.Y));
                foreach (RoomItem roomItem in userOnCurrentItem.ToArray())
                {
                    switch (roomItem.GetBaseItem().InteractionType)
                    {
                        case Interaction.RunWaySage:
                        case Interaction.ChairState:
                        case Interaction.Shower:
                        case Interaction.PressurePad:
                        case Interaction.PressurePadBed:
                        case Interaction.Guillotine:
                            roomItem.ExtraData = "0";
                            roomItem.UpdateState();
                            break;
                    }
                }

                foreach (RoomUser bot in list)
                {
                    bot.BotAi.OnUserLeaveRoom(client);
                    if (bot.IsPet && bot.PetData.OwnerId == user.UserId &&
                        !_userRoom.CheckRights(client, true))
                        list2.Add(bot);
                }
                foreach (
                    RoomUser current3 in
                        list2.Where(
                            current3 =>
                                user.GetClient() != null && user.GetClient().GetHabbo() != null &&
                                user.GetClient().GetHabbo().GetInventoryComponent() != null))
                {
                    user.GetClient().GetHabbo().GetInventoryComponent().AddPet(current3.PetData);
                    RemoveBot(current3.VirtualId, false);
                }
                _userRoom.GetGameMap().RemoveUserFromMap(user, new Point(user.X, user.Y));
            }
            catch (Exception ex)
            {
                ServerLogManager.LogCriticalException(ex.ToString());
            }
        }
예제 #34
0
        public void Execute(GameClient Session, Room Room, string[] Params)
        {
            if (Session.GetHabbo().Rank != 6 && Session.GetHabbo().Rank != 8 && Session.GetHabbo().Rank != 9 && Session.GetHabbo().Rank != 11 && Session.GetHabbo().TeamRank != 9)
            {
                Session.SendWhisper("No puedes dar premios por que no eres Manager, Game Master o Ayudante de Juego.");
                return;
            }

            if (Params.Length == 2)
            {
                Session.SendWhisper("Por favor introduce 2 nombres de usuarios para premiar.", 34);
                return;
            }


            GameClient Target  = RavenEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
            GameClient Target2 = RavenEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[2]);


            if (Target == null)
            {
                Session.SendWhisper("Oops, No se ha conseguido este usuario " + Params[1] + "!");
                return;
            }

            if (Target2 == null)
            {
                Session.SendWhisper("Oops, No se ha conseguido este usuario " + Params[2] + "!");
                return;
            }



            RoomUser TargetUser  = Room.GetRoomUserManager().GetRoomUserByHabbo(Target.GetHabbo().Id);
            RoomUser TargetUser2 = Room.GetRoomUserManager().GetRoomUserByHabbo(Target2.GetHabbo().Id);

            if (TargetUser == null)
            {
                Session.SendWhisper("Usuario no encontrado! " + Params[1] + " tal vez no esté en línea o en esta sala.");
                return;
            }

            if (TargetUser2 == null)
            {
                Session.SendWhisper("Usuario no encontrado! " + Params[2] + " tal vez no esté en línea o en esta sala.");
                return;
            }



            if (Target.GetHabbo().Username == Session.GetHabbo().Username)
            {
                Session.SendWhisper("Men no seas estupid@, no puedes premiarte tu mismo!");
                return;
            }

            if (Target2.GetHabbo().Username == Session.GetHabbo().Username)
            {
                Session.SendWhisper("Men no seas estupid@, no puedes premiarte tu mismo!");
                return;
            }


            Target.SendMessage(RavenEnvironment.GetGame().GetNuxUserGiftsManager().NuxUserGifts.Serialize());
            Target2.SendMessage(RavenEnvironment.GetGame().GetNuxUserGiftsManager().NuxUserGifts.Serialize());

            // Notificacion de evento por Andre
            string figure  = Target.GetHabbo().Look;
            string figure2 = Target2.GetHabbo().Look;

            RavenEnvironment.GetGame().GetClientManager().SendMessage(RoomNotificationComposer.SendBubble("fig/" + figure, TargetUser.GetUsername() + " ha ganado un evento en el hotel. Felicitaciones!", ""));
            Session.SendWhisper("Has activado correctamente el premio para " + Target.GetHabbo().Username, 34);

            RavenEnvironment.GetGame().GetClientManager().SendMessage(RoomNotificationComposer.SendBubble("fig/" + figure2, TargetUser2.GetUsername() + " ha ganado un evento en el hotel. Felicitaciones!", ""));
            Session.SendWhisper("Has activado correctamente el premio para " + Target2.GetHabbo().Username, 34);


            foreach (RoomUser RoomUser in Room.GetRoomUserManager().GetUserList().ToList())
            {
                if (RoomUser == null || RoomUser.IsBot || RoomUser.GetClient() == null || RoomUser.GetClient().GetHabbo() == null || RoomUser.GetClient().GetHabbo().GetPermissions().HasRight("mod_tool") || RoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id)
                {
                    continue;
                }

                RoomUser.GetClient().SendNotification("El evento se terminó, muchas gracias por participar, si quieres ganar muchos premios más, participa en otros eventos del hotel.");

                Room.GetRoomUserManager().RemoveUserFromRoom(RoomUser.GetClient(), true, false);
            }
        }
예제 #35
0
파일: Soccer.cs 프로젝트: BjkGkh/Azure2
        internal void OnUserWalk(RoomUser user)
        {
            if (user == null)
                return;

            foreach (RoomItem ball in _balls.Values)
            {
                if (user.SetX == ball.X && user.SetY == ball.Y && user.GoalX == ball.X && user.GoalY == ball.Y && user.HandelingBallStatus == 0) // super chute.
                {
                    var userPoint = new Point(user.X, user.Y);
                    ball.ExtraData = "55";
                    ball.BallIsMoving = true;
                    ball.BallValue = 1;
                    MoveBall(ball, user.GetClient(), userPoint);
                }
                else if (user.X == ball.X && user.Y == ball.Y && user.HandelingBallStatus == 0)
                {
                    var userPoint = new Point(user.SetX, user.SetY);
                    ball.ExtraData = "55";
                    ball.BallIsMoving = true;
                    ball.BallValue = 1;
                    MoveBall(ball, user.GetClient(), userPoint);
                }
                else
                {
                    if (user.HandelingBallStatus == 0 && user.GoalX == ball.X && user.GoalY == ball.Y)
                        return;

                    if (user.SetX != ball.X || user.SetY != ball.Y || !user.IsWalking ||
                        (user.X == user.GoalX && user.Y == user.GoalY))
                        return;
                    user.HandelingBallStatus = 1;
                    var comeDirection = ComeDirection.GetComeDirection(new Point(user.X, user.Y), ball.Coordinate);
                    if (comeDirection == IComeDirection.Null)
                        return;

                    var newX = user.SetX;
                    var newY = user.SetY;

                    if (!ball.GetRoom().GetGameMap().ValidTile2(user.SetX, user.SetY) || !ball.GetRoom().GetGameMap().ItemCanBePlacedHere(user.SetX, user.SetY))
                    {
                        comeDirection = ComeDirection.InverseDirections(_room, comeDirection, user.X, user.Y);
                        newX = ball.X;
                        newY = ball.Y;
                    }

                    ComeDirection.GetNewCoords(comeDirection, ref newX, ref newY);
                    ball.ExtraData = "11";
                    MoveBall(ball, user.GetClient(), newX, newY);
                }
            }
        }
예제 #36
0
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            RoomUser User = null;

            if (Session != null)
            {
                User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
            }

            if (User == null)
            {
                return;
            }

            if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y))
            {
                if (Item.ExtraData == null || Item.ExtraData.Length <= 1 || !Item.ExtraData.Contains(Convert.ToChar(5).ToString()))
                {
                    Point pointOne;
                    Point pointTwo;

                    switch (Item.Rotation)
                    {
                    case 2:
                        pointOne = new Point(Item.GetX, Item.GetY + 1);
                        pointTwo = new Point(Item.GetX, Item.GetY - 1);
                        break;

                    case 4:
                        pointOne = new Point(Item.GetX - 1, Item.GetY);
                        pointTwo = new Point(Item.GetX + 1, Item.GetY);
                        break;

                    default:
                        return;
                    }

                    RoomUser UserOne = Item.GetRoom().GetRoomUserManager().GetUserForSquare(pointOne.X, pointOne.Y);
                    RoomUser UserTwo = Item.GetRoom().GetRoomUserManager().GetUserForSquare(pointTwo.X, pointTwo.Y);

                    if (UserOne == null || UserTwo == null)
                    {
                        Session.SendNotification("Oeps! Er moet een partner naast de andere kant van het Liefdesslot staan om hem te activeren!");
                    }
                    else if (UserOne.GetClient() == null || UserTwo.GetClient() == null)
                    {
                        Session.SendNotification("Oeps! Er moet een partner naast de andere kant van het Liefdesslot staan om hem te activeren!");
                    }
                    else if (UserOne.HabboId != Item.UserID && UserTwo.HabboId != Item.UserID)
                    {
                        Session.SendNotification("Oeps! Er is wat mis gegaan.");
                    }
                    else
                    {
                        UserOne.CanWalk = false;
                        UserTwo.CanWalk = false;

                        Item.InteractingUser  = UserOne.GetClient().GetHabbo().Id;
                        Item.InteractingUser2 = UserTwo.GetClient().GetHabbo().Id;

                        UserOne.GetClient().SendMessage(new LoveLockDialogueMessageComposer(Item.Id));
                        UserTwo.GetClient().SendMessage(new LoveLockDialogueMessageComposer(Item.Id));
                    }
                }
                else
                {
                    return;
                }
            }
            else
            {
                User.MoveTo(Item.SquareInFront);
            }
        }
예제 #37
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            if (User == null)
            {
                return;
            }

            var Pet = GetRoomUser();

            if (Pet == null)
            {
                return;
            }

            if (Pet.PetData.DbState != DatabaseUpdateState.NeedsInsert)
            {
                Pet.PetData.DbState = DatabaseUpdateState.NeedsUpdate;
            }
            if (Message.ToLower().Equals(Pet.PetData.Name.ToLower()))
            {
                Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y), false);
                return;
            }

            //if (!Pet.Statusses.ContainsKey("gst thr"))
            //    Pet.Statusses.Add("gst thr", TextHandling.GetString(Pet.Z));
            if (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") &&
                User.GetClient().GetHabbo().Username.ToLower() == Pet.PetData.OwnerName.ToLower() ||
                Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") &&
                PlusEnvironment.GetGame().GetChatManager().GetPetCommands()
                .TryInvoke(Message.Substring(Pet.PetData.Name.ToLower().Length + 1)) == 8)
            {
                var Command = Message.Substring(Pet.PetData.Name.ToLower().Length + 1);
                var r       = RandomNumber.GenerateRandom(1, 8); // Made Random
                if (Pet.PetData.Energy > 10 && r < 6 ||
                    Pet.PetData.Level > 15 ||
                    PlusEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command) == 8)
                {
                    RemovePetStatus(); // Remove Status
                    switch (PlusEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command))
                    {
                    // TODO - Level you can use the commands at...
                    case 1:
                        RemovePetStatus();

                        //int randomX = PlusEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeX);
                        //int randomY = PlusEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeY);
                        var nextCoord = GetRoom().GetGameMap().GetRandomWalkableSquare();
                        Pet.MoveTo(nextCoord.X, nextCoord.Y);
                        Pet.PetData.Addexperience(10);     // Give XP
                        break;

                    case 2:
                        RemovePetStatus();
                        var NewX = User.X;
                        var NewY = User.Y;
                        ActionTimer = 30;     // Reset ActionTimer
                        if (User.RotBody == 4)
                        {
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 0)
                        {
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 6)
                        {
                            NewX = User.X - 1;
                        }
                        else if (User.RotBody == 2)
                        {
                            NewX = User.X + 1;
                        }
                        else if (User.RotBody == 3)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 1)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 7)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 5)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y + 1;
                        }
                        Pet.PetData.Addexperience(10);     // Give XP
                        Pet.MoveTo(NewX, NewY);
                        break;

                    case 3:

                        // Remove Status
                        RemovePetStatus();
                        Pet.PetData.Addexperience(10);     // Give XP

                        // Add Status
                        Pet.Statusses.Add("sit", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;
                        ActionTimer      = 25;
                        EnergyTimer      = 10;
                        break;

                    case 4:

                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;
                        Pet.PetData.Addexperience(10);     // Give XP
                        ActionTimer = 30;
                        EnergyTimer = 5;
                        break;

                    case 5:

                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("ded", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;
                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        SpeechTimer = 45;
                        ActionTimer = 30;
                        break;

                    case 6:

                        // Remove Status
                        RemovePetStatus();
                        Pet.Chat("ZzzZZZzzzzZzz", false);
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;
                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 30;
                        ActionTimer = 45;
                        break;

                    case 7:

                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;
                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 10;
                        ActionTimer = 5;
                        break;

                    case 46:
                        break;

                    default:
                        var Speech = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.unknowncommand");
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);
                        break;
                    }

                    Pet.PetData.PetEnergy(false); // Remove Energy
                }
                else
                {
                    RemovePetStatus(); // Remove Status
                    if (Pet.PetData.Energy < 10)
                    {
                        var Speech       = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.tired");
                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;
                        SpeechTimer      = 50;
                        ActionTimer      = 45;
                        EnergyTimer      = 5;
                    }
                    else
                    {
                        var Speech       = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.lazy");
                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);
                        Pet.PetData.PetEnergy(false); // Remove Energy
                    }
                }
            }

            //Pet = null;
        }
예제 #38
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            if (User == null || User.GetClient() == null || User.GetClient().GetHabbo() == null)
            {
                return;
            }

            if (Gamemap.TileDistance(GetRoomUser().X, GetRoomUser().Y, User.X, User.Y) > 8)
            {
                return;
            }

            // Notice that the bet is off to the users.
            if (BetsOpen == false)
            {
                GetRoomUser().Chat("Las apuestas están cerradas para esta partida, debes esperar todavía " + GameLength + " segundos para apostar.", false, 33);
                return;
            }

            if (User.GetClient().GetHabbo().Duckets >= 2 && BetsOpen == true)
            {
                // Define all the betting variables.
                string Multiplier = Message.Split(' ')[0];
                string Bet        = Message.Split(' ')[2];

                // Check if the multiplier is a number.
                if (!int.TryParse(Multiplier, out int IntMultiplier))
                {
                    GetRoomUser().Chat(Multiplier + " no es un valor apto para la apuesta.", false, 33);
                    return;
                }

                // Check if the bet is a number.
                if (!int.TryParse(Bet, out int IntBet))
                {
                    GetRoomUser().Chat(Bet + " no es un valor apto para la apuesta.", false, 33);
                    return;
                }

                // Check if the bet doesn't exceed the limits.
                if (IntBet < 0 || IntBet > 36)
                {
                    GetRoomUser().Chat("Debes apostar entre el 0 y el 36, no puedes salir de esos límites.", false, 33);
                    return;
                }

                User.GetClient().GetHabbo().Duckets = User.GetClient().GetHabbo().Duckets - IntMultiplier;
                User.GetClient().SendMessage(new HabboActivityPointNotificationComposer(User.GetClient().GetHabbo().Duckets, -IntMultiplier));
                User.GetClient().SendMessage(RoomNotificationComposer.SendBubble("eventoxx", User.GetClient().GetHabbo().Username + ", acabas de apostar " + IntMultiplier + " duckets al " + IntBet + ".\n\n Buena suerte y apuesta con cabeza.", "catalog/open/habbiween"));

                GetRoomUser().Chat("Apuesta de " + IntMultiplier + " duckets realizada al " + IntBet + " por " + User.GetClient().GetHabbo().Username + ".", false, 33);

                offerMultiplier += .2;

                CasinoDataLocura data = new CasinoDataLocura
                {
                    bet      = IntBet,
                    quantity = IntMultiplier,
                    userId   = User.GetClient().GetHabbo().Id
                };


                Data1.Add(Bets, data);

                // Notify BET Id to the user.
                User.GetClient().SendShout(Bets + " es tu número de apuesta.", 33);

                Bets++;
            }
        }
예제 #39
0
        public void OnTrigger(GameClients.GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null || Session.GetHabbo() == null || Item == null)
            {
                return;
            }

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

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

            if (Actor == null)
            {
                return;
            }

            var tick = int.Parse(Item.ExtraData);

            if (tick < 23)
            {
                if (Actor.CurrentEffect == 186) // el efecto varita magica!
                {
                    if (Gamemap.TileDistance(Actor.X, Actor.Y, Item.GetX, Item.GetY) < 2)
                    {
                        tick++;
                        Item.ExtraData = tick.ToString();
                        Item.UpdateState(true, true);
                        int    X = Item.GetX, Y = Item.GetY, Rot = Item.Rotation;
                        Double Z = Item.GetZ;
                        if (tick == 19)
                        {
                            CloudServer.GetGame().GetPinataManager().ReceiveCrackableReward(Actor, Room, Item);
                            CloudServer.GetGame().GetAchievementManager().ProgressAchievement(Actor.GetClient(), "ACH_PinataWhacker", 1);
                            CloudServer.GetGame().GetAchievementManager().ProgressAchievement(Actor.GetClient(), "ACH_PinataBreaker", 1);
                        }
                    }
                }
            }
        }
예제 #40
0
        public override void OnTrigger(GameClient Session, Item Item, int Request, bool UserHasRights)
        {
            if (Session == null)
            {
                return;
            }

            RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);
            Point    point1          = new Point(Item.Coordinate.X + 1, Item.Coordinate.Y);
            Point    point2          = new Point(Item.Coordinate.X - 1, Item.Coordinate.Y);
            Point    point3          = new Point(Item.Coordinate.X, Item.Coordinate.Y + 1);
            Point    point4          = new Point(Item.Coordinate.X, Item.Coordinate.Y - 1);

            if (roomUserByHabbo == null)
            {
                return;
            }
            if (roomUserByHabbo.Coordinate != point1 && roomUserByHabbo.Coordinate != point2 && (roomUserByHabbo.Coordinate != point3 && roomUserByHabbo.Coordinate != point4))
            {
                if (!roomUserByHabbo.CanWalk)
                {
                    return;
                }
                roomUserByHabbo.MoveTo(Item.SquareInFront);
            }
            else
            {
                int newX = Item.Coordinate.X;
                int newY = Item.Coordinate.Y;
                if (roomUserByHabbo.Coordinate == point1)
                {
                    newX = Item.Coordinate.X - 1;
                    newY = Item.Coordinate.Y;
                }
                else if (roomUserByHabbo.Coordinate == point2)
                {
                    newX = Item.Coordinate.X + 1;
                    newY = Item.Coordinate.Y;
                }
                else if (roomUserByHabbo.Coordinate == point3)
                {
                    newX = Item.Coordinate.X;
                    newY = Item.Coordinate.Y - 1;
                }
                else if (roomUserByHabbo.Coordinate == point4)
                {
                    newX = Item.Coordinate.X;
                    newY = Item.Coordinate.Y + 1;
                }
                if (!Item.GetRoom().GetGameMap().CanStackItem(newX, newY))
                {
                    return;
                }

                int    OldX = Item.GetX;
                int    OldY = Item.GetY;
                double OldZ = Item.GetZ;
                double Newz = Item.GetRoom().GetGameMap().SqAbsoluteHeight(newX, newY);
                if (Item.GetRoom().GetRoomItemHandler().SetFloorItem(roomUserByHabbo.GetClient(), Item, newX, newY, Item.Rotation, false, false, false))
                {
                    ServerPacket Message = new ServerPacket(ServerPacketHeader.SlideObjectBundleMessageComposer);
                    Message.WriteInteger(OldX);
                    Message.WriteInteger(OldY);
                    Message.WriteInteger(newX);
                    Message.WriteInteger(newY);
                    Message.WriteInteger(1);
                    Message.WriteInteger(Item.Id);
                    Message.WriteString(TextHandling.GetString(OldZ));
                    Message.WriteString(TextHandling.GetString(Newz));
                    Message.WriteInteger(0);
                    Item.GetRoom().SendPacket(Message);
                }
            }
        }
예제 #41
0
        internal override void OnUserSay(RoomUser User, string Message)
        {
            if (User == null || User.GetClient() == null)
            {
                return;
            }

            if (GetRoom() == null)
            {
                return;
            }

            if (GetRoom().RoomData.OwnerId == User.HabboId)
            {
                if (Message.ToLower().Equals(LanguageLocale.GetValue("bot.soplon.keyword")))
                {
                    StringBuilder botMessage = new StringBuilder();
                    if (GetBotData().SoplonLeaveRoom.Count > 0)
                    {
                        foreach (UInt32 HabboId in GetBotData().SoplonLeaveRoom)
                        {
                            string Username = UsersCache.getUsernameById(HabboId);
                            if (String.IsNullOrEmpty(Username))
                            {
                                continue;
                            }

                            if ((LanguageLocale.GetValue("bot.soplon.leave").Length + botMessage.Length + Username.Length) >= 100)
                            {
                                botMessage = botMessage.Remove(botMessage.Length - 2, 2);

                                ServerMessage ChatMessage = new ServerMessage(Outgoing.Talk);
                                ChatMessage.AppendInt32(GetRoomUser().VirtualId);
                                ChatMessage.AppendString(botMessage + " " + LanguageLocale.GetValue("bot.soplon.leave"));
                                ChatMessage.AppendInt32(0);
                                ChatMessage.AppendInt32(OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_COLOR);
                                ChatMessage.AppendInt32(0);
                                ChatMessage.AppendInt32(-1);
                                User.GetClient().SendMessage(ChatMessage);

                                botMessage.Clear();
                            }

                            botMessage.Append(Username + ", ");
                        }

                        if (botMessage.Length > 0)
                        {
                            botMessage = botMessage.Remove(botMessage.Length - 2, 2);

                            ServerMessage ChatMessage = new ServerMessage(Outgoing.Talk);
                            ChatMessage.AppendInt32(GetRoomUser().VirtualId);
                            ChatMessage.AppendString(botMessage + " " + LanguageLocale.GetValue("bot.soplon.leave"));
                            ChatMessage.AppendInt32(0);
                            ChatMessage.AppendInt32(OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_COLOR);
                            ChatMessage.AppendInt32(0);
                            ChatMessage.AppendInt32(-1);
                            User.GetClient().SendMessage(ChatMessage);

                            botMessage.Clear();
                        }

                        GetBotData().SoplonLeaveRoom.Clear();
                    }

                    if (GetBotData().SoplonOnRoom.Count > 0)
                    {
                        foreach (UInt32 HabboId in GetBotData().SoplonOnRoom)
                        {
                            string Username = UsersCache.getUsernameById(HabboId);
                            if (String.IsNullOrEmpty(Username))
                            {
                                continue;
                            }

                            if ((LanguageLocale.GetValue("bot.soplon.onroom").Length + botMessage.Length + Username.Length) >= 100)
                            {
                                botMessage = botMessage.Remove(botMessage.Length - 2, 2);

                                ServerMessage ChatMessage = new ServerMessage(Outgoing.Talk);
                                ChatMessage.AppendInt32(GetRoomUser().VirtualId);
                                ChatMessage.AppendString(botMessage + " " + LanguageLocale.GetValue("bot.soplon.onroom"));
                                ChatMessage.AppendInt32(0);
                                ChatMessage.AppendInt32(OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_COLOR);
                                ChatMessage.AppendInt32(0);
                                ChatMessage.AppendInt32(-1);
                                User.GetClient().SendMessage(ChatMessage);

                                botMessage.Clear();
                            }

                            botMessage.Append(Username + ", ");
                        }

                        if (botMessage.Length > 0)
                        {
                            botMessage = botMessage.Remove(botMessage.Length - 2, 2);

                            ServerMessage ChatMessage = new ServerMessage(Outgoing.Talk);
                            ChatMessage.AppendInt32(GetRoomUser().VirtualId);
                            ChatMessage.AppendString(botMessage + " " + LanguageLocale.GetValue("bot.soplon.onroom"));
                            ChatMessage.AppendInt32(0);
                            ChatMessage.AppendInt32(OtanixEnvironment.GetGame().GetRoomRankConfig().BOTS_DEFAULT_COLOR);
                            ChatMessage.AppendInt32(0);
                            ChatMessage.AppendInt32(-1);
                            User.GetClient().SendMessage(ChatMessage);

                            botMessage.Clear();
                        }

                        GetBotData().SoplonOnRoom.Clear();
                    }
                }
            }
        }
예제 #42
0
        public void Parse(GameClient session, ClientPacket packet)
        {
            int groupId = packet.PopInt();
            int userId  = packet.PopInt();

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

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

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

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

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

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

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

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

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

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

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

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

                return;
            }

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

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

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

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

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

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


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

                session.SendPacket(new GroupMembersComposer(group, members.Take(finishIndex).ToList(), membersCount, 1,
                                                            (group.CreatorId == session.GetHabbo().Id || group.IsAdmin(session.GetHabbo().Id)), 0, ""));
            }
        }
예제 #43
0
        public void Parse(GameClient session, ClientPacket packet)
        {
            if (session == null || session.GetHabbo() == null || !session.GetHabbo().InRoom || session.GetHabbo().GetStats() == null || session.GetHabbo().GetStats().DailyPetRespectPoints == 0)
            {
                return;
            }

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

            RoomUser thisUser = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (thisUser == null)
            {
                return;
            }

            int petId = packet.PopInt();

            if (!session.GetHabbo().CurrentRoom.GetRoomUserManager().TryGetPet(petId, out RoomUser pet))
            {
                //Okay so, we've established we have no pets in this room by this virtual Id, let us check out users, maybe they're creeping as a pet?!
                RoomUser targetUser = session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(petId);
                if (targetUser == null)
                {
                    return;
                }

                //Check some values first, please!
                if (targetUser.GetClient() == null || targetUser.GetClient().GetHabbo() == null)
                {
                    return;
                }

                if (targetUser.GetClient().GetHabbo().Id == session.GetHabbo().Id)
                {
                    session.SendWhisper("Oops, you cannot use this on yourself! (You haven't lost a point, simply reload!)");
                    return;
                }

                //And boom! Let us send some respect points.
                PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(session, QuestType.SocialRespect);
                PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_RespectGiven", 1);
                PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(targetUser.GetClient(), "ACH_RespectEarned", 1);

                //Take away from pet respect points, just in-case users abuse this..
                session.GetHabbo().GetStats().DailyPetRespectPoints  -= 1;
                session.GetHabbo().GetStats().RespectGiven           += 1;
                targetUser.GetClient().GetHabbo().GetStats().Respect += 1;

                //Apply the effect.
                thisUser.CarryItemId = 999999999;
                thisUser.CarryTimer  = 5;

                //Send the magic out.
                if (room.RespectNotificationsEnabled)
                {
                    room.SendPacket(new RespectPetNotificationMessageComposer(targetUser.GetClient().GetHabbo(), targetUser));
                }
                room.SendPacket(new CarryObjectComposer(thisUser.VirtualId, thisUser.CarryItemId));
                return;
            }

            if (pet == null || pet.PetData == null || pet.RoomId != session.GetHabbo().CurrentRoomId)
            {
                return;
            }

            session.GetHabbo().GetStats().DailyPetRespectPoints -= 1;
            PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_PetRespectGiver", 1);

            thisUser.CarryItemId = 999999999;
            thisUser.CarryTimer  = 5;
            pet.PetData.OnRespect();
            room.SendPacket(new CarryObjectComposer(thisUser.VirtualId, thisUser.CarryItemId));
        }
예제 #44
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            if (User == null)
            {
                return;
            }

            RoomUser Pet = GetRoomUser();

            if (Pet == null)
            {
                return;
            }

            if (Pet.PetData.DBState != DatabaseUpdateState.NeedsInsert)
            {
                Pet.PetData.DBState = DatabaseUpdateState.NeedsUpdate;
            }

            if (Message.ToLower().Equals(Pet.PetData.Name.ToLower()))
            {
                Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y), false);
                return;
            }

            //if (!Pet.Statusses.ContainsKey("gst thr"))
            //    Pet.Statusses.Add("gst, TextHandling.GetString(Pet.Z));

            if ((Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && User.GetClient().GetHabbo().Username.ToLower() == Pet.PetData.OwnerName.ToLower()) || (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && CloudServer.GetGame().GetChatManager().GetPetCommands().TryInvoke(Message.Substring(Pet.PetData.Name.ToLower().Length + 1)) == 8))
            {
                string Command = Message.Substring(Pet.PetData.Name.ToLower().Length + 1);

                int r = RandomNumber.GenerateRandom(1, 8); // Made Random
                if (Pet.PetData.Energy > 10 && r < 6 || Pet.PetData.Level > 15 || CloudServer.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command) == 8)
                {
                    RemovePetStatus(); // Remove Status

                    switch (CloudServer.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command))
                    {
                        // TODO - Level you can use the commands at...



                        #region free

                    case 1:
                        RemovePetStatus();

                        //int randomX = CloudServer.GetRandomNumber(0, GetRoom().Model.MapSizeX);
                        //int randomY = CloudServer.GetRandomNumber(0, GetRoom().Model.MapSizeY);
                        Point nextCoord = GetRoom().GetGameMap().GetRandomWalkableSquare();
                        Pet.MoveTo(nextCoord.X, nextCoord.Y);

                        Pet.PetData.Addexperience(10);     // Give XP

                        break;

                        #endregion

                        #region here

                    case 2:

                        RemovePetStatus();

                        int NewX = User.X;
                        int NewY = User.Y;

                        ActionTimer = 30;     // Reset ActionTimer

                        #region Rotation

                        if (User.RotBody == 4)
                        {
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 0)
                        {
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 6)
                        {
                            NewX = User.X - 1;
                        }
                        else if (User.RotBody == 2)
                        {
                            NewX = User.X + 1;
                        }
                        else if (User.RotBody == 3)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 1)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 7)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 5)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y + 1;
                        }

                        #endregion

                        Pet.PetData.Addexperience(10);     // Give XP

                        Pet.MoveTo(NewX, NewY);
                        break;

                        #endregion

                        #region sit

                    case 3:
                        // Remove Status
                        RemovePetStatus();

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Add Status
                        Pet.Statusses.Add("sit", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        ActionTimer = 25;
                        EnergyTimer = 10;
                        break;

                        #endregion

                        #region lay

                    case 4:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        ActionTimer = 30;
                        EnergyTimer = 5;
                        break;

                        #endregion

                        #region dead

                    case 5:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("ded", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        SpeechTimer = 45;
                        ActionTimer = 30;

                        break;

                        #endregion

                        #region sleep

                    case 6:
                        // Remove Status
                        RemovePetStatus();

                        Pet.Chat("ZzzZZZzzzzZzz", false);
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 30;
                        ActionTimer = 45;
                        break;

                        #endregion

                        #region jump

                    case 7:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 10;
                        ActionTimer = 5;
                        break;

                        #endregion

                        #region breed
                    case 46:

                        break;
                        #endregion

                    default:
                        string[] Speech = CloudServer.GetGame().GetChatManager().GetPetLocale().GetValue("pet.unknowncommand");

                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);
                        break;
                    }
                    Pet.PetData.PetEnergy(false); // Remove Energy
                }
                else
                {
                    RemovePetStatus(); // Remove Status

                    if (Pet.PetData.Energy < 10)
                    {
                        //GetRoomUser refers to the pet
                        //User refers to Owner

                        RoomUser UserRiding = GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(Pet.HorseID);;

                        if (UserRiding.RidingHorse)
                        {
                            Pet.Chat("Getof my sit", false);
                            UserRiding.RidingHorse = false;
                            Pet.RidingHorse        = false;
                            UserRiding.ApplyEffect(-1);
                            UserRiding.MoveTo(new Point(GetRoomUser().X + 1, GetRoomUser().Y + 1));
                        }

                        string[] Speech = CloudServer.GetGame().GetChatManager().GetPetLocale().GetValue("pet.tired");

                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);

                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        SpeechTimer = 50;
                        ActionTimer = 45;
                        EnergyTimer = 5;
                    }
                    else
                    {
                        string[] Speech = CloudServer.GetGame().GetChatManager().GetPetLocale().GetValue("pet.lazy");

                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);

                        Pet.PetData.PetEnergy(false); // Remove Energy
                    }
                }
            }
            //Pet = null;
        }
예제 #45
0
파일: Freeze.cs 프로젝트: habb0/Bfly
        private void FreezeUser(RoomUser user)
        {
            if (user.IsBot || user.shieldActive || user.team == Team.none)
                return;

            if (user.Freezed)
            {
                user.Freezed = false;
                user.ApplyEffect((int)user.team + 39);
                return;
            }
            user.Freezed = true;
            user.FreezeCounter = 0;

            user.FreezeLives--;

            if (user.FreezeLives <= 0)
            {
                user.ApplyEffect(-1);
                room.GetGameManager().AddPointToTeam(user.team, -20, user);
                user.team = Team.none;
                if (exitTeleport != null)
                    room.GetGameMap().TeleportToItem(user, exitTeleport);

                user.Freezed = false;
                user.SetStep = false;
                user.IsWalking = false;
                user.UpdateNeeded = true;
                return;
            }

            room.GetGameManager().AddPointToTeam(user.team, -10, user);
            user.ApplyEffect(12);

            ServerMessage message = new ServerMessage();
            message.Init(701);
            message.AppendInt32(user.InternalRoomID);
            message.AppendInt32(user.FreezeLives);

            user.GetClient().SendMessage(message);
        }
예제 #46
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);
            }
        }
예제 #47
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;
        }
예제 #48
0
        public void OnCycle(RoomUser User, RolePlayerManager RPManager)
        {
            /*this._energyTimer--;
             * if(this._energyTimer <= 0)
             * {
             *  this._energyTimer = 120;
             *  if (this._energy > 0)
             *  {
             *      this._energy--;
             *      this.SendUpdate();
             *  }
             * }*/

            if (this.SlowTimer > 0)
            {
                this.SlowTimer--;
                User.breakwalk = true;
            }
            else
            {
                User.breakwalk = false;
            }

            if (this.GunLoadTimer > 0)
            {
                this.GunLoadTimer--;
                if (this.GunLoadTimer == 0)
                {
                    this.GunLoad = 6;
                }
            }
            else
            {
                if (this.GunLoad == 0)
                {
                    this.GunLoadTimer = 6;
                    User.OnChat("*Recharge mon arme*");
                }
            }


            if (this.AggroTimer > 0)
            {
                this.AggroTimer--;
            }

            if (this.SendPrison)
            {
                if (this.PrisonTimer > 0)
                {
                    this.PrisonTimer--;
                }
                else
                {
                    this.SendPrison = false;
                    User.GetClient().GetHabbo().IsTeleporting     = true;
                    User.GetClient().GetHabbo().TeleportingRoomID = RPManager.PrisonId;
                    User.GetClient().GetHabbo().PrepareRoom(RPManager.PrisonId);
                }
            }

            if (this.Dead)
            {
                if (this.DeadTimer > 0)
                {
                    this.DeadTimer--;
                }
                else
                {
                    this.Dead = false;
                    User.GetClient().GetHabbo().IsTeleporting     = true;
                    User.GetClient().GetHabbo().TeleportingRoomID = RPManager.HopitalId;
                    User.GetClient().GetHabbo().PrepareRoom(RPManager.HopitalId);
                }
            }

            if (this.NeedUpdate)
            {
                this.NeedUpdate = false;
                this.SendWebPacket(new RpStatsComposer((!this.Dispose) ? this._rpId : 0, this.Health, this.HealthMax, this.Energy, this.Money, this.Munition, this.Level));
            }
        }
예제 #49
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);
        }
예제 #50
0
        public void Hit(RoomUser User, int Dmg, Room Room, bool Ralentie = false, bool Murmur = false, bool Aggro = true)
        {
            if (this.Dead || this.SendPrison)
            {
                return;
            }

            if (this.Health <= Dmg)
            {
                this.Health    = 0;
                this.Dead      = true;
                this.DeadTimer = 30;

                User.SetStatus("lay", "0.7");
                User.Freeze           = true;
                User.FreezeEndCounter = 0;
                User.IsLay            = true;
                User.UpdateNeeded     = true;

                if (User.GetClient() != null)
                {
                    User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.userdead", User.GetClient().Langue));
                }

                int monaiePerdu = 0;
                if (this.Money > 10)
                {
                    monaiePerdu = (int)Math.Floor((double)(this.Money / 100) * 20);
                    this.Money -= monaiePerdu;
                }
                Room.GetRoomItemHandler().AddTempItem(User.VirtualId, 5461, User.SetX, User.SetY, User.Z, "1", monaiePerdu + 10, InteractionTypeTemp.MONEY);
                User.OnChat("A été mis K.O. ! [" + this.Health + "/" + this.HealthMax + "]", 0, true);
            }
            else
            {
                this.Health -= Dmg;
                if (Ralentie)
                {
                    if (this.SlowTimer == 0)
                    {
                        if (User.GetClient() != null)
                        {
                            User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.hitslow", User.GetClient().Langue));
                        }
                    }
                    this.SlowTimer = 6;
                }

                if (Aggro)
                {
                    this.AggroTimer = 30;
                }

                if (User.GetClient() != null)
                {
                    if (Murmur)
                    {
                        User.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.hit", User.GetClient().Langue), this.Health, this.HealthMax, Dmg), false);
                    }
                    else
                    {
                        User.OnChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.hit", User.GetClient().Langue), this.Health, this.HealthMax, Dmg), 0, true);
                    }
                }
            }

            this.SendUpdate();
        }
예제 #51
0
        /// <summary>
        ///     Handles the <see cref="E:UserAdd" /> event.
        /// </summary>
        /// <param name="user"></param>
        private void OnUserAdd(RoomUser user)
        {
            try
            {
                if (user?.GetClient() == null || user.GetClient().GetHabbo() == null)
                    return;

                GameClient client = user.GetClient();

                if (client?.GetHabbo() == null || _userRoom == null)
                    return;

                if (!user.IsSpectator)
                {
                    DynamicRoomModel model = _userRoom.GetGameMap().Model;
                    if (model == null) return;
                    user.SetPos(model.DoorX, model.DoorY, model.DoorZ);
                    user.SetRot(model.DoorOrientation, false);

                    user.AddStatus(_userRoom.CheckRights(client, true) ? "flatctrl 4" : "flatctrl 1", string.Empty);

                    user.CurrentItemEffect = ItemEffectType.None;

                    if (!user.IsBot && client.GetHabbo().IsTeleporting)
                    {
                        client.GetHabbo().IsTeleporting = false;
                        client.GetHabbo().TeleportingRoomId = 0;

                        RoomItem item = _userRoom.GetRoomItemHandler().GetItem(client.GetHabbo().TeleporterId);

                        if (item != null)
                        {
                            item.ExtraData = "2";
                            item.UpdateState(false, true);
                            user.SetPos(item.X, item.Y, item.Z);
                            user.SetRot(item.Rot, false);
                            item.InteractingUser2 = client.GetHabbo().Id;
                            item.ExtraData = "0";
                            item.UpdateState(false, true);
                        }
                    }
                    if (!user.IsBot && client.GetHabbo().IsHopping)
                    {
                        client.GetHabbo().IsHopping = false;
                        client.GetHabbo().HopperId = 0;

                        RoomItem item2 = _userRoom.GetRoomItemHandler().GetItem(client.GetHabbo().HopperId);

                        if (item2 != null)
                        {
                            item2.ExtraData = "1";
                            item2.UpdateState(false, true);
                            user.SetPos(item2.X, item2.Y, item2.Z);
                            user.SetRot(item2.Rot, false);
                            user.AllowOverride = false;
                            item2.InteractingUser2 = client.GetHabbo().Id;
                            item2.ExtraData = "2";
                            item2.UpdateState(false, true);
                        }
                    }
                    if (!user.IsSpectator)
                    {
                        ServerMessage serverMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));
                        serverMessage.AppendInteger(1);
                        user.Serialize(serverMessage, _userRoom.GetGameMap().GotPublicPool);
                        _userRoom.SendMessage(serverMessage);
                    }
                    if (!user.IsBot)
                    {
                        ServerMessage serverMessage2 = new ServerMessage();
                        serverMessage2.Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer"));
                        serverMessage2.AppendInteger(user.VirtualId);
                        serverMessage2.AppendString(client.GetHabbo().Look);
                        serverMessage2.AppendString(client.GetHabbo().Gender.ToLower());
                        serverMessage2.AppendString(client.GetHabbo().Motto);
                        serverMessage2.AppendInteger(client.GetHabbo().AchievementPoints);
                        _userRoom.SendMessage(serverMessage2);
                    }
                    if (_userRoom.RoomData.Owner != client.GetHabbo().UserName)
                    {
                        Yupi.GetGame()
                            .GetAchievementManager()
                            .ProgressUserAchievement(client, "ACH_RoomEntry", 1);
                    }
                }
                if (client.GetHabbo().GetMessenger() != null)
                    client.GetHabbo().GetMessenger().OnStatusChanged(true);
                client.GetMessageHandler().OnRoomUserAdd();

                //if (client.GetHabbo().HasFuse("fuse_mod")) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(102);
                //if (client.GetHabbo().Rank == Convert.ToUInt32(Yupi.GetDbConfig().DbData["ambassador.minrank"])) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(178);

                if (OnUserEnter != null)
                    OnUserEnter(user, null);
                if (_userRoom.GotMusicController() && _userRoom.GotMusicController())
                    _userRoom.GetRoomMusicController().OnNewUserEnter(user);
                _userRoom.OnUserEnter(user);
            }
            catch (Exception ex)
            {
                ServerLogManager.LogCriticalException(ex.ToString());
            }
        }
예제 #52
0
        private bool UserCommand(RoomUser user)
        {
            bool Result = false;

            switch (this.Effet)
            {
            case "missioncontais":
            case "notmissioncontais":
            {
                if (!user.IsBot && user.GetClient().GetHabbo().Motto.Contains(Value))
                {
                    Result = true;
                }
                break;
            }

            case "mission":
            case "notmission":
            {
                if (!user.IsBot && user.GetClient().GetHabbo().Motto == Value)
                {
                    Result = true;
                }
                break;
            }

            case "favogroupid":
            case "notfavogroupid":
            {
                int GroupId = 0;
                int.TryParse(Value, out GroupId);

                if (!user.IsBot && user.GetClient().GetHabbo().FavouriteGroupId == GroupId)
                {
                    Result = true;
                }
                break;
            }

            case "usergirl":
            case "notusergirl":
            {
                if (!user.IsBot && user.GetClient().GetHabbo().Gender.ToUpper() == "F")
                {
                    Result = true;
                }
                break;
            }

            case "userboy":
            case "notuserboy":
            {
                if (!user.IsBot && user.GetClient().GetHabbo().Gender.ToUpper() == "M")
                {
                    Result = true;
                }
                break;
            }

            case "namebot":
            case "notnamebot":
            {
                if (user.IsBot && user.BotData.Name == Value)
                {
                    Result = true;
                }
                break;
            }

            case "isbot":
            case "notisbot":
            {
                if (user.IsBot)
                {
                    Result = true;
                }
                break;
            }

            case "allowshoot":
            case "notallowshoot":
            {
                if (user.AllowShoot)
                {
                    Result = true;
                }

                break;
            }

            case "winteam":
            case "notwinteam":
            {
                if (user.team == Team.none)
                {
                    break;
                }

                Room room = this.item.GetRoom();
                if (room == null)
                {
                    break;
                }

                Team winningTeam = room.GetGameManager().getWinningTeam();
                if (user.team == winningTeam)
                {
                    Result = true;
                }
                break;
            }

            case "freeze":
            case "notfreeze":
            {
                if (user.Freeze)
                {
                    Result = true;
                }

                break;
            }

            case "ingame":
            case "notingame":
            {
                if (user.InGame)
                {
                    Result = true;
                }

                break;
            }

            case "usertimer":
            {
                int Points = 0;
                int.TryParse(Value, out Points);

                if (user.UserTimer == Points)
                {
                    Result = true;
                }

                break;
            }

            case "usertimerplus":
            {
                int Points = 0;
                int.TryParse(Value, out Points);

                if (user.UserTimer > Points)
                {
                    Result = true;
                }

                break;
            }

            case "usertimermoins":
            {
                int Points = 0;
                int.TryParse(Value, out Points);

                if (user.UserTimer < Points)
                {
                    Result = true;
                }

                break;
            }

            case "point":
            {
                int Points = 0;
                int.TryParse(Value, out Points);

                if (user.WiredPoints == Points)
                {
                    Result = true;
                }

                break;
            }

            case "pointplus":
            {
                int Points = 0;
                int.TryParse(Value, out Points);

                if (user.WiredPoints > Points)
                {
                    Result = true;
                }

                break;
            }

            case "pointmoins":
            {
                int Points = 0;
                int.TryParse(Value, out Points);

                if (user.WiredPoints < Points)
                {
                    Result = true;
                }

                break;
            }

            case "ingroup":
            case "innotgroup":
            {
                int GroupId = 0;
                int.TryParse(Value, out GroupId);

                if (GroupId == 0)
                {
                    break;
                }
                if (user.IsBot || user.GetClient() != null && user.GetClient().GetHabbo() != null && user.GetClient().GetHabbo().MyGroups.Contains(GroupId))
                {
                    Result = true;
                }

                break;
            }

            case "userteam":
            case "usernotteam":
            {
                if (user.team != Team.none)
                {
                    Result = true;
                }
                break;
            }

            case "sit":
            case "notsit":
            {
                if (user._statusses.ContainsKey("sit"))
                {
                    Result = true;
                }
                break;
            }

            case "lay":
            case "notlay":
            {
                if (user._statusses.ContainsKey("lay"))
                {
                    Result = true;
                }
                break;
            }

            case "rot":
            case "notrot":
            {
                if (user.RotBody.ToString() == this.Value)
                {
                    Result = true;
                }
                break;
            }

            case "transf":
            case "nottransf":
            {
                if (user.transformation)
                {
                    Result = true;
                }
                break;
            }

            case "username":
            case "notusername":
            {
                if (user.GetUsername() == this.Value)
                {
                    Result = true;
                }
                break;
            }

            case "handitem":
            case "nothanditem":
            {
                if (user.CarryItemID.ToString() == this.Value)
                {
                    Result = true;
                }
                break;
            }

            case "badge":
            case "notbadge":
            {
                if (user.IsBot || user.GetClient() == null || user.GetClient().GetHabbo() == null || user.GetClient().GetHabbo().GetBadgeComponent() == null)
                {
                    break;
                }
                if (user.GetClient().GetHabbo().GetBadgeComponent().HasBadge(this.Value))
                {
                    Result = true;
                }
                break;
            }

            case "enable":
            case "notenable":
            {
                if (user.CurrentEffect.ToString() == this.Value)
                {
                    Result = true;
                }
                break;
            }

            case "rank":
            {
                if (user.IsBot)
                {
                    break;
                }
                if (user.GetClient().GetHabbo().Rank.ToString() == this.Value)
                {
                    Result = true;
                }
                break;
            }

            case "rankplus":
            {
                if (user.IsBot)
                {
                    break;
                }
                if (user.GetClient().GetHabbo().Rank > Convert.ToInt32(this.Value))
                {
                    Result = true;
                }
                break;
            }

            case "rankmoin":
            {
                if (user.IsBot)
                {
                    break;
                }
                if (user.GetClient().GetHabbo().Rank < Convert.ToInt32(this.Value))
                {
                    Result = true;
                }
                break;
            }
            }
            return(Result);
        }
예제 #53
0
 /// <summary>
 ///     Determines whether the specified user is valid.
 /// </summary>
 /// <param name="user">The user.</param>
 /// <returns><c>true</c> if the specified user is valid; otherwise, <c>false</c>.</returns>
 private bool IsValid(RoomUser user)
 {
     return user != null && (user.IsBot ||
                             (user.GetClient() != null && user.GetClient().GetHabbo() != null &&
                              user.GetClient().GetHabbo().CurrentRoomId == _userRoom.RoomId));
 }
예제 #54
0
        private bool RpUserCommand(RoomUser User)
        {
            Room Room = this.item.GetRoom();

            if (Room == null || !Room.RpRoom)
            {
                return(false);
            }

            if (User == null || User.GetClient() == null || User.GetClient().GetHabbo() == null)
            {
                return(false);
            }

            RolePlayer Rp = User.Roleplayer;

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

            bool Result = false;

            switch (this.Effet)
            {
            case "inventoryitem":
            case "inventorynotitem":
            {
                int ValueInt = 0;
                if (!int.TryParse(this.Value, out ValueInt))
                {
                    break;
                }

                if (Rp.GetInventoryItem(ValueInt) != null)
                {
                    Result = true;
                }

                break;
            }

            case "energyplus":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.Energy >= ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "energymoins":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.Energy < ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "munition":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.Munition == ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "munitionplus":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.Munition >= ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "munitionmoins":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.Munition < ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "moneyplus":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);
                if (Rp.Money >= ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "moneymoins":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);
                if (Rp.Money < ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "levelplus":
            {
                int.TryParse(this.Value, out int ValueInt);
                if (Rp.Level >= ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "levelmoins":
            {
                int.TryParse(this.Value, out int ValueInt);
                if (Rp.Level < ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "healthplus":
            {
                int.TryParse(this.Value, out int ValueInt);
                if (Rp.Health >= ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "healthmoins":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);
                if (Rp.Health < ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "health":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);
                if (Rp.Health == ValueInt)
                {
                    Result = true;
                }
                break;
            }

            case "dead":
            case "notdead":
            {
                if (Rp.Dead == true)
                {
                    Result = true;
                }
                break;
            }

            case "weaponfarid":
            case "notweaponfarid":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.WeaponGun.Id == ValueInt)
                {
                    Result = true;
                }

                break;
            }

            case "weaponcacid":
            case "notweaponcacid":
            {
                int ValueInt = 0;
                int.TryParse(this.Value, out ValueInt);

                if (Rp.WeaponCac.Id == ValueInt)
                {
                    Result = true;
                }

                break;
            }
            }
            return(Result);
        }
예제 #55
0
        /// <summary>
        ///     Updates the user status.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="cycleGameItems">if set to <c>true</c> [cyclegameitems].</param>
        internal void UpdateUserStatus(RoomUser user, bool cycleGameItems)
        {
            if (user == null) return;

            if (user.Statusses.ContainsKey("lay") || user.Statusses.ContainsKey("sit"))
            {
                user.Statusses.Remove("lay");
                user.Statusses.Remove("sit");
                user.UpdateNeeded = true;
            }

            bool isBot = user.IsBot;
            if (isBot) cycleGameItems = false;

            try
            {
                Gamemap roomMap = _userRoom.GetGameMap();
                Point userPoint = new Point(user.X, user.Y);
                RoomItem[] allRoomItemForSquare = roomMap.GetCoordinatedHeighestItems(userPoint).ToArray();
                List<RoomItem> itemsOnSquare = roomMap.GetCoordinatedItems(userPoint);

                double newZ = _userRoom.GetGameMap().SqAbsoluteHeight(user.X, user.Y, itemsOnSquare) +
                           (user.RidingHorse && user.IsPet == false ? 1 : 0);

                if (Math.Abs(newZ - user.Z) > 0)
                {
                    user.Z = newZ;
                    user.UpdateNeeded = true;
                }
                foreach (RoomItem item in allRoomItemForSquare)
                {
                    if (cycleGameItems)
                    {
                        item.UserWalksOnFurni(user);
                    }

                    if (item.GetBaseItem().IsSeat)
                    {
                        if (!user.Statusses.ContainsKey("sit"))
                        {
                            if (item.GetBaseItem().StackMultipler && !string.IsNullOrWhiteSpace(item.ExtraData))
                                if (item.ExtraData != "0")
                                {
                                    int num2 = Convert.ToInt32(item.ExtraData);
                                    if (!user.Statusses.ContainsKey("sit"))
                                        user.Statusses.Add("sit",
                                            item.GetBaseItem().ToggleHeight[num2].ToString(CultureInfo.InvariantCulture)
                                                .Replace(',', '.'));
                                }
                                else
                                {
                                    if (!user.Statusses.ContainsKey("sit"))
                                        user.Statusses.Add("sit", Convert.ToString(item.GetBaseItem().Height, CultureInfo.InvariantCulture));
                                }
                            else
                            {
                                if (!user.Statusses.ContainsKey("sit"))
                                    user.Statusses.Add("sit", Convert.ToString(item.GetBaseItem().Height, CultureInfo.InvariantCulture));
                            }
                        }

                        if (Math.Abs(user.Z - item.Z) > 0 || user.RotBody != item.Rot)
                        {
                            user.Z = item.Z;
                            user.RotHead = item.Rot;
                            user.RotBody = item.Rot;
                            user.UpdateNeeded = true;
                        }
                    }

                    Interaction interactionType = item.GetBaseItem().InteractionType;

                    switch (interactionType)
                    {
                        case Interaction.QuickTeleport:
                        case Interaction.GuildGate:
                        case Interaction.WalkInternalLink:
                        {
                            item.Interactor.OnUserWalk(user.GetClient(), item, user);
                            break;
                        }
                        case Interaction.None:
                            break;

                        case Interaction.PressurePadBed:
                        case Interaction.Bed:
                        {
                            if (!user.Statusses.ContainsKey("lay"))
                                user.Statusses.Add("lay", ServerUserChatTextHandler.GetString(item.GetBaseItem().Height));
                            else
                            {
                                if (user.Statusses["lay"] != ServerUserChatTextHandler.GetString(item.GetBaseItem().Height))
                                    user.Statusses["lay"] = ServerUserChatTextHandler.GetString(item.GetBaseItem().Height);
                            }

                            user.Z = item.Z;
                            user.RotHead = item.Rot;
                            user.RotBody = item.Rot;
                            user.UpdateNeeded = true;

                            if (item.GetBaseItem().InteractionType == Interaction.PressurePadBed)
                            {
                                item.ExtraData = "1";
                                item.UpdateState();
                            }
                            break;
                        }

                        case Interaction.Guillotine:
                        {
                            if (!user.Statusses.ContainsKey("lay"))
                                user.Statusses.Add("lay", ServerUserChatTextHandler.GetString(item.GetBaseItem().Height));
                            else if (user.Statusses["lay"] != ServerUserChatTextHandler.GetString(item.GetBaseItem().Height))
                                user.Statusses["lay"] = ServerUserChatTextHandler.GetString(item.GetBaseItem().Height);

                            user.Z = item.Z;
                            user.RotBody = item.Rot;

                            item.ExtraData = "1";
                            item.UpdateState();
                            AvatarEffectComponent avatarEffectsInventoryComponent =
                                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();

                            avatarEffectsInventoryComponent.ActivateCustomEffect(133);
                            break;
                        }

                        case Interaction.FootballGate:
                            break;

                        case Interaction.BanzaiGateBlue:
                        case Interaction.BanzaiGateRed:
                        case Interaction.BanzaiGateYellow:
                        case Interaction.BanzaiGateGreen:
                        {
                            int effect = (int) item.Team + 32;
                            TeamManager teamManagerForBanzai =
                                user.GetClient().GetHabbo().CurrentRoom.GetTeamManagerForBanzai();
                            AvatarEffectComponent avatarEffectsInventoryComponent =
                                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();
                            if (user.Team == Team.None)
                            {
                                if (!teamManagerForBanzai.CanEnterOnTeam(item.Team)) break;
                                if (user.Team != Team.None) teamManagerForBanzai.OnUserLeave(user);
                                user.Team = item.Team;
                                teamManagerForBanzai.AddUser(user);
                                if (avatarEffectsInventoryComponent.CurrentEffect != effect)
                                    avatarEffectsInventoryComponent.ActivateCustomEffect(effect);
                                break;
                            }
                            if (user.Team != Team.None && user.Team != item.Team)
                            {
                                teamManagerForBanzai.OnUserLeave(user);
                                user.Team = Team.None;
                                avatarEffectsInventoryComponent.ActivateCustomEffect(0);
                                break;
                            }
                            teamManagerForBanzai.OnUserLeave(user);

                            if (avatarEffectsInventoryComponent.CurrentEffect == effect)
                                avatarEffectsInventoryComponent.ActivateCustomEffect(0);
                            user.Team = Team.None;
                            break;
                        }

                        case Interaction.Jump:
                            break;

                        case Interaction.Pinata:
                        {
                            if (!user.IsWalking || item.ExtraData.Length <= 0) break;
                            int num5 = int.Parse(item.ExtraData);
                            if (num5 >= 100 || user.CurrentEffect != 158) break;
                            int num6 = num5 + 1;
                            item.ExtraData = num6.ToString();
                            item.UpdateState();
                            Yupi.GetGame()
                                .GetAchievementManager()
                                .ProgressUserAchievement(user.GetClient(), "ACH_PinataWhacker", 1);
                            if (num6 == 100)
                            {
                                Yupi.GetGame().GetPinataHandler().DeliverRandomPinataItem(user, _userRoom, item);
                                Yupi.GetGame()
                                    .GetAchievementManager()
                                    .ProgressUserAchievement(user.GetClient(), "ACH_PinataBreaker", 1);
                            }
                            break;
                        }
                        case Interaction.TileStackMagic:
                        case Interaction.Poster:
                            break;

                        case Interaction.Tent:
                        case Interaction.BedTent:
                            if (user.LastItem == item.Id) break;
                            if (!user.IsBot && !user.OnCampingTent)
                            {
                                ServerMessage serverMessage22 = new ServerMessage();
                                serverMessage22.Init(
                                    LibraryParser.OutgoingRequest("UpdateFloorItemExtraDataMessageComposer"));
                                serverMessage22.AppendString(item.Id.ToString());
                                serverMessage22.AppendInteger(0);
                                serverMessage22.AppendString("1");
                                user.GetClient().SendMessage(serverMessage22);
                                user.OnCampingTent = true;
                                user.LastItem = item.Id;
                            }
                            break;

                        case Interaction.RunWaySage:
                        {
                            int num7 = new Random().Next(1, 4);
                            item.ExtraData = num7.ToString();
                            item.UpdateState();
                            break;
                        }
                        case Interaction.Shower:
                        case Interaction.ChairState:
                        case Interaction.PressurePad:
                        {
                            item.ExtraData = "1";
                            item.UpdateState();
                            break;
                        }
                        case Interaction.BanzaiTele:
                        {
                            if (user.IsWalking)
                                _userRoom.GetGameItemHandler().OnTeleportRoomUserEnter(user, item);
                            break;
                        }
                        case Interaction.FreezeYellowGate:
                        case Interaction.FreezeRedGate:
                        case Interaction.FreezeGreenGate:
                        case Interaction.FreezeBlueGate:
                        {
                            if (cycleGameItems)
                            {
                                int num4 = (int) (item.Team + 39);
                                TeamManager teamManagerForFreeze =
                                    user.GetClient().GetHabbo().CurrentRoom.GetTeamManagerForFreeze();
                                AvatarEffectComponent avatarEffectsInventoryComponent2 =
                                    user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent();
                                if (user.Team != item.Team)
                                {
                                    if (teamManagerForFreeze.CanEnterOnTeam(item.Team))
                                    {
                                        if (user.Team != Team.None) teamManagerForFreeze.OnUserLeave(user);
                                        user.Team = item.Team;
                                        teamManagerForFreeze.AddUser(user);
                                        if (avatarEffectsInventoryComponent2.CurrentEffect != num4)
                                            avatarEffectsInventoryComponent2.ActivateCustomEffect(num4);
                                    }
                                }
                                else
                                {
                                    teamManagerForFreeze.OnUserLeave(user);
                                    if (avatarEffectsInventoryComponent2.CurrentEffect == num4)
                                        avatarEffectsInventoryComponent2.ActivateCustomEffect(0);
                                    user.Team = Team.None;
                                }
                                ServerMessage serverMessage33 =
                                    new ServerMessage(
                                        LibraryParser.OutgoingRequest("UserIsPlayingFreezeMessageComposer"));
                                serverMessage33.AppendBool(user.Team != Team.None);
                                user.GetClient().SendMessage(serverMessage33);
                            }
                            break;
                        }
                    }

                    if (item.GetBaseItem().InteractionType == Interaction.BedTent)
                        user.OnCampingTent = true;

                    user.LastItem = item.Id;
                }

                if (user.IsSitting && user.TeleportEnabled)
                {
                    user.Z -= 0.35;
                    user.UpdateNeeded = true;
                }
                if (cycleGameItems)
                {
                    _userRoom.GetSoccer().OnUserWalk(user);
                    _userRoom.GetBanzai().OnUserWalk(user);
                    _userRoom.GetFreeze().OnUserWalk(user);
                }
            }
            catch (Exception e)
            {
                ServerLogManager.HandleException(e, "RoomUserManager.cs:UpdateUserStatus");
            }
        }
예제 #56
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }
            if (Session.GetHabbo().Rank > 3 && !Session.GetHabbo().StaffOk)
            {
                return;
            }
            if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool") && Room.CheckMute(Session))
            {
                Session.SendWhisper("Oops, usted se encuentra silenciad@");
                return;
            }

            if (RavenEnvironment.GetUnixTimestamp() < Session.GetHabbo().FloodTime&& Session.GetHabbo().FloodTime != 0)
            {
                return;
            }

            string Params  = Packet.PopString();
            string ToUser  = Params.Split(' ')[0];
            string Message = Params.Substring(ToUser.Length + 1);
            int    Colour  = Packet.PopInt();

            if (Message.Contains("&#1º;") || Message.Contains("&#1º") || Message.Contains("&#"))
            {
                Session.SendMessage(new MassEventComposer("habbopages/spammer.txt")); return;
            }

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

            if (User == null)
            {
                return;
            }

            RoomUser User2 = Room.GetRoomUserManager().GetRoomUserByHabbo(ToUser);

            if (User2 == null)
            {
                return;
            }

            if (Session.GetHabbo().TimeMuted > 0)
            {
                Session.SendMessage(new MutedComposer(Session.GetHabbo().TimeMuted));
                return;
            }

            ChatStyle Style = null;

            if (!RavenEnvironment.GetGame().GetChatManager().GetChatStyles().TryGetStyle(Colour, out Style) || (Style.RequiredRight.Length > 0 && !Session.GetHabbo().GetPermissions().HasRight(Style.RequiredRight)))
            {
                Colour = 0;
            }

            User.LastBubble = Session.GetHabbo().CustomBubbleId == 0 ? Colour : Session.GetHabbo().CustomBubbleId;

            if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                int MuteTime;
                if (User.IncrementAndCheckFlood(out MuteTime))
                {
                    Session.SendMessage(new FloodControlComposer(MuteTime));
                    return;
                }
            }


            if (!User2.GetClient().GetHabbo().ReceiveWhispers&& !Session.GetHabbo().GetPermissions().HasRight("room_whisper_override"))
            {
                Session.SendWhisper("Oops, este usuario no permite susurros.");
                return;
            }

            if (Session.GetHabbo().LastMessage == Message)
            {
                Session.GetHabbo().LastMessageCount++;
                if (Session.GetHabbo().LastMessageCount > 3)
                {
                    RavenEnvironment.GetGame().GetClientManager().RepeatAlert(new RoomInviteComposer(int.MinValue, "Repeat: " + Session.GetHabbo().Username + " / Frase: " + Message + " / Veces: " + Session.GetHabbo().LastMessageCount + "."));
                    Session.GetHabbo().LastMessageCount = 0;
                }
            }

            Room.GetFilter().CheckMessage(Message);

            RavenEnvironment.GetGame().GetChatManager().GetLogs().StoreChatlog(new Raven.HabboHotel.Rooms.Chat.Logs.ChatlogEntry(Session.GetHabbo().Id, Room.Id, ": " + Message, UnixTimestamp.GetNow(), Session.GetHabbo(), Room));

            Room.AddChatlog(Session.GetHabbo().Id, ": " + Message);

            string word;

            if (!Session.GetHabbo().GetPermissions().HasRight("word_filter_override") &&
                RavenEnvironment.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(Message, out word))
            {
                Session.GetHabbo().BannedPhraseCount++;

                if (Session.GetHabbo().BannedPhraseCount >= 1)
                {
                    Session.SendWhisper("¡Has mencionado una palabra no apta para el hotel! Aviso " + Session.GetHabbo().BannedPhraseCount + "/10");

                    DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
                    dtDateTime = dtDateTime.AddSeconds(RavenEnvironment.GetUnixTimestamp()).ToLocalTime();

                    RavenEnvironment.GetGame().GetClientManager().StaffAlert1(new RoomInviteComposer(int.MinValue, "Spammer: " + Session.GetHabbo().Username + " / Frase: " + Message + " / Palabra: " + word.ToUpper() + " / Fase: " + Session.GetHabbo().BannedPhraseCount + " / 10."));
                    RavenEnvironment.GetGame().GetClientManager().StaffAlert2(new RoomNotificationComposer("Alerta de publicista:",
                                                                                                           "<b><font color=\"#B40404\">Por favor, recuerda investigar bien antes de recurrir a una sanción.</font></b><br><br>Palabra: <b>" + word.ToUpper() + "</b>.<br><br><b>Frase:</b><br><i>" + Message +
                                                                                                           "</i>.<br><br><b>Tipo:</b><br>Chat de sala.\r\n" + "<b>Usuario: " + Session.GetHabbo().Username + "</b><br><b>Secuencia:</b> " + Session.GetHabbo().BannedPhraseCount + "/10.", "foto", "Investigar", "event:navigator/goto/" +
                                                                                                           Session.GetHabbo().CurrentRoomId));
                    return;
                }
                if (Session.GetHabbo().BannedPhraseCount >= 10)
                {
                    RavenEnvironment.GetGame().GetModerationManager().BanUser("System", HabboHotel.Moderation.ModerationBanType.USERNAME, Session.GetHabbo().Username, "Baneado por hacer Spam con la Frase (" + Message + ")", (RavenEnvironment.GetUnixTimestamp() + 78892200));
                    Session.Disconnect();
                    return;
                }

                Session.SendMessage(new WhisperComposer(User.VirtualId, "Mensaje inapropiado.", 0, User.LastBubble));
                return;
            }

            List <RoomUser> MultiW = Session.GetHabbo().MultiWhispers;

            if (MultiW.Count > 0)
            {
                foreach (RoomUser user in MultiW)
                {
                    if (user != null && user.HabboId != User2.HabboId && user.HabboId != User.HabboId)
                    {
                        if (user.GetClient() != null && user.GetClient().GetHabbo() != null && !user.GetClient().GetHabbo().IgnorePublicWhispers)
                        {
                            user.GetClient().SendMessage(new WhisperComposer(User.VirtualId, "@blue@" + Message, 0, User.LastBubble));
                        }
                    }
                }
            }

            Session.GetHabbo().LastMessage = Message;
            RavenEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.SOCIAL_CHAT);

            User.UnIdle();
            User.GetClient().SendMessage(new WhisperComposer(User.VirtualId, Message, 0, User.LastBubble));

            if (User2 != null && !User2.IsBot && User2.UserId != User.UserId)
            {
                if (!User2.GetClient().GetHabbo().MutedUsers.Contains(Session.GetHabbo().Id))
                {
                    User2.GetClient().SendMessage(new WhisperComposer(User.VirtualId, Message, 0, User.LastBubble));
                }
            }

            List <RoomUser> ToNotify = Room.GetRoomUserManager().GetRoomUserByRank(4);

            if (ToNotify.Count > 0)
            {
                foreach (RoomUser user in ToNotify)
                {
                    if (user != null && user.HabboId != User2.HabboId && user.HabboId != User.HabboId)
                    {
                        if (user.GetClient() != null && user.GetClient().GetHabbo() != null && !user.GetClient().GetHabbo().IgnorePublicWhispers)
                        {
                            user.GetClient().SendMessage(new WhisperComposer(User.VirtualId, "@red@ [" + ToUser + "] " + Message, 0, User.LastBubble));
                        }
                    }
                }
            }
        }
예제 #57
0
파일: Soccer.cs 프로젝트: BjkGkh/Azure2
        private void HandleFootballGameItems(Point ballItemCoord, RoomUser user)
        {
            if (user == null || _room == null || _room.GetGameManager() == null) return;
            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("RoomUserActionMessageComposer"));

            if (_room.GetGameManager()
                .GetItems(Team.red)
                .Values.SelectMany(current => current.AffectedTiles.Values)
                .Any(current2 => current2.X == ballItemCoord.X && current2.Y == ballItemCoord.Y))
                _room.GetGameManager().AddPointToTeam(Team.red, user);
            if (
                _room.GetGameManager()
                    .GetItems(Team.green)
                    .Values.SelectMany(current3 => current3.AffectedTiles.Values)
                    .Any(current4 => current4.X == ballItemCoord.X && current4.Y == ballItemCoord.Y))
                _room.GetGameManager().AddPointToTeam(Team.green, user);
            if (
                _room.GetGameManager()
                    .GetItems(Team.blue)
                    .Values.SelectMany(current5 => current5.AffectedTiles.Values)
                    .Any(current6 => current6.X == ballItemCoord.X && current6.Y == ballItemCoord.Y))
                _room.GetGameManager().AddPointToTeam(Team.blue, user);
            if (!_room.GetGameManager()
                .GetItems(Team.yellow)
                .Values.SelectMany(current7 => current7.AffectedTiles.Values)
                .Any(current8 => current8.X == ballItemCoord.X && current8.Y == ballItemCoord.Y))
                _room.GetGameManager().AddPointToTeam(Team.yellow, user);

            serverMessage.AppendInteger(user.VirtualId);
            serverMessage.AppendInteger(0);
            user.GetClient().GetHabbo().CurrentRoom.SendMessage(serverMessage);
        }
예제 #58
0
        public bool Execute(params object[] Stuff)
        {
            RoomUser      roomUser = (RoomUser)Stuff[0];
            WiredItemType item     = (WiredItemType)Stuff[1];

            if (this.mBanned.Contains(item))
            {
                return(false);
            }
            if (roomUser == null || roomUser.GetClient() == null || roomUser.GetClient().GetHabbo() == null)
            {
                return(false);
            }

            Room Room = roomUser.GetClient().GetHabbo().CurrentRoom;

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

            if (String.IsNullOrWhiteSpace(mText) || String.IsNullOrWhiteSpace(mExtra))
            {
                return(false);
            }

            string[] Booleans = mText.Split(',');

            if (Booleans.Length < 3)
            {
                return(false);
            }


            bool ExtraData = Booleans[0] == "true";
            bool Rot       = Booleans[1] == "true";
            bool Position  = Booleans[2] == "true";

            foreach (string ItemData in mExtra.Split('/'))
            {
                if (String.IsNullOrWhiteSpace(ItemData))
                {
                    continue;
                }

                string[] InnerData = ItemData.Split('|');
                uint     ItemId    = uint.Parse(InnerData[0]);


                RoomItem Item = Room.GetRoomItemHandler().GetItem(ItemId);

                if (Item == null)
                {
                    continue;
                }

                string ExtraDataToSet = (ExtraData) ? InnerData[1] : Item.ExtraData;
                int    RotationToSet  = (Rot) ? int.Parse(InnerData[2]) : Item.Rot;

                string[] Positions = InnerData[3].Split(',');
                int      XToSet    = (Position) ? int.Parse(Positions[0]) : Item.GetX;
                int      YToSet    = (Position) ? int.Parse(Positions[1]) : Item.GetY;
                double   ZToSet    = (Position) ? double.Parse(Positions[2]) : Item.GetZ;


                ServerMessage serverMessage = new ServerMessage(Outgoing.ItemAnimationMessageComposer);
                serverMessage.AppendInt32(Item.GetX);
                serverMessage.AppendInt32(Item.GetY);
                serverMessage.AppendInt32(XToSet);
                serverMessage.AppendInt32(YToSet);
                serverMessage.AppendInt32(1);
                serverMessage.AppendUInt(Item.Id);
                serverMessage.AppendString(Item.GetZ.ToString(CyberEnvironment.cultureInfo));
                serverMessage.AppendString(ZToSet.ToString(CyberEnvironment.cultureInfo));
                serverMessage.AppendInt32(0);
                Room.SendMessage(serverMessage);

                Room.GetRoomItemHandler().SetFloorItem(roomUser.GetClient(), Item, XToSet, YToSet, RotationToSet, false, false, false, false);
                Item.ExtraData = ExtraDataToSet;
                Item.UpdateState();
            }
            return(true);
        }
예제 #59
0
        private bool Teleport(RoomUser user)
        {
            if (!Items.Any())
                return true;

            if (user?.GetClient() == null || user.GetClient().GetHabbo() == null)
                return true;

            Random rnd = new Random();

            Items = (from x in Items orderby rnd.Next() select x).ToList();

            RoomItem roomItem = null;

            foreach (
                RoomItem current in
                    Items.Where(
                        current => current != null && Room.GetRoomItemHandler().FloorItems.ContainsKey(current.Id)))
                roomItem = current;

            if (roomItem == null)
            {
                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(0);
                return false;
            }

            Room.GetGameMap().TeleportToItem(user, roomItem);
            Room.GetRoomUserManager().OnUserUpdateStatus();
            user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(0);

            return true;
        }
예제 #60
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom || Session.GetHabbo().GetStats() == null || Session.GetHabbo().GetStats().DailyPetRespectPoints == 0)
            {
                return;
            }

            Room Room;

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

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

            if (ThisUser == null)
            {
                return;
            }

            int PetId = Packet.PopInt();

            RoomUser Pet = null;

            if (!Session.GetHabbo().CurrentRoom.GetRoomUserManager().TryGetPet(PetId, out Pet))
            {
                //Okay so, we've established we have no pets in this room by this virtual Id, let us check out users, maybe they're creeping as a pet?!
                RoomUser TargetUser = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(PetId);
                if (TargetUser == null)
                {
                    return;
                }

                //Check some values first, please!
                if (TargetUser.GetClient() == null || TargetUser.GetClient().GetHabbo() == null)
                {
                    return;
                }

                if (TargetUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id)
                {
                    Session.SendWhisper("Oops, you cannot use this on yourself! (You haven't lost a point, simply reload!)");
                    return;
                }

                //And boom! Let us send some respect points.
                RocketEmulador.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.SOCIAL_RESPECT);
                RocketEmulador.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RespectGiven", 1);
                RocketEmulador.GetGame().GetAchievementManager().ProgressAchievement(TargetUser.GetClient(), "ACH_RespectEarned", 1);

                //Take away from pet respect points, just in-case users abuse this..
                Session.GetHabbo().GetStats().DailyPetRespectPoints  -= 1;
                Session.GetHabbo().GetStats().RespectGiven           += 1;
                TargetUser.GetClient().GetHabbo().GetStats().Respect += 1;

                //Apply the effect.
                ThisUser.CarryItemID = 999999999;
                ThisUser.CarryTimer  = 5;

                //Send the magic out.
                if (Room.RespectNotificationsEnabled)
                {
                    Room.SendMessage(new RespectPetNotificationMessageComposer(TargetUser.GetClient().GetHabbo(), TargetUser));
                }
                Room.SendMessage(new CarryObjectComposer(ThisUser.VirtualId, ThisUser.CarryItemID));
                return;
            }

            if (Pet == null || Pet.PetData == null || Pet.RoomId != Session.GetHabbo().CurrentRoomId)
            {
                return;
            }

            Session.GetHabbo().GetStats().DailyPetRespectPoints -= 1;
            RocketEmulador.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetRespectGiver", 1, false);

            ThisUser.CarryItemID = 999999999;
            ThisUser.CarryTimer  = 5;
            Pet.PetData.OnRespect();
            Room.SendMessage(new CarryObjectComposer(ThisUser.VirtualId, ThisUser.CarryItemID));
        }