From 68af013c6079624555850b9a02ec6950ac101211 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Fri, 20 Mar 2026 17:22:50 +0100 Subject: [PATCH] feat: custom prefix system protocol layer Prefix parsers, composers and events: - UserPrefixesParser, PrefixReceivedParser, ActivePrefixUpdatedParser - PurchasePrefixComposer, SetActivePrefixComposer, DeletePrefixComposer, RequestPrefixesComposer - RoomUnitChatParser reads prefixText/Color/Icon/Effect from chat packets - RoomSessionChatEvent carries prefix data to client - RoomChatHandler passes prefix fields through event chain --- packages/communication/src/NitroMessages.ts | 13 +++++ packages/communication/src/index.ts | 3 ++ .../src/messages/incoming/IncomingHeader.ts | 5 ++ .../src/messages/incoming/inventory/index.ts | 1 + .../prefixes/ActivePrefixUpdatedEvent.ts | 16 ++++++ .../inventory/prefixes/PrefixReceivedEvent.ts | 16 ++++++ .../inventory/prefixes/UserPrefixesEvent.ts | 16 ++++++ .../incoming/inventory/prefixes/index.ts | 3 ++ .../src/messages/outgoing/OutgoingHeader.ts | 6 +++ .../src/messages/outgoing/inventory/index.ts | 1 + .../prefixes/DeletePrefixComposer.ts | 21 ++++++++ .../prefixes/PurchasePrefixComposer.ts | 21 ++++++++ .../prefixes/RequestPrefixesComposer.ts | 21 ++++++++ .../prefixes/SetActivePrefixComposer.ts | 21 ++++++++ .../outgoing/inventory/prefixes/index.ts | 4 ++ .../src/messages/parser/inventory/index.ts | 1 + .../prefixes/ActivePrefixUpdatedParser.ts | 39 ++++++++++++++ .../prefixes/PrefixReceivedParser.ts | 39 ++++++++++++++ .../inventory/prefixes/UserPrefixesParser.ts | 52 +++++++++++++++++++ .../parser/inventory/prefixes/index.ts | 3 ++ .../room/unit/chat/RoomUnitChatParser.ts | 36 ++++++++++++- .../src/session/RoomSessionChatEvent.ts | 32 +++++++++++- .../session/src/handler/RoomChatHandler.ts | 2 +- 23 files changed, 367 insertions(+), 5 deletions(-) create mode 100644 packages/communication/src/messages/incoming/inventory/prefixes/ActivePrefixUpdatedEvent.ts create mode 100644 packages/communication/src/messages/incoming/inventory/prefixes/PrefixReceivedEvent.ts create mode 100644 packages/communication/src/messages/incoming/inventory/prefixes/UserPrefixesEvent.ts create mode 100644 packages/communication/src/messages/incoming/inventory/prefixes/index.ts create mode 100644 packages/communication/src/messages/outgoing/inventory/prefixes/DeletePrefixComposer.ts create mode 100644 packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts create mode 100644 packages/communication/src/messages/outgoing/inventory/prefixes/RequestPrefixesComposer.ts create mode 100644 packages/communication/src/messages/outgoing/inventory/prefixes/SetActivePrefixComposer.ts create mode 100644 packages/communication/src/messages/outgoing/inventory/prefixes/index.ts create mode 100644 packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts create mode 100644 packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts create mode 100644 packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts create mode 100644 packages/communication/src/messages/parser/inventory/prefixes/index.ts diff --git a/packages/communication/src/NitroMessages.ts b/packages/communication/src/NitroMessages.ts index 7d61b36..ced7b60 100644 --- a/packages/communication/src/NitroMessages.ts +++ b/packages/communication/src/NitroMessages.ts @@ -1,4 +1,6 @@ import { IMessageConfiguration } from '@nitrots/api'; +import { ActivePrefixUpdatedEvent, PrefixReceivedEvent, UserPrefixesEvent } from './messages/incoming/inventory/prefixes'; +import { DeletePrefixComposer, PurchasePrefixComposer, RequestPrefixesComposer, SetActivePrefixComposer } from './messages/outgoing/inventory/prefixes'; import { AcceptFriendMessageComposer, AcceptFriendResultEvent, AcceptGameInviteMessageComposer, AcceptQuestMessageComposer, AccountSafetyLockStatusChangeMessageEvent, AchievementEvent, AchievementNotificationMessageEvent, AchievementResolutionCompletedMessageEvent, AchievementResolutionProgressMessageEvent, AchievementResolutionsMessageEvent, AchievementsEvent, AchievementsScoreEvent, ActivateQuestMessageComposer, ActivityPointNotificationMessageEvent, AddFavouriteRoomMessageComposer, AddJukeboxDiskComposer, AddSpamWallPostItMessageComposer, ApplySnapshotMessageComposer, ApplyTonerComposer, ApproveAllMembershipRequestsMessageComposer, ApproveNameMessageComposer, ApproveNameMessageEvent, AreaHideMessageEvent, AuthenticatedEvent, AuthenticationMessageComposer, AvailabilityStatusMessageEvent, AvailabilityTimeMessageEvent, AvatarEffectActivatedComposer, AvatarEffectActivatedEvent, AvatarEffectAddedEvent, AvatarEffectExpiredEvent, AvatarEffectSelectedComposer, AvatarEffectSelectedEvent, AvatarEffectsEvent, BadgePointLimitsEvent, BadgeReceivedEvent, BadgesEvent, BannedUsersFromRoomEvent, BonusRareInfoMessageEvent, BotAddedToInventoryEvent, BotCommandConfigurationEvent, BotErrorEvent, BotForceOpenContextMenuEvent, BotInventoryMessageEvent, BotPlaceComposer, BotReceivedMessageEvent, BotRemoveComposer, BotRemovedFromInventoryEvent, BotSkillListUpdateEvent, BotSkillSaveComposer, BreedPetsMessageComposer, BuildersClubFurniCountMessageEvent, BuildersClubPlaceRoomItemMessageComposer, BuildersClubPlaceWallItemMessageComposer, BuildersClubQueryFurniCountMessageComposer, BuildersClubSubscriptionStatusMessageEvent, BundleDiscountRulesetMessageEvent, BuyMarketplaceOfferMessageComposer, BuyMarketplaceTokensMessageComposer, CallForHelpDisabledNotifyMessageEvent, CallForHelpFromForumMessageMessageComposer, CallForHelpFromForumThreadMessageComposer, CallForHelpFromIMMessageComposer, CallForHelpFromPhotoMessageComposer, CallForHelpFromSelfieMessageComposer, CallForHelpMessageComposer, CallForHelpPendingCallsDeletedMessageEvent, CallForHelpPendingCallsMessageEvent, CallForHelpReplyMessageEvent, CallForHelpResultMessageEvent, CameraPublishStatusMessageEvent, CameraPurchaseOKMessageEvent, CameraSnapshotMessageEvent, CameraStorageUrlMessageEvent, CampaignCalendarDataMessageEvent, CampaignCalendarDoorOpenedMessageEvent, CanCreateRoomEvent, CanCreateRoomEventEvent, CanCreateRoomMessageComposer, CancelEventMessageComposer, CancelMarketplaceOfferMessageComposer, CancelMysteryBoxWaitMessageEvent, CancelPetBreedingComposer, CancelQuestMessageComposer, CatalogGroupsComposer, CatalogPageExpirationEvent, CatalogPageMessageEvent, CatalogPageWithEarliestExpiryMessageEvent, CatalogPagesListEvent, CatalogPublishedMessageEvent, CategoriesWithVisitorCountEvent, CfhChatlogEvent, CfhSanctionMessageEvent, CfhTopicsInitEvent, ChangeEmailComposer, ChangeEmailResultEvent, ChangeQueueMessageComposer, ChangeUserNameMessageComposer, ChangeUserNameResultMessageEvent, ChatReviewGuideDecidesOnOfferMessageComposer, ChatReviewGuideDetachedMessageComposer, ChatReviewGuideVoteMessageComposer, ChatReviewSessionCreateMessageComposer, ChatReviewSessionDetachedMessageEvent, ChatReviewSessionOfferedToGuideMessageEvent, ChatReviewSessionResultsMessageEvent, ChatReviewSessionStartedMessageEvent, ChatReviewSessionVotingStatusMessageEvent, CheckUserNameMessageComposer, CheckUserNameResultMessageEvent, ClickFurniMessageComposer, ClientHelloMessageComposer, ClientPingEvent, CloseIssueDefaultActionMessageComposer, CloseIssuesMessageComposer, ClubGiftInfoEvent, ClubGiftNotificationEvent, ClubGiftSelectedEvent, CommunityGoalEarnedPrizesMessageEvent, CommunityGoalHallOfFameMessageEvent, CommunityGoalProgressMessageEvent, CommunityGoalVoteMessageComposer, CommunityGoalVoteMessageEvent, CompetitionEntrySubmitResultEvent, CompetitionRoomsDataMessageEvent, CompetitionRoomsSearchMessageComposer, CompetitionStatusMessageEvent, CompetitionVotingInfoMessageEvent, CompleteDiffieHandshakeEvent, CompleteDiffieHandshakeMessageComposer, CompostPlantMessageComposer, ConcurrentUsersGoalProgressMessageEvent, ConfirmPetBreedingComposer, ConnectionErrorEvent, ControlYoutubeDisplayPlaybackMessageComposer, ConvertGlobalRoomIdMessageComposer, ConvertedRoomIdEvent, CraftComposer, CraftSecretComposer, CraftableProductsEvent, CraftingRecipeEvent, CraftingRecipesAvailableEvent, CraftingResultEvent, CreateFlatMessageComposer, CurrentTimingCodeMessageEvent, CustomUserNotificationMessageEvent, DeclineFriendMessageComposer, DefaultSanctionMessageComposer, DeleteFavouriteRoomMessageComposer, DeleteItemMessageComposer, DeleteBadgeMessageComposer, DeletePetMessageComposer, DeletePendingCallsForHelpMessageComposer, DesktopViewComposer, DesktopViewEvent, DiceValueMessageEvent, DirectSMSClubBuyAvailableMessageEvent, DisconnectMessageComposer, DisconnectReasonEvent, DoorbellMessageEvent, EditEventMessageComposer, ElementPointerMessageEvent, EmailStatusResultEvent, EpicPopupMessageEvent, ExtendRentOrBuyoutFurniMessageComposer, ExtendRentOrBuyoutStripItemMessageComposer, ExtendedProfileChangedMessageEvent, FavoriteMembershipUpdateMessageEvent, FavouriteChangedEvent, FavouritesEvent, FigureSetIdsMessageEvent, FigureUpdateEvent, FindFriendsProcessResultEvent, FindNewFriendsMessageComposer, FireworkChargeDataEvent, FlatAccessDeniedMessageEvent, FlatControllerAddedEvent, FlatControllerRemovedEvent, FlatControllersEvent, FlatCreatedEvent, FloodControlEvent, FloorHeightMapEvent, FollowFriendFailedEvent, FollowFriendMessageComposer, ForumDataMessageEvent, ForumsListMessageEvent, ForwardToACompetitionRoomMessageComposer, ForwardToARandomPromotedRoomMessageComposer, ForwardToASubmittableRoomMessageComposer, ForwardToRandomCompetitionRoomMessageComposer, ForwardToSomeRoomMessageComposer, FriendFurniConfirmLockMessageComposer, FriendListFragmentEvent, FriendListUpdateComposer, FriendListUpdateEvent, FriendNotificationEvent, FriendRequestQuestCompleteMessageComposer, FriendRequestsEvent, FurniRentOrBuyoutOfferMessageEvent, FurnitureAliasesComposer, FurnitureAliasesEvent, FurnitureColorWheelComposer, FurnitureDataEvent, FurnitureDiceActivateComposer, FurnitureDiceDeactivateComposer, FurnitureExchangeComposer, FurnitureFloorAddEvent, FurnitureFloorEvent, FurnitureFloorRemoveEvent, FurnitureFloorUpdateComposer, FurnitureFloorUpdateEvent, FurnitureGroupInfoComposer, FurnitureListAddOrUpdateEvent, FurnitureListComposer, FurnitureListEvent, FurnitureListInvalidateEvent, FurnitureListRemovedEvent, FurnitureMannequinSaveLookComposer, FurnitureMannequinSaveNameComposer, FurnitureMultiStateComposer, FurnitureOneWayDoorComposer, FurniturePickupComposer, FurniturePickupAllComposer, FurniturePlaceComposer, FurniturePlacePaintComposer, FurniturePostItPlaceComposer, FurniturePostItPlacedEvent, FurnitureRandomStateComposer, FurnitureStackHeightComposer, FurnitureStackHeightEvent, FurnitureWallAddEvent, FurnitureWallEvent, FurnitureWallMultiStateComposer, FurnitureWallRemoveEvent, FurnitureWallUpdateComposer, FurnitureWallUpdateEvent, Game2AccountGameStatusMessageEvent, Game2CheckGameDirectoryStatusMessageComposer, Game2ExitGameMessageComposer, Game2GameChatMessageComposer, Game2GameDirectoryStatusMessageEvent, Game2GetAccountGameStatusMessageComposer, Game2GetWeeklyFriendsLeaderboardComposer, Game2GetWeeklyLeaderboardComposer, Game2InArenaQueueMessageEvent, Game2JoiningGameFailedMessageEvent, Game2LoadStageReadyMessageComposer, Game2PlayAgainMessageComposer, Game2RequestFullStatusUpdateMessageComposer, Game2StartingGameFailedMessageEvent, Game2StopCounterMessageEvent, Game2UserLeftGameMessageEvent, Game2WeeklyFriendsLeaderboardEvent, Game2WeeklyLeaderboardEvent, GameAchievementsMessageEvent, GameInviteMessageEvent, GameListMessageEvent, GameStatusMessageEvent, GameUnloadedMessageComposer, GenericErrorEvent, GetBadgePointLimitsComposer, GetBonusRareInfoMessageComposer, GetBotInventoryComposer, GetBundleDiscountRulesetComposer, GetCatalogIndexComposer, GetCatalogPageComposer, GetCatalogPageExpirationComposer, GetCatalogPageWithEarliestExpiryComposer, GetCategoriesWithUserCountMessageComposer, GetCfhChatlogMessageComposer, GetCfhStatusMessageComposer, GetClubGiftInfo, GetClubOffersMessageComposer, GetCommunityGoalEarnedPrizesMessageComposer, GetCommunityGoalHallOfFameMessageComposer, GetCommunityGoalProgressMessageComposer, GetConcurrentUsersGoalProgressMessageComposer, GetConcurrentUsersRewardMessageComposer, GetCraftableProductsComposer, GetCraftingRecipeComposer, GetCraftingRecipesAvailableComposer, GetCurrentTimingCodeMessageComposer, GetCustomRoomFilterMessageComposer, GetDailyQuestMessageComposer, GetDirectClubBuyAvailableComposer, GetEmailStatusComposer, GetExtendedProfileByNameMessageComposer, GetFaqCategoryMessageComposer, GetFaqTextMessageComposer, GetForumStatsMessageComposer, GetForumsListMessageComposer, GetFriendRequestsComposer, GetGameAchievementsMessageComposer, GetGameListMessageComposer, GetGameStatusMessageComposer, GetGiftMessageComposer, GetGiftWrappingConfigurationComposer, GetGuestRoomMessageComposer, GetGuestRoomResultEvent, GetGuideReportingStatusMessageComposer, GetHabboBasicMembershipExtendOfferComposer, GetHabboClubExtendOfferMessageComposer, GetHabboGroupBadgesMessageComposer, GetIgnoredUsersComposer, GetInterstitialMessageComposer, GetIsBadgeRequestFulfilledComposer, GetIsOfferGiftableComposer, GetIsUserPartOfCompetitionMessageComposer, GetItemDataComposer, GetJukeboxPlayListMessageComposer, GetLimitedOfferAppearingNextComposer, GetMarketplaceCanMakeOfferComposer, GetMarketplaceConfigurationMessageComposer, GetMarketplaceItemStatsComposer, GetMarketplaceOffersMessageComposer, GetMarketplaceOwnOffersMessageComposer, GetMessagesMessageComposer, GetModeratorRoomInfoMessageComposer, GetModeratorUserInfoMessageComposer, GetNextTargetedOfferComposer, GetNowPlayingMessageComposer, GetOccupiedTilesMessageComposer, GetOfficialRoomsMessageComposer, GetOfficialSongIdMessageComposer, GetPendingCallsForHelpMessageComposer, GetPetCommandsComposer, GetPopularRoomTagsMessageComposer, GetProductOfferComposer, GetPromoArticlesComposer, GetQuestsMessageComposer, GetQuizQuestionsComposer, GetRecyclerStatusMessageComposer, GetRentOrBuyoutOfferMessageComposer, GetResolutionAchievementsMessageComposer, GetRoomAdPurchaseInfoComposer, GetRoomChatlogMessageComposer, GetRoomEntryDataMessageComposer, GetRoomEntryTileMessageComposer, GetRoomVisitsMessageComposer, GetSeasonalCalendarDailyOfferComposer, GetSeasonalQuestsOnlyMessageComposer, GetSecondsUntilMessageComposer, GetSellablePetPalettesComposer, GetSongInfoMessageComposer, GetSoundMachinePlayListMessageComposer, GetSoundSettingsComposer, GetTalentTrackLevelMessageComposer, GetTargetedOfferComposer, GetThreadMessageComposer, GetThreadsMessageComposer, GetUnreadForumsCountMessageComposer, GetUserChatlogMessageComposer, GetUserEventCatsMessageComposer, GetUserFlatCatsMessageComposer, GetUserGameAchievementsMessageComposer, GetUserSongDisksMessageComposer, GetUserTagsComposer, GetWardrobeMessageComposer, GetWeeklyGameRewardComposer, GetWeeklyGameRewardWinnersComposer, GetYoutubeDisplayStatusMessageComposer, GiftReceiverNotFoundEvent, GiftWrappingConfigurationEvent, GoToFlatMessageComposer, GotMysteryBoxPrizeMessageEvent, GroupAdminGiveComposer, GroupAdminTakeComposer, GroupBadgePartsComposer, GroupBadgePartsEvent, GroupBuyComposer, GroupBuyDataComposer, GroupBuyDataEvent, GroupConfirmMemberRemoveEvent, GroupConfirmRemoveMemberComposer, GroupDeleteComposer, GroupDetailsChangedMessageEvent, GroupFavoriteComposer, GroupFurniContextMenuInfoMessageEvent, GroupInformationComposer, GroupInformationEvent, GroupJoinComposer, GroupMembersComposer, GroupMembersEvent, GroupMembershipAcceptComposer, GroupMembershipDeclineComposer, GroupMembershipRequestedMessageEvent, GroupPurchasedEvent, GroupRemoveMemberComposer, GroupSaveBadgeComposer, GroupSaveColorsComposer, GroupSaveInformationComposer, GroupSavePreferencesComposer, GroupSettingsComposer, GroupSettingsEvent, GroupUnfavoriteComposer, GuestRoomSearchResultEvent, GuideOnDutyStatusMessageEvent, GuideReportingStatusMessageEvent, GuideSessionAttachedMessageEvent, GuideSessionCreateMessageComposer, GuideSessionDetachedMessageEvent, GuideSessionEndedMessageEvent, GuideSessionErrorMessageEvent, GuideSessionFeedbackMessageComposer, GuideSessionGetRequesterRoomMessageComposer, GuideSessionGuideDecidesMessageComposer, GuideSessionInviteRequesterMessageComposer, GuideSessionInvitedToGuideRoomMessageEvent, GuideSessionIsTypingMessageComposer, GuideSessionMessageMessageComposer, GuideSessionMessageMessageEvent, GuideSessionOnDutyUpdateMessageComposer, GuideSessionPartnerIsTypingMessageEvent, GuideSessionReportMessageComposer, GuideSessionRequesterCancelsMessageComposer, GuideSessionRequesterRoomMessageEvent, GuideSessionResolvedMessageComposer, GuideSessionStartedMessageEvent, GuideTicketCreationResultMessageEvent, GuideTicketResolutionMessageEvent, GuildBaseSearchMessageComposer, GuildEditFailedMessageEvent, GuildForumThreadsEvent, GuildMemberMgmtFailedMessageEvent, GuildMembershipsMessageEvent, HabboBroadcastMessageEvent, HabboClubExtendOfferMessageEvent, HabboClubOffersMessageEvent, HabboGroupBadgesMessageEvent, HabboGroupDeactivatedMessageEvent, HabboGroupJoinFailedMessageEvent, HabboSearchComposer, HabboSearchResultEvent, HarvestPetMessageComposer, HotelClosedAndOpensEvent, HotelClosesAndWillOpenAtEvent, HotelMergeNameChangeEvent, HotelWillCloseInMinutesEvent, IdentityAccountsEvent, IgnoreResultEvent, IgnoreUserComposer, IgnoreUserIdComposer, IgnoredUsersEvent, InClientLinkEvent, IncomingHeader, InfoFeedEnableMessageEvent, InfoRetrieveMessageComposer, InitCameraMessageEvent, InitDiffieHandshakeEvent, InitDiffieHandshakeMessageComposer, InstantMessageErrorEvent, InterstitialMessageEvent, InterstitialShownMessageComposer, IsBadgeRequestFulfilledEvent, IsOfferGiftableMessageEvent, IsUserPartOfCompetitionMessageEvent, IssueCloseNotificationMessageEvent, IssueDeletedMessageEvent, IssueInfoMessageEvent, IssuePickFailedMessageEvent, ItemDataUpdateMessageEvent, JoinQueueMessageComposer, JoinedQueueMessageEvent, JoiningQueueFailedMessageEvent, JukeboxPlayListFullMessageEvent, JukeboxSongDisksMessageEvent, LagWarningReportMessageComposer, LeaveQueueMessageComposer, LeftQueueMessageEvent, LimitedEditionSoldOutEvent, LimitedOfferAppearingNextMessageEvent, LoadGameMessageEvent, LoadGameUrlEvent, LoveLockFurniFinishedEvent, LoveLockFurniFriendConfirmedEvent, LoveLockFurniStartEvent, MOTDNotificationEvent, MaintenanceStatusMessageEvent, MakeOfferMessageComposer, MarkCatalogNewAdditionsPageOpenedComposer, MarketPlaceOffersEvent, MarketplaceBuyOfferResultEvent, MarketplaceCanMakeOfferResult, MarketplaceCancelOfferResultEvent, MarketplaceConfigurationEvent, MarketplaceItemStatsEvent, MarketplaceMakeOfferResult, MarketplaceOwnOffersEvent, MessageErrorEvent, MessengerInitComposer, MessengerInitEvent, MiniMailNewMessageEvent, MiniMailUnreadCountEvent, ModAlertMessageComposer, ModBanMessageComposer, ModKickMessageComposer, ModMessageMessageComposer, ModMuteMessageComposer, ModToolPreferencesComposer, ModToolSanctionComposer, ModTradingLockMessageComposer, ModerateMessageMessageComposer, ModerateRoomMessageComposer, ModerateThreadMessageComposer, ModeratorActionMessageComposer, ModeratorActionResultMessageEvent, ModeratorCautionEvent, ModeratorInitMessageEvent, ModeratorMessageEvent, ModeratorRoomInfoEvent, ModeratorToolPreferencesEvent, ModeratorUserInfoEvent, MoodlightSettingsComposer, MoodlightSettingsSaveComposer, MoodlightTogggleStateComposer, MuteAllInRoomEvent, MyFavouriteRoomsSearchMessageComposer, MyFrequentRoomHistorySearchMessageComposer, MyFriendsRoomsSearchMessageComposer, MyGuildBasesSearchMessageComposer, MyRecommendedRoomsMessageComposer, MyRoomHistorySearchMessageComposer, MyRoomRightsSearchMessageComposer, MyRoomsSearchMessageComposer, MysteryBoxKeysEvent, MysteryBoxWaitingCanceledMessageComposer, NavigatorCategoryListModeComposer, NavigatorCollapsedEvent, NavigatorDeleteSavedSearchComposer, NavigatorHomeRoomEvent, NavigatorInitComposer, NavigatorLiftedEvent, NavigatorMetadataEvent, NavigatorOpenRoomCreatorEvent, NavigatorSearchCloseComposer, NavigatorSearchComposer, NavigatorSearchEvent, NavigatorSearchOpenComposer, NavigatorSearchSaveComposer, NavigatorSearchesEvent, NavigatorSettingsEvent, NavigatorSettingsSaveComposer, NewConsoleMessageEvent, NewFriendRequestEvent, NewUserExperienceGetGiftsComposer, NewUserExperienceGiftOfferMessageEvent, NewUserExperienceNotCompleteEvent, NewUserExperienceScriptProceedComposer, NoOwnedRoomsAlertMessageEvent, NoSuchFlatEvent, NoobnessLevelMessageEvent, NotEnoughBalanceMessageEvent, NotificationDialogMessageEvent, NowPlayingMessageEvent, ObjectsDataUpdateEvent, ObjectsRollingEvent, OfferRewardDeliveredMessageEvent, OfficialSongIdMessageEvent, OneWayDoorStatusMessageEvent, OpenCampaignCalendarDoorAsStaffComposer, OpenCampaignCalendarDoorComposer, OpenMessageComposer, OpenMysteryTrophyMessageComposer, OpenPetPackageMessageComposer, OpenPetPackageRequestedMessageEvent, OpenPetPackageResultMessageEvent, OpenPresentComposer, OpenQuestTrackerMessageComposer, OpenWelcomeGiftComposer, OutgoingHeader, PeerUsersClassificationMessageComposer, PerformanceLogMessageComposer, PerkAllowancesMessageEvent, PetAddedToInventoryEvent, PetBreedingResultEvent, PetExperienceEvent, PetFigureUpdateEvent, PetInfoEvent, PetInventoryEvent, PetLevelNotificationEvent, PetLevelUpdateMessageEvent, PetMountComposer, PetMoveComposer, PetPlaceComposer, PetPlacingErrorEvent, PetReceivedMessageEvent, PetRemoveComposer, PetRemovedFromInventory, PetRespectComposer, PetRespectNoficationEvent, PetScratchFailedMessageEvent, PetSelectedMessageComposer, PetStatusUpdateEvent, PetSupplementComposer, PetSupplementedNotificationEvent, PetTrainingPanelMessageEvent, PhoneCollectionStateMessageEvent, PhotoCompetitionMessageComposer, PickIssuesMessageComposer, PlayListMessageEvent, PlayListSongAddedMessageEvent, PollAnswerComposer, PollContentsEvent, PollErrorEvent, PollOfferEvent, PollRejectComposer, PollStartComposer, PongMessageComposer, PopularRoomTagsResultEvent, PopularRoomsSearchMessageComposer, PostMessageMessageComposer, PostMessageMessageEvent, PostQuizAnswersComposer, PostThreadMessageEvent, PresentOpenedMessageEvent, ProductOfferEvent, PromoArticlesMessageEvent, PublishPhotoMessageComposer, PurchaseBasicMembershipExtensionComposer, PurchaseErrorMessageEvent, PurchaseFromCatalogAsGiftComposer, PurchaseFromCatalogComposer, PurchaseNotAllowedMessageEvent, PurchaseOKMessageEvent, PurchasePhotoMessageComposer, PurchaseRoomAdMessageComposer, PurchaseTargetedOfferComposer, PurchaseVipMembershipExtensionComposer, QuestCancelledMessageEvent, QuestCompletedMessageEvent, QuestDailyMessageEvent, QuestMessageEvent, QuestionAnsweredEvent, QuestionEvent, QuestionFinishedEvent, QuestsMessageEvent, QuizDataMessageEvent, QuizResultsMessageEvent, RateFlatMessageComposer, RecycleItemsMessageComposer, RecyclerFinishedMessageEvent, RecyclerStatusMessageEvent, RedeemCommunityGoalPrizeMessageComposer, RedeemItemClothingComposer, RedeemMarketplaceOfferCreditsMessageComposer, RedeemVoucherMessageComposer, RejectQuestMessageComposer, RelationshipStatusInfoEvent, ReleaseIssuesMessageComposer, RemainingMuteEvent, RemoveAllRightsMessageComposer, RemoveFriendComposer, RemoveJukeboxDiskComposer, RemoveOwnRoomRightsRoomMessageComposer, RemovePetSaddleComposer, RemoveWallItemComposer, RenderRoomMessageComposer, RenderRoomThumbnailMessageComposer, RentableSpaceCancelRentMessageComposer, RentableSpaceRentFailedMessageEvent, RentableSpaceRentMessageComposer, RentableSpaceRentOkMessageEvent, RentableSpaceStatusMessageComposer, RentableSpaceStatusMessageEvent, RequestABadgeComposer, RequestAchievementsMessageComposer, RequestBadgesComposer, RequestBotCommandConfigurationComposer, RequestCameraConfigurationComposer, RequestFriendComposer, RequestFurniInventoryWhenNotInRoomComposer, RequestPetInfoComposer, RequestPetsComposer, RequestSpamWallPostItMessageEvent, ResetPhoneNumberStateMessageComposer, ResetResolutionAchievementMessageComposer, RespectReceivedEvent, RestoreClientMessageEvent, RoomAdErrorEvent, RoomAdEventTabAdClickedComposer, RoomAdEventTabViewedComposer, RoomAdPurchaseInfoEvent, RoomAdPurchaseInitiatedComposer, RoomAdSearchMessageComposer, RoomAmbassadorAlertComposer, RoomBanUserComposer, RoomBannedUsersComposer, RoomChatSettingsEvent, RoomChatlogEvent, RoomCompetitionInitMessageComposer, RoomDeleteComposer, RoomDimmerPresetsEvent, RoomDoorbellAcceptedEvent, RoomDoorbellAccessComposer, RoomEnterComposer, RoomEnterErrorEvent, RoomEnterEvent, RoomEntryInfoMessageEvent, RoomEntryTileMessageEvent, RoomEventCancelEvent, RoomEventEvent, RoomFilterSettingsMessageEvent, RoomForwardEvent, RoomGiveRightsComposer, RoomHeightMapEvent, RoomHeightMapUpdateEvent, RoomInviteErrorEvent, RoomInviteEvent, RoomKickUserComposer, RoomMessageNotificationMessageEvent, RoomMuteComposer, RoomMuteUserComposer, RoomNetworkOpenConnectionMessageComposer, RoomOccupiedTilesMessageEvent, RoomPaintEvent, RoomPollResultEvent, RoomReadyMessageEvent, RoomRightsClearEvent, RoomRightsEvent, RoomRightsOwnerEvent, RoomScoreEvent, RoomSettingsComposer, RoomSettingsDataEvent, RoomSettingsErrorEvent, RoomSettingsSaveErrorEvent, RoomSettingsSavedEvent, RoomSettingsUpdatedEvent, RoomTakeRightsComposer, RoomTextSearchMessageComposer, RoomThumbnailUpdateResultEvent, RoomUnbanUserComposer, RoomUnitActionComposer, RoomUnitBackgroundComposer, RoomUnitChatComposer, RoomUnitChatEvent, RoomUnitChatShoutComposer, RoomUnitChatShoutEvent, RoomUnitChatStyleComposer, RoomUnitChatWhisperComposer, RoomUnitChatWhisperEvent, RoomUnitDanceComposer, RoomUnitDanceEvent, RoomUnitDropHandItemComposer, RoomUnitEffectEvent, RoomUnitEvent, RoomUnitExpressionEvent, RoomUnitGiveHandItemComposer, RoomUnitGiveHandItemPetComposer, RoomUnitHandItemEvent, RoomUnitHandItemReceivedEvent, RoomUnitIdleEvent, RoomUnitInfoEvent, RoomUnitLookComposer, RoomUnitNumberEvent, RoomUnitPostureComposer, RoomUnitRemoveEvent, RoomUnitSignComposer, RoomUnitStatusEvent, RoomUnitTypingEvent, RoomUnitTypingStartComposer, RoomUnitTypingStopComposer, RoomUnitWalkComposer, RoomUsersClassificationMessageComposer, RoomUsersWithRightsComposer, RoomVisitsEvent, RoomVisualizationSettingsEvent, RoomsWhereMyFriendsAreSearchMessageComposer, RoomsWithHighestScoreSearchMessageComposer, SSOTicketMessageComposer, SanctionStatusEvent, SaveRoomSettingsComposer, SaveWardrobeOutfitMessageComposer, ScrGetKickbackInfoMessageComposer, ScrSendKickbackInfoMessageEvent, SearchFaqsMessageComposer, SeasonalCalendarDailyOfferMessageEvent, SeasonalQuestsMessageEvent, SecondsUntilMessageEvent, SelectClubGiftComposer, SellablePetPalettesMessageEvent, SendMessageComposer, SendRoomInviteComposer, SetActivatedBadgesComposer, SetClothingChangeDataMessageComposer, SetItemDataMessageComposer, SetObjectDataMessageComposer, SetPhoneNumberVerificationStatusMessageComposer, SetRelationshipStatusComposer, SetRoomSessionTagsMessageComposer, SetTargetedOfferStateComposer, SetYoutubeDisplayPlaylistMessageComposer, ShopTargetedOfferViewedComposer, ShowEnforceRoomCategoryDialogEvent, ShowMysteryBoxWaitMessageEvent, SimpleAlertMessageEvent, StartCampaignMessageComposer, StartRoomPollEvent, SubmitRoomToCompetitionMessageComposer, TalentLevelUpEvent, TalentTrackComposer, TalentTrackLevelMessageEvent, TalentTrackMessageEvent, TargetedOfferEvent, TargetedOfferNotFoundEvent, ThreadMessagesMessageEvent, ThumbnailStatusMessageEvent, TogglePetBreedingComposer, TogglePetRidingComposer, ToggleStaffPickMessageComposer, TradingAcceptComposer, TradingAcceptEvent, TradingCancelComposer, TradingCloseComposer, TradingCloseEvent, TradingCompletedEvent, TradingConfirmationComposer, TradingConfirmationEvent, TradingListAddItemComposer, TradingListAddItemsComposer, TradingListItemEvent, TradingListItemRemoveComposer, TradingNoSuchItemEvent, TradingNotOpenEvent, TradingOpenComposer, TradingOpenEvent, TradingOpenFailedEvent, TradingOtherNotAllowedEvent, TradingUnacceptComposer, TradingYouAreNotAllowedEvent, TraxSongInfoMessageEvent, TryPhoneNumberMessageComposer, TryPhoneNumberResultMessageEvent, TryVerificationCodeResultMessageEvent, UnblockGroupMemberMessageComposer, UnignoreUserComposer, UniqueIDMessageComposer, UnloadGameMessageEvent, UnreadForumsCountMessageEvent, UnseenItemsEvent, UnseenResetCategoryComposer, UnseenResetItemsComposer, UpdateActionMessageComposer, UpdateConditionMessageComposer, UpdateFloorPropertiesMessageComposer, UpdateForumReadMarkerMessageComposer, UpdateForumSettingsMessageComposer, UpdateFurniturePositionComposer, UpdateHomeRoomMessageComposer, UpdateMessageMessageEvent, UpdateRoomCategoryAndTradeSettingsComposer, UpdateRoomFilterMessageComposer, UpdateRoomThumbnailMessageComposer, UpdateThreadMessageComposer, UpdateThreadMessageEvent, UpdateTriggerMessageComposer, UsePetProductComposer, UserBannedMessageEvent, UserChatlogEvent, UserClassificationMessageEvent, UserCreditsEvent, UserCurrencyComposer, UserCurrencyEvent, UserCurrentBadgesComposer, UserCurrentBadgesEvent, UserEventCatsEvent, UserFigureComposer, UserFlatCatsEvent, UserGameAchievementsMessageEvent, UserInfoEvent, UserMottoComposer, UserNameChangeMessageEvent, UserPermissionsEvent, UserProfileComposer, UserProfileEvent, UserRelationshipsComposer, UserRespectComposer, UserSettingsCameraFollowComposer, UserSettingsEvent, UserSettingsOldChatComposer, UserSettingsRoomInvitesComposer, UserSettingsSoundComposer, UserSongDisksInventoryMessageEvent, UserSubscriptionComposer, UserSubscriptionEvent, UserTagsMessageEvent, UserUnbannedFromRoomEvent, UserWardrobePageEvent, VerifyCodeMessageComposer, VersionCheckMessageComposer, VisitUserComposer, VoteForRoomMessageComposer, VotePollCounterMessageComposer, VoucherRedeemErrorMessageEvent, VoucherRedeemOkMessageEvent, WardrobeMessageEvent, WeeklyCompetitiveFriendsLeaderboardEvent, WeeklyCompetitiveLeaderboardEvent, WeeklyGameRewardEvent, WeeklyGameRewardWinnersEvent, WelcomeGiftChangeEmailComposer, WelcomeGiftChangeEmailResultEvent, WelcomeGiftStatusEvent, WiredFurniActionEvent, WiredFurniConditionEvent, WiredFurniTriggerEvent, WiredOpenEvent, WiredRewardResultMessageEvent, WiredSaveSuccessEvent, WiredValidationErrorEvent, YouArePlayingGameEvent, YouAreSpectatorMessageEvent, YoutubeControlVideoMessageEvent, YoutubeDisplayPlaylistsEvent, YoutubeDisplayVideoMessageEvent } from './messages'; export class NitroMessages implements IMessageConfiguration @@ -574,6 +576,11 @@ export class NitroMessages implements IMessageConfiguration // Custom packets this._events.set(IncomingHeader.AREA_HIDE, AreaHideMessageEvent); + + // Custom Prefixes + this._events.set(IncomingHeader.USER_PREFIXES, UserPrefixesEvent); + this._events.set(IncomingHeader.PREFIX_RECEIVED, PrefixReceivedEvent); + this._events.set(IncomingHeader.ACTIVE_PREFIX_UPDATED, ActivePrefixUpdatedEvent); } private registerComposers(): void @@ -1184,6 +1191,12 @@ export class NitroMessages implements IMessageConfiguration this._composers.set(OutgoingHeader.RENTABLE_EXTEND_RENT_OR_BUYOUT_STRIP_ITEM, ExtendRentOrBuyoutStripItemMessageComposer); this._composers.set(OutgoingHeader.RENTABLE_EXTEND_RENT_OR_BUYOUT_FURNI, ExtendRentOrBuyoutFurniMessageComposer); this._composers.set(OutgoingHeader.RENTABLE_GET_RENT_OR_BUYOUT_OFFER, GetRentOrBuyoutOfferMessageComposer); + + // Custom Prefixes + this._composers.set(OutgoingHeader.REQUEST_PREFIXES, RequestPrefixesComposer); + this._composers.set(OutgoingHeader.SET_ACTIVE_PREFIX, SetActivePrefixComposer); + this._composers.set(OutgoingHeader.DELETE_PREFIX, DeletePrefixComposer); + this._composers.set(OutgoingHeader.PURCHASE_PREFIX, PurchasePrefixComposer); } public get events(): Map diff --git a/packages/communication/src/index.ts b/packages/communication/src/index.ts index 7fa2659..5f56f6c 100644 --- a/packages/communication/src/index.ts +++ b/packages/communication/src/index.ts @@ -37,6 +37,7 @@ export * from './messages/incoming/inventory/clothes'; export * from './messages/incoming/inventory/furni'; export * from './messages/incoming/inventory/furni/gifts'; export * from './messages/incoming/inventory/pets'; +export * from './messages/incoming/inventory/prefixes'; export * from './messages/incoming/inventory/trading'; export * from './messages/incoming/landingview'; export * from './messages/incoming/landingview/votes'; @@ -109,6 +110,7 @@ export * from './messages/outgoing/inventory/badges'; export * from './messages/outgoing/inventory/bots'; export * from './messages/outgoing/inventory/furni'; export * from './messages/outgoing/inventory/pets'; +export * from './messages/outgoing/inventory/prefixes'; export * from './messages/outgoing/inventory/trading'; export * from './messages/outgoing/inventory/unseen'; export * from './messages/outgoing/landingview'; @@ -187,6 +189,7 @@ export * from './messages/parser/inventory/badges'; export * from './messages/parser/inventory/clothing'; export * from './messages/parser/inventory/furniture'; export * from './messages/parser/inventory/pets'; +export * from './messages/parser/inventory/prefixes'; export * from './messages/parser/inventory/purse'; export * from './messages/parser/inventory/trading'; export * from './messages/parser/landingview'; diff --git a/packages/communication/src/messages/incoming/IncomingHeader.ts b/packages/communication/src/messages/incoming/IncomingHeader.ts index 558317d..5d7f733 100644 --- a/packages/communication/src/messages/incoming/IncomingHeader.ts +++ b/packages/communication/src/messages/incoming/IncomingHeader.ts @@ -474,4 +474,9 @@ export class IncomingHeader public static WEEKLY_GAME2_LEADERBOARD = 2196; public static RENTABLE_FURNI_RENT_OR_BUYOUT_OFFER = 35; public static HANDSHAKE_IDENTITY_ACCOUNT = 3523; + + // Custom Prefixes + public static USER_PREFIXES = 7001; + public static PREFIX_RECEIVED = 7002; + public static ACTIVE_PREFIX_UPDATED = 7003; } diff --git a/packages/communication/src/messages/incoming/inventory/index.ts b/packages/communication/src/messages/incoming/inventory/index.ts index 4f6ae27..9109eb5 100644 --- a/packages/communication/src/messages/incoming/inventory/index.ts +++ b/packages/communication/src/messages/incoming/inventory/index.ts @@ -5,4 +5,5 @@ export * from './clothes'; export * from './furni'; export * from './furni/gifts'; export * from './pets'; +export * from './prefixes'; export * from './trading'; diff --git a/packages/communication/src/messages/incoming/inventory/prefixes/ActivePrefixUpdatedEvent.ts b/packages/communication/src/messages/incoming/inventory/prefixes/ActivePrefixUpdatedEvent.ts new file mode 100644 index 0000000..f416d63 --- /dev/null +++ b/packages/communication/src/messages/incoming/inventory/prefixes/ActivePrefixUpdatedEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '@nitrots/api'; +import { MessageEvent } from '@nitrots/events'; +import { ActivePrefixUpdatedParser } from '../../../parser'; + +export class ActivePrefixUpdatedEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, ActivePrefixUpdatedParser); + } + + public getParser(): ActivePrefixUpdatedParser + { + return this.parser as ActivePrefixUpdatedParser; + } +} diff --git a/packages/communication/src/messages/incoming/inventory/prefixes/PrefixReceivedEvent.ts b/packages/communication/src/messages/incoming/inventory/prefixes/PrefixReceivedEvent.ts new file mode 100644 index 0000000..d92b4d6 --- /dev/null +++ b/packages/communication/src/messages/incoming/inventory/prefixes/PrefixReceivedEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '@nitrots/api'; +import { MessageEvent } from '@nitrots/events'; +import { PrefixReceivedParser } from '../../../parser'; + +export class PrefixReceivedEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, PrefixReceivedParser); + } + + public getParser(): PrefixReceivedParser + { + return this.parser as PrefixReceivedParser; + } +} diff --git a/packages/communication/src/messages/incoming/inventory/prefixes/UserPrefixesEvent.ts b/packages/communication/src/messages/incoming/inventory/prefixes/UserPrefixesEvent.ts new file mode 100644 index 0000000..5be455d --- /dev/null +++ b/packages/communication/src/messages/incoming/inventory/prefixes/UserPrefixesEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '@nitrots/api'; +import { MessageEvent } from '@nitrots/events'; +import { UserPrefixesParser } from '../../../parser'; + +export class UserPrefixesEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, UserPrefixesParser); + } + + public getParser(): UserPrefixesParser + { + return this.parser as UserPrefixesParser; + } +} diff --git a/packages/communication/src/messages/incoming/inventory/prefixes/index.ts b/packages/communication/src/messages/incoming/inventory/prefixes/index.ts new file mode 100644 index 0000000..d1cdb77 --- /dev/null +++ b/packages/communication/src/messages/incoming/inventory/prefixes/index.ts @@ -0,0 +1,3 @@ +export * from './ActivePrefixUpdatedEvent'; +export * from './PrefixReceivedEvent'; +export * from './UserPrefixesEvent'; diff --git a/packages/communication/src/messages/outgoing/OutgoingHeader.ts b/packages/communication/src/messages/outgoing/OutgoingHeader.ts index 69f9061..74547a1 100644 --- a/packages/communication/src/messages/outgoing/OutgoingHeader.ts +++ b/packages/communication/src/messages/outgoing/OutgoingHeader.ts @@ -477,4 +477,10 @@ export class OutgoingHeader public static DELETE_ITEM = 10018; public static DELETE_PET = 10030; public static DELETE_BADGE = 10031; + + // Custom Prefixes + public static REQUEST_PREFIXES = 7011; + public static SET_ACTIVE_PREFIX = 7012; + public static DELETE_PREFIX = 7013; + public static PURCHASE_PREFIX = 7014; } diff --git a/packages/communication/src/messages/outgoing/inventory/index.ts b/packages/communication/src/messages/outgoing/inventory/index.ts index 4fc8506..59aebf7 100644 --- a/packages/communication/src/messages/outgoing/inventory/index.ts +++ b/packages/communication/src/messages/outgoing/inventory/index.ts @@ -3,5 +3,6 @@ export * from './badges'; export * from './bots'; export * from './furni'; export * from './pets'; +export * from './prefixes'; export * from './trading'; export * from './unseen'; diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/DeletePrefixComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/DeletePrefixComposer.ts new file mode 100644 index 0000000..ffda07d --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/DeletePrefixComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class DeletePrefixComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(prefixId: number) + { + this._data = [ prefixId ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts new file mode 100644 index 0000000..29e5ec9 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/PurchasePrefixComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class PurchasePrefixComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(text: string, color: string, icon: string = '', effect: string = '') + { + this._data = [ text, color, icon, effect ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/RequestPrefixesComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/RequestPrefixesComposer.ts new file mode 100644 index 0000000..5cdb767 --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/RequestPrefixesComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class RequestPrefixesComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor() + { + this._data = []; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/SetActivePrefixComposer.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/SetActivePrefixComposer.ts new file mode 100644 index 0000000..fe8949b --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/SetActivePrefixComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '@nitrots/api'; + +export class SetActivePrefixComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(prefixId: number) + { + this._data = [ prefixId ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts b/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts new file mode 100644 index 0000000..e4c2b5c --- /dev/null +++ b/packages/communication/src/messages/outgoing/inventory/prefixes/index.ts @@ -0,0 +1,4 @@ +export * from './DeletePrefixComposer'; +export * from './PurchasePrefixComposer'; +export * from './RequestPrefixesComposer'; +export * from './SetActivePrefixComposer'; diff --git a/packages/communication/src/messages/parser/inventory/index.ts b/packages/communication/src/messages/parser/inventory/index.ts index 01f6a81..58cb9a2 100644 --- a/packages/communication/src/messages/parser/inventory/index.ts +++ b/packages/communication/src/messages/parser/inventory/index.ts @@ -4,5 +4,6 @@ export * from './badges'; export * from './clothing'; export * from './furniture'; export * from './pets'; +export * from './prefixes'; export * from './purse'; export * from './trading'; diff --git a/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts b/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts new file mode 100644 index 0000000..26ce917 --- /dev/null +++ b/packages/communication/src/messages/parser/inventory/prefixes/ActivePrefixUpdatedParser.ts @@ -0,0 +1,39 @@ +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; + +export class ActivePrefixUpdatedParser implements IMessageParser +{ + private _prefixId: number; + private _text: string; + private _color: string; + private _icon: string; + private _effect: string; + + public flush(): boolean + { + this._prefixId = 0; + this._text = ''; + this._color = ''; + this._icon = ''; + this._effect = ''; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._prefixId = wrapper.readInt(); + this._text = wrapper.readString(); + this._color = wrapper.readString(); + this._icon = wrapper.readString(); + this._effect = wrapper.readString(); + + return true; + } + + public get prefixId(): number { return this._prefixId; } + public get text(): string { return this._text; } + public get color(): string { return this._color; } + public get icon(): string { return this._icon; } + public get effect(): string { return this._effect; } +} diff --git a/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts b/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts new file mode 100644 index 0000000..a286a2d --- /dev/null +++ b/packages/communication/src/messages/parser/inventory/prefixes/PrefixReceivedParser.ts @@ -0,0 +1,39 @@ +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; + +export class PrefixReceivedParser implements IMessageParser +{ + private _id: number; + private _text: string; + private _color: string; + private _icon: string; + private _effect: string; + + public flush(): boolean + { + this._id = 0; + this._text = ''; + this._color = ''; + this._icon = ''; + this._effect = ''; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._id = wrapper.readInt(); + this._text = wrapper.readString(); + this._color = wrapper.readString(); + this._icon = wrapper.readString(); + this._effect = wrapper.readString(); + + return true; + } + + public get id(): number { return this._id; } + public get text(): string { return this._text; } + public get color(): string { return this._color; } + public get icon(): string { return this._icon; } + public get effect(): string { return this._effect; } +} diff --git a/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts b/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts new file mode 100644 index 0000000..26d4342 --- /dev/null +++ b/packages/communication/src/messages/parser/inventory/prefixes/UserPrefixesParser.ts @@ -0,0 +1,52 @@ +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; + +export interface IPrefixData +{ + id: number; + text: string; + color: string; + icon: string; + effect: string; + active: boolean; +} + +export class UserPrefixesParser implements IMessageParser +{ + private _prefixes: IPrefixData[]; + + public flush(): boolean + { + this._prefixes = []; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._prefixes = []; + + let count = wrapper.readInt(); + + while(count > 0) + { + this._prefixes.push({ + id: wrapper.readInt(), + text: wrapper.readString(), + color: wrapper.readString(), + icon: wrapper.readString(), + effect: wrapper.readString(), + active: wrapper.readInt() === 1 + }); + + count--; + } + + return true; + } + + public get prefixes(): IPrefixData[] + { + return this._prefixes; + } +} diff --git a/packages/communication/src/messages/parser/inventory/prefixes/index.ts b/packages/communication/src/messages/parser/inventory/prefixes/index.ts new file mode 100644 index 0000000..d054261 --- /dev/null +++ b/packages/communication/src/messages/parser/inventory/prefixes/index.ts @@ -0,0 +1,3 @@ +export * from './ActivePrefixUpdatedParser'; +export * from './PrefixReceivedParser'; +export * from './UserPrefixesParser'; diff --git a/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts b/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts index 21f4afc..09a30ec 100644 --- a/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts +++ b/packages/communication/src/messages/parser/room/unit/chat/RoomUnitChatParser.ts @@ -9,6 +9,10 @@ export class RoomUnitChatParser implements IMessageParser private _urls: string[]; private _chatColours: string; private _messageLength: number; + private _prefixText: string; + private _prefixColor: string; + private _prefixIcon: string; + private _prefixEffect: string; public flush(): boolean { @@ -19,6 +23,10 @@ export class RoomUnitChatParser implements IMessageParser this._urls = []; this._chatColours = null; this._messageLength = 0; + this._prefixText = ''; + this._prefixColor = ''; + this._prefixIcon = ''; + this._prefixEffect = ''; return true; } @@ -33,9 +41,13 @@ export class RoomUnitChatParser implements IMessageParser this._bubble = wrapper.readInt(); this.parseUrls(wrapper); - + this._chatColours = wrapper.readString(); this._messageLength = wrapper.readInt(); + this._prefixText = wrapper.readString(); + this._prefixColor = wrapper.readString(); + this._prefixIcon = wrapper.readString(); + this._prefixEffect = wrapper.readString(); return true; } @@ -82,7 +94,7 @@ export class RoomUnitChatParser implements IMessageParser { return this._urls; } - + public get chatColours(): string { return this._chatColours; @@ -92,4 +104,24 @@ export class RoomUnitChatParser implements IMessageParser { return this._messageLength; } + + public get prefixText(): string + { + return this._prefixText; + } + + public get prefixColor(): string + { + return this._prefixColor; + } + + public get prefixIcon(): string + { + return this._prefixIcon; + } + + public get prefixEffect(): string + { + return this._prefixEffect; + } } diff --git a/packages/events/src/session/RoomSessionChatEvent.ts b/packages/events/src/session/RoomSessionChatEvent.ts index 1b0ca2a..1f3e0ad 100644 --- a/packages/events/src/session/RoomSessionChatEvent.ts +++ b/packages/events/src/session/RoomSessionChatEvent.ts @@ -24,8 +24,12 @@ export class RoomSessionChatEvent extends RoomSessionEvent private _links: string[]; private _extraParam: number; private _style: number; + private _prefixText: string; + private _prefixColor: string; + private _prefixIcon: string; + private _prefixEffect: string; - constructor(type: string, session: IRoomSession, objectId: number, message: string, chatType: number, style: number = 0, chatColours: string[], links: string[] = null, extraParam: number = -1) + constructor(type: string, session: IRoomSession, objectId: number, message: string, chatType: number, style: number = 0, chatColours: string[], links: string[] = null, extraParam: number = -1, prefixText: string = '', prefixColor: string = '', prefixIcon: string = '', prefixEffect: string = '') { super(type, session); @@ -36,6 +40,10 @@ export class RoomSessionChatEvent extends RoomSessionEvent this._links = links; this._extraParam = extraParam; this._style = style; + this._prefixText = prefixText; + this._prefixColor = prefixColor; + this._prefixIcon = prefixIcon; + this._prefixEffect = prefixEffect; } public get objectId(): number @@ -67,9 +75,29 @@ export class RoomSessionChatEvent extends RoomSessionEvent { return this._style; } - + public get chatColours(): string[] { return this._chatColours; } + + public get prefixText(): string + { + return this._prefixText; + } + + public get prefixColor(): string + { + return this._prefixColor; + } + + public get prefixIcon(): string + { + return this._prefixIcon; + } + + public get prefixEffect(): string + { + return this._prefixEffect; + } } diff --git a/packages/session/src/handler/RoomChatHandler.ts b/packages/session/src/handler/RoomChatHandler.ts index cc17a8b..aa717f3 100644 --- a/packages/session/src/handler/RoomChatHandler.ts +++ b/packages/session/src/handler/RoomChatHandler.ts @@ -37,7 +37,7 @@ export class RoomChatHandler extends BaseHandler if(event instanceof RoomUnitChatShoutEvent) chatType = RoomSessionChatEvent.CHAT_TYPE_SHOUT; else if(event instanceof RoomUnitChatWhisperEvent) chatType = RoomSessionChatEvent.CHAT_TYPE_WHISPER; - const chatEvent = new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.roomIndex, parser.message, chatType, parser.bubble, parser.chatColours); + const chatEvent = new RoomSessionChatEvent(RoomSessionChatEvent.CHAT_EVENT, session, parser.roomIndex, parser.message, chatType, parser.bubble, parser.chatColours, null, -1, parser.prefixText, parser.prefixColor, parser.prefixIcon, parser.prefixEffect); GetEventDispatcher().dispatchEvent(chatEvent); }