├── .gitignore ├── Changelog.txt ├── Communication ├── ConnectionManager │ ├── ConnectionHandling.cs │ ├── ConnectionInformation.cs │ ├── ConnectionState.cs │ ├── GameSocketManager.cs │ ├── GameSocketManagerStatics.cs │ ├── IDataParser.cs │ └── Socket Exceptions │ │ └── SocketInitializationException.cs ├── Encryption │ ├── Crypto │ │ ├── Prng │ │ │ └── ARC4.cs │ │ └── RSA │ │ │ ├── Pkcs1PadType.cs │ │ │ └── RSAKey.cs │ ├── HabboEncryptionV2.cs │ ├── KeyExchange │ │ └── DiffieHellman.cs │ └── Keys │ │ └── RSAKeys.cs ├── GamePacketParser.cs ├── InitialPacketParser.cs ├── Interfaces │ └── IServerPacket.cs ├── Packets │ ├── IPacketEvent.cs │ ├── Incoming │ │ ├── Avatar │ │ │ ├── GetWardrobeEvent.cs │ │ │ └── SaveWardrobeOutfitEvent.cs │ │ ├── Catalog │ │ │ ├── CheckGnomeNameEvent.cs │ │ │ ├── CheckPetNameEvent.cs │ │ │ ├── GetCatalogIndexEvent.cs │ │ │ ├── GetCatalogModeEvent.cs │ │ │ ├── GetCatalogOfferEvent.cs │ │ │ ├── GetCatalogPageEvent.cs │ │ │ ├── GetCatalogRoomPromotionEvent.cs │ │ │ ├── GetClubGiftsEvent.cs │ │ │ ├── GetGiftWrappingConfigurationEvent.cs │ │ │ ├── GetGroupFurniConfigEvent.cs │ │ │ ├── GetMarketplaceConfigurationEvent.cs │ │ │ ├── GetPromotableRoomsEvent.cs │ │ │ ├── GetRecyclerRewardsEvent.cs │ │ │ ├── GetSellablePetBreedsEvent.cs │ │ │ ├── PurchaseFromCatalogAsGiftEvent.cs │ │ │ ├── PurchaseFromCatalogEvent.cs │ │ │ ├── PurchaseRoomPromotionEvent.cs │ │ │ └── RedeemVoucherEvent.cs │ │ ├── ClientPacket.cs │ │ ├── ClientPacketHeader.cs │ │ ├── GameCenter │ │ │ ├── Game2GetWeeklyLeaderboardEvent.cs │ │ │ ├── GetGameListingEvent.cs │ │ │ ├── GetPlayableGamesEvent.cs │ │ │ ├── InitializeGameCenterEvent.cs │ │ │ └── JoinPlayerQueueEvent.cs │ │ ├── Groups │ │ │ ├── AcceptGroupMembershipEvent.cs │ │ │ ├── DeclineGroupMembershipEvent.cs │ │ │ ├── DeleteGroupEvent.cs │ │ │ ├── GetBadgeEditorPartsEvent.cs │ │ │ ├── GetGroupCreationWindowEvent.cs │ │ │ ├── GetGroupInfoEvent.cs │ │ │ ├── GetGroupMembersEvent.cs │ │ │ ├── GiveAdminRightsEvent.cs │ │ │ ├── JoinGroupEvent.cs │ │ │ ├── ManageGroupEvent.cs │ │ │ ├── PurchaseGroupEvent.cs │ │ │ ├── RemoveGroupFavouriteEvent.cs │ │ │ ├── RemoveGroupMemberEvent.cs │ │ │ ├── SetGroupFavouriteEvent.cs │ │ │ ├── TakeAdminRightsEvent.cs │ │ │ ├── UpdateGroupBadgeEvent.cs │ │ │ ├── UpdateGroupColoursEvent.cs │ │ │ ├── UpdateGroupIdentityEvent.cs │ │ │ └── UpdateGroupSettingsEvent.cs │ │ ├── Handshake │ │ │ ├── GenerateSecretKeyEvent.cs │ │ │ ├── GetClientVersionEvent.cs │ │ │ ├── InfoRetrieveEvent.cs │ │ │ ├── InitCryptoEvent.cs │ │ │ ├── PingEvent.cs │ │ │ ├── SSOTicketEvent.cs │ │ │ └── UniqueIDEvent.cs │ │ ├── Help │ │ │ ├── GetSanctionStatusEvent.cs │ │ │ ├── OnBullyClickEvent.cs │ │ │ ├── SendBullyReportEvent.cs │ │ │ └── SubmitBullyReportEvent.cs │ │ ├── Inventory │ │ │ ├── Achievements │ │ │ │ └── GetAchievementsEvent.cs │ │ │ ├── AvatarEffects │ │ │ │ ├── AvatarEffectActivatedEvent.cs │ │ │ │ └── AvatarEffectSelectedEvent.cs │ │ │ ├── Badges │ │ │ │ ├── GetBadgesEvent.cs │ │ │ │ └── SetActivatedBadgesEvent.cs │ │ │ ├── Bots │ │ │ │ └── GetBotInventoryEvent.cs │ │ │ ├── Furni │ │ │ │ └── RequestFurniInventoryEvent.cs │ │ │ ├── Pets │ │ │ │ └── GetPetInventoryEvent.cs │ │ │ ├── Purse │ │ │ │ ├── GetCreditsInfoEvent.cs │ │ │ │ └── GetHabboClubWindowEvent.cs │ │ │ └── Trading │ │ │ │ ├── InitTradeEvent.cs │ │ │ │ ├── TradingAcceptEvent.cs │ │ │ │ ├── TradingCancelConfirmEvent.cs │ │ │ │ ├── TradingCancelEvent.cs │ │ │ │ ├── TradingConfirmEvent.cs │ │ │ │ ├── TradingModifyEvent.cs │ │ │ │ ├── TradingOfferItemEvent.cs │ │ │ │ ├── TradingOfferItemsEvent.cs │ │ │ │ └── TradingRemoveItemEvent.cs │ │ ├── LandingView │ │ │ ├── GetPromoArticlesEvent.cs │ │ │ └── RefreshCampaignEvent.cs │ │ ├── Marketplace │ │ │ ├── BuyOfferEvent.cs │ │ │ ├── CancelOfferEvent.cs │ │ │ ├── GetMarketplaceCanMakeOfferEvent.cs │ │ │ ├── GetMarketplaceItemStatsEvent.cs │ │ │ ├── GetOffersEvent.cs │ │ │ ├── GetOwnOffersEvent.cs │ │ │ ├── MakeOfferEvent.cs │ │ │ └── RedeemOfferCreditsEvent.cs │ │ ├── Messenger │ │ │ ├── AcceptBuddyEvent.cs │ │ │ ├── DeclineBuddyEvent.cs │ │ │ ├── FindNewFriendsEvent.cs │ │ │ ├── FollowFriendEvent.cs │ │ │ ├── FriendListUpdateEvent.cs │ │ │ ├── GetBuddyRequestsEvent.cs │ │ │ ├── HabboSearchEvent.cs │ │ │ ├── MessengerInitEvent.cs │ │ │ ├── RemoveBuddyEvent.cs │ │ │ ├── RequestBuddyEvent.cs │ │ │ ├── SendMsgEvent.cs │ │ │ └── SendRoomInviteEvent.cs │ │ ├── Misc │ │ │ ├── ClientVariablesEvent.cs │ │ │ ├── DisconnectEvent.cs │ │ │ ├── EventTrackerEvent.cs │ │ │ ├── LatencyTestEvent.cs │ │ │ ├── MemoryPerformanceEvent.cs │ │ │ └── SetFriendBarStateEvent.cs │ │ ├── Moderation │ │ │ ├── CallForHelpPendingCallsDeletedEvent.cs │ │ │ ├── CloseIssueDefaultActionEvent.cs │ │ │ ├── CloseTicketEvent.cs │ │ │ ├── GetModeratorRoomChatlogEvent.cs │ │ │ ├── GetModeratorRoomInfoEvent.cs │ │ │ ├── GetModeratorTicketChatlogsEvent.cs │ │ │ ├── GetModeratorUserChatlogEvent.cs │ │ │ ├── GetModeratorUserInfoEvent.cs │ │ │ ├── GetModeratorUserRoomVisitsEvent.cs │ │ │ ├── ModerateRoomEvent.cs │ │ │ ├── ModerationBanEvent.cs │ │ │ ├── ModerationCautionEvent.cs │ │ │ ├── ModerationKickEvent.cs │ │ │ ├── ModerationMsgEvent.cs │ │ │ ├── ModerationMuteEvent.cs │ │ │ ├── ModerationTradeLockEvent.cs │ │ │ ├── ModeratorActionEvent.cs │ │ │ ├── OpenHelpToolEvent.cs │ │ │ ├── PickTicketEvent.cs │ │ │ ├── ReleaseTicketEvent.cs │ │ │ └── SubmitNewTicketEvent.cs │ │ ├── Navigator │ │ │ ├── AddFavouriteRoomEvent.cs │ │ │ ├── CanCreateRoomEvent.cs │ │ │ ├── CreateFlatEvent.cs │ │ │ ├── EditRoomEventEvent.cs │ │ │ ├── FindRandomFriendingRoomEvent.cs │ │ │ ├── GetGuestRoomEvent.cs │ │ │ ├── GetNavigatorFlatsEvent.cs │ │ │ ├── GetUserFlatCatsEvent.cs │ │ │ ├── GoToHotelViewEvent.cs │ │ │ ├── InitializeNewNavigatorEvent.cs │ │ │ ├── NavigatorSearchEvent.cs │ │ │ ├── RemoveFavouriteRoomEvent.cs │ │ │ └── UpdateNavigatorSettingsEvent.cs │ │ ├── Quests │ │ │ ├── CancelQuestEvent.cs │ │ │ ├── GetCurrentQuestEvent.cs │ │ │ ├── GetDailyQuestEvent.cs │ │ │ ├── GetQuestListEvent.cs │ │ │ └── StartQuestEvent.cs │ │ ├── Rooms │ │ │ ├── AI │ │ │ │ ├── Bots │ │ │ │ │ ├── OpenBotActionEvent.cs │ │ │ │ │ ├── PickUpBotEvent.cs │ │ │ │ │ ├── PlaceBotEvent.cs │ │ │ │ │ └── SaveBotActionEvent.cs │ │ │ │ └── Pets │ │ │ │ │ ├── GetPetInformationEvent.cs │ │ │ │ │ ├── GetPetTrainingPanelEvent.cs │ │ │ │ │ ├── Horse │ │ │ │ │ ├── ApplyHorseEffectEvent.cs │ │ │ │ │ ├── ModifyWhoCanRideHorseEvent.cs │ │ │ │ │ ├── RemoveSaddleFromHorseEvent.cs │ │ │ │ │ └── RideHorseEvent.cs │ │ │ │ │ ├── PickUpPetEvent.cs │ │ │ │ │ ├── PlacePetEvent.cs │ │ │ │ │ └── RespectPetEvent.cs │ │ │ ├── Action │ │ │ │ ├── AssignRightsEvent.cs │ │ │ │ ├── BanUserEvent.cs │ │ │ │ ├── GiveHandItemEvent.cs │ │ │ │ ├── GiveRoomScoreEvent.cs │ │ │ │ ├── IgnoreUserEvent.cs │ │ │ │ ├── KickUserEvent.cs │ │ │ │ ├── LetUserInEvent.cs │ │ │ │ ├── MuteUserEvent.cs │ │ │ │ ├── RemoveAllRightsEvent.cs │ │ │ │ ├── RemoveMyRightsEvent.cs │ │ │ │ ├── RemoveRightsEvent.cs │ │ │ │ └── UnIgnoreUserEvent.cs │ │ │ ├── Avatar │ │ │ │ ├── ActionEvent.cs │ │ │ │ ├── ApplySignEvent.cs │ │ │ │ ├── ChangeMottoEvent.cs │ │ │ │ ├── DanceEvent.cs │ │ │ │ ├── DropHandItemEvent.cs │ │ │ │ ├── LookToEvent.cs │ │ │ │ └── SitEvent.cs │ │ │ ├── Chat │ │ │ │ ├── CancelTypingEvent.cs │ │ │ │ ├── ChatEvent.cs │ │ │ │ ├── ShoutEvent.cs │ │ │ │ ├── StartTypingEvent.cs │ │ │ │ └── WhisperEvent.cs │ │ │ ├── Connection │ │ │ │ ├── GoToFlatEvent.cs │ │ │ │ └── OpenFlatConnectionEvent.cs │ │ │ ├── Engine │ │ │ │ ├── ApplyDecorationEvent.cs │ │ │ │ ├── GetFurnitureAliasesEvent.cs │ │ │ │ ├── GetRoomEntryDataEvent.cs │ │ │ │ ├── MoveAvatarEvent.cs │ │ │ │ ├── MoveObjectEvent.cs │ │ │ │ ├── MoveWallItemEvent.cs │ │ │ │ ├── PickupObjectEvent.cs │ │ │ │ ├── PlaceObjectEvent.cs │ │ │ │ ├── UseFurnitureEvent.cs │ │ │ │ └── UseWallItemEvent.cs │ │ │ ├── FloorPlan │ │ │ │ ├── FloorPlanEditorRoomPropertiesEvent.cs │ │ │ │ ├── InitializeFloorPlanSessionEvent.cs │ │ │ │ └── SaveFloorPlanModelEvent.cs │ │ │ ├── Furni │ │ │ │ ├── CreditFurniRedeemEvent.cs │ │ │ │ ├── DiceOffEvent.cs │ │ │ │ ├── GetGroupFurniSettingsEvent.cs │ │ │ │ ├── LoveLocks │ │ │ │ │ └── ConfirmLoveLockEvent.cs │ │ │ │ ├── Moodlight │ │ │ │ │ ├── GetMoodlightConfigEvent.cs │ │ │ │ │ ├── MoodlightUpdateEvent.cs │ │ │ │ │ └── ToggleMoodlightEvent.cs │ │ │ │ ├── OpenGiftEvent.cs │ │ │ │ ├── RentableSpaces │ │ │ │ │ └── GetRentableSpaceEvent.cs │ │ │ │ ├── SaveBrandingItemEvent.cs │ │ │ │ ├── SetMannequinFigureEvent.cs │ │ │ │ ├── SetMannequinNameEvent.cs │ │ │ │ ├── SetTonerEvent.cs │ │ │ │ ├── Stickys │ │ │ │ │ ├── AddStickyNoteEvent.cs │ │ │ │ │ ├── DeleteStickyNoteEvent.cs │ │ │ │ │ ├── GetStickyNoteEvent.cs │ │ │ │ │ └── UpdateStickyNoteEvent.cs │ │ │ │ ├── ThrowDiceEvent.cs │ │ │ │ ├── UpdateMagicTileEvent.cs │ │ │ │ ├── UseSellableClothingEvent.cs │ │ │ │ ├── Wired │ │ │ │ │ └── SaveWiredConfigEvent.cs │ │ │ │ └── YouTubeTelevisions │ │ │ │ │ ├── GetYouTubeTelevisionEvent.cs │ │ │ │ │ ├── ToggleYouTubeVideoEvent.cs │ │ │ │ │ ├── YouTubeGetNextVideo.cs │ │ │ │ │ └── YouTubeVideoInformationEvent.cs │ │ │ ├── Polls │ │ │ │ └── PollStartEvent.cs │ │ │ └── Settings │ │ │ │ ├── DeleteRoomEvent.cs │ │ │ │ ├── GetRoomBannedUsersEvent.cs │ │ │ │ ├── GetRoomFilterListEvent.cs │ │ │ │ ├── GetRoomRightsEvent.cs │ │ │ │ ├── GetRoomSettingsEvent.cs │ │ │ │ ├── ModifyRoomFilterListEvent.cs │ │ │ │ ├── SaveEnforcedCategorySettingsEvent.cs │ │ │ │ ├── SaveRoomSettingsEvent.cs │ │ │ │ ├── ToggleMuteToolEvent.cs │ │ │ │ └── UnbanUserFromRoomEvent.cs │ │ ├── Sound │ │ │ ├── GetSongInfoEvent.cs │ │ │ └── SetSoundSettingsEvent.cs │ │ ├── Talents │ │ │ └── GetTalentTrackEvent.cs │ │ └── Users │ │ │ ├── ChangeNameEvent.cs │ │ │ ├── CheckValidNameEvent.cs │ │ │ ├── GetHabboGroupBadgesEvent.cs │ │ │ ├── GetIgnoredUsersEvent.cs │ │ │ ├── GetRelationshipsEvent.cs │ │ │ ├── GetSelectedBadgesEvent.cs │ │ │ ├── GetUserTagsEvent.cs │ │ │ ├── OpenPlayerProfileEvent.cs │ │ │ ├── RespectUserEvent.cs │ │ │ ├── ScrGetUserInfoEvent.cs │ │ │ ├── SetChatPreferenceEvent.cs │ │ │ ├── SetMessengerInviteStatusEvent.cs │ │ │ ├── SetRelationshipEvent.cs │ │ │ ├── SetUserFocusPreferenceEvent.cs │ │ │ └── UpdateFigureDataEvent.cs │ ├── Outgoing │ │ ├── Avatar │ │ │ └── WardrobeComposer.cs │ │ ├── BuildersClub │ │ │ ├── BCBorrowedItemsComposer.cs │ │ │ └── BuildersClubMembershipComposer.cs │ │ ├── Catalog │ │ │ ├── CatalogIndexComposer.cs │ │ │ ├── CatalogItemDiscountComposer.cs │ │ │ ├── CatalogOfferComposer.cs │ │ │ ├── CatalogPageComposer.cs │ │ │ ├── CatalogUpdatedComposer.cs │ │ │ ├── CheckGnomeNameComposer.cs │ │ │ ├── CheckPetNameComposer.cs │ │ │ ├── ClubGiftsComposer.cs │ │ │ ├── GetCatalogRoomPromotionComposer.cs │ │ │ ├── GiftWrappingConfigurationComposer.cs │ │ │ ├── GiftWrappingErrorComposer.cs │ │ │ ├── GroupFurniConfigComposer.cs │ │ │ ├── MarketplaceConfigurationComposer.cs │ │ │ ├── PresentDeliverErrorMessageComposer.cs │ │ │ ├── PromotableRoomsComposer.cs │ │ │ ├── PurchaseErrorComposer.cs │ │ │ ├── PurchaseOKComposer.cs │ │ │ ├── RecyclerRewardsComposer.cs │ │ │ ├── SellablePetBreedsComposer.cs │ │ │ ├── VoucherRedeemErrorComposer.cs │ │ │ └── VoucherRedeemOkComposer.cs │ │ ├── GameCenter │ │ │ ├── Game2WeeklyLeaderboardComposer.cs │ │ │ ├── Game3WeeklyLeaderboardComposer.cs │ │ │ ├── GameAccountStatusComposer.cs │ │ │ ├── GameAchievementListComposer.cs │ │ │ ├── GameListComposer.cs │ │ │ ├── JoinQueueComposer.cs │ │ │ ├── LoadGameComposer.cs │ │ │ └── PlayableGamesComposer.cs │ │ ├── Groups │ │ │ ├── BadgeEditorPartsComposer.cs │ │ │ ├── GroupCreationWindowComposer.cs │ │ │ ├── GroupFurniSettingsComposer.cs │ │ │ ├── GroupInfoComposer.cs │ │ │ ├── GroupMemberUpdatedComposer.cs │ │ │ ├── GroupMembersComposer.cs │ │ │ ├── GroupMembershipRequestedComposer.cs │ │ │ ├── ManageGroupComposer.cs │ │ │ ├── NewGroupInfoComposer.cs │ │ │ ├── RefreshFavouriteGroupComposer.cs │ │ │ ├── UnknownGroupComposer.cs │ │ │ └── UpdateFavouriteGroupComposer.cs │ │ ├── Handshake │ │ │ ├── AuthenticationOKComposer.cs │ │ │ ├── AvailabilityStatusComposer.cs │ │ │ ├── GenericErrorComposer.cs │ │ │ ├── InitCryptoComposer.cs │ │ │ ├── PongComposer.cs │ │ │ ├── SecretKeyComposer.cs │ │ │ ├── SetUniqueIdComposer.cs │ │ │ ├── UserObjectComposer.cs │ │ │ ├── UserPerksComposer.cs │ │ │ └── UserRightsComposer.cs │ │ ├── Help │ │ │ ├── SanctionStatusComposer.cs │ │ │ ├── SendBullyReportComposer.cs │ │ │ └── SubmitBullyReportComposer.cs │ │ ├── Inventory │ │ │ ├── Achievements │ │ │ │ ├── AchievementProgressedComposer.cs │ │ │ │ ├── AchievementScoreComposer.cs │ │ │ │ ├── AchievementUnlockedComposer.cs │ │ │ │ ├── AchievementsComposer.cs │ │ │ │ └── BadgeDefinitionsComposer.cs │ │ │ ├── AvatarEffects │ │ │ │ ├── AvatarEffectActivatedComposer.cs │ │ │ │ ├── AvatarEffectAddedComposer.cs │ │ │ │ ├── AvatarEffectExpiredComposer.cs │ │ │ │ ├── AvatarEffectsComposer.cs │ │ │ │ └── FigureSetIdsComposer.cs │ │ │ ├── Badges │ │ │ │ └── BadgesComposer.cs │ │ │ ├── Bots │ │ │ │ └── BotInventoryComposer.cs │ │ │ ├── Furni │ │ │ │ ├── FurniListAddComposer.cs │ │ │ │ ├── FurniListComposer.cs │ │ │ │ ├── FurniListNotificationComposer.cs │ │ │ │ ├── FurniListRemoveComposer.cs │ │ │ │ └── FurniListUpdateComposer.cs │ │ │ ├── Pets │ │ │ │ └── PetInventoryComposer.cs │ │ │ ├── Purse │ │ │ │ ├── ActivityPointsComposer.cs │ │ │ │ ├── CreditBalanceComposer.cs │ │ │ │ └── HabboActivityPointNotificationComposer.cs │ │ │ └── Trading │ │ │ │ ├── TradingAcceptComposer.cs │ │ │ │ ├── TradingClosedComposer.cs │ │ │ │ ├── TradingCompleteComposer.cs │ │ │ │ ├── TradingConfirmedComposer.cs │ │ │ │ ├── TradingErrorComposer.cs │ │ │ │ ├── TradingFinishComposer.cs │ │ │ │ ├── TradingStartComposer.cs │ │ │ │ └── TradingUpdateComposer.cs │ │ ├── LandingView │ │ │ ├── CampaignComposer.cs │ │ │ ├── ConcurrentUsersGoalProgressComposer.cs │ │ │ └── PromoArticlesComposer.cs │ │ ├── Marketplace │ │ │ ├── MarketPlaceOffersComposer.cs │ │ │ ├── MarketPlaceOwnOffersComposer.cs │ │ │ ├── MarketplaceCanMakeOfferResultComposer.cs │ │ │ ├── MarketplaceCancelOfferResultComposer.cs │ │ │ ├── MarketplaceItemStatsComposer.cs │ │ │ └── MarketplaceMakeOfferResultComposer.cs │ │ ├── Messenger │ │ │ ├── BuddyListComposer.cs │ │ │ ├── BuddyRequestsComposer.cs │ │ │ ├── FindFriendsProcessResultComposer.cs │ │ │ ├── FollowFriendFailedComposer.cs │ │ │ ├── FriendListUpdateComposer.cs │ │ │ ├── FriendNotificationComposer.cs │ │ │ ├── HabboSearchResultComposer.cs │ │ │ ├── InstantMessageErrorComposer.cs │ │ │ ├── MessengerErrorComposer.cs │ │ │ ├── MessengerInitComposer.cs │ │ │ ├── NewBuddyRequestComposer.cs │ │ │ ├── NewConsoleMessageComposer.cs │ │ │ └── RoomInviteComposer.cs │ │ ├── Misc │ │ │ ├── LatencyTestComposer.cs │ │ │ └── VideoOffersRewardsComposer.cs │ │ ├── Moderation │ │ │ ├── BroadcastMessageAlertComposer.cs │ │ │ ├── CallForHelpPendingCallsComposer.cs │ │ │ ├── CfhTopicsInitComposer.cs │ │ │ ├── ModeratorInitComposer.cs │ │ │ ├── ModeratorRoomChatlogComposer.cs │ │ │ ├── ModeratorRoomInfoComposer.cs │ │ │ ├── ModeratorSupportTicketComposer.cs │ │ │ ├── ModeratorSupportTicketResponseComposer.cs │ │ │ ├── ModeratorTicketChatlogComposer.cs │ │ │ ├── ModeratorUserChatlogComposer.cs │ │ │ ├── ModeratorUserInfoComposer.cs │ │ │ ├── ModeratorUserRoomVisitsComposer.cs │ │ │ ├── MutedComposer.cs │ │ │ └── OpenHelpToolComposer.cs │ │ ├── Navigator │ │ │ ├── CanCreateRoomComposer.cs │ │ │ ├── DoorbellComposer.cs │ │ │ ├── FavouritesComposer.cs │ │ │ ├── FlatAccessDeniedComposer.cs │ │ │ ├── FlatCreatedComposer.cs │ │ │ ├── GetGuestRoomResultComposer.cs │ │ │ ├── NavigatorFlatCatsComposer.cs │ │ │ ├── NavigatorSettingsComposer.cs │ │ │ ├── New │ │ │ │ ├── NavigatorCollapsedCategoriesComposer.cs │ │ │ │ ├── NavigatorLiftedRoomsComposer.cs │ │ │ │ ├── NavigatorMetaDataParserComposer.cs │ │ │ │ ├── NavigatorPreferencesComposer.cs │ │ │ │ └── NavigatorSearchResultSetComposer.cs │ │ │ ├── PopularRoomTagsResultComposer.cs │ │ │ ├── RoomInfoUpdatedComposer.cs │ │ │ ├── RoomRatingComposer.cs │ │ │ ├── UpdateFavouriteRoomComposer.cs │ │ │ └── UserFlatCatsComposer.cs │ │ ├── Notifications │ │ │ └── MOTDNotificationComposer.cs │ │ ├── Pets │ │ │ ├── PetBreedingComposer.cs │ │ │ └── RespectPetNotificationMessageComposer.cs │ │ ├── Quests │ │ │ ├── QuestAbortedComposer.cs │ │ │ ├── QuestCompletedComposer.cs │ │ │ ├── QuestCompletedCompser.cs │ │ │ ├── QuestListComposer.cs │ │ │ └── QuestStartedComposer.cs │ │ ├── Rooms │ │ │ ├── AI │ │ │ │ ├── Bots │ │ │ │ │ └── OpenBotActionComposer.cs │ │ │ │ └── Pets │ │ │ │ │ ├── AddExperiencePointsComposer.cs │ │ │ │ │ ├── PetHorseFigureInformationComposer.cs │ │ │ │ │ ├── PetInformationComposer.cs │ │ │ │ │ └── PetTrainingPanelComposer.cs │ │ │ ├── Action │ │ │ │ └── IgnoreStatusComposer.cs │ │ │ ├── Avatar │ │ │ │ ├── ActionComposer.cs │ │ │ │ ├── AvatarAspectUpdateComposer.cs │ │ │ │ ├── AvatarAspectUpdateMessageComposer.cs │ │ │ │ ├── AvatarEffectComposer.cs │ │ │ │ ├── CarryObjectComposer.cs │ │ │ │ ├── DanceComposer.cs │ │ │ │ └── SleepComposer.cs │ │ │ ├── Chat │ │ │ │ ├── ChatComposer.cs │ │ │ │ ├── FloodControlComposer.cs │ │ │ │ ├── ShoutComposer.cs │ │ │ │ ├── UserTypingComposer.cs │ │ │ │ └── WhisperComposer.cs │ │ │ ├── Engine │ │ │ │ ├── FloorHeightMapComposer.cs │ │ │ │ ├── FurnitureAliasesComposer.cs │ │ │ │ ├── HeightMapComposer.cs │ │ │ │ ├── ItemAddComposer.cs │ │ │ │ ├── ItemRemoveComposer.cs │ │ │ │ ├── ItemUpdateComposer.cs │ │ │ │ ├── ItemsComposer.cs │ │ │ │ ├── ObjectAddComposer.cs │ │ │ │ ├── ObjectRemoveComposer.cs │ │ │ │ ├── ObjectUpdateComposer.cs │ │ │ │ ├── ObjectsComposer.cs │ │ │ │ ├── RoomEntryInfoComposer.cs │ │ │ │ ├── RoomEventComposer.cs │ │ │ │ ├── RoomPropertyComposer.cs │ │ │ │ ├── RoomVisualizationSettingsComposer.cs │ │ │ │ ├── SlideObjectBundleComposer.cs │ │ │ │ ├── UserChangeComposer.cs │ │ │ │ ├── UserNameChangeComposer.cs │ │ │ │ ├── UserRemoveComposer.cs │ │ │ │ ├── UserUpdateComposer.cs │ │ │ │ └── UsersComposer.cs │ │ │ ├── FloorPlan │ │ │ │ ├── FloorPlanFloorMapComposer.cs │ │ │ │ └── FloorPlanSendDoorComposer.cs │ │ │ ├── Freeze │ │ │ │ └── UpdateFreezeLivesComposer.cs │ │ │ ├── Furni │ │ │ │ ├── GnomeBoxComposer.cs │ │ │ │ ├── LoveLocks │ │ │ │ │ ├── LoveLockDialogueCloseMessageComposer.cs │ │ │ │ │ ├── LoveLockDialogueMessageComposer.cs │ │ │ │ │ └── LoveLockDialogueSetLockedMessageComposer.cs │ │ │ │ ├── Moodlight │ │ │ │ │ └── MoodlightConfigComposer.cs │ │ │ │ ├── OpenGiftComposer.cs │ │ │ │ ├── RentableSpaces │ │ │ │ │ └── RentableSpaceComposer.cs │ │ │ │ ├── Stickys │ │ │ │ │ └── StickyNoteComposer.cs │ │ │ │ ├── UpdateMagicTileComposer.cs │ │ │ │ ├── Wired │ │ │ │ │ ├── HideWiredConfigComposer.cs │ │ │ │ │ ├── WiredConditionConfigComposer.cs │ │ │ │ │ ├── WiredEffectConfigComposer.cs │ │ │ │ │ └── WiredTriggerConfigComposer.cs │ │ │ │ └── YouTubeTelevisions │ │ │ │ │ ├── GetYouTubePlaylistComposer.cs │ │ │ │ │ └── GetYouTubeVideoComposer.cs │ │ │ ├── Notifications │ │ │ │ ├── RoomErrorNotifComposer.cs │ │ │ │ └── RoomNotificationComposer.cs │ │ │ ├── Permissions │ │ │ │ ├── YouAreControllerMessageComposer.cs │ │ │ │ ├── YouAreNotControllerComposer.cs │ │ │ │ └── YouAreOwnerComposer.cs │ │ │ ├── Polls │ │ │ │ ├── PollContentsComposer.cs │ │ │ │ ├── PollOfferComposer.cs │ │ │ │ └── Questions │ │ │ │ │ └── QuestionParserComposer.cs │ │ │ ├── Session │ │ │ │ ├── CantConnectComposer.cs │ │ │ │ ├── CloseConnectionComposer.cs │ │ │ │ ├── FlatAccessibleComposer.cs │ │ │ │ ├── OpenConnectionComposer.cs │ │ │ │ ├── RoomForwardComposer.cs │ │ │ │ └── RoomReadyComposer.cs │ │ │ └── Settings │ │ │ │ ├── FlatControllerAddedComposer.cs │ │ │ │ ├── FlatControllerRemovedComposer.cs │ │ │ │ ├── GetRoomBannedUsersComposer.cs │ │ │ │ ├── GetRoomFilterListComposer.cs │ │ │ │ ├── RoomMuteSettingsComposer.cs │ │ │ │ ├── RoomRightsListComposer.cs │ │ │ │ ├── RoomSettingsDataComposer.cs │ │ │ │ ├── RoomSettingsSavedComposer.cs │ │ │ │ └── UnbanUserFromRoomComposer.cs │ │ ├── ServerPacket.cs │ │ ├── ServerPacketHeader.cs │ │ ├── Sound │ │ │ ├── SoundSettingsComposer.cs │ │ │ └── TraxSongInfoComposer.cs │ │ ├── Talents │ │ │ └── TalentTrackComposer.cs │ │ └── Users │ │ │ ├── GetRelationshipsComposer.cs │ │ │ ├── HabboGroupBadgesComposer.cs │ │ │ ├── HabboUserBadgesComposer.cs │ │ │ ├── IgnoredUsersComposer.cs │ │ │ ├── NameChangeUpdateComposer.cs │ │ │ ├── ProfileInformationComposer.cs │ │ │ ├── RespectNotificationComposer.cs │ │ │ ├── ScrSendUserInfoComposer.cs │ │ │ ├── UpdateUsernameComposer.cs │ │ │ └── UserTagsComposer.cs │ └── PacketManager.cs └── RCON │ ├── Commands │ ├── CommandManager.cs │ ├── Hotel │ │ ├── ReloadBansCommand.cs │ │ ├── ReloadCatalogCommand.cs │ │ ├── ReloadFilterCommand.cs │ │ ├── ReloadItemsCommand.cs │ │ ├── ReloadNavigatorCommand.cs │ │ ├── ReloadQuestsCommand.cs │ │ ├── ReloadRanksCommand.cs │ │ ├── ReloadServerSettingsCommand.cs │ │ └── ReloadVouchersCommand.cs │ ├── IRCONCommand.cs │ └── User │ │ ├── AlertUserCommand.cs │ │ ├── DisconnectUserCommand.cs │ │ ├── GiveUserBadgeCommand.cs │ │ ├── GiveUserCurrencyCommand.cs │ │ ├── ProgressUserAchievementCommand.cs │ │ ├── ReloadUserCurrencyCommand.cs │ │ ├── ReloadUserMottoCommand.cs │ │ ├── ReloadUserRankCommand.cs │ │ ├── ReloadUserVIPRankCommand.cs │ │ ├── SyncUserCurrencyCommand.cs │ │ ├── TakeUserBadgeCommand.cs │ │ └── TakeUserCurrencyCommand.cs │ ├── RCONConnection.cs │ └── RCONSocket.cs ├── Config ├── config.ini └── figuredata.xml ├── Core ├── ConfigurationData.cs ├── ConsoleCommands.cs ├── ExceptionLogger.cs ├── FigureData │ ├── FigureDataManager.cs │ └── Types │ │ ├── Color.cs │ │ ├── FigureSet.cs │ │ ├── Palette.cs │ │ ├── Part.cs │ │ ├── Set.cs │ │ ├── SetType.cs │ │ └── SetTypeUtility.cs ├── Language │ └── LanguageManager.cs ├── ServerStatusUpdater.cs └── Settings │ └── SettingsManager.cs ├── Database ├── Adapter │ ├── NormalQueryReactor.cs │ └── QueryAdapter.cs ├── DatabaseConnection.cs ├── DatabaseManager.cs └── Interfaces │ ├── IDatabaseClient.cs │ ├── IQueryAdapter.cs │ └── IRegularQueryAdapter.cs ├── GlobalSuppressions.cs ├── HabboHotel ├── Achievements │ ├── Achievement.cs │ ├── AchievementLevel.cs │ ├── AchievementLevelFactory.cs │ ├── AchievementManager.cs │ └── UserAchievement.cs ├── Badges │ ├── BadgeDefinition.cs │ └── BadgeManager.cs ├── Bots │ └── BotManager.cs ├── Cache │ ├── CacheManager.cs │ ├── Process │ │ └── ProcessComponent.cs │ └── Type │ │ └── UserCache.cs ├── Catalog │ ├── CatalogBot.cs │ ├── CatalogDeal.cs │ ├── CatalogItem.cs │ ├── CatalogManager.cs │ ├── CatalogPage.cs │ ├── CatalogPromotion.cs │ ├── Clothing │ │ ├── ClothingItem.cs │ │ └── ClothingManager.cs │ ├── Marketplace │ │ ├── MarketOffer.cs │ │ └── MarketplaceManager.cs │ ├── Pets │ │ ├── PetRace.cs │ │ └── PetRaceManager.cs │ ├── Utilities │ │ ├── BotUtility.cs │ │ ├── ItemUtility.cs │ │ └── PetUtility.cs │ └── Vouchers │ │ ├── Voucher.cs │ │ ├── VoucherManager.cs │ │ ├── VoucherType.cs │ │ └── VoucherUtility.cs ├── Game.cs ├── GameClients │ ├── GameClient.cs │ └── GameClientManager.cs ├── Games │ ├── GameData.cs │ └── GameDataManager.cs ├── Groups │ ├── BadgePartUtility.cs │ ├── Group.cs │ ├── GroupBadgeParts.cs │ ├── GroupColours.cs │ ├── GroupManager.cs │ ├── GroupMember.cs │ └── GroupType.cs ├── Items │ ├── Data │ │ ├── Moodlight │ │ │ ├── MoodlightData.cs │ │ │ └── MoodlightPreset.cs │ │ └── Toner │ │ │ └── TonerData.cs │ ├── InteractionType.cs │ ├── Interactor │ │ ├── IFurniInteractor.cs │ │ ├── InteractorAlert.cs │ │ ├── InteractorBanzaiScoreCounter.cs │ │ ├── InteractorBanzaiTimer.cs │ │ ├── InteractorCannon.cs │ │ ├── InteractorCounter.cs │ │ ├── InteractorDice.cs │ │ ├── InteractorFreezeTile.cs │ │ ├── InteractorFreezeTimer.cs │ │ ├── InteractorGate.cs │ │ ├── InteractorGenericSwitch.cs │ │ ├── InteractorHabboWheel.cs │ │ ├── InteractorHopper.cs │ │ ├── InteractorLoveLock.cs │ │ ├── InteractorLoveShuffler.cs │ │ ├── InteractorMannequin.cs │ │ ├── InteractorOneWayGate.cs │ │ ├── InteractorPuzzleBox.cs │ │ ├── InteractorScoreCounter.cs │ │ ├── InteractorScoreboard.cs │ │ ├── InteractorSpinningBottle.cs │ │ ├── InteractorSwitch.cs │ │ ├── InteractorTeleport.cs │ │ ├── InteractorVendor.cs │ │ └── InteractorWired.cs │ ├── Item.cs │ ├── ItemBehaviourUtility.cs │ ├── ItemData.cs │ ├── ItemDataManager.cs │ ├── ItemFactory.cs │ ├── ItemHopperFinder.cs │ ├── ItemLoader.cs │ ├── ItemTeleporterFinder.cs │ ├── Televisions │ │ ├── TelevisionItem.cs │ │ └── TelevisionManager.cs │ └── Wired │ │ ├── Boxes │ │ ├── Add-ons │ │ │ └── AddonRandomEffectBox.cs │ │ ├── Conditions │ │ │ ├── ActorHasHandItemBox.cs │ │ │ ├── ActorIsInTeamBox.cs │ │ │ ├── FurniDoesntMatchStateAndPositionBox.cs │ │ │ ├── FurniHasFurniBox.cs │ │ │ ├── FurniHasNoFurniBox.cs │ │ │ ├── FurniHasNoUsersBox.cs │ │ │ ├── FurniHasUsersBox.cs │ │ │ ├── FurniMatchStateAndPositionBox.cs │ │ │ ├── IsGroupMemberBox.cs │ │ │ ├── IsNotGroupMemberBox.cs │ │ │ ├── IsNotWearingBadgeBox.cs │ │ │ ├── IsNotWearingFXBox.cs │ │ │ ├── IsWearingBadgeBox.cs │ │ │ ├── IsWearingFXBox.cs │ │ │ ├── TriggererNotOnFurniBox.cs │ │ │ ├── TriggererOnFurniBox.cs │ │ │ ├── UserCountDoesntInRoomBox.cs │ │ │ └── UserCountInRoomBox.cs │ │ ├── Effects │ │ │ ├── AddActorToTeamBox.cs │ │ │ ├── BotChangesClothesBox.cs │ │ │ ├── BotCommunicatesToAllBox.cs │ │ │ ├── BotFollowsUserBox.cs │ │ │ ├── BotGivesHandItemBox.cs │ │ │ ├── BotMovesToFurniBox.cs │ │ │ ├── ExecuteWiredStacksBox.cs │ │ │ ├── GiveRewardBox.cs │ │ │ ├── GiveUserBadgeBox.cs │ │ │ ├── KickUserBox.cs │ │ │ ├── MatchPositionBox.cs │ │ │ ├── MoveAndRotateBox.cs │ │ │ ├── MoveFurniToUserBox.cs │ │ │ ├── MuteTriggererBox.cs │ │ │ ├── RegenerateMapBox.cs │ │ │ ├── RemoveActorFromTeamBox.cs │ │ │ ├── SetRollerSpeedBox.cs │ │ │ ├── ShowMessageBox.cs │ │ │ ├── TeleportBotToFurniBox.cs │ │ │ ├── TeleportUserBox.cs │ │ │ └── ToggleFurniBox.cs │ │ └── Triggers │ │ │ ├── GameEndsBox.cs │ │ │ ├── GameStartsBox.cs │ │ │ ├── RepeaterBox.cs │ │ │ ├── RoomEnterBox.cs │ │ │ ├── StateChangesBox.cs │ │ │ ├── UserFurniCollision.cs │ │ │ ├── UserSaysBox.cs │ │ │ ├── UserSaysCommandBox.cs │ │ │ ├── UserWalksOffBox.cs │ │ │ └── UserWalksOnBox.cs │ │ ├── IWiredCycle.cs │ │ ├── IWiredItem.cs │ │ ├── WiredBoxType.cs │ │ └── WiredBoxTypeUtility.cs ├── LandingView │ ├── LandingViewManager.cs │ └── Promotions │ │ └── Promotion.cs ├── Moderation │ ├── BanTypeUtility.cs │ ├── ModerationBan.cs │ ├── ModerationBanType.cs │ ├── ModerationManager.cs │ ├── ModerationPresetActionMessages.cs │ ├── ModerationPresetActions.cs │ └── ModerationTicket.cs ├── Navigator │ ├── FeaturedRoom.cs │ ├── NavigatorCategoryType.cs │ ├── NavigatorCategoryTypeUtility.cs │ ├── NavigatorHandler.cs │ ├── NavigatorManager.cs │ ├── NavigatorSearchAllowance.cs │ ├── NavigatorSearchAllowanceUtility.cs │ ├── NavigatorViewMode.cs │ ├── NavigatorViewModeUtility.cs │ ├── SearchResultList.cs │ └── TopLevelItem.cs ├── Permissions │ ├── Permission.cs │ ├── PermissionCommand.cs │ ├── PermissionGroup.cs │ └── PermissionManager.cs ├── Quests │ ├── Quest.cs │ ├── QuestManager.cs │ ├── QuestType.cs │ └── QuestTypeUtillity.cs ├── Rewards │ ├── Reward.cs │ ├── RewardManager.cs │ ├── RewardType.cs │ └── RewardTypeUtility.cs ├── Rooms │ ├── AI │ │ ├── BotAI.cs │ │ ├── BotAIType.cs │ │ ├── DatabaseUpdateState.cs │ │ ├── Pet.cs │ │ ├── Responses │ │ │ └── BotResponse.cs │ │ ├── RoomBot.cs │ │ ├── Speech │ │ │ └── RandomSpeech.cs │ │ └── Types │ │ │ ├── BartenderBot.cs │ │ │ ├── GenericBot.cs │ │ │ └── PetBot.cs │ ├── ByteToItemEffectEnum.cs │ ├── Chat │ │ ├── ChatManager.cs │ │ ├── Commands │ │ │ ├── Administrator │ │ │ │ ├── BubbleCommand.cs │ │ │ │ ├── CarryCommand.cs │ │ │ │ ├── DeleteGroupCommand.cs │ │ │ │ ├── HALCommand.cs │ │ │ │ └── UpdateCommand.cs │ │ │ ├── CommandManager.cs │ │ │ ├── Events │ │ │ │ └── EventAlertCommand.cs │ │ │ ├── IChatCommand.cs │ │ │ ├── Moderator │ │ │ │ ├── AlertCommand.cs │ │ │ │ ├── BanCommand.cs │ │ │ │ ├── DisableForcedFXCommand.cs │ │ │ │ ├── DisconnectCommand.cs │ │ │ │ ├── FlagUserCommand.cs │ │ │ │ ├── Fun │ │ │ │ │ ├── AllAroundMeCommand.cs │ │ │ │ │ ├── AllEyesOnMeCommand.cs │ │ │ │ │ ├── CoordsCommand.cs │ │ │ │ │ ├── FastwalkCommand.cs │ │ │ │ │ ├── ForceSitCommand.cs │ │ │ │ │ ├── FreezeCommand.cs │ │ │ │ │ ├── MakeSayCommand.cs │ │ │ │ │ ├── MassDanceCommand.cs │ │ │ │ │ ├── MassEnableCommand.cs │ │ │ │ │ ├── OverrideCommand.cs │ │ │ │ │ ├── SummonCommand.cs │ │ │ │ │ ├── SuperFastwalkCommand.cs │ │ │ │ │ ├── SuperPullCommand.cs │ │ │ │ │ ├── TeleportCommand.cs │ │ │ │ │ └── UnFreezeCommand.cs │ │ │ │ ├── GOTOCommand.cs │ │ │ │ ├── GiveBadgeCommand.cs │ │ │ │ ├── GiveCommand.cs │ │ │ │ ├── HotelAlertCommand.cs │ │ │ │ ├── IPBanCommand.cs │ │ │ │ ├── IgnoreWhispersCommand.cs │ │ │ │ ├── KickCommand.cs │ │ │ │ ├── MIPCommand.cs │ │ │ │ ├── MassBadgeCommand.cs │ │ │ │ ├── MuteCommand.cs │ │ │ │ ├── RoomAlertCommand.cs │ │ │ │ ├── RoomBadgeCommand.cs │ │ │ │ ├── RoomKickCommand.cs │ │ │ │ ├── RoomMuteCommand.cs │ │ │ │ ├── RoomUnmuteCommand.cs │ │ │ │ ├── StaffAlertCommand.cs │ │ │ │ ├── TradeBanCommand.cs │ │ │ │ ├── UnmuteCommand.cs │ │ │ │ └── UserInfoCommand.cs │ │ │ └── User │ │ │ │ ├── ConvertCreditsCommand.cs │ │ │ │ ├── DNDCommand.cs │ │ │ │ ├── DisableDiagonalCommand.cs │ │ │ │ ├── DisableGiftsCommand.cs │ │ │ │ ├── DisableMimicCommand.cs │ │ │ │ ├── DisableWhispersCommand.cs │ │ │ │ ├── EjectAllCommand.cs │ │ │ │ ├── EmptyItems.cs │ │ │ │ ├── FlagMeCommand.cs │ │ │ │ ├── Fun │ │ │ │ ├── DanceCommand.cs │ │ │ │ ├── EnableCommand.cs │ │ │ │ ├── FacelessCommand.cs │ │ │ │ ├── FollowCommand.cs │ │ │ │ ├── MimicCommand.cs │ │ │ │ ├── MoonwalkCommand.cs │ │ │ │ ├── PetCommand.cs │ │ │ │ ├── PullCommand.cs │ │ │ │ ├── PushCommand.cs │ │ │ │ └── SuperPushCommand.cs │ │ │ │ ├── InfoCommand.cs │ │ │ │ ├── KickBotsCommand.cs │ │ │ │ ├── KickPetsCommand.cs │ │ │ │ ├── LayCommand.cs │ │ │ │ ├── MuteBotsCommand.cs │ │ │ │ ├── MutePetsCommand.cs │ │ │ │ ├── PickAllCommand.cs │ │ │ │ ├── RegenMaps.cs │ │ │ │ ├── RoomCommand.cs │ │ │ │ ├── SellRoomCommand.cs │ │ │ │ ├── SetMaxCommand.cs │ │ │ │ ├── SetSpeedCommand.cs │ │ │ │ ├── SitCommand.cs │ │ │ │ ├── StandCommand.cs │ │ │ │ ├── StatsCommand.cs │ │ │ │ └── UnloadCommand.cs │ │ ├── Emotions │ │ │ ├── ChatEmotions.cs │ │ │ └── ChatEmotionsManager.cs │ │ ├── Filter │ │ │ ├── WordFilter.cs │ │ │ └── WordFilterManager.cs │ │ ├── Logs │ │ │ ├── ChatlogEntry.cs │ │ │ └── ChatlogManager.cs │ │ ├── Pets │ │ │ ├── Commands │ │ │ │ ├── PetCommand.cs │ │ │ │ └── PetCommandManager.cs │ │ │ └── Locale │ │ │ │ └── PetLocale.cs │ │ └── Styles │ │ │ ├── ChatStyle.cs │ │ │ └── ChatStyleManager.cs │ ├── DynamicRoomModel.cs │ ├── GameMap.cs │ ├── Games │ │ ├── Banzai │ │ │ └── BattleBanzai.cs │ │ ├── Football │ │ │ └── Soccer.cs │ │ ├── Freeze │ │ │ ├── Freeze.cs │ │ │ └── FreezePowerUp.cs │ │ ├── Game.cs │ │ ├── GameItemHandler.cs │ │ └── Teams │ │ │ ├── Team.cs │ │ │ └── Teams.cs │ ├── Instance │ │ ├── BansComponent.cs │ │ ├── FilterComponent.cs │ │ ├── TradingComponent.cs │ │ └── WiredComponent.cs │ ├── ItemEffectType.cs │ ├── PathFinding │ │ ├── Coord.cs │ │ ├── MinHeap.cs │ │ ├── PathFinder.cs │ │ ├── PathFinderNode.cs │ │ ├── Rotation.cs │ │ ├── Vector2D.cs │ │ └── Vector3D.cs │ ├── Room.cs │ ├── RoomAccess.cs │ ├── RoomAccessUtility.cs │ ├── RoomAppender.cs │ ├── RoomData.cs │ ├── RoomFactory.cs │ ├── RoomItemHandling.cs │ ├── RoomManager.cs │ ├── RoomModel.cs │ ├── RoomPromotion.cs │ ├── RoomUser.cs │ ├── RoomUserManager.cs │ ├── SquareState.cs │ └── Trading │ │ ├── Trade.cs │ │ └── TradeUser.cs ├── Subscriptions │ ├── SubscriptionData.cs │ └── SubscriptionManager.cs ├── Talents │ ├── TalentTrackLevel.cs │ ├── TalentTrackManager.cs │ ├── TalentTrackSubLevel.cs │ └── TalentType.cs └── Users │ ├── Authenticator │ ├── Authenticator.cs │ └── IncorrectLoginException.cs │ ├── Badges │ ├── Badge.cs │ └── BadgeComponent.cs │ ├── Calendar │ └── CalendarComponent.cs │ ├── Clothing │ ├── ClothingComponent.cs │ └── Parts │ │ └── ClothingParts.cs │ ├── Effects │ ├── AvatarEffect.cs │ ├── AvatarEffectFactory.cs │ └── EffectsComponent.cs │ ├── Habbo.cs │ ├── HabboStats.cs │ ├── Ignores │ └── IgnoresComponent.cs │ ├── Inventory │ ├── Bots │ │ ├── Bot.cs │ │ └── BotLoader.cs │ ├── InventoryComponent.cs │ └── Pets │ │ └── PetLoader.cs │ ├── Messenger │ ├── FriendBar │ │ ├── FriendBarState.cs │ │ └── FriendBarStateUtility.cs │ ├── HabboMessenger.cs │ ├── MessengerBuddy.cs │ ├── MessengerEventTypes.cs │ ├── MessengerEventTypesUtility.cs │ ├── MessengerMessageErrors.cs │ ├── MessengerMessageErrorsUtility.cs │ ├── MessengerRequest.cs │ ├── SearchResult.cs │ └── SearchResultFactory.cs │ ├── Navigator │ └── SavedSearches │ │ ├── SavedSearch.cs │ │ └── SearchesComponent.cs │ ├── Permissions │ └── PermissionComponent.cs │ ├── Process │ └── ProcessComponent.cs │ ├── Relationships │ └── Relationship.cs │ └── UserData │ ├── UserData.cs │ └── UserDataFactory.cs ├── Plus Emulator.csproj ├── Plus Emulator.sln ├── PlusEnvironment.cs ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Settings.Designer.cs └── Settings.settings ├── README.md ├── Resources ├── README.txt ├── RELEASE NOTES.txt ├── SQLs │ ├── Behaviour Changes.sql │ ├── Original Database.sql │ └── SQLs.sql └── libs │ ├── AStar.dll │ ├── HabboEncryption.dll │ └── MoreLinq.dll ├── Utilities ├── Collections │ └── ObjectPool.cs ├── Converter.cs ├── Enclosure │ ├── Algorithm │ │ └── FieldUpdate.cs │ ├── GameField.cs │ └── PointField.cs ├── HabboEncoding.cs ├── RandomNumber.cs ├── Randomizer.cs ├── StringCharFilter.cs ├── TextHandling.cs └── UnixTimestamp.cs ├── app.config ├── icon.ico └── packages.config /Communication/ConnectionManager/ConnectionState.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.ConnectionManager 2 | { 3 | public enum ConnectionState 4 | { 5 | Open = 0, 6 | Closed = 1, 7 | MalfunctioningPacket = 2 8 | } 9 | } -------------------------------------------------------------------------------- /Communication/ConnectionManager/GameSocketManagerStatics.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.ConnectionManager 2 | { 3 | public static class GameSocketManagerStatics 4 | { 5 | public static readonly int BufferSize = 8192; 6 | public static readonly int MaxPacketSize = BufferSize - 4; 7 | } 8 | } -------------------------------------------------------------------------------- /Communication/ConnectionManager/IDataParser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Communication.ConnectionManager 4 | { 5 | public interface IDataParser : IDisposable, ICloneable 6 | { 7 | void HandlePacketData(byte[] packet); 8 | } 9 | } -------------------------------------------------------------------------------- /Communication/ConnectionManager/Socket Exceptions/SocketInitializationException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Communication.ConnectionManager.Socket_Exceptions 4 | { 5 | public class SocketInitializationException : Exception 6 | { 7 | public SocketInitializationException(string message) 8 | : base(message) 9 | { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Encryption/Crypto/RSA/Pkcs1PadType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Encryption.Crypto.RSA 2 | { 3 | public enum Pkcs1PadType 4 | { 5 | FullByte = 1, 6 | RandomByte = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Communication/Encryption/Keys/RSAKeys.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Encryption.Keys 2 | { 3 | public class RSAKeys 4 | { 5 | public string N = "5DE90F8BEB8B72DE3DEA30CD1A8D5BC589CD4DD5FC67761BB2C4F1A3DA94CA3B61F92637A3B52AA5000E9FCB1A3FC390972418BEEB068A81CBABEE844D0879B467F4826F50D91E61B8EB9D8D5BA149073E2DEFD79DF6B023FD3DE358777350D3A8E43A18F6D5B7BD513A11C1961AA95461B32D0B95D03C07449E59F02AAB7E93"; 6 | public string D = "3E9B5FB29D07A1E97E9C2088BC5E3D2E5BDE33E3FD9A4EBD21D8A117E70DDC2796A6197A6D2371C3555F1532117FD7B5BA18107F4759B1ABDD1D49AD88B051221E14045BA0CF694117AD2CF6285C4622CC0CF3A9311C6F56B42E9B5CB82AFF2456223BC5C3B04CB397DD82693B9A30831E180257F5FBCA7968B462181ADE211B"; 7 | public string E = "3"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Communication/Interfaces/IServerPacket.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Interfaces 2 | { 3 | public interface IServerPacket 4 | { 5 | byte[] GetBytes(); 6 | } 7 | } -------------------------------------------------------------------------------- /Communication/Packets/IPacketEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Incoming; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets 5 | { 6 | public interface IPacketEvent 7 | { 8 | void Parse(GameClient session, ClientPacket packet); 9 | } 10 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Avatar/GetWardrobeEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Avatar; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Avatar 5 | { 6 | class GetWardrobeEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new WardrobeComposer(session.GetHabbo().Id)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetCatalogIndexEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Catalog; 3 | using Plus.Communication.Packets.Outgoing.BuildersClub; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Catalog 6 | { 7 | public class GetCatalogIndexEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | session.SendPacket(new CatalogIndexComposer(session, PlusEnvironment.GetGame().GetCatalog().GetPages())); 12 | session.SendPacket(new CatalogItemDiscountComposer()); 13 | session.SendPacket(new BCBorrowedItemsComposer()); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetCatalogModeEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Catalog 4 | { 5 | class GetCatalogModeEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | // string mode = packet.PopString(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetCatalogRoomPromotionEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.Communication.Packets.Outgoing.Catalog; 4 | using Plus.HabboHotel.GameClients; 5 | using Plus.HabboHotel.Rooms; 6 | 7 | namespace Plus.Communication.Packets.Incoming.Catalog 8 | { 9 | class GetCatalogRoomPromotionEvent : IPacketEvent 10 | { 11 | public void Parse(GameClient session, ClientPacket packet) 12 | { 13 | List rooms = RoomFactory.GetRoomsDataByOwnerSortByName(session.GetHabbo().Id); 14 | 15 | session.SendPacket(new GetCatalogRoomPromotionComposer(rooms)); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetClubGiftsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Catalog; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Catalog 5 | { 6 | class GetClubGiftsEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new ClubGiftsComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetGiftWrappingConfigurationEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Catalog; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Catalog 5 | { 6 | public class GetGiftWrappingConfigurationEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new GiftWrappingConfigurationComposer()); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetGroupFurniConfigEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Catalog; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Catalog 5 | { 6 | class GetGroupFurniConfigEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new GroupFurniConfigComposer(PlusEnvironment.GetGame().GetGroupManager().GetGroupsForUser(session.GetHabbo().Id))); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetMarketplaceConfigurationEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Catalog; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Catalog 5 | { 6 | public class GetMarketplaceConfigurationEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new MarketplaceConfigurationComposer()); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetPromotableRoomsEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections.Generic; 3 | 4 | using Plus.HabboHotel.Rooms; 5 | using Plus.HabboHotel.GameClients; 6 | using Plus.Communication.Packets.Outgoing.Catalog; 7 | using Plus.Utilities; 8 | 9 | namespace Plus.Communication.Packets.Incoming.Catalog 10 | { 11 | class GetPromotableRoomsEvent : IPacketEvent 12 | { 13 | public void Parse(GameClient session, ClientPacket packet) 14 | { 15 | List rooms = RoomFactory.GetRoomsDataByOwnerSortByName(session.GetHabbo().Id); 16 | 17 | rooms = rooms.Where(x => x.Promotion == null || x.Promotion.TimestampExpires < UnixTimestamp.GetNow()).ToList(); 18 | 19 | session.SendPacket(new PromotableRoomsComposer(rooms)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetRecyclerRewardsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Catalog; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Catalog 5 | { 6 | public class GetRecyclerRewardsEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new RecyclerRewardsComposer()); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Catalog/GetSellablePetBreedsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.HabboHotel.Items; 3 | using Plus.Communication.Packets.Outgoing.Catalog; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Catalog 6 | { 7 | public class GetSellablePetBreedsEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | string type = packet.PopString(); 12 | 13 | ItemData item = PlusEnvironment.GetGame().GetItemManager().GetItemByName(type); 14 | if (item == null) 15 | return; 16 | 17 | int petId = item.BehaviourData; 18 | 19 | session.SendPacket(new SellablePetBreedsComposer(type, petId, PlusEnvironment.GetGame().GetCatalog().GetPetRaceManager().GetRacesForRaceId(petId))); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/GameCenter/Game2GetWeeklyLeaderboardEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Games; 2 | 3 | namespace Plus.Communication.Packets.Incoming.GameCenter 4 | { 5 | class Game2GetWeeklyLeaderboardEvent : IPacketEvent 6 | { 7 | public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) 8 | { 9 | int GameId = Packet.PopInt(); 10 | 11 | GameData GameData = null; 12 | if (PlusEnvironment.GetGame().GetGameDataManager().TryGetGame(GameId, out GameData)) 13 | { 14 | //Code 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/GameCenter/GetGameListingEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.HabboHotel.Games; 4 | using Plus.Communication.Packets.Outgoing.GameCenter; 5 | 6 | namespace Plus.Communication.Packets.Incoming.GameCenter 7 | { 8 | class GetGameListingEvent : IPacketEvent 9 | { 10 | public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) 11 | { 12 | ICollection Games = PlusEnvironment.GetGame().GetGameDataManager().GameData; 13 | 14 | Session.SendPacket(new GameListComposer(Games)); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/GameCenter/GetPlayableGamesEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.GameCenter; 2 | 3 | namespace Plus.Communication.Packets.Incoming.GameCenter 4 | { 5 | class GetPlayableGamesEvent : IPacketEvent 6 | { 7 | public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) 8 | { 9 | int GameId = Packet.PopInt(); 10 | 11 | Session.SendPacket(new GameAccountStatusComposer(GameId)); 12 | Session.SendPacket(new PlayableGamesComposer(GameId)); 13 | Session.SendPacket(new GameAchievementListComposer(Session, PlusEnvironment.GetGame().GetAchievementManager().GetGameAchievements(GameId), GameId)); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/GameCenter/InitializeGameCenterEvent.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Incoming.GameCenter 2 | { 3 | class InitializeGameCenterEvent : IPacketEvent 4 | { 5 | public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) 6 | { 7 | 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Groups/GetBadgeEditorPartsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Groups; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Groups 5 | { 6 | class GetBadgeEditorPartsEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new BadgeEditorPartsComposer( 11 | PlusEnvironment.GetGame().GetGroupManager().BadgeBases, 12 | PlusEnvironment.GetGame().GetGroupManager().BadgeSymbols, 13 | PlusEnvironment.GetGame().GetGroupManager().BadgeBaseColours, 14 | PlusEnvironment.GetGame().GetGroupManager().BadgeSymbolColours, 15 | PlusEnvironment.GetGame().GetGroupManager().BadgeBackColours)); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Groups/GetGroupCreationWindowEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections.Generic; 3 | 4 | using Plus.HabboHotel.Rooms; 5 | using Plus.Communication.Packets.Outgoing.Groups; 6 | using Plus.HabboHotel.GameClients; 7 | 8 | namespace Plus.Communication.Packets.Incoming.Groups 9 | { 10 | class GetGroupCreationWindowEvent : IPacketEvent 11 | { 12 | public void Parse(GameClient session, ClientPacket packet) 13 | { 14 | if (session == null) 15 | return; 16 | 17 | List rooms = RoomFactory.GetRoomsDataByOwnerSortByName(session.GetHabbo().Id).Where(x => x.Group == null).ToList(); 18 | 19 | session.SendPacket(new GroupCreationWindowComposer(rooms)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Groups/GetGroupInfoEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Groups; 2 | using Plus.Communication.Packets.Outgoing.Groups; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Groups 6 | { 7 | class GetGroupInfoEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | int groupId = packet.PopInt(); 12 | bool newWindow = packet.PopBoolean(); 13 | 14 | if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(groupId, out Group group)) 15 | return; 16 | 17 | session.SendPacket(new GroupInfoComposer(group, session, newWindow)); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Groups/ManageGroupEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Groups; 2 | using Plus.Communication.Packets.Outgoing.Groups; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Groups 6 | { 7 | class ManageGroupEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | int groupId = packet.PopInt(); 12 | 13 | if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(groupId, out Group group)) 14 | return; 15 | 16 | if (group.CreatorId != session.GetHabbo().Id && !session.GetHabbo().GetPermissions().HasRight("group_management_override")) 17 | return; 18 | 19 | session.SendPacket(new ManageGroupComposer(group, group.Badge.Replace("b", "").Split('s'))); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Handshake/GetClientVersionEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Handshake 4 | { 5 | public class GetClientVersionEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | string build = packet.PopString(); 10 | 11 | if (PlusEnvironment.SWFRevision != build) 12 | PlusEnvironment.SWFRevision = build; 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Handshake/InfoRetrieveEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Handshake; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Handshake 5 | { 6 | public class InfoRetrieveEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new UserObjectComposer(session.GetHabbo())); 11 | session.SendPacket(new UserPerksComposer(session.GetHabbo())); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Handshake/InitCryptoEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Encryption; 2 | using Plus.Communication.Packets.Outgoing.Handshake; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Handshake 6 | { 7 | public class InitCryptoEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | session.SendPacket(new InitCryptoComposer(HabboEncryptionV2.GetRsaDiffieHellmanPrimeKey(), HabboEncryptionV2.GetRsaDiffieHellmanGeneratorKey())); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Handshake/PingEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Handshake 4 | { 5 | class PingEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | session.PingCount = 0; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Handshake/SSOTicketEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Handshake 4 | { 5 | public class SsoTicketEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | if (session == null || session.Rc4Client == null || session.GetHabbo() != null) 10 | return; 11 | 12 | string sso = packet.PopString(); 13 | if (string.IsNullOrEmpty(sso) || sso.Length < 15) 14 | return; 15 | 16 | session.TryAuthenticate(sso); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Handshake/UniqueIDEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Handshake; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Handshake 5 | { 6 | public class UniqueIdEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | packet.PopString(); 11 | string machineId = packet.PopString(); 12 | 13 | session.MachineId = machineId; 14 | 15 | session.SendPacket(new SetUniqueIdComposer(machineId)); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Help/GetSanctionStatusEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Help 4 | { 5 | class GetSanctionStatusEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | //Session.SendMessage(new SanctionStatusComposer()); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Help/OnBullyClickEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Help 4 | { 5 | class OnBullyClickEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | //I am a very boring packet. 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Help/SendBullyReportEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Help; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Help 5 | { 6 | class SendBullyReportEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new SendBullyReportComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Inventory/Achievements/GetAchievementsEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using Plus.Communication.Packets.Outgoing.Inventory.Achievements; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Inventory.Achievements 6 | { 7 | class GetAchievementsEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | session.SendPacket(new AchievementsComposer(session, PlusEnvironment.GetGame().GetAchievementManager().Achievements.Values.ToList())); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Inventory/Badges/GetBadgesEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Inventory.Badges; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Inventory.Badges 5 | { 6 | class GetBadgesEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new BadgesComposer(session)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Inventory/Bots/GetBotInventoryEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.HabboHotel.Users.Inventory.Bots; 4 | using Plus.Communication.Packets.Outgoing.Inventory.Bots; 5 | using Plus.HabboHotel.GameClients; 6 | 7 | namespace Plus.Communication.Packets.Incoming.Inventory.Bots 8 | { 9 | class GetBotInventoryEvent : IPacketEvent 10 | { 11 | public void Parse(GameClient session, ClientPacket packet) 12 | { 13 | if (session.GetHabbo().GetInventoryComponent() == null) 14 | return; 15 | 16 | ICollection bots = session.GetHabbo().GetInventoryComponent().GetBots(); 17 | session.SendPacket(new BotInventoryComposer(bots)); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Inventory/Pets/GetPetInventoryEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.HabboHotel.Rooms.AI; 4 | using Plus.Communication.Packets.Outgoing.Inventory.Pets; 5 | using Plus.HabboHotel.GameClients; 6 | 7 | namespace Plus.Communication.Packets.Incoming.Inventory.Pets 8 | { 9 | class GetPetInventoryEvent : IPacketEvent 10 | { 11 | public void Parse(GameClient session, ClientPacket packet) 12 | { 13 | if (session.GetHabbo().GetInventoryComponent() == null) 14 | return; 15 | 16 | ICollection pets = session.GetHabbo().GetInventoryComponent().GetPets(); 17 | session.SendPacket(new PetInventoryComposer(pets)); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Inventory/Purse/GetCreditsInfoEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Inventory.Purse; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Inventory.Purse 5 | { 6 | class GetCreditsInfoEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new CreditBalanceComposer(session.GetHabbo().Credits)); 11 | session.SendPacket(new ActivityPointsComposer(session.GetHabbo().Duckets, session.GetHabbo().Diamonds, session.GetHabbo().GOTWPoints)); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Inventory/Purse/GetHabboClubWindowEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Inventory.Purse 4 | { 5 | class GetHabboClubWindowEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | // Session.SendNotification("Habbo Club is free for all members, enjoy!"); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/LandingView/GetPromoArticlesEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Plus.HabboHotel.LandingView.Promotions; 3 | using Plus.Communication.Packets.Outgoing.LandingView; 4 | using Plus.HabboHotel.GameClients; 5 | 6 | namespace Plus.Communication.Packets.Incoming.LandingView 7 | { 8 | class GetPromoArticlesEvent : IPacketEvent 9 | { 10 | public void Parse(GameClient session, ClientPacket packet) 11 | { 12 | ICollection landingPromotions = PlusEnvironment.GetGame().GetLandingManager().GetPromotionItems(); 13 | 14 | session.SendPacket(new PromoArticlesComposer(landingPromotions)); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Marketplace/GetMarketplaceCanMakeOfferEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Marketplace; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Marketplace 5 | { 6 | class GetMarketplaceCanMakeOfferEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | int errorCode = session.GetHabbo().TradingLockExpiry > 0 ? 6 : 1; 11 | 12 | session.SendPacket(new MarketplaceCanMakeOfferResultComposer(errorCode)); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Marketplace/GetOwnOffersEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Marketplace; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Marketplace 5 | { 6 | class GetOwnOffersEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new MarketPlaceOwnOffersComposer(session.GetHabbo().Id)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Messenger/DeclineBuddyEvent.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Incoming.Messenger 2 | { 3 | class DeclineBuddyEvent : IPacketEvent 4 | { 5 | public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet) 6 | { 7 | if (session == null || session.GetHabbo() == null || session.GetHabbo().GetMessenger() == null) 8 | return; 9 | 10 | bool declineAll = packet.PopBoolean(); 11 | packet.PopInt(); //amount 12 | 13 | if (!declineAll) 14 | { 15 | int requestId = packet.PopInt(); 16 | session.GetHabbo().GetMessenger().HandleRequest(requestId); 17 | } 18 | else 19 | session.GetHabbo().GetMessenger().HandleAllRequests(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Messenger/FriendListUpdateEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Messenger 4 | { 5 | class FriendListUpdateEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Messenger/GetBuddyRequestsEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections.Generic; 3 | 4 | using Plus.HabboHotel.Users.Messenger; 5 | using Plus.Communication.Packets.Outgoing.Messenger; 6 | using Plus.HabboHotel.GameClients; 7 | 8 | namespace Plus.Communication.Packets.Incoming.Messenger 9 | { 10 | class GetBuddyRequestsEvent : IPacketEvent 11 | { 12 | public void Parse(GameClient session, ClientPacket packet) 13 | { 14 | ICollection requests = session.GetHabbo().GetMessenger().GetRequests().ToList(); 15 | 16 | session.SendPacket(new BuddyRequestsComposer(requests)); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Messenger/RequestBuddyEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.HabboHotel.Quests; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Messenger 5 | { 6 | class RequestBuddyEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | if (session == null || session.GetHabbo() == null || session.GetHabbo().GetMessenger() == null) 11 | return; 12 | 13 | if (session.GetHabbo().GetMessenger().RequestBuddy(packet.PopString())) 14 | PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(session, QuestType.SocialFriend); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Misc/ClientVariablesEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Misc 4 | { 5 | class ClientVariablesEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | string gordanPath = packet.PopString(); 10 | string externalVariables = packet.PopString(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Misc/DisconnectEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Misc 4 | { 5 | class DisconnectEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | session.Disconnect(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Misc/EventTrackerEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Misc 4 | { 5 | class EventTrackerEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Misc/LatencyTestEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Misc 4 | { 5 | class LatencyTestEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | //Session.SendMessage(new LatencyTestComposer(Packet.PopInt())); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Misc/MemoryPerformanceEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Misc 4 | { 5 | class MemoryPerformanceEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Misc/SetFriendBarStateEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users.Messenger.FriendBar; 2 | using Plus.Communication.Packets.Outgoing.Sound; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Misc 6 | { 7 | class SetFriendBarStateEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | if (session == null || session.GetHabbo() == null) 12 | return; 13 | 14 | session.GetHabbo().FriendbarState = FriendBarStateUtility.GetEnum(packet.PopInt()); 15 | session.SendPacket(new SoundSettingsComposer(session.GetHabbo().ClientVolume, session.GetHabbo().ChatPreference, session.GetHabbo().AllowMessengerInvites, session.GetHabbo().FocusPreference, FriendBarStateUtility.GetInt(session.GetHabbo().FriendbarState))); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Moderation/CloseIssueDefaultActionEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Moderation 4 | { 5 | class CloseIssueDefaultActionEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | if (session == null || session.GetHabbo() == null) 10 | return; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Moderation/ModerationMsgEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Moderation 4 | { 5 | class ModerationMsgEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | if (session == null || session.GetHabbo() == null || !session.GetHabbo().GetPermissions().HasRight("mod_alert")) 10 | return; 11 | 12 | int userId = packet.PopInt(); 13 | string message = packet.PopString(); 14 | 15 | GameClient client = PlusEnvironment.GetGame().GetClientManager().GetClientByUserId(userId); 16 | if (client == null) 17 | return; 18 | 19 | client.SendNotification(message); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Moderation/OpenHelpToolEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Moderation; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Moderation 5 | { 6 | class OpenHelpToolEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new OpenHelpToolComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/CanCreateRoomEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Navigator; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Navigator 5 | { 6 | class CanCreateRoomEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new CanCreateRoomComposer(false, 150)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/FindRandomFriendingRoomEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Rooms.Session; 2 | using Plus.HabboHotel.GameClients; 3 | using Plus.HabboHotel.Rooms; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Navigator 6 | { 7 | class FindRandomFriendingRoomEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | Room instance = PlusEnvironment.GetGame().GetRoomManager().TryGetRandomLoadedRoom(); 12 | 13 | if (instance != null) 14 | session.SendPacket(new RoomForwardComposer(instance.Id)); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/GetGuestRoomEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Navigator; 2 | using Plus.HabboHotel.Rooms; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Navigator 5 | { 6 | class GetGuestRoomEvent : IPacketEvent 7 | { 8 | public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet) 9 | { 10 | int roomId = packet.PopInt(); 11 | 12 | if (!RoomFactory.TryGetData(roomId, out RoomData data)) 13 | return; 14 | 15 | bool enter = packet.PopInt() == 1; 16 | bool forward = packet.PopInt() == 1; 17 | 18 | session.SendPacket(new GetGuestRoomResultComposer(session, data, enter, forward)); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/GetNavigatorFlatsEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Plus.HabboHotel.GameClients; 3 | using Plus.Communication.Packets.Outgoing.Navigator; 4 | using Plus.HabboHotel.Navigator; 5 | 6 | namespace Plus.Communication.Packets.Incoming.Navigator 7 | { 8 | class GetNavigatorFlatsEvent : IPacketEvent 9 | { 10 | public void Parse(GameClient session, ClientPacket packet) 11 | { 12 | ICollection categories = PlusEnvironment.GetGame().GetNavigator().GetEventCategories(); 13 | 14 | session.SendPacket(new NavigatorFlatCatsComposer(categories)); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/GetUserFlatCatsEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Plus.HabboHotel.Navigator; 3 | using Plus.HabboHotel.GameClients; 4 | using Plus.Communication.Packets.Outgoing.Navigator; 5 | 6 | namespace Plus.Communication.Packets.Incoming.Navigator 7 | { 8 | public class GetUserFlatCatsEvent : IPacketEvent 9 | { 10 | public void Parse(GameClient session, ClientPacket packet) 11 | { 12 | if (session == null) 13 | return; 14 | 15 | ICollection categories = PlusEnvironment.GetGame().GetNavigator().GetFlatCategories(); 16 | 17 | session.SendPacket(new UserFlatCatsComposer(categories, session.GetHabbo().Rank)); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/GoToHotelViewEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.HabboHotel.Rooms; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Navigator 5 | { 6 | class GoToHotelViewEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | if (session == null || session.GetHabbo() == null) 11 | return; 12 | 13 | 14 | if (session.GetHabbo().InRoom) 15 | { 16 | if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().CurrentRoomId, out Room oldRoom)) 17 | return; 18 | 19 | if (oldRoom.GetRoomUserManager() != null) 20 | oldRoom.GetRoomUserManager().RemoveUserFromRoom(session, true); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/InitializeNewNavigatorEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Plus.Communication.Packets.Outgoing.Navigator.New; 3 | using Plus.HabboHotel.GameClients; 4 | using Plus.HabboHotel.Navigator; 5 | 6 | namespace Plus.Communication.Packets.Incoming.Navigator 7 | { 8 | class InitializeNewNavigatorEvent : IPacketEvent 9 | { 10 | public void Parse(GameClient session, ClientPacket packet) 11 | { 12 | ICollection topLevelItems = PlusEnvironment.GetGame().GetNavigator().GetTopLevelItems(); 13 | 14 | session.SendPacket(new NavigatorMetaDataParserComposer(topLevelItems)); 15 | session.SendPacket(new NavigatorLiftedRoomsComposer()); 16 | session.SendPacket(new NavigatorCollapsedCategoriesComposer()); 17 | session.SendPacket(new NavigatorPreferencesComposer()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Navigator/UpdateNavigatorSettingsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | using Plus.Communication.Packets.Outgoing.Navigator; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Navigator 6 | { 7 | class UpdateNavigatorSettingsEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | int roomId = packet.PopInt(); 12 | if (roomId == 0) 13 | return; 14 | 15 | if (!RoomFactory.TryGetData(roomId, out RoomData _)) 16 | return; 17 | 18 | session.GetHabbo().HomeRoom = roomId; 19 | session.SendPacket(new NavigatorSettingsComposer(roomId)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Quests/GetDailyQuestEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.LandingView; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Quests 5 | { 6 | class GetDailyQuestEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | int usersOnline = PlusEnvironment.GetGame().GetClientManager().Count; 11 | 12 | session.SendPacket(new ConcurrentUsersGoalProgressComposer(usersOnline)); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Quests/GetQuestListEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Quests 4 | { 5 | public class GetQuestListEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | PlusEnvironment.GetGame().GetQuestManager().GetList(session, null); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Avatar/DropHandItemEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.HabboHotel.Rooms; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Rooms.Avatar 5 | { 6 | class DropHandItemEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | if (!session.GetHabbo().InRoom) 11 | return; 12 | 13 | if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().CurrentRoomId, out Room room)) 14 | return; 15 | 16 | RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id); 17 | if (user == null) 18 | return; 19 | 20 | if (user.CarryItemId > 0 && user.CarryTimer > 0) 21 | user.CarryItem(0); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Chat/StartTypingEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | using Plus.HabboHotel.GameClients; 3 | using Plus.Communication.Packets.Outgoing.Rooms.Chat; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Rooms.Chat 6 | { 7 | public class StartTypingEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | if (!session.GetHabbo().InRoom) 12 | return; 13 | 14 | Room room = session.GetHabbo().CurrentRoom; 15 | if (room == null) 16 | return; 17 | 18 | RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Username); 19 | if (user == null) 20 | return; 21 | 22 | session.GetHabbo().CurrentRoom.SendPacket(new UserTypingComposer(user.VirtualId, true)); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Connection/GoToFlatEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Rooms.Session; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Rooms.Connection 5 | { 6 | class GoToFlatEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | if (!session.GetHabbo().InRoom) 11 | return; 12 | 13 | if (!session.GetHabbo().EnterRoom(session.GetHabbo().CurrentRoom)) 14 | session.SendPacket(new CloseConnectionComposer()); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Connection/OpenFlatConnectionEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Rooms.Connection 4 | { 5 | public class OpenFlatConnectionEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | if (session == null || session.GetHabbo() == null) 10 | return; 11 | 12 | int roomId = packet.PopInt(); 13 | string password = packet.PopString(); 14 | 15 | session.GetHabbo().PrepareRoom(roomId, password); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Engine/GetFurnitureAliasesEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Rooms.Engine; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Rooms.Engine 5 | { 6 | class GetFurnitureAliasesEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new FurnitureAliasesComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/FloorPlan/InitializeFloorPlanSessionEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.Communication.Packets.Incoming.Rooms.FloorPlan 4 | { 5 | class InitializeFloorPlanSessionEvent : IPacketEvent 6 | { 7 | public void Parse(GameClient session, ClientPacket packet) 8 | { 9 | //Session.SendNotif("WARNING - THIS TOOL IS IN BETA, IT COULD CORRUPT YOUR ROOM IF YOU CONFIGURE THE MAP WRONG OR DISCONNECT YOU."); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Furni/DiceOffEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.HabboHotel.Rooms; 3 | using Plus.HabboHotel.Items; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Rooms.Furni 6 | { 7 | class DiceOffEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | Room room = session.GetHabbo().CurrentRoom; 12 | if (room == null) 13 | return; 14 | 15 | Item item = room.GetRoomItemHandler().GetItem(packet.PopInt()); 16 | if (item == null) 17 | return; 18 | 19 | bool hasRights = room.CheckRights(session); 20 | 21 | item.Interactor.OnTrigger(session, item, -1, hasRights); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Furni/RentableSpaces/GetRentableSpaceEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Rooms.Furni.RentableSpaces; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Rooms.Furni.RentableSpaces 5 | { 6 | class GetRentableSpaceEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | packet.PopInt(); //unknown 11 | 12 | session.SendPacket(new RentableSpaceComposer()); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Furni/ThrowDiceEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.HabboHotel.Rooms; 3 | using Plus.HabboHotel.Items; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Rooms.Furni 6 | { 7 | class ThrowDiceEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | Room room = session.GetHabbo().CurrentRoom; 12 | if (room == null) 13 | return; 14 | 15 | Item item = room.GetRoomItemHandler().GetItem(packet.PopInt()); 16 | if (item == null) 17 | return; 18 | 19 | bool hasRights = room.CheckRights(session, false, true); 20 | 21 | int request = packet.PopInt(); 22 | 23 | item.Interactor.OnTrigger(session, item, request, hasRights); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Furni/YouTubeTelevisions/ToggleYouTubeVideoEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Rooms.Furni.YouTubeTelevisions; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Rooms.Furni.YouTubeTelevisions 5 | { 6 | class ToggleYouTubeVideoEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | int itemId = packet.PopInt();//Item Id 11 | string videoId = packet.PopString(); //Video ID 12 | 13 | session.SendPacket(new GetYouTubeVideoComposer(itemId, videoId)); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Polls/PollStartEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Rooms.Polls; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Rooms.Polls 5 | { 6 | class PollStartEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new PollContentsComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Settings/GetRoomBannedUsersEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | using Plus.Communication.Packets.Outgoing.Rooms.Settings; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Rooms.Settings 6 | { 7 | class GetRoomBannedUsersEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | if (!session.GetHabbo().InRoom) 12 | return; 13 | 14 | Room instance = session.GetHabbo().CurrentRoom; 15 | if (instance == null || !instance.CheckRights(session, true)) 16 | return; 17 | 18 | if (instance.GetBans().BannedUsers().Count > 0) 19 | session.SendPacket(new GetRoomBannedUsersComposer(instance)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Settings/GetRoomRightsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | using Plus.Communication.Packets.Outgoing.Rooms.Settings; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Rooms.Settings 6 | { 7 | class GetRoomRightsEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | if (!session.GetHabbo().InRoom) 12 | return; 13 | 14 | Room instance = session.GetHabbo().CurrentRoom; 15 | if (instance == null) 16 | return; 17 | 18 | if (!instance.CheckRights(session)) 19 | return; 20 | 21 | 22 | session.SendPacket(new RoomRightsListComposer(instance)); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Rooms/Settings/GetRoomSettingsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | using Plus.Communication.Packets.Outgoing.Rooms.Settings; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Rooms.Settings 6 | { 7 | class GetRoomSettingsEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | int roomId = packet.PopInt(); 12 | 13 | if (!PlusEnvironment.GetGame().GetRoomManager().TryLoadRoom(roomId, out Room room)) 14 | return; 15 | 16 | if (!room.CheckRights(session, true)) 17 | return; 18 | 19 | session.SendPacket(new RoomSettingsDataComposer(room)); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Sound/GetSongInfoEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Sound; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Sound 5 | { 6 | class GetSongInfoEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new TraxSongInfoComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Talents/GetTalentTrackEvent.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.HabboHotel.Talents; 4 | using Plus.Communication.Packets.Outgoing.Talents; 5 | using Plus.HabboHotel.GameClients; 6 | 7 | namespace Plus.Communication.Packets.Incoming.Talents 8 | { 9 | class GetTalentTrackEvent : IPacketEvent 10 | { 11 | public void Parse(GameClient session, ClientPacket packet) 12 | { 13 | string type = packet.PopString(); 14 | 15 | ICollection levels = PlusEnvironment.GetGame().GetTalentTrackManager().GetLevels(); 16 | 17 | session.SendPacket(new TalentTrackComposer(levels, type)); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Users/GetRelationshipsEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | 4 | using Plus.HabboHotel.Users; 5 | using Plus.Communication.Packets.Outgoing.Users; 6 | using Plus.HabboHotel.GameClients; 7 | 8 | namespace Plus.Communication.Packets.Incoming.Users 9 | { 10 | class GetRelationshipsEvent : IPacketEvent 11 | { 12 | public void Parse(GameClient session, ClientPacket packet) 13 | { 14 | Habbo habbo = PlusEnvironment.GetHabboById(packet.PopInt()); 15 | if (habbo == null) 16 | return; 17 | 18 | var rand = new Random(); 19 | habbo.Relationships = habbo.Relationships.OrderBy(x => rand.Next()).ToDictionary(item => item.Key, item => item.Value); 20 | 21 | session.SendPacket(new GetRelationshipsComposer(habbo)); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Users/GetSelectedBadgesEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users; 2 | using Plus.Communication.Packets.Outgoing.Users; 3 | using Plus.HabboHotel.GameClients; 4 | 5 | namespace Plus.Communication.Packets.Incoming.Users 6 | { 7 | class GetSelectedBadgesEvent : IPacketEvent 8 | { 9 | public void Parse(GameClient session, ClientPacket packet) 10 | { 11 | int userId = packet.PopInt(); 12 | Habbo habbo = PlusEnvironment.GetHabboById(userId); 13 | if (habbo == null) 14 | return; 15 | 16 | session.SendPacket(new HabboUserBadgesComposer(habbo)); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Users/GetUserTagsEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Users; 2 | using Plus.HabboHotel.GameClients; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Users 5 | { 6 | class GetUserTagsEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | int userId = packet.PopInt(); 11 | 12 | session.SendPacket(new UserTagsComposer(userId)); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Incoming/Users/ScrGetUserInfoEvent.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | using Plus.Communication.Packets.Outgoing.Users; 3 | 4 | namespace Plus.Communication.Packets.Incoming.Users 5 | { 6 | class ScrGetUserInfoEvent : IPacketEvent 7 | { 8 | public void Parse(GameClient session, ClientPacket packet) 9 | { 10 | session.SendPacket(new ScrSendUserInfoComposer()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/BuildersClub/BCBorrowedItemsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.BuildersClub 2 | { 3 | class BCBorrowedItemsComposer : ServerPacket 4 | { 5 | public BCBorrowedItemsComposer() 6 | : base(ServerPacketHeader.BCBorrowedItemsMessageComposer) 7 | { 8 | WriteInteger(0); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/BuildersClub/BuildersClubMembershipComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.BuildersClub 2 | { 3 | class BuildersClubMembershipComposer : ServerPacket 4 | { 5 | public BuildersClubMembershipComposer() 6 | : base(ServerPacketHeader.BuildersClubMembershipMessageComposer) 7 | { 8 | WriteInteger(int.MaxValue); 9 | WriteInteger(100); 10 | WriteInteger(0); 11 | WriteInteger(int.MaxValue); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/CatalogItemDiscountComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | class CatalogItemDiscountComposer : ServerPacket 4 | { 5 | public CatalogItemDiscountComposer() 6 | : base(ServerPacketHeader.CatalogItemDiscountMessageComposer) 7 | { 8 | WriteInteger(100);//Most you can get. 9 | WriteInteger(6); 10 | WriteInteger(1); 11 | WriteInteger(1); 12 | WriteInteger(2);//Count 13 | { 14 | WriteInteger(40); 15 | WriteInteger(99); 16 | } 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/CatalogUpdatedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | class CatalogUpdatedComposer : ServerPacket 4 | { 5 | public CatalogUpdatedComposer() 6 | : base(ServerPacketHeader.CatalogUpdatedMessageComposer) 7 | { 8 | WriteBoolean(false); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/CheckGnomeNameComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | class CheckGnomeNameComposer : ServerPacket 4 | { 5 | public CheckGnomeNameComposer(string PetName, int ErrorId) 6 | : base(ServerPacketHeader.CheckGnomeNameMessageComposer) 7 | { 8 | WriteInteger(0); 9 | WriteInteger(ErrorId); 10 | WriteString(PetName); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/CheckPetNameComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | public class CheckPetNameComposer : ServerPacket 4 | { 5 | public CheckPetNameComposer(int Error, string ExtraData) 6 | : base(ServerPacketHeader.CheckPetNameMessageComposer) 7 | { 8 | WriteInteger(Error);//0 = nothing, 1 = too long, 2 = too short, 3 = invalid characters 9 | WriteString(ExtraData); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/GetCatalogRoomPromotionComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.HabboHotel.Rooms; 4 | 5 | namespace Plus.Communication.Packets.Outgoing.Catalog 6 | { 7 | class GetCatalogRoomPromotionComposer : ServerPacket 8 | { 9 | public GetCatalogRoomPromotionComposer(List UsersRooms) 10 | : base(ServerPacketHeader.PromotableRoomsMessageComposer) 11 | { 12 | WriteBoolean(true);//wat 13 | WriteInteger(UsersRooms.Count);//Count of rooms? 14 | foreach (RoomData Room in UsersRooms) 15 | { 16 | WriteInteger(Room.Id); 17 | WriteString(Room.Name); 18 | WriteBoolean(true); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/GiftWrappingErrorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | class GiftWrappingErrorComposer : ServerPacket 4 | { 5 | public GiftWrappingErrorComposer() 6 | : base(ServerPacketHeader.GiftWrappingErrorMessageComposer) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/MarketplaceConfigurationComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | public class MarketplaceConfigurationComposer : ServerPacket 4 | { 5 | public MarketplaceConfigurationComposer() 6 | : base(ServerPacketHeader.MarketplaceConfigurationMessageComposer) 7 | { 8 | WriteBoolean(true); 9 | WriteInteger(1);//Min price. 10 | WriteInteger(0);//1? 11 | WriteInteger(0);//5? 12 | WriteInteger(1); 13 | WriteInteger(99999999);//Max price. 14 | WriteInteger(48); 15 | WriteInteger(7);//Days. 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/PresentDeliverErrorMessageComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | class PresentDeliverErrorMessageComposer : ServerPacket 4 | { 5 | public PresentDeliverErrorMessageComposer(bool CreditError, bool DucketError) 6 | : base(ServerPacketHeader.PresentDeliverErrorMessageComposer) 7 | { 8 | WriteBoolean(CreditError);//Do we have enough credits? 9 | WriteBoolean(DucketError);//Do we have enough duckets? 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/PromotableRoomsComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Plus.HabboHotel.Rooms; 3 | namespace Plus.Communication.Packets.Outgoing.Catalog 4 | { 5 | class PromotableRoomsComposer : ServerPacket 6 | { 7 | public PromotableRoomsComposer(ICollection Rooms) 8 | : base(ServerPacketHeader.PromotableRoomsMessageComposer) 9 | { 10 | WriteBoolean(true); 11 | WriteInteger(Rooms.Count);//Count 12 | 13 | foreach (RoomData Data in Rooms) 14 | { 15 | WriteInteger(Data.Id); 16 | WriteString(Data.Name); 17 | WriteBoolean(false); 18 | } 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/PurchaseErrorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | class PurchaseErrorComposer : ServerPacket 4 | { 5 | public PurchaseErrorComposer(int ErrorCode) 6 | : base(ServerPacketHeader.PurchaseErrorMessageComposer) 7 | { 8 | WriteInteger(ErrorCode); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/RecyclerRewardsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | public class RecyclerRewardsComposer : ServerPacket 4 | { 5 | public RecyclerRewardsComposer() 6 | : base(ServerPacketHeader.RecyclerRewardsMessageComposer) 7 | { 8 | WriteInteger(0);// Count of items 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/VoucherRedeemErrorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | public class VoucherRedeemErrorComposer : ServerPacket 4 | { 5 | public VoucherRedeemErrorComposer(int Type) 6 | : base(ServerPacketHeader.VoucherRedeemErrorMessageComposer) 7 | { 8 | WriteString(Type.ToString()); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Catalog/VoucherRedeemOkComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Catalog 2 | { 3 | public class VoucherRedeemOkComposer : ServerPacket 4 | { 5 | public VoucherRedeemOkComposer() 6 | : base(ServerPacketHeader.VoucherRedeemOkMessageComposer) 7 | { 8 | WriteString("");//productName 9 | WriteString("");//productDescription 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/GameCenter/GameAccountStatusComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.GameCenter 2 | { 3 | class GameAccountStatusComposer : ServerPacket 4 | { 5 | public GameAccountStatusComposer(int GameID) 6 | : base(ServerPacketHeader.GameAccountStatusMessageComposer) 7 | { 8 | WriteInteger(GameID); 9 | WriteInteger(-1); // Games Left 10 | WriteInteger(0);//Was 16? 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/GameCenter/GameListComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | using Plus.HabboHotel.Games; 4 | 5 | namespace Plus.Communication.Packets.Outgoing.GameCenter 6 | { 7 | class GameListComposer : ServerPacket 8 | { 9 | public GameListComposer(ICollection Games) 10 | : base(ServerPacketHeader.GameListMessageComposer) 11 | { 12 | WriteInteger(PlusEnvironment.GetGame().GetGameDataManager().GetCount());//Game count 13 | foreach (GameData Game in Games) 14 | { 15 | WriteInteger(Game.Id); 16 | WriteString(Game.Name); 17 | WriteString(Game.ColourOne); 18 | WriteString(Game.ColourTwo); 19 | WriteString(Game.ResourcePath); 20 | WriteString(Game.StringThree); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/GameCenter/JoinQueueComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.GameCenter 2 | { 3 | class JoinQueueComposer : ServerPacket 4 | { 5 | public JoinQueueComposer(int GameId) 6 | : base(ServerPacketHeader.JoinQueueMessageComposer) 7 | { 8 | WriteInteger(GameId); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/GameCenter/PlayableGamesComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.GameCenter 2 | { 3 | class PlayableGamesComposer : ServerPacket 4 | { 5 | public PlayableGamesComposer(int GameID) 6 | : base(ServerPacketHeader.PlayableGamesMessageComposer) 7 | { 8 | WriteInteger(GameID); 9 | WriteInteger(0); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/GroupFurniSettingsComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Groups; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Groups 4 | { 5 | class GroupFurniSettingsComposer : ServerPacket 6 | { 7 | public GroupFurniSettingsComposer(Group Group, int ItemId, int UserId) 8 | : base(ServerPacketHeader.GroupFurniSettingsMessageComposer) 9 | { 10 | WriteInteger(ItemId);//Item Id 11 | WriteInteger(Group.Id);//Group Id? 12 | WriteString(Group.Name); 13 | WriteInteger(Group.RoomId);//RoomId 14 | WriteBoolean(Group.IsMember(UserId));//Member? 15 | WriteBoolean(Group.ForumEnabled);//Has a forum 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/GroupMemberUpdatedComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Groups 4 | { 5 | class GroupMemberUpdatedComposer : ServerPacket 6 | { 7 | public GroupMemberUpdatedComposer(int GroupId, Habbo Habbo, int Type) 8 | : base(ServerPacketHeader.GroupMemberUpdatedMessageComposer) 9 | { 10 | WriteInteger(GroupId);//GroupId 11 | WriteInteger(Type);//Type? 12 | { 13 | WriteInteger(Habbo.Id);//UserId 14 | WriteString(Habbo.Username); 15 | WriteString(Habbo.Look); 16 | WriteString(string.Empty); 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/GroupMembershipRequestedComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Groups 4 | { 5 | class GroupMembershipRequestedComposer : ServerPacket 6 | { 7 | public GroupMembershipRequestedComposer(int GroupId, Habbo Habbo, int Type) 8 | : base(ServerPacketHeader.GroupMembershipRequestedMessageComposer) 9 | { 10 | WriteInteger(GroupId);//GroupId 11 | WriteInteger(Type);//Type? 12 | { 13 | WriteInteger(Habbo.Id);//UserId 14 | WriteString(Habbo.Username); 15 | WriteString(Habbo.Look); 16 | WriteString(string.Empty); 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/NewGroupInfoComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Groups 2 | { 3 | class NewGroupInfoComposer : ServerPacket 4 | { 5 | public NewGroupInfoComposer(int RoomId, int GroupId) 6 | : base(ServerPacketHeader.NewGroupInfoMessageComposer) 7 | { 8 | WriteInteger(RoomId); 9 | WriteInteger(GroupId); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/RefreshFavouriteGroupComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Groups 2 | { 3 | class RefreshFavouriteGroupComposer : ServerPacket 4 | { 5 | public RefreshFavouriteGroupComposer(int Id) 6 | : base(ServerPacketHeader.RefreshFavouriteGroupMessageComposer) 7 | { 8 | WriteInteger(Id); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/UnknownGroupComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Groups 2 | { 3 | class UnknownGroupComposer : ServerPacket 4 | { 5 | public UnknownGroupComposer(int GroupId, int HabboId) 6 | : base(ServerPacketHeader.UnknownGroupMessageComposer) 7 | { 8 | WriteInteger(GroupId); 9 | WriteInteger(HabboId); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Groups/UpdateFavouriteGroupComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Groups; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Groups 4 | { 5 | class UpdateFavouriteGroupComposer : ServerPacket 6 | { 7 | public UpdateFavouriteGroupComposer(Group Group, int VirtualId) 8 | : base(ServerPacketHeader.UpdateFavouriteGroupMessageComposer) 9 | { 10 | WriteInteger(VirtualId);//Sends 0 on .COM 11 | WriteInteger(Group != null ? Group.Id : 0); 12 | WriteInteger(3); 13 | WriteString(Group != null ? Group.Name : string.Empty); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/AuthenticationOKComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | public class AuthenticationOKComposer : ServerPacket 4 | { 5 | public AuthenticationOKComposer() 6 | : base(ServerPacketHeader.AuthenticationOKMessageComposer) 7 | { 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/AvailabilityStatusComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | class AvailabilityStatusComposer : ServerPacket 4 | { 5 | public AvailabilityStatusComposer() 6 | : base(ServerPacketHeader.AvailabilityStatusMessageComposer) 7 | { 8 | WriteBoolean(true); 9 | WriteBoolean(false); 10 | WriteBoolean(true); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/GenericErrorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | class GenericErrorComposer : ServerPacket 4 | { 5 | public GenericErrorComposer(int errorId) 6 | : base(ServerPacketHeader.GenericErrorMessageComposer) 7 | { 8 | WriteInteger(errorId); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/InitCryptoComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | public class InitCryptoComposer : ServerPacket 4 | { 5 | public InitCryptoComposer(string Prime, string Generator) 6 | : base(ServerPacketHeader.InitCryptoMessageComposer) 7 | { 8 | WriteString(Prime); 9 | WriteString(Generator); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/PongComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | class PongComposer :ServerPacket 4 | { 5 | public PongComposer() 6 | : base(ServerPacketHeader.PongMessageComposer) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/SecretKeyComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | public class SecretKeyComposer : ServerPacket 4 | { 5 | public SecretKeyComposer(string publicKey) 6 | : base(ServerPacketHeader.SecretKeyMessageComposer) 7 | { 8 | WriteString(publicKey); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/SetUniqueIdComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | class SetUniqueIdComposer : ServerPacket 4 | { 5 | public SetUniqueIdComposer(string Id) 6 | : base(ServerPacketHeader.SetUniqueIdMessageComposer) 7 | { 8 | WriteString(Id); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Handshake/UserRightsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Handshake 2 | { 3 | public class UserRightsComposer : ServerPacket 4 | { 5 | public UserRightsComposer(int Rank) 6 | : base(ServerPacketHeader.UserRightsMessageComposer) 7 | { 8 | WriteInteger(2);//Club level 9 | WriteInteger(Rank); 10 | WriteBoolean(false);//Is an ambassador 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Help/SanctionStatusComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Help 2 | { 3 | class SanctionStatusComposer : ServerPacket 4 | { 5 | public SanctionStatusComposer() 6 | : base(ServerPacketHeader.SanctionStatusMessageComposer) 7 | { 8 | WriteBoolean(false); 9 | WriteBoolean(false); 10 | WriteString("aaaaaaaaaaaaa"); 11 | WriteInteger(1);//Hours 12 | WriteInteger(10); 13 | WriteString("ccccc"); 14 | WriteString("bbb"); 15 | WriteInteger(0); 16 | WriteString("abb"); 17 | WriteInteger(0); 18 | WriteInteger(0); 19 | WriteBoolean(true);//if true and second boolean is false it does something. - if false, we got banned, so true is mute 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Help/SendBullyReportComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Help 2 | { 3 | class SendBullyReportComposer : ServerPacket 4 | { 5 | public SendBullyReportComposer() 6 | : base(ServerPacketHeader.SendBullyReportMessageComposer) 7 | { 8 | WriteInteger(0);//0-3, sends 0 on Habbo for this purpose. 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Help/SubmitBullyReportComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Help 2 | { 3 | class SubmitBullyReportComposer : ServerPacket 4 | { 5 | public SubmitBullyReportComposer(int Result) 6 | : base(ServerPacketHeader.SubmitBullyReportMessageComposer) 7 | { 8 | WriteInteger(Result); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Achievements/AchievementScoreComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Achievements 2 | { 3 | class AchievementScoreComposer : ServerPacket 4 | { 5 | public AchievementScoreComposer(int achScore) 6 | : base(ServerPacketHeader.AchievementScoreMessageComposer) 7 | { 8 | WriteInteger(achScore); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/AvatarEffects/AvatarEffectActivatedComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users.Effects; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Inventory.AvatarEffects 4 | { 5 | class AvatarEffectActivatedComposer : ServerPacket 6 | { 7 | public AvatarEffectActivatedComposer(AvatarEffect Effect) 8 | : base(ServerPacketHeader.AvatarEffectActivatedMessageComposer) 9 | { 10 | WriteInteger(Effect.SpriteId); 11 | WriteInteger((int)Effect.Duration); 12 | WriteBoolean(false);//Permanent 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/AvatarEffects/AvatarEffectAddedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.AvatarEffects 2 | { 3 | class AvatarEffectAddedComposer : ServerPacket 4 | { 5 | public AvatarEffectAddedComposer(int SpriteId, int Duration) 6 | : base(ServerPacketHeader.AvatarEffectAddedMessageComposer) 7 | { 8 | WriteInteger(SpriteId); 9 | WriteInteger(0);//Types 10 | WriteInteger(Duration); 11 | WriteBoolean(false);//Permanent 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/AvatarEffects/AvatarEffectExpiredComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users.Effects; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Inventory.AvatarEffects 4 | { 5 | class AvatarEffectExpiredComposer : ServerPacket 6 | { 7 | public AvatarEffectExpiredComposer(AvatarEffect Effect) 8 | : base(ServerPacketHeader.AvatarEffectExpiredMessageComposer) 9 | { 10 | WriteInteger(Effect.SpriteId); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Bots/BotInventoryComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections.Generic; 3 | using Plus.HabboHotel.Users.Inventory.Bots; 4 | 5 | namespace Plus.Communication.Packets.Outgoing.Inventory.Bots 6 | { 7 | class BotInventoryComposer : ServerPacket 8 | { 9 | public BotInventoryComposer(ICollection Bots) 10 | : base(ServerPacketHeader.BotInventoryMessageComposer) 11 | { 12 | WriteInteger(Bots.Count); 13 | foreach (Bot Bot in Bots.ToList()) 14 | { 15 | WriteInteger(Bot.Id); 16 | WriteString(Bot.Name); 17 | WriteString(Bot.Motto); 18 | WriteString(Bot.Gender); 19 | WriteString(Bot.Figure); 20 | } 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Furni/FurniListNotificationComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Furni 2 | { 3 | class FurniListNotificationComposer : ServerPacket 4 | { 5 | public FurniListNotificationComposer(int Id, int Type) 6 | : base(ServerPacketHeader.FurniListNotificationMessageComposer) 7 | { 8 | WriteInteger(1); 9 | WriteInteger(Type); 10 | WriteInteger(1); 11 | WriteInteger(Id); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Furni/FurniListRemoveComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Furni 2 | { 3 | class FurniListRemoveComposer : ServerPacket 4 | { 5 | public FurniListRemoveComposer(int Id) 6 | : base(ServerPacketHeader.FurniListRemoveMessageComposer) 7 | { 8 | WriteInteger(Id); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Furni/FurniListUpdateComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Furni 2 | { 3 | class FurniListUpdateComposer : ServerPacket 4 | { 5 | public FurniListUpdateComposer() 6 | : base(ServerPacketHeader.FurniListUpdateMessageComposer) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Purse/CreditBalanceComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Purse 2 | { 3 | class CreditBalanceComposer : ServerPacket 4 | { 5 | public CreditBalanceComposer(int creditsBalance) 6 | : base(ServerPacketHeader.CreditBalanceMessageComposer) 7 | { 8 | WriteString(creditsBalance + ".0"); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Purse/HabboActivityPointNotificationComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Purse 2 | { 3 | class HabboActivityPointNotificationComposer : ServerPacket 4 | { 5 | public HabboActivityPointNotificationComposer(int balance, int notify, int type = 0) 6 | : base(ServerPacketHeader.HabboActivityPointNotificationMessageComposer) 7 | { 8 | WriteInteger(balance); 9 | WriteInteger(notify); 10 | WriteInteger(type); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingAcceptComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingAcceptComposer : ServerPacket 4 | { 5 | public TradingAcceptComposer(int UserId, bool Accept) 6 | : base(ServerPacketHeader.TradingAcceptMessageComposer) 7 | { 8 | WriteInteger(UserId); 9 | WriteInteger(Accept ? 1 : 0); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingClosedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingClosedComposer : ServerPacket 4 | { 5 | public TradingClosedComposer(int UserId) 6 | : base(ServerPacketHeader.TradingClosedMessageComposer) 7 | { 8 | WriteInteger(UserId); 9 | WriteInteger(0); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingCompleteComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingCompleteComposer : ServerPacket 4 | { 5 | public TradingCompleteComposer() 6 | : base(ServerPacketHeader.TradingCompleteMessageComposer) 7 | { 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingConfirmedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingConfirmedComposer : ServerPacket 4 | { 5 | public TradingConfirmedComposer(int UserId, bool Confirmed) 6 | : base(ServerPacketHeader.TradingConfirmedMessageComposer) 7 | { 8 | WriteInteger(UserId); 9 | WriteInteger(Confirmed ? 1 : 0); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingErrorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingErrorComposer : ServerPacket 4 | { 5 | public TradingErrorComposer(int Error, string Username) 6 | : base(ServerPacketHeader.TradingErrorMessageComposer) 7 | { 8 | WriteInteger(Error); 9 | WriteString(Username); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingFinishComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingFinishComposer : ServerPacket 4 | { 5 | public TradingFinishComposer() 6 | : base(ServerPacketHeader.TradingFinishMessageComposer) 7 | { 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Inventory/Trading/TradingStartComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Inventory.Trading 2 | { 3 | class TradingStartComposer : ServerPacket 4 | { 5 | public TradingStartComposer(int User1Id, int User2Id) 6 | : base(ServerPacketHeader.TradingStartMessageComposer) 7 | { 8 | WriteInteger(User1Id); 9 | WriteInteger(1); 10 | WriteInteger(User2Id); 11 | WriteInteger(1); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/LandingView/CampaignComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.LandingView 2 | { 3 | class CampaignComposer : ServerPacket 4 | { 5 | public CampaignComposer(string campaignString, string campaignName) 6 | : base(ServerPacketHeader.CampaignMessageComposer) 7 | { 8 | WriteString(campaignString); 9 | WriteString(campaignName); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/LandingView/ConcurrentUsersGoalProgressComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.LandingView 2 | { 3 | class ConcurrentUsersGoalProgressComposer : ServerPacket 4 | { 5 | public ConcurrentUsersGoalProgressComposer(int UsersNow) 6 | : base(ServerPacketHeader.ConcurrentUsersGoalProgressMessageComposer) 7 | { 8 | WriteInteger(0);//0/1 = Not done, 2 = Done & can claim, 3 = claimed. 9 | WriteInteger(UsersNow); 10 | WriteInteger(1000); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Marketplace/MarketplaceCanMakeOfferResultComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Marketplace 2 | { 3 | class MarketplaceCanMakeOfferResultComposer : ServerPacket 4 | { 5 | public MarketplaceCanMakeOfferResultComposer(int Result) 6 | : base(ServerPacketHeader.MarketplaceCanMakeOfferResultMessageComposer) 7 | { 8 | WriteInteger(Result); 9 | WriteInteger(0); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Marketplace/MarketplaceCancelOfferResultComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Marketplace 2 | { 3 | class MarketplaceCancelOfferResultComposer : ServerPacket 4 | { 5 | public MarketplaceCancelOfferResultComposer(int OfferId, bool Success) 6 | : base(ServerPacketHeader.MarketplaceCancelOfferResultMessageComposer) 7 | { 8 | WriteInteger(OfferId); 9 | WriteBoolean(Success); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Marketplace/MarketplaceItemStatsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Marketplace 2 | { 3 | class MarketplaceItemStatsComposer : ServerPacket 4 | { 5 | public MarketplaceItemStatsComposer(int ItemId, int SpriteId, int AveragePrice) 6 | : base(ServerPacketHeader.MarketplaceItemStatsMessageComposer) 7 | { 8 | WriteInteger(AveragePrice);//Avg price in last 7 days. 9 | WriteInteger(PlusEnvironment.GetGame().GetCatalog().GetMarketplace().OfferCountForSprite(SpriteId)); 10 | 11 | WriteInteger(0);//No idea. 12 | WriteInteger(0);//No idea. 13 | 14 | WriteInteger(ItemId); 15 | WriteInteger(SpriteId); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Marketplace/MarketplaceMakeOfferResultComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Marketplace 2 | { 3 | class MarketplaceMakeOfferResultComposer : ServerPacket 4 | { 5 | public MarketplaceMakeOfferResultComposer(int Success) 6 | : base(ServerPacketHeader.MarketplaceMakeOfferResultMessageComposer) 7 | { 8 | WriteInteger(Success); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/FindFriendsProcessResultComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Messenger 2 | { 3 | class FindFriendsProcessResultComposer : ServerPacket 4 | { 5 | public FindFriendsProcessResultComposer(bool Found) 6 | : base(ServerPacketHeader.FindFriendsProcessResultMessageComposer) 7 | { 8 | WriteBoolean(Found); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/FollowFriendFailedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Messenger 2 | { 3 | class FollowFriendFailedComposer : ServerPacket 4 | { 5 | public FollowFriendFailedComposer(int ErrorCode) 6 | : base(ServerPacketHeader.FollowFriendFailedMessageComposer) 7 | { 8 | WriteInteger(ErrorCode); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/FriendNotificationComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users.Messenger; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Messenger 4 | { 5 | class FriendNotificationComposer : ServerPacket 6 | { 7 | public FriendNotificationComposer(int UserId, MessengerEventTypes type, string data) 8 | : base(ServerPacketHeader.FriendNotificationMessageComposer) 9 | { 10 | WriteString(UserId.ToString()); 11 | WriteInteger(MessengerEventTypesUtility.GetEventTypePacketNum(type)); 12 | WriteString(data); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/InstantMessageErrorComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Users.Messenger; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Messenger 4 | { 5 | class InstantMessageErrorComposer : ServerPacket 6 | { 7 | public InstantMessageErrorComposer(MessengerMessageErrors Error, int Target) 8 | : base(ServerPacketHeader.InstantMessageErrorMessageComposer) 9 | { 10 | WriteInteger(MessengerMessageErrorsUtility.GetMessageErrorPacketNum(Error)); 11 | WriteInteger(Target); 12 | WriteString(""); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/MessengerErrorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Messenger 2 | { 3 | class MessengerErrorComposer : ServerPacket 4 | { 5 | public MessengerErrorComposer(int ErrorCode1, int ErrorCode2) 6 | : base(ServerPacketHeader.MessengerErrorMessageComposer) 7 | { 8 | WriteInteger(ErrorCode1); 9 | WriteInteger(ErrorCode2); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/MessengerInitComposer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Messenger 4 | { 5 | class MessengerInitComposer : ServerPacket 6 | { 7 | public MessengerInitComposer() 8 | : base(ServerPacketHeader.MessengerInitMessageComposer) 9 | { 10 | WriteInteger(Convert.ToInt32(PlusEnvironment.GetSettingsManager().TryGetValue("messenger.buddy_limit")));//Friends max. 11 | WriteInteger(300); 12 | WriteInteger(800); 13 | WriteInteger(0); // category count 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/NewBuddyRequestComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Cache.Type; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Messenger 4 | { 5 | class NewBuddyRequestComposer : ServerPacket 6 | { 7 | public NewBuddyRequestComposer(UserCache Habbo) 8 | : base(ServerPacketHeader.NewBuddyRequestMessageComposer) 9 | { 10 | WriteInteger(Habbo.Id); 11 | WriteString(Habbo.Username); 12 | WriteString(Habbo.Look); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/NewConsoleMessageComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Messenger 2 | { 3 | class NewConsoleMessageComposer : ServerPacket 4 | { 5 | public NewConsoleMessageComposer(int Sender, string Message, int Time = 0) 6 | : base(ServerPacketHeader.NewConsoleMessageMessageComposer) 7 | { 8 | WriteInteger(Sender); 9 | WriteString(Message); 10 | WriteInteger(Time); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Messenger/RoomInviteComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Messenger 2 | { 3 | class RoomInviteComposer : ServerPacket 4 | { 5 | public RoomInviteComposer(int SenderId, string Text) 6 | : base(ServerPacketHeader.RoomInviteMessageComposer) 7 | { 8 | WriteInteger(SenderId); 9 | WriteString(Text); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Misc/LatencyTestComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Misc 2 | { 3 | class LatencyTestComposer : ServerPacket 4 | { 5 | public LatencyTestComposer(int testResponce) 6 | : base(ServerPacketHeader.LatencyResponseMessageComposer) 7 | { 8 | WriteInteger(testResponce); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Misc/VideoOffersRewardsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Misc 2 | { 3 | class VideoOffersRewardsComposer : ServerPacket 4 | { 5 | public VideoOffersRewardsComposer(int Id, string Type, string Message) 6 | : base(ServerPacketHeader.VideoOffersRewardsMessageComposer) 7 | { 8 | WriteString(Type); 9 | WriteInteger(Id); 10 | WriteString(Message); 11 | WriteString(""); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Moderation/BroadcastMessageAlertComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Moderation 2 | { 3 | class BroadcastMessageAlertComposer : ServerPacket 4 | { 5 | public BroadcastMessageAlertComposer(string Message, string URL = "") 6 | : base(ServerPacketHeader.BroadcastMessageAlertMessageComposer) 7 | { 8 | WriteString(Message); 9 | WriteString(URL); 10 | } 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Moderation/CallForHelpPendingCallsComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Moderation; 2 | using Plus.Utilities; 3 | 4 | namespace Plus.Communication.Packets.Outgoing.Moderation 5 | { 6 | class CallForHelpPendingCallsComposer :ServerPacket 7 | { 8 | public CallForHelpPendingCallsComposer(ModerationTicket ticket) 9 | : base(ServerPacketHeader.CallForHelpPendingCallsMessageComposer) 10 | { 11 | WriteInteger(1);// Count for whatever reason? 12 | { 13 | WriteString(ticket.Id.ToString()); 14 | WriteString(UnixTimestamp.FromUnixTimestamp(ticket.Timestamp).ToShortTimeString());// "11-02-2017 04:07:05"; 15 | WriteString(ticket.Issue); 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Moderation/ModeratorSupportTicketResponseComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Moderation 2 | { 3 | class ModeratorSupportTicketResponseComposer : ServerPacket 4 | { 5 | public ModeratorSupportTicketResponseComposer(int result) 6 | : base(ServerPacketHeader.ModeratorSupportTicketResponseMessageComposer) 7 | { 8 | WriteInteger(result); 9 | WriteString(""); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Moderation/MutedComposer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Moderation 4 | { 5 | class MutedComposer : ServerPacket 6 | { 7 | public MutedComposer(double TimeMuted) 8 | : base(ServerPacketHeader.MutedMessageComposer) 9 | { 10 | WriteInteger(Convert.ToInt32(TimeMuted)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Moderation/OpenHelpToolComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Moderation 2 | { 3 | class OpenHelpToolComposer : ServerPacket 4 | { 5 | public OpenHelpToolComposer() 6 | : base(ServerPacketHeader.OpenHelpToolMessageComposer) 7 | { 8 | WriteInteger(0); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/CanCreateRoomComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class CanCreateRoomComposer : ServerPacket 4 | { 5 | public CanCreateRoomComposer(bool error, int maxRoomsPerUser) 6 | : base(ServerPacketHeader.CanCreateRoomMessageComposer) 7 | { 8 | WriteInteger(error ? 1 : 0); 9 | WriteInteger(maxRoomsPerUser); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/DoorbellComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class DoorbellComposer : ServerPacket 4 | { 5 | public DoorbellComposer(string username) 6 | : base(ServerPacketHeader.DoorbellMessageComposer) 7 | { 8 | WriteString(username); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/FavouritesComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Navigator 4 | { 5 | class FavouritesComposer : ServerPacket 6 | { 7 | public FavouritesComposer(ArrayList favouriteIds) 8 | : base(ServerPacketHeader.FavouritesMessageComposer) 9 | { 10 | WriteInteger(50); 11 | WriteInteger(favouriteIds.Count); 12 | 13 | foreach (int id in favouriteIds.ToArray()) 14 | { 15 | WriteInteger(id); 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/FlatAccessDeniedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class FlatAccessDeniedComposer : ServerPacket 4 | { 5 | public FlatAccessDeniedComposer(string username) 6 | : base(ServerPacketHeader.FlatAccessDeniedMessageComposer) 7 | { 8 | WriteString(username); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/FlatCreatedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class FlatCreatedComposer : ServerPacket 4 | { 5 | public FlatCreatedComposer(int roomId, string roomName) 6 | : base(ServerPacketHeader.FlatCreatedMessageComposer) 7 | { 8 | WriteInteger(roomId); 9 | WriteString(roomName); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/NavigatorFlatCatsComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Navigator; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace Plus.Communication.Packets.Outgoing.Navigator 6 | { 7 | class NavigatorFlatCatsComposer : ServerPacket 8 | { 9 | public NavigatorFlatCatsComposer(ICollection categories) 10 | : base(ServerPacketHeader.NavigatorFlatCatsMessageComposer) 11 | { 12 | WriteInteger(categories.Count); 13 | foreach (SearchResultList category in categories.ToList()) 14 | { 15 | WriteInteger(category.Id); 16 | WriteString(category.PublicName); 17 | WriteBoolean(true); // TODO 18 | } 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/NavigatorSettingsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class NavigatorSettingsComposer : ServerPacket 4 | { 5 | public NavigatorSettingsComposer(int homeroom) 6 | : base(ServerPacketHeader.NavigatorSettingsMessageComposer) 7 | { 8 | WriteInteger(homeroom); 9 | WriteInteger(homeroom); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/New/NavigatorCollapsedCategoriesComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator.New 2 | { 3 | class NavigatorCollapsedCategoriesComposer : ServerPacket 4 | { 5 | public NavigatorCollapsedCategoriesComposer() 6 | : base(ServerPacketHeader.NavigatorCollapsedCategoriesMessageComposer) 7 | { 8 | WriteInteger(0); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/New/NavigatorLiftedRoomsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator.New 2 | { 3 | class NavigatorLiftedRoomsComposer : ServerPacket 4 | { 5 | public NavigatorLiftedRoomsComposer() 6 | : base(ServerPacketHeader.NavigatorLiftedRoomsMessageComposer) 7 | { 8 | WriteInteger(0); //Count 9 | { 10 | WriteInteger(1); //Flat Id 11 | WriteInteger(0); //Unknown 12 | WriteString(string.Empty); //Image 13 | WriteString("Caption"); //Caption. 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/New/NavigatorPreferencesComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator.New 2 | { 3 | class NavigatorPreferencesComposer : ServerPacket 4 | { 5 | public NavigatorPreferencesComposer() 6 | : base(ServerPacketHeader.NavigatorPreferencesMessageComposer) 7 | { 8 | // TODO: To Sleddy: Shouldn't we make this savable at some point? 9 | // TODO: HMU if you want it to be saved to the database 10 | WriteInteger(68);//X 11 | WriteInteger(42);//Y 12 | WriteInteger(425);//Width 13 | WriteInteger(592);//Height 14 | WriteBoolean(false);//Show or hide saved searches. 15 | WriteInteger(0);//No idea? 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/PopularRoomTagsResultComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Navigator 4 | { 5 | class PopularRoomTagsResultComposer : ServerPacket 6 | { 7 | public PopularRoomTagsResultComposer(ICollection> tags) 8 | : base(ServerPacketHeader.PopularRoomTagsResultMessageComposer) 9 | { 10 | WriteInteger(tags.Count); 11 | foreach (KeyValuePair tag in tags) 12 | { 13 | WriteString(tag.Key); 14 | WriteInteger(tag.Value); 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/RoomInfoUpdatedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class RoomInfoUpdatedComposer : ServerPacket 4 | { 5 | public RoomInfoUpdatedComposer(int roomId) 6 | : base(ServerPacketHeader.RoomInfoUpdatedMessageComposer) 7 | { 8 | WriteInteger(roomId); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/RoomRatingComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | class RoomRatingComposer : ServerPacket 4 | { 5 | public RoomRatingComposer(int score, bool canVote) 6 | : base(ServerPacketHeader.RoomRatingMessageComposer) 7 | { 8 | WriteInteger(score); 9 | WriteBoolean(canVote); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Navigator/UpdateFavouriteRoomComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Navigator 2 | { 3 | public class UpdateFavouriteRoomComposer : ServerPacket 4 | { 5 | public UpdateFavouriteRoomComposer(int roomId, bool added) 6 | : base(ServerPacketHeader.UpdateFavouriteRoomMessageComposer) 7 | { 8 | WriteInteger(roomId); 9 | WriteBoolean(added); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Notifications/MOTDNotificationComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Notifications 2 | { 3 | class MotdNotificationComposer : ServerPacket 4 | { 5 | public MotdNotificationComposer(string message) 6 | : base(ServerPacketHeader.MOTDNotificationMessageComposer) 7 | { 8 | WriteInteger(1); 9 | WriteString(message); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Quests/QuestAbortedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Quests 2 | { 3 | class QuestAbortedComposer : ServerPacket 4 | { 5 | public QuestAbortedComposer() 6 | : base(ServerPacketHeader.QuestAbortedMessageComposer) 7 | { 8 | WriteBoolean(false); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Quests/QuestCompletedCompser.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Quests 2 | { 3 | class QuestCompletedCompser : ServerPacket 4 | { 5 | public QuestCompletedCompser() 6 | : base(ServerPacketHeader.QuestCompletedMessageComposer) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/AI/Bots/OpenBotActionComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.AI.Bots 4 | { 5 | class OpenBotActionComposer : ServerPacket 6 | { 7 | public OpenBotActionComposer(RoomUser BotUser, int ActionId, string BotSpeech) 8 | : base(ServerPacketHeader.OpenBotActionMessageComposer) 9 | { 10 | WriteInteger(BotUser.BotData.Id); 11 | WriteInteger(ActionId); 12 | if (ActionId == 2) 13 | WriteString(BotSpeech); 14 | else if (ActionId == 5) 15 | WriteString(BotUser.BotData.Name); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/AI/Pets/AddExperiencePointsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.AI.Pets 2 | { 3 | class AddExperiencePointsComposer : ServerPacket 4 | { 5 | public AddExperiencePointsComposer(int PetId, int VirtualId, int Amount) 6 | : base(ServerPacketHeader.AddExperiencePointsMessageComposer) 7 | { 8 | WriteInteger(PetId); 9 | WriteInteger(VirtualId); 10 | WriteInteger(Amount); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Action/IgnoreStatusComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Action 2 | { 3 | class IgnoreStatusComposer : ServerPacket 4 | { 5 | public IgnoreStatusComposer(int Status, string Username) 6 | : base(ServerPacketHeader.IgnoreStatusMessageComposer) 7 | { 8 | WriteInteger(Status); 9 | WriteString(Username); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/ActionComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Avatar 2 | { 3 | public class ActionComposer : ServerPacket 4 | { 5 | public ActionComposer(int VirtualId, int Action) 6 | : base(ServerPacketHeader.ActionMessageComposer) 7 | { 8 | WriteInteger(VirtualId); 9 | WriteInteger(Action); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/AvatarAspectUpdateComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Avatar 2 | { 3 | class AvatarAspectUpdateComposer : ServerPacket 4 | { 5 | public AvatarAspectUpdateComposer(string Figure, string Gender) 6 | : base(ServerPacketHeader.AvatarAspectUpdateMessageComposer) 7 | { 8 | WriteString(Figure); 9 | WriteString(Gender); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/AvatarAspectUpdateMessageComposer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using System.Text; 4 | 5 | 6 | using Plus.HabboHotel.Rooms; 7 | using Plus.HabboHotel.GameClients; 8 | 9 | 10 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 11 | { 12 | class AvatarAspectUpdateMessageComposer : ServerPacket 13 | { 14 | public AvatarAspectUpdateMessageComposer(string Figure, string Gender) 15 | : base(ServerPacketHeader.AvatarAspectUpdateMessageComposer) 16 | { 17 | base.WriteString(Figure); 18 | base.WriteString(Gender); 19 | 20 | 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/AvatarEffectComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Avatar 2 | { 3 | class AvatarEffectComposer : ServerPacket 4 | { 5 | public AvatarEffectComposer(int playerID, int effectID) 6 | : base(ServerPacketHeader.AvatarEffectMessageComposer) 7 | { 8 | WriteInteger(playerID); 9 | WriteInteger(effectID); 10 | WriteInteger(0); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/CarryObjectComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Avatar 2 | { 3 | class CarryObjectComposer : ServerPacket 4 | { 5 | public CarryObjectComposer(int virtualID, int itemID) 6 | : base(ServerPacketHeader.CarryObjectMessageComposer) 7 | { 8 | WriteInteger(virtualID); 9 | WriteInteger(itemID); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/DanceComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Avatar 4 | { 5 | class DanceComposer : ServerPacket 6 | { 7 | public DanceComposer(RoomUser Avatar, int Dance) 8 | : base(ServerPacketHeader.DanceMessageComposer) 9 | { 10 | WriteInteger(Avatar.VirtualId); 11 | WriteInteger(Dance); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Avatar/SleepComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Avatar 4 | { 5 | public class SleepComposer : ServerPacket 6 | { 7 | public SleepComposer(RoomUser User, bool IsSleeping) 8 | : base(ServerPacketHeader.SleepMessageComposer) 9 | { 10 | WriteInteger(User.VirtualId); 11 | WriteBoolean(IsSleeping); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Chat/ChatComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Chat 2 | { 3 | public class ChatComposer : ServerPacket 4 | { 5 | public ChatComposer(int VirtualId, string Message, int Emotion, int Colour) 6 | : base(ServerPacketHeader.ChatMessageComposer) 7 | { 8 | WriteInteger(VirtualId); 9 | WriteString(Message); 10 | WriteInteger(Emotion); 11 | WriteInteger(Colour); 12 | WriteInteger(0); 13 | WriteInteger(-1); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Chat/FloodControlComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Chat 2 | { 3 | public class FloodControlComposer : ServerPacket 4 | { 5 | public FloodControlComposer(int floodTime) 6 | : base(ServerPacketHeader.FloodControlMessageComposer) 7 | { 8 | WriteInteger(floodTime); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Chat/ShoutComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Chat 2 | { 3 | public class ShoutComposer : ServerPacket 4 | { 5 | public ShoutComposer(int VirtualId, string Message, int Emotion, int Colour) 6 | : base(ServerPacketHeader.ShoutMessageComposer) 7 | { 8 | WriteInteger(VirtualId); 9 | WriteString(Message); 10 | WriteInteger(Emotion); 11 | WriteInteger(Colour); 12 | WriteInteger(0); 13 | WriteInteger(-1); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Chat/UserTypingComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Chat 2 | { 3 | public class UserTypingComposer : ServerPacket 4 | { 5 | public UserTypingComposer(int VirtualId, bool Typing) 6 | : base(ServerPacketHeader.UserTypingMessageComposer) 7 | { 8 | WriteInteger(VirtualId); 9 | WriteInteger(Typing ? 1 : 0); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Chat/WhisperComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Chat 2 | { 3 | public class WhisperComposer : ServerPacket 4 | { 5 | public WhisperComposer(int VirtualId, string Text, int Emotion, int Colour) 6 | : base(ServerPacketHeader.WhisperMessageComposer) 7 | { 8 | WriteInteger(VirtualId); 9 | WriteString(Text); 10 | WriteInteger(Emotion); 11 | WriteInteger(Colour); 12 | 13 | WriteInteger(0); 14 | WriteInteger(-1); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/FloorHeightMapComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | class FloorHeightMapComposer : ServerPacket 4 | { 5 | public FloorHeightMapComposer(string Map, int WallHeight) 6 | : base(ServerPacketHeader.FloorHeightMapMessageComposer) 7 | { 8 | WriteBoolean(false); 9 | WriteInteger(WallHeight); 10 | WriteString(Map); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/FurnitureAliasesComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | class FurnitureAliasesComposer : ServerPacket 4 | { 5 | public FurnitureAliasesComposer() 6 | : base(ServerPacketHeader.FurnitureAliasesMessageComposer) 7 | { 8 | WriteInteger(0); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/ItemAddComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Items; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 4 | { 5 | class ItemAddComposer : ServerPacket 6 | { 7 | public ItemAddComposer(Item Item) 8 | : base(ServerPacketHeader.ItemAddMessageComposer) 9 | { 10 | WriteString(Item.Id.ToString()); 11 | WriteInteger(Item.GetBaseItem().SpriteId); 12 | WriteString(Item.wallCoord != null ? Item.wallCoord : string.Empty); 13 | 14 | ItemBehaviourUtility.GenerateWallExtradata(Item, this); 15 | 16 | WriteInteger(-1); 17 | WriteInteger((Item.GetBaseItem().Modes > 1) ? 1 : 0); // Type New R63 ('use bottom') 18 | WriteInteger(Item.UserID); 19 | WriteString(Item.Username); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/ItemRemoveComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Items; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 4 | { 5 | class ItemRemoveComposer : ServerPacket 6 | { 7 | public ItemRemoveComposer(Item Item, int UserId) 8 | : base(ServerPacketHeader.ItemRemoveMessageComposer) 9 | { 10 | WriteString(Item.Id.ToString()); 11 | WriteBoolean(false); 12 | WriteInteger(UserId); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/ObjectRemoveComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Items; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 4 | { 5 | class ObjectRemoveComposer : ServerPacket 6 | { 7 | public ObjectRemoveComposer(Item Item, int UserId) 8 | : base(ServerPacketHeader.ObjectRemoveMessageComposer) 9 | { 10 | WriteString(Item.Id.ToString()); 11 | WriteBoolean(false); 12 | WriteInteger(UserId); 13 | WriteInteger(0); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/RoomEntryInfoComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | 4 | class RoomEntryInfoComposer : ServerPacket 5 | { 6 | public RoomEntryInfoComposer(int roomID, bool isOwner) 7 | : base(ServerPacketHeader.RoomEntryInfoMessageComposer) 8 | { 9 | WriteInteger(roomID); 10 | WriteBoolean(isOwner); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/RoomPropertyComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | class RoomPropertyComposer : ServerPacket 4 | { 5 | public RoomPropertyComposer(string name, string val) 6 | : base(ServerPacketHeader.RoomPropertyMessageComposer) 7 | { 8 | WriteString(name); 9 | WriteString(val); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/RoomVisualizationSettingsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | class RoomVisualizationSettingsComposer : ServerPacket 4 | { 5 | public RoomVisualizationSettingsComposer(int Walls, int Floor, bool HideWalls) 6 | : base(ServerPacketHeader.RoomVisualizationSettingsMessageComposer) 7 | { 8 | WriteBoolean(HideWalls); 9 | WriteInteger(Walls); 10 | WriteInteger(Floor); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/UserChangeComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 4 | { 5 | class UserChangeComposer : ServerPacket 6 | { 7 | public UserChangeComposer(RoomUser User, bool Self) 8 | : base(ServerPacketHeader.UserChangeMessageComposer) 9 | { 10 | WriteInteger((Self) ? -1 : User.VirtualId); 11 | WriteString(User.GetClient().GetHabbo().Look); 12 | WriteString(User.GetClient().GetHabbo().Gender); 13 | WriteString(User.GetClient().GetHabbo().Motto); 14 | WriteInteger(User.GetClient().GetHabbo().GetStats().AchievementPoints); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/UserNameChangeComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | class UserNameChangeComposer : ServerPacket 4 | { 5 | public UserNameChangeComposer(int RoomId, int VirtualId, string Username) 6 | : base(ServerPacketHeader.UserNameChangeMessageComposer) 7 | { 8 | WriteInteger(RoomId); 9 | WriteInteger(VirtualId); 10 | WriteString(Username); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Engine/UserRemoveComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Engine 2 | { 3 | class UserRemoveComposer : ServerPacket 4 | { 5 | public UserRemoveComposer(int Id) 6 | : base(ServerPacketHeader.UserRemoveMessageComposer) 7 | { 8 | WriteString(Id.ToString()); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/FloorPlan/FloorPlanFloorMapComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Collections.Generic; 3 | 4 | using Plus.HabboHotel.Items; 5 | 6 | namespace Plus.Communication.Packets.Outgoing.Rooms.FloorPlan 7 | { 8 | class FloorPlanFloorMapComposer : ServerPacket 9 | { 10 | public FloorPlanFloorMapComposer(ICollection Items) 11 | : base(ServerPacketHeader.FloorPlanFloorMapMessageComposer) 12 | { 13 | WriteInteger(Items.Count);//TODO: Figure this out, it pushes the room coords, but it iterates them, x,y|x,y|x,y|and so on. 14 | foreach (Item Item in Items.ToList()) 15 | { 16 | WriteInteger(Item.GetX); 17 | WriteInteger(Item.GetY); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/FloorPlan/FloorPlanSendDoorComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.FloorPlan 2 | { 3 | class FloorPlanSendDoorComposer : ServerPacket 4 | { 5 | public FloorPlanSendDoorComposer(int DoorX, int DoorY, int DoorDirection) 6 | : base(ServerPacketHeader.FloorPlanSendDoorMessageComposer) 7 | { 8 | WriteInteger(DoorX); 9 | WriteInteger(DoorY); 10 | WriteInteger(DoorDirection); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Freeze/UpdateFreezeLivesComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Freeze 2 | { 3 | class UpdateFreezeLivesComposer : ServerPacket 4 | { 5 | public UpdateFreezeLivesComposer(int UserId, int FreezeLives) 6 | : base(ServerPacketHeader.UpdateFreezeLivesMessageComposer) 7 | { 8 | WriteInteger(UserId); 9 | WriteInteger(FreezeLives); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/GnomeBoxComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni 2 | { 3 | class GnomeBoxComposer : ServerPacket 4 | { 5 | public GnomeBoxComposer(int ItemId) 6 | : base(ServerPacketHeader.GnomeBoxMessageComposer) 7 | { 8 | WriteInteger(ItemId); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/LoveLocks/LoveLockDialogueCloseMessageComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.LoveLocks 2 | { 3 | class LoveLockDialogueCloseMessageComposer : ServerPacket 4 | { 5 | public LoveLockDialogueCloseMessageComposer(int ItemId) 6 | : base(ServerPacketHeader.LoveLockDialogueCloseMessageComposer) 7 | { 8 | WriteInteger(ItemId); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/LoveLocks/LoveLockDialogueMessageComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.LoveLocks 2 | { 3 | class LoveLockDialogueMessageComposer : ServerPacket 4 | { 5 | public LoveLockDialogueMessageComposer(int ItemId) 6 | : base(ServerPacketHeader.LoveLockDialogueMessageComposer) 7 | { 8 | WriteInteger(ItemId); 9 | WriteBoolean(true); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/LoveLocks/LoveLockDialogueSetLockedMessageComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.LoveLocks 2 | { 3 | class LoveLockDialogueSetLockedMessageComposer : ServerPacket 4 | { 5 | public LoveLockDialogueSetLockedMessageComposer(int ItemId) 6 | : base(ServerPacketHeader.LoveLockDialogueSetLockedMessageComposer) 7 | { 8 | WriteInteger(ItemId); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/OpenGiftComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Items; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni 4 | { 5 | class OpenGiftComposer : ServerPacket 6 | { 7 | public OpenGiftComposer(ItemData Data, string Text, Item Item, bool ItemIsInRoom) 8 | : base(ServerPacketHeader.OpenGiftMessageComposer) 9 | { 10 | WriteString(Data.Type.ToString()); 11 | WriteInteger(Data.SpriteId); 12 | WriteString(Data.ItemName); 13 | WriteInteger(Item.Id); 14 | WriteString(Data.Type.ToString()); 15 | WriteBoolean(ItemIsInRoom);//Is it in the room? 16 | WriteString(Text); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/RentableSpaces/RentableSpaceComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.RentableSpaces 2 | { 3 | public class RentableSpaceComposer : ServerPacket 4 | { 5 | public RentableSpaceComposer() 6 | : base(ServerPacketHeader.RentableSpaceMessageComposer) 7 | { 8 | WriteBoolean(true); //Is rented y/n 9 | WriteInteger(-1); //No fucking clue 10 | WriteInteger(-1); //No fucking clue 11 | WriteString("Tyler-Retros"); //Username of who owns. 12 | WriteInteger(360); //Time to expire. 13 | WriteInteger(-1); //No fucking clue 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/Stickys/StickyNoteComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.Stickys 2 | { 3 | class StickyNoteComposer : ServerPacket 4 | { 5 | public StickyNoteComposer(string ItemId, string Extradata) 6 | : base(ServerPacketHeader.StickyNoteMessageComposer) 7 | { 8 | WriteString(ItemId); 9 | WriteString(Extradata); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/UpdateMagicTileComposer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni 4 | { 5 | class UpdateMagicTileComposer : ServerPacket 6 | { 7 | public UpdateMagicTileComposer(int ItemId, int Decimal) 8 | : base(ServerPacketHeader.UpdateMagicTileMessageComposer) 9 | { 10 | WriteInteger(Convert.ToInt32(ItemId)); 11 | WriteInteger(Decimal); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/Wired/HideWiredConfigComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.Wired 2 | { 3 | class HideWiredConfigComposer : ServerPacket 4 | { 5 | public HideWiredConfigComposer() 6 | : base(ServerPacketHeader.HideWiredConfigMessageComposer) 7 | { 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Furni/YouTubeTelevisions/GetYouTubeVideoComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Furni.YouTubeTelevisions 2 | { 3 | class GetYouTubeVideoComposer : ServerPacket 4 | { 5 | public GetYouTubeVideoComposer(int ItemId, string YouTubeVideo) 6 | : base(ServerPacketHeader.GetYouTubeVideoMessageComposer) 7 | { 8 | WriteInteger(ItemId); 9 | WriteString(YouTubeVideo);//"9Ht5RZpzPqw"); 10 | WriteInteger(0);//Start seconds 11 | WriteInteger(0);//End seconds 12 | WriteInteger(0);//State 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Notifications/RoomErrorNotifComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Notifications 2 | { 3 | class RoomErrorNotifComposer : ServerPacket 4 | { 5 | public RoomErrorNotifComposer(int Error) 6 | : base(ServerPacketHeader.RoomErrorNotifMessageComposer) 7 | { 8 | WriteInteger(Error); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Permissions/YouAreControllerMessageComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Permissions 2 | { 3 | class YouAreControllerComposer : ServerPacket 4 | { 5 | public YouAreControllerComposer(int Setting) 6 | : base(ServerPacketHeader.YouAreControllerMessageComposer) 7 | { 8 | WriteInteger(Setting); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Permissions/YouAreNotControllerComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Permissions 2 | { 3 | class YouAreNotControllerComposer : ServerPacket 4 | { 5 | public YouAreNotControllerComposer() 6 | : base(ServerPacketHeader.YouAreNotControllerMessageComposer) 7 | { 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Permissions/YouAreOwnerComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Permissions 2 | { 3 | class YouAreOwnerComposer : ServerPacket 4 | { 5 | public YouAreOwnerComposer() 6 | : base(ServerPacketHeader.YouAreOwnerMessageComposer) 7 | { 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Polls/PollOfferComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Polls 2 | { 3 | class PollOfferComposer : ServerPacket 4 | { 5 | public PollOfferComposer() 6 | : base(1074) 7 | { 8 | WriteInteger(111141);//Room Id 9 | WriteString("CLIENT_NPS"); 10 | WriteString("Customer Satisfaction Poll"); 11 | WriteString("Give us your opinion!"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Polls/Questions/QuestionParserComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Polls.Questions 2 | { 3 | class QuestionParserComposer : ServerPacket 4 | { 5 | public QuestionParserComposer() 6 | : base(ServerPacketHeader.QuestionParserMessageComposer) 7 | { 8 | WriteString("MATCHING_POLL"); 9 | WriteInteger(2686);//?? 10 | WriteInteger(10016);//??? 11 | WriteInteger(60);//Duration 12 | WriteInteger(10016); 13 | WriteInteger(9); 14 | WriteInteger(6); 15 | WriteString("MAFIA WARS: WEAPONS VOTE"); 16 | WriteInteger(0); 17 | WriteInteger(6); 18 | WriteInteger(0); 19 | WriteInteger(0); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Session/CantConnectComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Session 2 | { 3 | class CantConnectComposer : ServerPacket 4 | { 5 | public CantConnectComposer(int Error) 6 | : base(ServerPacketHeader.CantConnectMessageComposer) 7 | { 8 | WriteInteger(Error); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Session/CloseConnectionComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Session 2 | { 3 | class CloseConnectionComposer : ServerPacket 4 | { 5 | public CloseConnectionComposer() 6 | : base(ServerPacketHeader.CloseConnectionMessageComposer) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Session/FlatAccessibleComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Session 2 | { 3 | class FlatAccessibleComposer : ServerPacket 4 | { 5 | public FlatAccessibleComposer(string Username) 6 | : base(ServerPacketHeader.FlatAccessibleMessageComposer) 7 | { 8 | WriteString(Username); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Session/OpenConnectionComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Session 2 | { 3 | class OpenConnectionComposer : ServerPacket 4 | { 5 | public OpenConnectionComposer() 6 | : base(ServerPacketHeader.OpenConnectionMessageComposer) 7 | { 8 | 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Session/RoomForwardComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Session 2 | { 3 | public class RoomForwardComposer : ServerPacket 4 | { 5 | public RoomForwardComposer(int RoomId) 6 | : base(ServerPacketHeader.RoomForwardMessageComposer) 7 | { 8 | WriteInteger(RoomId); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Session/RoomReadyComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Session 2 | { 3 | class RoomReadyComposer : ServerPacket 4 | { 5 | public RoomReadyComposer(int RoomId, string Model) 6 | : base(ServerPacketHeader.RoomReadyMessageComposer) 7 | { 8 | WriteString(Model); 9 | WriteInteger(RoomId); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Settings/FlatControllerAddedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Settings 2 | { 3 | class FlatControllerAddedComposer : ServerPacket 4 | { 5 | public FlatControllerAddedComposer(int RoomId, int UserId, string Username) 6 | : base(ServerPacketHeader.FlatControllerAddedMessageComposer) 7 | { 8 | WriteInteger(RoomId); 9 | WriteInteger(UserId); 10 | WriteString(Username); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Settings/FlatControllerRemovedComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Settings 4 | { 5 | class FlatControllerRemovedComposer : ServerPacket 6 | { 7 | public FlatControllerRemovedComposer(Room Instance, int UserId) 8 | : base(ServerPacketHeader.FlatControllerRemovedMessageComposer) 9 | { 10 | WriteInteger(Instance.Id); 11 | WriteInteger(UserId); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Settings/GetRoomFilterListComposer.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.Rooms; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Rooms.Settings 4 | { 5 | class GetRoomFilterListComposer : ServerPacket 6 | { 7 | public GetRoomFilterListComposer(Room Instance) 8 | : base(ServerPacketHeader.GetRoomFilterListMessageComposer) 9 | { 10 | WriteInteger(Instance.WordFilterList.Count); 11 | foreach (string Word in Instance.WordFilterList) 12 | { 13 | WriteString(Word); 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Settings/RoomMuteSettingsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Settings 2 | { 3 | class RoomMuteSettingsComposer : ServerPacket 4 | { 5 | public RoomMuteSettingsComposer(bool Status) 6 | : base(ServerPacketHeader.RoomMuteSettingsMessageComposer) 7 | { 8 | WriteBoolean(Status); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Settings/RoomSettingsSavedComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Settings 2 | { 3 | class RoomSettingsSavedComposer : ServerPacket 4 | { 5 | public RoomSettingsSavedComposer(int roomID) 6 | : base(ServerPacketHeader.RoomSettingsSavedMessageComposer) 7 | { 8 | WriteInteger(roomID); 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Rooms/Settings/UnbanUserFromRoomComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Rooms.Settings 2 | { 3 | class UnbanUserFromRoomComposer : ServerPacket 4 | { 5 | public UnbanUserFromRoomComposer(int RoomId, int UserId) 6 | : base(ServerPacketHeader.UnbanUserFromRoomMessageComposer) 7 | { 8 | WriteInteger(RoomId); 9 | WriteInteger(UserId); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Sound/SoundSettingsComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Sound 4 | { 5 | class SoundSettingsComposer : ServerPacket 6 | { 7 | public SoundSettingsComposer(IEnumerable volumes, bool chatPreference, bool invitesStatus, bool focusPreference, int friendBarState) 8 | : base(ServerPacketHeader.SoundSettingsMessageComposer) 9 | { 10 | foreach (int volume in volumes) 11 | { 12 | WriteInteger(volume); 13 | } 14 | 15 | WriteBoolean(chatPreference); 16 | WriteBoolean(invitesStatus); 17 | WriteBoolean(focusPreference); 18 | WriteInteger(friendBarState); 19 | WriteInteger(0); 20 | WriteInteger(0); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Sound/TraxSongInfoComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Sound 2 | { 3 | class TraxSongInfoComposer : ServerPacket 4 | { 5 | public TraxSongInfoComposer() 6 | : base(ServerPacketHeader.TraxSongInfoMessageComposer) 7 | { 8 | WriteInteger(0);//Count 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Users/HabboUserBadgesComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | 3 | using Plus.HabboHotel.Users; 4 | using Plus.HabboHotel.Users.Badges; 5 | 6 | namespace Plus.Communication.Packets.Outgoing.Users 7 | { 8 | class HabboUserBadgesComposer : ServerPacket 9 | { 10 | public HabboUserBadgesComposer(Habbo habbo) 11 | : base(ServerPacketHeader.HabboUserBadgesMessageComposer) 12 | { 13 | WriteInteger(habbo.Id); 14 | WriteInteger(habbo.GetBadgeComponent().EquippedCount); 15 | 16 | foreach (Badge badge in habbo.GetBadgeComponent().GetBadges().Where(b => b.Slot > 0).ToList()) 17 | { 18 | WriteInteger(badge.Slot); 19 | WriteString(badge.Code); 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Users/IgnoredUsersComposer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Plus.Communication.Packets.Outgoing.Users 4 | { 5 | public class IgnoredUsersComposer : ServerPacket 6 | { 7 | public IgnoredUsersComposer(IReadOnlyCollection ignoredUsers) 8 | : base(ServerPacketHeader.IgnoredUsersMessageComposer) 9 | { 10 | WriteInteger(ignoredUsers.Count); 11 | foreach (string username in ignoredUsers) 12 | { 13 | WriteString(username); 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Users/RespectNotificationComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Users 2 | { 3 | class RespectNotificationComposer : ServerPacket 4 | { 5 | public RespectNotificationComposer(int userId, int respect) 6 | : base(ServerPacketHeader.RespectNotificationMessageComposer) 7 | { 8 | WriteInteger(userId); 9 | WriteInteger(respect); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Users/ScrSendUserInfoComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Users 2 | { 3 | class ScrSendUserInfoComposer : ServerPacket 4 | { 5 | public ScrSendUserInfoComposer() 6 | : base(ServerPacketHeader.ScrSendUserInfoMessageComposer) 7 | { 8 | WriteString("habbo_club"); 9 | WriteInteger(0); //display days 10 | WriteInteger(2); 11 | WriteInteger(0); //display months 12 | WriteInteger(1); 13 | WriteBoolean(true); // hc 14 | WriteBoolean(true); // vip 15 | WriteInteger(0); 16 | WriteInteger(0); 17 | WriteInteger(495); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Users/UpdateUsernameComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Users 2 | { 3 | class UpdateUsernameComposer : ServerPacket 4 | { 5 | public UpdateUsernameComposer(string username) 6 | : base(ServerPacketHeader.UpdateUsernameMessageComposer) 7 | { 8 | WriteInteger(0); 9 | WriteString(username); 10 | WriteInteger(0); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Communication/Packets/Outgoing/Users/UserTagsComposer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Packets.Outgoing.Users 2 | { 3 | class UserTagsComposer : ServerPacket 4 | { 5 | public UserTagsComposer(int userId) 6 | : base(ServerPacketHeader.UserTagsMessageComposer) 7 | { 8 | WriteInteger(userId); 9 | WriteInteger(0);//Count of the tags. 10 | { 11 | //Append a string. 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadBansCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadBansCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to re-cache the bans."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetGame().GetModerationManager().ReCacheBans(); 18 | 19 | return true; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadCatalogCommand.cs: -------------------------------------------------------------------------------- 1 | using Plus.Communication.Packets.Outgoing.Catalog; 2 | 3 | namespace Plus.Communication.Rcon.Commands.Hotel 4 | { 5 | class ReloadCatalogCommand : IRconCommand 6 | { 7 | public string Description 8 | { 9 | get { return "This command is used to reload the catalog."; } 10 | } 11 | 12 | public string Parameters 13 | { 14 | get { return ""; } 15 | } 16 | 17 | public bool TryExecute(string[] parameters) 18 | { 19 | PlusEnvironment.GetGame().GetCatalog().Init(PlusEnvironment.GetGame().GetItemManager()); 20 | PlusEnvironment.GetGame().GetClientManager().SendPacket(new CatalogUpdatedComposer()); 21 | return true; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadFilterCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadFilterCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to reload the chatting filter manager."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetGame().GetChatManager().GetFilter().Init(); 18 | return true; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadItemsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadItemsCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to reload the game items."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetGame().GetItemManager().Init(); 18 | 19 | return true; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadNavigatorCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadNavigatorCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to reload the navigator."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetGame().GetNavigator().Init(); 18 | 19 | return true; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadQuestsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadQuestsCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to reload the quests manager."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetGame().GetQuestManager().Init(); 18 | 19 | return true; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadServerSettingsCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadServerSettingsCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to reload the server settings."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetSettingsManager().Init(); 18 | return true; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/Hotel/ReloadVouchersCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands.Hotel 2 | { 3 | class ReloadVouchersCommand : IRconCommand 4 | { 5 | public string Description 6 | { 7 | get { return "This command is used to reload the voucher manager."; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return ""; } 13 | } 14 | 15 | public bool TryExecute(string[] parameters) 16 | { 17 | PlusEnvironment.GetGame().GetCatalog().GetVoucherManager().Init(); 18 | 19 | return true; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Communication/RCON/Commands/IRCONCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Communication.Rcon.Commands 2 | { 3 | public interface IRconCommand 4 | { 5 | string Parameters { get; } 6 | string Description { get; } 7 | bool TryExecute(string[] parameters); 8 | } 9 | } -------------------------------------------------------------------------------- /Config/config.ini: -------------------------------------------------------------------------------- 1 | ## MySQL Configuration 2 | db.hostname=127.0.0.1 3 | db.port=3306 4 | db.username=root 5 | db.password=password 6 | db.name=plus 7 | 8 | ## MySQL pooling setup (controls amount of connections) 9 | db.pool.minsize=5 10 | db.pool.maxsize=65 11 | 12 | ## Game TCP/IP Configuration 13 | game.tcp.bindip=127.0.0.1 14 | game.tcp.port=1232 15 | game.tcp.conlimit=100000 16 | game.tcp.conperip=50000 17 | game.tcp.enablenagles=true 18 | 19 | ## MUS TCP/IP Configuration 20 | rcon.tcp.bindip=127.0.0.1 21 | rcon.tcp.port=30001 22 | rcon.tcp.allowedaddr=localhost;127.0.0.1 23 | 24 | ## Client configuration 25 | client.ping.enabled=1 26 | client.ping.interval=30000 27 | client.maxrequests=300 -------------------------------------------------------------------------------- /Core/FigureData/Types/Color.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Core.FigureData.Types 2 | { 3 | public class Color 4 | { 5 | public int Id { get; set; } 6 | public int Index { get; set; } 7 | public int ClubLevel { get; set; } 8 | public bool Selectable { get; set; } 9 | public string Value { get; set; } 10 | 11 | public Color(int id, int index, int clubLevel, bool selectable, string value) 12 | { 13 | Id = id; 14 | Index = index; 15 | ClubLevel = clubLevel; 16 | Selectable = selectable; 17 | Value = value; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Core/FigureData/Types/FigureSet.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Plus.Core.FigureData.Types 4 | { 5 | class FigureSet 6 | { 7 | public SetType Type { get; set; } 8 | public int PalletId { get; set; } 9 | public Dictionary Sets { get; set; } 10 | 11 | public FigureSet(SetType type, int palletId) 12 | { 13 | Type = type; 14 | PalletId = palletId; 15 | 16 | Sets = new Dictionary(); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Core/FigureData/Types/Palette.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Plus.Core.FigureData.Types 4 | { 5 | public class Palette 6 | { 7 | public int Id { get; set; } 8 | public Dictionary Colors { get; set; } 9 | 10 | public Palette(int id) 11 | { 12 | Id = id; 13 | Colors = new Dictionary(); 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Core/FigureData/Types/Part.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Core.FigureData.Types 2 | { 3 | class Part 4 | { 5 | public int Id { get; set; } 6 | public SetType SetType { get; set; } 7 | public bool Colorable { get; set; } 8 | public int Index { get; set; } 9 | public int ColorIndex { get; set; } 10 | 11 | 12 | public Part(int id, SetType setType, bool colorable, int index, int colorIndex) 13 | { 14 | Id = id; 15 | SetType = setType; 16 | Colorable = colorable; 17 | Index = index; 18 | ColorIndex = colorIndex; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Core/FigureData/Types/SetType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Core.FigureData.Types 2 | { 3 | public enum SetType 4 | { 5 | HR, 6 | HD, 7 | CH, 8 | LG, 9 | SH, 10 | HA, 11 | HE, 12 | EA, 13 | FA, 14 | CA, 15 | WA, 16 | CC, 17 | CP 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Database/Adapter/NormalQueryReactor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using Plus.Database.Interfaces; 4 | 5 | namespace Plus.Database.Adapter 6 | { 7 | public class NormalQueryReactor : QueryAdapter, IQueryAdapter 8 | { 9 | public NormalQueryReactor(IDatabaseClient client) 10 | : base(client) 11 | { 12 | Command = client.CreateNewCommand(); 13 | } 14 | 15 | public void Dispose() 16 | { 17 | Command.Dispose(); 18 | Client.Dispose(); 19 | GC.SuppressFinalize(this); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Database/Interfaces/IDatabaseClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using MySql.Data.MySqlClient; 3 | 4 | namespace Plus.Database.Interfaces 5 | { 6 | public interface IDatabaseClient : IDisposable 7 | { 8 | void Connect(); 9 | void Disconnect(); 10 | IQueryAdapter GetQueryReactor(); 11 | MySqlCommand CreateNewCommand(); 12 | } 13 | } -------------------------------------------------------------------------------- /Database/Interfaces/IQueryAdapter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Database.Interfaces 4 | { 5 | public interface IQueryAdapter : IRegularQueryAdapter, IDisposable 6 | { 7 | long InsertQuery(); 8 | void RunQuery(); 9 | } 10 | } -------------------------------------------------------------------------------- /Database/Interfaces/IRegularQueryAdapter.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Plus.Database.Interfaces 4 | { 5 | public interface IRegularQueryAdapter 6 | { 7 | void AddParameter(string name, object query); 8 | bool FindsResult(); 9 | int GetInteger(); 10 | DataRow GetRow(); 11 | string GetString(); 12 | DataTable GetTable(); 13 | void RunQuery(string query); 14 | void SetQuery(string query); 15 | } 16 | } -------------------------------------------------------------------------------- /GlobalSuppressions.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sledmore/PlusEMU/ba70b05e36dbda8a96e5ab0dfc0f502fe2c94127/GlobalSuppressions.cs -------------------------------------------------------------------------------- /HabboHotel/Achievements/Achievement.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Plus.HabboHotel.Achievements 4 | { 5 | public class Achievement 6 | { 7 | public int Id { get; } 8 | public string Category { get; } 9 | public string GroupName { get; } 10 | public int GameId { get; } 11 | 12 | public Dictionary Levels; 13 | 14 | public Achievement(int id, string groupName, string category, int gameId) 15 | { 16 | Id = id; 17 | GroupName = groupName; 18 | Category = category; 19 | GameId = gameId; 20 | Levels = new Dictionary(); 21 | } 22 | 23 | public void AddLevel(AchievementLevel level) 24 | { 25 | Levels.Add(level.Level, level); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /HabboHotel/Achievements/AchievementLevel.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Achievements 2 | { 3 | public struct AchievementLevel 4 | { 5 | public int Level { get; } 6 | public int Requirement { get; } 7 | public int RewardPixels { get; } 8 | public int RewardPoints { get; } 9 | 10 | public AchievementLevel(int level, int rewardPixels, int rewardPoints, int requirement) 11 | { 12 | Level = level; 13 | RewardPixels = rewardPixels; 14 | RewardPoints = rewardPoints; 15 | Requirement = requirement; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /HabboHotel/Achievements/UserAchievement.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Achievements 2 | { 3 | public class UserAchievement 4 | { 5 | public string AchievementGroup { get; } 6 | public int Level { get; set; } 7 | public int Progress { get; set; } 8 | 9 | public UserAchievement(string achievementGroup, int level, int progress) 10 | { 11 | AchievementGroup = achievementGroup; 12 | Level = level; 13 | Progress = progress; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /HabboHotel/Badges/BadgeDefinition.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Badges 2 | { 3 | public class BadgeDefinition 4 | { 5 | public string Code { get; } 6 | public string RequiredRight { get; } 7 | 8 | public BadgeDefinition(string code, string requiredRight) 9 | { 10 | Code = code; 11 | RequiredRight = requiredRight; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /HabboHotel/Cache/Type/UserCache.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.HabboHotel.Cache.Type 4 | { 5 | public class UserCache 6 | { 7 | public int Id { get; set; } 8 | public string Username { get; set; } 9 | public string Motto { get; set; } 10 | public string Look { get; set; } 11 | public DateTime AddedTime { get; set; } 12 | public UserCache(int id, string username, string motto, string look) 13 | { 14 | Id = id; 15 | Username = username; 16 | Motto = motto; 17 | Look = look; 18 | AddedTime = DateTime.Now; 19 | } 20 | public bool IsExpired() 21 | { 22 | TimeSpan cacheTime = DateTime.Now - AddedTime; 23 | return cacheTime.TotalMinutes >= 30; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /HabboHotel/Catalog/CatalogBot.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Catalog 2 | { 3 | public class CatalogBot 4 | { 5 | public int Id { get; private set; } 6 | public string Figure { get; private set; } 7 | public string Gender { get; private set; } 8 | public string Motto { get; private set; } 9 | public string Name { get; private set; } 10 | public string AIType { get; private set; } 11 | 12 | public CatalogBot(int id, string name, string figure, string motto, string gender, string type) 13 | { 14 | Id = id; 15 | Name = name; 16 | Figure = figure; 17 | Motto = motto; 18 | Gender = gender; 19 | AIType = type; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /HabboHotel/Catalog/CatalogPromotion.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Catalog 2 | { 3 | public class CatalogPromotion 4 | { 5 | public int Id { get; private set; } 6 | public string Title { get; private set; } 7 | public string Image { get; private set; } 8 | public int Unknown { get; private set; } 9 | public string PageLink { get; private set; } 10 | public int ParentId { get; private set; } 11 | 12 | public CatalogPromotion(int id, string title, string image, int unknown, string pageLink, int parentId) 13 | { 14 | Id = id; 15 | Title = title; 16 | Image = image; 17 | Unknown = unknown; 18 | PageLink = pageLink; 19 | ParentId = parentId; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HabboHotel/Catalog/Marketplace/MarketOffer.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Catalog.Marketplace 2 | { 3 | public class MarketOffer 4 | { 5 | public int OfferID { get; private set; } 6 | public int ItemType { get; private set; } 7 | public int SpriteId { get; private set; } 8 | public int TotalPrice { get; private set; } 9 | public int LimitedNumber { get; private set; } 10 | public int LimitedStack { get; private set; } 11 | 12 | public MarketOffer(int offerId, int spriteId, int totalPrice, int itemType, int limitedNumber, int limitedStack) 13 | { 14 | OfferID = offerId; 15 | SpriteId = spriteId; 16 | ItemType = itemType; 17 | TotalPrice = totalPrice; 18 | LimitedNumber = limitedNumber; 19 | LimitedStack = limitedStack; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HabboHotel/Catalog/Vouchers/VoucherType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Catalog.Vouchers 2 | { 3 | public enum VoucherType 4 | { 5 | Credit, 6 | Ducket, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /HabboHotel/Catalog/Vouchers/VoucherUtility.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Catalog.Vouchers 2 | { 3 | public static class VoucherUtility 4 | { 5 | public static VoucherType GetType(string type) 6 | { 7 | switch (type) 8 | { 9 | default: 10 | case "credit": 11 | return VoucherType.Credit; 12 | case "ducket": 13 | return VoucherType.Ducket; 14 | } 15 | } 16 | 17 | public static string FromType(VoucherType type) 18 | { 19 | switch (type) 20 | { 21 | default: 22 | case VoucherType.Credit: 23 | return "credit"; 24 | case VoucherType.Ducket: 25 | return "ducket"; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /HabboHotel/Groups/BadgePartUtility.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Groups 2 | { 3 | public static class BadgePartUtility 4 | { 5 | public static string WorkBadgeParts(bool isBase, string partId, string colour, string position) 6 | { 7 | string parts = isBase ? "b" : "s"; 8 | partId = (int.Parse(partId) < 10) ? "0" + partId : partId; 9 | colour = (int.Parse(colour) < 10) ? "0" + colour : colour; 10 | parts += partId + colour + position; 11 | 12 | if (!isBase && (parts == "s00000" || parts == "s000000")) 13 | { 14 | return string.Empty; 15 | } 16 | 17 | return parts; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HabboHotel/Groups/GroupBadgeParts.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Groups 2 | { 3 | public class GroupBadgeParts 4 | { 5 | public int Id { get; } 6 | public string AssetOne { get; } 7 | public string AssetTwo { get; } 8 | 9 | public GroupBadgeParts(int id, string assetOne, string assetTwo) 10 | { 11 | Id = id; 12 | AssetOne = assetOne; 13 | AssetTwo = assetTwo; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HabboHotel/Groups/GroupColours.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Groups 2 | { 3 | public class GroupColours 4 | { 5 | public int Id { get; } 6 | public string Colour { get; } 7 | 8 | public GroupColours(int id, string colour) 9 | { 10 | Id = id; 11 | Colour = colour; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /HabboHotel/Groups/GroupMember.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Plus.HabboHotel.Groups 8 | { 9 | public class GroupMember 10 | { 11 | public int Id { get; set; } 12 | public string Username { get; set; } 13 | public string Look { get; set; } 14 | 15 | public GroupMember(int Id, string Username, string Look) 16 | { 17 | this.Id = Id; 18 | this.Username = Username; 19 | this.Look = Look; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HabboHotel/Groups/GroupType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Groups 2 | { 3 | public enum GroupType 4 | { 5 | Open = 0, 6 | Locked = 1, 7 | Private = 2 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HabboHotel/Items/Data/Moodlight/MoodlightPreset.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Items.Data.Moodlight 2 | { 3 | public class MoodlightPreset 4 | { 5 | public bool BackgroundOnly; 6 | public string ColorCode; 7 | public int ColorIntensity; 8 | 9 | public MoodlightPreset(string ColorCode, int ColorIntensity, bool BackgroundOnly) 10 | { 11 | this.ColorCode = ColorCode; 12 | this.ColorIntensity = ColorIntensity; 13 | this.BackgroundOnly = BackgroundOnly; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HabboHotel/Items/Interactor/IFurniInteractor.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.HabboHotel.Items.Interactor 4 | { 5 | public interface IFurniInteractor 6 | { 7 | void OnPlace(GameClient session, Item item); 8 | void OnRemove(GameClient session, Item item); 9 | void OnTrigger(GameClient session, Item item, int request, bool hasRights); 10 | void OnWiredTrigger(Item item); 11 | } 12 | } -------------------------------------------------------------------------------- /HabboHotel/Items/Wired/IWiredCycle.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Items.Wired 2 | { 3 | interface IWiredCycle 4 | { 5 | int Delay { get; set; } 6 | int TickCount { get; set; } 7 | bool OnCycle(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HabboHotel/Items/Wired/IWiredItem.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Concurrent; 2 | 3 | using Plus.Communication.Packets.Incoming; 4 | using Plus.HabboHotel.Rooms; 5 | 6 | namespace Plus.HabboHotel.Items.Wired 7 | { 8 | public interface IWiredItem 9 | { 10 | Room Instance { get; set; } 11 | Item Item { get; set; } 12 | WiredBoxType Type { get; } 13 | ConcurrentDictionary SetItems { get; set; } 14 | string StringData { get; set; } 15 | bool BoolData { get; set; } 16 | void HandleSave(ClientPacket Packet); 17 | bool Execute(params object[] Params); 18 | string ItemsData { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HabboHotel/Moderation/ModerationBan.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Moderation 2 | { 3 | public class ModerationBan 4 | { 5 | public string Value { get; set; } 6 | public double Expire { get; set; } 7 | public string Reason { get; set; } 8 | public ModerationBanType Type { get; set; } 9 | 10 | public ModerationBan(ModerationBanType type, string value, string reason, double expire) 11 | { 12 | Type = type; 13 | Value = value; 14 | Reason = reason; 15 | Expire = expire; 16 | } 17 | 18 | public bool Expired 19 | { 20 | get 21 | { 22 | if (PlusEnvironment.GetUnixTimestamp() >= Expire) 23 | return true; 24 | return false; 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /HabboHotel/Moderation/ModerationBanType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Moderation 2 | { 3 | public enum ModerationBanType 4 | { 5 | IP, 6 | Machine, 7 | Username 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HabboHotel/Navigator/FeaturedRoom.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Navigator 2 | { 3 | public class FeaturedRoom 4 | { 5 | public int RoomId { get; private set; } 6 | public string Caption { get; private set; } 7 | public string Description { get; private set; } 8 | public string Image { get; private set; } 9 | 10 | public FeaturedRoom(int roomId, string caption, string description, string images) 11 | { 12 | RoomId = roomId; 13 | Caption = caption; 14 | Description = description; 15 | Image = images; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /HabboHotel/Navigator/NavigatorCategoryType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Navigator 2 | { 3 | public enum NavigatorCategoryType 4 | { 5 | Category, 6 | Featured, 7 | Popular, 8 | Recommended, 9 | Query, 10 | MyRooms, 11 | MyFavourites, 12 | MyGroups, 13 | MyHistory, 14 | MyFriendsRooms, 15 | MyFrequentHistory, 16 | TopPromotions, 17 | PromotionCategory, 18 | MyRights 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HabboHotel/Navigator/NavigatorSearchAllowance.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Navigator 2 | { 3 | public enum NavigatorSearchAllowance 4 | { 5 | Nothing, 6 | ShowMore, 7 | GoBack 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HabboHotel/Navigator/NavigatorViewMode.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Navigator 2 | { 3 | public enum NavigatorViewMode 4 | { 5 | Regular, 6 | Thumbnail 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /HabboHotel/Navigator/NavigatorViewModeUtility.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Navigator 2 | { 3 | public static class NavigatorViewModeUtility 4 | { 5 | public static NavigatorViewMode GetViewModeByString(string mode) 6 | { 7 | switch (mode.ToUpper()) 8 | { 9 | default: 10 | case "REGULAR": 11 | return NavigatorViewMode.Regular; 12 | case "THUMBNAIL": 13 | return NavigatorViewMode.Thumbnail; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HabboHotel/Permissions/Permission.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Permissions 2 | { 3 | class Permission 4 | { 5 | public int Id { get; set; } 6 | public string PermissionName { get; set; } 7 | public string Description { get; set; } 8 | 9 | public Permission(int id, string name, string description) 10 | { 11 | Id = id; 12 | PermissionName = name; 13 | Description = description; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HabboHotel/Permissions/PermissionCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Permissions 2 | { 3 | class PermissionCommand 4 | { 5 | public string Command { get; private set; } 6 | public int GroupId { get; private set; } 7 | public int SubscriptionId { get; private set; } 8 | 9 | public PermissionCommand(string command, int groupId, int subscriptionId) 10 | { 11 | Command = command; 12 | GroupId = groupId; 13 | SubscriptionId = subscriptionId; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /HabboHotel/Permissions/PermissionGroup.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Permissions 2 | { 3 | public class PermissionGroup 4 | { 5 | public string Name { get; set; } 6 | public string Description { get; set; } 7 | public string Badge { get; set; } 8 | 9 | public PermissionGroup(string Name, string Description, string Badge) 10 | { 11 | this.Name = Name; 12 | this.Description = Description; 13 | this.Badge = Badge; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HabboHotel/Rewards/RewardType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rewards 2 | { 3 | public enum RewardType 4 | { 5 | Badge, 6 | Credits, 7 | Duckets, 8 | Diamonds, 9 | None 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /HabboHotel/Rewards/RewardTypeUtility.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rewards 2 | { 3 | public static class RewardTypeUtility 4 | { 5 | public static RewardType GetType(string type) 6 | { 7 | switch (type.ToLower()) 8 | { 9 | case "badge": 10 | return RewardType.Badge; 11 | 12 | case "credits": 13 | return RewardType.Credits; 14 | 15 | case "duckets": 16 | return RewardType.Duckets; 17 | 18 | case "diamonds": 19 | return RewardType.Diamonds; 20 | 21 | default: 22 | case "none": 23 | return RewardType.None; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/AI/BotAIType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.AI 2 | { 3 | public enum BotAIType 4 | { 5 | Pet, 6 | Generic, 7 | Bartender, 8 | CasinoBot 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/AI/DatabaseUpdateState.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.AI 2 | { 3 | public enum PetDatabaseUpdateState 4 | { 5 | Updated, 6 | NeedsUpdate, 7 | NeedsInsert 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/AI/Speech/RandomSpeech.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.AI.Speech 2 | { 3 | public class RandomSpeech 4 | { 5 | public int BotID; 6 | public string Message; 7 | 8 | public RandomSpeech(string Message, int BotID) 9 | { 10 | this.BotID = BotID; 11 | this.Message = Message; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /HabboHotel/Rooms/ByteToItemEffectEnum.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms 2 | { 3 | public static class ByteToItemEffectEnum 4 | { 5 | public static ItemEffectType Parse(byte number) 6 | { 7 | switch (number) 8 | { 9 | case 0: 10 | return ItemEffectType.None; 11 | case 1: 12 | return ItemEffectType.Swim; 13 | case 2: 14 | return ItemEffectType.Normalskates; 15 | case 3: 16 | return ItemEffectType.Iceskates; 17 | case 4: 18 | return ItemEffectType.SwimLow; 19 | case 5: 20 | return ItemEffectType.SwimHalloween; 21 | default: 22 | return ItemEffectType.None; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/Chat/Commands/IChatCommand.cs: -------------------------------------------------------------------------------- 1 | using Plus.HabboHotel.GameClients; 2 | 3 | namespace Plus.HabboHotel.Rooms.Chat.Commands 4 | { 5 | public interface IChatCommand 6 | { 7 | string PermissionRequired { get; } 8 | string Parameters { get; } 9 | string Description { get; } 10 | void Execute(GameClient Session, Room Room, string[] Params); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/Chat/Commands/User/UnloadCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.Chat.Commands.User 2 | { 3 | class UnloadCommand : IChatCommand 4 | { 5 | public string PermissionRequired 6 | { 7 | get { return "command_unload"; } 8 | } 9 | 10 | public string Parameters 11 | { 12 | get { return "%id%"; } 13 | } 14 | 15 | public string Description 16 | { 17 | get { return "Unload the current room."; } 18 | } 19 | 20 | public void Execute(GameClients.GameClient session, Room room, string[] Params) 21 | { 22 | if (room.CheckRights(session, true) || session.GetHabbo().GetPermissions().HasRight("room_unload_any")) 23 | { 24 | PlusEnvironment.GetGame().GetRoomManager().UnloadRoom(room.Id); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/Chat/Emotions/ChatEmotions.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.Chat.Emotions 2 | { 3 | enum ChatEmotions 4 | { 5 | Smile, 6 | Angry, 7 | Sad, 8 | Shocked, 9 | None 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/Chat/Pets/Commands/PetCommand.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.Chat.Pets.Commands 2 | { 3 | public class PetCommand 4 | { 5 | public int Id; 6 | public string Input; 7 | 8 | public PetCommand(int CommandId, string CommandInput) 9 | { 10 | Id = CommandId; 11 | Input = CommandInput; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /HabboHotel/Rooms/Games/Freeze/FreezePowerUp.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.Games.Freeze 2 | { 3 | public enum FreezePowerUp 4 | { 5 | None = 0, 6 | BlueArrow = 1, 7 | GreenArrow = 2, 8 | Shield = 3, 9 | Heart = 4, 10 | OrangeSnowball = 5, 11 | Snowballs = 6 12 | } 13 | } -------------------------------------------------------------------------------- /HabboHotel/Rooms/Games/Teams/Team.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms.Games.Teams 2 | { 3 | public enum Team 4 | { 5 | None = 0, 6 | Red = 1, 7 | Green = 2, 8 | Blue = 3, 9 | Yellow = 4 10 | } 11 | } -------------------------------------------------------------------------------- /HabboHotel/Rooms/ItemEffectType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms 2 | { 3 | public enum ItemEffectType 4 | { 5 | None, 6 | Swim, 7 | SwimLow, 8 | SwimHalloween, 9 | Iceskates, 10 | Normalskates 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/RoomAccess.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms 2 | { 3 | public enum RoomAccess 4 | { 5 | Open, 6 | Doorbell, 7 | Password, 8 | Invisible 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /HabboHotel/Rooms/SquareState.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Rooms 2 | { 3 | public enum SquareState 4 | { 5 | Open = 0, 6 | Blocked = 1, 7 | Seat = 2, 8 | Pool = 3, 9 | VIP = 4 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /HabboHotel/Subscriptions/SubscriptionData.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Subscriptions 2 | { 3 | public class SubscriptionData 4 | { 5 | public int Id { get; private set; } 6 | public string Name { get; private set; } 7 | public string Badge { get; private set; } 8 | public int Credits { get; private set; } 9 | public int Duckets { get; private set; } 10 | public int Respects { get; private set; } 11 | 12 | public SubscriptionData(int id, string name, string badge, int credits, int duckets, int respects) 13 | { 14 | Id = id; 15 | Name = name; 16 | Badge = badge; 17 | Credits = credits; 18 | Duckets = duckets; 19 | Respects = respects; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HabboHotel/Talents/TalentTrackSubLevel.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Talents 2 | { 3 | public class TalentTrackSubLevel 4 | { 5 | public int Level { get; set; } 6 | public string Badge { get; set; } 7 | public int RequiredProgress { get; set; } 8 | 9 | public TalentTrackSubLevel(int Level, string Badge, int RequiredProgress) 10 | { 11 | this.Level = Level; 12 | this.Badge = Badge; 13 | this.RequiredProgress = RequiredProgress; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HabboHotel/Talents/TalentType.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Talents 2 | { 3 | public enum TalentType 4 | { 5 | Helper, 6 | Citizenship 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /HabboHotel/Users/Authenticator/IncorrectLoginException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.HabboHotel.Users.Authenticator 4 | { 5 | [Serializable] 6 | public class IncorrectLoginException : Exception 7 | { 8 | public IncorrectLoginException(string Reason) : base(Reason) 9 | { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /HabboHotel/Users/Badges/Badge.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Badges 2 | { 3 | public class Badge 4 | { 5 | public string Code; 6 | public int Slot; 7 | 8 | public Badge(string Code, int Slot) 9 | { 10 | this.Code = Code; 11 | this.Slot = Slot; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /HabboHotel/Users/Clothing/Parts/ClothingParts.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Clothing.Parts 2 | { 3 | public sealed class ClothingParts 4 | { 5 | private int _id; 6 | private int _partId; 7 | private string _part; 8 | 9 | public ClothingParts(int Id, int PartId, string Part) 10 | { 11 | _id = Id; 12 | _partId = PartId; 13 | _part = Part; 14 | } 15 | 16 | public int Id 17 | { 18 | get { return _id; } 19 | set { _id = value; } 20 | } 21 | 22 | public int PartId 23 | { 24 | get { return _partId; } 25 | set { _partId = value; } 26 | } 27 | 28 | public string Part 29 | { 30 | get { return _part; } 31 | set { _part = value; } 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /HabboHotel/Users/Messenger/FriendBar/FriendBarState.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Messenger.FriendBar 2 | { 3 | public enum FriendBarState 4 | { 5 | Open, 6 | Closed 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /HabboHotel/Users/Messenger/FriendBar/FriendBarStateUtility.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Messenger.FriendBar 2 | { 3 | public static class FriendBarStateUtility 4 | { 5 | public static FriendBarState GetEnum(int state) 6 | { 7 | switch (state) 8 | { 9 | default: 10 | case 0: 11 | return FriendBarState.Closed; 12 | 13 | case 1: 14 | return FriendBarState.Open; 15 | } 16 | } 17 | 18 | public static int GetInt(FriendBarState state) 19 | { 20 | switch (state) 21 | { 22 | default: 23 | case FriendBarState.Closed: 24 | return 0; 25 | 26 | case FriendBarState.Open: 27 | return 1; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /HabboHotel/Users/Messenger/MessengerEventTypes.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Messenger 2 | { 3 | public enum MessengerEventTypes 4 | { 5 | EventStarted, 6 | AchievementUnlocked, 7 | QuestCompleted, 8 | PlayingGame, 9 | FinishedGame, 10 | GameInvite 11 | } 12 | } -------------------------------------------------------------------------------- /HabboHotel/Users/Messenger/MessengerMessageErrors.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Messenger 2 | { 3 | public enum MessengerMessageErrors 4 | { 5 | FriendMuted, 6 | yourMuted, 7 | FriendOffline, 8 | NotFriends, 9 | FriendBusy, 10 | OfflineFailed 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /HabboHotel/Users/Messenger/MessengerRequest.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Messenger 2 | { 3 | public class MessengerRequest 4 | { 5 | private int _toUser; 6 | private int _fromUser; 7 | private string _username; 8 | 9 | public MessengerRequest(int ToUser, int FromUser, string Username) 10 | { 11 | _toUser = ToUser; 12 | _fromUser = FromUser; 13 | _username = Username; 14 | } 15 | 16 | public string Username 17 | { 18 | get { return _username; } 19 | } 20 | 21 | public int To 22 | { 23 | get { return _toUser; } 24 | } 25 | 26 | public int From 27 | { 28 | get { return _fromUser; } 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /HabboHotel/Users/Messenger/SearchResult.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Messenger 2 | { 3 | public struct SearchResult 4 | { 5 | public int UserId; 6 | public string Username; 7 | public string Motto; 8 | public string Figure; 9 | public string LastOnline; 10 | 11 | public SearchResult(int UserId, string Username, string Motto, string Figure, string LastOnline) 12 | { 13 | this.UserId = UserId; 14 | this.Username = Username; 15 | this.Motto = Motto; 16 | this.Figure = Figure; 17 | this.LastOnline = LastOnline; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /HabboHotel/Users/Navigator/SavedSearches/SavedSearch.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Navigator.SavedSearches 2 | { 3 | public class SavedSearch 4 | { 5 | private int _id; 6 | private string _filter; 7 | private string _search; 8 | 9 | public SavedSearch(int id, string filter, string search) 10 | { 11 | _id = id; 12 | _filter = filter; 13 | _search = search; 14 | } 15 | 16 | public int Id 17 | { 18 | get { return _id; } 19 | set { _id = value; } 20 | } 21 | 22 | public string Filter 23 | { 24 | get { return _filter; } 25 | set { _filter = value; } 26 | } 27 | 28 | public string Search 29 | { 30 | get { return _search; } 31 | set { _search = value; } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /HabboHotel/Users/Relationships/Relationship.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.HabboHotel.Users.Relationships 2 | { 3 | public class Relationship 4 | { 5 | public int Id; 6 | public int Type; 7 | public int UserId; 8 | 9 | public Relationship(int Id, int User, int Type) 10 | { 11 | this.Id = Id; 12 | UserId = User; 13 | this.Type = Type; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PlusEMU 2 | Continuing to work on Plus Emulator, on and off. 3 | 4 | This is technically revision 3, I am working from Revision #2. SQLs etc, should all be uptodate. The goals of this project are as follows: 5 | 6 | * Basic refactor (correcting naming conventions). 7 | * Improve the complexity in methods. 8 | * Improve emulator code. 9 | * Keep the emulator up to date. 10 | * Finish missing features. 11 | 12 | Lots of work to be done, mostly will be refactoring for a while. 13 | -------------------------------------------------------------------------------- /Resources/README.txt: -------------------------------------------------------------------------------- 1 | Hi, 2 | 3 | Before running all of the SQLs, please make sure you read this. 4 | 5 | SQLs.sql 6 | - The first two queries may error, if they do just delete those and run the rest. Be warned that this query will drop your 'server_locale' and 'server_settings' table and replace them with the new data. 7 | 8 | Behaviour Changes.sql 9 | - If you're running the database from the first release, you should be fine to run this! This will update your exchangeable items to a new interaction type and give them a behaviour data. It will also do the same for pets. 10 | - If you're running a different database, make sure that these IDs match, or make the changes to the furni manually. 11 | 12 | -------------------------------------------------------------------------------- /Resources/RELEASE NOTES.txt: -------------------------------------------------------------------------------- 1 | Thanks for downloading PlusEMU. 2 | 3 | If you're starting a hotel from scratch please run 'Original Database', no other SQL files are needed to be ran. 4 | 5 | For other downloads you can visit our website at https://projectplus.io/ alternatively visit https://devbest.com 6 | 7 | - For future releases please visit https://devbest.com/threads/81595/ 8 | - To follow the development please visit https://devbest.com/threads/81566/ 9 | - For help and support please visit https://devbest.com/threads/81596/ -------------------------------------------------------------------------------- /Resources/libs/AStar.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sledmore/PlusEMU/ba70b05e36dbda8a96e5ab0dfc0f502fe2c94127/Resources/libs/AStar.dll -------------------------------------------------------------------------------- /Resources/libs/HabboEncryption.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sledmore/PlusEMU/ba70b05e36dbda8a96e5ab0dfc0f502fe2c94127/Resources/libs/HabboEncryption.dll -------------------------------------------------------------------------------- /Resources/libs/MoreLinq.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sledmore/PlusEMU/ba70b05e36dbda8a96e5ab0dfc0f502fe2c94127/Resources/libs/MoreLinq.dll -------------------------------------------------------------------------------- /Utilities/Converter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Plus.Utilities 4 | { 5 | public static class Converter 6 | { 7 | public static string BytesToHexString(byte[] bytes) 8 | { 9 | return BitConverter.ToString(bytes).Replace("-", string.Empty); 10 | } 11 | 12 | public static byte[] HexStringToBytes(string characters) 13 | { 14 | int length = characters.Length; 15 | byte[] bytes = new byte[length / 2]; 16 | for (int i = 0; i < length; i += 2) 17 | { 18 | bytes[i / 2] = Convert.ToByte(characters.Substring(i, 2), 16); 19 | } 20 | return bytes; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Utilities/Enclosure/Algorithm/FieldUpdate.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Utilities.Enclosure.Algorithm 2 | { 3 | public class FieldUpdate 4 | { 5 | public FieldUpdate(int x, int y, byte value) 6 | { 7 | X = x; 8 | Y = y; 9 | Value = value; 10 | } 11 | 12 | public byte Value { get; } 13 | public int Y { get; } 14 | public int X { get; } 15 | } 16 | } -------------------------------------------------------------------------------- /Utilities/TextHandling.cs: -------------------------------------------------------------------------------- 1 | namespace Plus.Utilities 2 | { 3 | public static class TextHandling 4 | { 5 | public static string GetString(double k) 6 | { 7 | return k.ToString(PlusEnvironment.CultureInfo); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sledmore/PlusEMU/ba70b05e36dbda8a96e5ab0dfc0f502fe2c94127/icon.ico -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | --------------------------------------------------------------------------------