public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = null; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } if ((Room.AllowPets == 0 && !Room.CheckRights(Session, true)) || !Room.CheckRights(Session, true)) { Session.SendMessage(new RoomErrorNotifComposer(1)); return; } if (Room.GetRoomUserManager().PetCount > PlusStaticGameSettings.RoomPetPlacementLimit) { Session.SendMessage(new RoomErrorNotifComposer(2));//5 = I have too many. return; } Pet Pet = null; if (!Session.GetHabbo().GetInventoryComponent().TryGetPet(Packet.PopInt(), out Pet)) { return; } if (Pet == null) { return; } if (Pet.PlacedInRoom) { Session.SendNotification("Este animal de estimação já está no quarto"); return; } int X = Packet.PopInt(); int Y = Packet.PopInt(); if (!Room.GetGameMap().CanWalk(X, Y, false)) { Session.SendMessage(new RoomErrorNotifComposer(4)); return; } RoomUser OldPet = null; if (Room.GetRoomUserManager().TryGetPet(Pet.PetId, out OldPet)) { Room.GetRoomUserManager().RemoveBot(OldPet.VirtualId, false); } Pet.X = X; Pet.Y = Y; Pet.PlacedInRoom = true; Pet.RoomId = Room.RoomId; List <RandomSpeech> RndSpeechList = new List <RandomSpeech>(); RoomBot RoomBot = 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); if (RoomBot == null) { return; } //old//Room.GetRoomUserManager().DeployBot(RoomBot, Pet); RoleplayBotManager.DeployBotByID(RoomBot.Id, "owner", Room.Id); Pet.DBState = DatabaseUpdateState.NeedsUpdate; Room.GetRoomUserManager().UpdatePets(); Pet ToRemove = null; if (!Session.GetHabbo().GetInventoryComponent().TryRemovePet(Pet.PetId, out ToRemove)) { log.Error("Erro ao remover o animal de estimação: " + ToRemove.PetId); return; } Session.SendMessage(new PetInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetPets())); }
public void HandleATMQuestion(HabboHotel.GameClients.GameClient Session, int questionId, string amount) { if (Session.GetRoleplay().BankAccount <= 0) { if (Session.GetRoomUser() != null) { if (!Session.GetRoomUser().CanWalk) { Session.GetRoomUser().CanWalk = true; } } } if (questionId == 1) { if (!Session.GetRoleplay().ATMFailed) { if (amount == "1") { Session.GetRoleplay().ATMAccount = "Cheques"; } else if (amount == "2") { Session.GetRoleplay().ATMAccount = "Poupanca"; } else { Session.GetRoleplay().ATMFailed = true; } } } else if (questionId == 2) { if (!Session.GetRoleplay().ATMFailed) { if (amount == "1") { Session.GetRoleplay().ATMAction = "Retirar"; } else if (amount == "2") { Session.GetRoleplay().ATMAction = "Depositar"; } else { Session.GetRoleplay().ATMFailed = true; } } } else { int Amount; if (int.TryParse(amount, out Amount)) { if (Amount <= 0) { Session.GetRoleplay().ATMFailed = true; } if (!Session.GetRoleplay().ATMFailed) { if (Session.GetRoleplay().ATMAccount.ToLower() == "cheques") { if (Session.GetRoleplay().ATMAction.ToLower() == "retirar") { if (Session.GetRoleplay().BankChequings < Amount) { Session.GetRoleplay().ATMFailed = true; } else { Session.GetRoleplay().BankChequings -= Amount; Session.GetHabbo().Credits += Amount; Session.GetHabbo().UpdateCreditsBalance(); Session.Shout("*Usa o ATM para retirar R$" + Amount + " na minha conta de Cheques*", 5); } } else if (Session.GetRoleplay().ATMAction.ToLower() == "depositar") { if (Amount > Session.GetHabbo().Credits) { Session.GetRoleplay().ATMFailed = true; } else { Session.GetRoleplay().BankChequings += Amount; Session.GetHabbo().Credits -= Amount; Session.GetHabbo().UpdateCreditsBalance(); Session.Shout("*Usa o ATM para depositar R$" + Amount + " na mina conta de Cheques*", 5); } } else { Session.GetRoleplay().ATMFailed = true; } } else { if (Session.GetRoleplay().ATMAction.ToLower() == "retirar") { if (Amount > 20) { if (Session.GetRoleplay().BankSavings < Amount) { Session.GetRoleplay().ATMFailed = true; } else { int TaxAmount = Convert.ToInt32((double)Amount * 0.05); Session.GetHabbo().Credits += (Amount - TaxAmount); Session.GetHabbo().UpdateCreditsBalance(); Session.GetRoleplay().BankSavings -= Amount; Session.Shout("*Retira R$" + Amount + " da minha conta de Cheques e coloca no bolso*", 5); Session.SendWhisper("Você pagou uma taxa de R$" + TaxAmount + " por retirar " + Amount, 1); } } else { Session.GetRoleplay().ATMFailed = true; } } else if (Session.GetRoleplay().ATMAction.ToLower() == "depositar") { if (Amount > Session.GetHabbo().Credits) { Session.GetRoleplay().ATMFailed = true; } else { Session.GetRoleplay().BankSavings += Amount; Session.GetHabbo().Credits -= Amount; Session.GetHabbo().UpdateCreditsBalance(); Session.Shout("*Usa o ATM para depositar R$" + Amount + " na minha conta Poupança*", 5); } } else { Session.GetRoleplay().ATMFailed = true; } } } else { Session.GetRoleplay().ATMFailed = true; } if (Session.GetRoleplay().ATMFailed == true) { Session.SendWhisper("Error... ATM Falhou!", 1); } } else { Session.SendWhisper("Error... ATM Falhou!", 1); } Session.GetRoleplay().ATMAccount = ""; Session.GetRoleplay().ATMAction = ""; Session.GetRoleplay().ATMFailed = false; } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } if (Session.GetHabbo().Rank > 3 && !Session.GetHabbo().StaffOk || RavenStaticGameSettings.IsGoingToBeClose) { return; } int Unknown = Packet.PopInt(); int ItemId = Packet.PopInt(); Item Item = Room.GetRoomItemHandler().GetItem(ItemId); if (Item == null) { return; } if (Room.ForSale) { Session.SendWhisper("No se puede editar la Sala mientras está a la venta."); Session.SendWhisper("Cancela la Venta de la Sala expulsando a todos escribe ':unload' (sin las '')"); return; } if (Item.GetBaseItem().InteractionType == InteractionType.POSTIT) { return; } Boolean ItemRights = false; if (Item.UserID == Session.GetHabbo().Id || Room.CheckRights(Session, false)) { ItemRights = true; } else if (Room.Group != null && Room.CheckRights(Session, false, true))//Room has a group, this user has group rights. { ItemRights = true; } else if (Session.GetHabbo().GetPermissions().HasRight("room_item_take")) { ItemRights = true; } if (ItemRights == true) { if (Item.GetBaseItem().InteractionType == InteractionType.TENT || Item.GetBaseItem().InteractionType == InteractionType.TENT_SMALL) { Room.RemoveTent(Item.Id, Item); } if (Item.GetBaseItem().InteractionType == InteractionType.MOODLIGHT) { using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `room_items_moodlight` WHERE `item_id` = '" + Item.Id + "' LIMIT 1"); } } else if (Item.GetBaseItem().InteractionType == InteractionType.TONER) { using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `room_items_toner` WHERE `id` = '" + Item.Id + "' LIMIT 1"); } } if (Item.UserID == Session.GetHabbo().Id) { Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id); Session.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, Item.LimitedNo, Item.LimitedTot); Session.GetHabbo().GetInventoryComponent().UpdateItems(false); } else if (Session.GetHabbo().GetPermissions().HasRight("room_item_take"))//Staff are taking this item { Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id); Session.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, Item.LimitedNo, Item.LimitedTot); Session.GetHabbo().GetInventoryComponent().UpdateItems(false); } else//Item is being ejected. { GameClient targetClient = RavenEnvironment.GetGame().GetClientManager().GetClientByUserID(Item.UserID); if (targetClient != null && targetClient.GetHabbo() != null)//Again, do we have an active client? { Room.GetRoomItemHandler().RemoveFurniture(targetClient, Item.Id); targetClient.GetHabbo().GetInventoryComponent().AddNewItem(Item.Id, Item.BaseItem, Item.ExtraData, Item.GroupId, true, true, Item.LimitedNo, Item.LimitedTot); targetClient.GetHabbo().GetInventoryComponent().UpdateItems(false); } else//No, query time. { Room.GetRoomItemHandler().RemoveFurniture(null, Item.Id); using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = '" + Item.Id + "' LIMIT 1"); } } } RavenEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_PICK); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { Session.SendPacket(new PollContentsComposer()); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { Session.SendMessage(new SendBullyReportComposer()); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { ICollection <Promotion> LandingPromotions = QuasarEnvironment.GetGame().GetLandingManager().GetPromotionItems(); Session.SendMessage(new PromoArticlesComposer(LandingPromotions)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } int ItemId = Packet.PopInt(); if (ItemId == 0) { return; } Room Room; if (!BiosEmuThiago.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } Item Item; if (Room.Group != null) { if (!Room.CheckRights(Session, false, true)) { Item = Room.GetRoomItemHandler().GetItem(ItemId); if (Item == null) { return; } Session.SendMessage(new ObjectUpdateComposer(Item, Room.OwnerId)); return; } } else { if (!Room.CheckRights(Session)) { return; } } Item = Room.GetRoomItemHandler().GetItem(ItemId); if (Item == null) { return; } int x = Packet.PopInt(); int y = Packet.PopInt(); int Rotation = Packet.PopInt(); if (x != Item.GetX || y != Item.GetY) { BiosEmuThiago.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_MOVE); } if (Rotation != Item.Rotation) { BiosEmuThiago.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_ROTATE); } if (!Room.GetRoomItemHandler().SetFloorItem(Session, Item, x, y, Rotation, false, false, true)) { Room.SendMessage(new ObjectUpdateComposer(Item, Room.OwnerId)); return; } if (Item.GetZ >= 0.1) { BiosEmuThiago.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.FURNI_STACK); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool")) { return; } Room Room = null; if (!CloudServer.GetGame().GetRoomManager().TryGetRoom(Packet.PopInt(), out Room)) { return; } bool SetLock = Packet.PopInt() == 1; bool SetName = Packet.PopInt() == 1; bool KickAll = Packet.PopInt() == 1; if (SetName) { Room.RoomData.Name = "Inadequado para o Hotel Management"; Room.RoomData.Description = "Inadequado para o Hotel Management"; } if (SetLock) { Room.RoomData.Access = RoomAccess.DOORBELL; } if (Room.Tags.Count > 0) { Room.ClearTags(); } if (Room.RoomData.HasActivePromotion) { Room.RoomData.EndPromotion(); } using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor()) { if (SetName && SetLock) { dbClient.runFastQuery("UPDATE `rooms` SET `caption` = 'Inadequado para o Hotel Management', `description` = 'Inadequado para o Hotel Management', `tags` = '', `state` = '1' WHERE `id` = '" + Room.RoomId + "' LIMIT 1"); } else if (SetName && !SetLock) { dbClient.runFastQuery("UPDATE `rooms` SET `caption` = 'Inadequado para o Hotel Management', `description` = 'Inadequado para o Hotel Management', `tags` = '' WHERE `id` = '" + Room.RoomId + "' LIMIT 1"); } else if (!SetName && SetLock) { dbClient.runFastQuery("UPDATE `rooms` SET `state` = '1', `tags` = '' WHERE `id` = '" + Room.RoomId + "' LIMIT 1"); } } Room.SendMessage(new RoomSettingsSavedComposer(Room.RoomId)); Room.SendMessage(new RoomInfoUpdatedComposer(Room.RoomId)); if (KickAll) { foreach (RoomUser RoomUser in Room.GetRoomUserManager().GetUserList().ToList()) { if (RoomUser == null || RoomUser.IsBot) { continue; } if (RoomUser.GetClient() == null || RoomUser.GetClient().GetHabbo() == null) { continue; } if (RoomUser.GetClient().GetHabbo().Rank >= Session.GetHabbo().Rank || RoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id) { continue; } Room.GetRoomUserManager().RemoveUserFromRoom(RoomUser.GetClient(), true, false); } } }
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; } if (Session.GetHabbo().InRoom) { if (!CloudServer.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room OldRoom)) { return; } if (OldRoom.GetRoomUserManager() != null) { OldRoom.GetRoomUserManager().RemoveUserFromRoom(Session, false, false); } } if (!Room.GetRoomUserManager().AddAvatarToRoom(Session)) { Room.GetRoomUserManager().RemoveUserFromRoom(Session, false, false); return;//TODO: Remove? } Room.SendObjects(Session); //Status updating for messenger, do later as buggy. try { if (Session.GetHabbo().GetMessenger() != null) { Session.GetHabbo().GetMessenger().OnStatusChanged(true); } } catch { } if (Session.GetHabbo().GetStats().QuestID > 0) { CloudServer.GetGame().GetQuestManager().QuestReminder(Session, Session.GetHabbo().GetStats().QuestID); } Session.SendMessage(new RoomEntryInfoComposer(Room.RoomId, Room.CheckRights(Session, true))); Session.SendMessage(new RoomVisualizationSettingsComposer(Room.WallThickness, Room.FloorThickness, CloudServer.EnumToBool(Room.Hidewall.ToString()))); RoomUser ThisUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username); if (ThisUser != null && Session.GetHabbo().PetId == 0) { Room.SendMessage(new UserChangeComposer(ThisUser, false)); } Session.SendMessage(new RoomEventComposer(Room.RoomData, Room.RoomData.Promotion)); // AQUI EL IF DE SI LA SALA TIENE POLL if (Room.poolQuestion != string.Empty) { Session.SendMessage(new QuickPollMessageComposer(Room.poolQuestion)); if (Room.yesPoolAnswers.Contains(Session.GetHabbo().Id) || Room.noPoolAnswers.Contains(Session.GetHabbo().Id)) { Session.SendMessage(new QuickPollResultsMessageComposer(Room.yesPoolAnswers.Count, Room.noPoolAnswers.Count)); } } if (Room.GetWired() != null) { Room.GetWired().TriggerEvent(WiredBoxType.TriggerRoomEnter, Session.GetHabbo()); } if (Room.ForSale && Room.SalePrice > 0 && (Room.GetRoomUserManager().GetRoomUserByHabbo(Room.OwnerName) != null)) { Session.SendWhisper("Esta sala esta a venda, em " + Room.SalePrice + " Duckets. Escreva :buyroom se deseja comprar!"); } else if (Room.ForSale && Room.GetRoomUserManager().GetRoomUserByHabbo(Room.OwnerName) == null) { foreach (RoomUser _User in Room.GetRoomUserManager().GetRoomUsers()) { if (_User.GetClient() != null && _User.GetClient().GetHabbo() != null && _User.GetClient().GetHabbo().Id != Session.GetHabbo().Id) { _User.GetClient().SendWhisper("Esta sala não se encontra a venda!"); } } Room.ForSale = false; Room.SalePrice = 0; } if (Session.GetHabbo().Effects().CurrentEffect == 77) { Session.GetHabbo().Effects().ApplyEffect(0); } if (CloudServer.GetUnixTimestamp() < Session.GetHabbo().FloodTime&& Session.GetHabbo().FloodTime != 0) { Session.SendMessage(new FloodControlComposer((int)Session.GetHabbo().FloodTime - (int)CloudServer.GetUnixTimestamp())); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { Session.PingCount = 0; }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int Something = Packet.PopInt(); Session.SendMessage(new RentableSpaceComposer()); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int UserId = Packet.PopInt(); Group Group = null; if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (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 (!PlusEnvironment.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 = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `group_memberships` WHERE `group_id` = @GroupId AND `user_id` = @UserId"); dbClient.AddParameter("GroupId", GroupId); dbClient.AddParameter("UserId", UserId); dbClient.RunQuery(); } Session.SendMessage(new GroupInfoComposer(Group, Session)); if (Session.GetHabbo().GetStats().FavouriteGroupId == GroupId) { Session.GetHabbo().GetStats().FavouriteGroupId = 0; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_stats` SET `groupid` = '0' WHERE `id` = '" + UserId + "' LIMIT 1"); } if (Group.AdminOnlyDeco == 0) { Room Room; if (!PlusEnvironment.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, only group creators can remove other administrators from the group."); return; } if (Group.IsAdmin(UserId)) { Group.TakeAdmin(UserId); } if (Group.IsMember(UserId)) { Group.DeleteMember(UserId); } List <UserCache> Members = new List <UserCache>(); List <int> MemberIds = Group.GetAllMembers; foreach (int Id in MemberIds.ToList()) { UserCache GroupMember = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Id); if (GroupMember == null) { continue; } if (!Members.Contains(GroupMember)) { Members.Add(GroupMember); } } int FinishIndex = 14 < Members.Count ? 14 : Members.Count; int MembersCount = Members.Count; Session.SendMessage(new GroupMembersComposer(Group, Members.Take(FinishIndex).ToList(), MembersCount, 1, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), 0, "")); } } }
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) { return; } if (Item.Data == null) { return; } if (Item.UserID != Session.GetHabbo().Id) { return; } if (Item.Data.InteractionType != InteractionType.PURCHASABLE_CLOTHING) { Session.SendNotification("Oeps! Dit kledingstuk is niet te koop."); return; } if (Item.Data.ClothingId == 0) { Session.SendNotification("Oeps! Dit item is niet ingesteld als een kledingstuk."); return; } ClothingItem Clothing = null; if (!QuasarEnvironment.GetGame().GetCatalog().GetClothingManager().TryGetClothing(Item.Data.ClothingId, out Clothing)) { Session.SendNotification("Oeps! Dit kledingstuk kan helaas niet worden gevonden."); return; } //Quickly delete it from the database. using (IQueryAdapter dbClient = QuasarEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("DELETE FROM `items` WHERE `id` = @ItemId LIMIT 1"); dbClient.AddParameter("ItemId", Item.Id); dbClient.RunQuery(); } //Remove the item. Room.GetRoomItemHandler().RemoveFurniture(Session, Item.Id); Session.GetHabbo().GetClothing().AddClothing(Clothing.ClothingName, Clothing.PartIds); Session.SendMessage(new FigureSetIdsComposer(Session.GetHabbo().GetClothing().GetClothingAllParts)); Session.SendMessage(new RoomNotificationComposer("figureset.redeemed.success")); Session.SendWhisper("Wanneer het kledij niet volledig correct zichbaar is kan het helpen om het hotel even te herladen!"); }
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; } if (Session.GetHabbo().InRoom) { Room OldRoom; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out OldRoom)) { return; } if (OldRoom.GetRoomUserManager() != null) { OldRoom.GetRoomUserManager().RemoveUserFromRoom(Session, false, false); } } if (!Room.GetRoomUserManager().AddAvatarToRoom(Session)) { Room.GetRoomUserManager().RemoveUserFromRoom(Session, false, false); return;//TODO: Remove? } Room.SendObjects(Session); //Status updating for messenger, do later as buggy. try { if (Session.GetHabbo().GetMessenger() != null) { Session.GetHabbo().GetMessenger().OnStatusChanged(true); } } catch { } if (Session.GetHabbo().GetStats().QuestID > 0) { PlusEnvironment.GetGame().GetQuestManager().QuestReminder(Session, Session.GetHabbo().GetStats().QuestID); } Session.SendPacket(new RoomEntryInfoComposer(Room.RoomId, Room.CheckRights(Session, true))); Session.SendPacket(new RoomVisualizationSettingsComposer(Room.WallThickness, Room.FloorThickness, PlusEnvironment.EnumToBool(Room.Hidewall.ToString()))); RoomUser ThisUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Username); if (ThisUser != null && Session.GetHabbo().PetId == 0) { Room.SendPacket(new UserChangeComposer(ThisUser, false)); } Session.SendPacket(new RoomEventComposer(Room.RoomData, Room.RoomData.Promotion)); if (Room.GetWired() != null) { Room.GetWired().TriggerEvent(WiredBoxType.TriggerRoomEnter, Session.GetHabbo()); } if (PlusEnvironment.GetUnixTimestamp() < Session.GetHabbo().FloodTime&& Session.GetHabbo().FloodTime != 0) { Session.SendPacket(new FloodControlComposer((int)Session.GetHabbo().FloodTime - (int)PlusEnvironment.GetUnixTimestamp())); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetInventoryComponent() == null) { return; } Room Room; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } int PetId = Packet.PopInt(); RoomUser Pet = null; if (!Room.GetRoomUserManager().TryGetPet(PetId, out Pet)) { //Check kick rights, just because it seems most appropriate. if ((!Room.CheckRights(Session) && Room.WhoCanKick != 2 && Room.Group == null) || (Room.Group != null && !Room.CheckRights(Session, false, true))) { return; } //Okay so, we've established we have no pets in this room by this virtual Id, let us check out users, maybe they're creeping as a pet?! RoomUser TargetUser = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(PetId); if (TargetUser == null) { return; } //Check some values first, please! if (TargetUser.GetClient() == null || TargetUser.GetClient().GetHabbo() == null) { return; } //Update the targets PetId. TargetUser.GetClient().GetHabbo().PetId = 0; //Quickly remove the old user instance. Room.SendPacket(new UserRemoveComposer(TargetUser.VirtualId)); //Add the new one, they won't even notice a thing!!11 8-) Room.SendPacket(new UsersComposer(TargetUser)); return; } if (Session.GetHabbo().Id != Pet.PetData.OwnerId && !Room.CheckRights(Session, true, false)) { Session.SendWhisper("You can only pickup your own pets, to kick a pet you must have room rights."); return; } if (Pet.RidingHorse) { RoomUser UserRiding = Room.GetRoomUserManager().GetRoomUserByVirtualId(Pet.HorseID); if (UserRiding != null) { UserRiding.RidingHorse = false; UserRiding.ApplyEffect(-1); UserRiding.MoveTo(new Point(UserRiding.X + 1, UserRiding.Y + 1)); } else { Pet.RidingHorse = false; } } Pet.PetData.RoomId = 0; Pet.PetData.PlacedInRoom = false; Pet pet = Pet.PetData; if (pet != null) { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `bots` SET `room_id` = '0', `x` = '0', `Y` = '0', `Z` = '0' WHERE `id` = '" + pet.PetId + "' LIMIT 1"); dbClient.RunQuery("UPDATE `bots_petdata` SET `experience` = '" + pet.experience + "', `energy` = '" + pet.Energy + "', `nutrition` = '" + pet.Nutrition + "', `respect` = '" + pet.Respect + "' WHERE `id` = '" + pet.PetId + "' LIMIT 1"); } } if (pet.OwnerId != Session.GetHabbo().Id) { GameClient Target = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(pet.OwnerId); if (Target != null) { Target.GetHabbo().GetInventoryComponent().TryAddPet(Pet.PetData); Room.GetRoomUserManager().RemoveBot(Pet.VirtualId, false); Target.SendPacket(new PetInventoryComposer(Target.GetHabbo().GetInventoryComponent().GetPets())); return; } } Room.GetRoomUserManager().RemoveBot(Pet.VirtualId, false); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { bool InUse = false; string Name = Packet.PopString(); using (IQueryAdapter dbClient = RocketEmulador.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; } } if (RocketEmulador.GetGame().GetChatManager().GetFilter().IsFiltered(Name)) { 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("Hotel") || 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 void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int craftingTable = Packet.PopInt(); //int itemCount = Packet.PopInt(); //int[] myItems = new int[itemCount]; //for (int i = 0; i < itemCount; itemCount++) //{ // int ItemID = Packet.PopInt(); // Item InventoryItem = Session.GetHabbo().GetInventoryComponent().GetItem(ItemID); // if (InventoryItem == null) // continue; // myItems[i] = InventoryItem.BaseItem; //} List <Item> items = new List <Item>(); var count = Packet.PopInt(); for (var i = 1; i <= count; i++) { var id = Packet.PopInt(); var item = Session.GetHabbo().GetInventoryComponent().GetItem(id); if (item == null || items.Contains(item)) { return; } items.Add(item); } CraftingRecipe recipe = null; foreach (var Receta in RavenEnvironment.GetGame().GetCraftingManager().CraftingRecipes) { bool found = false; foreach (var item in Receta.Value.ItemsNeeded) { if (item.Value != items.Count(item2 => item2.GetBaseItem().ItemName == item.Key)) { found = false; break; } found = true; } if (found == false) { continue; } recipe = Receta.Value; break; } if (recipe == null) { return; } ItemData resultItem = RavenEnvironment.GetGame().GetItemManager().GetItemByName(recipe.Result); if (resultItem == null) { return; } bool success = true; foreach (var need in recipe.ItemsNeeded) { for (var i = 1; i <= need.Value; i++) { ItemData item = RavenEnvironment.GetGame().GetItemManager().GetItemByName(need.Key); if (item == null) { success = false; continue; } var inv = Session.GetHabbo().GetInventoryComponent().GetFirstItemByBaseId(item.Id); if (inv == null) { success = false; continue; } using (var dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) dbClient.RunQuery("DELETE FROM `items` WHERE `id` = '" + inv.Id + "' AND `user_id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); Session.GetHabbo().GetInventoryComponent().RemoveItem(inv.Id); } } Session.GetHabbo().GetInventoryComponent().UpdateItems(true); if (success) { Session.GetHabbo().GetInventoryComponent().AddNewItem(0, resultItem.Id, "", 0, true, false, 0, 0); Session.SendMessage(new FurniListUpdateComposer()); Session.GetHabbo().GetInventoryComponent().UpdateItems(true); //Session.SendMessage(new CraftableProductsComposer()); switch (recipe.Type) { case 1: RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_CrystalCracker", 1); break; case 2: RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1); break; case 3: RavenEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1); break; } } Session.SendMessage(new CraftingResultComposer(recipe, success)); Room room = Session.GetHabbo().CurrentRoom; Item table = room.GetRoomItemHandler().GetItem(craftingTable); Session.SendMessage(new CraftableProductsComposer(table)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { Session.SendMessage(new GetHabboClubCenterInfoMessageComposer(Session)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } int ItemId = Packet.PopInt(); Item Item = Room.GetRoomItemHandler().GetItem(ItemId); if (Item == null || Item.Data == null || Item.UserID != Session.GetHabbo().Id || Item.Data.InteractionType != InteractionType.GNOME_BOX) { return; } string PetName = Packet.PopString(); if (string.IsNullOrEmpty(PetName)) { Session.SendMessage(new CheckGnomeNameComposer(PetName, 1)); return; } int X = Item.GetX; int Y = Item.GetY; //Quickly delete it from the database. using (IQueryAdapter dbClient = 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.SendMessage(new CheckGnomeNameComposer(PetName, 0)); //Create the pet here. Pet Pet = PetUtility.CreatePet(Session.GetHabbo().Id, PetName, 26, "30", "ffffff"); if (Pet == null) { Session.SendNotification("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.SendMessage(new FurniListNotificationComposer(Food.Id, 1)); } } }
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; } RoomUser RoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (RoomUser == null) { return; } int Amount = Packet.PopInt(); int ItemId = Packet.PopInt(); Trade Trade = null; if (!RoomUser.IsTrading) { Session.SendPacket(new TradingClosedComposer(Session.GetHabbo().Id)); return; } if (!Room.GetTrading().TryGetTrade(RoomUser.TradeId, out Trade)) { Session.SendPacket(new TradingClosedComposer(Session.GetHabbo().Id)); return; } Item Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (Item == null) { return; } if (!Trade.CanChange) { return; } TradeUser TradeUser = Trade.Users[0]; if (TradeUser.RoomUser != RoomUser) { TradeUser = Trade.Users[1]; } List <Item> AllItems = Session.GetHabbo().GetInventoryComponent().GetItems.Where(x => x.Data.Id == Item.Data.Id).Take(Amount).ToList(); foreach (Item I in AllItems) { if (TradeUser.OfferedItems.ContainsKey(I.Id)) { return; } Trade.RemoveAccepted(); TradeUser.OfferedItems.Add(I.Id, I); } Trade.SendPacket(new TradingUpdateComposer(Trade)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int count = Packet.PopInt(); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); int Page = Packet.PopInt(); string SearchVal = Packet.PopString(); int RequestType = Packet.PopInt(); if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group Group)) { return; } List <UserCache> Members = new List <UserCache>(); switch (RequestType) { case 0: { List <int> MemberIds = Group.GetAllMembers; foreach (int Id in MemberIds.ToList()) { UserCache GroupMember = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Id); if (GroupMember == null) { continue; } if (!Members.Contains(GroupMember)) { Members.Add(GroupMember); } } break; } case 1: { List <int> AdminIds = Group.GetAdministrators; foreach (int Id in AdminIds.ToList()) { UserCache GroupMember = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Id); if (GroupMember == null) { continue; } if (!Members.Contains(GroupMember)) { Members.Add(GroupMember); } } break; } case 2: { List <int> RequestIds = Group.GetRequests; foreach (int Id in RequestIds.ToList()) { UserCache GroupMember = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Id); if (GroupMember == null) { continue; } if (!Members.Contains(GroupMember)) { Members.Add(GroupMember); } } break; } } if (!string.IsNullOrEmpty(SearchVal)) { Members = Members.Where(x => x.Username.StartsWith(SearchVal)).ToList(); } int StartIndex = ((Page - 1) * 14 + 14); int FinishIndex = Members.Count; Session.SendPacket(new GroupMembersComposer(Group, Members.Skip(StartIndex).Take(FinishIndex - StartIndex).ToList(), Members.Count, Page, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), RequestType, SearchVal)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { Session.SendMessage(new MarketPlaceOwnOffersComposer(Session.GetHabbo().Id)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int pollId = Packet.PopInt(); int questionId = Packet.PopInt(); int num3 = Packet.PopInt(); string liststring = ""; if (Packet.RemainingLength > 0) { liststring = Packet.PopString(); } if (pollId == 500000) { HandleATMQuestion(Session, questionId, liststring); return; } List <string> list = new List <string>(); for (int i = 0; i < num3; i++) { list.Add(liststring); } string text = string.Join("\r\n", list); if (text == "") { text = "Não respondeu esta pergunta."; } Poll poll = PlusEnvironment.GetGame().GetPollManager().TryGetPollById(pollId); if (poll == null) { Session.SendWhisper("Ups! Algo deu errado. Esta Enquete não pôde ser encontrada!", 1); return; } if (poll.Type == PollType.Matching) { if (text == "1") { poll.AnswersPositive++; } else { poll.AnswersNegative++; } Session.GetHabbo().AnsweredMatchingPoll = true; Session.SendMessage(new MatchingPollAnsweredMessageComposer(Session, text)); return; } PollQuestion Question = PlusEnvironment.GetGame().GetPollManager().getPollQuestion(poll, questionId); if (Question != null) { if (text != "Não respondeu esta pergunta. " && (Question.AType == PollAnswerType.RadioSelection || Question.AType == PollAnswerType.RadioSelection)) { List <string> SelectionAnswers = new List <string>(); foreach (string answerid in list) { int index = 0; foreach (string answer in Question.Answers) { index++; if (index != Convert.ToInt32(answerid)) { continue; } SelectionAnswers.Add(answer); } } text = string.Join(",", SelectionAnswers); } } if (questionId == poll.Questions.Count) { if (!Session.GetHabbo().AnsweredPolls.Contains(poll.Id)) { Session.GetHabbo().AnsweredPolls.Add(poll.Id); } } var NewQuestion = new PollQuestion(questionId, Question.Question, 1, text, ""); var AnsweredQuestions = Session.GetRoleplay().AnsweredPollQuestions; if (AnsweredQuestions.ContainsKey(poll.Id)) { if (!AnsweredQuestions[poll.Id].Contains(NewQuestion)) { AnsweredQuestions[poll.Id].Add(NewQuestion); } } else { List <PollQuestion> List = new List <PollQuestion>(); List.Add(NewQuestion); AnsweredQuestions.TryAdd(poll.Id, List); } if (AnsweredQuestions[poll.Id].Count == poll.Questions.Count) { string Answers = ""; var OrderedAnswers = AnsweredQuestions[poll.Id].OrderBy(x => x.Index).ToList(); int count = 0; foreach (string Answer in OrderedAnswers.Select(x => x.Answers[0])) { count++; if (count < OrderedAnswers.Count) { Answers += Answer + "Ø"; } else { Answers += Answer; } } using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `user_polls` VALUES (@userid ,@pollid ,@answers)"); dbClient.AddParameter("userid", Session.GetHabbo().Id); dbClient.AddParameter("pollid", poll.Id); dbClient.AddParameter("answers", Answers); dbClient.RunQuery(); } } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int GroupId = Packet.PopInt(); Group Group = null; if (!RavenEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group)) { return; } if (Group.CreatorId != Session.GetHabbo().Id) { return; } int Type = Packet.PopInt(); int FurniOptions = Packet.PopInt(); switch (Type) { default: case 0: Group.GroupType = GroupType.OPEN; break; case 1: Group.GroupType = GroupType.LOCKED; break; case 2: Group.GroupType = GroupType.PRIVATE; break; } if (Group.GroupType != GroupType.LOCKED) { if (Group.GetRequests.Count > 0) { foreach (int UserId in Group.GetRequests.ToList()) { Group.HandleRequest(UserId, false); } Group.ClearRequests(); } } using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE `groups` SET `state` = @GroupState, `admindeco` = @AdminDeco WHERE `id` = " + Group.Id + " LIMIT 1"); dbClient.AddParameter("GroupState", (Group.GroupType == GroupType.OPEN ? 0 : Group.GroupType == GroupType.LOCKED ? 1 : 2).ToString()); dbClient.AddParameter("AdminDeco", (FurniOptions == 1 ? 1 : 0).ToString()); dbClient.RunQuery(); } Group.AdminOnlyDeco = FurniOptions; Room Room; if (!RavenEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room)) { return; } foreach (RoomUser User in Room.GetRoomUserManager().GetRoomUsers().ToList()) { if (Room.OwnerId == User.UserId || Group.IsAdmin(User.UserId) || !Group.IsMember(User.UserId)) { continue; } if (FurniOptions == 1) { User.RemoveStatus("flatctrl 1"); User.UpdateNeeded = true; User.GetClient().SendMessage(new YouAreControllerComposer(0)); } else if (FurniOptions == 0 && !User.Statusses.ContainsKey("flatctrl 1")) { User.AddStatus("flatctrl 1", ""); User.UpdateNeeded = true; User.GetClient().SendMessage(new YouAreControllerComposer(1)); } } Session.SendMessage(new GroupInfoComposer(Group, Session)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) { return; } Room Room; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } int PetId = Packet.PopInt(); bool Type = Packet.PopBoolean(); RoomUser Pet = null; if (!Room.GetRoomUserManager().TryGetPet(PetId, out Pet)) { return; } if (Pet.PetData == null) { return; } if (Pet.PetData.AnyoneCanRide == 0 && Pet.PetData.OwnerId != User.UserId) { Session.SendNotification( "You are unable to ride this horse.\nThe owner of the pet has not selected for anyone to ride it."); return; } if (Type) { if (Pet.RidingHorse) { string[] Speech2 = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.alreadymounted"); var RandomSpeech2 = new Random(); Pet.Chat(Speech2[RandomSpeech2.Next(0, Speech2.Length - 1)], false); } else if (User.RidingHorse) { Session.SendNotification("You are already riding a horse!"); } else { if (Pet.Statusses.Count > 0) { Pet.Statusses.Clear(); } int NewX2 = User.X; int NewY2 = User.Y; Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(Pet, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2))); Room.SendMessage(Room.GetRoomItemHandler().UpdateUserOnRoller(User, new Point(NewX2, NewY2), 0, Room.GetGameMap().SqAbsoluteHeight(NewX2, NewY2) + 1)); User.MoveTo(NewX2, NewY2); Pet.ClearMovement(true); User.RidingHorse = true; Pet.RidingHorse = true; Pet.HorseID = User.VirtualId; User.HorseID = Pet.VirtualId; User.ApplyEffect(77); User.RotBody = Pet.RotBody; User.RotHead = Pet.RotHead; User.UpdateNeeded = true; Pet.UpdateNeeded = true; } } else { if (User.VirtualId == Pet.HorseID) { Pet.Statusses.Remove("sit"); Pet.Statusses.Remove("lay"); Pet.Statusses.Remove("snf"); Pet.Statusses.Remove("eat"); Pet.Statusses.Remove("ded"); Pet.Statusses.Remove("jmp"); User.RidingHorse = false; User.HorseID = 0; Pet.RidingHorse = false; Pet.HorseID = 0; User.MoveTo(new Point(User.X + 2, User.Y + 2)); User.ApplyEffect(-1); User.UpdateNeeded = true; Pet.UpdateNeeded = true; } else { Session.SendNotification("Could not dismount this horse - You are not riding it!"); } } Room.SendMessage(new PetHorseFigureInformationComposer(Pet)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int ErrorCode = (Session.GetHabbo().TradingLockExpiry > 0 ? 6 : 1); Session.SendMessage(new MarketplaceCanMakeOfferResultComposer(ErrorCode)); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) { return; } int RoomId = Packet.PopInt(); Room Room = HabboRoleplay.Misc.RoleplayManager.GenerateRoom(RoomId); if (Room == null || !Room.CheckRights(Session, true)) { 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 > 75) { MaxUsers = 75; } 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.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 = PlusEnvironment.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, PlusEnvironment.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, 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); }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room = null; if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room)) { return; } int ItemId = 0; string[] Data = null; string RawData = Packet.PopString(); Data = RawData.Split(' '); if (!int.TryParse(Data[0], out ItemId)) { return; } bool HasRights = false; if (Room.CheckRights(Session, false, true)) { HasRights = true; } if (!HasRights) { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_not_owner}")); return; } Item Item = Session.GetHabbo().GetInventoryComponent().GetItem(ItemId); if (Item == null) { return; } if (Room.GetRoomItemHandler().GetWallAndFloor.Count() > Convert.ToInt32(PlusEnvironment.GetSettingsManager().TryGetValue("room.item.placement_limit"))) { Session.SendNotification("You cannot have more than " + Convert.ToInt32(PlusEnvironment.GetSettingsManager().TryGetValue("room.item.placement_limit")) + " items in a room!"); return; } else if (Item.Data.InteractionType == InteractionType.EXCHANGE && Room.OwnerId != Session.GetHabbo().Id&& !Session.GetHabbo().GetPermissions().HasRight("room_item_place_exchange_anywhere")) { Session.SendNotification("You cannot place exchange items in other people's rooms!"); return; } //TODO: Make neat. switch (Item.GetBaseItem().InteractionType) { #region Interaction Types case InteractionType.MOODLIGHT: { MoodlightData moodData = Room.MoodlightData; if (moodData != null && Room.GetRoomItemHandler().GetItem(moodData.ItemId) != null) { Session.SendNotification("You can only have one background moodlight per room!"); return; } break; } case InteractionType.TONER: { TonerData tonerData = Room.TonerData; if (tonerData != null && Room.GetRoomItemHandler().GetItem(tonerData.ItemId) != null) { Session.SendNotification("You can only have one background toner per room!"); return; } break; } case InteractionType.HOPPER: { if (Room.GetRoomItemHandler().HopperCount > 0) { Session.SendNotification("You can only have one hopper per room!"); return; } break; } case InteractionType.TENT: case InteractionType.TENT_SMALL: { Room.AddTent(Item.Id); break; } #endregion } if (!Item.IsWallItem) { if (Data.Length < 4) { return; } int X = 0; int Y = 0; int Rotation = 0; if (!int.TryParse(Data[1], out X)) { return; } if (!int.TryParse(Data[2], out Y)) { return; } if (!int.TryParse(Data[3], out Rotation)) { return; } Item RoomItem = new Item(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, X, Y, 0, Rotation, Session.GetHabbo().Id, Item.GroupId, Item.LimitedNo, Item.LimitedTot, string.Empty, Room); if (Room.GetRoomItemHandler().SetFloorItem(Session, RoomItem, X, Y, Rotation, true, false, true)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); if (Session.GetHabbo().Id == Room.OwnerId) { PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RoomDecoFurniCount", 1, false); } if (RoomItem.IsWired) { try { Room.GetWired().LoadWiredBox(RoomItem); } catch { Console.WriteLine(Item.GetBaseItem().InteractionType); } } } else { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_item}")); return; } } else if (Item.IsWallItem) { string[] CorrectedData = new string[Data.Length - 1]; for (int i = 1; i < Data.Length; i++) { CorrectedData[i - 1] = Data[i]; } string WallPos = string.Empty; if (TrySetWallItem(CorrectedData, out WallPos)) { try { Item RoomItem = new Item(Item.Id, Room.RoomId, Item.BaseItem, Item.ExtraData, 0, 0, 0, 0, Session.GetHabbo().Id, Item.GroupId, Item.LimitedNo, Item.LimitedTot, WallPos, Room); if (Room.GetRoomItemHandler().SetWallItem(Session, RoomItem)) { Session.GetHabbo().GetInventoryComponent().RemoveItem(ItemId); if (Session.GetHabbo().Id == Room.OwnerId) { PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_RoomDecoFurniCount", 1, false); } } } catch { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_item}")); return; } } else { Session.SendPacket(new RoomNotificationComposer("furni_placement_error", "message", "${room.error.cant_set_item}")); return; } } }