/// <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(); }
public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet) { if (session == null || session.GetHabbo() == null) { return; } int roomId = packet.PopInt(); if (!PlusEnvironment.GetGame().GetRoomManager().TryLoadRoom(roomId, out Room room)) { return; } string Name = PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(packet.PopString()); string Description = PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(packet.PopString()); RoomAccess Access = RoomAccessUtility.ToRoomAccess(packet.PopInt()); string Password = packet.PopString(); int MaxUsers = packet.PopInt(); int CategoryId = packet.PopInt(); int TagCount = packet.PopInt(); List <string> Tags = new List <string>(); StringBuilder formattedTags = new StringBuilder(); for (int i = 0; i < TagCount; i++) { if (i > 0) { formattedTags.Append(","); } string tag = packet.PopString().ToLower(); Tags.Add(tag); formattedTags.Append(tag); } int TradeSettings = packet.PopInt();//2 = All can trade, 1 = owner only, 0 = no trading. int AllowPets = Convert.ToInt32(PlusEnvironment.BoolToEnum(packet.PopBoolean())); int AllowPetsEat = Convert.ToInt32(PlusEnvironment.BoolToEnum(packet.PopBoolean())); int RoomBlockingEnabled = Convert.ToInt32(PlusEnvironment.BoolToEnum(packet.PopBoolean())); int Hidewall = Convert.ToInt32(PlusEnvironment.BoolToEnum(packet.PopBoolean())); int WallThickness = packet.PopInt(); int FloorThickness = packet.PopInt(); int WhoMute = packet.PopInt(); // mute int WhoKick = packet.PopInt(); // kick int WhoBan = packet.PopInt(); // ban int chatMode = packet.PopInt(); int chatSize = packet.PopInt(); int chatSpeed = packet.PopInt(); int chatDistance = packet.PopInt(); int extraFlood = packet.PopInt(); if (chatMode < 0 || chatMode > 1) { chatMode = 0; } if (chatSize < 0 || chatSize > 2) { chatSize = 0; } if (chatSpeed < 0 || chatSpeed > 2) { chatSpeed = 0; } if (chatDistance < 0) { chatDistance = 1; } if (chatDistance > 99) { chatDistance = 100; } if (extraFlood < 0 || extraFlood > 2) { extraFlood = 0; } if (TradeSettings < 0 || TradeSettings > 2) { TradeSettings = 0; } if (WhoMute < 0 || WhoMute > 1) { WhoMute = 0; } if (WhoKick < 0 || WhoKick > 1) { WhoKick = 0; } if (WhoBan < 0 || WhoBan > 1) { WhoBan = 0; } if (WallThickness < -2 || WallThickness > 1) { WallThickness = 0; } if (FloorThickness < -2 || FloorThickness > 1) { FloorThickness = 0; } if (Name.Length < 1) { return; } if (Name.Length > 60) { Name = Name.Substring(0, 60); } if (Access == RoomAccess.Password && Password.Length == 0) { Access = RoomAccess.Open; } if (MaxUsers < 0) { MaxUsers = 10; } if (MaxUsers > 50) { MaxUsers = 50; } SearchResultList SearchResultList = null; if (!PlusEnvironment.GetGame().GetNavigator().TryGetSearchResultList(CategoryId, out SearchResultList)) { CategoryId = 36; } if (SearchResultList.CategoryType != NavigatorCategoryType.Category || SearchResultList.RequiredRank > session.GetHabbo().Rank || (session.GetHabbo().Id != room.OwnerId && session.GetHabbo().Rank >= SearchResultList.RequiredRank)) { CategoryId = 36; } if (TagCount > 2) { return; } room.AllowPets = AllowPets; room.AllowPetsEating = AllowPetsEat; room.RoomBlockingEnabled = RoomBlockingEnabled; room.Hidewall = Hidewall; room.Name = Name; room.Access = Access; room.Description = Description; room.Category = CategoryId; room.Password = Password; room.WhoCanBan = WhoBan; room.WhoCanKick = WhoKick; room.WhoCanMute = WhoMute; room.ClearTags(); room.AddTagRange(Tags); room.UsersMax = MaxUsers; room.WallThickness = WallThickness; room.FloorThickness = FloorThickness; room.ChatMode = chatMode; room.ChatSize = chatSize; room.ChatSpeed = chatSpeed; room.ChatDistance = chatDistance; room.ExtraFlood = extraFlood; room.TradeSettings = TradeSettings; string AccessStr = Password.Length > 0 ? "password" : "open"; switch (Access) { default: case RoomAccess.Open: AccessStr = "open"; break; case RoomAccess.Password: AccessStr = "password"; break; case RoomAccess.Doorbell: AccessStr = "locked"; break; case RoomAccess.Invisible: AccessStr = "invisible"; break; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `rooms` SET `caption` = @caption, `description` = @description, `password` = @password, `category` = @categoryId, `state` = @state, `tags` = @tags, `users_max` = @maxUsers, `allow_pets` = @allowPets, `allow_pets_eat` = @allowPetsEat, `room_blocking_disabled` = @roomBlockingDisabled, `allow_hidewall` = @allowHidewall, `floorthick` = @floorThick, `wallthick` = @wallThick, `mute_settings` = @muteSettings, `kick_settings` = @kickSettings, `ban_settings` = @banSettings, `chat_mode` = @chatMode, `chat_size` = @chatSize, `chat_speed` = @chatSpeed, `chat_extra_flood` = @extraFlood, `chat_hearing_distance` = @chatDistance, `trade_settings` = @tradeSettings WHERE `id` = @roomId LIMIT 1"); dbClient.AddParameter("categoryId", CategoryId); dbClient.AddParameter("maxUsers", MaxUsers); dbClient.AddParameter("allowPets", AllowPets); dbClient.AddParameter("allowPetsEat", AllowPetsEat); dbClient.AddParameter("roomBlockingDisabled", RoomBlockingEnabled); dbClient.AddParameter("allowHidewall", room.Hidewall); dbClient.AddParameter("floorThick", room.FloorThickness); dbClient.AddParameter("wallThick", room.WallThickness); dbClient.AddParameter("muteSettings", room.WhoCanMute); dbClient.AddParameter("kickSettings", room.WhoCanKick); dbClient.AddParameter("banSettings", room.WhoCanBan); dbClient.AddParameter("chatMode", room.ChatMode); dbClient.AddParameter("chatSize", room.ChatSize); dbClient.AddParameter("chatSpeed", room.ChatSpeed); dbClient.AddParameter("extraFlood", room.ExtraFlood); dbClient.AddParameter("chatDistance", room.ChatDistance); dbClient.AddParameter("tradeSettings", room.TradeSettings); dbClient.AddParameter("roomId", room.Id); dbClient.AddParameter("caption", room.Name); dbClient.AddParameter("description", room.Description); dbClient.AddParameter("password", room.Password); dbClient.AddParameter("state", AccessStr); dbClient.AddParameter("tags", formattedTags.ToString()); dbClient.RunQuery(); } room.GetGameMap().GenerateMaps(); if (session.GetHabbo().CurrentRoom == null) { session.SendPacket(new RoomSettingsSavedComposer(room.RoomId)); session.SendPacket(new RoomInfoUpdatedComposer(room.RoomId)); session.SendPacket(new RoomVisualizationSettingsComposer(room.WallThickness, room.FloorThickness, PlusEnvironment.EnumToBool(room.Hidewall.ToString()))); } else { room.SendPacket(new RoomSettingsSavedComposer(room.RoomId)); room.SendPacket(new RoomInfoUpdatedComposer(room.RoomId)); room.SendPacket(new RoomVisualizationSettingsComposer(room.WallThickness, room.FloorThickness, PlusEnvironment.EnumToBool(room.Hidewall.ToString()))); } PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_SelfModDoorModeSeen", 1); PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_SelfModWalkthroughSeen", 1); PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_SelfModChatScrollSpeedSeen", 1); PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_SelfModChatFloodFilterSeen", 1); PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(session, "ACH_SelfModChatHearRangeSeen", 1); }
private void FinishOpenGift(GameClient Session, ItemData BaseItem, Item Present, Room Room, DataRow Row) { try { if (BaseItem == null || Present == null || Room == null || Row == null) { return; } Thread.Sleep(1500); bool ItemIsInRoom = true; Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `items` SET `base_item` = @BaseItem, `extra_data` = @edata WHERE `id` = @itemId LIMIT 1"); dbClient.AddParameter("itemId", Present.Id); dbClient.AddParameter("BaseItem", Row["base_id"]); dbClient.AddParameter("edata", Row["extra_data"]); dbClient.RunQuery(); dbClient.RunQuery("DELETE FROM `user_presents` WHERE `item_id` = " + Present.Id + " LIMIT 1"); } Present.BaseItem = Convert.ToInt32(Row["base_id"]); Present.ResetBaseItem(); Present.ExtraData = (!string.IsNullOrEmpty(Convert.ToString(Row["extra_data"])) ? Convert.ToString(Row["extra_data"]) : ""); if (Present.Data.Type == 's') { if (!Room.GetRoomItemHandler().SetFloorItem(Session, Present, Present.GetX, Present.GetY, Present.Rotation, true, false, true)) { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = @itemId LIMIT 1"); dbClient.AddParameter("itemId", Present.Id); dbClient.RunQuery(); } ItemIsInRoom = false; } } else { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = @itemId LIMIT 1"); dbClient.AddParameter("itemId", Present.Id); dbClient.RunQuery(); } ItemIsInRoom = false; } Session.SendPacket(new OpenGiftComposer(Present.Data, Present.ExtraData, Present, ItemIsInRoom)); Session.GetHabbo().GetInventoryComponent().UpdateItems(true); } catch { } }
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().Username); 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.SendNotification("Oops, al parecer en este momento no puede cambiar su nombre!"); return; } bool InUse = false; using (IQueryAdapter dbClient = NeonEnvironment.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.,_-;:?!1234567890"; foreach (char Chr in Letters) { if (!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; } else if (NewName.Length > 15) { return; } else if (NewName.Length < 3) { return; } else if (InUse) { return; } else { if (!NeonEnvironment.GetGame().GetClientManager().UpdateClientUsername(Session, OldName, NewName)) { Session.SendNotification("Oops! ha ocurrido un problema mientras se actualizaba su nuevo nombre."); return; } Session.GetHabbo().ChangingName = false; Room.GetRoomUserManager().RemoveUserFromRoom(Session, true, false); Session.GetHabbo().ChangeName(NewName); Session.GetHabbo().GetMessenger().OnStatusChanged(true); Session.SendMessage(new UpdateUsernameComposer(NewName)); Room.SendMessage(new UserNameChangeComposer(Room.Id, User.VirtualId, NewName)); using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `logs_client_namechange` (`user_id`,`new_name`,`old_name`,`timestamp`) VALUES ('" + Session.GetHabbo().Id + "', @name, '" + OldName + "', '" + NeonEnvironment.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 NeonEnvironment.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)); } NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_Name", 1); Session.SendMessage(new RoomForwardComposer(Room.Id)); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { bool InUse = false; string Name = Packet.PopString(); using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT COUNT(0) FROM `users` WHERE `username` = @name LIMIT 1"); dbClient.AddParameter("name", Name); InUse = dbClient.getInteger() == 1; } char[] Letters = Name.ToLower().ToCharArray(); string AllowedCharacters = "abcdefghijklmnopqrstuvwxyz.,_-;:?!1234567890"; foreach (char Chr in Letters) { if (!AllowedCharacters.Contains(Chr)) { Session.SendMessage(new NameChangeUpdateComposer(Name, 4)); return; } } string word; if (CloudServer.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(Name, out word)) { Session.SendMessage(new NameChangeUpdateComposer(Name, 4)); return; } if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool") && Name.ToLower().Contains("mod") || Name.ToLower().Contains("adm") || Name.ToLower().Contains("admin") || Name.ToLower().Contains("m0d")) { Session.SendMessage(new NameChangeUpdateComposer(Name, 4)); return; } else if (!Name.ToLower().Contains("mod") && (Session.GetHabbo().Rank == 2 || Session.GetHabbo().Rank == 3)) { Session.SendMessage(new NameChangeUpdateComposer(Name, 4)); return; } else if (Name.Length > 15) { Session.SendMessage(new NameChangeUpdateComposer(Name, 3)); return; } else if (Name.Length < 3) { Session.SendMessage(new NameChangeUpdateComposer(Name, 2)); return; } else if (InUse) { ICollection <string> Suggestions = new List <string>(); for (int i = 100; i < 103; i++) { Suggestions.Add(i.ToString()); } Session.SendMessage(new NameChangeUpdateComposer(Name, 5, Suggestions)); return; } else { Session.SendMessage(new NameChangeUpdateComposer(Name, 0)); return; } }
public bool TryExecute(string[] parameters) { if (!int.TryParse(parameters[0], out int userId)) { return(false); } GameClient client = PlusEnvironment.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]); if (!int.TryParse(parameters[2], out int amount)) { return(false); } switch (currency) { default: return(false); case "coins": case "credits": { client.GetHabbo().Credits += amount; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `credits` = @credits WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("credits", client.GetHabbo().Credits); dbClient.AddParameter("id", userId); dbClient.RunQuery(); } client.SendPacket(new CreditBalanceComposer(client.GetHabbo().Credits)); break; } case "pixels": case "duckets": { client.GetHabbo().Duckets += amount; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `activity_points` = @duckets WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("duckets", client.GetHabbo().Duckets); dbClient.AddParameter("id", userId); dbClient.RunQuery(); } client.SendPacket(new HabboActivityPointNotificationComposer(client.GetHabbo().Duckets, amount)); break; } case "diamonds": { client.GetHabbo().Diamonds += amount; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `vip_points` = @diamonds WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("diamonds", client.GetHabbo().Diamonds); dbClient.AddParameter("id", userId); dbClient.RunQuery(); } client.SendPacket(new HabboActivityPointNotificationComposer(client.GetHabbo().Diamonds, 0, 5)); break; } case "gotw": { client.GetHabbo().GOTWPoints += amount; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `gotw_points` = @gotw WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("gotw", client.GetHabbo().GOTWPoints); dbClient.AddParameter("id", userId); dbClient.RunQuery(); } client.SendPacket(new HabboActivityPointNotificationComposer(client.GetHabbo().GOTWPoints, 0, 103)); break; } } return(true); }
public static List <Item> CreateTeleporterItems(ItemData Data, Habbo Habbo, int GroupId = 0) { List <Item> Items = new List <Item>(); using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `items` (base_item,user_id,room_id,x,y,z,wall_pos,rot,extra_data) VALUES(@did,@uid,@rid,@x,@y,@z,@wallpos,@rot,@flags);"); dbClient.AddParameter("did", Data.Id); dbClient.AddParameter("uid", Habbo.Id); dbClient.AddParameter("rid", 0); dbClient.AddParameter("x", 0); dbClient.AddParameter("y", 0); dbClient.AddParameter("z", 0); dbClient.AddParameter("wallpos", ""); dbClient.AddParameter("rot", 0); dbClient.AddParameter("flags", ""); int Item1Id = Convert.ToInt32(dbClient.InsertQuery()); dbClient.SetQuery("INSERT INTO `items` (base_item,user_id,room_id,x,y,z,wall_pos,rot,extra_data) VALUES(@did,@uid,@rid,@x,@y,@z,@wallpos,@rot,@flags);"); dbClient.AddParameter("did", Data.Id); dbClient.AddParameter("uid", Habbo.Id); dbClient.AddParameter("rid", 0); dbClient.AddParameter("x", 0); dbClient.AddParameter("y", 0); dbClient.AddParameter("z", 0); dbClient.AddParameter("wallpos", ""); dbClient.AddParameter("rot", 0); dbClient.AddParameter("flags", Item1Id.ToString()); int Item2Id = Convert.ToInt32(dbClient.InsertQuery()); Item Item1 = new Item(Item1Id, 0, Data.Id, "", 0, 0, 0, 0, Habbo.Id, GroupId, 0, 0, ""); Item Item2 = new Item(Item2Id, 0, Data.Id, "", 0, 0, 0, 0, Habbo.Id, GroupId, 0, 0, ""); dbClient.SetQuery("INSERT INTO `room_items_tele_links` (`tele_one_id`, `tele_two_id`) VALUES (" + Item1Id + ", " + Item2Id + "), (" + Item2Id + ", " + Item1Id + ")"); dbClient.RunQuery(); Items.Add(Item1); Items.Add(Item2); } return(Items); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null || Session.GetHabbo().CurrentRoomId != Room.Id || !Room.CheckRights(Session, true)) { 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' }; string Map = Packet.PopString().ToLower().TrimEnd(); if (Map.Length > 4159) //4096 + New Lines = 4159 { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "(%%%general%%%): %%%too_large_area%%% (%%%max%%% 2048 %%%tiles%%%)")); return; } if (Map.Any(letter => !validLetters.Contains(letter)) || String.IsNullOrEmpty(Map)) { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "Oops, it appears that you have entered an invalid floor map!")); return; } var modelData = Map.Split('\r'); int SizeY = modelData.Length; int SizeX = modelData[0].Length; if (SizeY > 64 || SizeX > 64) { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "The maximum height and width of a model is 64x64!")); return; } int lastLineLength = 0; bool isValid = true; for (int i = 0; i < modelData.Length; i++) { if (lastLineLength == 0) { lastLineLength = modelData[i].Length; continue; } if (lastLineLength != modelData[i].Length) { isValid = false; } } if (!isValid) { Session.SendPacket(new RoomNotificationComposer("floorplan_editor.error", "errors", "Oops, it appears that you have entered an invalid floor map!")); return; } int DoorX = Packet.PopInt(); int DoorY = Packet.PopInt(); int DoorDirection = Packet.PopInt(); int WallThick = Packet.PopInt(); int FloorThick = Packet.PopInt(); int WallHeight = Packet.PopInt(); 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; } string ModelName = "model_bc_" + Room.Id; Map += '\r' + new string('x', SizeX); DataRow Row = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM `room_models` WHERE `id` = @model AND `custom` = '1' LIMIT 1"); dbClient.AddParameter("model", "model_bc_" + Room.Id); Row = dbClient.GetRow(); if (Row == null)//The row is still null, let's insert instead. { dbClient.SetQuery("INSERT INTO `room_models` (`id`,`door_x`,`door_y`, `door_z`, `door_dir`,`heightmap`,`custom`,`wall_height`) VALUES (@ModelName, @DoorX, @DoorY, @DoorZ, @DoorDirection, @Map,'1',@WallHeight)"); dbClient.AddParameter("ModelName", "model_bc_" + Room.Id); dbClient.AddParameter("DoorX", DoorX); dbClient.AddParameter("DoorY", DoorY); dbClient.AddParameter("DoorDirection", DoorDirection); dbClient.AddParameter("DoorZ", DoorZ); dbClient.AddParameter("Map", Map); dbClient.AddParameter("WallHeight", WallHeight); dbClient.RunQuery(); } else { dbClient.SetQuery("UPDATE `room_models` SET `heightmap` = @Map, `door_x` = @DoorX, `door_y` = @DoorY, `door_z` = @DoorZ, `door_dir` = @DoorDirection, `wall_height` = @WallHeight WHERE `id` = @ModelName LIMIT 1"); dbClient.AddParameter("ModelName", "model_bc_" + Room.Id); dbClient.AddParameter("Map", Map); dbClient.AddParameter("DoorX", DoorX); dbClient.AddParameter("DoorY", DoorY); dbClient.AddParameter("DoorZ", DoorZ); dbClient.AddParameter("DoorDirection", DoorDirection); dbClient.AddParameter("WallHeight", WallHeight); dbClient.RunQuery(); } dbClient.SetQuery("UPDATE `rooms` SET `model_name` = @ModelName, `wallthick` = @WallThick, `floorthick` = @FloorThick WHERE `id` = @roomId LIMIT 1"); dbClient.AddParameter("roomId", Room.Id); dbClient.AddParameter("ModelName", "model_bc_" + Room.Id); dbClient.AddParameter("WallThick", WallThick); dbClient.AddParameter("FloorThick", FloorThick); dbClient.RunQuery(); } Room.RoomData.ModelName = ModelName; Room.RoomData.WallThickness = WallThick; Room.RoomData.FloorThickness = FloorThick; List <RoomUser> UsersToReturn = Room.GetRoomUserManager().GetRoomUsers().ToList(); PlusEnvironment.GetGame().GetRoomManager().ReloadModel(ModelName); PlusEnvironment.GetGame().GetRoomManager().UnloadRoom(Room); foreach (RoomUser User in UsersToReturn) { if (User == null || User.GetClient() == null) { continue; } User.GetClient().SendPacket(new RoomForwardComposer(Room.Id)); } }
public IWiredItem LoadWiredBox(Item Item) { IWiredItem NewBox = GenerateNewBox(Item); DataRow Row = null; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM wired_items WHERE id=@id LIMIT 1"); dbClient.AddParameter("id", Item.Id); Row = dbClient.getRow(); if (Row != null) { if (String.IsNullOrEmpty(Convert.ToString(Row["string"]))) { if (NewBox.Type == WiredBoxType.ConditionMatchStateAndPosition || NewBox.Type == WiredBoxType.ConditionDontMatchStateAndPosition) { NewBox.StringData = "0;0;0"; } else if (NewBox.Type == WiredBoxType.ConditionUserCountInRoom || NewBox.Type == WiredBoxType.ConditionUserCountDoesntInRoom) { NewBox.StringData = "0;0"; } else if (NewBox.Type == WiredBoxType.ConditionFurniHasNoFurni) { NewBox.StringData = "0"; } else if (NewBox.Type == WiredBoxType.EffectMatchPosition) { NewBox.StringData = "0;0;0"; } else if (NewBox.Type == WiredBoxType.EffectMoveAndRotate) { NewBox.StringData = "0;0"; } } NewBox.StringData = Convert.ToString(Row["string"]); NewBox.BoolData = Convert.ToInt32(Row["bool"]) == 1; NewBox.ItemsData = Convert.ToString(Row["items"]); if (NewBox is IWiredCycle) { IWiredCycle Box = (IWiredCycle)NewBox; Box.Delay = Convert.ToInt32(Row["delay"]); } foreach (string str in Convert.ToString(Row["items"]).Split(';')) { int Id = 0; string sId = "0"; if (str.Contains(':')) { sId = str.Split(':')[0]; } if (int.TryParse(str, out Id) || int.TryParse(sId, out Id)) { Item SelectedItem = _room.GetRoomItemHandler().GetItem(Convert.ToInt32(Id)); if (SelectedItem == null) { continue; } NewBox.SetItems.TryAdd(SelectedItem.Id, SelectedItem); } } } else { NewBox.ItemsData = ""; NewBox.StringData = ""; NewBox.BoolData = false; this.SaveBox(NewBox); } } if (!this.AddBox(NewBox)) { // ummm } return(NewBox); }
public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet) { if (!session.GetHabbo().InRoom) { return; } Room room = session.GetHabbo().CurrentRoom; if (room == null) { return; } int botId = packet.PopInt(); int actionId = packet.PopInt(); string dataString = packet.PopString(); if (actionId < 1 || actionId > 5) { return; } if (!room.GetRoomUserManager().TryGetBot(botId, out RoomUser bot)) { return; } if (bot.BotData.OwnerId != session.GetHabbo().Id&& !session.GetHabbo().GetPermissions().HasRight("bot_edit_any_override")) { 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; UserChangeComposer userChangeComposer = new UserChangeComposer(bot.VirtualId, bot.BotData); room.SendPacket(userChangeComposer); using (IQueryAdapter dbClient = PlusEnvironment.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(); } //Room.SendMessage(new UserChangeComposer(BotUser.GetClient(), true)); break; } #endregion #region Setup Speech (2) case 2: { string[] configData = dataString.Split(new[] { ";#;" }, StringSplitOptions.None); string[] speechData = configData[0].Split(new[] { '\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); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `bots_speech` WHERE `bot_id` = '" + bot.BotData.Id + "'"); #region Save Data - TODO: MAKE METHODS FOR THIS. for (int i = 0; i <= speechData.Length - 1; i++) { dbClient.SetQuery("INSERT INTO `bots_speech` (`bot_id`, `text`) VALUES (@id, @data)"); dbClient.AddParameter("id", botId); dbClient.AddParameter("data", speechData[i]); dbClient.RunQuery(); dbClient.SetQuery("UPDATE `bots` SET `automatic_chat` = @AutomaticChat, `speaking_interval` = @SpeakingInterval, `mix_sentences` = @MixChat WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("id", botId); dbClient.AddParameter("AutomaticChat", automaticChat.ToLower()); dbClient.AddParameter("SpeakingInterval", Convert.ToInt32(speakingInterval)); dbClient.AddParameter("MixChat", PlusEnvironment.BoolToEnum(Convert.ToBoolean(mixChat))); dbClient.RunQuery(); } #endregion #region Handle Speech roomBot.RandomSpeech.Clear(); dbClient.SetQuery("SELECT `text` FROM `bots_speech` WHERE `bot_id` = @id"); dbClient.AddParameter("id", botId); DataTable botSpeech = dbClient.GetTable(); foreach (DataRow speech in botSpeech.Rows) { roomBot.RandomSpeech.Add(new RandomSpeech(Convert.ToString(speech["text"]), botId)); } #endregion } break; } #endregion #region Relax (3) case 3: { if (bot.BotData.WalkingMode == "stand") { bot.BotData.WalkingMode = "freeroam"; } else { bot.BotData.WalkingMode = "stand"; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `bots` SET `walk_mode` = '" + bot.BotData.WalkingMode + "' WHERE `id` = '" + bot.BotData.Id + "' LIMIT 1"); } break; } #endregion #region Dance (4) case 4: { if (bot.BotData.DanceId > 0) { bot.BotData.DanceId = 0; } else { Random randomDance = new Random(); bot.BotData.DanceId = randomDance.Next(1, 4); } room.SendPacket(new DanceComposer(bot.VirtualId, bot.BotData.DanceId)); break; } #endregion #region Change Name (5) case 5: { if (dataString.Length == 0) { session.SendWhisper("Come on, atleast give the bot a name!"); return; } else if (dataString.Length >= 16) { session.SendWhisper("Come on, the bot doesn't need a name that long!"); return; } if (dataString.Contains("<img src") || dataString.Contains("<font ") || dataString.Contains("</font>") || dataString.Contains("</a>") || dataString.Contains("<i>")) { session.SendWhisper("No HTML, please :<"); return; } bot.BotData.Name = dataString; using (IQueryAdapter dbClient = PlusEnvironment.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 UsersComposer(bot)); break; } #endregion } }
public void Parse(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("Your partner has left the room or has cancelled the love lock."); return; } if (userOne.GetClient() == null || userTwo.GetClient() == null) { item.InteractingUser = 0; item.InteractingUser2 = 0; session.SendNotification("Your partner has left the room or has cancelled the love lock."); return; } if (userOne == null) { userTwo.CanWalk = true; userTwo.GetClient().SendNotification("Your partner has left the room or has cancelled the love lock."); userTwo.LLPartner = 0; item.InteractingUser = 0; item.InteractingUser2 = 0; return; } if (userTwo == null) { userOne.CanWalk = true; userOne.GetClient().SendNotification("Your partner has left the room or has cancelled the love lock."); userOne.LLPartner = 0; item.InteractingUser = 0; item.InteractingUser2 = 0; return; } if (item.ExtraData.Contains(Convert.ToChar(5).ToString())) { userTwo.CanWalk = true; userTwo.GetClient().SendNotification("It appears this love lock has already been locked."); userTwo.LLPartner = 0; userOne.CanWalk = true; userOne.GetClient().SendNotification("It appears this love lock has already been locked."); userOne.LLPartner = 0; item.InteractingUser = 0; item.InteractingUser2 = 0; return; } if (!isConfirmed) { item.InteractingUser = 0; item.InteractingUser2 = 0; userOne.LLPartner = 0; userTwo.LLPartner = 0; userOne.CanWalk = true; userTwo.CanWalk = true; return; } if (userOneId == session.GetHabbo().Id) { session.SendPacket(new LoveLockDialogueSetLockedMessageComposer(pId)); userOne.LLPartner = userTwoId; } else if (userTwoId == session.GetHabbo().Id) { session.SendPacket(new LoveLockDialogueSetLockedMessageComposer(pId)); userTwo.LLPartner = userOneId; } if (userOne.LLPartner == 0 || userTwo.LLPartner == 0) { return; } 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 = PlusEnvironment.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().SendPacket(new LoveLockDialogueCloseMessageComposer(pId)); userTwo.GetClient().SendPacket(new LoveLockDialogueCloseMessageComposer(pId)); userOne.CanWalk = true; userTwo.CanWalk = true; userOne = null; userTwo = null; }
public void Parse(GameClient Session, ClientPacket Packet) { ICollection <Item> FloorItems = Session.GetHabbo().GetInventoryComponent().GetFloorItems(); ICollection <Item> WallItems = Session.GetHabbo().GetInventoryComponent().GetWallItems(); if (BiosEmuThiago.GetGame().GetSettingsManager().TryGetValue("catalog.enabled") != "1") { Session.SendNotification("Os gerentes do Hotel desabilitaram o catalogo!"); return; } int PageId = Packet.PopInt(); int ItemId = Packet.PopInt(); string ExtraData = Packet.PopString(); int Amount = Packet.PopInt(); if (!BiosEmuThiago.GetGame().GetCatalog().TryGetPage(PageId, out CatalogPage Page)) { return; } if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (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 (Session.GetHabbo().Rank > 0) { DataRow presothiago = null; using (var dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT Presidio FROM users WHERE id = '" + Session.GetHabbo().Id + "'"); presothiago = dbClient.getRow(); } if (Convert.ToBoolean(presothiago["Presidio"]) == true) { if (Session.GetHabbo().Rank > 0) { string thiago = Session.GetHabbo().Look; Session.SendMessage(new RoomNotificationComposer("police_announcement", "message", "Você esta preso e não pode comprar no catálogo.")); return; } } } ItemData baseItem = Item.GetBaseItem(Item.ItemId); if (baseItem != null) { if (baseItem.InteractionType == InteractionType.club_1_month || baseItem.InteractionType == InteractionType.club_3_month || baseItem.InteractionType == InteractionType.club_6_month) { int Months = 0; switch (baseItem.InteractionType) { case InteractionType.club_1_month: Months = 1; break; case InteractionType.club_3_month: Months = 3; break; case InteractionType.club_6_month: Months = 6; break; } int num = num = 31 * Months; if (Item.CostCredits > Session.GetHabbo().Credits || Item.CostPixels > Session.GetHabbo().Duckets || Item.CostDiamonds > Session.GetHabbo().Diamonds || Item.CostGotw > Session.GetHabbo().GOTWPoints) { return; } 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));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGotw; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } Session.GetHabbo().GetClubManager().AddOrExtendSubscription("habbo_vip", num * 24 * 3600, Session); Session.GetHabbo().GetBadgeComponent().GiveBadge("HC1", true, Session); Session.SendMessage(new ScrSendUserInfoComposer(Session.GetHabbo())); Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendMessage(new FurniListUpdateComposer()); return; } } if (baseItem.InteractionType == InteractionType.namecolor) { if (Item.CostCredits > Session.GetHabbo().Credits || Item.CostPixels > Session.GetHabbo().Duckets || Item.CostDiamonds > Session.GetHabbo().Diamonds || Item.CostGotw > Session.GetHabbo().GOTWPoints) { return; } 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));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGotw; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.runFastQuery("UPDATE `users` SET `name_color` = '#" + Item.Name + "' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } Session.GetHabbo().chatHTMLColour = "#" + Item.Name; Session.SendMessage(new ScrSendUserInfoComposer(Session.GetHabbo())); Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendMessage(new FurniListUpdateComposer()); return; } if (baseItem.InteractionType == InteractionType.prefixname) { if (ExtraData.Length > 6 || ExtraData.Length == 0 || ExtraData.Length < 0) { Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendWhisper("Você deve digitar um código de 1 a 6 caracteres para adquirir.", 34); return; } if (!Session.GetHabbo().GetPermissions().HasRight("word_filter_override") && BiosEmuThiago.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(ExtraData, out string word)) { // Todos os direitos resevados ao criador do comando: Thiago Araujo (Plus Emulador) Servidores de SAO // Comando editaveu abaixo mais cuidado pra não faze merda Session.GetHabbo().BannedPhraseCount++; if (Session.GetHabbo().BannedPhraseCount >= 1) { Session.GetHabbo().TimeMuted = 10; Session.SendNotification("Você foi silenciado, um moderador vai rever o seu caso, aparentemente, você nomeou um hotel! Não continue divulgando ser for um hotel pois temos ante divulgação - Aviso<font size =\"11\" color=\"#fc0a3a\"> <b>" + Session.GetHabbo().BannedPhraseCount + "/5</b></font> Se chega ao numero 5/5 você sera banido automaticamente"); BiosEmuThiago.GetGame().GetClientManager().StaffAlert(new RoomNotificationComposer("Alerta publicitário:", "Atenção colaboradores, o usuário <b>" + Session.GetHabbo().Username + "</b> divulgou um link de um site ou hotel na compra de uma tag na loja, você poderia investigar? so click no botão abaixo *Ir ao Quarto*. <i> a palavra dita:<font size =\"11\" color=\"#f40909\"> <b> " + ExtraData + "</b></font></i> dentro de um quarto\r\n" + "- Nome do usuário: <font size =\"11\" color=\"#0b82c6\"> <b>" + Session.GetHabbo().Username + "</b>", "", "Ir ao Quarto", "event:navigator/goto/" + Session.GetHabbo().CurrentRoomId)); } if (Session.GetHabbo().BannedPhraseCount >= 5) { BiosEmuThiago.GetGame().GetModerationManager().BanUser("BiosEmulador ante divulgação", HabboHotel.Moderation.ModerationBanType.USERNAME, Session.GetHabbo().Username, "Banido por spam com a frase (" + ExtraData + ")", (BiosEmuThiago.GetUnixTimestamp() + 78892200)); Session.Disconnect(); return; } Session.SendMessage(new RoomNotificationComposer("furni_placement_error", "message", "Mensagem inapropiada no " + BiosEmuThiago.HotelName + " . Estamos investigando o que você falou" + " " + Session.GetHabbo().Username + " " + "no quarto!")); return; } if (ExtraData.ToUpper().Contains("ADM") || ExtraData.ToUpper().Contains("ADMIN") || ExtraData.ToUpper().Contains("GER") || ExtraData.ToUpper().Contains("DONO") || ExtraData.ToUpper().Contains("RANK") || ExtraData.ToUpper().Contains("MNG") || ExtraData.ToUpper().Contains("MOD") || ExtraData.ToUpper().Contains("STAFF") || ExtraData.ToUpper().Contains("ALFA") || ExtraData.ToUpper().Contains("ALPHA") || ExtraData.ToUpper().Contains("HELPER") || ExtraData.ToUpper().Contains("GM") || ExtraData.ToUpper().Contains("CEO") || ExtraData.ToUpper().Contains("ROOKIE") || ExtraData.ToUpper().Contains("M0D") || ExtraData.ToUpper().Contains("DEV") || ExtraData.ToUpper().Contains("OWNR") || ExtraData.ToUpper().Contains("FUNDADOR") || ExtraData.ToUpper().Contains("<") || ExtraData.ToUpper().Contains(">") || ExtraData.ToUpper().Contains("POLICIAL") || ExtraData.ToUpper().Contains("policial") || ExtraData.ToUpper().Contains("ajudante") || ExtraData.ToUpper().Contains("embaixador") || ExtraData.ToUpper().Contains("AJUDANTE") || ExtraData.ToUpper().Contains("EMBAIXADOR") || ExtraData.ToUpper().Contains("VIP") || ExtraData.ToUpper().Contains("vip") || ExtraData.ToUpper().Contains("PROG") || ExtraData.ToUpper().Contains("prog")) { Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendWhisper("O que você está tentando? Não coloque uma tag administrativa ou você será punido", 34); return; } if (ExtraData == "off" || ExtraData == "") { Session.GetHabbo()._NamePrefix = ""; Session.SendNotification("você tem prefixos de nomes eficientes para o seu " + BiosEmuThiago.HotelName + "'s"); } ExtraData = BiosEmuThiago.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(ExtraData, out string character) ? "" : ExtraData; if (string.IsNullOrEmpty(ExtraData)) { Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendWhisper(character.ToUpper() + " Não é uma palavra apropriada!", 34); return; } if (Item.CostCredits > Session.GetHabbo().Credits || Item.CostPixels > Session.GetHabbo().Duckets || Item.CostDiamonds > Session.GetHabbo().Diamonds || Item.CostGotw > Session.GetHabbo().GOTWPoints) { return; } 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));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGotw; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.runFastQuery("UPDATE `users` SET `prefix_name` = '" + ExtraData + "' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } Session.GetHabbo()._NamePrefix = ExtraData; Session.SendMessage(new ScrSendUserInfoComposer(Session.GetHabbo())); Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendMessage(new FurniListUpdateComposer()); return; } if (baseItem.InteractionType == InteractionType.prefixcolor) { if (Item.CostCredits > Session.GetHabbo().Credits || Item.CostPixels > Session.GetHabbo().Duckets || Item.CostDiamonds > Session.GetHabbo().Diamonds || Item.CostGotw > Session.GetHabbo().GOTWPoints) { return; } 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));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGotw; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `prefix_name_color` = @prefixn WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); dbClient.AddParameter("prefixn", "#" + Item.Name); dbClient.RunQuery(); } Session.GetHabbo()._NamePrefixColor = "#" + Item.Name; Session.SendMessage(new ScrSendUserInfoComposer(Session.GetHabbo())); Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendMessage(new FurniListUpdateComposer()); return; } if (baseItem.InteractionType == InteractionType.CLUB_VIP || baseItem.InteractionType == InteractionType.CLUB_VIP2) { // int Months = 0; switch (baseItem.InteractionType) { case InteractionType.CLUB_VIP: /// Months = 1; break; case InteractionType.CLUB_VIP2: // Months = 3; break; } if (Item.CostCredits > Session.GetHabbo().Credits || Item.CostPixels > Session.GetHabbo().Duckets || Item.CostDiamonds > Session.GetHabbo().Diamonds || Item.CostGotw > Session.GetHabbo().GOTWPoints) { return; } 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));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGotw; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } Session.GetHabbo().GetClubManager().AddOrExtendSubscription("club_vip", 1 * 24 * 3600, Session); Session.GetHabbo().GetBadgeComponent().GiveBadge("DVIP", true, Session); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_VipClub", 1); Session.SendMessage(new ScrSendUserInfoComposer(Session.GetHabbo())); Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendMessage(new FurniListUpdateComposer()); if (Session.GetHabbo().Rank > 2) { Session.SendWhisper("Ops! Deu ruim ai!"); return; } else if (Session.GetHabbo().Rank < 2) { using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.runFastQuery("UPDATE `users` SET `rank` = '2' WHERE `id` = '" + Session.GetHabbo().Id + "'"); dbClient.runFastQuery("UPDATE `users` SET `rank_vip` = '1' WHERE `id` = '" + Session.GetHabbo().Id + "'"); Session.GetHabbo().Rank = 2; Session.GetHabbo().VIPRank = 1; } } return; } if (Amount < 1 || Amount > 100 || !Item.HaveOffer) { Amount = 1; } int AmountPurchase = Item.Amount > 1 ? Item.Amount : Amount; int TotalCreditsCost = Amount > 1 ? ((Item.CostCredits * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostCredits)) : Item.CostCredits; int TotalPixelCost = Amount > 1 ? ((Item.CostPixels * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostPixels)) : Item.CostPixels; int TotalDiamondCost = Amount > 1 ? ((Item.CostDiamonds * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostDiamonds)) : Item.CostDiamonds; int TotalGotwCost = Amount > 1 ? ((Item.CostGotw * Amount) - ((int)Math.Floor((double)Amount / 6) * Item.CostGotw)) : Item.CostGotw; if (Session.GetHabbo().Credits < TotalCreditsCost || Session.GetHabbo().Duckets < TotalPixelCost || Session.GetHabbo().Diamonds < TotalDiamondCost || Session.GetHabbo().GOTWPoints < TotalGotwCost) { return; } int LimitedEditionSells = 0; int LimitedEditionStack = 0; #region PREDESIGNED_ROOM if (Item.PredesignedId > 0 && BiosEmuThiago.GetGame().GetCatalog().GetPredesignedRooms().predesignedRoom.ContainsKey((uint)Item.PredesignedId)) { if (Item.CostCredits > Session.GetHabbo().Credits) { return; } 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));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= Item.CostDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= Item.CostGotw; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } #region SELECT ROOM AND CREATE NEW var predesigned = BiosEmuThiago.GetGame().GetCatalog().GetPredesignedRooms().predesignedRoom[(uint)Item.PredesignedId]; var decoration = predesigned.RoomDecoration; var createRoom = BiosEmuThiago.GetGame().GetRoomManager().CreateRoom(Session, "Pack: " + Item.Name + " !", "Esse é um pack de quarto Comprado na loja do hotel!", predesigned.RoomModel, 1, 25, 1); createRoom.FloorThickness = int.Parse(decoration[0]); createRoom.WallThickness = int.Parse(decoration[1]); createRoom.Model.WallHeight = int.Parse(decoration[2]); createRoom.Hidewall = ((decoration[3] == "True") ? 1 : 0); createRoom.Wallpaper = decoration[4]; createRoom.Landscape = decoration[5]; createRoom.Floor = decoration[6]; var newRoom = BiosEmuThiago.GetGame().GetRoomManager().LoadRoom(createRoom.Id); #endregion #region CREATE FLOOR ITEMS if (predesigned.FloorItems != null) { foreach (var floorItems in predesigned.FloorItemData) { using (var dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) dbClient.RunQuery("INSERT INTO items VALUES (null, " + Session.GetHabbo().Id + ", " + newRoom.RoomId + ", " + floorItems.BaseItem + ", '" + floorItems.ExtraData + "', " + floorItems.X + ", " + floorItems.Y + ", " + TextHandling.GetString(floorItems.Z) + ", " + floorItems.Rot + ", '', 0, 0);"); } } #endregion #region CREATE WALL ITEMS if (predesigned.WallItems != null) { foreach (var wallItems in predesigned.WallItemData) { using (var dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) dbClient.RunQuery("INSERT INTO items VALUES (null, " + Session.GetHabbo().Id + ", " + newRoom.RoomId + ", " + wallItems.BaseItem + ", '" + wallItems.ExtraData + "', 0, 0, 0, 0, '" + wallItems.WallCoord + "', 0, 0);"); } } #endregion #region VERIFY IF CONTAINS BADGE AND GIVE if (Item.Badge != string.Empty) { Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.Badge, true, Session); } #endregion #region GENERATE ROOM AND SEND PACKET Session.SendMessage(new PurchaseOKComposer()); Session.GetHabbo().GetInventoryComponent().UpdateItems(false); BiosEmuThiago.GetGame().GetRoomManager().LoadRoom(newRoom.Id).GetRoomItemHandler().LoadFurniture(); var newFloorItems = newRoom.GetRoomItemHandler().GetFloor; foreach (var roomItem in newFloorItems) { newRoom.GetRoomItemHandler().SetFloorItem(roomItem, roomItem.GetX, roomItem.GetY, roomItem.GetZ); } var newWallItems = newRoom.GetRoomItemHandler().GetWall; foreach (var roomItem in newWallItems) { newRoom.GetRoomItemHandler().SetWallItem(Session, roomItem); } Session.SendMessage(new FlatCreatedComposer(newRoom.Id, newRoom.Name)); #endregion return; } #endregion #region Create the extradata switch (Item.Data.InteractionType) { case InteractionType.NONE: ExtraData = ""; break; case InteractionType.GUILD_FORUM: Group Gp; GroupForum Gf; int GpId; if (!int.TryParse(ExtraData, out GpId)) { Session.SendNotification("Ops! Ocorreu algum erro ao obter o ID do grupo"); Session.SendMessage(new PurchaseOKComposer()); return; } if (!BiosEmuThiago.GetGame().GetGroupManager().TryGetGroup(GpId, out Gp)) { Session.SendNotification("Ops! Esse ID não existe!"); Session.SendMessage(new PurchaseOKComposer()); return; } if (Gp.CreatorId != Session.GetHabbo().Id) { Session.SendNotification("Ops! Você não é o proprietário do grupo.\n\nFórum deve ser criado pelo proprietário do grupo..."); Session.SendMessage(new PurchaseOKComposer()); return; } Gf = BiosEmuThiago.GetGame().GetGroupForumManager().CreateGroupForum(Gp); Session.SendMessage(new RoomNotificationComposer("forums.delivered", new Dictionary <string, string> { { "groupId", Gp.Id.ToString() }, { "groupName", Gp.Name } })); break; case InteractionType.GUILD_FORUM_CHAT: Group thegroup; Group Group = null; if (!BiosEmuThiago.GetGame().GetGroupManager().TryGetGroup(Convert.ToInt32(ExtraData), out thegroup)) { return; } if (!(BiosEmuThiago.GetGame().GetGroupManager().GetGroupsForUser(Session.GetHabbo().Id).Contains(thegroup))) { return; } int groupID = Convert.ToInt32(ExtraData); if (thegroup.CreatorId != Session.GetHabbo().Id) { Session.SendNotification("Ops! Você não é o dono do grupo para pode compra o chat de grupo!"); Session.SendMessage(new PurchaseOKComposer()); return; } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE groups SET has_chat = '1' WHERE id = @id"); dbClient.AddParameter("id", groupID); dbClient.RunQuery(); } BiosEmuThiago.GetGame().GetClientManager().GetClientByUserID(Session.GetHabbo().Id).SendMessage(new FriendListUpdateComposer(Group, 1)); Session.SendNotification("Chat de grupo criado com exito! Bom proveitos a todos os membros."); Session.SendMessage(new PurchaseOKComposer()); break; case InteractionType.GUILD_ITEM: case InteractionType.GUILD_GATE: case InteractionType.HCGATE: case InteractionType.VIPGATE: break; case InteractionType.PINATA: case InteractionType.PINATATRIGGERED: case InteractionType.MAGICEGG: case InteractionType.MAGICCHEST: ExtraData = "0"; break; #region Pet handling case InteractionType.PET: try { string[] Bits = ExtraData.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; } BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1); } catch (Exception e) { ExceptionLogger.LogException(e); return; } break; #endregion case InteractionType.FLOOR: case InteractionType.WALLPAPER: case InteractionType.LANDSCAPE: Double Number = 0; try { if (string.IsNullOrEmpty(ExtraData)) { Number = 0; } else { Number = Double.Parse(ExtraData, BiosEmuThiago.CultureInfo); } } catch (Exception e) { ExceptionLogger.LogException(e); } ExtraData = Number.ToString().Replace(',', '.'); break; // maintain extra data // todo: validate case InteractionType.POSTIT: ExtraData = "FFFF33"; break; case InteractionType.MOODLIGHT: ExtraData = "1,1,1,#000000,255"; break; case InteractionType.TROPHY: ExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + ExtraData; break; case InteractionType.MANNEQUIN: ExtraData = "m" + Convert.ToChar(5) + ".ch-210-1321.lg-285-92" + Convert.ToChar(5) + "Default Mannequin"; break; case InteractionType.FOOTBALL_GATE: ExtraData = "hd-99999-99999.lg-270-62;hd-99999-99999.ch-630-62.lg-695-62"; break; case InteractionType.vikingtent: ExtraData = "0"; break; case InteractionType.BADGE_DISPLAY: if (!Session.GetHabbo().GetBadgeComponent().HasBadge(ExtraData)) { Session.SendMessage(new BroadcastMessageAlertComposer("Parece que você não é dono desse Emblema!")); return; } ExtraData = ExtraData + Convert.ToChar(9) + Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year; break; case InteractionType.BADGE: { if (Session.GetHabbo().GetBadgeComponent().HasBadge(Item.Data.ItemName)) { Session.SendMessage(new PurchaseErrorComposer(1)); return; } break; } default: ExtraData = ""; break; } #endregion if (Item.IsLimited) { if (Item.LimitedEditionStack <= Item.LimitedEditionSells) { Session.SendNotification("Este item está esgotado!\n\n" + "Por favor, note que você não recebeu outro item (Você também não foi cobrado por isso!)"); Session.SendMessage(new CatalogUpdatedComposer()); Session.SendMessage(new PurchaseOKComposer()); return; } Item.LimitedEditionSells++; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `catalog_items` SET `limited_sells` = @limitSells WHERE `id` = @itemId LIMIT 1"); dbClient.AddParameter("limitSells", Item.LimitedEditionSells); dbClient.AddParameter("itemId", Item.Id); dbClient.RunQuery(); LimitedEditionSells = Item.LimitedEditionSells; LimitedEditionStack = Item.LimitedEditionStack; } if (Session.GetHabbo().Rank == 1) { BiosEmuThiago.GetGame().GetClientManager().SendMessage(new RoomNotificationComposer("icons/" + Item.Data.ItemName + "_icon", 3, "O usuário " + Session.GetHabbo().Username + " comprou o raro LTD: " + Item.Name + " Slot: " + Item.LimitedEditionSells + "/" + Item.LimitedEditionStack, "!")); } } if (Item.CostCredits > 0) { Session.GetHabbo().Credits -= TotalCreditsCost; Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); } if (Item.CostPixels > 0) { Session.GetHabbo().Duckets -= TotalPixelCost; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets));//Love you, Tom. } if (Item.CostDiamonds > 0) { Session.GetHabbo().Diamonds -= TotalDiamondCost; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, 0, 5)); } if (Item.CostGotw > 0) { Session.GetHabbo().GOTWPoints -= TotalGotwCost; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, 0, 103)); } Item NewItem = null; switch (Item.Data.Type.ToString().ToLower()) { default: List <Item> GeneratedGenericItems = new List <Item>(); switch (Item.Data.InteractionType) { default: if (AmountPurchase > 1) { List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase); if (Items != null) { GeneratedGenericItems.AddRange(Items); } } else { NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData, 0, LimitedEditionSells, LimitedEditionStack); if (NewItem != null) { GeneratedGenericItems.Add(NewItem); } } break; case InteractionType.GUILD_GATE: case InteractionType.GUILD_ITEM: case InteractionType.GUILD_FORUM: int groupId = 0; int.TryParse(ExtraData, out groupId); if (AmountPurchase > 1) { List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase, groupId); if (Items != null) { GeneratedGenericItems.AddRange(Items); } } else { NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData, groupId); if (NewItem != null) { GeneratedGenericItems.Add(NewItem); } } break; case InteractionType.MUSIC_DISC: string flags = Convert.ToString(Item.ExtradataInt); if (AmountPurchase > 1) { List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), flags, AmountPurchase); if (Items != null) { GeneratedGenericItems.AddRange(Items); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_MusicCollector", 1); } } else { NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), flags, flags); if (NewItem != null) { GeneratedGenericItems.Add(NewItem); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_MusicCollector", 1); } } break; case InteractionType.ARROW: case InteractionType.TELEPORT: for (int i = 0; i < AmountPurchase; i++) { List <Item> TeleItems = ItemFactory.CreateTeleporterItems(Item.Data, Session.GetHabbo()); if (TeleItems != null) { GeneratedGenericItems.AddRange(TeleItems); } } break; case InteractionType.MOODLIGHT: { if (AmountPurchase > 1) { List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase); if (Items != null) { GeneratedGenericItems.AddRange(Items); foreach (Item I in Items) { ItemFactory.CreateMoodlightData(I); } } } else { NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData); if (NewItem != null) { GeneratedGenericItems.Add(NewItem); ItemFactory.CreateMoodlightData(NewItem); } } } break; case InteractionType.TONER: { if (AmountPurchase > 1) { List <Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase); if (Items != null) { GeneratedGenericItems.AddRange(Items); foreach (Item I in Items) { ItemFactory.CreateTonerData(I); } } } else { NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData); if (NewItem != null) { GeneratedGenericItems.Add(NewItem); ItemFactory.CreateTonerData(NewItem); } } } break; case InteractionType.DEAL: { //Fetch the deal where the ID is this items ID. var DealItems = (from d in Page.Deals.Values.ToList() where d.Id == Item.Id select d); //This bit, iterating ONE item? How can I make this simpler foreach (CatalogDeal DealItem in DealItems) { //Here I loop the DealItems ItemDataList. foreach (CatalogItem CatalogItem in DealItem.ItemDataList.ToList()) { List <Item> Items = ItemFactory.CreateMultipleItems(CatalogItem.Data, Session.GetHabbo(), "", AmountPurchase); if (Items != null) { GeneratedGenericItems.AddRange(Items); } } } break; } } foreach (Item PurchasedItem in GeneratedGenericItems) { if (Session.GetHabbo().GetInventoryComponent().TryAddItem(PurchasedItem)) { //Session.SendMessage(new FurniListAddComposer(PurchasedItem)); Session.SendMessage(new FurniListNotificationComposer(PurchasedItem.Id, 1)); } } break; case "e": AvatarEffect Effect = null; if (Session.GetHabbo().Effects().HasEffect(Item.Data.SpriteId)) { Effect = Session.GetHabbo().Effects().GetEffectNullable(Item.Data.SpriteId); if (Effect != null) { Effect.AddToQuantity(); } } else { Effect = AvatarEffectFactory.CreateNullable(Session.GetHabbo(), Item.Data.SpriteId, 3600); } if (Effect != null) // && Session.GetHabbo().Effects().TryAdd(Effect)) { Session.SendMessage(new AvatarEffectAddedComposer(Item.Data.SpriteId, 3600)); Session.GetHabbo().Effects().ApplyEffect(Item.Data.SpriteId); Session.SendMessage(new RoomNotificationComposer("furni_placement_error", "message", "Você compro o efeito " + Item.Data.SpriteId + " na loja, lembre-se você ganho o efeito no seu avatar, mais so ira para o seu inventário apos você relogar")); } break; case "r": Bot Bot = BotUtility.CreateBot(Item.Data, Session.GetHabbo().Id); if (Bot != null) { Session.GetHabbo().GetInventoryComponent().TryAddBot(Bot); Session.SendMessage(new BotInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetBots())); Session.SendMessage(new FurniListNotificationComposer(Bot.Id, 5)); } else { Session.SendNotification("Houve um erro ao comprar isso!"); } break; case "b": { Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.Data.ItemName, true, Session); Session.SendMessage(new FurniListNotificationComposer(0, 4)); break; } case "p": { string[] PetData = ExtraData.Split('\n'); Pet GeneratedPet = PetUtility.CreatePet(Session.GetHabbo().Id, PetData[0], Item.Data.BehaviourData, PetData[1], PetData[2]); if (GeneratedPet != null) { Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet); Session.SendMessage(new FurniListNotificationComposer(GeneratedPet.PetId, 3)); Session.SendMessage(new PetInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetPets())); if (BiosEmuThiago.GetGame().GetItemManager().GetItem(320, out ItemData PetFood)) { Item Food = ItemFactory.CreateSingleItemNullable(PetFood, Session.GetHabbo(), "", ""); if (Food != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(Food); Session.SendMessage(new FurniListNotificationComposer(Food.Id, 1)); } } } break; } } if (Item.Badge != string.Empty) { Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.Badge, true, Session); } Session.SendMessage(new PurchaseOKComposer(Item, Item.Data, Item.Items)); Session.SendMessage(new FurniListUpdateComposer()); }
public void Parse(GameClient session, ClientPacket packet) { int minCost = packet.PopInt(); int maxCost = packet.PopInt(); string searchQuery = packet.PopString(); int filterMode = packet.PopInt(); DataTable table; StringBuilder builder = new StringBuilder(); string str; builder.Append("WHERE `state` = '1' AND `timestamp` >= " + PlusEnvironment.GetGame().GetCatalog().GetMarketplace().FormatTimestampString()); if (minCost >= 0) { builder.Append(" AND `total_price` > " + minCost); } if (maxCost >= 0) { builder.Append(" AND `total_price` < " + maxCost); } switch (filterMode) { case 1: str = "ORDER BY `asking_price` DESC"; break; default: str = "ORDER BY `asking_price` ASC"; break; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `offer_id`, `item_type`, `sprite_id`, `total_price`, `limited_number`,`limited_stack` FROM `catalog_marketplace_offers` " + builder + " " + str + " LIMIT 500"); dbClient.AddParameter("search_query", "%" + searchQuery + "%"); if (searchQuery.Length >= 1) { builder.Append(" AND `public_name` LIKE @search_query"); } table = dbClient.GetTable(); } PlusEnvironment.GetGame().GetCatalog().GetMarketplace().MarketItems.Clear(); PlusEnvironment.GetGame().GetCatalog().GetMarketplace().MarketItemKeys.Clear(); if (table != null) { foreach (DataRow row in table.Rows) { if (!PlusEnvironment.GetGame().GetCatalog().GetMarketplace().MarketItemKeys.Contains(Convert.ToInt32(row["offer_id"]))) { PlusEnvironment.GetGame().GetCatalog().GetMarketplace().MarketItemKeys.Add(Convert.ToInt32(row["offer_id"])); PlusEnvironment.GetGame().GetCatalog().GetMarketplace().MarketItems.Add(new MarketOffer(Convert.ToInt32(row["offer_id"]), Convert.ToInt32(row["sprite_id"]), Convert.ToInt32(row["total_price"]), int.Parse(row["item_type"].ToString()), Convert.ToInt32(row["limited_number"]), Convert.ToInt32(row["limited_stack"]))); } } } Dictionary <int, MarketOffer> dictionary = new Dictionary <int, MarketOffer>(); Dictionary <int, int> dictionary2 = new Dictionary <int, int>(); foreach (MarketOffer item in PlusEnvironment.GetGame().GetCatalog().GetMarketplace().MarketItems) { if (dictionary.ContainsKey(item.SpriteId)) { if (item.LimitedNumber > 0) { if (!dictionary.ContainsKey(item.OfferID)) { dictionary.Add(item.OfferID, item); } if (!dictionary2.ContainsKey(item.OfferID)) { dictionary2.Add(item.OfferID, 1); } } else { if (dictionary[item.SpriteId].TotalPrice > item.TotalPrice) { dictionary.Remove(item.SpriteId); dictionary.Add(item.SpriteId, item); } int num = dictionary2[item.SpriteId]; dictionary2.Remove(item.SpriteId); dictionary2.Add(item.SpriteId, num + 1); } } else { if (!dictionary.ContainsKey(item.SpriteId)) { dictionary.Add(item.SpriteId, item); } if (!dictionary2.ContainsKey(item.SpriteId)) { dictionary2.Add(item.SpriteId, 1); } } } session.SendPacket(new MarketPlaceOffersComposer(dictionary, dictionary2)); }
public void Parse(GameClient Session, ClientPacket Packet) { int OfferId = Packet.PopInt(); DataRow Row = null; using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `state`,`timestamp`,`total_price`,`extra_data`,`item_id`,`furni_id`,`user_id`,`limited_number`,`limited_stack` FROM `catalog_marketplace_offers` WHERE `offer_id` = @OfferId LIMIT 1"); dbClient.AddParameter("OfferId", OfferId); Row = dbClient.getRow(); } if (Row == null) { ReloadOffers(Session); return; } if (Convert.ToString(Row["state"]) == "2") { Session.SendNotification("Ops, esta oferta não está disponivel."); ReloadOffers(Session); return; } if (BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().FormatTimestamp() > (Convert.ToDouble(Row["timestamp"]))) { Session.SendNotification("Ops, esta oferta expirou.."); ReloadOffers(Session); return; } ItemData Item = null; if (!BiosEmuThiago.GetGame().GetItemManager().GetItem(Convert.ToInt32(Row["item_id"]), out Item)) { Session.SendNotification("O artigo não está mais no hotel."); ReloadOffers(Session); return; } else { if (Convert.ToInt32(Row["user_id"]) == Session.GetHabbo().Id) { Session.SendNotification("Para evitar roubos, não pode comprar suas propias ofertas de mercado."); return; } if (Convert.ToInt32(Row["total_price"]) > Session.GetHabbo().Credits) { Session.SendNotification("Ops! Não tem crédito suficiente para isso"); return; } Session.GetHabbo().Credits -= Convert.ToInt32(Row["total_price"]); Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); Item GiveItem = ItemFactory.CreateSingleItem(Item, Session.GetHabbo(), Convert.ToString(Row["extra_data"]), Convert.ToString(Row["extra_data"]), Convert.ToInt32(Row["furni_id"]), Convert.ToInt32(Row["limited_number"]), Convert.ToInt32(Row["limited_stack"])); if (GiveItem != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Session.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1)); Session.SendMessage(new Outgoing.Catalog.PurchaseOKComposer()); Session.SendMessage(new FurniListAddComposer(GiveItem)); Session.SendMessage(new FurniListUpdateComposer()); } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.runFastQuery("UPDATE `catalog_marketplace_offers` SET `state` = '2' WHERE `offer_id` = '" + OfferId + "' LIMIT 1"); int Id = 0; dbClient.SetQuery("SELECT `id` FROM `catalog_marketplace_data` WHERE `sprite` = " + Item.SpriteId + " LIMIT 1;"); Id = dbClient.getInteger(); if (Id > 0) { dbClient.runFastQuery("UPDATE `catalog_marketplace_data` SET `sold` = `sold` + 1, `avgprice` = (avgprice + " + Convert.ToInt32(Row["total_price"]) + ") WHERE `id` = " + Id + " LIMIT 1;"); } else { dbClient.runFastQuery("INSERT INTO `catalog_marketplace_data` (`sprite`, `sold`, `avgprice`) VALUES ('" + Item.SpriteId + "', '1', '" + Convert.ToInt32(Row["total_price"]) + "')"); } if (BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketAverages.ContainsKey(Item.SpriteId) && BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketCounts.ContainsKey(Item.SpriteId)) { int num3 = BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketCounts[Item.SpriteId]; int num4 = (BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketAverages[Item.SpriteId] += Convert.ToInt32(Row["total_price"])); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketAverages.Remove(Item.SpriteId); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketAverages.Add(Item.SpriteId, num4); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketCounts.Remove(Item.SpriteId); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketCounts.Add(Item.SpriteId, num3 + 1); } else { if (!BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketAverages.ContainsKey(Item.SpriteId)) { BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketAverages.Add(Item.SpriteId, Convert.ToInt32(Row["total_price"])); } if (!BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketCounts.ContainsKey(Item.SpriteId)) { BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketCounts.Add(Item.SpriteId, 1); } } } } ReloadOffers(Session); }
private void ReloadOffers(GameClient Session) { int MinCost = -1; int MaxCost = -1; string SearchQuery = ""; int FilterMode = 1; DataTable table = null; StringBuilder builder = new StringBuilder(); string str = ""; builder.Append("WHERE `state` = '1' AND `timestamp` >= " + BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().FormatTimestampString()); if (MinCost >= 0) { builder.Append(" AND `total_price` > " + MinCost); } if (MaxCost >= 0) { builder.Append(" AND `total_price` < " + MaxCost); } switch (FilterMode) { case 1: str = "ORDER BY `asking_price` DESC"; break; default: str = "ORDER BY `asking_price` ASC"; break; } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `offer_id`,`item_type`,`sprite_id`,`total_price`,`limited_number`,`limited_stack` FROM `catalog_marketplace_offers` " + builder.ToString() + " " + str + " LIMIT 500"); dbClient.AddParameter("search_query", "%" + SearchQuery + "%"); if (SearchQuery.Length >= 1) { builder.Append(" AND `public_name` LIKE @search_query"); } table = dbClient.getTable(); } BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketItems.Clear(); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketItemKeys.Clear(); if (table != null) { foreach (DataRow row in table.Rows) { if (!BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketItemKeys.Contains(Convert.ToInt32(row["offer_id"]))) { MarketOffer item = new MarketOffer(Convert.ToInt32(row["offer_id"]), Convert.ToInt32(row["sprite_id"]), Convert.ToInt32(row["total_price"]), int.Parse(row["item_type"].ToString()), Convert.ToInt32(row["limited_number"]), Convert.ToInt32(row["limited_stack"])); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketItemKeys.Add(Convert.ToInt32(row["offer_id"])); BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketItems.Add(item); } } } Dictionary <int, MarketOffer> dictionary = new Dictionary <int, MarketOffer>(); Dictionary <int, int> dictionary2 = new Dictionary <int, int>(); foreach (MarketOffer item in BiosEmuThiago.GetGame().GetCatalog().GetMarketplace().MarketItems) { if (dictionary.ContainsKey(item.SpriteId)) { if (dictionary[item.SpriteId].TotalPrice > item.TotalPrice) { dictionary.Remove(item.SpriteId); dictionary.Add(item.SpriteId, item); } int num = dictionary2[item.SpriteId]; dictionary2.Remove(item.SpriteId); dictionary2.Add(item.SpriteId, num + 1); } else { dictionary.Add(item.SpriteId, item); dictionary2.Add(item.SpriteId, 1); } } Session.SendMessage(new MarketPlaceOffersComposer(MinCost, MaxCost, dictionary, dictionary2)); }
/// <summary> /// Progresses the user achievement. /// </summary> /// <param name="Session">The session.</param> /// <param name="AchievementGroup">The achievement group.</param> /// <param name="ProgressAmount">The progress amount.</param> /// <param name="FromZero">if set to <c>true</c> [from zero].</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> internal bool ProgressUserAchievement(GameClient Session, string AchievementGroup, int ProgressAmount, bool FromZero = false) { if (!this.Achievements.ContainsKey(AchievementGroup) || Session == null) { return(false); } Achievement achievement = null; achievement = this.Achievements[AchievementGroup]; UserAchievement userAchievement = Session.GetHabbo().GetAchievementData(AchievementGroup); if (userAchievement == null) { userAchievement = new UserAchievement(AchievementGroup, 0, 0); Session.GetHabbo().Achievements.Add(AchievementGroup, userAchievement); } int count = achievement.Levels.Count; if (userAchievement != null && userAchievement.Level == count) { return(false); } { int num = (userAchievement != null) ? (userAchievement.Level + 1) : 1; if (num > count) { num = count; } AchievementLevel targetLevelData = achievement.Levels[num]; int num2 = 0; if (FromZero) { num2 = ProgressAmount; } else { num2 = ((userAchievement != null) ? (userAchievement.Progress + ProgressAmount) : ProgressAmount); } int num3 = (userAchievement != null) ? userAchievement.Level : 0; int num4 = num3 + 1; if (num4 > count) { num4 = count; } if (num2 >= targetLevelData.Requirement) { num3++; num4++; int argE60 = num2 - targetLevelData.Requirement; num2 = 0; if (num == 1) { Session.GetHabbo().GetBadgeComponent().GiveBadge(string.Format("{0}{1}", AchievementGroup, num), true, Session, false); } else { Session.GetHabbo().GetBadgeComponent().RemoveBadge(Convert.ToString(string.Format("{0}{1}", AchievementGroup, num - 1)), Session); Session.GetHabbo().GetBadgeComponent().GiveBadge(string.Format("{0}{1}", AchievementGroup, num), true, Session, false); } if (num4 > count) { num4 = count; } Session.GetHabbo().ActivityPoints += targetLevelData.RewardPixels; Session.GetHabbo().NotifyNewPixels(targetLevelData.RewardPixels); Session.GetHabbo().UpdateActivityPointsBalance(); Session.SendMessage(AchievementUnlockedComposer.Compose(achievement, num, targetLevelData.RewardPoints, targetLevelData.RewardPixels)); using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Concat(new object[] { "REPLACE INTO users_achievements VALUES (", Session.GetHabbo().Id, ", @group, ", num3, ", ", num2, ")" })); queryReactor.AddParameter("group", AchievementGroup); queryReactor.RunQuery(); } userAchievement.Level = num3; userAchievement.Progress = num2; Session.GetHabbo().AchievementPoints += targetLevelData.RewardPoints; Session.GetHabbo().NotifyNewPixels(targetLevelData.RewardPixels); Session.GetHabbo().ActivityPoints += targetLevelData.RewardPixels; Session.GetHabbo().UpdateActivityPointsBalance(); Session.SendMessage(AchievementScoreUpdateComposer.Compose(Session.GetHabbo().AchievementPoints)); AchievementLevel targetLevelData2 = achievement.Levels[num4]; Session.SendMessage(AchievementProgressComposer.Compose(achievement, num4, targetLevelData2, count, Session.GetHabbo().GetAchievementData(AchievementGroup))); Talent talent = null; if (Plus.GetGame().GetTalentManager().TryGetTalent(AchievementGroup, out talent)) { Plus.GetGame().GetTalentManager().CompleteUserTalent(Session, talent); } return(true); } userAchievement.Level = num3; userAchievement.Progress = num2; using (IQueryAdapter queryreactor2 = Plus.GetDatabaseManager().GetQueryReactor()) { queryreactor2.SetQuery(string.Concat(new object[] { "REPLACE INTO users_achievements VALUES (", Session.GetHabbo().Id, ", @group, ", num3, ", ", num2, ")" })); queryreactor2.AddParameter("group", AchievementGroup); queryreactor2.RunQuery(); } Session.SendMessage(AchievementProgressComposer.Compose(achievement, num, targetLevelData, count, Session.GetHabbo().GetAchievementData(AchievementGroup))); Session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); Session.GetMessageHandler().GetResponse().AppendInteger(-1); Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Look); Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Gender.ToLower()); Session.GetMessageHandler().GetResponse().AppendString(Session.GetHabbo().Motto); Session.GetMessageHandler().GetResponse().AppendInteger(Session.GetHabbo().AchievementPoints); Session.GetMessageHandler().SendResponse(); return(false); } }
public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights) { if (!item.ExtraData.Contains(Convert.ToChar(5).ToString())) { return; } string[] array = item.ExtraData.Split(new[] { Convert.ToChar(5) }); session.GetHabbo().Gender = array[0].ToUpper(); var dictionary = new Dictionary <string, string>(); dictionary.Clear(); string[] array2 = array[1].Split('.'); foreach (string text in array2) { string[] array3 = session.GetHabbo().Look.Split('.'); foreach (string text2 in array3) { if (text2.Split('-')[0] == text.Split('-')[0]) { if (dictionary.ContainsKey(text2.Split('-')[0]) && !dictionary.ContainsValue(text)) { dictionary.Remove(text2.Split('-')[0]); dictionary.Add(text2.Split('-')[0], text); } else { if (!dictionary.ContainsKey(text2.Split('-')[0]) && !dictionary.ContainsValue(text)) { dictionary.Add(text2.Split('-')[0], text); } } } else { if (!dictionary.ContainsKey(text2.Split('-')[0])) { dictionary.Add(text2.Split('-')[0], text2); } } } } string text3 = dictionary.Values.Aggregate("", (current1, current) => string.Format("{0}{1}.", current1, current)); session.GetHabbo().Look = text3.TrimEnd('.'); using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery(string.Format("UPDATE users SET look = @look, gender = @gender WHERE id = {0}", session.GetHabbo().Id)); queryReactor.AddParameter("look", session.GetHabbo().Look); queryReactor.AddParameter("gender", session.GetHabbo().Gender); queryReactor.RunQuery(); } session.GetMessageHandler().GetResponse().Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); session.GetMessageHandler().GetResponse().AppendInteger(-1); session.GetMessageHandler().GetResponse().AppendString(session.GetHabbo().Look); session.GetMessageHandler().GetResponse().AppendString(session.GetHabbo().Gender.ToLower()); session.GetMessageHandler().GetResponse().AppendString(session.GetHabbo().Motto); session.GetMessageHandler().GetResponse().AppendInteger(session.GetHabbo().AchievementPoints); session.GetMessageHandler().SendResponse(); RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer")); serverMessage.AppendInteger(roomUserByHabbo.VirtualId); serverMessage.AppendString(session.GetHabbo().Look); serverMessage.AppendString(session.GetHabbo().Gender.ToLower()); serverMessage.AppendString(session.GetHabbo().Motto); serverMessage.AppendInteger(session.GetHabbo().AchievementPoints); session.GetHabbo().CurrentRoom.SendMessage(serverMessage); }
public bool TryAuthenticate(string authTicket) { try { UserData userData = UserDataFactory.GetUserData(authTicket, out byte errorCode); if (errorCode == 1 || errorCode == 2) { Disconnect(); return(false); } #region Ban Checking //Let's have a quick search for a ban before we successfully authenticate.. if (!string.IsNullOrEmpty(MachineId)) { if (PlusEnvironment.GetGame().GetModerationManager().IsBanned(MachineId, out _)) { if (PlusEnvironment.GetGame().GetModerationManager().MachineBanCheck(MachineId)) { Disconnect(); return(false); } } } if (userData.user != null) { if (PlusEnvironment.GetGame().GetModerationManager().IsBanned(userData.user.Username, out _)) { if (PlusEnvironment.GetGame().GetModerationManager().UsernameBanCheck(userData.user.Username)) { Disconnect(); return(false); } } } #endregion if (userData.user == null) //Possible NPE { return(false); } PlusEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.UserId, userData.user.Username); _habbo = userData.user; if (_habbo != null) { userData.user.Init(this, userData); SendPacket(new AuthenticationOKComposer()); SendPacket(new AvatarEffectsComposer(_habbo.Effects().GetAllEffects)); SendPacket(new NavigatorSettingsComposer(_habbo.HomeRoom)); SendPacket(new FavouritesComposer(userData.user.FavoriteRooms)); SendPacket(new FigureSetIdsComposer(_habbo.GetClothing().GetClothingParts)); SendPacket(new UserRightsComposer(_habbo.Rank)); SendPacket(new AvailabilityStatusComposer()); SendPacket(new AchievementScoreComposer(_habbo.GetStats().AchievementPoints)); SendPacket(new BuildersClubMembershipComposer()); SendPacket(new CfhTopicsInitComposer(PlusEnvironment.GetGame().GetModerationManager().UserActionPresets)); SendPacket(new BadgeDefinitionsComposer(PlusEnvironment.GetGame().GetAchievementManager().Achievements)); SendPacket(new SoundSettingsComposer(_habbo.ClientVolume, _habbo.ChatPreference, _habbo.AllowMessengerInvites, _habbo.FocusPreference, FriendBarStateUtility.GetInt(_habbo.FriendbarState))); //SendMessage(new TalentTrackLevelComposer()); if (GetHabbo().GetMessenger() != null) { GetHabbo().GetMessenger().OnStatusChanged(true); } if (!string.IsNullOrEmpty(MachineId)) { if (_habbo.MachineId != MachineId) { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `users` SET `machine_id` = @MachineId WHERE `id` = @id LIMIT 1"); dbClient.AddParameter("MachineId", MachineId); dbClient.AddParameter("id", _habbo.Id); dbClient.RunQuery(); } } _habbo.MachineId = MachineId; } if (PlusEnvironment.GetGame().GetPermissionManager().TryGetGroup(_habbo.Rank, out PermissionGroup group)) { if (!String.IsNullOrEmpty(group.Badge)) { if (!_habbo.GetBadgeComponent().HasBadge(group.Badge)) { _habbo.GetBadgeComponent().GiveBadge(group.Badge, true, this); } } } if (PlusEnvironment.GetGame().GetSubscriptionManager().TryGetSubscriptionData(_habbo.VIPRank, out SubscriptionData subData)) { if (!String.IsNullOrEmpty(subData.Badge)) { if (!_habbo.GetBadgeComponent().HasBadge(subData.Badge)) { _habbo.GetBadgeComponent().GiveBadge(subData.Badge, true, this); } } } if (!PlusEnvironment.GetGame().GetCacheManager().ContainsUser(_habbo.Id)) { PlusEnvironment.GetGame().GetCacheManager().GenerateUser(_habbo.Id); } _habbo.Look = PlusEnvironment.GetFigureManager().ProcessFigure(_habbo.Look, _habbo.Gender, _habbo.GetClothing().GetClothingParts, true); _habbo.InitProcess(); if (userData.user.GetPermissions().HasRight("mod_tickets")) { SendPacket(new ModeratorInitComposer( PlusEnvironment.GetGame().GetModerationManager().UserMessagePresets, PlusEnvironment.GetGame().GetModerationManager().RoomMessagePresets, PlusEnvironment.GetGame().GetModerationManager().GetTickets)); } if (PlusEnvironment.GetSettingsManager().TryGetValue("user.login.message.enabled") == "1") { SendPacket(new MotdNotificationComposer(PlusEnvironment.GetLanguageManager().TryGetValue("user.login.message"))); } PlusEnvironment.GetGame().GetRewardManager().CheckRewards(this); return(true); } } catch (Exception e) { ExceptionLogger.LogException(e); } return(false); }
public static List <Item> CreateMultipleItems(ItemData Data, Habbo Habbo, string ExtraData, int Amount, int GroupId = 0) { if (Data == null) { throw new InvalidOperationException("Data cannot be null."); } List <Item> Items = new List <Item>(); using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { for (int i = 0; i < Amount; i++) { dbClient.SetQuery("INSERT INTO `items` (base_item,user_id,room_id,x,y,z,wall_pos,rot,extra_data) VALUES(@did,@uid,@rid,@x,@y,@z,@wallpos,@rot,@flags);"); dbClient.AddParameter("did", Data.Id); dbClient.AddParameter("uid", Habbo.Id); dbClient.AddParameter("rid", 0); dbClient.AddParameter("x", 0); dbClient.AddParameter("y", 0); dbClient.AddParameter("z", 0); dbClient.AddParameter("wallpos", ""); dbClient.AddParameter("rot", 0); dbClient.AddParameter("flags", ExtraData); Item Item = new Item(Convert.ToInt32(dbClient.InsertQuery()), 0, Data.Id, ExtraData, 0, 0, 0, 0, Habbo.Id, GroupId, 0, 0, ""); if (GroupId > 0) { dbClient.SetQuery("INSERT INTO `items_groups` (`id`, `group_id`) VALUES (@id, @gid)"); dbClient.AddParameter("id", Item.Id); dbClient.AddParameter("gid", GroupId); dbClient.RunQuery(); } Items.Add(Item); } } return(Items); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) { return; } Room Room = BiosEmuThiago.GetGame().GetRoomManager().LoadRoom(Packet.PopInt()); if (Room == null || !Room.CheckRights(Session, true)) { return; } string word; string Name = Packet.PopString(); Name = BiosEmuThiago.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(Name, out word) ? "Spam" : Name; string Description = Packet.PopString(); Description = BiosEmuThiago.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(Description, out word) ? "Spam" : Description; RoomAccess Access = RoomAccessUtility.ToRoomAccess(Packet.PopInt()); string Password = Packet.PopString(); int MaxUsers = Packet.PopInt(); int CategoryId = Packet.PopInt(); int TagCount = Packet.PopInt(); List <string> Tags = new List <string>(); StringBuilder formattedTags = new StringBuilder(); for (int i = 0; i < TagCount; i++) { if (i > 0) { formattedTags.Append(","); } string tag = Packet.PopString().ToLower(); Tags.Add(tag); formattedTags.Append(tag); } int TradeSettings = Packet.PopInt();//2 = All can trade, 1 = owner only, 0 = no trading. int AllowPets = Convert.ToInt32(BiosEmuThiago.BoolToEnum(Packet.PopBoolean())); int AllowPetsEat = Convert.ToInt32(BiosEmuThiago.BoolToEnum(Packet.PopBoolean())); int RoomBlockingEnabled = Convert.ToInt32(BiosEmuThiago.BoolToEnum(Packet.PopBoolean())); int Hidewall = Convert.ToInt32(BiosEmuThiago.BoolToEnum(Packet.PopBoolean())); int WallThickness = Packet.PopInt(); int FloorThickness = Packet.PopInt(); int WhoMute = Packet.PopInt(); // mute int WhoKick = Packet.PopInt(); // kick int WhoBan = Packet.PopInt(); // ban int chatMode = Packet.PopInt(); int chatSize = Packet.PopInt(); int chatSpeed = Packet.PopInt(); int chatDistance = Packet.PopInt(); int extraFlood = Packet.PopInt(); if (chatMode < 0 || chatMode > 1) { chatMode = 0; } if (chatSize < 0 || chatSize > 2) { chatSize = 0; } if (chatSpeed < 0 || chatSpeed > 2) { chatSpeed = 0; } if (chatDistance < 0) { chatDistance = 1; } if (chatDistance > 99) { chatDistance = 100; } if (extraFlood < 0 || extraFlood > 2) { extraFlood = 0; } if (TradeSettings < 0 || TradeSettings > 2) { TradeSettings = 0; } if (WhoMute < 0 || WhoMute > 1) { WhoMute = 0; } if (WhoKick < 0 || WhoKick > 1) { WhoKick = 0; } if (WhoBan < 0 || WhoBan > 1) { WhoBan = 0; } if (WallThickness < -2 || WallThickness > 1) { WallThickness = 0; } if (FloorThickness < -2 || FloorThickness > 1) { FloorThickness = 0; } if (Name.Length < 1) { return; } if (Name.Length > 60) { Name = Name.Substring(0, 60); } if (Access == RoomAccess.PASSWORD && Password.Length == 0) { Access = RoomAccess.OPEN; } if (MaxUsers < 0) { MaxUsers = 10; } if (MaxUsers > 50) { MaxUsers = 50; } SearchResultList SearchResultList = null; if (!BiosEmuThiago.GetGame().GetNavigator().TryGetSearchResultList(CategoryId, out SearchResultList)) { CategoryId = 36; } if (SearchResultList.CategoryType != NavigatorCategoryType.CATEGORY || SearchResultList.RequiredRank > Session.GetHabbo().Rank || (Session.GetHabbo().Id != Room.OwnerId && Session.GetHabbo().Rank >= SearchResultList.RequiredRank)) { CategoryId = 36; } if (TagCount > 2) { return; } Room.AllowPets = AllowPets; Room.AllowPetsEating = AllowPetsEat; Room.RoomBlockingEnabled = RoomBlockingEnabled; Room.Hidewall = Hidewall; Room.RoomData.AllowPets = AllowPets; Room.RoomData.AllowPetsEating = AllowPetsEat; Room.RoomData.RoomBlockingEnabled = RoomBlockingEnabled; Room.RoomData.Hidewall = Hidewall; Room.Name = Name; Room.Access = Access; Room.Description = Description; Room.Category = CategoryId; Room.Password = Password; Room.RoomData.Name = Name; Room.RoomData.Access = Access; Room.RoomData.Description = Description; Room.RoomData.Category = CategoryId; Room.RoomData.Password = Password; Room.WhoCanBan = WhoBan; Room.WhoCanKick = WhoKick; Room.WhoCanMute = WhoMute; Room.RoomData.WhoCanBan = WhoBan; Room.RoomData.WhoCanKick = WhoKick; Room.RoomData.WhoCanMute = WhoMute; Room.ClearTags(); Room.AddTagRange(Tags); Room.UsersMax = MaxUsers; Room.RoomData.Tags.Clear(); Room.RoomData.Tags.AddRange(Tags); Room.RoomData.UsersMax = MaxUsers; Room.WallThickness = WallThickness; Room.FloorThickness = FloorThickness; Room.RoomData.WallThickness = WallThickness; Room.RoomData.FloorThickness = FloorThickness; Room.chatMode = chatMode; Room.chatSize = chatSize; Room.chatSpeed = chatSpeed; Room.chatDistance = chatDistance; Room.extraFlood = extraFlood; Room.TradeSettings = TradeSettings; Room.RoomData.chatMode = chatMode; Room.RoomData.chatSize = chatSize; Room.RoomData.chatSpeed = chatSpeed; Room.RoomData.chatDistance = chatDistance; Room.RoomData.extraFlood = extraFlood; Room.RoomData.TradeSettings = TradeSettings; string AccessStr = Password.Length > 0 ? "password" : "open"; switch (Access) { default: case RoomAccess.OPEN: AccessStr = "open"; break; case RoomAccess.PASSWORD: AccessStr = "password"; break; case RoomAccess.DOORBELL: AccessStr = "locked"; break; case RoomAccess.INVISIBLE: AccessStr = "invisible"; break; } using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE rooms SET caption = @caption, description = @description, password = @password, category = " + CategoryId + ", state = '" + AccessStr + "', tags = @tags, users_max = " + MaxUsers + ", allow_pets = '" + AllowPets + "', allow_pets_eat = '" + AllowPetsEat + "', room_blocking_disabled = '" + RoomBlockingEnabled + "', allow_hidewall = '" + Room.Hidewall + "', floorthick = " + Room.FloorThickness + ", wallthick = " + Room.WallThickness + ", mute_settings='" + Room.WhoCanMute + "', kick_settings='" + Room.WhoCanKick + "',ban_settings='" + Room.WhoCanBan + "', `chat_mode` = '" + Room.chatMode + "', `chat_size` = '" + Room.chatSize + "', `chat_speed` = '" + Room.chatSpeed + "', `chat_extra_flood` = '" + Room.extraFlood + "', `chat_hearing_distance` = '" + Room.chatDistance + "', `trade_settings` = '" + Room.TradeSettings + "' WHERE `id` = '" + Room.RoomId + "' LIMIT 1"); dbClient.AddParameter("caption", Room.Name); dbClient.AddParameter("description", Room.Description); dbClient.AddParameter("password", Room.Password); dbClient.AddParameter("tags", formattedTags.ToString()); dbClient.RunQuery(); } Room.GetGameMap().GenerateMaps(); if (Session.GetHabbo().CurrentRoom == null) { Session.SendMessage(new RoomSettingsSavedComposer(Room.RoomId)); Session.SendMessage(new RoomInfoUpdatedComposer(Room.RoomId)); Session.SendMessage(new RoomVisualizationSettingsComposer(Room.WallThickness, Room.FloorThickness, BiosEmuThiago.EnumToBool(Room.Hidewall.ToString()))); } else { Room.SendMessage(new RoomSettingsSavedComposer(Room.RoomId)); Room.SendMessage(new RoomInfoUpdatedComposer(Room.RoomId)); Room.SendMessage(new RoomVisualizationSettingsComposer(Room.WallThickness, Room.FloorThickness, BiosEmuThiago.EnumToBool(Room.Hidewall.ToString()))); } BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_SelfModDoorModeSeen", 1); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_SelfModWalkthroughSeen", 1); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_SelfModChatScrollSpeedSeen", 1); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_SelfModChatFloodFilterSeen", 1); BiosEmuThiago.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_SelfModChatHearRangeSeen", 1); }
public static Item CreateGiftItem(ItemData Data, Habbo Habbo, string ExtraData, string DisplayFlags, int ItemId, int LimitedNumber = 0, int LimitedStack = 0) { if (Data == null) { throw new InvalidOperationException("Data cannot be null."); } Item Item = new Item(ItemId, 0, Data.Id, ExtraData, 0, 0, 0, 0, Habbo.Id, 0, LimitedNumber, LimitedStack, ""); using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `items` (`id`,base_item,user_id,room_id,x,y,z,wall_pos,rot,extra_data,`limited_number`,`limited_stack`) VALUES (@id, @did,@uid,@rid,@x,@y,@z,@wall_pos,@rot,@extra_data, @limited_number, @limited_stack)"); dbClient.AddParameter("id", ItemId); dbClient.AddParameter("did", Data.Id); dbClient.AddParameter("uid", Habbo.Id); dbClient.AddParameter("rid", 0); dbClient.AddParameter("x", 0); dbClient.AddParameter("y", 0); dbClient.AddParameter("z", 0); dbClient.AddParameter("wall_pos", ""); dbClient.AddParameter("rot", 0); dbClient.AddParameter("extra_data", ExtraData); dbClient.AddParameter("limited_number", LimitedNumber); dbClient.AddParameter("limited_stack", LimitedStack); dbClient.RunQuery(); return(Item); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!QuasarEnvironment.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 (!QuasarEnvironment.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 = QuasarEnvironment.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 = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_stats` SET `groupid` = '0' WHERE `id` = '" + UserId + "' LIMIT 1"); } if (Group.AdminOnlyDeco == 0) { Room Room; if (!QuasarEnvironment.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)); } } 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("Sorry! Maar alleen groep beheerders kunnen een groep verwijderen."); 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 = QuasarEnvironment.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, "")); } } }
public void Fill(DataRow Row) { Id = Convert.ToInt32(Row["id"]); Name = Convert.ToString(Row["caption"]); Description = Convert.ToString(Row["description"]); Type = Convert.ToString(Row["roomtype"]); OwnerId = Convert.ToInt32(Row["owner"]); OwnerName = ""; using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `username` FROM `users` WHERE `id` = @owner LIMIT 1"); dbClient.AddParameter("owner", OwnerId); string result = dbClient.getString(); if (!String.IsNullOrEmpty(result)) { OwnerName = result; } } this.Access = RoomAccessUtility.ToRoomAccess(Row["state"].ToString().ToLower()); Category = Convert.ToInt32(Row["category"]); if (!string.IsNullOrEmpty(Row["users_now"].ToString())) { UsersNow = Convert.ToInt32(Row["users_now"]); } else { UsersNow = 0; } UsersMax = Convert.ToInt32(Row["users_max"]); ModelName = Convert.ToString(Row["model_name"]); Score = Convert.ToInt32(Row["score"]); Tags = new List <string>(); AllowPets = Convert.ToInt32(Row["allow_pets"].ToString()); AllowPetsEating = Convert.ToInt32(Row["allow_pets_eat"].ToString()); RoomBlockingEnabled = Convert.ToInt32(Row["room_blocking_disabled"].ToString()); Hidewall = Convert.ToInt32(Row["allow_hidewall"].ToString()); Password = Convert.ToString(Row["password"]); Wallpaper = Convert.ToString(Row["wallpaper"]); Floor = Convert.ToString(Row["floor"]); Landscape = Convert.ToString(Row["landscape"]); FloorThickness = Convert.ToInt32(Row["floorthick"]); WallThickness = Convert.ToInt32(Row["wallthick"]); WhoCanMute = Convert.ToInt32(Row["mute_settings"]); WhoCanKick = Convert.ToInt32(Row["kick_settings"]); WhoCanBan = Convert.ToInt32(Row["ban_settings"]); chatMode = Convert.ToInt32(Row["chat_mode"]); chatSpeed = Convert.ToInt32(Row["chat_speed"]); chatSize = Convert.ToInt32(Row["chat_size"]); TradeSettings = Convert.ToInt32(Row["trade_settings"]); Group G = null; if (CloudServer.GetGame().GetGroupManager().TryGetGroup(Convert.ToInt32(Row["group_id"]), out G)) { Group = G; } else { Group = null; } foreach (string Tag in Row["tags"].ToString().Split(',')) { Tags.Add(Tag); } mModel = CloudServer.GetGame().GetRoomManager().GetModel(ModelName); WiredScoreBordDay = new Dictionary <int, KeyValuePair <int, string> >(); WiredScoreBordWeek = new Dictionary <int, KeyValuePair <int, string> >(); WiredScoreBordMonth = new Dictionary <int, KeyValuePair <int, string> >(); using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { List <bool> SuperCheck = new List <bool>() { false, false, false }; DateTime now = DateTime.Now; int getdaytoday = Convert.ToInt32(now.ToString("MMddyyyy")); int getmonthtoday = Convert.ToInt32(now.ToString("MM")); int getweektoday = CultureInfo.GetCultureInfo("Nl-nl").Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); WiredScoreFirstBordInformation = new List <int>() { getdaytoday, getmonthtoday, getweektoday }; dbClient.SetQuery("SELECT * FROM wired_scorebord WHERE roomid = @id ORDER BY `punten` DESC "); dbClient.AddParameter("id", this.Id); foreach (DataRow row in dbClient.getTable().Rows) { int userid = Convert.ToInt32(row["userid"]); string username = Convert.ToString(row["username"]); int Punten = Convert.ToInt32(row["punten"]); string soort = Convert.ToString(row["soort"]); int timestamp = Convert.ToInt32(row["timestamp"]); if ((!(soort == "day") || this.WiredScoreBordDay.ContainsKey(userid) ? false : !SuperCheck[0])) { if (timestamp != getdaytoday) { SuperCheck[0] = false; } if (!SuperCheck[0]) { WiredScoreBordDay.Add(userid, new KeyValuePair <int, string>(Punten, username)); } } if ((!(soort == "month") || this.WiredScoreBordMonth.ContainsKey(userid) ? false : !SuperCheck[1])) { if (timestamp != getmonthtoday) { SuperCheck[1] = false; } WiredScoreBordMonth.Add(userid, new KeyValuePair <int, string>(Punten, username)); } if ((!(soort == "week") || this.WiredScoreBordWeek.ContainsKey(userid) ? false : !SuperCheck[2])) { if (timestamp != getweektoday) { SuperCheck[2] = false; } WiredScoreBordWeek.Add(userid, new KeyValuePair <int, string>(Punten, username)); } } if (SuperCheck[0]) { dbClient.RunQuery(string.Concat("DELETE FROM `wired_scorebord` WHERE `roomid`='", this.Id, "' AND `soort`='day'")); WiredScoreBordDay.Clear(); } if (SuperCheck[1]) { dbClient.RunQuery(string.Concat("DELETE FROM `wired_scorebord` WHERE `roomid`='", this.Id, "' AND `soort`='month'")); WiredScoreBordMonth.Clear(); } if (SuperCheck[2]) { dbClient.RunQuery(string.Concat("DELETE FROM `wired_scorebord` WHERE `roomid`='", this.Id, "' AND `soort`='week'")); WiredScoreBordDay.Clear(); } } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = null; if (!RavenEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } if (!Room.CheckRights(Session, true)) { return; } Item Item = Session.GetHabbo().GetInventoryComponent().GetItem(Packet.PopInt()); if (Item == null) { return; } if (Item.GetBaseItem() == null) { return; } string DecorationKey = string.Empty; switch (Item.GetBaseItem().InteractionType) { case InteractionType.FLOOR: DecorationKey = "floor"; break; case InteractionType.WALLPAPER: DecorationKey = "wallpaper"; break; case InteractionType.LANDSCAPE: DecorationKey = "landscape"; break; } switch (DecorationKey) { case "floor": Room.Floor = Item.ExtraData; Room.RoomData.Floor = Item.ExtraData; RavenEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_DECORATION_FLOOR); RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RoomDecoFloor", 1); break; case "wallpaper": Room.Wallpaper = Item.ExtraData; Room.RoomData.Wallpaper = Item.ExtraData; RavenEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_DECORATION_WALL); RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RoomDecoWallpaper", 1); break; case "landscape": Room.Landscape = Item.ExtraData; Room.RoomData.Landscape = Item.ExtraData; RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RoomDecoLandscape", 1); break; } using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `rooms` SET " + DecorationKey + " = @extradata WHERE `id` = '" + Room.RoomId + "' LIMIT 1"); dbClient.AddParameter("extradata", Item.ExtraData); dbClient.RunQuery(); dbClient.RunQuery("DELETE FROM items WHERE id=" + Item.Id + " LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Item.Id); Room.SendMessage(new RoomPropertyComposer(DecorationKey, Item.ExtraData)); }
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.SendPacket(new CheckGnomeNameComposer(PetName, 1)); return; } if (!PlusEnvironment.IsValidAlphaNumeric(PetName)) { Session.SendPacket(new CheckGnomeNameComposer(PetName, 1)); return; } int X = Item.GetX; int Y = Item.GetY; //Quickly delete it from the database. using (IQueryAdapter dbClient = PlusEnvironment.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.SendPacket(new CheckGnomeNameComposer(PetName, 0)); //Create the pet here. Pet Pet = PetUtility.CreatePet(Session.GetHabbo().Id, PetName, 26, "30", "ffffff"); if (Pet == null) { Session.SendNotification("Oops, an error occoured. Please report this!"); 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 = PlusEnvironment.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 (PlusEnvironment.GetGame().GetItemManager().GetItem(320, out PetFood)) { Item Food = ItemFactory.CreateSingleItemNullable(PetFood, Session.GetHabbo(), "", ""); if (Food != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(Food); Session.SendPacket(new FurniListNotificationComposer(Food.Id, 1)); } } }
public static List <Item> CreateMultipleItems(ItemData Data, Habbo Habbo, string ExtraData, int Amount, int GroupId = 0) { if (Data == null) { throw new InvalidOperationException("Data cannot be null."); } List <Item> Items = new List <Item>(); using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor()) { // lets build the query StringBuilder query = new StringBuilder(); query.Append("INSERT INTO `items` (base_item,user_id,room_id,x,y,z,wall_pos,rot,extra_data) VALUES(@did,@uid,@rid,@x,@y,@z,@wallpos,@rot,@flags)"); for (int i = 0; i < Amount - 1; i++) { query.Append(",(@did,@uid,@rid,@x,@y,@z,@wallpos,@rot,@flags)"); } query.Append(";"); dbClient.SetQuery(query.ToString()); dbClient.AddParameter("did", Data.Id); dbClient.AddParameter("uid", Habbo.Id); dbClient.AddParameter("rid", 0); dbClient.AddParameter("x", 0); dbClient.AddParameter("y", 0); dbClient.AddParameter("z", 0); dbClient.AddParameter("wallpos", ""); dbClient.AddParameter("rot", 0); dbClient.AddParameter("flags", ExtraData); //execute query int firstItemId = Convert.ToInt32(dbClient.InsertQuery()); for (int i = firstItemId; i < firstItemId + Amount; i++) { Items.Add(new Item(i, 0, Data.Id, ExtraData, 0, 0, 0, 0, Habbo.Id, GroupId, 0, 0, "")); if (GroupId > 0) { dbClient.SetQuery("INSERT INTO `items_groups` (`id`, `group_id`) VALUES (@id, @gid)"); dbClient.AddParameter("id", Items[i - firstItemId].Id); dbClient.AddParameter("gid", GroupId); dbClient.RunQuery(); } } } return(Items); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session.GetHabbo().TimeMuted > 0) { Session.SendNotification("Oops, estas muteado - No puedes enviar invitaciones a salas"); return; } int Amount = Packet.PopInt(); if (Amount > 500) { return; // don't send at all } List <int> Targets = new List <int>(); for (int i = 0; i < Amount; i++) { int uid = Packet.PopInt(); if (i < 100) // limit to 100 people, keep looping until we fulfil the request though { Targets.Add(uid); } } string Message = StringCharFilter.Escape(Packet.PopString()); if (Message.Length > 121) { Message = Message.Substring(0, 121); } if (Message.Contains("º;") || Message.Contains("º") || Message.Contains("&#")) { Session.SendMessage(new MassEventComposer("habbopages/spammer.txt")); return; } string word; if (!Session.GetHabbo().GetPermissions().HasRight("word_filter_override") && RavenEnvironment.GetGame().GetChatManager().GetFilter().IsUnnaceptableWord(Message, out word)) { Session.GetHabbo().BannedPhraseCount++; if (Session.GetHabbo().BannedPhraseCount >= 1) { Session.GetHabbo().TimeMuted = 25; Session.SendNotification("¡Has sido silenciad@ mientras un moderador revisa tu caso, al parecer nombraste un hotel! Aviso " + Session.GetHabbo().BannedPhraseCount + "/3"); RavenEnvironment.GetGame().GetClientManager().StaffAlert1(new RoomInviteComposer(int.MinValue, "Spammer: " + Session.GetHabbo().Username + " / Frase: " + Message + " / Palabra: " + word.ToUpper() + " / Fase: " + Session.GetHabbo().BannedPhraseCount + " / 10.")); RavenEnvironment.GetGame().GetClientManager().StaffAlert2(new RoomNotificationComposer("Alerta de publicista:", "<b><font color=\"#B40404\">Por favor, recuerda investigar bien antes de recurrir a una sanción.</font></b><br><br>Palabra: <b>" + word.ToUpper() + "</b>.<br><br><b>Frase:</b><br><i>" + Message + "</i>.<br><br><b>Tipo:</b><br>Chat de sala.\r\n" + "<b>Usuario: " + Session.GetHabbo().Username + "</b><br><b>Secuencia:</b> " + Session.GetHabbo().BannedPhraseCount + "/ 10.", "foto", "Investigar", "event:navigator/goto/" + Session.GetHabbo().CurrentRoomId)); return; } if (Session.GetHabbo().BannedPhraseCount >= 10) { RavenEnvironment.GetGame().GetModerationManager().BanUser("System", HabboHotel.Moderation.ModerationBanType.USERNAME, Session.GetHabbo().Username, "Baneado por hacer Spam con la Frase (" + Message + ")", (RavenEnvironment.GetUnixTimestamp() + 78892200)); Session.Disconnect(); return; } return; } foreach (int UserId in Targets) { if (!Session.GetHabbo().GetMessenger().FriendshipExists(UserId)) { continue; } GameClient Client = RavenEnvironment.GetGame().GetClientManager().GetClientByUserID(UserId); if (Client == null || Client.GetHabbo() == null || Client.GetHabbo().AllowMessengerInvites == true || Client.GetHabbo().AllowConsoleMessages == false) { continue; } Client.SendMessage(new RoomInviteComposer(Session.GetHabbo().Id, Message)); Client.SendMessage(RoomNotificationComposer.SendBubble("eventoxx", "" + Session.GetHabbo().Username + " te invita a un nuevo evento en su sala. Su mensaje es " + Message + ".", "event:navigator/goto/" + Session.GetHabbo().CurrentRoomId)); } using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `chatlogs_console_invitations` (`user_id`,`message`,`timestamp`) VALUES ('" + Session.GetHabbo().Id + "', @message, UNIX_TIMESTAMP())"); dbClient.AddParameter("message", Message); dbClient.RunQuery(); } }
public static Item CreateSingleItemNullable(ItemData Data, Habbo Habbo, string ExtraData, string DisplayFlags, int GroupId = 0, int LimitedNumber = 0, int LimitedStack = 0) { if (Data == null) { throw new InvalidOperationException("Data cannot be null."); } Item Item = new Item(0, 0, Data.Id, ExtraData, 0, 0, 0, 0, Habbo.Id, GroupId, LimitedNumber, LimitedStack, ""); using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `items` (base_item,user_id,room_id,x,y,z,wall_pos,rot,extra_data,`limited_number`,`limited_stack`) VALUES (@did,@uid,@rid,@x,@y,@z,@wall_pos,@rot,@extra_data, @limited_number, @limited_stack)"); dbClient.AddParameter("did", Data.Id); dbClient.AddParameter("uid", Habbo.Id); dbClient.AddParameter("rid", 0); dbClient.AddParameter("x", 0); dbClient.AddParameter("y", 0); dbClient.AddParameter("z", 0); dbClient.AddParameter("wall_pos", ""); dbClient.AddParameter("rot", 0); dbClient.AddParameter("extra_data", ExtraData); dbClient.AddParameter("limited_number", LimitedNumber); dbClient.AddParameter("limited_stack", LimitedStack); Item.Id = Convert.ToInt32(dbClient.InsertQuery()); if (GroupId > 0) { dbClient.SetQuery("INSERT INTO `items_groups` (`id`, `group_id`) VALUES (@id, @gid)"); dbClient.AddParameter("id", Item.Id); dbClient.AddParameter("gid", GroupId); dbClient.RunQuery(); } return(Item); } }
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 PresentId = Packet.PopInt(); Item Present = Room.GetRoomItemHandler().GetItem(PresentId); if (Present == null) { return; } if (Present.UserID != Session.GetHabbo().Id) { return; } DataRow Data = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT `base_id`,`extra_data` FROM `user_presents` WHERE `item_id` = @presentId LIMIT 1"); dbClient.AddParameter("presentId", Present.Id); Data = dbClient.GetRow(); } if (Data == null) { Session.SendNotification("Oops! Appears there was a bug with this gift.\nWe'll just get rid of it for you."); Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `items` WHERE `id` = '" + Present.Id + "' LIMIT 1"); dbClient.RunQuery("DELETE FROM `user_presents` WHERE `item_id` = '" + Present.Id + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id); return; } if (!int.TryParse(Present.ExtraData.Split(Convert.ToChar(5))[2], out int PurchaserId)) { Session.SendNotification("Oops! Appears there was a bug with this gift.\nWe'll just get rid of it for you."); Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `items` WHERE `id` = '" + Present.Id + "' LIMIT 1"); dbClient.RunQuery("DELETE FROM `user_presents` WHERE `item_id` = '" + Present.Id + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id); return; } UserCache Purchaser = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(PurchaserId); if (Purchaser == null) { Session.SendNotification("Oops! Appears there was a bug with this gift.\nWe'll just get rid of it for you."); Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `items` WHERE `id` = '" + Present.Id + "' LIMIT 1"); dbClient.RunQuery("DELETE FROM `user_presents` WHERE `item_id` = '" + Present.Id + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id); return; } if (!PlusEnvironment.GetGame().GetItemManager().GetItem(Convert.ToInt32(Data["base_id"]), out ItemData BaseItem)) { Session.SendNotification("Oops, it appears that the item within the gift is no longer in the hotel!"); Room.GetRoomItemHandler().RemoveFurniture(null, Present.Id); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `items` WHERE `id` = '" + Present.Id + "' LIMIT 1"); dbClient.RunQuery("DELETE FROM `user_presents` WHERE `item_id` = '" + Present.Id + "' LIMIT 1"); } Session.GetHabbo().GetInventoryComponent().RemoveItem(Present.Id); return; } Present.MagicRemove = true; Room.SendPacket(new ObjectUpdateComposer(Present, Convert.ToInt32(Session.GetHabbo().Id))); Thread thread = new Thread(() => FinishOpenGift(Session, BaseItem, Present, Room, Data)); thread.Start(); }
public void Parse(GameClient session, ClientPacket packet) { bool inUse; string name = packet.PopString(); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT COUNT(0) FROM `users` WHERE `username` = @name LIMIT 1"); dbClient.AddParameter("name", name); inUse = dbClient.GetInteger() == 1; } char[] letters = name.ToLower().ToCharArray(); const string allowedCharacters = "abcdefghijklmnopqrstuvwxyz.,_-;:?!1234567890"; if (letters.Any(chr => !allowedCharacters.Contains(chr))) { session.SendPacket(new NameChangeUpdateComposer(name, 4)); return; } if (PlusEnvironment.GetGame().GetChatManager().GetFilter().IsFiltered(name)) { session.SendPacket(new NameChangeUpdateComposer(name, 4)); return; } if (!session.Habbo.GetPermissions().HasRight("mod_tool") && name.ToLower().Contains("mod") || name.ToLower().Contains("adm") || name.ToLower().Contains("admin") || name.ToLower().Contains("m0d")) { session.SendPacket(new NameChangeUpdateComposer(name, 4)); return; } if (!name.ToLower().Contains("mod") && (session.Habbo.Rank == 2 || session.Habbo.Rank == 3)) { session.SendPacket(new NameChangeUpdateComposer(name, 4)); return; } if (name.Length > 15) { session.SendPacket(new NameChangeUpdateComposer(name, 3)); return; } if (name.Length < 3) { session.SendPacket(new NameChangeUpdateComposer(name, 2)); return; } if (inUse) { ICollection <string> suggestions = new List <string>(); for (int i = 100; i < 103; i++) { suggestions.Add(i.ToString()); } session.SendPacket(new NameChangeUpdateComposer(name, 5, suggestions)); return; } session.SendPacket(new NameChangeUpdateComposer(name, 0)); }
public void Parse(HabboHotel.GameClients.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(); bool dnow = Packet.PopBoolean(); if (PlusEnvironment.GetDBConfig().DBData["gifts_enabled"] != "1") { Session.SendNotification("Os gerentes do hotel desativou esta função!"); return; } /*if (PlusEnvironment.GetGame().GetCatalog().CatalogFlatOffers.ContainsKey(ItemId) && PageId < 0) * { * PageId = PlusEnvironment.GetGame().GetCatalog().CatalogFlatOffers[ItemId]; * * CatalogPage P = null; * if (!PlusEnvironment.GetGame().GetCatalog().Pages.TryGetValue(PageId, out P)) * PageId = 0; * }*/ CatalogPage Page = null; if (!PlusEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page)) { return; } if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1)) { return; } CatalogItem Item = null; if (!Page.Items.TryGetValue(ItemId, out Item)) { if (Page.ItemOffers.ContainsKey(ItemId)) { Item = (CatalogItem)Page.ItemOffers[ItemId]; if (Item == null) { return; } } else { return; } } if (!ItemUtility.CanGiftItem(Item)) { return; } ItemData PresentData = null; if (!PlusEnvironment.GetGame().GetItemManager().GetGift(SpriteId, out 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 = PlusEnvironment.GetHabboByUsername(GiftUser); if (Habbo == null) { Session.SendMessage(new GiftWrappingErrorComposer()); return; } if (!Habbo.AllowGifts) { Session.SendNotification("Opa, este usuário não permite que os presentes sejam enviados para ele!"); return; } if ((DateTime.Now - Session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 15.0) { Session.SendNotification("Você está comprando presentes muito rápido! Aguarde 15 segundos!"); 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 = PlusEnvironment.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; } //PlusEnvironment.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, PlusEnvironment.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) + "Manequim padrão"; break; case InteractionType.BADGE_DISPLAY: if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Data)) { Session.SendMessage(new BroadcastMessageAlertComposer("Opa, parece que você não possui este emblema.")); 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 = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Habbo.Id); if (Receiver != null) { 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()); } if (Habbo.Id != Session.GetHabbo().Id&& !string.IsNullOrWhiteSpace(GiftMessage)) { //PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_GiftGiver", 1); //if (Receiver != null) // PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Receiver, "ACH_GiftReceiver", 1); //PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.GIFT_OTHERS); } } 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; }
/// <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(); }
/// <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); } }