internal Trade(UInt32 UserOneId, UInt32 UserTwoId, UInt32 RoomId) { this.oneId = UserOneId; this.twoId = UserTwoId; this.Users = new TradeUser[2]; this.Users[0] = new TradeUser(UserOneId, RoomId); this.Users[1] = new TradeUser(UserTwoId, RoomId); this.TradeStage = 1; this.RoomId = RoomId; foreach (TradeUser User in Users) { if (!User.GetRoomUser().Statusses.ContainsKey("trd")) { User.GetRoomUser().AddStatus("trd", ""); User.GetRoomUser().UpdateNeeded = true; } } ServerMessage Message = new ServerMessage(104); Message.AppendUInt(UserOneId); Message.AppendBoolean(true); Message.AppendUInt(UserTwoId); Message.AppendBoolean(true); SendMessageToUsers(Message); }
internal static ServerMessage Compose(int PlaylistCapacity, List<SongInstance> Playlist) { ServerMessage Message = new ServerMessage(334); Message.AppendInt32(PlaylistCapacity); Message.AppendInt32(Playlist.Count); foreach (SongInstance Song in Playlist) { Message.AppendUInt(Song.DiskItem.itemID); Message.AppendUInt(Song.SongData.Id); } return Message; }
internal static ServerMessage SerializeSearchResults(string Query) { DataTable Results = null; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == Pici.Storage.Database.DatabaseType.MySQL) dbClient.setQuery("SELECT id,title FROM help_topics WHERE title LIKE @query OR body LIKE @query LIMIT 25"); else dbClient.setQuery("SELECT TOP 25 id,title FROM help_topics WHERE title LIKE @query OR body LIKE @query"); dbClient.addParameter("query", Query + "%"); Results = dbClient.getTable(); } // HII[KBCan I pay to be unbanned? ServerMessage Search = new ServerMessage(521); if (Results == null) { Search.AppendBoolean(false); return Search; } Search.AppendInt32(Results.Rows.Count); foreach (DataRow Row in Results.Rows) { Search.AppendUInt(Convert.ToUInt32(Row["id"])); Search.AppendStringWithBreak((string)Row["title"]); } return Search; }
internal static ServerMessage SerializeTopic(HelpTopic Topic) { ServerMessage Top = new ServerMessage(520); Top.AppendUInt(Topic.TopicId); Top.AppendStringWithBreak(Topic.Body); return Top; }
internal void DeliverInstantMessage(string message, uint convoID) { ServerMessage InstantMessage = new ServerMessage(134); InstantMessage.AppendUInt(convoID); InstantMessage.AppendString(message); GetClient().SendMessage(InstantMessage); }
internal static ServerMessage Compose(GameClient Session, List<Achievement> Achievements) { ServerMessage Message = new ServerMessage(436); //436 Message.AppendInt32(Achievements.Count); foreach (Achievement Achievement in Achievements) { UserAchievement UserData = Session.GetHabbo().GetAchievementData(Achievement.GroupName); int TargetLevel = (UserData != null ? UserData.Level + 1 : 1); int TotalLevels = Achievement.Levels.Count; if (TargetLevel > TotalLevels) { TargetLevel = TotalLevels; } AchievementLevel TargetLevelData = Achievement.Levels[TargetLevel]; Message.AppendUInt(Achievement.Id); // Unknown (ID?) Message.AppendInt32(TargetLevel); // Target level Message.AppendStringWithBreak(Achievement.GroupName + TargetLevel); // Target name/desc/badge Message.AppendInt32(TargetLevelData.Requirement); // Progress req/target Message.AppendInt32(TargetLevelData.RewardPixels); // Pixel reward Message.AppendInt32(TargetLevelData.RewardPoints); // Unknown(??) Message.AppendInt32(UserData != null ? UserData.Progress : 0); // Current progress Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false); // Set 100% completed(??) Message.AppendStringWithBreak(Achievement.Category); // Category Message.AppendInt32(TotalLevels); // Total amount of levels } return Message; }
internal void Serialize(ref ServerMessage packet) { packet.AppendInt32(timeSpoken.Hour); packet.AppendInt32(timeSpoken.Minute); packet.AppendUInt(userID); packet.AppendStringWithBreak(username); packet.AppendStringWithBreak(message); }
internal void SerializeFloor(ServerMessage Message, Boolean Inventory) { Message.AppendUInt(Id); Message.AppendStringWithBreak(mBaseItem.Type.ToString().ToUpper()); Message.AppendUInt(Id); Message.AppendInt32(GetBaseItem().SpriteId); Message.AppendInt32(1); Message.AppendStringWithBreak(ExtraData); Message.AppendBoolean(GetBaseItem().AllowRecycle); Message.AppendBoolean(GetBaseItem().AllowTrade); Message.AppendBoolean(GetBaseItem().AllowInventoryStack); Message.AppendBoolean(Marketplace.CanSellItem(this)); Message.AppendInt32(-1); Message.AppendStringWithBreak(""); Message.AppendInt32(0); }
internal void Serialize(ServerMessage Request) { // BDhqu@UMeth0d1322033860 Request.AppendUInt(FromUser); Request.AppendStringWithBreak(mUsername); Request.AppendStringWithBreak(FromUser.ToString()); }
public static ServerMessage ComposePlayingComposer(uint SongId, int PlaylistItemNumber, int SyncTimestampMs) { ServerMessage Message = new ServerMessage(327); if (SongId == 0) { Message.AppendInt32(-1); Message.AppendInt32(-1); Message.AppendInt32(-1); Message.AppendInt32(-1); Message.AppendInt32(0); } else { Message.AppendUInt(SongId); Message.AppendInt32(PlaylistItemNumber); Message.AppendUInt(SongId); Message.AppendInt32(0); Message.AppendInt32(SyncTimestampMs); } return Message; }
internal void MoveBall(RoomItem item, GameClient mover, int newX, int newY) { if (item == null || mover == null) return; if (!room.GetGameMap().itemCanBePlacedHere(newX, newY)) return; Point oldRoomCoord = item.Coordinate; bool itemIsOnGameItem = GameItemOverlaps(item); Double NewZ = room.GetGameMap().Model.SqFloorHeight[newX, newY]; ServerMessage Message = new ServerMessage(95); Message.AppendUInt(item.Id); Message.AppendInt32(3508); Message.AppendInt32(item.Coordinate.X); Message.AppendInt32(item.Coordinate.Y); Message.AppendInt32(newX); Message.AppendInt32(newY); Message.AppendInt32(4); Message.AppendStringWithBreak(NewZ.ToString()); Message.AppendStringWithBreak("H11"); Message.AppendInt32(-1); Message.AppendInt32(0); room.SendMessage(Message); ServerMessage mMessage = new ServerMessage(); mMessage.Init(230); // Cf mMessage.AppendInt32(item.Coordinate.X); mMessage.AppendInt32(item.Coordinate.Y); mMessage.AppendInt32(newX); mMessage.AppendInt32(newY); mMessage.AppendInt32(1); mMessage.AppendUInt(item.Id); mMessage.AppendStringWithBreak(item.GetZ.ToString().Replace(',', '.')); mMessage.AppendStringWithBreak(NewZ.ToString().Replace(',', '.')); mMessage.AppendInt32(0); room.SendMessage(mMessage); if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY) return; room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false); if (!itemIsOnGameItem) HandleFootballGameItems(new Point(newX, newY), room.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id)); }
public static ServerMessage Compose(List<SongData> Songs) { ServerMessage Message = new ServerMessage(300); Message.AppendInt32(Songs.Count); foreach (SongData Song in Songs) { Message.AppendUInt(Song.Id); Message.AppendStringWithBreak(Song.Name); Message.AppendStringWithBreak(Song.Data); Message.AppendInt32(Song.LengthMiliseconds); Message.AppendStringWithBreak(Song.Artist); } return Message; }
internal static ServerMessage Compose(Achievement Achievement, int Level, int PointReward, int PixelReward) { ServerMessage Message = new ServerMessage(437); Message.AppendUInt(Achievement.Id); // Achievement ID Message.AppendInt32(Level); // Achieved level Message.AppendInt32(144); // Unknown. Random useless number. Message.AppendStringWithBreak(Achievement.GroupName + Level); // Achieved name Message.AppendInt32(PointReward); // Point reward Message.AppendInt32(PixelReward); // Pixel reward Message.AppendInt32(0); // Unknown. Message.AppendInt32(10); // Unknown. Message.AppendInt32(21); // Unknown. (Extra reward?) Message.AppendStringWithBreak(Level > 1 ? Achievement.GroupName + (Level - 1) : string.Empty); Message.AppendStringWithBreak(Achievement.Category); return Message; }
internal static ServerMessage Compose(Achievement Achievement, int TargetLevel, AchievementLevel TargetLevelData, int TotalLevels, UserAchievement UserData) { ServerMessage Message = new ServerMessage(913); Message.AppendUInt(Achievement.Id); // Unknown (ID?) Message.AppendInt32(TargetLevel); // Target level Message.AppendStringWithBreak(Achievement.GroupName + TargetLevel); // Target name/desc/badge Message.AppendInt32(TargetLevelData.Requirement); // Progress req/target Message.AppendInt32(TargetLevelData.RewardPixels); // Pixel reward Message.AppendInt32(TargetLevelData.RewardPoints); // Unknown(??) Message.AppendInt32(UserData != null ? UserData.Progress : 0); // Current progress Message.AppendBoolean(UserData != null ? (UserData.Level >= TotalLevels) : false); // Set 100% completed(??) Message.AppendStringWithBreak(Achievement.Category); // Category Message.AppendInt32(TotalLevels); // Total amount of levels return Message; }
internal void Searialize(ServerMessage reply) { reply.AppendUInt(userID); reply.AppendStringWithBreak(username); reply.AppendStringWithBreak(motto); bool Online = (PiciEnvironment.GetGame().GetClientManager().GetClient(userID) != null); reply.AppendBoolean(Online); reply.AppendBoolean(false); reply.AppendStringWithBreak(string.Empty); reply.AppendBoolean(false); reply.AppendStringWithBreak(look); reply.AppendStringWithBreak(last_online); reply.AppendStringWithBreak(string.Empty); }
internal void Serialize(ServerMessage Message) { try { Message.AppendUInt(Id); Message.AppendStringWithBreak(Name); Message.AppendInt32(CreditsCost); if (CrystalCost > 0) { Message.AppendInt32(CrystalCost); Message.AppendInt32(4); // Hearts } else { Message.AppendInt32(PixelsCost); Message.AppendInt32(0); // Page Type; 0 = nothing, 1 = Snowflakes, 2 = hearts, 3 = ? } Message.AppendInt32(1); Message.AppendStringWithBreak(GetBaseItem().Type.ToString()); Message.AppendInt32(GetBaseItem().SpriteId); if (Name.Contains("wallpaper_single") || Name.Contains("floor_single") || Name.Contains("landscape_single")) { string[] Analyze = Name.Split('_'); Message.AppendStringWithBreak(Analyze[2]); } else if (this.songID > 0 && GetBaseItem().InteractionType == InteractionType.musicdisc) { Message.AppendStringWithBreak(songID.ToString()); } else { Message.AppendStringWithBreak(string.Empty); } Message.AppendInt32(Amount); Message.AppendInt32(-1); Message.AppendInt32(0); } catch { Console.WriteLine("Unable to load furniture item " + Id + ": " + Name); } }
internal void Serialize(ServerMessage reply) { /* Message.AppendUInt(UserId); Message.AppendStringWithBreak(Username); Message.AppendBoolean(true); Message.AppendBoolean(IsOnline); Message.AppendBoolean(InRoom); Message.AppendStringWithBreak(Look); Message.AppendBoolean(false); Message.AppendStringWithBreak(Motto); Message.AppendStringWithBreak(LastOnline); Message.AppendStringWithBreak(RealName); Message.AppendStringWithBreak(""); */ reply.AppendUInt(UserId); reply.AppendStringWithBreak(mUsername); reply.AppendBoolean(true); bool Online = IsOnline; reply.AppendBoolean(Online); if (Online) reply.AppendBoolean(InRoom); else reply.AppendBoolean(false); reply.AppendStringWithBreak(mLook); reply.AppendBoolean(false); reply.AppendStringWithBreak(mMotto); reply.AppendStringWithBreak(mLastOnline); reply.AppendStringWithBreak(string.Empty); reply.AppendStringWithBreak(string.Empty); }
internal static ServerMessage SerializeSongInventory(Hashtable songs) { ServerMessage message = new ServerMessage(333); message.AppendInt32(songs.Count); foreach (UserItem userItem in songs.Values) { uint songID = (uint)TextHandling.Parse(userItem.ExtraData); message.AppendUInt(userItem.Id); message.AppendUInt(songID); } return message; }
internal ServerMessage UpdateUserOnRoller(RoomUser pUser, Point pNextCoord, uint pRollerID, Double NextZ) { ServerMessage mMessage = new ServerMessage(); mMessage.Init(230); // Cf mMessage.AppendInt32(pUser.X); mMessage.AppendInt32(pUser.Y); mMessage.AppendInt32(pNextCoord.X); mMessage.AppendInt32(pNextCoord.Y); mMessage.AppendInt32(0); mMessage.AppendUInt(pRollerID); mMessage.AppendString("J"); mMessage.AppendInt32(pUser.VirtualId); mMessage.AppendStringWithBreak(TextHandling.GetString(pUser.Z)); mMessage.AppendStringWithBreak(TextHandling.GetString(NextZ)); room.GetGameMap().UpdateUserMovement(new Point(pUser.X, pUser.Y), new Point(pNextCoord.X, pNextCoord.Y), pUser); room.GetGameMap().GameMap[pUser.X, pUser.Y] = 1; pUser.X = pNextCoord.X; pUser.Y = pNextCoord.Y; pUser.Z = NextZ; room.GetGameMap().GameMap[pUser.X, pUser.Y] = 0; return mMessage; }
/* internal bool tryLogin(string AuthTicket) { try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return false; } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return false; } PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); if (userData.user.Username == null) { SendBanMessage("You have no username."); return false; } string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return false; } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); userData.user.SerializeQuests(ref response); //List<string> Rights = PiciEnvironment.GetGame().GetRoleManager().GetRightsForHabbo(userData.user); GetMessageHandler().GetResponse().Init(2); if (userData.user.HasRight("acc_anyroomowner")) GetMessageHandler().GetResponse().Append(7); else if (userData.user.HasRight("acc_anyroomrights")) GetMessageHandler().GetResponse().Append(5); else if (userData.user.HasRight("acc_supporttool")) GetMessageHandler().GetResponse().Append(4); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) GetMessageHandler().GetResponse().AppendInt32(2); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) GetMessageHandler().GetResponse().AppendInt32(1); else GetMessageHandler().GetResponse().AppendInt32(0); GetMessageHandler().SendResponse(); /*foreach (string Right in Rights) { appendingResponse.AppendStringWithBreak(Right); } if (userData.user.HasRight("acc_supporttool")) { SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool()); PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this); } SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize()); //GetResponse().Init(290); GetMessageHandler().GetResponse().Init(290); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().GetResponse().AppendBoolean(false); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(3); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(517); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().SendResponse(); //if (PixelManager.NeedsUpdate(this)) // PixelManager.GivePixels(this); if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0) { PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin); } if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0) { userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin; userData.user.UpdateCreditsBalance(); } if (userData.user.HomeRoom > 0) { GetMessageHandler().GetResponse().Init(455); GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom); GetMessageHandler().SendResponse(); } GetMessageHandler().GetResponse().Init(458); GetMessageHandler().GetResponse().AppendInt32(30); GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { GetMessageHandler().GetResponse().AppendUInt(Id); } GetMessageHandler().SendResponse(); if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true); } else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1"); } if (!userData.user.GetBadgeComponent().HasBadge("Z63")) userData.user.GetBadgeComponent().GiveBadge("Z63", true); ServerMessage alert = new ServerMessage(810); alert.AppendUInt(1); alert.AppendStringWithBreak("Welcome bro!"); SendMessage(alert); return true; } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return false; } */ internal void SendNotifWithScroll(string message) { ServerMessage notification = new ServerMessage(810); notification.AppendUInt(1); notification.AppendStringWithBreak(message); SendMessage(notification); }
internal bool RemovePet(uint PetId) { isUpdated = false; ServerMessage RemoveMessage = new ServerMessage(604); RemoveMessage.AppendUInt(PetId); GetClient().SendMessage(RemoveMessage); InventoryPets.Remove(PetId); return true; }
internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session != null) return; RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); Point ItemCoordx1 = new Point(Item.Coordinate.X + 1, Item.Coordinate.Y); Point ItemCoordx2 = new Point(Item.Coordinate.X - 1, Item.Coordinate.Y); Point ItemCoordy1 = new Point(Item.Coordinate.X, Item.Coordinate.Y + 1); Point ItemCoordy2 = new Point(Item.Coordinate.X, Item.Coordinate.Y - 1); if (User == null) { return; } if (User.Coordinate != ItemCoordx1 && User.Coordinate != ItemCoordx2 && User.Coordinate != ItemCoordy1 && User.Coordinate != ItemCoordy2) { if (User.CanWalk) { User.MoveTo(Item.SquareInFront); return; } } else { int NewX = Item.Coordinate.X; int NewY = Item.Coordinate.Y; if (User.Coordinate == ItemCoordx1) { NewX = Item.Coordinate.X - 1; NewY = Item.Coordinate.Y; } else if (User.Coordinate == ItemCoordx2) { NewX = Item.Coordinate.X + 1; NewY = Item.Coordinate.Y; } else if (User.Coordinate == ItemCoordy1) { NewX = Item.Coordinate.X; NewY = Item.Coordinate.Y - 1; } else if (User.Coordinate == ItemCoordy2) { NewX = Item.Coordinate.X; NewY = Item.Coordinate.Y + 1; } if (Item.GetRoom().GetGameMap().ValidTile(NewX, NewY)) { Double NewZ = Item.GetRoom().GetGameMap().SqAbsoluteHeight(NewX, NewY); ServerMessage Message = new ServerMessage(230); Message.AppendInt32(Item.Coordinate.X); Message.AppendInt32(Item.Coordinate.Y); Message.AppendInt32(NewX); Message.AppendInt32(NewY); Message.AppendInt32(1); Message.AppendUInt(Item.Id); Message.AppendByte(2); Message.AppendStringWithBreak(TextHandling.GetString(NewZ)); Message.AppendString("M"); Item.GetRoom().SendMessage(Message); Item.GetRoom().GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, NewX, NewY, Item.Rot, false, false, true); } } }
internal static void SerializeQuest(ServerMessage Message, GameClient Session, Quest Quest, string Category) { int AmountInCat = PiciEnvironment.GetGame().GetQuestManager().GetAmountOfQuestsInCategory(Category); int Number = Quest == null ? AmountInCat : Quest.Number - 1; int UserProgress = Quest == null ? 0 : Session.GetHabbo().GetQuestProgress(Quest.Id); if (Quest != null && Quest.IsCompleted(UserProgress)) { Number++; } Message.AppendStringWithBreak(Category); Message.AppendInt32(Number); // Quest progress in this cat Message.AppendInt32(AmountInCat); // Total quests in this cat Message.AppendInt32((int)QuestRewardType.Pixels); // Reward type (1 = Snowflakes, 2 = Love hearts, 3 = Pixels, 4 = Seashells, everything else is pixels Message.AppendUInt(Quest == null ? 0 : Quest.Id); // Quest id Message.AppendBoolean(Quest == null ? false : Session.GetHabbo().CurrentQuestId == Quest.Id); // Quest started Message.AppendStringWithBreak(Quest == null ? string.Empty : Quest.ActionName); Message.AppendStringWithBreak(Quest == null ? string.Empty : Quest.DataBit); Message.AppendInt32(Quest == null ? 0 : Quest.Reward); Message.AppendStringWithBreak(Quest == null ? string.Empty : Quest.Name); Message.AppendInt32(UserProgress); // Current progress Message.AppendUInt(Quest == null ? 0 : Quest.GoalData); // Target progress Message.AppendInt32(0); // "Next quest available countdown" in seconds }
private ServerMessage UpdateItemOnRoller(RoomItem pItem, Point NextCoord, uint pRolledID, Double NextZ) { ServerMessage mMessage = new ServerMessage(); mMessage.Init(230); // Cf mMessage.AppendInt32(pItem.GetX); mMessage.AppendInt32(pItem.GetY); mMessage.AppendInt32(NextCoord.X); mMessage.AppendInt32(NextCoord.Y); mMessage.AppendInt32(1); mMessage.AppendUInt(pItem.Id); mMessage.AppendStringWithBreak(TextHandling.GetString(pItem.GetZ)); mMessage.AppendStringWithBreak(TextHandling.GetString(NextZ)); mMessage.AppendUInt(pRolledID); //room.SendMessage(mMessage); //SetFloorItem(null, pItem, NextCoord.X, NextCoord.Y, pItem.Rot, false, true); SetFloorItem(pItem, NextCoord.X, NextCoord.Y, NextZ); return mMessage; }
internal void HandleRowchase(GameClient Session, int PageId, uint ItemId, string ExtraData, Boolean IsGift, string GiftUser, string GiftMessage) { CatalogPage Page; if (!Pages.TryGetValue(PageId, out Page)) return; if (Page == null || Page.ComingSoon || !Page.Enabled || !Page.Visible || Session == null || Session.GetHabbo() == null) { return; } if (Page.ClubOnly && !Session.GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) { return; } if (Page.MinRank > Session.GetHabbo().Rank) { return; } CatalogItem Item = Page.GetItem(ItemId); if (Item == null) { return; } uint GiftUserId = 0; if (IsGift) { if (!Item.GetBaseItem().AllowGift) { return; } DataRow dRow; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT id FROM users WHERE username = @gift_user"); dbClient.addParameter("gift_user", GiftUser); dRow = dbClient.getRow(); } if (dRow == null) { Session.GetMessageHandler().GetResponse().Init(76); Session.GetMessageHandler().GetResponse().AppendBoolean(true); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(GiftUser); Session.GetMessageHandler().SendResponse(); return; } GiftUserId = Convert.ToUInt32(dRow[0]); if (GiftUserId == 0) { Session.GetMessageHandler().GetResponse().Init(76); Session.GetMessageHandler().GetResponse().AppendBoolean(true); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(GiftUser); Session.GetMessageHandler().SendResponse(); return; } } Boolean CreditsError = false; Boolean PixelError = false; if (Session.GetHabbo().Credits < Item.CreditsCost) { CreditsError = true; } if (Session.GetHabbo().ActivityPoints < Item.PixelsCost) { PixelError = true; } if (CreditsError || PixelError) { Session.GetMessageHandler().GetResponse().Init(68); Session.GetMessageHandler().GetResponse().AppendBoolean(CreditsError); Session.GetMessageHandler().GetResponse().AppendBoolean(PixelError); Session.GetMessageHandler().SendResponse(); return; } if (IsGift && Item.GetBaseItem().Type == 'e') { Session.SendNotif(LanguageLocale.GetValue("catalog.gift.send.error")); return; } if (Item.CrystalCost > 0) { int userCrystals = 0; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT crystals FROM users WHERE id = " + Session.GetHabbo().Id); userCrystals = dbClient.getInteger(); } if (Item.CrystalCost > userCrystals) { Session.SendNotif(LanguageLocale.GetValue("catalog.crystalerror") + Item.CrystalCost); return; } userCrystals = userCrystals - Item.CrystalCost; Session.GetMessageHandler().GetResponse().Init(MessageComposerIds.ActivityPointsMessageComposer); Session.GetMessageHandler().GetResponse().AppendInt32(2); Session.GetMessageHandler().GetResponse().AppendInt32(4); Session.GetMessageHandler().GetResponse().AppendInt32(userCrystals); Session.GetMessageHandler().SendResponse(); using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE users SET crystals = " + userCrystals + " WHERE id = " + Session.GetHabbo().Id); } Session.SendNotif(LanguageLocale.GetValue("catalog.crystalsbought") + userCrystals); } if (Item.Name.Contains("HABBO_CLUB")) { #region Purchase Club! // PAYmQHABBO_CLUB_BASIC_1_MONTHSCHHISGZvGSBSE[mQHABBO_CLUB_VIP_1_MONTHQFHIISGZvGSBSEXnQHABBO_CLUB_VIP_3_MONTHSPOHIKQW[vGIPFZmQHABBO_CLUB_BASIC_3_MONTHSQKHHKQW[vGIPF int TypeOfClub = 0; Subscription Sub; if (Session.GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) Sub = Session.GetHabbo().GetSubscriptionManager().GetSubscription("habbo_vip"); else if (Session.GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) Sub = Session.GetHabbo().GetSubscriptionManager().GetSubscription("habbo_club"); else Sub = null; if (Item.Name == "HABBO_CLUB_BASIC_1_MONTH") { TypeOfClub = 1; } else if (Item.Name.Contains("HABBO_CLUB_BASIC_3")) { TypeOfClub = 2; } else if (Item.Name == "HABBO_CLUB_VIP_1_MONTH") { TypeOfClub = 3; } else if (Item.Name.Contains("HABBO_CLUB_VIP_3")) { TypeOfClub = 4; } else if (Item.Name == "HABBO_CLUB_UPGRADE_1") { TypeOfClub = 5; } else if (Item.Name == "HABBO_CLUB_UPGRADE_3") { TypeOfClub = 6; } if (TypeOfClub == 1) { Session.GetHabbo().GetSubscriptionManager().AddOrExtendSubscription("habbo_club", (60 * 60 * 24 * 31)); ServerMessage FuseRight = new ServerMessage(2); FuseRight.AppendInt32(1); Session.SendMessage(FuseRight); Session.GetMessageHandler().GetSubscriptionData(); } else if (TypeOfClub == 2) { Session.GetHabbo().GetSubscriptionManager().AddOrExtendSubscription("habbo_club", (60 * 60 * 24 * 31 * 3)); ServerMessage FuseRight = new ServerMessage(2); FuseRight.AppendInt32(1); Session.SendMessage(FuseRight); Session.GetMessageHandler().GetSubscriptionData(); } else if (TypeOfClub == 3) { Session.GetHabbo().GetSubscriptionManager().AddOrExtendSubscription("habbo_vip", (60 * 60 * 24 * 31)); ServerMessage FuseRight = new ServerMessage(2); FuseRight.AppendInt32(2); Session.SendMessage(FuseRight); Session.GetMessageHandler().GetSubscriptionData(); } else if (TypeOfClub == 4) { Session.GetHabbo().GetSubscriptionManager().AddOrExtendSubscription("habbo_vip", (60 * 60 * 24 * 31 * 3)); ServerMessage FuseRight = new ServerMessage(2); FuseRight.AppendInt32(2); Session.SendMessage(FuseRight); Session.GetMessageHandler().GetSubscriptionData(); } else if (TypeOfClub == 5) { Session.GetHabbo().GetSubscriptionManager().AddOrExtendSubscription("habbo_vip", (60 * 60 * 24 * 31)); ServerMessage FuseRight = new ServerMessage(2); FuseRight.AppendInt32(2); Session.SendMessage(FuseRight); Session.GetMessageHandler().GetSubscriptionData(); } else if (TypeOfClub == 6) { Session.GetHabbo().GetSubscriptionManager().AddOrExtendSubscription("habbo_vip", (60 * 60 * 24 * 31 * 3)); ServerMessage FuseRight = new ServerMessage(2); FuseRight.AppendInt32(2); Session.SendMessage(FuseRight); Session.GetMessageHandler().GetSubscriptionData(); } bool CreditsFail = false; bool PixelsFail = false; if (Session.GetHabbo().Credits < Item.CreditsCost) { CreditsFail = true; } if (CreditsFail || PixelsFail) { ServerMessage Failed = new ServerMessage(68); Failed.AppendBoolean(CreditsFail); Failed.AppendBoolean(PixelsFail); Session.SendMessage(Failed); return; } if (Item.CreditsCost > 0) { Session.GetHabbo().Credits -= Item.CreditsCost; Session.GetHabbo().UpdateCreditsBalance(); } ServerMessage PurchaseClub = new ServerMessage(67); //AC[mQHABBO_CLUB_VIP_1_MONTH{2}QFHHH{1} PurchaseClub.AppendUInt(Item.Id); PurchaseClub.AppendStringWithBreak(Item.Name); PurchaseClub.AppendInt32(Item.CreditsCost); PurchaseClub.AppendBoolean(true); PurchaseClub.AppendBoolean(false); PurchaseClub.AppendBoolean(false); Session.SendMessage(PurchaseClub); #endregion return; } if (Item.OudeCredits > 0) { int oudeCredits = 0; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("SELECT belcredits FROM users WHERE id = " + Session.GetHabbo().Id); oudeCredits = dbClient.getInteger(); } if (Item.OudeCredits > oudeCredits) { Session.SendNotif(LanguageLocale.GetValue("catalog.oudebelcreditserror") + Item.OudeCredits); return; } oudeCredits = oudeCredits - Item.OudeCredits; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE users SET belcredits = " + oudeCredits + " WHERE id = " + Session.GetHabbo().Id); } Session.SendNotif(LanguageLocale.GetValue("catalog.oudebelcreditsok") + oudeCredits); } //Console.WriteLine(Item.GetBaseItem().ItemId); //Console.WriteLine(Item.GetBaseItem().InteractionType.ToLower()); // Extra Data is _NOT_ filtered at this point and MUST BE VERIFIED BELOW: switch (Item.GetBaseItem().InteractionType) { case InteractionType.none: ExtraData = ""; break; case InteractionType.musicdisc: ExtraData = Item.songID.ToString(); 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.pet14: case InteractionType.pet15: try { //uint count = 0; //using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) //{ // dbClient.setQuery("SELECT COUNT(*) FROM user_pets WHERE user_id = " + Session.GetHabbo().Id); // count = uint.Parse(dbClient.getString()); //} //if (count > 5) //{ // Session.SendNotif(LanguageLocale.GetValue("catalog.pets.maxpets")); // return; //} 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 (!CheckPetName(PetName)) return; if (Race.Length != 1) return; if (Color.Length != 6) return; } catch (Exception e) { //Logging.WriteLine(e.ToString()); Logging.HandleException(e, "Catalog.HandleRowchase"); return; } break; #endregion case InteractionType.roomeffect: Double Number = 0; try { if (string.IsNullOrEmpty(ExtraData)) Number = 0; else Number = Double.Parse(ExtraData, PiciEnvironment.cultureInfo); } catch (Exception e) { Logging.HandleException(e, "Catalog.HandleRowchase: " + ExtraData); } ExtraData = Number.ToString().Replace(',', '.'); break; // maintain extra data // todo: validate case InteractionType.postit: ExtraData = "FFFF33"; break; case InteractionType.dimmer: 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) + PiciEnvironment.FilterInjectionChars(ExtraData, true); break; default: ExtraData = ""; break; } if (Item.CreditsCost > 0) { Session.GetHabbo().Credits -= Item.CreditsCost; Session.GetHabbo().UpdateCreditsBalance(); } if (Item.PixelsCost > 0) { Session.GetHabbo().ActivityPoints -= Item.PixelsCost; Session.GetHabbo().UpdateActivityPointsBalance(true); } Session.GetMessageHandler().GetResponse().Init(101); Session.GetMessageHandler().SendResponse(); Session.GetMessageHandler().GetResponse().Init(67); Session.GetMessageHandler().GetResponse().AppendUInt(Item.GetBaseItem().ItemId); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Item.GetBaseItem().Name); Session.GetMessageHandler().GetResponse().AppendInt32(Item.CreditsCost); Session.GetMessageHandler().GetResponse().AppendInt32(Item.PixelsCost); Session.GetMessageHandler().GetResponse().AppendInt32(0); Session.GetMessageHandler().GetResponse().AppendInt32(1); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(Item.GetBaseItem().Type.ToString().ToLower()); Session.GetMessageHandler().GetResponse().AppendInt32(Item.GetBaseItem().SpriteId); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(""); Session.GetMessageHandler().GetResponse().AppendInt32(1); Session.GetMessageHandler().GetResponse().AppendInt32(0); Session.GetMessageHandler().SendResponse(); if (IsGift) { uint itemID; //uint GenId = GenerateItemId(); Item Present = GeneratePresent(); using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == DatabaseType.MSSQL) dbClient.setQuery("INSERT INTO items (base_id) OUTPUT INSERTED.* VALUES (" + Present.ItemId + ")"); else dbClient.setQuery("INSERT INTO items (base_id) VALUES (" + Present.ItemId + ")"); itemID = (uint)dbClient.insertQuery(); dbClient.runFastQuery("INSERT INTO items_users VALUES (" + itemID + "," + GiftUserId + ")"); if (!string.IsNullOrEmpty(GiftMessage)) { dbClient.setQuery("INSERT INTO items_extradata VALUES (" + itemID + ",@data)"); dbClient.addParameter("data", GiftMessage); dbClient.runQuery(); } dbClient.setQuery("INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES (" + itemID + "," + Item.GetBaseItem().ItemId + "," + Item.Amount + ",@extra_data)"); dbClient.addParameter("gift_message", "!" + GiftMessage); dbClient.addParameter("extra_data", ExtraData); dbClient.runQuery(); } GameClient Receiver = PiciEnvironment.GetGame().GetClientManager().GetClientByUserID(GiftUserId); if (Receiver != null) { Receiver.SendNotif(LanguageLocale.GetValue("catalog.gift.received") + Session.GetHabbo().Username); Receiver.GetHabbo().GetInventoryComponent().AddNewItem(itemID, Present.ItemId, ExtraData, false, false, 0); Receiver.GetHabbo().GetInventoryComponent().SendFloorInventoryUpdate(); InventoryComponent targetInventory = Receiver.GetHabbo().GetInventoryComponent(); if (targetInventory != null) targetInventory.RunDBUpdate(); } Session.SendNotif(LanguageLocale.GetValue("catalog.gift.sent")); } else { DeliverItems(Session, Item.GetBaseItem(), Item.Amount, ExtraData, Item.songID); } }
internal void SendInstantInvite() { int count = Request.PopWiredInt32(); List<UInt32> UserIds = new List<uint>(); for (int i = 0; i < count; i++) { UserIds.Add(Request.PopWiredUInt()); } string message = PiciEnvironment.FilterInjectionChars(Request.PopFixedString(), true); ServerMessage Message = new ServerMessage(135); Message.AppendUInt(Session.GetHabbo().Id); Message.AppendStringWithBreak(message); foreach (UInt32 Id in UserIds) { if (!Session.GetHabbo().GetMessenger().FriendshipExists(Id)) continue; GameClient Client = PiciEnvironment.GetGame().GetClientManager().GetClientByUserID(Id); if (Client == null) { return; } Client.SendMessage(Message); } }
internal void Serialize(ServerMessage Message) { if (!Category) { Message.AppendInt32(Id); Message.AppendStringWithBreak((Type == 1) ? Caption : RoomData.Name); Message.AppendStringWithBreak(RoomData.Description); Message.AppendInt32(Type); Message.AppendStringWithBreak(Caption); Message.AppendStringWithBreak((ImageType == PublicImageType.EXTERNAL) ? Image : string.Empty); Message.AppendInt32(ParentId); Message.AppendInt32(RoomData.UsersNow); Message.AppendInt32(3); Message.AppendStringWithBreak((ImageType == PublicImageType.INTERNAL) ? Image : string.Empty); Message.AppendInt32(0); Message.AppendInt32(0); Message.AppendStringWithBreak(RoomData.CCTs); Message.AppendInt32(RoomData.UsersMax); Message.AppendUInt(RoomId); } else if (Category) { Message.AppendInt32(Id); Message.AppendStringWithBreak(Caption); Message.AppendStringWithBreak(string.Empty); Message.AppendBoolean(true); Message.AppendStringWithBreak(string.Empty); Message.AppendStringWithBreak(Image); Message.AppendBoolean(false); Message.AppendBoolean(false); Message.AppendInt32(4); Message.AppendBoolean(false); } }
internal bool tryLogin(string AuthTicket) { try { string ip = GetConnection().getIp(); byte errorCode = 0; UserData userData = UserDataFactory.GetUserData(AuthTicket, ip, out errorCode); if (errorCode == 1) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso")); return false; } else if (errorCode == 2) { SendNotifWithScroll(LanguageLocale.GetValue("login.loggedin")); return false; } PiciEnvironment.GetGame().GetClientManager().RegisterClient(this, userData.userID, userData.user.Username); this.Habbo = userData.user; userData.user.LoadData(userData); if (userData.user.Username == null) { SendBanMessage("You have no username."); return false; } string banReason = PiciEnvironment.GetGame().GetBanManager().GetBanReason(userData.user.Username, ip); if (!string.IsNullOrEmpty(banReason)) { SendBanMessage(banReason); return false; } userData.user.Init(this, userData); QueuedServerMessage response = new QueuedServerMessage(Connection); userData.user.SerializeQuests(ref response); GetMessageHandler().GetResponse().Init(2); if (userData.user.HasRight("acc_anyroomowner")) GetMessageHandler().GetResponse().AppendInt32(7); else if (userData.user.HasRight("acc_anyroomrights")) GetMessageHandler().GetResponse().AppendInt32(5); else if (userData.user.HasRight("acc_supporttool")) GetMessageHandler().GetResponse().AppendInt32(4); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_vip")) GetMessageHandler().GetResponse().AppendInt32(2); else if (GetHabbo().GetSubscriptionManager().HasSubscription("habbo_club")) GetMessageHandler().GetResponse().AppendInt32(1); else GetMessageHandler().GetResponse().AppendInt32(0); GetMessageHandler().SendResponse(); if (userData.user.HasRight("acc_supporttool")) { SendMessage(PiciEnvironment.GetGame().GetModerationTool().SerializeTool()); PiciEnvironment.GetGame().GetModerationTool().SerializeOpenTickets(this); } SendMessage(userData.user.GetAvatarEffectsInventoryComponent().Serialize()); GetMessageHandler().GetResponse().Init(290); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().GetResponse().AppendBoolean(false); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(3); GetMessageHandler().SendResponse(); GetMessageHandler().GetResponse().Init(517); GetMessageHandler().GetResponse().AppendBoolean(true); GetMessageHandler().SendResponse(); //if (PixelManager.NeedsUpdate(this)) // PixelManager.GivePixels(this); if (PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin > 0) { PixelManager.GivePixels(this, PiciEnvironment.GetGame().GetClientManager().pixelsOnLogin); } if (PiciEnvironment.GetGame().GetClientManager().creditsOnLogin > 0) { userData.user.Credits += PiciEnvironment.GetGame().GetClientManager().creditsOnLogin; userData.user.UpdateCreditsBalance(); } if (userData.user.HomeRoom > 0) { GetMessageHandler().GetResponse().Init(455); GetMessageHandler().GetResponse().AppendUInt(userData.user.HomeRoom); GetMessageHandler().SendResponse(); } GetMessageHandler().GetResponse().Init(458); GetMessageHandler().GetResponse().AppendInt32(30); GetMessageHandler().GetResponse().AppendInt32(userData.user.FavoriteRooms.Count); foreach (uint Id in userData.user.FavoriteRooms.ToArray()) { GetMessageHandler().GetResponse().AppendUInt(Id); } GetMessageHandler().SendResponse(); if (!userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().GiveBadge("ACH_BasicClub1", true); } else if (userData.user.GetBadgeComponent().HasBadge("ACH_BasicClub1")) { userData.user.GetBadgeComponent().RemoveBadge("ACH_BasicClub1"); } if (!userData.user.GetBadgeComponent().HasBadge("Z63")) userData.user.GetBadgeComponent().GiveBadge("Z63", true); if (userData.user.Rank > 5 && !userData.user.GetBadgeComponent().HasBadge("ADM")) userData.user.GetBadgeComponent().GiveBadge("ADM", true); ServerMessage alert = new ServerMessage(810); alert.AppendUInt(1); alert.AppendStringWithBreak(LanguageLocale.welcomeAlert); SendMessage(alert); Logging.WriteLine("[" + Habbo.Username + "] logged in"); return true; } catch (UserDataNotFoundException e) { SendNotifWithScroll(LanguageLocale.GetValue("login.invalidsso") + "extra data: " + e.ToString()); } catch (Exception e) { Logging.LogCriticalException("Invalid Dario bug duing user login: "******"Login error: " + e.ToString()); SendNotifWithScroll("Login error: " + e.ToString()); } return false; }
//internal void Serialize(ServerMessage Message) //{ // Message.Append(Id); // Message.Append(0); // if (mBaseItem == null) // Logging.LogException("Unknown base: " + BaseItem); // Message.Append(mBaseItem.Type.ToString().ToUpper()); // Message.Append(Id); // Message.Append(mBaseItem.SpriteId); // if (mBaseItem.Name.Contains("a2")) // Message.Append(3); // else if (mBaseItem.Name.Contains("wallpaper")) // Message.Append(2); // else if (mBaseItem.Name.Contains("landscape")) // Message.Append(4); // else // Message.Append(0); // Message.Append(ExtraData); // Message.Append(mBaseItem.AllowRecycle); // Message.Append(mBaseItem.AllowTrade); // Message.Append(mBaseItem.AllowInventoryStack); // Message.Append(Marketplace.CanSellItem(this)); // Message.Append(-1); // if (mBaseItem.Type == 's') // { // Message.Append(""); // Message.Append(-1); // } //} internal void SerializeWall(ServerMessage Message, Boolean Inventory) { Message.AppendUInt(Id); Message.AppendStringWithBreak(mBaseItem.Type.ToString().ToUpper()); Message.AppendUInt(Id); Message.AppendInt32(GetBaseItem().SpriteId); if (GetBaseItem().Name.Contains("a2")) { Message.AppendInt32(3); } else if (GetBaseItem().Name.Contains("wallpaper")) { Message.AppendInt32(2); } else if (GetBaseItem().Name.Contains("landscape")) { Message.AppendInt32(4); } else { Message.AppendInt32(1); } Message.AppendStringWithBreak(ExtraData); Message.AppendBoolean(GetBaseItem().AllowRecycle); Message.AppendBoolean(GetBaseItem().AllowTrade); Message.AppendBoolean(GetBaseItem().AllowInventoryStack); Message.AppendBoolean(Marketplace.CanSellItem(this)); Message.AppendInt32(-1); }
internal void DeliverInstantMessageError(int ErrorId, UInt32 ConversationId) { /* 3 = Your friend is muted and cannot reply. 4 = Your message was not sent because you are muted. 5 = Your friend is not online. 6 = Receiver is not your friend anymore. 7 = Your friend is busy. 8 = Your friend is wanking*/ ServerMessage reply = new ServerMessage(261); reply.AppendInt32(ErrorId); reply.AppendUInt(ConversationId); GetClient().SendMessage(reply); }
internal void UpdateBadges() { Session.GetHabbo().GetBadgeComponent().ResetSlots(); using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.runFastQuery("UPDATE user_badges SET badge_slot = 0 WHERE user_id = " + Session.GetHabbo().Id); } if (Request.RemainingLength > 0) { while (Request.RemainingLength > 0) { int Slot = Request.PopWiredInt32(); string Badge = Request.PopFixedString(); if (Badge.Length == 0) { continue; } if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Badge) || Slot < 1 || Slot > 5) { return; } Session.GetHabbo().GetBadgeComponent().GetBadge(Badge).Slot = Slot; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("UPDATE user_badges SET badge_slot = " + Slot + " WHERE badge_id = @badge AND user_id = " + Session.GetHabbo().Id + ""); dbClient.addParameter("badge", Badge); dbClient.runQuery(); } } PiciEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, HabboHotel.Quests.QuestType.PROFILE_BADGE); } ServerMessage Message = new ServerMessage(228); Message.AppendUInt(Session.GetHabbo().Id); Message.AppendInt32(Session.GetHabbo().GetBadgeComponent().EquippedCount); foreach (Badge Badge in Session.GetHabbo().GetBadgeComponent().BadgeList.Values) { if (Badge.Slot <= 0) { continue; } Message.AppendInt32(Badge.Slot); Message.AppendString(Badge.Code); } if (Session.GetHabbo().InRoom&& PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId) != null) { PiciEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId).SendMessage(Message); } else { Session.SendMessage(Message); } }