public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username); if (User == null) { return; } var Items = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y); bool HasChair = Items.ToList().Where(x => x != null && x.GetBaseItem().IsSeat).Count() > 0; bool HasBed = Items.ToList().Where(x => x != null && x.GetBaseItem().IsBed()).Count() > 0; if (HasChair || HasBed) { return; } if (User.isSitting) { User.Z += 0.35; User.RemoveStatus("sit"); User.isSitting = false; User.UpdateNeeded = true; } else if (User.isLying) { User.Z += 0.35; User.RemoveStatus("lay"); User.isLying = false; User.UpdateNeeded = true; } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) { return; } if (!Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null || !User.CanWalk) { return; } int MoveX = Packet.PopInt(); int MoveY = Packet.PopInt(); if (User.RidingHorse) { RoomUser Horse = Room.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID); if (Horse != null) { Horse.MoveTo(MoveX, MoveY); } } if (User.isLying) { User.Z += 0.35; User.RemoveStatus("lay"); User.isLying = false; User.UpdateNeeded = true; } if (User.isSitting) { User.Z += 0.35; User.RemoveStatus("sit"); User.isSitting = false; User.UpdateNeeded = true; } User.MoveTo(MoveX, MoveY); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session.GetHabbo() == null) { return; } int UserId = Packet.PopInt(); Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (room == null) { return; } if (room == null || !room.CheckRights(Session, true)) { return; } if (room.UsersWithRights.Contains(UserId)) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("user.giverights.error", Session.Langue)); } else { Habbo Userright = ButterflyEnvironment.GetHabboById(UserId); if (Userright == null) { return; } room.UsersWithRights.Add(UserId); using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("INSERT INTO room_rights (room_id,user_id) VALUES (" + room.Id + "," + UserId + ")"); ServerPacket Response = new ServerPacket(ServerPacketHeader.FlatControllerAddedMessageComposer); Response.WriteInteger(room.Id); Response.WriteInteger(UserId); Response.WriteString(Userright.Username); Session.SendPacket(Response); RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(UserId); if (roomUserByHabbo == null || roomUserByHabbo.IsBot) { return; } roomUserByHabbo.RemoveStatus("flatctrl 0"); roomUserByHabbo.SetStatus("flatctrl 1", ""); roomUserByHabbo.UpdateNeeded = true; roomUserByHabbo.GetClient().SendPacket(new YouAreControllerComposer(1)); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } if (!Room.CheckRights(Session, true)) { return; } int Amount = Packet.PopInt(); for (int i = 0; (i < Amount && i <= 100); i++) { int UserId = Packet.PopInt(); if (UserId > 0 && Room.UsersWithRights.Contains(UserId)) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId); if (User != null && !User.IsBot) { User.RemoveStatus("flatctrl 1"); User.UpdateNeeded = true; User.GetClient().SendMessage(new YouAreControllerComposer(0)); } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1"); dbClient.AddParameter("uid", UserId); dbClient.AddParameter("rid", Room.Id); dbClient.RunQuery(); } if (Room.UsersWithRights.Contains(UserId)) { Room.UsersWithRights.Remove(UserId); } Session.SendMessage(new FlatControllerRemovedComposer(Room, UserId)); } } }
public void Parse(GameClient session, ClientPacket packet) { if (!session.Habbo.InRoom) { return; } if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.Habbo.CurrentRoomId, out Room room)) { return; } if (!room.CheckRights(session, true)) { return; } int amount = packet.PopInt(); for (int i = 0; (i < amount && i <= 100); i++) { int userId = packet.PopInt(); if (userId > 0 && room.UsersWithRights.Contains(userId)) { RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(userId); if (user != null && !user.IsBot) { user.RemoveStatus("flatctrl 1"); user.UpdateNeeded = true; user.GetClient().SendPacket(new YouAreControllerComposer(0)); } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1"); dbClient.AddParameter("uid", userId); dbClient.AddParameter("rid", room.Id); dbClient.RunQuery(); } if (room.UsersWithRights.Contains(userId)) { room.UsersWithRights.Remove(userId); } session.SendPacket(new FlatControllerRemovedComposer(room, userId)); } } }
private void RemovePetStatus() { RoomUser roomUser = this.GetRoomUser(); roomUser.RemoveStatus("sit"); roomUser.RemoveStatus("lay"); roomUser.RemoveStatus("snf"); roomUser.RemoveStatus("eat"); roomUser.RemoveStatus("ded"); roomUser.RemoveStatus("jmp"); roomUser.RemoveStatus("beg"); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session.GetHabbo() == null) { return; } if (!Session.GetHabbo().InRoom) { return; } Room Room = null; if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } if (!Room.CheckRights(Session)) { return; } if (Room.UsersWithRights.Contains(Session.GetHabbo().Id)) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id); if (User != null && !User.IsBot) { User.RemoveStatus("flatctrl 1"); User.UpdateNeeded = true; User.GetClient().SendPacket(new YouAreNotControllerComposer()); } using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1"); dbClient.AddParameter("uid", Session.GetHabbo().Id); dbClient.AddParameter("rid", Room.Id); dbClient.RunQuery(); } if (Room.UsersWithRights.Contains(Session.GetHabbo().Id)) { Room.UsersWithRights.Remove(Session.GetHabbo().Id); } } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Instance; if (!CloudServer.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Instance)) { return; } if (!Instance.CheckRights(Session, true)) { return; } foreach (int UserId in new List <int>(Instance.UsersWithRights)) { RoomUser User = Instance.GetRoomUserManager().GetRoomUserByHabbo(UserId); if (User != null && !User.IsBot) { User.RemoveStatus("flatctrl 1"); User.UpdateNeeded = true; User.GetClient().SendMessage(new YouAreControllerComposer(0)); } using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1"); dbClient.AddParameter("uid", UserId); dbClient.AddParameter("rid", Instance.Id); dbClient.RunQuery(); } Session.SendMessage(new FlatControllerRemovedComposer(Instance, UserId)); Session.SendMessage(new RoomRightsListComposer(Instance)); Session.SendMessage(new UserUpdateComposer(Instance.GetRoomUserManager().GetUserList().ToList())); } if (Instance.UsersWithRights.Count > 0) { Instance.UsersWithRights.Clear(); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId)) { return; } Habbo Habbo = PlusEnvironment.GetHabboById(UserId); if (Habbo == null) { Session.SendNotification("Oops, an error occurred whilst finding this user."); return; } Group.TakeAdmin(UserId); Room Room = null; if (PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId); if (User != null) { if (User.Statusses.ContainsKey("flatctrl 3")) { User.RemoveStatus("flatctrl 3"); } User.UpdateNeeded = true; if (User.GetClient() != null) { User.GetClient().SendMessage(new YouAreControllerComposer(0)); } } } Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 2)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!CloudServer.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId)) { return; } Habbo Habbo = CloudServer.GetHabboById(UserId); if (Habbo == null) { Session.SendNotification("Ops! Ocorreu um erro ao encontrar esse usuário."); return; } Group.TakeAdmin(UserId); Room Room = null; if (CloudServer.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId); if (User != null) { if (User.Statusses.ContainsKey("flatctrl 3")) { User.RemoveStatus("flatctrl 3"); } User.UpdateNeeded = true; if (User.GetClient() != null) { User.GetClient().SendMessage(new YouAreControllerComposer(0)); } } } Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 2)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!RavenEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (!Group.IsMember(UserId) || !Group.IsAdmin(Session.GetHabbo().Id)) { return; } Habbo Habbo = RavenEnvironment.GetHabboById(UserId); if (Habbo == null) { Session.SendNotification("Oops, ocurrio un error mientras se realizaba la busqueda de este usuario."); return; } Group.TakeAdmin(UserId); Room Room = null; if (RavenEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(UserId); if (User != null) { if (User.Statusses.ContainsKey("flatctrl 3")) { User.RemoveStatus("flatctrl 3"); } User.UpdateNeeded = true; if (User.GetClient() != null) { User.GetClient().SendMessage(new YouAreControllerComposer(0)); } } } Session.SendMessage(new GroupMemberUpdatedComposer(GroupId, Habbo, 2)); }
public void Parse(GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (Session.GetHabbo().Id != Group.CreatorId || !Group.IsMember(UserId)) { return; } Habbo Habbo = ButterflyEnvironment.GetHabboById(UserId); if (Habbo == null) { return; } Group.TakeAdmin(UserId); Room Room = null; if (ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(UserId); if (User != null) { if (User.Statusses.ContainsKey("flatctrl 3")) { User.RemoveStatus("flatctrl 3"); } User.UpdateNeeded = true; if (User.GetClient() != null) { User.GetClient().SendPacket(new YouAreControllerComposer(0)); } } } Session.SendPacket(new GroupMemberUpdatedComposer(GroupId, Habbo, 2)); }
public void Parse(GameClient session, ClientPacket packet) { if (!session.Habbo.InRoom) { return; } if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.Habbo.CurrentRoomId, out Room instance)) { return; } if (!instance.CheckRights(session, true)) { return; } foreach (int userId in new List <int>(instance.UsersWithRights)) { RoomUser user = instance.GetRoomUserManager().GetRoomUserByHabbo(userId); if (user != null && !user.IsBot) { user.RemoveStatus("flatctrl 1"); user.UpdateNeeded = true; user.GetClient().SendPacket(new YouAreControllerComposer(0)); } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `room_rights` WHERE `user_id` = @uid AND `room_id` = @rid LIMIT 1"); dbClient.AddParameter("uid", userId); dbClient.AddParameter("rid", instance.Id); dbClient.RunQuery(); } session.SendPacket(new FlatControllerRemovedComposer(instance, userId)); session.SendPacket(new RoomRightsListComposer(instance)); session.SendPacket(new UserUpdateComposer(instance.GetRoomUserManager().GetUserList().ToList())); } if (instance.UsersWithRights.Count > 0) { instance.UsersWithRights.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 (session.Habbo.Id != group.CreatorId || !group.IsMember(userId)) { return; } Habbo habbo = PlusEnvironment.GetHabboById(userId); if (habbo == null) { session.SendNotification("Oops, an error occurred whilst finding this user."); return; } group.TakeAdmin(userId); if (PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(group.RoomId, out Room room)) { RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(userId); if (user != null) { if (user.Statusses.ContainsKey("flatctrl 3")) { user.RemoveStatus("flatctrl 3"); } user.UpdateNeeded = true; if (user.GetClient() != null) { user.GetClient().SendPacket(new YouAreControllerComposer(0)); } } } session.SendPacket(new GroupMemberUpdatedComposer(groupId, habbo, 2)); }
public void Handle(GameClient Session, ClientMessage Event) { Room @class = Essential.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (@class != null && @class.CheckRights(Session, true)) { StringBuilder stringBuilder = new StringBuilder(); int num = Event.PopWiredInt32(); for (int i = 0; i < num; i++) { if (i > 0) { stringBuilder.Append(" OR "); } uint num2 = Event.PopWiredUInt(); @class.UsersWithRights.Remove(num2); stringBuilder.Append(string.Concat(new object[] { "room_id = '", @class.Id, "' AND user_id = '", num2, "'" })); RoomUser class2 = @class.GetRoomUserByHabbo(num2); if (class2 != null && !class2.IsBot) { ServerMessage Rights = new ServerMessage(Outgoing.QuitRights); // Updated class2.GetClient().SendMessage(Rights); class2.RemoveStatus("flatctrl"); class2.UpdateNeeded = true; } ServerMessage Message = new ServerMessage(Outgoing.RemovePowers); // Updated Message.AppendUInt(@class.Id); Message.AppendUInt(num2); Session.SendMessage(Message); } using (DatabaseClient class3 = Essential.GetDatabase().GetClient()) { class3.ExecuteQuery("DELETE FROM room_rights WHERE " + stringBuilder.ToString()); } } }
public void Parse(GameClient Session, ClientPacket Packet) { Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (room == null) { return; } RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id); if (roomUserByHabbo == null) { return; } roomUserByHabbo.Unidle(); int num = Packet.PopInt(); if (roomUserByHabbo._statusses.ContainsKey("sign")) { roomUserByHabbo.RemoveStatus("sign"); } roomUserByHabbo.SetStatus("sign", Convert.ToString(num)); roomUserByHabbo.UpdateNeeded = true; }
private void FreeTimeCycle(RoomUser Bot) { if (!this.IsAllowZone(Bot) || this.Health != this.Config.Health) { this.ResetBot = true; this.ResetBotTimer = 60; if (this.Config.ResetPosition && !this.IsAllowZone(Bot)) { Bot.MoveTo(Bot.BotData.X, Bot.BotData.Y); } if (this.Health != this.Config.Health) { Bot.ApplyEffect(4, true); Bot.TimerResetEffect = 4; } return; } //Action bot if (this.ActionTimer > 0) { this.ActionTimer--; return; } if (Bot.IsWalking) { return; } this.ActionTimer = ButterflyEnvironment.GetRandomNumber(15, 30); if (this.ActionTimer >= 25 && !this.Config.ZombieMode) { if (this.ActionTimer == 30) { if (Bot.RotBody != Bot.BotData.Rot) { Bot.RotHead = Bot.BotData.Rot; Bot.RotBody = Bot.BotData.Rot; Bot.UpdateNeeded = true; } } else { if (Bot.IsSit) { Bot.RemoveStatus("sit"); Bot.IsSit = false; Bot.UpdateNeeded = true; } else { if (Bot.RotBody % 2 == 0) { if (Bot.IsPet) { Bot.SetStatus("sit", ""); } else { Bot.SetStatus("sit", "0.5"); } Bot.IsSit = true; Bot.UpdateNeeded = true; } } } } else { if (this.Config.ZoneDistance > 0) { //Bouge le bot aléatoirement dans sa zone int LenghtX = ButterflyEnvironment.GetRandomNumber(0, this.Config.ZoneDistance); int LenghtY = ButterflyEnvironment.GetRandomNumber(0, this.Config.ZoneDistance); Bot.MoveTo(Bot.BotData.X + ((ButterflyEnvironment.GetRandomNumber(1, 2) == 2) ? -LenghtX : LenghtX), Bot.BotData.Y + ((ButterflyEnvironment.GetRandomNumber(1, 2) == 2) ? -LenghtY : LenghtY), true); } } }
public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { RoomUser User = Session.GetRoomUser(); if (User == null) { return; } if (User.Statusses.ContainsKey("lay") || User.isLying || User.RidingHorse || User.IsWalking) { return; } var Items = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y); bool HasChair = Items.ToList().Where(x => x != null && x.GetBaseItem().IsSeat).Count() > 0; if (User.ForceSit || User.ForceLay) { return; } if (HasChair) { return; } if (!User.Statusses.ContainsKey("sit")) { if ((User.RotBody % 2) == 0) { if (User == null) { return; } try { User.Statusses.Add("sit", "1.0"); User.Z -= 0.35; User.isSitting = true; User.UpdateNeeded = true; } catch { } } else { User.RotBody--; User.Statusses.Add("sit", "1.0"); User.Z -= 0.35; User.isSitting = true; User.UpdateNeeded = true; } } else { User.Z += 0.35; User.RemoveStatus("sit"); User.isSitting = false; User.UpdateNeeded = true; } }
public void Parse(GameClient session, ClientPacket packet) { int userId = packet.PopInt(); if (session == null || session.Habbo == null || !session.Habbo.InRoom) { return; } Room room = session.Habbo.CurrentRoom; if (room == null) { return; } RoomUser roomUser = room.GetRoomUserManager().GetRoomUserByHabbo(session.Habbo.Id); if (roomUser == null) { return; } RoomUser targetUser = room.GetRoomUserManager().GetRoomUserByVirtualId(userId); if (targetUser == null) { return; } if (session.Habbo.TradingLockExpiry > 0) { if (session.Habbo.TradingLockExpiry > PlusEnvironment.GetUnixTimestamp()) { session.SendNotification("You're currently banned from trading."); return; } session.Habbo.TradingLockExpiry = 0; session.SendNotification("Your trading ban has now expired."); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '0' WHERE `id` = '" + session.Habbo.Id + "' LIMIT 1"); } } if (!session.Habbo.GetPermissions().HasRight("room_trade_override")) { if (room.TradeSettings == 0) { session.SendPacket(new TradingErrorComposer(6, targetUser.GetUsername())); return; } if (room.TradeSettings == 1 && room.OwnerId != session.Habbo.Id) { session.SendPacket(new TradingErrorComposer(6, targetUser.GetUsername())); return; } } if (roomUser.IsTrading && roomUser.TradePartner != targetUser.UserId) { session.SendPacket(new TradingErrorComposer(7, targetUser.GetUsername())); return; } if (targetUser.IsTrading && targetUser.TradePartner != roomUser.UserId) { session.SendPacket(new TradingErrorComposer(8, targetUser.GetUsername())); return; } if (!targetUser.GetClient().Habbo.AllowTradingRequests) { session.SendPacket(new TradingErrorComposer(4, targetUser.GetUsername())); return; } if (targetUser.GetClient().Habbo.TradingLockExpiry > 0) { session.SendPacket(new TradingErrorComposer(4, targetUser.GetUsername())); return; } if (!room.GetTrading().StartTrade(roomUser, targetUser, out Trade trade)) { session.SendNotification("An error occured trying to start this trade"); return; } if (targetUser.HasStatus("trd")) { targetUser.RemoveStatus("trd"); } if (roomUser.HasStatus("trd")) { roomUser.RemoveStatus("trd"); } targetUser.SetStatus("trd"); targetUser.UpdateNeeded = true; roomUser.SetStatus("trd"); roomUser.UpdateNeeded = true; trade.SendPacket(new TradingStartComposer(roomUser.UserId, targetUser.UserId)); }
/// <summary> /// Sends the user to desired chair in the room /// </summary> /// <param name="Client"></param> public static void SpawnChairs(GameClient Client, string ChairName, RoomUser Bot = null) { try { RoomUser RoomUser; if (Client != null) { if (Client.GetHabbo().CurrentRoomId != Convert.ToInt32(RoleplayData.GetData("court", "roomid"))) { Client.GetHabbo().Look = Client.GetRoleplay().OriginalOutfit; Client.GetHabbo().Motto = Client.GetRoleplay().Class; Client.GetHabbo().Poof(false); } } if (Bot != null) { RoomUser = Bot; } else { RoomUser = Client.GetRoomUser(); } List <Item> Chairs = new List <Item>(); if (RoomUser == null) { return; } if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit")) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } RoomUser.isSitting = false; RoomUser.UpdateNeeded = true; } if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay")) { if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.isLying = false; RoomUser.UpdateNeeded = true; } RoomUser.CanWalk = false; RoomUser.ClearMovement(true); lock (RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { foreach (Item item in RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { if (item.GetBaseItem().ItemName == ChairName) { if (!Chairs.Contains(item)) { Chairs.Add(item); } } } var Chairs2 = new List <Item>(); foreach (var chair in Chairs) { if (!chair.GetRoom().GetGameMap().SquareHasUsers(chair.GetX, chair.GetY)) { if (!Chairs2.Contains(chair)) { Chairs2.Add(chair); } } } Item LandItem = null; Random Random = new Random(); if (Chairs2.Count >= 1) { if (Chairs2.Count == 1) { LandItem = Chairs2[0]; } else { LandItem = Chairs2[Random.Next(0, Chairs2.Count)]; } } else if (Chairs2.Count >= 1) { if (Chairs.Count == 1) { LandItem = Chairs[0]; } else { LandItem = Chairs[Random.Next(0, Chairs.Count)]; } } if (LandItem != null) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.Statusses.Add("sit", Utilities.TextHandling.GetString(LandItem.GetBaseItem().Height)); Point OldCoord = new Point(RoomUser.Coordinate.X, RoomUser.Coordinate.Y); Point NewCoord = new Point(LandItem.GetX, LandItem.GetY); var Room = GenerateRoom(RoomUser.RoomId); if (Room != null) { Room.GetGameMap().UpdateUserMovement(OldCoord, NewCoord, RoomUser); } RoomUser.X = LandItem.GetX; RoomUser.Y = LandItem.GetY; RoomUser.Z = LandItem.GetZ; RoomUser.RotHead = LandItem.Rotation; RoomUser.RotBody = LandItem.Rotation; } RoomUser.CanWalk = true; RoomUser.UpdateNeeded = true; } } catch { } }
/// <summary> /// Determines whether [is valid step] [the specified user]. /// </summary> /// <param name="RoomUser">The user.</param> /// <param name="StartPosition">From.</param> /// <param name="NextPosition">To.</param> /// <param name="endOfPath">if set to <c>true</c> [end of path].</param> /// <param name="HasOverride">if set to <c>true</c> [override].</param> /// <returns><c>true</c> if [is valid step] [the specified user]; otherwise, <c>false</c>.</returns> internal bool IsValidStep(RoomUser RoomUser, Vector2D StartPosition, Vector2D NextPosition, bool endOfPath, bool HasOverride) { if (RoomUser == null) return false; Point NextPositionSquare = new Point(NextPosition.X, NextPosition.Y); RoomUser RoomUsersInTile = UserRoom.GetRoomUserManager().GetUserForSquare(NextPosition.X, NextPosition.Y); List<RoomItem> RoomItemsInTile = GetCoordinatedItems(NextPositionSquare); if (RoomItemsInTile.Any(item => item.Height > (RoomUser.Z + 1.5))) return false; if ((!RoomUser.IsBot) && (!RoomUser.IsPet) && (RoomUser.GetClient() != null)) { if (GuildGates.ContainsKey(NextPositionSquare)) { int GroupId = GuildGates[NextPositionSquare].GroupId; if (GroupId > 0 && RoomUser.GetClient().GetHabbo().UserGroups.Any(member => ((member != null) && (member.GroupId == GroupId)))) return true; } } if (!ValidTile(NextPosition.X, NextPosition.Y)) return false; if (HasOverride) return true; if (!CanWalk(NextPosition.X, NextPosition.Y, HasOverride)) return false; if ((RoomUsersInTile != null) && (!RoomUsersInTile.IsWalking) && (endOfPath)) return false; if (((GameMap[NextPosition.X, NextPosition.Y] == 3) && (!endOfPath)) || (GameMap[NextPosition.X, NextPosition.Y] == 0) || ((GameMap[NextPosition.X, NextPosition.Y] == 2) && (!endOfPath))) return false; if ((RoomUsersInTile != null) && (endOfPath) && (!UserRoom.RoomData.AllowWalkThrough)) { RoomUser.HasPathBlocked = true; RoomUser.Path.Clear(); RoomUser.IsWalking = false; RoomUser.RemoveStatus("mv"); UserRoom.GetRoomUserManager().UpdateUserStatus(RoomUser, false); if (!RoomUser.RidingHorse || RoomUser.IsPet || RoomUser.IsBot) return true; RoomUser roomUserByVirtualId = UserRoom.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(RoomUser.HorseId)); ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer")); message.AppendInteger(1); if (roomUserByVirtualId != null) { roomUserByVirtualId.IsWalking = false; roomUserByVirtualId.ClearMovement(); roomUserByVirtualId.RemoveStatus("mv"); roomUserByVirtualId.SerializeStatus(message, ""); } RoomUser.GetClient().GetHabbo().CurrentRoom.SendMessage(message); } else if (RoomItemsInTile.All(item => item.GetBaseItem().Walkable)) return true; else if ((RoomUsersInTile != null) && (!UserRoom.RoomData.AllowWalkThrough) && (!RoomUsersInTile.IsWalking)) return false; return ((SqAbsoluteHeight(NextPosition.X, NextPosition.Y) - SqAbsoluteHeight(StartPosition.X, StartPosition.Y)) <= 1.5); }
/// <summary> /// Determines whether [is valid step] [the specified user]. /// </summary> /// <param name="user">The user.</param> /// <param name="from">From.</param> /// <param name="to">To.</param> /// <param name="endOfPath">if set to <c>true</c> [end of path].</param> /// <param name="Override">if set to <c>true</c> [override].</param> /// <returns><c>true</c> if [is valid step] [the specified user]; otherwise, <c>false</c>.</returns> internal bool IsValidStep(RoomUser user, Vector2D @from, Vector2D to, bool endOfPath, bool Override) { if (user == null) return false; Point square = new Point(to.X, to.Y); if (user.IsBot == false && user.GetClient() != null) { if (GuildGates.ContainsKey(square)) { uint guildId = GuildGates[square].GroupId; if (guildId > 0 && user.GetClient() .GetHabbo() .UserGroups.Any(member => member != null && member.GroupId == guildId)) return true; } } if (!ValidTile(to.X, to.Y)) return false; if (Override) return true; if (GameMap[to.X, to.Y] == 3 && !endOfPath || GameMap[to.X, to.Y] == 0 || GameMap[to.X, to.Y] == 2 && !endOfPath) return false; RoomUser userForSquare = _room.GetRoomUserManager().GetUserForSquare(to.X, to.Y); if (userForSquare != null && endOfPath && !_room.RoomData.AllowWalkThrough) { user.HasPathBlocked = true; user.Path.Clear(); user.IsWalking = false; user.RemoveStatus("mv"); _room.GetRoomUserManager().UpdateUserStatus(user, false); if (!user.RidingHorse || user.IsPet || user.IsBot) return true; RoomUser roomUserByVirtualId = _room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(user.HorseId)); ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer")); message.AppendInteger(1); if (roomUserByVirtualId != null) { roomUserByVirtualId.IsWalking = false; roomUserByVirtualId.ClearMovement(); roomUserByVirtualId.RemoveStatus("mv"); roomUserByVirtualId.SerializeStatus(message, ""); } user.GetClient().GetHabbo().CurrentRoom.SendMessage(message); } else if (userForSquare != null && !_room.RoomData.AllowWalkThrough && !userForSquare.IsWalking) return false; return SqAbsoluteHeight(to.X, to.Y) - SqAbsoluteHeight(@from.X, @from.Y) <= 1.5; }
private void HandleSetMovement(SquarePoint Point, RoomUser User, ref bool updated, bool setSquareMap) { int nextX = Point.X; int nextY = Point.Y; User.RemoveStatus("mv"); //double nextZ = room.GetGameMap().SqAbsoluteHeight(nextX, nextY); double nextZ = room.GetGameMap().GetNewZForUser(nextX, nextY, User.Z); //if (room.GetGameMap().SquareOccupied(nextX, nextY, nextZ)) // return; if (User.UserIsRidingAHorse()) nextZ += 1; User.Statusses.Remove("lay"); User.Statusses.Remove("sit"); if (!User.isFlying) User.AddStatus("mv", nextX + "," + nextY + "," + TextHandling.GetString(nextZ)); else User.AddStatus("mv", nextX + "," + nextY + "," + TextHandling.GetString(nextZ + 4 + (0.5 * Math.Sin(0.7 * User.flyk)))); int newRot = Rotation.Calculate(User.X, User.Y, nextX, nextY, User.moonwalkEnabled); User.RotBody = newRot; User.RotHead = newRot; User.SetStep = true; User.SetX = nextX; User.SetY = nextY; User.SetZ = nextZ; UpdateUserEffect(User, User.SetX, User.SetY); updated = true; User.UpdateNeeded = true; if (setSquareMap) { room.GetGameMap().GameMap[User.X, User.Y] = User.SqState; // REstore the old one User.SqState = room.GetGameMap().GameMap[User.SetX, User.SetY];//Backup the new one if (!room.AllowWalkthrough) room.GetGameMap().GameMap[nextX, nextY] = 0; } }
public void Parse(GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (UserId == Session.GetHabbo().Id) { if (Group.IsMember(UserId)) { Group.DeleteMember(UserId); } Session.GetHabbo().MyGroups.Remove(Group.Id); if (Group.IsAdmin(UserId)) { if (Group.IsAdmin(UserId)) { Group.TakeAdmin(UserId); } Room Room; if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(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 = ButterflyEnvironment.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().FavouriteGroupId == GroupId) { Session.GetHabbo().FavouriteGroupId = 0; using (IQueryAdapter dbClient = ButterflyEnvironment.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) { Room Room; if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(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().GetRoomUserByHabboId(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; } else { 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(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.groupremoveuser.error", Session.Langue)); return; } if (Group.IsAdmin(UserId)) { Group.TakeAdmin(UserId); } if (Group.IsMember(UserId)) { Group.DeleteMember(UserId); } Habbo Habbo = ButterflyEnvironment.GetHabboById(UserId); Habbo.MyGroups.Remove(Group.Id); int StartIndex = (1 - 1) * 14 + 14; List <Habbo> Members = new List <Habbo>(); List <int> MemberIds = Group.GetMembers.Skip(StartIndex).Take(14).ToList(); foreach (int Id in MemberIds.ToList()) { Habbo GroupMember = ButterflyEnvironment.GetHabboById(Id); if (GroupMember == null) { continue; } if (!Members.Contains(GroupMember)) { Members.Add(GroupMember); } } int FinishIndex = 14 < Members.Count ? 14 : Members.Count; int MembersCount = Group.GetMembers.Count; Session.SendPacket(new GroupMembersComposer(Group, Members.Take(FinishIndex).ToList(), MembersCount, 1, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), 0, "")); } } }
internal bool IsValidStep(RoomUser User, Vector2D From, Vector2D To, bool EndOfPath, bool Override) { if (!this.ValidTile(To.X, To.Y)) return false; if (Override) return true; if ((int)this.mGameMap[To.X, To.Y] == 3 && !EndOfPath || (int)this.mGameMap[To.X, To.Y] == 0 || (int)this.mGameMap[To.X, To.Y] == 2 && !EndOfPath || this.SqAbsoluteHeight(To.X, To.Y) - this.SqAbsoluteHeight(From.X, From.Y) > 1.5) return false; RoomUser userForSquare = this.room.GetRoomUserManager().GetUserForSquare(To.X, To.Y); if (userForSquare != null && EndOfPath && this.room.AllowWalkthrough == 0) { User.HasPathBlocked = true; User.Path.Clear(); User.IsWalking = false; User.RemoveStatus("mv"); this.room.GetRoomUserManager().UpdateUserStatus(User, false); if (User.RidingHorse && !User.IsPet && !User.IsBot) { RoomUser roomUserByVirtualId = this.room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(User.HorseID)); roomUserByVirtualId.IsWalking = false; roomUserByVirtualId.RemoveStatus("mv"); ServerMessage Message = new ServerMessage(Outgoing.UpdateUserStatusMessageComposer); Message.AppendInt32(1); roomUserByVirtualId.SerializeStatus(Message, ""); User.GetClient().GetHabbo().CurrentRoom.SendMessage(Message); } } else if (userForSquare != null && this.room.AllowWalkthrough == 0 && !userForSquare.IsWalking) return false; return true; }
public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { RoomUser User = Session.GetRoomUser(); if (User == null) { return; } if (!Room.GetGameMap().ValidTile(User.X + 2, User.Y + 2) && !Room.GetGameMap().ValidTile(User.X + 1, User.Y + 1)) { Session.SendWhisper("Opa, não pode deitar aqui - tente em outro lugar!", 1); return; } if (User.ForceSit || User.ForceLay) { return; } if (User.Statusses.ContainsKey("sit") || User.isSitting || User.RidingHorse || User.IsWalking) { return; } var Items = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y); bool HasBed = Items.ToList().Where(x => x != null && x.GetBaseItem().IsBed()).Count() > 0; if (HasBed) { return; } if (Session.GetHabbo().Effects().CurrentEffect > 0) { Session.GetHabbo().Effects().ApplyEffect(0); } if (!User.Statusses.ContainsKey("lay")) { if ((User.RotBody % 2) == 0) { if (User == null) { return; } try { User.Statusses.Add("lay", "1.0 null"); User.Z -= 0.35; User.isLying = true; User.UpdateNeeded = true; } catch { } } else { User.RotBody--; User.Statusses.Add("lay", "1.0 null"); User.Z -= 0.35; User.isLying = true; User.UpdateNeeded = true; } } else { User.Z += 0.35; User.RemoveStatus("lay"); User.isLying = false; User.UpdateNeeded = true; } }
private void UpdateUserEffect(RoomUser User, int x, int y) { if (User.IsBot) return; byte NewCurrentUserItemEffect = room.GetGameMap().EffectMap[x, y]; if (NewCurrentUserItemEffect > 0) { ItemEffectType Type = ByteToItemEffectEnum.Parse(NewCurrentUserItemEffect); if (Type != User.CurrentItemEffect) { switch (Type) { case ItemEffectType.Iceskates: { if (User.GetClient().GetHabbo().Gender == "M") User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(38); else User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(39); User.CurrentItemEffect = ItemEffectType.Iceskates; break; } case ItemEffectType.Normalskates: { if (User.GetClient().GetHabbo().Gender == "M") { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(55); } else { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(56); } //56=girls //55= User.CurrentItemEffect = Type; break; } case ItemEffectType.Swim: { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(29); User.CurrentItemEffect = Type; break; } case ItemEffectType.SwimLow: { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(30); User.CurrentItemEffect = Type; break; } case ItemEffectType.SwimHalloween: { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(37); User.CurrentItemEffect = Type; break; } case ItemEffectType.None: { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(-1); User.CurrentItemEffect = Type; break; } case ItemEffectType.PublicPool: { User.AddStatus("swim", string.Empty); User.CurrentItemEffect = Type; break; } } } } else if (User.CurrentItemEffect != ItemEffectType.None && NewCurrentUserItemEffect == 0) { User.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(-1); User.CurrentItemEffect = ItemEffectType.None; User.RemoveStatus("swim"); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) { return; } if (!Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null || !User.CanWalk) { return; } if (!User.IsBot) { User.GetClient().GetRoleplay().WalkDirection = HabboHotel.Roleplay.Web.Incoming.Interactions.WalkDirections.None; } int MoveX = Packet.PopInt(); int MoveY = Packet.PopInt(); List <Item> BedItems = Room.GetRoomItemHandler().GetFloor.Where(x => x.GetBaseItem().IsBed()).ToList(); if (BedItems.Count > 0) { bool HasBed = BedItems.Where(x => x.GetAffectedTiles.Contains(new Point(MoveX, MoveY))).ToList().Count > 0; if (HasBed) { var Item = BedItems.Where(x => x.GetAffectedTiles.Contains(new Point(MoveX, MoveY))).FirstOrDefault(); Point Square; if (Item.GetBedTiles(new Point(MoveX, MoveY), out Square).Count > 0) { MoveX = Square.X; MoveY = Square.Y; } } } if (User.RidingHorse) { RoomUser Horse = Room.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID); if (Horse != null) { Horse.MoveTo(MoveX, MoveY); } } if (User.isLying) { User.Z += 0.35; User.RemoveStatus("lay"); User.isLying = false; User.UpdateNeeded = true; } if (User.isSitting) { User.Z += 0.35; User.RemoveStatus("sit"); User.isSitting = false; User.UpdateNeeded = true; } User.MoveTo(MoveX, MoveY); }
public void Execute(GameClient Session, Rooms.Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Opa, você esqueceu de escolher um usuário-alvo!"); return; } GameClient TargetSession = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]); RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1]); if (User == null) { return; } if (User == null) { return; } if (User.ForceSit) { return; } if (User.Statusses.ContainsKey("sit") || User.isSitting || User.RidingHorse || User.IsWalking) { return; } var Items = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y); bool HasBed = Items.ToList().Where(x => x != null && x.GetBaseItem().IsBed()).Count() > 0; if (HasBed || TargetSession.GetHabbo().VIPRank > 2) { return; } if (TargetSession.GetHabbo().Effects().CurrentEffect > 0) { TargetSession.GetHabbo().Effects().ApplyEffect(0); } if (!User.Statusses.ContainsKey("lay")) { if ((User.RotBody % 2) == 0) { if (User == null) { return; } try { User.Statusses.Add("lay", "1.0 null"); User.Z -= 0.35; User.isLying = true; User.UpdateNeeded = true; } catch { } } else { User.RotBody--; User.Statusses.Add("lay", "1.0 null"); User.Z -= 0.35; User.isLying = true; User.UpdateNeeded = true; } User.Frozen = true; User.ClearMovement(true); User.ForceLay = true; PlusEnvironment.GetGame().GetChatManager().GetCommands().Parse(User.GetClient(), ":unequip"); Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + " forçando ele a sentar*", 23); } else { User.Z += 0.35; User.RemoveStatus("lay"); User.isLying = false; User.UpdateNeeded = true; User.Frozen = false; User.ClearMovement(true); User.ForceLay = false; Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + " fazendo ele se levantar*", 23); } }
public void OnCycle(RoomUser Bot, Room Room) { if (this.SlowTimer > 0 || this.Config.ZombieMode) { if (this.SlowTimer > 0) { this.SlowTimer--; } if (!Bot.breakwalk) { Bot.breakwalk = true; } } else { if (Bot.breakwalk) { Bot.breakwalk = false; } } this.ReloadGunCycle(Bot); if (this.AggroVirtuelId > 0) { this.AggroCycle(Bot, Room); } if (this.Config.AggroDistance > 0 && this.AggroVirtuelId == 0 && !this.Dead) { this.AggroSearch(Bot, Room); } if (!this.ResetBot && !this.Dead && this.AggroVirtuelId == 0 && !Bot.Freeze) { this.FreeTimeCycle(Bot); } if (this.ResetBot && !this.Dead && this.AggroVirtuelId == 0) { this.CheckResetBot(Bot, Room); } if (this.Dead) { this.DeadTimer--; if (this.DeadTimer <= 0) { this.Dead = false; this.Health = this.Config.Health; Bot.RemoveStatus("lay"); Bot.Freeze = false; Bot.FreezeEndCounter = 0; Bot.IsLay = false; Bot.UpdateNeeded = true; } } }
/// <summary> /// Sends the user to desired bed in the room /// </summary> /// <param name="Client"></param> public static void SpawnBeds(GameClient Client, string BedName, RoomUser Bot = null) { RoomUser RoomUser; if (Bot != null) { RoomUser = Bot; } else { RoomUser = Client.GetRoomUser(); } List <Item> Beds = new List <Item>(); if (RoomUser == null) { return; } if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit")) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } RoomUser.isSitting = false; RoomUser.UpdateNeeded = true; } if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay")) { if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.isLying = false; RoomUser.UpdateNeeded = true; } if (RoomUser != null) { RoomUser.ClearMovement(true); } lock (RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { foreach (Item item in RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { if (item.GetBaseItem().ItemName == BedName) { if (!Beds.Contains(item)) { Beds.Add(item); } } } var Beds2 = new List <Item>(); foreach (var bed in Beds) { if (!bed.GetRoom().GetGameMap().SquareHasUsers(bed.GetX, bed.GetY)) { if (!Beds2.Contains(bed)) { Beds2.Add(bed); } } } Item LandItem = null; Random Random = new Random(); if (Beds2.Count >= 1) { if (Beds2.Count == 1) { LandItem = Beds2[0]; } else { LandItem = Beds2[Random.Next(0, Beds2.Count)]; } } else if (Beds.Count >= 1) { if (Beds.Count == 1) { LandItem = Beds[0]; } else { LandItem = Beds[Random.Next(0, Beds.Count)]; } } if (LandItem != null) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.Statusses.Add("lay", Utilities.TextHandling.GetString(LandItem.GetBaseItem().Height) + " null"); Point OldCoord = new Point(RoomUser.X, RoomUser.Y); Point NewCoord = new Point(LandItem.GetX, LandItem.GetY); RoomUser.X = LandItem.GetX; RoomUser.Y = LandItem.GetY; RoomUser.Z = LandItem.GetZ; RoomUser.RotHead = LandItem.Rotation; RoomUser.RotBody = LandItem.Rotation; RoomUser.UpdateNeeded = true; RoomUser.GetRoom().GetGameMap().UpdateUserMovement(OldCoord, NewCoord, RoomUser); } } }
/// <summary> /// Determines whether [is valid step2] [the specified user]. /// </summary> /// <param name="user">The user.</param> /// <param name="from">From.</param> /// <param name="to">To.</param> /// <param name="endOfPath">if set to <c>true</c> [end of path].</param> /// <param name="Override">if set to <c>true</c> [override].</param> /// <returns><c>true</c> if [is valid step2] [the specified user]; otherwise, <c>false</c>.</returns> internal bool IsValidStep2(RoomUser user, Point @from, Point to, bool endOfPath, bool Override) { if (user == null) return false; if (GuildGates.ContainsKey(to)) { RoomItem roomItem = GuildGates[to]; uint guildId = roomItem.GroupId; if (guildId > 0) if (user.GetClient().GetHabbo() != null && user.GetClient().GetHabbo().MyGroups != null && user.GetClient().GetHabbo().MyGroups.Contains(guildId)) { roomItem.ExtraData = "1"; roomItem.UpdateState(); return true; } } if (!ValidTile2(to.X, to.Y)) return false; if (Override) return true; if (GameMap[to.X, to.Y] == 3 && !endOfPath || GameMap[to.X, to.Y] == 0 || GameMap[to.X, to.Y] == 2 && !endOfPath || SqAbsoluteHeight(to.X, to.Y) - SqAbsoluteHeight(@from.X, @from.Y) > 1.5) return false; RoomUser userForSquare = _room.GetRoomUserManager().GetUserForSquare(to.X, to.Y); if (userForSquare != null && endOfPath && !_room.RoomData.AllowWalkThrough) { user.HasPathBlocked = true; user.Path.Clear(); user.IsWalking = false; user.RemoveStatus("mv"); _room.GetRoomUserManager().UpdateUserStatus(user, false); if (user.RidingHorse && !user.IsPet && !user.IsBot) { RoomUser roomUserByVirtualId = _room.GetRoomUserManager().GetRoomUserByVirtualId(Convert.ToInt32(user.HorseId)); roomUserByVirtualId.IsWalking = false; roomUserByVirtualId.RemoveStatus("mv"); ServerMessage message = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserStatusMessageComposer")); message.AppendInteger(1); roomUserByVirtualId.SerializeStatus(message, ""); user.GetClient().GetHabbo().CurrentRoom.SendMessage(message); } } else if (userForSquare != null && !_room.RoomData.AllowWalkThrough && !userForSquare.IsWalking) return false; user.HasPathBlocked = false; return true; }
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.Habbo.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.Habbo.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.Habbo.GetStats().FavouriteGroupId == groupId) { session.Habbo.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.Habbo.Id); if (user != null) { user.RemoveStatus("flatctrl 1"); user.UpdateNeeded = true; if (user.GetClient() != null) { user.GetClient().SendPacket(new YouAreControllerComposer(0)); } } } if (session.Habbo.InRoom && session.Habbo.CurrentRoom != null) { RoomUser user = session.Habbo.CurrentRoom.GetRoomUserManager() .GetRoomUserByHabbo(session.Habbo.Id); if (user != null) { session.Habbo.CurrentRoom .SendPacket(new UpdateFavouriteGroupComposer(group, user.VirtualId)); } session.Habbo.CurrentRoom .SendPacket(new RefreshFavouriteGroupComposer(session.Habbo.Id)); } else { session.SendPacket(new RefreshFavouriteGroupComposer(session.Habbo.Id)); } } return; } if (group.CreatorId == session.Habbo.Id || group.IsAdmin(session.Habbo.Id)) { if (!group.IsMember(userId)) { return; } if (group.IsAdmin(userId) && group.CreatorId != session.Habbo.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.Habbo.Id || group.IsAdmin(session.Habbo.Id)), 0, "")); } }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session.GetHabbo() == null) { return; } Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (room == null || !room.CheckRights(Session, true)) { return; } StringBuilder DeleteParams = new StringBuilder(); int Amount = Packet.PopInt(); for (int index = 0; index < Amount; ++index) { if (index > 0) { DeleteParams.Append(" OR "); } int UserId = Packet.PopInt(); if (room.UsersWithRights.Contains(UserId)) { room.UsersWithRights.Remove(UserId); } DeleteParams.Append("room_id = '" + room.Id + "' AND user_id = '" + UserId + "'"); RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(UserId); if (roomUserByHabbo != null && !roomUserByHabbo.IsBot) { roomUserByHabbo.GetClient().SendPacket(new YouAreControllerComposer(0)); roomUserByHabbo.RemoveStatus("flatctrl 1"); roomUserByHabbo.SetStatus("flatctrl 0", ""); roomUserByHabbo.UpdateNeeded = true; } ServerPacket Response2 = new ServerPacket(ServerPacketHeader.FlatControllerRemovedMessageComposer); Response2.WriteInteger(room.Id); Response2.WriteInteger(UserId); Session.SendPacket(Response2); if (room.UsersWithRights.Count <= 0) { ServerPacket Response3 = new ServerPacket(ServerPacketHeader.RoomRightsListMessageComposer); Response3.WriteInteger(room.RoomData.Id); Response3.WriteInteger(0); Session.SendPacket(Response3); } else { ServerPacket Response = new ServerPacket(ServerPacketHeader.RoomRightsListMessageComposer); Response.WriteInteger(room.RoomData.Id); Response.WriteInteger(room.UsersWithRights.Count); foreach (int UserId2 in room.UsersWithRights) { Habbo habboForId = ButterflyEnvironment.GetHabboById(UserId2); Response.WriteInteger(UserId2); Response.WriteString((habboForId == null) ? "Undefined (error)" : habboForId.Username); } Session.SendPacket(Response); } } using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("DELETE FROM room_rights WHERE " + (DeleteParams).ToString()); }
public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Opa, você esqueceu de escolher um usuário!"); return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1]); if (User == null) { return; } if (User.Statusses.ContainsKey("lay") || User.isLying || User.RidingHorse || User.IsWalking) { return; } var Items = Room.GetGameMap().GetAllRoomItemForSquare(User.X, User.Y); bool HasChair = Items.ToList().Where(x => x != null && x.GetBaseItem().IsSeat).Count() > 0; if (HasChair || User.GetClient().GetHabbo().VIPRank > 2) { return; } if (!User.Statusses.ContainsKey("sit")) { if ((User.RotBody % 2) == 0) { if (User == null) { return; } try { User.Statusses.Add("sit", "1.0"); User.Z -= 0.35; User.isSitting = true; User.UpdateNeeded = true; } catch { } } else { User.RotBody--; User.Statusses.Add("sit", "1.0"); User.Z -= 0.35; User.isSitting = true; User.UpdateNeeded = true; } User.Frozen = true; User.ClearMovement(true); User.ForceSit = true; PlusEnvironment.GetGame().GetChatManager().GetCommands().Parse(User.GetClient(), ":unequip"); Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + "', causando medo nele fazendo com que eles se sente*", 23); } else if (User.isSitting == true) { User.Z += 0.35; User.RemoveStatus("sit"); User.isSitting = false; User.UpdateNeeded = true; User.Frozen = false; User.ClearMovement(true); User.ForceSit = false; Session.Shout("*Olha para " + User.GetClient().GetHabbo().Username + "' fazendo com que ele se levante com medo*", 23); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!BiosEmuThiago.GetGame().GetGroupManager().TryGetGroup(GroupId, out 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); } Room Room; if (!BiosEmuThiago.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out 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().SendMessage(new YouAreControllerComposer(0)); } } } using (IQueryAdapter dbClient = BiosEmuThiago.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.SendMessage(new GroupInfoComposer(Group, Session)); if (Session.GetHabbo().GetStats().FavouriteGroupId == GroupId) { Session.GetHabbo().GetStats().FavouriteGroupId = 0; using (IQueryAdapter dbClient = BiosEmuThiago.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) { Room Room; if (!BiosEmuThiago.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out 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().SendMessage(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.SendMessage(new UpdateFavouriteGroupComposer(Session.GetHabbo().Id, Group, User.VirtualId)); } Session.GetHabbo().CurrentRoom.SendMessage(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id)); } else { Session.SendMessage(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id)); } } if (Group.HasChat) { var Client = BiosEmuThiago.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client != null) { Client.SendMessage(new FriendListUpdateComposer(Group, -1)); } } return; } else { 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("Sentimos muito, mas só os criadores do grupo podem tirar os ADM"); 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 = BiosEmuThiago.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.SendMessage(new GroupMembersComposer(Group, Members.Take(FinishIndex).ToList(), MembersCount, 1, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), 0, "")); if (Group.HasChat) { var Client = BiosEmuThiago.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client != null) { Client.SendMessage(new FriendListUpdateComposer(Group, -1)); } } } } }
private void CalculatePath(RoomUser User, ref bool updated) { Gamemap map = room.GetGameMap(); SquarePoint Point = DreamPathfinder.GetNextStep(User.X, User.Y, User.Z, User.GoalX, User.GoalY, map.GameMap, map.GetStackmap(), map.Model.SqFloorHeight, map.Model.MapSizeX, map.Model.MapSizeY, User.AllowOverride, map.DiagonalEnabled, map); if (Point.X == User.X && Point.Y == User.Y) //No path found, or reached goal (: { User.IsWalking = false; User.IsHorseWalking = false; User.OnStopWalk(); User.RemoveStatus("mv"); UpdateUserStatus(User, false); } else { HandleSetMovement(Point, User, ref updated, true); if (User.IsPet && User.PetGotUserRiding()) { RoomUser ridingPet = User.GetRoomUserRiding(); SetStepForUser(ridingPet); HandleSetMovement(Point, ridingPet, ref updated, false); UpdateUserEffect(ridingPet, ridingPet.X, ridingPet.Y); ridingPet.UpdateNeeded = true; FinishUserCycle(ridingPet); } } User.UpdateNeeded = true; }