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); } }
/// <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); }
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); } } } }
/// <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); }
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); } } }
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(); }
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); }
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; }
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; }
internal override void OnUserChat(RoomUser user, string text, bool shout) { if (!_unit.GetRoom().CheckRights(user.GetClient(), true)) return; if (text == "yes") { } }
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; }
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; }
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); }
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); } }
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); } } } }
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); }
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); }
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; }
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; }
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); }
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(); } } } } } } }
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); } }
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); } }
/// <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++; }
/// <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 { } }
/// <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; } }
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; } } }
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); }
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); }
/// <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 } }
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); } } }
/// <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()); } }
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); } }
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); } } }
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); } }
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; }
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++; } }
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); } } } } }
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); } } }
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(); } } } }
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, "")); } }
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)); }
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; }
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); }
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); } }
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; }
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)); } }
/// <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); }
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(); }
/// <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()); } }
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); }
/// <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)); }
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); }
/// <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"); } }
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("º;") || Message.Contains("º") || 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)); } } } } }
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); }
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); }
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; }
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)); }