public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights) { if (Session == null || Item == null) return; if (!HasRights) return; IWiredItem Box = null; if (!Item.GetRoom().GetWired().TryGet(Item.Id, out Box)) return; Item.ExtraData = "1"; Item.UpdateState(false, true); Item.RequestUpdate(2, true); if (Item.GetBaseItem().WiredType == WiredBoxType.AddonRandomEffect) return; if (Item.GetRoom().GetWired().IsTrigger(Item)) { List<int> BlockedItems = WiredBoxTypeUtility.ContainsBlockedEffect(Box, Item.GetRoom().GetWired().GetEffects(Box)); Session.SendMessage(new WiredTriggerConfigComposer(Box, BlockedItems)); } else if (Item.GetRoom().GetWired().IsEffect(Item)) { List<int> BlockedItems = WiredBoxTypeUtility.ContainsBlockedTrigger(Box, Item.GetRoom().GetWired().GetTriggers(Box)); Session.SendMessage(new WiredEffectConfigComposer(Box, BlockedItems)); } else if (Item.GetRoom().GetWired().IsCondition(Item)) Session.SendMessage(new WiredConditionConfigComposer(Box)); }
public void Parse(GameClient Session, ClientPacket Packet) { string PetName = Packet.PopString(); if (PetName.Length < 2) { Session.SendMessage(new CheckPetNameComposer(2, "2")); return; } else if (PetName.Length > 15) { Session.SendMessage(new CheckPetNameComposer(1, "15")); return; } else if (!PlusEnvironment.IsValidAlphaNumeric(PetName)) { Session.SendMessage(new CheckPetNameComposer(3, "")); return; } else if (PlusEnvironment.GetGame().GetChatManager().GetFilter().IsFiltered(PetName)) { Session.SendMessage(new CheckPetNameComposer(4, "")); return; } Session.SendMessage(new CheckPetNameComposer(0, "")); }
public void Parse(GameClient Session, ClientPacket Packet) { string VoucherCode = Packet.PopString().Replace("\r", ""); Voucher Voucher = null; if (!PlusEnvironment.GetGame().GetCatalog().GetVoucherManager().TryGetVoucher(VoucherCode, out Voucher)) { Session.SendMessage(new VoucherRedeemErrorComposer(0)); return; } if (Voucher.CurrentUses >= Voucher.MaxUses) { Session.SendNotification("Oops, this voucher has reached the maximum usage limit!"); return; } DataRow GetRow = null; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM `user_vouchers` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `voucher` = @Voucher LIMIT 1"); dbClient.AddParameter("Voucher", VoucherCode); GetRow = dbClient.getRow(); } if (GetRow != null) { Session.SendNotification("You've already used this voucher code, one per each user, sorry!"); return; } else { using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("INSERT INTO `user_vouchers` (`user_id`,`voucher`) VALUES ('" + Session.GetHabbo().Id + "', @Voucher)"); dbClient.AddParameter("Voucher", VoucherCode); dbClient.RunQuery(); } } Voucher.UpdateUses(); if (Voucher.Type == VoucherType.CREDIT) { Session.GetHabbo().Credits += Voucher.Value; Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); } else if (Voucher.Type == VoucherType.DUCKET) { Session.GetHabbo().Duckets += Voucher.Value; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Voucher.Value)); } Session.SendMessage(new VoucherRedeemOkComposer()); }
public void CheckRewards(GameClient Session) { if (Session == null || Session.GetHabbo() == null) return; foreach (KeyValuePair<int, Reward> Entry in _rewards) { int Id = Entry.Key; Reward Reward = Entry.Value; if (this.HasReward(Session.GetHabbo().Id, Id)) continue; if (Reward.isActive()) { switch (Reward.Type) { case RewardType.BADGE: { if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Reward.RewardData)) Session.GetHabbo().GetBadgeComponent().GiveBadge(Reward.RewardData, true, Session); break; } case RewardType.CREDITS: { Session.GetHabbo().Credits += Convert.ToInt32(Reward.RewardData); Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits)); break; } case RewardType.DUCKETS: { Session.GetHabbo().Duckets += Convert.ToInt32(Reward.RewardData); Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Convert.ToInt32(Reward.RewardData))); break; } case RewardType.DIAMONDS: { Session.GetHabbo().Diamonds += Convert.ToInt32(Reward.RewardData); Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, Convert.ToInt32(Reward.RewardData), 5)); break; } } if (!String.IsNullOrEmpty(Reward.Message)) Session.SendNotification(Reward.Message); this.LogReward(Session.GetHabbo().Id, Id); } else continue; } }
public void Parse(GameClient Session, ClientPacket Packet) { /*int Sub = 0; if (Session.GetHabbo().GetSubscriptionManager().HasSubscription) { Sub = Session.GetHabbo().GetSubscriptionManager().GetSubscription().SubscriptionId; }*/ Session.SendMessage(new CatalogIndexComposer(Session, PlusEnvironment.GetGame().GetCatalog().GetPages()));//, Sub)); Session.SendMessage(new CatalogItemDiscountComposer()); Session.SendMessage(new BCBorrowedItemsComposer()); }
public void Parse(GameClient Session, ClientPacket Packet) { string Type = Packet.PopString(); string PacketType = ""; int PetId = PlusEnvironment.GetGame().GetCatalog().GetPetRaceManager().GetPetId(Type, out PacketType); Session.SendMessage(new SellablePetBreedsComposer(PacketType, PetId, PlusEnvironment.GetGame().GetCatalog().GetPetRaceManager().GetRacesForRaceId(PetId))); }
public void Parse(GameClient Session, ClientPacket Packet) { if (!Session.GetHabbo().InRoom) return; if (!Session.GetHabbo().EnterRoom(Session.GetHabbo().CurrentRoom)) Session.SendMessage(new CloseConnectionComposer()); }
public void Parse(GameClient Session, ClientPacket Packet) { string Junk = Packet.PopString(); string MachineId = Packet.PopString(); Session.MachineId = MachineId; Session.SendMessage(new SetUniqueIdComposer(MachineId)); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null) return; ICollection<SearchResultList> Categories = PlusEnvironment.GetGame().GetNavigator().GetFlatCategories(); Session.SendMessage(new UserFlatCatsComposer(Categories, Session.GetHabbo().Rank)); }
public void Parse(GameClient Session, ClientPacket Packet) { int Id = Packet.PopInt(); Session.GetHabbo().FavoriteRooms.Remove(Id); Session.SendMessage(new UpdateFavouriteRoomComposer(Id, false)); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM user_favorites WHERE user_id = " + Session.GetHabbo().Id + " AND room_id = " + Id + " LIMIT 1"); } }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null) return; int PageId = Packet.PopInt(); int ItemId = Packet.PopInt(); int RoomId = Packet.PopInt(); string Name = PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(Packet.PopString()); bool junk3 = Packet.PopBoolean(); string Desc = PlusEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(Packet.PopString()); int CategoryId = Packet.PopInt(); RoomData Data = PlusEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId); if (Data == null) return; if (Data.OwnerId != Session.GetHabbo().Id) return; if (Data.Promotion == null) Data.Promotion = new RoomPromotion(Name, Desc, CategoryId); else { Data.Promotion.Name = Name; Data.Promotion.Description = Desc; Data.Promotion.TimestampExpires += 7200; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("REPLACE INTO `room_promotions` (`room_id`,`title`,`description`,`timestamp_start`,`timestamp_expire`,`category_id`) VALUES (@room_id, @title, @description, @start, @expires, @CategoryId)"); dbClient.AddParameter("room_id", RoomId); dbClient.AddParameter("title", Name); dbClient.AddParameter("description", Desc); dbClient.AddParameter("start", Data.Promotion.TimestampStarted); dbClient.AddParameter("expires", Data.Promotion.TimestampExpires); dbClient.AddParameter("CategoryId", CategoryId); dbClient.RunQuery(); } if (!Session.GetHabbo().GetBadgeComponent().HasBadge("RADZZ")) Session.GetHabbo().GetBadgeComponent().GiveBadge("RADZZ", true, Session); Session.SendMessage(new PurchaseOKComposer()); if (Session.GetHabbo().InRoom && Session.GetHabbo().CurrentRoomId == RoomId) Session.GetHabbo().CurrentRoom.SendMessage(new RoomEventComposer(Data, Data.Promotion)); Session.GetHabbo().GetMessenger().BroadcastAchievement(Session.GetHabbo().Id, HabboHotel.Users.Messenger.MessengerEventTypes.EVENT_STARTED, Name); }
public void CancelQuest(GameClient Session, ClientPacket Message) { Quest Quest = GetQuest(Session.GetHabbo().GetStats().QuestID); if (Quest == null) return; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("DELETE FROM `user_quests` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `quest_id` = '" + Quest.Id + "';" + "UPDATE `user_stats` SET `quest_id` = '0' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } Session.GetHabbo().GetStats().QuestID = 0; Session.SendMessage(new QuestAbortedComposer()); GetList(Session, null); }
public void Parse(GameClient Session, ClientPacket Packet) { int PageId = Packet.PopInt(); int Something = Packet.PopInt(); string CataMode = Packet.PopString(); 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; Session.SendMessage(new CatalogPageComposer(Page, CataMode)); }
public void ActivateQuest(GameClient Session, int QuestId) { Quest Quest = GetQuest(QuestId); if (Quest == null) return; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("REPLACE INTO `user_quests` (`user_id`,`quest_id`) VALUES ('" + Session.GetHabbo().Id + "', '" + Quest.Id + "')"); dbClient.RunQuery("UPDATE `user_stats` SET `quest_id` = '" + Quest.Id + "' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } Session.GetHabbo().GetStats().QuestID = Quest.Id; GetList(Session, null); Session.SendMessage(new QuestStartedComposer(Session, Quest)); }
public void Execute(GameClient Session, Room Room, string[] Params) { TimeSpan Uptime = DateTime.Now - PlusEnvironment.ServerStarted; int OnlineUsers = PlusEnvironment.GetGame().GetClientManager().Count; int RoomCount = PlusEnvironment.GetGame().GetRoomManager().Count; Session.SendMessage(new RoomNotificationComposer("Powered by PlusEmulator", "<b>Credits</b>:\n" + "Sledmore (Developer)\n" + "123 (Developer)\n" + "Joopie (Encryption)\n" + "Tweeney (PlusEMU)\n" + "Butterfly Emulator developers\n\n" + "<b>Current run time information</b>:\n" + "Online Users: " + OnlineUsers + "\n" + "Rooms Loaded: " + RoomCount + "\n" + "Uptime: " + Uptime.Days + " day(s), " + Uptime.Hours + " hours and " + Uptime.Minutes + " minutes.\n\n" + "<b>SWF Revision</b>:\n" + PlusEnvironment.SWFRevision, "plus", "")); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) return; Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) return; Dictionary<int, string> Badges = new Dictionary<int, string>(); foreach (RoomUser User in Room.GetRoomUserManager().GetRoomUsers().ToList()) { if (User.IsBot || User.IsPet || User.GetClient() == null || User.GetClient().GetHabbo() == null) continue; if (User.GetClient().GetHabbo().GetStats().FavouriteGroupId == 0 || Badges.ContainsKey(User.GetClient().GetHabbo().GetStats().FavouriteGroupId)) continue; Group Group = null; if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(User.GetClient().GetHabbo().GetStats().FavouriteGroupId, out Group)) continue; if (!Badges.ContainsKey(Group.Id)) Badges.Add(Group.Id, Group.Badge); } if (Session.GetHabbo().GetStats().FavouriteGroupId > 0) { Group Group = null; if (PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(Session.GetHabbo().GetStats().FavouriteGroupId, out Group)) { if (!Badges.ContainsKey(Group.Id)) Badges.Add(Group.Id, Group.Badge); } } Room.SendMessage(new HabboGroupBadgesComposer(Badges)); Session.SendMessage(new HabboGroupBadgesComposer(Badges)); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null) return; int RoomId = Packet.PopInt(); RoomData Data = PlusEnvironment.GetGame().GetRoomManager().GenerateRoomData(RoomId); if (Data == null || Session.GetHabbo().FavoriteRooms.Count >= 30 || Session.GetHabbo().FavoriteRooms.Contains(RoomId)) { // send packet that favourites is full. return; } Session.GetHabbo().FavoriteRooms.Add(RoomId); Session.SendMessage(new UpdateFavouriteRoomComposer(RoomId, true)); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("INSERT INTO user_favorites (user_id,room_id) VALUES (" + Session.GetHabbo().Id + "," + RoomId + ")"); } }
public void GetCurrentQuest(GameClient Session, ClientPacket Message) { if (!Session.GetHabbo().InRoom) return; Quest UserQuest = GetQuest(Session.GetHabbo().QuestLastCompleted); Quest NextQuest = GetNextQuestInSeries(UserQuest.Category, UserQuest.Number + 1); if (NextQuest == null) return; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("REPLACE INTO `user_quests`(`user_id`,`quest_id`) VALUES (" + Session.GetHabbo().Id + ", " + NextQuest.Id + ")"); dbClient.RunQuery("UPDATE `user_stats` SET `quest_id` = '" + NextQuest.Id + "' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } Session.GetHabbo().GetStats().QuestID = NextQuest.Id; GetList(Session, null); Session.SendMessage(new QuestStartedComposer(Session, NextQuest)); }
public void QuestReminder(GameClient Session, int QuestId) { Quest Quest = GetQuest(QuestId); if (Quest == null) return; Session.SendMessage(new QuestStartedComposer(Session, Quest)); }
public void ProgressUserQuest(GameClient Session, QuestType QuestType, int EventData = 0) { if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetStats().QuestID <= 0) { return; } Quest UserQuest = GetQuest(Session.GetHabbo().GetStats().QuestID); if (UserQuest == null || UserQuest.GoalType != QuestType) { return; } int CurrentProgress = Session.GetHabbo().GetQuestProgress(UserQuest.Id); int NewProgress = CurrentProgress; bool PassQuest = false; switch (QuestType) { default: NewProgress++; if (NewProgress >= UserQuest.GoalData) { PassQuest = true; } break; case QuestType.EXPLORE_FIND_ITEM: if (EventData != UserQuest.GoalData) return; NewProgress = Convert.ToInt32(UserQuest.GoalData); PassQuest = true; break; case QuestType.STAND_ON: if (EventData != UserQuest.GoalData) return; NewProgress = Convert.ToInt32(UserQuest.GoalData); PassQuest = true; break; case QuestType.XMAS_PARTY: NewProgress++; if (NewProgress == UserQuest.GoalData) PassQuest = true; break; case QuestType.GIVE_ITEM: if (EventData != UserQuest.GoalData) return; NewProgress = Convert.ToInt32(UserQuest.GoalData); PassQuest = true; break; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `user_quests` SET `progress` = '" + NewProgress + "' WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `quest_id` = '" + UserQuest.Id + "' LIMIT 1"); if (PassQuest) dbClient.RunQuery("UPDATE `user_stats` SET `quest_id` = '0' WHERE `id` = '" + Session.GetHabbo().Id + "' LIMIT 1"); } Session.GetHabbo().quests[Session.GetHabbo().GetStats().QuestID] = NewProgress; Session.SendMessage(new QuestStartedComposer(Session, UserQuest)); if (PassQuest) { Session.GetHabbo().GetMessenger().BroadcastAchievement(Session.GetHabbo().Id, Users.Messenger.MessengerEventTypes.QUEST_COMPLETED, UserQuest.Category + "." + UserQuest.Name); Session.GetHabbo().GetStats().QuestID = 0; Session.GetHabbo().QuestLastCompleted = UserQuest.Id; Session.SendMessage(new QuestCompletedComposer(Session, UserQuest)); Session.GetHabbo().Duckets += UserQuest.Reward; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, UserQuest.Reward)); GetList(Session, null); } }
public void GetList(GameClient Session, ClientPacket Message) { Dictionary<string, int> UserQuestGoals = new Dictionary<string, int>(); Dictionary<string, Quest> UserQuests = new Dictionary<string, Quest>(); foreach (Quest Quest in _quests.Values.ToList()) { if (Quest.Category.Contains("xmas2012")) continue; if (!UserQuestGoals.ContainsKey(Quest.Category)) { UserQuestGoals.Add(Quest.Category, 1); UserQuests.Add(Quest.Category, null); } if (Quest.Number >= UserQuestGoals[Quest.Category]) { int UserProgress = Session.GetHabbo().GetQuestProgress(Quest.Id); if (Session.GetHabbo().GetStats().QuestID != Quest.Id && UserProgress >= Quest.GoalData) { UserQuestGoals[Quest.Category] = Quest.Number + 1; } } } foreach (Quest Quest in _quests.Values.ToList()) { foreach (var Goal in UserQuestGoals) { if (Quest.Category.Contains("xmas2012")) continue; if (Quest.Category == Goal.Key && Quest.Number == Goal.Value) { UserQuests[Goal.Key] = Quest; break; } } } Session.SendMessage(new QuestListComposer(Session, _quests.Values.ToList(), (Message != null), UserQuestGoals, UserQuests)); }
public void SendObjects(GameClient Session) { Room Room = Session.GetHabbo().CurrentRoom; Session.SendMessage(new HeightMapComposer(Room.GetGameMap().Model.Heightmap)); Session.SendMessage(new FloorHeightMapComposer(Room.GetGameMap().Model.GetRelativeHeightmap(), Room.GetGameMap().StaticModel.WallHeight)); foreach (RoomUser RoomUser in _roomUserManager.GetUserList().ToList()) { if (RoomUser == null) continue; Session.SendMessage(new UsersComposer(RoomUser)); if (RoomUser.IsBot && RoomUser.BotData.DanceId > 0) Session.SendMessage(new DanceComposer(RoomUser, RoomUser.BotData.DanceId)); else if (!RoomUser.IsBot && !RoomUser.IsPet && RoomUser.IsDancing) Session.SendMessage(new DanceComposer(RoomUser, RoomUser.DanceId)); if (RoomUser.IsAsleep) Session.SendMessage(new SleepComposer(RoomUser, true)); if (RoomUser.CarryItemID > 0 && RoomUser.CarryTimer > 0) Session.SendMessage(new CarryObjectComposer(RoomUser.VirtualId, RoomUser.CarryItemID)); if (!RoomUser.IsBot && !RoomUser.IsPet && RoomUser.CurrentEffect > 0) Room.SendMessage(new AvatarEffectComposer(RoomUser.VirtualId, RoomUser.CurrentEffect)); } Session.SendMessage(new UserUpdateComposer(_roomUserManager.GetUserList().ToList())); Session.SendMessage(new ObjectsComposer(Room.GetRoomItemHandler().GetFloor.ToArray(), this)); Session.SendMessage(new ItemsComposer(Room.GetRoomItemHandler().GetWall.ToArray(), this)); }
internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Item.ExtraData.StartsWith("0")) { return; } else if (Item.ExtraData.EndsWith("0")) { return; } ServerMessage Response = new ServerMessage(); int BoxColour = int.Parse(Item.ExtraData.Split(Convert.ToChar(5))[0]); RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); User.GateId = Item.Id; if (Session.GetHabbo().Id == Item.GetRoom().OwnerId) { Item.InteractingUser = Session.GetHabbo().Id; Response.Init(Outgoing.OpenMysteryBox); Session.SendMessage(Response); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().getQueryreactor()) dbClient.runFastQuery("UPDATE items SET extra_data = '" + BoxColour + Convert.ToChar(5) + "1' WHERE id=" + Item.Id + " LIMIT 1;"); Item.ExtraData = BoxColour + Convert.ToChar(5) + "1"; Item.UpdateNeeded = true; Item.UpdateState(true, true); } else { if (BoxColour == Session.GetHabbo().MysteryKeyColour) { Item.InteractingUser2 = Session.GetHabbo().Id; Response.Init(Outgoing.OpenMysteryBox); Session.SendMessage(Response); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().getQueryreactor()) dbClient.runFastQuery("UPDATE items SET extra_data = '" + BoxColour + Convert.ToChar(5) + "1' WHERE id=" + Item.Id + " LIMIT 1;"); Item.ExtraData = BoxColour + Convert.ToChar(5) + "1"; Item.UpdateNeeded = true; Item.UpdateState(true, true); } else { Response.Init(Outgoing.SerializeCoolMessage); Response.AppendString("${mysterybox.error.title}"); Response.AppendString("${mysterybox.error.wrong_key.subtitle}"); Response.AppendString("${mysterybox.error.wrong_key.message}"); Response.AppendString(""); Response.AppendString(""); Response.AppendString(""); Session.SendMessage(Response); return; } } if (Item.InteractingUser > 0 && Item.InteractingUser2 > 0) { GameClient BoxOwner = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Item.InteractingUser); GameClient Helper = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Item.InteractingUser2); if (Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(PlusEnvironment.getHabboForId(Item.InteractingUser).Username) == null || BoxOwner == null) { Item.InteractingUser = 0; return; } else if (Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(PlusEnvironment.getHabboForId(Item.InteractingUser2).Username) == null || Helper == null) { Item.InteractingUser2 = 0; return; } using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE items SET extra_data = '" + BoxColour + Convert.ToChar(5) + "0' WHERE user_id=" + BoxOwner.GetHabbo().Id + " AND base_item=4700 LIMIT 1;" + "UPDATE users SET key_colour=0 WHERE id=" + Helper.GetHabbo().Id + " LIMIT 1"); EcotronReward Reward = PlusEnvironment.GetGame().GetCatalog().GetRandomEcotronReward(); Item.ExtraData = BoxColour + Convert.ToChar(5) + "0"; Item.UpdateNeeded = true; Item.UpdateState(true, true); Response.Init(Outgoing.SendMysteryBoxPrize); Response.AppendString(PlusEnvironment.GetGame().GetItemManager().GetItem(Reward.BaseId).Type.ToString()); Response.AppendUInt(Reward.DisplayId); Helper.SendMessage(Response); BoxOwner.SendMessage(Response); PlusEnvironment.GetGame().GetCatalog().DeliverItems(BoxOwner, PlusEnvironment.GetGame().GetItemManager().GetItem(Reward.BaseId), 1, "",0,0); PlusEnvironment.GetGame().GetCatalog().DeliverItems(Helper, PlusEnvironment.GetGame().GetItemManager().GetItem(Reward.BaseId), 1, "",0,0); BoxOwner.GetHabbo().GetInventoryComponent().UpdateItems(true); Helper.GetHabbo().GetInventoryComponent().UpdateItems(true); PlusEnvironment.GetGame().GetAchievementManager().ProgressUserAchievement(BoxOwner, "ACH_MysteryBox", 1); Helper.GetHabbo().MysteryKeyColour = 0; Helper.SendMessage(Helper.GetHabbo().SerializeColours(Response)); BoxOwner.SendMessage(BoxOwner.GetHabbo().SerializeColours(Response)); } } }
public void Parse(GameClient Session, ClientPacket Packet) { Session.SendMessage(new UserObjectComposer(Session.GetHabbo())); Session.SendMessage(new UserPerksComposer(Session.GetHabbo())); }
public void Parse(GameClient Session, ClientPacket Packet) { Session.SendMessage(new GiftWrappingConfigurationComposer()); }
public void Parse(GameClient Session, ClientPacket Packet) { int UsersOnline = PlusEnvironment.GetGame().GetClientManager().Count; Session.SendMessage(new ConcurrentUsersGoalProgressComposer(UsersOnline)); }
internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null || Item == null) return; if (!UserHasRights) return; String ExtraInfo = ""; List<RoomItem> items = new List<RoomItem>(); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().getQueryreactor()) { try { dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id "); dbClient.addParameter("id", (int)Item.Id); ExtraInfo = dbClient.getString(); } catch { } try { dbClient.setQuery("SELECT triggers_item FROM trigger_in_place WHERE original_trigger = @id"); dbClient.addParameter("id", (int)Item.Id); DataTable dTable = dbClient.getTable(); RoomItem targetItem; foreach (DataRow dRows in dTable.Rows) { targetItem = Item.GetRoom().GetRoomItemHandler().GetItem(Convert.ToUInt32(dRows[0])); if (targetItem == null || items.Contains(targetItem)) continue; items.Add(targetItem); } } catch { } } switch (Item.GetBaseItem().InteractionType) { #region Triggers case InteractionType.triggerwalkonfurni: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggergamestart: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(0); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggerroomenter: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(0); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(7); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggergameend: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(0); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggertimer: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(1); message.AppendInt32(1); message.AppendInt32(1); message.AppendInt32(3); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggerwalkofffurni: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggeronusersay: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(0); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggerscoreachieved: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(1); message.AppendInt32(100); message.AppendInt32(0); message.AppendInt32(10); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggerrepeater: { ServerMessage message = new ServerMessage(Outgoing.WiredTrigger); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(1); message.AppendInt32(10); message.AppendInt32(0); message.AppendInt32(6); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.triggerstatechanged: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } #endregion #region Effects case InteractionType.actionposreset: { //[1123]>[0] //[0][0][0][5] //[0][0][0][0] //[0][0]tÃàŠ //[0][0][0][0] //[0][0][0][0] //[0][0] //[0][0][0][3] //[0][0][0][0] //[0][0][0][0] ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(""); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(3); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.actiongivescore: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(2); message.AppendInt32(5); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(6); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.actionresettimer: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.actiontogglestate: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.actionshowmessage: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(0); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(7); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.actionteleportto: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionmoverotate: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(2); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(4); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } #endregion #region Add-ons case InteractionType.specialrandom: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } case InteractionType.specialunseen: { ServerMessage message = new ServerMessage(Outgoing.WiredEffect); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendString(ExtraInfo); message.AppendInt32(0); message.AppendInt32(8); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); Session.SendMessage(message); break; } #endregion #region Conditions case InteractionType.conditiontimelessthan: case InteractionType.conditiontimemorethan: { ServerMessage message = new ServerMessage(Outgoing.WiredCondition); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); //message.AppendBoolean(false); //message.AppendBoolean(false); //message.AppendInt32(7); //message.AppendBoolean(false); //message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditionfurnihasfurni: { ServerMessage message = new ServerMessage(Outgoing.WiredCondition); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendBoolean(false); message.AppendBoolean(true); Session.SendMessage(message); break; } case InteractionType.conditionfurnishaveusers: { ServerMessage message = new ServerMessage(Outgoing.WiredCondition); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendBoolean(false); message.AppendBoolean(true); Session.SendMessage(message); break; } case InteractionType.conditionstatepos: { ServerMessage message = new ServerMessage(Outgoing.WiredCondition); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditiontriggeronfurni: { ServerMessage message = new ServerMessage(Outgoing.WiredCondition); message.AppendBoolean(false); message.AppendInt32(5); message.AppendInt32(items.Count); foreach (RoomItem item in items) message.AppendUInt(item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendInt32(0); message.AppendInt32(0); message.AppendInt32(0); message.AppendBoolean(false); message.AppendBoolean(true); Session.SendMessage(message); break; } //Unknown: //2 radio + 5 selct #endregion } }
public void Parse(GameClient Session, ClientPacket Packet) { Session.SendMessage(new MarketplaceConfigurationComposer()); }
public List<Item> RemoveItems(GameClient Session) { List<Item> Items = new List<Item>(); foreach (Item Item in this.GetWallAndFloor.ToList()) { if (Item == null || Item.UserID != Session.GetHabbo().Id) continue; if (Item.IsFloorItem) { Item I = null; this._floorItems.TryRemove(Item.Id, out I); Session.GetHabbo().GetInventoryComponent()._floorItems.TryAdd(Item.Id, I); this._room.SendMessage(new ObjectRemoveComposer(Item, Item.UserID)); } else if (Item.IsWallItem) { Item I = null; this._wallItems.TryRemove(Item.Id, out I); Session.GetHabbo().GetInventoryComponent()._wallItems.TryAdd(Item.Id, I); this._room.SendMessage(new ItemRemoveComposer(Item, Item.UserID)); } this._room.GetGameMap().GenerateMaps(); Session.SendMessage(new FurniListAddComposer(Item)); } return Items; }
public void Parse(GameClient Session, ClientPacket Packet) { if (PlusEnvironment.GetDBConfig().DBData["catalogue_enabled"] != "1") { Session.SendNotification("The hotel managers have disabled the catalogue"); return; } int PageId = Packet.PopInt(); int ItemId = Packet.PopInt(); string ExtraData = Packet.PopString(); int Amount = Packet.PopInt(); 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 (Amount < 1 || Amount > 100) 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; if (Session.GetHabbo().Credits < TotalCreditsCost || Session.GetHabbo().Duckets < TotalPixelCost || Session.GetHabbo().Diamonds < TotalDiamondCost) return; int LimitedEditionSells = 0; int LimitedEditionStack = 0; #region Create the extradata switch (Item.Data.InteractionType) { case InteractionType.NONE: ExtraData = ""; break; case InteractionType.GUILD_ITEM: case InteractionType.GUILD_GATE: 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 = 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; PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1); } catch (Exception e) { Logging.LogException(e.ToString()); 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, PlusEnvironment.CultureInfo); } catch (Exception e) { Logging.HandleException(e, "Catalog.HandlePurchase: " + ExtraData); } 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.BADGE_DISPLAY: if (!Session.GetHabbo().GetBadgeComponent().HasBadge(ExtraData)) { Session.SendMessage(new BroadcastMessageAlertComposer("Oops, it appears that you do not own this badge.")); 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("This item has sold out!\n\n" + "Please note, you have not recieved another item (You have also not been charged for it!)"); Session.SendMessage(new CatalogUpdatedComposer()); Session.SendMessage(new PurchaseOKComposer()); return; } Item.LimitedEditionSells++; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.RunQuery("UPDATE `catalog_items` SET `limited_sells` = '" + Item.LimitedEditionSells + "' WHERE `id` = '" + Item.Id + "' LIMIT 1"); LimitedEditionSells = Item.LimitedEditionSells; LimitedEditionStack = 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)); } 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: if (AmountPurchase > 1) { List<Item> Items = ItemFactory.CreateMultipleItems(Item.Data, Session.GetHabbo(), ExtraData, AmountPurchase, Convert.ToInt32(ExtraData)); if (Items != null) { GeneratedGenericItems.AddRange(Items); } } else { NewItem = ItemFactory.CreateSingleItemNullable(Item.Data, Session.GetHabbo(), ExtraData, ExtraData, Convert.ToInt32(ExtraData)); if (NewItem != null) { GeneratedGenericItems.Add(NewItem); } } 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)); } 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("Oops! There was an error whilst purchasing this bot. It seems that there is no bot data for the bot!"); break; case "b": { Session.GetHabbo().GetBadgeComponent().GiveBadge(Item.Data.ItemName, true, Session); Session.SendMessage(new FurniListNotificationComposer(0, 4)); break; } case "p": { switch (Item.Data.InteractionType) { #region Pets #region Pet 0 case InteractionType.pet0: string[] PetData = ExtraData.Split('\n'); Pet GeneratedPet = PetUtility.CreatePet(Session.GetHabbo().Id, PetData[0], 0, PetData[1], PetData[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet); break; #endregion #region Pet 1 case InteractionType.pet1: string[] PetData1 = ExtraData.Split('\n'); Pet GeneratedPet1 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData1[0], 1, PetData1[1], PetData1[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet1); break; #endregion #region Pet 2 case InteractionType.pet2: string[] PetData5 = ExtraData.Split('\n'); Pet GeneratedPet5 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData5[0], 2, PetData5[1], PetData5[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet5); break; #endregion #region Pet 3 case InteractionType.pet3: string[] PetData2 = ExtraData.Split('\n'); Pet GeneratedPet2 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData2[0], 3, PetData2[1], PetData2[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet2); break; #endregion #region Pet 4 case InteractionType.pet4: string[] PetData3 = ExtraData.Split('\n'); Pet GeneratedPet3 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData3[0], 4, PetData3[1], PetData3[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet3); break; #endregion #region Pet 5 case InteractionType.pet5: string[] PetData7 = ExtraData.Split('\n'); Pet GeneratedPet7 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData7[0], 5, PetData7[1], PetData7[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet7); break; #endregion #region Pet 6 (wrong?) case InteractionType.pet6: string[] PetData4 = ExtraData.Split('\n'); Pet GeneratedPet4 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData4[0], 6, PetData4[1], PetData4[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet4); break; #endregion #region Pet 7 (wrong?) case InteractionType.pet7: string[] PetData6 = ExtraData.Split('\n'); Pet GeneratedPet6 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData6[0], 7, PetData6[1], PetData6[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet6); break; #endregion #region Pet 8 case InteractionType.pet8: string[] PetData8 = ExtraData.Split('\n'); Pet GeneratedPet8 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData8[0], 8, PetData8[1], PetData8[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet8); break; #endregion #region Pet 8 case InteractionType.pet9: string[] PetData9 = ExtraData.Split('\n'); Pet GeneratedPet9 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData9[0], 9, PetData9[1], PetData9[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet9); break; #endregion #region Pet 10 case InteractionType.pet10: string[] PetData10 = ExtraData.Split('\n'); Pet GeneratedPet10 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData10[0], 10, PetData10[1], PetData10[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet10); break; #endregion #region Pet 11 case InteractionType.pet11: string[] PetData11 = ExtraData.Split('\n'); Pet GeneratedPet11 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData11[0], 11, PetData11[1], PetData11[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet11); break; #endregion #region Pet 12 case InteractionType.pet12: string[] PetData12 = ExtraData.Split('\n'); Pet GeneratedPet12 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData12[0], 12, PetData12[1], PetData12[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet12); break; #endregion #region Pet 13 case InteractionType.pet13: //Caballo - Horse string[] PetData13 = ExtraData.Split('\n'); Pet GeneratedPet13 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData13[0], 13, PetData13[1], PetData13[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet13); break; #endregion #region Pet 14 case InteractionType.pet14: string[] PetData14 = ExtraData.Split('\n'); Pet GeneratedPet14 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData14[0], 14, PetData14[1], PetData14[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet14); break; #endregion #region Pet 15 case InteractionType.pet15: string[] PetData15 = ExtraData.Split('\n'); Pet GeneratedPet15 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData15[0], 15, PetData15[1], PetData15[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet15); break; #endregion #region Pet 16 case InteractionType.pet16: // Mascota Agregada string[] PetData16 = ExtraData.Split('\n'); Pet GeneratedPet16 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData16[0], 16, PetData16[1], PetData16[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet16); break; #endregion #region Pet 17 case InteractionType.pet17: // Mascota Agregada string[] PetData17 = ExtraData.Split('\n'); Pet GeneratedPet17 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData17[0], 17, PetData17[1], PetData17[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet17); break; #endregion #region Pet 18 case InteractionType.pet18: // Mascota Agregada string[] PetData18 = ExtraData.Split('\n'); Pet GeneratedPet18 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData18[0], 18, PetData18[1], PetData18[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet18); break; #endregion #region Pet 19 case InteractionType.pet19: // Mascota Agregada string[] PetData19 = ExtraData.Split('\n'); Pet GeneratedPet19 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData19[0], 19, PetData19[1], PetData19[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet19); break; #endregion #region Pet 20 case InteractionType.pet20: // Mascota Agregada string[] PetData20 = ExtraData.Split('\n'); Pet GeneratedPet20 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData20[0], 20, PetData20[1], PetData20[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet20); break; #endregion #region Pet 21 case InteractionType.pet21: // Mascota Agregada string[] PetData21 = ExtraData.Split('\n'); Pet GeneratedPet21 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData21[0], 21, PetData21[1], PetData21[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet21); break; #endregion #region Pet 22 case InteractionType.pet22: // Mascota Agregada string[] PetData22 = ExtraData.Split('\n'); Pet GeneratedPet22 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData22[0], 22, PetData22[1], PetData22[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet22); break; #endregion #region Pet 28 case InteractionType.pet28: // Mascota Agregada string[] PetData28 = ExtraData.Split('\n'); Pet GeneratedPet28 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData28[0], 28, PetData28[1], PetData28[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet28); break; #endregion #region Pet 29 case InteractionType.pet29: string[] PetData29 = ExtraData.Split('\n'); Pet GeneratedPet29 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData29[0], 29, PetData29[1], PetData29[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet29); break; #endregion #region Pet 30 case InteractionType.pet30: string[] PetData30 = ExtraData.Split('\n'); Pet GeneratedPet30 = PetUtility.CreatePet(Session.GetHabbo().Id, PetData30[0], 30, PetData30[1], PetData30[2]); Session.GetHabbo().GetInventoryComponent().TryAddPet(GeneratedPet30); break; #endregion #endregion } Session.SendMessage(new FurniListNotificationComposer(0, 3)); Session.SendMessage(new PetInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetPets())); 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)); } } break; } } Session.SendMessage(new PurchaseOKComposer(Item, Item.Data)); Session.SendMessage(new FurniListUpdateComposer()); }