/// <summary> /// Saves the message. /// </summary> /// <param name="dbClient">The database client.</param> /// <param name="toId">To identifier.</param> /// <param name="fromId">From identifier.</param> /// <param name="message">The message.</param> internal static void SaveMessage(IQueryAdapter dbClient, uint toId, uint fromId, string message) { dbClient.SetQuery( "INSERT INTO messenger_offline_messages (to_id, from_id, Message, timestamp) VALUES (@tid, @fid, @msg, UNIX_TIMESTAMP())"); dbClient.AddParameter("tid", toId); dbClient.AddParameter("fid", fromId); dbClient.AddParameter("msg", message); dbClient.RunQuery(); }
/// <summary> /// Executes the specified database client. /// </summary> /// <param name="dbClient">The database client.</param> internal void Execute(IQueryAdapter dbClient) { if (_queryCount == 0) return; _queries = _queries.Remove(_queries.Length - 1, 1); dbClient.SetQuery(_queries.ToString()); foreach (KeyValuePair<string, object> current in _parameters) dbClient.AddParameter(current.Key, current.Value); dbClient.RunQuery(); }
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("Seu parceiro deixou o quarto ou cancelou."); return; } else if (UserOne.GetClient() == null || UserTwo.GetClient() == null) { Item.InteractingUser = 0; Item.InteractingUser2 = 0; Session.SendNotification("Seu parceiro deixou o quarto ou cancelou."); return; } else if (UserOne == null) { UserTwo.CanWalk = true; UserTwo.GetClient().SendNotification("Seu parceiro deixou o quarto ou cancelou."); UserTwo.LLPartner = 0; Item.InteractingUser = 0; Item.InteractingUser2 = 0; return; } else if (UserTwo == null) { UserOne.CanWalk = true; UserOne.GetClient().SendNotification("Seu parceiro deixou o quarto ou cancelou."); 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 mob já foi usado."); UserTwo.LLPartner = 0; UserOne.CanWalk = true; UserOne.GetClient().SendNotification("Parece que este mob já foi usado."); 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 = CloudServer.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 Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Por favor, introduzca un nombre de usuario y una longitud válida en días (minuto 1 día, máximo 365 días)."); return; } Habbo Habbo = CloudServer.GetHabboByUsername(Params[1]); if (Habbo == null) { Session.SendWhisper("Se produjo un error mientras que la búsqueda de usuario en la base de datos."); return; } if (Convert.ToDouble(Params[2]) == 0) { using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '0' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1"); } if (Habbo.GetClient() != null) { Habbo.TradingLockExpiry = 0; Habbo.GetClient().SendNotification("Su prohibición comercial excepcional se ha eliminado."); } Session.SendWhisper("Usted ha eliminado con éxito el baneo de tradeo a: " + Habbo.Username + "."); return; } double Days; if (double.TryParse(Params[2], out Days)) { if (Days < 1) { Days = 1; } if (Days > 365) { Days = 365; } double Length = (CloudServer.GetUnixTimestamp() + (Days * 86400)); using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.runFastQuery("UPDATE `user_info` SET `trading_locked` = '" + Length + "', `trading_locks_count` = `trading_locks_count` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1"); } if (Habbo.GetClient() != null) { Habbo.TradingLockExpiry = Length; Habbo.GetClient().SendNotification("Se le ha prohibido el tradei por: " + Days + " día(s)!"); } Session.SendWhisper("Usted con éxito ha prohibido el tradeo de " + Habbo.Username + " por " + Days + " día(s)."); } else { Session.SendWhisper("Por favor, introduzca un número entero válido."); } }
public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Please enter the username of the user you wish to view."); return; } DataRow UserData = null; DataRow UserInfo = null; string Username = Params[1]; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `id`,`username`,`mail`,`rank`,`motto`,`credits`,`activity_points`,`vip_points`,`gotw_points`,`online`,`rank_vip` FROM users WHERE `username` = @Username LIMIT 1"); dbClient.AddParameter("Username", Username); UserData = dbClient.GetRow(); } if (UserData == null) { Session.SendNotification("Oops, there is no user in the database with that username (" + Username + ")!"); return; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + Convert.ToInt32(UserData["id"]) + "' LIMIT 1"); UserInfo = dbClient.GetRow(); if (UserInfo == null) { dbClient.RunQuery("INSERT INTO `user_info` (`user_id`) VALUES ('" + Convert.ToInt32(UserData["id"]) + "')"); dbClient.SetQuery("SELECT * FROM `user_info` WHERE `user_id` = '" + Convert.ToInt32(UserData["id"]) + "' LIMIT 1"); UserInfo = dbClient.GetRow(); } } GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Username); DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(UserInfo["trading_locked"])); StringBuilder HabboInfo = new StringBuilder(); HabboInfo.Append(Convert.ToString(UserData["username"]) + "'s account:\r\r"); HabboInfo.Append("Generic Info:\r"); HabboInfo.Append("ID: " + Convert.ToInt32(UserData["id"]) + "\r"); HabboInfo.Append("Rank: " + Convert.ToInt32(UserData["rank"]) + "\r"); HabboInfo.Append("VIP Rank: " + Convert.ToInt32(UserData["rank_vip"]) + "\r"); HabboInfo.Append("Email: " + Convert.ToString(UserData["mail"]) + "\r"); HabboInfo.Append("Online Status: " + (TargetClient != null ? "True" : "False") + "\r\r"); HabboInfo.Append("Currency Info:\r"); HabboInfo.Append("Credits: " + Convert.ToInt32(UserData["credits"]) + "\r"); HabboInfo.Append("Duckets: " + Convert.ToInt32(UserData["activity_points"]) + "\r"); HabboInfo.Append("Diamonds: " + Convert.ToInt32(UserData["vip_points"]) + "\r"); HabboInfo.Append("GOTW Points: " + Convert.ToInt32(UserData["gotw_points"]) + "\r\r"); HabboInfo.Append("Moderation Info:\r"); HabboInfo.Append("Bans: " + Convert.ToInt32(UserInfo["bans"]) + "\r"); HabboInfo.Append("CFHs Sent: " + Convert.ToInt32(UserInfo["cfhs"]) + "\r"); HabboInfo.Append("Abusive CFHs: " + Convert.ToInt32(UserInfo["cfhs_abusive"]) + "\r"); HabboInfo.Append("Trading Locked: " + (Convert.ToInt32(UserInfo["trading_locked"]) == 0 ? "No outstanding lock" : "Expiry: " + (origin.ToString("dd/MM/yyyy")) + "") + "\r"); HabboInfo.Append("Amount of trading locks: " + Convert.ToInt32(UserInfo["trading_locks_count"]) + "\r\r"); if (TargetClient != null) { HabboInfo.Append("Current Session:\r"); if (!TargetClient.GetHabbo().InRoom) { HabboInfo.Append("Currently not in a room.\r"); } else { HabboInfo.Append("Room: " + TargetClient.GetHabbo().CurrentRoom.Name + " (" + TargetClient.GetHabbo().CurrentRoom.RoomId + ")\r"); HabboInfo.Append("Room Owner: " + TargetClient.GetHabbo().CurrentRoom.OwnerName + "\r"); HabboInfo.Append("Current Visitors: " + TargetClient.GetHabbo().CurrentRoom.UserCount + "/" + TargetClient.GetHabbo().CurrentRoom.UsersMax); } } Session.SendNotification(HabboInfo.ToString()); }
public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Please enter the username of the user you'd like to IP ban & account ban."); return; } Habbo Habbo = PlusEnvironment.GetHabboByUsername(Params[1]); if (Habbo == null) { Session.SendWhisper("An error occoured whilst finding that user in the database."); return; } if (Habbo.GetPermissions().HasRight("mod_soft_ban") && !Session.GetHabbo().GetPermissions().HasRight("mod_ban_any")) { Session.SendWhisper("Oops, you cannot ban that user."); return; } Double Expire = 0; string Hours = Params[2]; if (String.IsNullOrEmpty(Hours) || Hours == "perm") { Expire = PlusEnvironment.GetUnixTimestamp() + 78892200; } else { Expire = (PlusEnvironment.GetUnixTimestamp() + (Convert.ToDouble(Hours) * 3600)); } string Reason = null; if (Params.Length >= 4) { Reason = CommandManager.MergeParams(Params, 3); } else { Reason = "No reason specified."; } string Username = Habbo.Username; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_info` SET `bans` = `bans` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1"); } PlusEnvironment.GetGame().GetModerationManager().BanUser(Session.GetHabbo().Username, ModerationBanType.Username, Habbo.Username, Reason, Expire); GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Username); if (TargetClient != null) { TargetClient.Disconnect(); } Session.SendWhisper("Success, you have account banned the user '" + Username + "' for " + Hours + " hour(s) with the reason '" + Reason + "'!"); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } string NewName = Packet.PopString(); string OldName = Session.GetHabbo().Username; if (NewName == OldName) { Session.GetHabbo().ChangeName(OldName); Session.SendMessage(new UpdateUsernameComposer(NewName)); return; } if (!CanChangeName(Session.GetHabbo())) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Ops, parece que você atualmente não pode alterar seu nome de usuário!"); return; } if (!Session.GetRoleplay().FreeNameChange) { if (Session.GetHabbo().Diamonds < 1) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não tem diamantes suficientes para uma mudança de nome!"); return; } } bool InUse = false; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT COUNT(0) FROM `users` WHERE `username` = @name LIMIT 1"); dbClient.AddParameter("name", NewName); InUse = dbClient.getInteger() == 1; } char[] Letters = NewName.ToLower().ToCharArray(); string AllowedCharacters = "abcdefghijklmnopqrstuvwxyz-"; foreach (char Chr in Letters) { if (!AllowedCharacters.Contains(Chr)) { return; } } List <string> BlacklistedWords = new List <string>(); using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM `cms_blacklisted_words`"); DataTable Table = dbClient.getTable(); if (Table != null) { foreach (DataRow Row in Table.Rows) { string Word = Row["word"].ToString(); if (Word.Length > 0 && Word.ToLower() != "") { if (!BlacklistedWords.Contains(Word.ToLower())) { BlacklistedWords.Add(Word.ToLower()); } } } } } if (NewName.ToLower().Contains("mod") || NewName.ToLower().Contains("adm") || NewName.ToLower().Contains("admin") || NewName.ToLower().Contains("m0d")) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não pode fazer deste seu nome! Por favor digite ':mudarnick' novamente!"); return; } else if (!NewName.Contains('-')) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não pode fazer deste seu nome! Por favor digite ':mudarnick' novamente!"); return; } else if (NewName.Split('-')[0].Length < 3 || NewName.Split('-')[1].Length < 1) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não pode fazer deste seu nome! Por favor digite ':mudarnick' novamente!"); return; } else if (NewName.Length > 15) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não pode fazer deste seu nome! Por favor digite ':mudarnick' novamente!"); return; } else if (NewName.Length < 3) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não pode fazer deste seu nome! Por favor digite ':mudarnick' novamente!"); return; } else if (InUse) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Você não pode fazer deste seu nome! Por favor digite ':mudarnick' novamente!"); return; } else { string FirstName = NewName.Split('-')[0].ToLower(); string SecondName = NewName.Split('-')[1].ToLower(); if (BlacklistedWords.Contains(FirstName) || BlacklistedWords.Contains(SecondName)) { if (BlacklistedWords.Contains(FirstName)) { Session.SendNotification("Desculpe, mas esse primeiro nome não é permitido"); } else { Session.SendNotification("Desculpe, mas esse segundo nome não é permitido!"); } Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); return; } if (!PlusEnvironment.GetGame().GetClientManager().UpdateClientUsername(Session, OldName, NewName)) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendNotification("Opa! Ocorreu um problema ao atualizar seu nome de usuário. Por favor digite ':mudarnick' novamente!"); return; } Session.GetHabbo().ChangingName = false; Room.GetRoomUserManager().RemoveUserFromRoom(Session, true, false); Session.GetHabbo().ChangeName(NewName); Session.GetHabbo().GetMessenger().OnStatusChanged(true); if (!Session.GetRoleplay().FreeNameChange) { Session.GetHabbo().Diamonds--; Session.SendMessage(new ActivityPointsComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Diamonds, Session.GetHabbo().EventPoints)); } Session.SendMessage(new UpdateUsernameComposer(NewName)); Room.SendMessage(new UserNameChangeComposer(Room.Id, User.VirtualId, NewName)); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `logs_client_namechange` (`user_id`,`new_name`,`old_name`,`timestamp`) VALUES ('" + Session.GetHabbo().Id + "', @name, '" + OldName + "', '" + PlusEnvironment.GetUnixTimestamp() + "')"); dbClient.AddParameter("name", NewName); dbClient.RunQuery(); } ICollection <RoomData> Rooms = Session.GetHabbo().UsersRooms; foreach (RoomData Data in Rooms) { if (Data == null) { continue; } Data.OwnerName = NewName; } foreach (Room UserRoom in PlusEnvironment.GetGame().GetRoomManager().GetRooms().ToList()) { if (UserRoom == null || UserRoom.RoomData.OwnerName != NewName) { continue; } UserRoom.OwnerName = NewName; UserRoom.RoomData.OwnerName = NewName; UserRoom.SendMessage(new RoomInfoUpdatedComposer(UserRoom.RoomId)); } HabboRoleplay.Misc.RoleplayManager.SendUser(Session, Room.Id, ""); } }
public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params) { int TotalValue = 0; try { DataTable Table = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `id` FROM `items` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND (`room_id`= '0' OR `room_id` = '')"); Table = dbClient.getTable(); } if (Table == null) { Session.SendWhisper("You currently have no items in your inventory!"); return; } foreach (DataRow Row in Table.Rows) { Item Item = Session.GetHabbo().GetInventoryComponent().GetItem(Convert.ToInt32(Row[0])); if (Item == null) { continue; } if (!Item.GetBaseItem().ItemName.StartsWith("CF_") && !Item.GetBaseItem().ItemName.StartsWith("CFC_")) { continue; } if (Item.RoomId > 0) { continue; } string[] Split = Item.GetBaseItem().ItemName.Split('_'); int Value = int.Parse(Split[1]); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `items` WHERE `id` = '" + Item.Id + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id); TotalValue += Value; if (Value > 0) { Session.GetHabbo().Credits += Value; Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); } } if (TotalValue > 0) { Session.SendNotification("All credits have successfully been converted!\r\r(Total value: " + TotalValue + " credits!"); } else { Session.SendNotification("It appears you don't have any exchangeable items!"); } } catch { Session.SendNotification("Oops, an error occoured whilst converting your credits!"); } }
public void SendInstantMessage(int ToId, string Message) { if (ToId == 0) { return; } if (GetClient() == null) { return; } if (GetClient().GetHabbo() == null) { return; } if (!FriendshipExists(ToId)) { GetClient().SendPacket(new InstantMessageErrorComposer(MessengerMessageErrors.YOUR_NOT_FRIENDS, ToId)); return; } if (GetClient().GetHabbo().MessengerSpamCount >= 12) { GetClient().GetHabbo().MessengerSpamTime = PlusEnvironment.GetUnixTimestamp() + 60; GetClient().GetHabbo().MessengerSpamCount = 0; GetClient().SendNotification("You cannot send a message, you have flooded the console.\n\nYou can send a message in 60 seconds."); return; } else if (GetClient().GetHabbo().MessengerSpamTime > PlusEnvironment.GetUnixTimestamp()) { double Time = GetClient().GetHabbo().MessengerSpamTime - PlusEnvironment.GetUnixTimestamp(); GetClient().SendNotification("You cannot send a message, you have flooded the console.\n\nYou can send a message in " + Time + " seconds."); return; } GetClient().GetHabbo().MessengerSpamCount++; GameClient Client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(ToId); if (Client == null || Client.GetHabbo() == null || Client.GetHabbo().GetMessenger() == null) { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `messenger_offline_messages` (`to_id`, `from_id`, `message`, `timestamp`) VALUES (@tid, @fid, @msg, UNIX_TIMESTAMP())"); dbClient.AddParameter("tid", ToId); dbClient.AddParameter("fid", GetClient().GetHabbo().Id); dbClient.AddParameter("msg", Message); dbClient.RunQuery(); } return; } if (!Client.GetHabbo().AllowConsoleMessages || Client.GetHabbo().GetIgnores().IgnoredUserIds().Contains(GetClient().GetHabbo().Id)) { GetClient().SendPacket(new InstantMessageErrorComposer(MessengerMessageErrors.FRIEND_BUSY, ToId)); return; } if (GetClient().GetHabbo().TimeMuted > 0) { GetClient().SendPacket(new InstantMessageErrorComposer(MessengerMessageErrors.YOUR_MUTED, ToId)); return; } if (Client.GetHabbo().TimeMuted > 0) { GetClient().SendPacket(new InstantMessageErrorComposer(MessengerMessageErrors.FRIEND_MUTED, ToId)); } if (String.IsNullOrEmpty(Message)) { return; } Client.SendPacket(new NewConsoleMessageComposer(_userId, Message)); LogPM(_userId, ToId, Message); }
public bool RequestBuddy(string UserQuery) { int userID; bool hasFQDisabled; GameClient client = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(UserQuery); if (client == null) { DataRow Row = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `id`,`block_newfriends` FROM `users` WHERE `username` = @query LIMIT 1"); dbClient.AddParameter("query", UserQuery.ToLower()); Row = dbClient.GetRow(); } if (Row == null) { return(false); } userID = Convert.ToInt32(Row["id"]); hasFQDisabled = PlusEnvironment.EnumToBool(Row["block_newfriends"].ToString()); } else { userID = client.GetHabbo().Id; hasFQDisabled = client.GetHabbo().AllowFriendRequests; } if (hasFQDisabled) { GetClient().SendPacket(new MessengerErrorComposer(39, 3)); return(false); } int ToId = userID; if (RequestExists(ToId)) { return(true); } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("REPLACE INTO `messenger_requests` (`from_id`,`to_id`) VALUES ('" + _userId + "','" + ToId + "')"); } PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(GetClient(), QuestType.ADD_FRIENDS); GameClient ToUser = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(ToId); if (ToUser == null || ToUser.GetHabbo() == null) { return(true); } MessengerRequest Request = new MessengerRequest(ToId, _userId, PlusEnvironment.GetGame().GetClientManager().GetNameById(_userId)); ToUser.GetHabbo().GetMessenger().OnNewRequest(_userId); UserCache ThisUser = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(_userId); if (ThisUser != null) { ToUser.SendPacket(new NewBuddyRequestComposer(ThisUser)); } _requests.Add(ToId, Request); return(true); }
public void Parse(GameClient session, ClientPacket packet) { if (session == null || session.GetHabbo() == null) { return; } Room room = session.GetHabbo().CurrentRoom; if (room == null) { return; } RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Username); if (user == null) { return; } string newName = packet.PopString(); string oldName = session.GetHabbo().Username; if (newName == oldName) { session.GetHabbo().ChangeName(oldName); session.SendPacket(new UpdateUsernameComposer(newName)); return; } if (!CanChangeName(session.GetHabbo())) { session.SendNotification("Oops, it appears you currently cannot change your username!"); return; } bool inUse; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT COUNT(0) FROM `users` WHERE `username` = @name LIMIT 1"); dbClient.AddParameter("name", newName); inUse = dbClient.GetInteger() == 1; } char[] letters = newName.ToLower().ToCharArray(); const string allowedCharacters = "abcdefghijklmnopqrstuvwxyz.,_-;:?!1234567890"; if (letters.Any(chr => !allowedCharacters.Contains(chr))) { return; } if (!session.GetHabbo().GetPermissions().HasRight("mod_tool") && newName.ToLower().Contains("mod") || newName.ToLower().Contains("adm") || newName.ToLower().Contains("admin") || newName.ToLower().Contains("m0d") || newName.ToLower().Contains("mob") || newName.ToLower().Contains("m0b")) { return; } if (!newName.ToLower().Contains("mod") && (session.GetHabbo().Rank == 2 || session.GetHabbo().Rank == 3)) { return; } if (newName.Length > 15) { return; } if (newName.Length < 3) { return; } if (inUse) { return; } if (!PlusEnvironment.GetGame().GetClientManager().UpdateClientUsername(session, oldName, newName)) { session.SendNotification("Oops! An issue occoured whilst updating your username."); return; } session.GetHabbo().ChangingName = false; room.GetRoomUserManager().RemoveUserFromRoom(session, true); session.GetHabbo().ChangeName(newName); session.GetHabbo().GetMessenger().OnStatusChanged(true); session.SendPacket(new UpdateUsernameComposer(newName)); room.SendPacket(new UserNameChangeComposer(room.Id, user.VirtualId, newName)); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `logs_client_namechange` (`user_id`,`new_name`,`old_name`,`timestamp`) VALUES ('" + session.GetHabbo().Id + "', @name, '" + oldName + "', '" + PlusEnvironment.GetUnixTimestamp() + "')"); dbClient.AddParameter("name", newName); dbClient.RunQuery(); } foreach (Room ownRooms in PlusEnvironment.GetGame().GetRoomManager().GetRooms().ToList()) { if (ownRooms == null || ownRooms.OwnerId != session.GetHabbo().Id || ownRooms.OwnerName == newName) { continue; } ownRooms.OwnerName = newName; ownRooms.SendPacket(new RoomInfoUpdatedComposer(ownRooms.Id)); } PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_Name", 1); session.SendPacket(new RoomForwardComposer(room.Id)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = null; if (!QuasarEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } RoomUser PetUser = null; if (!Room.GetRoomUserManager().TryGetPet(Packet.PopInt(), out PetUser)) { return; } //Fetch the furniture Id for the pets current saddle. int SaddleId = ItemUtility.GetSaddleId(PetUser.PetData.Saddle); //Remove the saddle from the pet. PetUser.PetData.Saddle = 0; using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `bots_petdata` SET `have_saddle` = 0 WHERE `id` = '" + PetUser.PetData.PetId + "' LIMIT 1"); } //When removing Saddle From Horse the user gets down the horse if (PetUser.RidingHorse) { RoomUser UserRiding = Room.GetRoomUserManager().GetRoomUserByVirtualId(PetUser.HorseID); if (UserRiding != null) { UserRiding.RidingHorse = false; PetUser.RidingHorse = false; UserRiding.ApplyEffect(-1); UserRiding.MoveTo(new Point(UserRiding.X + 1, UserRiding.Y + 1)); } else { PetUser.RidingHorse = false; } } ItemData ItemData = null; if (!QuasarEnvironment.GetGame().GetItemManager().GetItem(SaddleId, out ItemData)) { return; } //Creates the item for the user Item Item = ItemFactory.CreateSingleItemNullable(ItemData, Session.GetHabbo(), "", "", 0, 0, 0); if (Item != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(Item); Session.SendMessage(new FurniListNotificationComposer(Item.Id, 1)); Session.SendMessage(new PurchaseOKComposer()); Session.SendMessage(new FurniListAddComposer(Item)); Session.SendMessage(new FurniListUpdateComposer()); } Room.SendMessage(new UsersComposer(PetUser)); Room.SendMessage(new PetHorseFigureInformationComposer(PetUser)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } int ItemId = Packet.PopInt(); Item Item = Room.GetRoomItemHandler().GetItem(ItemId); if (Item == null || Item.Data == null || Item.UserID != Session.GetHabbo().Id || Item.Data.InteractionType != InteractionType.GNOME_BOX) { return; } string PetName = Packet.PopString(); if (string.IsNullOrEmpty(PetName)) { Session.SendMessage(new CheckGnomeNameComposer(PetName, 1)); return; } int X = Item.GetX; int Y = Item.GetY; //Quickly delete it from the database. using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `items` WHERE `id` = @ItemId LIMIT 1"); dbClient.AddParameter("ItemId", Item.Id); dbClient.RunQuery(); } //Remove the item. Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id); //Apparently we need this for success. Session.SendMessage(new CheckGnomeNameComposer(PetName, 0)); //Create the pet here. Pet Pet = PetUtility.CreatePet(Session.GetHabbo().Id, PetName, 26, "30", "ffffff"); if (Pet == null) { Session.SendNotification("Oeps! Er is een fout opgetreden, meld dit bij één van de Habbis Hotel medewerkers."); return; } List <RandomSpeech> RndSpeechList = new List <RandomSpeech>(); List <BotResponse> BotResponse = new List <BotResponse>(); Pet.RoomId = Session.GetHabbo().CurrentRoomId; Pet.GnomeClothing = RandomClothing(); //Update the pets gnome clothing. using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `bots_petdata` SET `gnome_clothing` = @GnomeClothing WHERE `id` = @PetId LIMIT 1"); dbClient.AddParameter("GnomeClothing", Pet.GnomeClothing); dbClient.AddParameter("PetId", Pet.PetId); dbClient.RunQuery(); } //Make a RoomUser of the pet. RoomUser PetUser = Room.GetRoomUserManager().DeployBot(new RoomBot(Pet.PetId, Pet.RoomId, "pet", "freeroam", Pet.Name, "", Pet.Look, X, Y, 0, 0, 0, 0, 0, 0, ref RndSpeechList, "", 0, Pet.OwnerId, false, 0, false, 0), Pet); //Give the food. ItemData PetFood = null; if (QuasarEnvironment.GetGame().GetItemManager().GetItem(320, out PetFood)) { Item Food = ItemFactory.CreateSingleItemNullable(PetFood, Session.GetHabbo(), "", ""); if (Food != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(Food); Session.SendMessage(new FurniListNotificationComposer(Food.Id, 1)); } } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room room)) { return; } if (!room.CheckRights(Session, true)) { return; } int BotId = Packet.PopInt(); int X = Packet.PopInt(); int Y = Packet.PopInt(); if (!room.GetGameMap().CanWalk(X, Y, false) || !room.GetGameMap().ValidTile(X, Y)) { Session.SendNotification("You cannot place a bot here!"); return; } if (!Session.GetHabbo().GetInventoryComponent().TryGetBot(BotId, out Bot bot)) { return; } int BotCount = 0; foreach (RoomUser User in room.GetRoomUserManager().GetUserList().ToList()) { if (User == null || User.IsPet || !User.IsBot) { continue; } BotCount += 1; } if (BotCount >= 5 && !Session.GetHabbo().GetPermissions().HasRight("bot_place_any_override")) { Session.SendNotification("Sorry; 5 bots per room only!"); return; } //TODO: Hmm, maybe not???? using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `bots` SET `room_id` = @roomId, `x` = @CoordX, `y` = @CoordY WHERE `id` = @BotId LIMIT 1"); dbClient.AddParameter("roomId", room.RoomId); dbClient.AddParameter("BotId", bot.Id); dbClient.AddParameter("CoordX", X); dbClient.AddParameter("CoordY", Y); dbClient.RunQuery(); } List <RandomSpeech> BotSpeechList = new List <RandomSpeech>(); //TODO: Grab data? DataRow GetData = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `ai_type`,`rotation`,`walk_mode`,`automatic_chat`,`speaking_interval`,`mix_sentences`,`chat_bubble` FROM `bots` WHERE `id` = @BotId LIMIT 1"); dbClient.AddParameter("BotId", bot.Id); GetData = dbClient.GetRow(); dbClient.SetQuery("SELECT `text` FROM `bots_speech` WHERE `bot_id` = @BotId"); dbClient.AddParameter("BotId", bot.Id); DataTable BotSpeech = dbClient.GetTable(); foreach (DataRow Speech in BotSpeech.Rows) { BotSpeechList.Add(new RandomSpeech(Convert.ToString(Speech["text"]), bot.Id)); } } RoomUser BotUser = room.GetRoomUserManager().DeployBot(new RoomBot(bot.Id, Session.GetHabbo().CurrentRoomId, Convert.ToString(GetData["ai_type"]), Convert.ToString(GetData["walk_mode"]), bot.Name, "", bot.Figure, X, Y, 0, 4, 0, 0, 0, 0, ref BotSpeechList, "", 0, bot.OwnerId, PlusEnvironment.EnumToBool(GetData["automatic_chat"].ToString()), Convert.ToInt32(GetData["speaking_interval"]), PlusEnvironment.EnumToBool(GetData["mix_sentences"].ToString()), Convert.ToInt32(GetData["chat_bubble"])), null); BotUser.Chat("Hello!", 0); room.GetGameMap().UpdateUserMovement(new System.Drawing.Point(X, Y), new System.Drawing.Point(X, Y), BotUser); if (!Session.GetHabbo().GetInventoryComponent().TryRemoveBot(BotId, out Bot ToRemove)) { Console.WriteLine("Error whilst removing Bot: " + ToRemove.Id); return; } Session.SendPacket(new BotInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetBots())); }
public void Parse(GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = null; if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } int PetId = Packet.PopInt(); RoomUser Pet = null; if (!Room.GetRoomUserManager().TryGetPet(PetId, out Pet)) { return; } if (Pet.PetData == null || Pet.PetData.Type != 13) { return; } if (Pet.PetData.AnyoneCanRide) { Pet.PetData.AnyoneCanRide = false; } else { Pet.PetData.AnyoneCanRide = true; } if (!Pet.PetData.AnyoneCanRide) { if (Pet.RidingHorse) { Pet.RidingHorse = false; RoomUser User = Room.GetRoomUserManager().GetRoomUserByVirtualId(Pet.HorseID); if (User != null) { if (Room.CheckRights(User.GetClient(), true)) { User.RidingHorse = false; User.HorseID = 0; User.ApplyEffect(-1); User.MoveTo(User.X + 1, User.Y + 1); } } } } using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_pets` SET `anyone_ride` = '" + ButterflyEnvironment.BoolToEnum(Pet.PetData.AnyoneCanRide) + "' WHERE `id` = '" + PetId + "' LIMIT 1"); } Room.SendPacket(new PetInformationComposer(Pet.PetData, Pet.RidingHorse)); }
public void Parse(GameClient Session, ClientPacket Packet) { string Map = Packet.PopString().ToLower().TrimEnd('\r'); int DoorX = Packet.PopInt(); int DoorY = Packet.PopInt(); int DoorDirection = Packet.PopInt(); int WallThick = Packet.PopInt(); int FloorThick = Packet.PopInt(); int WallHeight = Packet.PopInt(); Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (Room == null) { return; } if (!Room.CheckRights(Session, true)) { return; } if (Room.RoomData.SellPrice > 0) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("roomsell.error.8", Session.Langue)); return; } char[] validLetters = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', '\r' }; if (Map.Length > 76 * 76) //4096 + New Lines = 4159 { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "(%%%general%%%): %%%too_large_area%%% (%%%max%%% 5625 %%%tiles%%%)")); return; } Map = new Regex(@"[^a-z0-9\r]", RegexOptions.IgnoreCase).Replace(Map, string.Empty); if (string.IsNullOrEmpty(Map)) { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "Oups, il semble que vous avez entré un Floormap invalide! (Map vide)")); return; } if (Map.Any(letter => !validLetters.Contains(letter))) { //Logging.LogException("Erreur map: " + Map); Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "Oups, il semble que vous avez entré un Floormap invalide! (Code map)")); return; } string[] modelData = Map.Split('\r'); int SizeY = modelData.Length; int SizeX = modelData[0].Length; if (SizeY > 75 || SizeX > 75 || SizeX < 1 || SizeY < 1) { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "La hauteur et la largeur maximales d'un modèle sont de 75x75!")); return; } bool isValid = true; for (int i = 0; i < modelData.Length; i++) { if (SizeX != modelData[i].Length) { isValid = false; } } if (!isValid) { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "Oups, il semble que vous avez entré un Floormap invalide! (Forme)")); return; } int DoorZ = 0; try { DoorZ = parse(modelData[DoorY][DoorX]); } catch { } if (WallThick > 1) { WallThick = 1; } if (WallThick < -2) { WallThick = -2; } if (FloorThick > 1) { FloorThick = 1; } if (FloorThick < -2) { WallThick = -2; } if (WallHeight < 0) { WallHeight = 0; } if (WallHeight > 15) { WallHeight = 15; } using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("REPLACE INTO room_models_customs VALUES (@id, @doorX, @doorY, @doorZ, @doorDir, @heightmap, @murheight)"); dbClient.AddParameter("id", Room.Id); dbClient.AddParameter("doorX", DoorX); dbClient.AddParameter("doorY", DoorY); dbClient.AddParameter("doorZ", DoorZ); dbClient.AddParameter("doorDir", DoorDirection); dbClient.AddParameter("heightmap", Map); dbClient.AddParameter("murheight", WallHeight); dbClient.RunQuery(); dbClient.RunQuery("UPDATE rooms SET model_name = 'model_custom', wallthick = '" + WallThick + "', floorthick = '" + FloorThick + "' WHERE id = " + Room.Id + " LIMIT 1"); } List <RoomUser> UsersToReturn = Room.GetRoomUserManager().GetRoomUsers().ToList(); ButterflyEnvironment.GetGame().GetRoomManager().UnloadRoom(Room); foreach (RoomUser User in UsersToReturn) { if (User == null || User.GetClient() == null) { continue; } User.GetClient().SendPacket(new RoomForwardComposer(Room.Id)); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } int itemID = Packet.PopInt(); Item Item = Room.GetRoomItemHandler().GetItem(itemID); if (Item == null) { return; } bool hasRights = false; if (Room.CheckRights(Session, false, true)) { hasRights = true; } if (Item.GetBaseItem().InteractionType == InteractionType.banzaitele) { return; } if (Item.GetBaseItem().InteractionType == InteractionType.TONER) { if (!Room.CheckRights(Session, true)) { return; } if (Room.TonerData.Enabled == 0) { Room.TonerData.Enabled = 1; } else { Room.TonerData.Enabled = 0; } Room.SendPacket(new ObjectUpdateComposer(Item, Room.OwnerId)); Item.UpdateState(); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `room_items_toner` SET `enabled` = '" + Room.TonerData.Enabled + "' LIMIT 1"); } return; } if (Item.Data.InteractionType == InteractionType.GNOME_BOX && Item.UserID == Session.GetHabbo().Id) { Session.SendPacket(new GnomeBoxComposer(Item.Id)); } Boolean Toggle = true; if (Item.GetBaseItem().InteractionType == InteractionType.WF_FLOOR_SWITCH_1 || Item.GetBaseItem().InteractionType == InteractionType.WF_FLOOR_SWITCH_2) { RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } if (!Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y)) { Toggle = false; } } string oldData = Item.ExtraData; int request = Packet.PopInt(); Item.Interactor.OnTrigger(Session, Item, request, hasRights); if (Toggle) { Item.GetRoom().GetWired().TriggerEvent(WiredBoxType.TriggerStateChanges, Session.GetHabbo(), Item); } PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.ExploreFindItem, Item.GetBaseItem().Id); }
public void Parse(GameClient session, ClientPacket packet) { if (!session.GetHabbo().GetPermissions().HasRight("mod_tool")) { return; } if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(packet.PopInt(), out Room room)) { return; } bool setLock = packet.PopInt() == 1; bool setName = packet.PopInt() == 1; bool kickAll = packet.PopInt() == 1; if (setName) { room.Name = "Inappropriate to Hotel Management"; room.Description = "Inappropriate to Hotel Management"; } if (setLock) { room.Access = RoomAccess.Doorbell; } if (room.Tags.Count > 0) { room.ClearTags(); } if (room.HasActivePromotion) { room.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) { dbClient.RunQuery("UPDATE `rooms` SET `caption` = 'Inappropriate to Hotel Management', `description` = 'Inappropriate to Hotel Management', `tags` = '' WHERE `id` = '" + room.RoomId + "' LIMIT 1"); } else if (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); } } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) { return; } string Gender = Packet.PopString().ToUpper(); string Look = RocketEmulador.GetGame().GetAntiMutant().RunLook(Packet.PopString()); if (Look == Session.GetHabbo().Look) { return; } if ((DateTime.Now - Session.GetHabbo().LastClothingUpdateTime).TotalSeconds <= 2.0) { Session.GetHabbo().ClothingUpdateWarnings += 1; if (Session.GetHabbo().ClothingUpdateWarnings >= 25) { Session.GetHabbo().SessionClothingBlocked = true; } return; } if (Session.GetHabbo().SessionClothingBlocked) { return; } Session.GetHabbo().LastClothingUpdateTime = DateTime.Now; string[] AllowedGenders = { "M", "F" }; if (!AllowedGenders.Contains(Gender)) { Session.SendMessage(new BroadcastMessageAlertComposer("Sorry, you chose an invalid gender.")); return; } RocketEmulador.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.PROFILE_CHANGE_LOOK); Session.GetHabbo().Look = RocketEmulador.FilterFigure(Look); Session.GetHabbo().Gender = Gender.ToLower(); using (IQueryAdapter dbClient = RocketEmulador.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE users SET look = @look, gender = @gender WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); dbClient.AddParameter("look", Look); dbClient.AddParameter("gender", Gender); dbClient.RunQuery(); } RocketEmulador.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_AvatarLooks", 1); Session.SendMessage(new AvatarAspectUpdateMessageComposer(Look, Gender)); if (Session.GetHabbo().Look.Contains("ha-1006")) { RocketEmulador.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.WEAR_HAT); } if (Session.GetHabbo().InRoom) { RoomUser RoomUser = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (RoomUser != null) { Session.SendMessage(new UserChangeComposer(RoomUser, true)); Session.GetHabbo().CurrentRoom.SendMessage(new UserChangeComposer(RoomUser, false)); } } ServerPacket UpdateBarLook = new ServerPacket(ServerPacketHeader.FigureUpdateMessageComposer); UpdateBarLook.WriteString(Session.GetHabbo().Look); UpdateBarLook.WriteString(Session.GetHabbo().Gender); Session.SendMessage(UpdateBarLook); }
public void Parse(GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetInventoryComponent() == null) { return; } Room Room; if (!ButterflyEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } int PetId = Packet.PopInt(); RoomUser Pet = null; if (!Room.GetRoomUserManager().TryGetPet(PetId, out Pet)) { //Check kick rights, just because it seems most appropriate. if ((!Room.CheckRights(Session) && Room.RoomData.WhoCanKick != 2 && Room.RoomData.Group == null) || (Room.RoomData.Group != null && !Room.CheckRights(Session))) { 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().GetRoomUserByHabboId(PetId); if (TargetUser == null) { return; } //Check some values first, please! if (TargetUser.GetClient() == null || TargetUser.GetClient().GetHabbo() == null) { return; } //Update the targets PetId. TargetUser.transformation = false; //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)) { 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 pet = Pet.PetData; pet.RoomId = 0; pet.PlacedInRoom = false; if (pet.DBState != DatabaseUpdateState.NeedsInsert) { pet.DBState = DatabaseUpdateState.NeedsUpdate; } using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("UPDATE user_pets SET room_id = '0' WHERE id ='" + pet.PetId + "' LIMIT 1"); if (pet.OwnerId != Session.GetHabbo().Id) { GameClient Target = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(pet.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; } } else { Session.GetHabbo().GetInventoryComponent().TryAddPet(Pet.PetData); Room.GetRoomUserManager().RemoveBot(Pet.VirtualId, false); Session.SendPacket(new PetInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetPets())); } }
public void Parse(GameClient session, ClientPacket packet) { if (session == null || session.Habbo == null || session.Habbo.GetMessenger() == null) { return; } int user = packet.PopInt(); int type = packet.PopInt(); if (!session.Habbo.GetMessenger().FriendshipExists(user)) { session.SendPacket(new BroadcastMessageAlertComposer("Oops, you can only set a relationship where a friendship exists.")); return; } if (type < 0 || type > 3) { session.SendPacket(new BroadcastMessageAlertComposer("Oops, you've chosen an invalid relationship type.")); return; } if (session.Habbo.Relationships.Count > 2000) { session.SendPacket(new BroadcastMessageAlertComposer("Sorry, you're limited to a total of 2000 relationships.")); return; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { if (type == 0) { dbClient.SetQuery("SELECT `id` FROM `user_relationships` WHERE `user_id` = '" + session.Habbo.Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", user); dbClient.SetQuery("DELETE FROM `user_relationships` WHERE `user_id` = '" + session.Habbo.Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", user); dbClient.RunQuery(); if (session.Habbo.Relationships.ContainsKey(user)) { session.Habbo.Relationships.Remove(user); } } else { dbClient.SetQuery("SELECT `id` FROM `user_relationships` WHERE `user_id` = '" + session.Habbo.Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", user); int id = dbClient.GetInteger(); if (id > 0) { dbClient.SetQuery("DELETE FROM `user_relationships` WHERE `user_id` = '" + session.Habbo.Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", user); dbClient.RunQuery(); if (session.Habbo.Relationships.ContainsKey(id)) { session.Habbo.Relationships.Remove(id); } } dbClient.SetQuery("INSERT INTO `user_relationships` (`user_id`,`target`,`type`) VALUES ('" + session.Habbo.Id + "', @target, @type)"); dbClient.AddParameter("target", user); dbClient.AddParameter("type", type); int newId = Convert.ToInt32(dbClient.InsertQuery()); if (!session.Habbo.Relationships.ContainsKey(user)) { session.Habbo.Relationships.Add(user, new Relationship(newId, user, type)); } } GameClient client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserId(user); if (client != null) { session.Habbo.GetMessenger().UpdateFriend(user, client, true); } else { Habbo habbo = PlusEnvironment.GetHabboById(user); if (habbo != null) { if (session.Habbo.GetMessenger().TryGetFriend(user, out MessengerBuddy buddy)) { session.SendPacket(new FriendListUpdateComposer(session, buddy)); } } } } }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetMessenger() == null) { return; } int User = Packet.PopInt(); int Type = Packet.PopInt(); if (!Session.GetHabbo().GetMessenger().FriendshipExists(User)) { Session.SendMessage(new BroadcastMessageAlertComposer("Oops, Solo puedes poner una relacion primeramente siendo amigos.")); return; } if (Type < 0 || Type > 3) { Session.SendMessage(new BroadcastMessageAlertComposer("Oops, Ha elegido un tipo de relacion no valido.")); return; } if (Session.GetHabbo().Relationships.Count > 2000) { Session.SendMessage(new BroadcastMessageAlertComposer("Lo sentimos, el limite de relaciones es 2000")); return; } using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { if (Type == 0) { dbClient.SetQuery("SELECT `id` FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", User); int Id = dbClient.getInteger(); dbClient.SetQuery("DELETE FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", User); dbClient.RunQuery(); if (Session.GetHabbo().Relationships.ContainsKey(User)) { Session.GetHabbo().Relationships.Remove(User); } } else { dbClient.SetQuery("SELECT id FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", User); int Id = dbClient.getInteger(); if (Id > 0) { dbClient.SetQuery("DELETE FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1"); dbClient.AddParameter("target", User); dbClient.RunQuery(); if (Session.GetHabbo().Relationships.ContainsKey(User)) { Session.GetHabbo().Relationships.Remove(User); } } dbClient.SetQuery("INSERT INTO `user_relationships` (`user_id`,`target`,`type`) VALUES ('" + Session.GetHabbo().Id + "', @target, @type)"); dbClient.AddParameter("target", User); dbClient.AddParameter("type", Type); int newId = Convert.ToInt32(dbClient.InsertQuery()); if (!Session.GetHabbo().Relationships.ContainsKey(User)) { Session.GetHabbo().Relationships.Add(User, new Relationship(newId, User, Type)); } } GameClient Client = RavenEnvironment.GetGame().GetClientManager().GetClientByUserID(User); if (Client != null) { Session.GetHabbo().GetMessenger().UpdateFriend(User, Client, true); } else { Habbo Habbo = RavenEnvironment.GetHabboById(User); if (Habbo != null) { MessengerBuddy Buddy = null; if (Session.GetHabbo().GetMessenger().TryGetFriend(User, out Buddy)) { Session.SendMessage(new FriendListUpdateComposer(Session, Buddy)); } } } } }
public void Parse(GameClient Session, ClientPacket Packet) { int PageId = Packet.PopInt(); int ItemId = Packet.PopInt(); string Data = Packet.PopString(); string GiftUser = StringCharFilter.Escape(Packet.PopString()); string GiftMessage = StringCharFilter.Escape(Packet.PopString().Replace(Convert.ToChar(5), ' ')); int SpriteId = Packet.PopInt(); int Ribbon = Packet.PopInt(); int Colour = Packet.PopInt(); _ = Packet.PopBoolean(); if (NeonEnvironment.GetDBConfig().DBData["gifts_enabled"] != "1") { Session.SendNotification("El Administrador tiene desactivado el enviar regalos a todo el Hotel"); return; } if (!NeonEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out CatalogPage Page)) { return; } if (Session.GetHabbo().Rank > 8 && !Session.GetHabbo().StaffOk) { return; } if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().CatRank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1)) { return; } if (!Page.Items.TryGetValue(ItemId, out CatalogItem Item)) { if (Page.ItemOffers.ContainsKey(ItemId)) { Item = Page.ItemOffers[ItemId]; if (Item == null) { return; } } else { return; } } if (!ItemUtility.CanGiftItem(Item)) { return; } if (!NeonEnvironment.GetGame().GetItemManager().GetGift(SpriteId, out ItemData PresentData) || PresentData.InteractionType != InteractionType.GIFT) { return; } if (Session.GetHabbo().Credits < Item.CostCredits) { Session.SendMessage(new PresentDeliverErrorMessageComposer(true, false)); return; } if (Session.GetHabbo().Duckets < Item.CostPixels) { Session.SendMessage(new PresentDeliverErrorMessageComposer(false, true)); return; } Habbo Habbo = NeonEnvironment.GetHabboByUsername(GiftUser); if (Habbo == null) { Session.SendMessage(new GiftWrappingErrorComposer()); return; } if (!Habbo.AllowGifts) { Session.SendNotification("Oops, este usuario no permite recibir regalos!"); return; } if (Session.GetHabbo().Rank < 4) { if ((DateTime.Now - Session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 15.0) { Session.SendNotification("Estas enviando regalos muy rapido, espere un minimo de 15 segundos para enviar el siguiente!"); Session.GetHabbo().GiftPurchasingWarnings += 1; if (Session.GetHabbo().GiftPurchasingWarnings >= 25) { Session.GetHabbo().SessionGiftBlocked = true; } return; } } if (Session.GetHabbo().SessionGiftBlocked) { return; } string ED = GiftUser + Convert.ToChar(5) + GiftMessage + Convert.ToChar(5) + Session.GetHabbo().Id + Convert.ToChar(5) + Item.Data.Id + Convert.ToChar(5) + SpriteId + Convert.ToChar(5) + Ribbon + Convert.ToChar(5) + Colour; int NewItemId = 0; using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor()) { //Insert the dummy item. dbClient.SetQuery("INSERT INTO `items` (`base_item`,`user_id`,`extra_data`) VALUES ('" + PresentData.Id + "', '" + Habbo.Id + "', @extra_data)"); dbClient.AddParameter("extra_data", ED); NewItemId = Convert.ToInt32(dbClient.InsertQuery()); string ItemExtraData = null; switch (Item.Data.InteractionType) { case InteractionType.NONE: ItemExtraData = ""; break; #region Pet handling case InteractionType.pet0: case InteractionType.pet1: case InteractionType.pet2: case InteractionType.pet3: case InteractionType.pet4: case InteractionType.pet5: case InteractionType.pet6: case InteractionType.pet7: case InteractionType.pet8: case InteractionType.pet9: case InteractionType.pet10: case InteractionType.pet11: case InteractionType.pet12: case InteractionType.pet13: //Caballo case InteractionType.pet14: case InteractionType.pet15: case InteractionType.pet16: //Mascota agregada case InteractionType.pet17: //Mascota agregada case InteractionType.pet18: //Mascota agregada case InteractionType.pet19: //Mascota agregada case InteractionType.pet20: //Mascota agregada case InteractionType.pet21: //Mascota agregada case InteractionType.pet22: //Mascota agregada case InteractionType.pet28: case InteractionType.pet29: case InteractionType.pet30: try { string[] Bits = Data.Split('\n'); string PetName = Bits[0]; string Race = Bits[1]; string Color = Bits[2]; int.Parse(Race); // to trigger any possible errors if (PetUtility.CheckPetName(PetName)) { return; } if (Race.Length > 2) { return; } if (Color.Length != 6) { return; } NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1); } catch { return; } break; #endregion case InteractionType.FLOOR: case InteractionType.WALLPAPER: case InteractionType.LANDSCAPE: double Number = 0; try { if (string.IsNullOrEmpty(Data)) { Number = 0; } else { Number = double.Parse(Data, NeonEnvironment.CultureInfo); } } catch { } ItemExtraData = Number.ToString().Replace(',', '.'); break; // maintain extra data // todo: validate case InteractionType.POSTIT: ItemExtraData = "FFFF33"; break; case InteractionType.MOODLIGHT: ItemExtraData = "1,1,1,#000000,255"; break; case InteractionType.TROPHY: ItemExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + Data; break; case InteractionType.MANNEQUIN: ItemExtraData = "m" + Convert.ToChar(5) + ".ch-210-1321.lg-285-92" + Convert.ToChar(5) + "Default Maniqui"; break; case InteractionType.BADGE_DISPLAY: if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Data)) { Session.SendMessage(new BroadcastMessageAlertComposer("Oops, al parecer usted no posee esta placa.")); return; } ItemExtraData = Data + Convert.ToChar(9) + Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year; break; default: ItemExtraData = Data; break; } //Insert the present, forever. dbClient.SetQuery("INSERT INTO `user_presents` (`item_id`,`base_id`,`extra_data`) VALUES ('" + NewItemId + "', '" + Item.Data.Id + "', @extra_data)"); dbClient.AddParameter("extra_data", (string.IsNullOrEmpty(ItemExtraData) ? "" : ItemExtraData)); dbClient.RunQuery(); //Here we're clearing up a record, this is dumb, but okay. dbClient.RunQuery("DELETE FROM `items` WHERE `id` = " + NewItemId + " LIMIT 1;"); } Item GiveItem = ItemFactory.CreateGiftItem(PresentData, Habbo, ED, ED, NewItemId, 0, 0); if (GiveItem != null) { GameClient Receiver = NeonEnvironment.GetGame().GetClientManager().GetClientByUserID(Habbo.Id); if (Receiver != null) { if (Receiver.GetHabbo().Rank <= 5) { Receiver.SendNotification("Usted acaba de recibir un regalo de parte de " + Session.GetHabbo().Username + ""); } { Receiver.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Receiver.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1)); Receiver.SendMessage(new PurchaseOKComposer()); Receiver.SendMessage(new FurniListAddComposer(GiveItem)); Receiver.SendMessage(new FurniListUpdateComposer()); } } NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_GiftGiver", 1); NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Receiver, "ACH_GiftReceiver", 1); NeonEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.GIFT_OTHERS); Session.SendNotification("Ha enviado correctamente un regalo"); } Session.SendMessage(new PurchaseOKComposer(Item, PresentData)); if (Item.CostCredits > 0) { Session.GetHabbo().Credits -= Item.CostCredits; Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); } if (Item.CostPixels > 0) { Session.GetHabbo().Duckets -= Item.CostPixels; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets)); } Session.GetHabbo().LastGiftPurchaseTime = DateTime.Now; }
public void Parse(GameClient Session, ClientPacket Packet) { string VoucherCode = Packet.PopString().Replace("\r", ""); Voucher Voucher = null; if (!CloudServer.GetGame().GetCatalog().GetVoucherManager().TryGetVoucher(VoucherCode, out Voucher)) { Session.SendMessage(new VoucherRedeemErrorComposer(0)); return; } if (Voucher.CurrentUses >= Voucher.MaxUses) { Session.SendNotification("Você usou esse código o máximo de vezes permitidas!"); return; } DataRow GetRow = null; using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM `user_vouchers` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `voucher` = @Voucher LIMIT 1"); dbClient.AddParameter("Voucher", VoucherCode); GetRow = dbClient.getRow(); } if (GetRow != null) { Session.SendNotification("Ops! Você já está usando esse código!"); return; } else { using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `user_vouchers` (`user_id`,`voucher`) VALUES ('" + Session.GetHabbo().Id + "', @Voucher)"); dbClient.AddParameter("Voucher", VoucherCode); dbClient.RunQuery(); } } Voucher.UpdateUses(); if (Voucher.Type == VoucherType.CREDIT) { Session.GetHabbo().Credits += Voucher.Value; Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); Session.SendMessage(RoomNotificationComposer.SendBubble("voucher", "Você acaba de receber um premio! " + Voucher.Value + " créditos. Use com sabedoria " + Session.GetHabbo().Username + ".", "")); } else if (Voucher.Type == VoucherType.DUCKET) { Session.GetHabbo().Duckets += Voucher.Value; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Voucher.Value)); Session.SendMessage(RoomNotificationComposer.SendBubble("voucher", "Você acaba de receber um premio! " + Voucher.Value + " duckets. Use com sabedoria " + Session.GetHabbo().Username + ".", "")); } else if (Voucher.Type == VoucherType.DIAMOND) { Session.GetHabbo().Diamonds += Voucher.Value; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, Voucher.Value, 5)); Session.SendMessage(RoomNotificationComposer.SendBubble("voucher", "Você acaba de receber um premio! " + Voucher.Value + " diamantes. Use com sabedoria " + Session.GetHabbo().Username + ".", "")); } else if (Voucher.Type == VoucherType.GOTW) { Session.GetHabbo().GOTWPoints += Voucher.Value; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, Voucher.Value, 103)); Session.SendMessage(RoomNotificationComposer.SendBubble("voucher", "Você acaba de receber um premio! " + Voucher.Value + " " + ExtraSettings.PTOS_COINS + ". Use com sabedoria " + Session.GetHabbo().Username + ".", "")); } else if (Voucher.Type == VoucherType.ITEM) { ItemData Item = null; if (!CloudServer.GetGame().GetItemManager().GetItem((Voucher.Value), out Item)) { // No existe este ItemId. return; } Item GiveItem = ItemFactory.CreateSingleItemNullable(Item, Session.GetHabbo(), "", ""); if (GiveItem != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Session.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1)); Session.SendMessage(new FurniListUpdateComposer()); Session.SendMessage(RoomNotificationComposer.SendBubble("voucher", "Você acabou de receber o objeto raro, corre " + Session.GetHabbo().Username + ", confira seu invetário algo novo está ai!", "")); } Session.GetHabbo().GetInventoryComponent().UpdateItems(false); } Session.SendMessage(new VoucherRedeemOkComposer()); }
public void Parse(GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null || !Room.CheckRights(Session, true)) { return; } int BotId = Packet.PopInt(); int ActionId = Packet.PopInt(); string DataString = Packet.PopString(); if (BotId <= 0) { return; } if (ActionId < 1 || ActionId > 5) { return; } RoomUser Bot = null; if (!Room.GetRoomUserManager().TryGetBot(BotId, out Bot)) { return; } RoomBot RoomBot = Bot.BotData; if (RoomBot == null) { return; } /* 1 = Copy looks * 2 = Setup Speech * 3 = Relax * 4 = Dance * 5 = Change Name */ switch (ActionId) { #region Copy Looks (1) case 1: { //Change the defaults Bot.BotData.Look = Session.GetHabbo().Look; Bot.BotData.Gender = Session.GetHabbo().Gender; Room.SendPacket(new UserChangeComposer(Bot)); using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `bots` SET `look` = @look, `gender` = '" + Session.GetHabbo().Gender + "' WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1"); dbClient.AddParameter("look", Session.GetHabbo().Look); dbClient.RunQuery(); } break; } #endregion #region Setup Speech (2) case 2: { string[] ConfigData = DataString.Split(new string[] { ";#;" }, StringSplitOptions.None); string[] SpeechData = ConfigData[0].Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); string AutomaticChat = Convert.ToString(ConfigData[1]); string SpeakingInterval = Convert.ToString(ConfigData[2]); string MixChat = Convert.ToString(ConfigData[3]); if (String.IsNullOrEmpty(SpeakingInterval) || Convert.ToInt32(SpeakingInterval) <= 0 || Convert.ToInt32(SpeakingInterval) < 7) { SpeakingInterval = "7"; } RoomBot.AutomaticChat = Convert.ToBoolean(AutomaticChat); RoomBot.SpeakingInterval = Convert.ToInt32(SpeakingInterval); RoomBot.MixSentences = Convert.ToBoolean(MixChat); string Text = ""; string Phrase = ""; for (int i = 0; i <= SpeechData.Length - 1; i++) { Phrase = SpeechData[i]; if (Phrase.Length > 150) { Phrase.Substring(0, 150); } Text += SpeechData[i] + "\r"; } RoomBot.ChatText = Text; RoomBot.LoadRandomSpeech(Text); using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `bots` SET `chat_enabled` = @AutomaticChat, `chat_seconds` = @SpeakingInterval, `is_mixchat` = @MixChat, `chat_text` = @ChatText WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", BotId); dbClient.AddParameter("AutomaticChat", ButterflyEnvironment.BoolToEnum(Convert.ToBoolean(AutomaticChat))); dbClient.AddParameter("SpeakingInterval", Convert.ToInt32(SpeakingInterval)); dbClient.AddParameter("MixChat", ButterflyEnvironment.BoolToEnum(Convert.ToBoolean(MixChat))); dbClient.AddParameter("ChatText", Text); dbClient.RunQuery(); } break; } #endregion #region Relax (3) case 3: { Bot.BotData.WalkingEnabled = !Bot.BotData.WalkingEnabled; using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { queryreactor.RunQuery("UPDATE bots SET walk_enabled = '" + ButterflyEnvironment.BoolToEnum(Bot.BotData.WalkingEnabled) + "' WHERE id = " + Bot.BotData.Id); } break; } #endregion #region Dance (4) case 4: { if (Bot.DanceId > 0) { Bot.DanceId = 0; Bot.BotData.IsDancing = false; } else { Random RandomDance = new Random(); Bot.DanceId = RandomDance.Next(1, 4); Bot.BotData.IsDancing = true; } Room.SendPacket(new DanceComposer(Bot, Bot.DanceId)); using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) queryreactor.RunQuery("UPDATE bots SET is_dancing = '" + ButterflyEnvironment.BoolToEnum(Bot.BotData.IsDancing) + "' WHERE id = " + Bot.BotData.Id); break; } #endregion #region Change Name (5) case 5: { if (DataString.Length == 0) { return; } else if (DataString.Length >= 16) { return; } if (DataString.Contains("<img src") || DataString.Contains("<font ") || DataString.Contains("</font>") || DataString.Contains("</a>") || DataString.Contains("<i>")) { return; } Bot.BotData.Name = DataString; using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `bots` SET `name` = @name WHERE `id` = '" + Bot.BotData.Id + "' LIMIT 1"); dbClient.AddParameter("name", DataString); dbClient.RunQuery(); } Room.SendPacket(new UserNameChangeMessageComposer(Bot.BotData.Name, Bot.VirtualId)); break; } #endregion } }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session.GetHabbo().TimeMuted > 0) { Session.SendNotification("Bem, agora você está mudo: Você não pode mudar a sua missão."); return; } if ((DateTime.Now - Session.GetHabbo().LastMottoUpdateTime).TotalSeconds <= 2.0) { Session.GetHabbo().MottoUpdateWarnings += 1; if (Session.GetHabbo().MottoUpdateWarnings >= 25) { Session.GetHabbo().SessionMottoBlocked = true; } return; } if (Session.GetHabbo().SessionMottoBlocked) { return; } Session.GetHabbo().LastMottoUpdateTime = DateTime.Now; string newMotto = StringCharFilter.Escape(Packet.PopString().Trim()); if (newMotto.Length > 38) { newMotto = newMotto.Substring(0, 38); } if (newMotto == Session.GetHabbo().Motto) { return; } string word; if (!Session.GetHabbo().GetPermissions().HasRight("word_filter_override")) { newMotto = CloudServer.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(newMotto, out word) ? "Spam" : newMotto; } Session.GetHabbo().Motto = newMotto; using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `motto` = @motto WHERE `id` = @userId LIMIT 1"); dbClient.AddParameter("userId", Session.GetHabbo().Id); dbClient.AddParameter("motto", newMotto); dbClient.RunQuery(); } CloudServer.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.PROFILE_CHANGE_MOTTO); CloudServer.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_Motto", 1); if (Session.GetHabbo().InRoom) { Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null || User.GetClient() == null) { return; } Room.SendMessage(new UserChangeComposer(User, false)); } }
public void DeleteFromDatabase(IQueryAdapter dbClient) { dbClient.RunQuery("DELETE FROM wired_items WHERE trigger_id = '" + this.item.Id + "'"); }
public void Dispose() { SendMessage(new CloseConnectionComposer()); if (!mDisposed) { isCrashed = false; mDisposed = true; try { if (ProcessTask != null && ProcessTask.IsCompleted) { ProcessTask.Dispose(); } } catch { } GetRoomItemHandler().SaveFurniture(); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `rooms` SET `users_now` = '0' WHERE `id` = '" + Id + "' LIMIT 1"); } if (this._roomUserManager.PetCount > 0) { this._roomUserManager.UpdatePets(); } this.SaveAI(); UsersNow = 0; RoomData.UsersNow = 0; UsersWithRights.Clear(); Bans.Clear(); MutedUsers.Clear(); Tents.Clear(); this.TonerData = null; this.MoodlightData = null; this._filterComponent.Cleanup(); this._wiredComponent.Cleanup(); if (this._gameItemHandler != null) { this._gameItemHandler.Dispose(); } if (this._gameManager != null) { this._gameManager.Dispose(); } if (this._freeze != null) { this._freeze.Dispose(); } if (this._banzai != null) { this._banzai.Dispose(); } if (this._soccer != null) { this._soccer.Dispose(); } if (this._gamemap != null) { this._gamemap.Dispose(); } if (this._roomUserManager != null) { this._roomUserManager.Dispose(); } if (this._roomItemHandling != null) { this._roomItemHandling.Dispose(); } if (ActiveTrades.Count > 0) { ActiveTrades.Clear(); } } }
public void Execute(GameClient Session, Room Room, string[] Params) { if (Params.Length == 1) { Session.SendWhisper("Please enter the username of the user you'd like to IP ban & account ban."); return; } Habbo Habbo = PlusEnvironment.GetHabboByUsername(Params[1]); if (Habbo == null) { Session.SendWhisper("An error occoured whilst finding that user in the database."); return; } if (Habbo.GetPermissions().HasRight("mod_tool") && !Session.Habbo.GetPermissions().HasRight("mod_ban_any")) { Session.SendWhisper("Oops, you cannot ban that user."); return; } String IPAddress = String.Empty; double Expire = PlusEnvironment.GetUnixTimestamp() + 78892200; string Username = Habbo.Username; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_info` SET `bans` = `bans` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1"); dbClient.SetQuery("SELECT `ip_last` FROM `users` WHERE `id` = '" + Habbo.Id + "' LIMIT 1"); IPAddress = dbClient.GetString(); } string Reason = null; if (Params.Length >= 3) { Reason = CommandManager.MergeParams(Params, 2); } else { Reason = "No reason specified."; } if (!string.IsNullOrEmpty(IPAddress)) { PlusEnvironment.GetGame().GetModerationManager().BanUser(Session.Habbo.Username, ModerationBanType.IP, IPAddress, Reason, Expire); } PlusEnvironment.GetGame().GetModerationManager().BanUser(Session.Habbo.Username, ModerationBanType.Username, Habbo.Username, Reason, Expire); GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Username); if (TargetClient != null) { TargetClient.Disconnect(); } Session.SendWhisper("Success, you have IP and account banned the user '" + Username + "' for '" + Reason + "'!"); }
public void Parse(GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().GetPermissions().HasRight("change_motto")) { return; } if ((DateTime.Now - Session.GetHabbo().LastMottoUpdateTime).TotalSeconds <= 2.0) { Session.GetHabbo().MottoUpdateWarnings += 1; if (Session.GetHabbo().MottoUpdateWarnings >= 25) { Session.GetHabbo().SessionMottoBlocked = true; } return; } if (Session.GetHabbo().SessionMottoBlocked) { return; } Session.GetHabbo().LastMottoUpdateTime = DateTime.Now; string newMotto = StringCharFilter.Escape(Packet.PopString().Trim()); if (newMotto.Length > 38) { newMotto = newMotto.Substring(0, 38); } if (newMotto == Session.GetHabbo().Motto) { return; } if (!Session.GetHabbo().GetPermissions().HasRight("word_filter_override")) { newMotto = PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(newMotto); } Session.GetHabbo().Motto = newMotto; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `motto` = @motto WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); dbClient.AddParameter("motto", newMotto); dbClient.RunQuery(); } if (Session.GetHabbo().InRoom) { Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null || User.GetClient() == null) { return; } Room.SendMessage(new UserChangeComposer(User, false)); } }
public bool TryExecute(string[] parameters) { int userId = 0; if (!int.TryParse(parameters[0].ToString(), out userId)) { return(false); } GameClient client = BiosEmuThiago.GetGame().GetClientManager().GetClientByUserID(userId); if (client == null || client.GetHabbo() == null) { return(false); } // Validate the currency type if (string.IsNullOrEmpty(Convert.ToString(parameters[1]))) { return(false); } string currency = Convert.ToString(parameters[1]); int amount = 0; if (!int.TryParse(parameters[2].ToString(), out amount)) { return(false); } switch (currency) { default: return(false); case "coins": case "credits": case "creditos": { client.GetHabbo().Credits -= amount; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `credits` = @credits WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("credits", client.GetHabbo().Credits); dbClient.AddParameter("id", client.GetHabbo().Id); dbClient.RunQuery(); } client.SendMessage(new CreditBalanceComposer(client.GetHabbo().Credits)); break; } case "pixels": case "duckets": { client.GetHabbo().Duckets -= amount; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `activity_points` = @duckets WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("duckets", client.GetHabbo().Duckets); dbClient.AddParameter("id", client.GetHabbo().Id); dbClient.RunQuery(); } client.SendMessage(new HabboActivityPointNotificationComposer(client.GetHabbo().Duckets, amount)); break; } case "diamonds": case "diamantes": { client.GetHabbo().Diamonds -= amount; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `vip_points` = @diamonds WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("diamonds", client.GetHabbo().Diamonds); dbClient.AddParameter("id", client.GetHabbo().Id); dbClient.RunQuery(); } client.SendMessage(new HabboActivityPointNotificationComposer(client.GetHabbo().Diamonds, 0, 5)); break; } case "gotw": case "gotw_points": case "gotwpoints": case "fame": case "fama": case "famepoints": { client.GetHabbo().GOTWPoints -= amount; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `gotw_points` = @gotw WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("gotw", client.GetHabbo().GOTWPoints); dbClient.AddParameter("id", client.GetHabbo().Id); dbClient.RunQuery(); } client.SendMessage(new HabboActivityPointNotificationComposer(client.GetHabbo().GOTWPoints, 0, 103)); break; } } return(true); }
public void ProgressUserQuest(GameClient Session, QuestType QuestType, int EventData = 0) { if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetStats().QuestID <= 0) { return; } Quest UserQuest = GetQuest(Session.GetHabbo().GetStats().QuestID); if (UserQuest == null || UserQuest.GoalType != QuestType) { return; } int CurrentProgress = Session.GetHabbo().GetQuestProgress(UserQuest.Id); int NewProgress = CurrentProgress; bool PassQuest = false; switch (QuestType) { default: NewProgress++; if (NewProgress >= UserQuest.GoalData) { PassQuest = true; } break; case QuestType.EXPLORE_FIND_ITEM: if (EventData != UserQuest.GoalData) { return; } NewProgress = Convert.ToInt32(UserQuest.GoalData); PassQuest = true; break; case QuestType.STAND_ON: if (EventData != UserQuest.GoalData) { return; } NewProgress = Convert.ToInt32(UserQuest.GoalData); PassQuest = true; break; case QuestType.XMAS_PARTY: NewProgress++; if (NewProgress == UserQuest.GoalData) { PassQuest = true; } break; case QuestType.GIVE_ITEM: if (EventData != UserQuest.GoalData) { return; } NewProgress = Convert.ToInt32(UserQuest.GoalData); PassQuest = true; break; } using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_quests` SET `progress` = '" + NewProgress + "' WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `quest_id` = '" + UserQuest.Id + "' LIMIT 1"); if (PassQuest) { dbClient.RunQuery("UPDATE `user_stats` SET `quest_id` = '0' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } } Session.GetHabbo().quests[Session.GetHabbo().GetStats().QuestID] = NewProgress; Session.SendMessage(new QuestStartedComposer(Session, UserQuest)); if (PassQuest) { Session.GetHabbo().GetMessenger().BroadcastAchievement(Session.GetHabbo().Id, Users.Messenger.MessengerEventTypes.QUEST_COMPLETED, UserQuest.Category + "." + UserQuest.Name); Session.GetHabbo().GetStats().QuestID = 0; Session.GetHabbo().QuestLastCompleted = UserQuest.Id; Session.SendMessage(new QuestCompletedComposer(Session, UserQuest)); Session.GetHabbo().Duckets += UserQuest.Reward; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, UserQuest.Reward)); GetList(Session, null); QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_CompleteQuests", 1); } }
/// <summary> /// Saves the furniture. /// </summary> /// <param name="dbClient">The database client.</param> /// <param name="session">The session.</param> public void SaveFurniture(IQueryAdapter dbClient, GameClient session = null) { try { if (!_updatedItems.Any() && !_removedItems.Any() && _room.GetRoomUserManager().PetCount <= 0) return; foreach (uint itemId in _removedItems) dbClient.RunFastQuery($"UPDATE items_rooms SET room_id='0', x='0', y='0', z='0', rot='0' WHERE id = {itemId}"); foreach (RoomItem roomItem in _updatedItems.Select(GetItem).Where(roomItem => roomItem != null)) { if (roomItem.GetBaseItem() != null && roomItem.GetBaseItem().IsGroupItem) { try { string[] gD = roomItem.GroupData.Split(';'); roomItem.ExtraData = roomItem.ExtraData + ";" + gD[1] + ";" + gD[2] + ";" + gD[3]; } catch { roomItem.ExtraData = string.Empty; } } if (roomItem.RoomId == 0) continue; if (roomItem.GetBaseItem().Name.Contains("wallpaper_single") || roomItem.GetBaseItem().Name.Contains("floor_single") || roomItem.GetBaseItem().Name.Contains("landscape_single")) { dbClient.RunFastQuery($"DELETE FROM items_rooms WHERE id = {roomItem.Id} LIMIT 1"); continue; } if (roomItem.IsFloorItem) { dbClient.SetQuery( $"UPDATE items_rooms SET room_id={roomItem.RoomId}, extra_data=@extraData, x={roomItem.X}, y={roomItem.Y}, z='{roomItem.Z.ToString(CultureInfo.InvariantCulture).Replace(',', '.')}', rot={roomItem.Rot} WHERE id={roomItem.Id}"); dbClient.AddParameter("extraData", !string.IsNullOrEmpty(roomItem.ExtraData) ? roomItem.ExtraData : string.Empty); dbClient.RunQuery(); } else { dbClient.SetQuery( $"UPDATE items_rooms SET room_id={roomItem.RoomId}, extra_data=@extraData, wall_pos=@wallPos WHERE id={roomItem.Id}"); dbClient.AddParameter("extraData", !string.IsNullOrEmpty(roomItem.ExtraData) ? roomItem.ExtraData : string.Empty); dbClient.AddParameter("wallPos", roomItem.WallCoord); dbClient.RunQuery(); } } _room.GetRoomUserManager().AppendPetsUpdateString(dbClient); session?.GetHabbo().GetInventoryComponent().RunDbUpdate(); _updatedItems.Clear(); _removedItems.Clear(); } catch (Exception ex) { ServerLogManager.LogCriticalException("Error during saving furniture for room " + _room.RoomId + ". Stack: " + ex); } }