From 191cb16a8d4fc503490c0df13faff75dd1936238 Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Sun, 20 Jun 2021 06:39:31 -0300 Subject: [PATCH 1/4] Room Widget Camera updates --- src/nitro/camera/IRoomCameraWidgetEffect.ts | 1 + src/nitro/camera/IRoomCameraWidgetManager.ts | 2 +- src/nitro/camera/RoomCameraWidgetEffect.ts | 14 +++++++++++++- src/nitro/camera/RoomCameraWidgetManager.ts | 12 +++++++----- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/nitro/camera/IRoomCameraWidgetEffect.ts b/src/nitro/camera/IRoomCameraWidgetEffect.ts index 954947b1..e408a24a 100644 --- a/src/nitro/camera/IRoomCameraWidgetEffect.ts +++ b/src/nitro/camera/IRoomCameraWidgetEffect.ts @@ -6,4 +6,5 @@ export interface IRoomCameraWidgetEffect minLevel: number; texture: Texture; colorMatrix: number[]; + blendMode: number; } diff --git a/src/nitro/camera/IRoomCameraWidgetManager.ts b/src/nitro/camera/IRoomCameraWidgetManager.ts index 029f1ee7..886609f5 100644 --- a/src/nitro/camera/IRoomCameraWidgetManager.ts +++ b/src/nitro/camera/IRoomCameraWidgetManager.ts @@ -5,7 +5,7 @@ import { IRoomCameraWidgetSelectedEffect } from './IRoomCameraWidgetSelectedEffe export interface IRoomCameraWidgetManager { init(): void; - applyEffects(image: HTMLImageElement, selectedEffects: IRoomCameraWidgetSelectedEffect[]): HTMLImageElement; + applyEffects(image: HTMLImageElement, selectedEffects: IRoomCameraWidgetSelectedEffect[], isZoomed: boolean): HTMLImageElement; events: IEventDispatcher; effects: Map; isLoaded: boolean; diff --git a/src/nitro/camera/RoomCameraWidgetEffect.ts b/src/nitro/camera/RoomCameraWidgetEffect.ts index 8cd285ea..e081b689 100644 --- a/src/nitro/camera/RoomCameraWidgetEffect.ts +++ b/src/nitro/camera/RoomCameraWidgetEffect.ts @@ -7,13 +7,15 @@ export class RoomCameraWidgetEffect implements IRoomCameraWidgetEffect private _minLevel: number = -1; private _texture: Texture = null; private _colorMatrix: number[] = null; + private _blendMode: number = null; - constructor(name: string, minLevel: number = -1, texture: Texture = null, colorMatrix: number[] = null) + constructor(name: string, minLevel: number = -1, texture: Texture = null, colorMatrix: number[] = null, blendMode: number = null) { this._name = name; this._minLevel = minLevel; this._texture = texture; this._colorMatrix = colorMatrix; + this._blendMode = blendMode; } public get name(): string @@ -41,6 +43,16 @@ export class RoomCameraWidgetEffect implements IRoomCameraWidgetEffect this._colorMatrix = colorMatrix; } + public get blendMode(): number + { + return this._blendMode; + } + + public set blendMode(blendMode: number) + { + this._blendMode = blendMode; + } + public get minLevel(): number { return this._minLevel; diff --git a/src/nitro/camera/RoomCameraWidgetManager.ts b/src/nitro/camera/RoomCameraWidgetManager.ts index 98c818b8..92b938c4 100644 --- a/src/nitro/camera/RoomCameraWidgetManager.ts +++ b/src/nitro/camera/RoomCameraWidgetManager.ts @@ -28,7 +28,7 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager this._isLoaded = true; const imagesUrl = Nitro.instance.getConfiguration('image.library.url') + 'Habbo-Stories/'; - const effects = Nitro.instance.getConfiguration<{ name: string, colorMatrix?: number[], minLevel: number, enabled: boolean }[]>('camera.available.effects'); + const effects = Nitro.instance.getConfiguration<{ name: string, colorMatrix?: number[], minLevel: number, blendMode?: number, enabled: boolean }[]>('camera.available.effects'); for(const effect of effects) { @@ -42,7 +42,8 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager } else { - cameraEffect.texture = Texture.from(imagesUrl + effect.name + '.png'); + cameraEffect.texture = Texture.from(imagesUrl + effect.name + '.png'); + cameraEffect.blendMode = effect.blendMode; } this._effects.set(cameraEffect.name, cameraEffect); @@ -51,7 +52,7 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager this.events.dispatchEvent(new RoomCameraWidgetManagerEvent(RoomCameraWidgetManagerEvent.INITIALIZED)); } - public applyEffects(image: HTMLImageElement, selectedEffects: IRoomCameraWidgetSelectedEffect[]): HTMLImageElement + public applyEffects(image: HTMLImageElement, selectedEffects: IRoomCameraWidgetSelectedEffect[], isZoomed: boolean): HTMLImageElement { const container = new Container(); const texture = Texture.from(image); @@ -78,8 +79,9 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager } else { - const effectSprite = new Sprite(effect.texture); - effectSprite.alpha = selectedEffect.alpha; + const effectSprite = new Sprite(effect.texture); + effectSprite.alpha = selectedEffect.alpha; + effectSprite.blendMode = effect.blendMode; container.addChild(effectSprite); } From 815a1d87304274bb42fb40430d2b3b74b7ac64b9 Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Sun, 20 Jun 2021 11:04:14 -0300 Subject: [PATCH 2/4] RoomWidgetCamera packets --- src/nitro/communication/NitroMessages.ts | 20 ++++++++- .../messages/incoming/IncomingHeader.ts | 2 + .../RoomWidgetCameraConfigurationEvent.ts | 16 +++++++ .../camera/RoomWidgetCameraPublishedEvent.ts | 16 +++++++ ...RoomWidgetCameraPurchaseSuccessfulEvent.ts | 16 +++++++ .../messages/incoming/room/camera/index.ts | 3 ++ .../messages/incoming/room/index.ts | 1 + .../messages/outgoing/OutgoingHeader.ts | 2 + .../RoomWidgetCameraConfigurationComposer.ts | 21 +++++++++ .../camera/RoomWidgetCameraPublishComposer.ts | 21 +++++++++ .../RoomWidgetCameraPurchaseComposer.ts | 21 +++++++++ .../RoomWidgetCameraRoomPictureComposer.ts | 21 +++++++++ .../RoomWidgetCameraRoomThumbnailComposer.ts | 21 +++++++++ .../messages/outgoing/room/camera/index.ts | 5 +++ .../messages/outgoing/room/index.ts | 1 + .../RoomWidgetCameraConfigurationParser.ts | 44 +++++++++++++++++++ .../camera/RoomWidgetCameraPublishedParser.ts | 44 +++++++++++++++++++ ...oomWidgetCameraPurchaseSuccessfulParser.ts | 17 +++++++ .../messages/parser/room/camera/index.ts | 3 ++ .../messages/parser/room/index.ts | 1 + 20 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraConfigurationEvent.ts create mode 100644 src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPublishedEvent.ts create mode 100644 src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPurchaseSuccessfulEvent.ts create mode 100644 src/nitro/communication/messages/incoming/room/camera/index.ts create mode 100644 src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraConfigurationComposer.ts create mode 100644 src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPublishComposer.ts create mode 100644 src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPurchaseComposer.ts create mode 100644 src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomPictureComposer.ts create mode 100644 src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomThumbnailComposer.ts create mode 100644 src/nitro/communication/messages/outgoing/room/camera/index.ts create mode 100644 src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraConfigurationParser.ts create mode 100644 src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPublishedParser.ts create mode 100644 src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPurchaseSuccessfulParser.ts create mode 100644 src/nitro/communication/messages/parser/room/camera/index.ts diff --git a/src/nitro/communication/NitroMessages.ts b/src/nitro/communication/NitroMessages.ts index cb76d426..f57aeca9 100644 --- a/src/nitro/communication/NitroMessages.ts +++ b/src/nitro/communication/NitroMessages.ts @@ -1,5 +1,5 @@ import { IMessageConfiguration } from '../../core/communication/messages/IMessageConfiguration'; -import { ApproveNameMessageComposer, CatalogApproveNameResultEvent, RoomUnitGiveHandItemPetComposer, SellablePetPalettesEvent } from './messages'; +import { ApproveNameMessageComposer, CatalogApproveNameResultEvent, RoomUnitGiveHandItemPetComposer, RoomWidgetCameraPublishedEvent, RoomWidgetCameraPurchaseComposer, SellablePetPalettesEvent } from './messages'; import { AvailabilityStatusMessageEvent } from './messages/incoming/availability/AvailabilityStatusMessageEvent'; import { CatalogClubEvent } from './messages/incoming/catalog/CatalogClubEvent'; import { CatalogClubGiftsEvent } from './messages/incoming/catalog/CatalogClubGiftsEvent'; @@ -120,6 +120,8 @@ import { RoomEnterErrorEvent } from './messages/incoming/room/access/RoomEnterEr import { RoomEnterEvent } from './messages/incoming/room/access/RoomEnterEvent'; import { RoomForwardEvent } from './messages/incoming/room/access/RoomForwardEvent'; import { BotCommandConfigurationEvent } from './messages/incoming/room/bots/BotCommandConfigurationEvent'; +import { RoomWidgetCameraConfigurationEvent } from './messages/incoming/room/camera/RoomWidgetCameraConfigurationEvent'; +import { RoomWidgetCameraPurchaseSuccessfulEvent } from './messages/incoming/room/camera/RoomWidgetCameraPurchaseSuccessfulEvent'; import { RoomBannedUsersEvent } from './messages/incoming/room/data/RoomBannedUsersEvent'; import { RoomChatSettingsEvent } from './messages/incoming/room/data/RoomChatSettingsEvent'; import { RoomInfoEvent } from './messages/incoming/room/data/RoomInfoEvent'; @@ -319,6 +321,10 @@ import { RoomStaffPickComposer } from './messages/outgoing/room/action/RoomStaff import { RoomTakeRightsComposer } from './messages/outgoing/room/action/RoomTakeRightsComposer'; import { RoomUnbanUserComposer } from './messages/outgoing/room/action/RoomUnbanUserComposer'; import { RequestBotCommandConfigurationComposer } from './messages/outgoing/room/bots/RequestBotConfigurationComposer'; +import { RoomWidgetCameraConfigurationComposer } from './messages/outgoing/room/camera/RoomWidgetCameraConfigurationComposer'; +import { RoomWidgetCameraPublishComposer } from './messages/outgoing/room/camera/RoomWidgetCameraPublishComposer'; +import { RoomWidgetCameraRoomPictureComposer } from './messages/outgoing/room/camera/RoomWidgetCameraRoomPictureComposer'; +import { RoomWidgetCameraRoomThumbnailComposer } from './messages/outgoing/room/camera/RoomWidgetCameraRoomThumbnailComposer'; import { RoomBannedUsersComposer } from './messages/outgoing/room/data/RoomBannedUsersComposer'; import { RoomInfoComposer } from './messages/outgoing/room/data/RoomInfoComposer'; import { RoomSettingsComposer } from './messages/outgoing/room/data/RoomSettingsComposer'; @@ -446,6 +452,11 @@ export class NitroMessages implements IMessageConfiguration this._events.set(IncomingHeader.CATALOG_RECEIVE_PET_BREEDS, SellablePetPalettesEvent); this._events.set(IncomingHeader.CATALOG_APPROVE_NAME_RESULT, CatalogApproveNameResultEvent); + // CAMERA + this._events.set(IncomingHeader.CAMERA_PRICE, RoomWidgetCameraConfigurationEvent); + this._events.set(IncomingHeader.CAMERA_PUBLISHED, RoomWidgetCameraPublishedEvent); + this._events.set(IncomingHeader.CAMERA_PURCHASE_SUCCESSFUL, RoomWidgetCameraPurchaseSuccessfulEvent); + // CLIENT this._events.set(IncomingHeader.CLIENT_PING, ClientPingEvent); @@ -744,6 +755,13 @@ export class NitroMessages implements IMessageConfiguration this._composers.set(OutgoingHeader.CATALOG_SELECT_VIP_GIFT, CatalogSelectClubGiftComposer); this._composers.set(OutgoingHeader.CATALOG_REQUESET_PET_BREEDS, CatalogRequestPetBreedsComposer); + // CAMERA + this._composers.set(OutgoingHeader.CAMERA_PRICE, RoomWidgetCameraConfigurationComposer); + this._composers.set(OutgoingHeader.CAMERA_PUBLISH, RoomWidgetCameraPublishComposer); + this._composers.set(OutgoingHeader.CAMERA_PURCHASE, RoomWidgetCameraPurchaseComposer); + this._composers.set(OutgoingHeader.CAMERA_SAVE, RoomWidgetCameraRoomPictureComposer); + this._composers.set(OutgoingHeader.CAMERA_THUMBNAIL, RoomWidgetCameraRoomThumbnailComposer); + // CLIENT this._composers.set(OutgoingHeader.CLIENT_PONG, ClientPongComposer); this._composers.set(OutgoingHeader.RELEASE_VERSION, ClientReleaseVersionComposer); diff --git a/src/nitro/communication/messages/incoming/IncomingHeader.ts b/src/nitro/communication/messages/incoming/IncomingHeader.ts index fac838bb..cc0e5958 100644 --- a/src/nitro/communication/messages/incoming/IncomingHeader.ts +++ b/src/nitro/communication/messages/incoming/IncomingHeader.ts @@ -5,6 +5,8 @@ export class IncomingHeader public static AVAILABILITY_STATUS = 2033; public static BUILDERS_CLUB_EXPIRED = 1452; public static CAMERA_PRICE = 3878; + public static CAMERA_PUBLISHED = 2057; + public static CAMERA_PURCHASE_SUCCESSFUL = 2783; public static CAMERA_THUMBNAIL_SAVED = 3595; public static CAMERA_URL = 3696; public static CATALOG_CLUB = 2405; diff --git a/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraConfigurationEvent.ts b/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraConfigurationEvent.ts new file mode 100644 index 00000000..2c7293ef --- /dev/null +++ b/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraConfigurationEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../../core/communication/messages/MessageEvent'; +import { RoomWidgetCameraConfigurationParser } from '../../../parser/room/camera/RoomWidgetCameraConfigurationParser'; + +export class RoomWidgetCameraConfigurationEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, RoomWidgetCameraConfigurationParser); + } + + public getParser(): RoomWidgetCameraConfigurationParser + { + return this.parser as RoomWidgetCameraConfigurationParser; + } +} diff --git a/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPublishedEvent.ts b/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPublishedEvent.ts new file mode 100644 index 00000000..dac2a890 --- /dev/null +++ b/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPublishedEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../../core/communication/messages/MessageEvent'; +import { RoomWidgetCameraPublishedParser } from '../../../parser/room/camera/RoomWidgetCameraPublishedParser'; + +export class RoomWidgetCameraPublishedEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, RoomWidgetCameraPublishedParser); + } + + public getParser(): RoomWidgetCameraPublishedParser + { + return this.parser as RoomWidgetCameraPublishedParser; + } +} diff --git a/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPurchaseSuccessfulEvent.ts b/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPurchaseSuccessfulEvent.ts new file mode 100644 index 00000000..eb153983 --- /dev/null +++ b/src/nitro/communication/messages/incoming/room/camera/RoomWidgetCameraPurchaseSuccessfulEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../../core/communication/messages/MessageEvent'; +import { RoomWidgetCameraPurchaseSuccessfulParser } from '../../../parser/room/camera/RoomWidgetCameraPurchaseSuccessfulParser'; + +export class RoomWidgetCameraPurchaseSuccessfulEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, RoomWidgetCameraPurchaseSuccessfulParser); + } + + public getParser(): RoomWidgetCameraPurchaseSuccessfulParser + { + return this.parser as RoomWidgetCameraPurchaseSuccessfulParser; + } +} diff --git a/src/nitro/communication/messages/incoming/room/camera/index.ts b/src/nitro/communication/messages/incoming/room/camera/index.ts new file mode 100644 index 00000000..b1984472 --- /dev/null +++ b/src/nitro/communication/messages/incoming/room/camera/index.ts @@ -0,0 +1,3 @@ +export * from './RoomWidgetCameraConfigurationEvent'; +export * from './RoomWidgetCameraPublishedEvent'; +export * from './RoomWidgetCameraPurchaseSuccessfulEvent'; diff --git a/src/nitro/communication/messages/incoming/room/index.ts b/src/nitro/communication/messages/incoming/room/index.ts index e692b601..0af11081 100644 --- a/src/nitro/communication/messages/incoming/room/index.ts +++ b/src/nitro/communication/messages/incoming/room/index.ts @@ -1,5 +1,6 @@ export * from './access'; export * from './bots'; +export * from './camera'; export * from './data'; export * from './engine'; export * from './furniture'; diff --git a/src/nitro/communication/messages/outgoing/OutgoingHeader.ts b/src/nitro/communication/messages/outgoing/OutgoingHeader.ts index bf00374a..355ce787 100644 --- a/src/nitro/communication/messages/outgoing/OutgoingHeader.ts +++ b/src/nitro/communication/messages/outgoing/OutgoingHeader.ts @@ -6,6 +6,8 @@ export class OutgoingHeader public static BOT_PLACE = 1592; public static BOT_SKILL_SAVE = 2624; public static CAMERA_PRICE = 796; + public static CAMERA_PUBLISH = 2068; + public static CAMERA_PURCHASE = 2408; public static CAMERA_SAVE = 3226; public static CAMERA_THUMBNAIL = 1982; public static CATALOG_CLUB = 3285; diff --git a/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraConfigurationComposer.ts b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraConfigurationComposer.ts new file mode 100644 index 00000000..6f47811f --- /dev/null +++ b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraConfigurationComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../../core/communication/messages/IMessageComposer'; + +export class RoomWidgetCameraConfigurationComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor() + { + this._data = []; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPublishComposer.ts b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPublishComposer.ts new file mode 100644 index 00000000..586ce45a --- /dev/null +++ b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPublishComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../../core/communication/messages/IMessageComposer'; + +export class RoomWidgetCameraPublishComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor() + { + this._data = []; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPurchaseComposer.ts b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPurchaseComposer.ts new file mode 100644 index 00000000..eaae2502 --- /dev/null +++ b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraPurchaseComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../../core/communication/messages/IMessageComposer'; + +export class RoomWidgetCameraPurchaseComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor() + { + this._data = []; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomPictureComposer.ts b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomPictureComposer.ts new file mode 100644 index 00000000..e353dc4b --- /dev/null +++ b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomPictureComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../../core/communication/messages/IMessageComposer'; + +export class RoomWidgetCameraRoomPictureComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(unknownFloat: number, image: number[]) + { + this._data = [ unknownFloat, image ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomThumbnailComposer.ts b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomThumbnailComposer.ts new file mode 100644 index 00000000..99ca2682 --- /dev/null +++ b/src/nitro/communication/messages/outgoing/room/camera/RoomWidgetCameraRoomThumbnailComposer.ts @@ -0,0 +1,21 @@ +import { IMessageComposer } from '../../../../../../core/communication/messages/IMessageComposer'; + +export class RoomWidgetCameraRoomThumbnailComposer implements IMessageComposer> +{ + private _data: ConstructorParameters; + + constructor(unknownFloat: number, image: number[]) + { + this._data = [ unknownFloat, image ]; + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/src/nitro/communication/messages/outgoing/room/camera/index.ts b/src/nitro/communication/messages/outgoing/room/camera/index.ts new file mode 100644 index 00000000..bfad4dc9 --- /dev/null +++ b/src/nitro/communication/messages/outgoing/room/camera/index.ts @@ -0,0 +1,5 @@ +export * from './RoomWidgetCameraConfigurationComposer'; +export * from './RoomWidgetCameraPublishComposer'; +export * from './RoomWidgetCameraPurchaseComposer'; +export * from './RoomWidgetCameraRoomPictureComposer'; +export * from './RoomWidgetCameraRoomThumbnailComposer'; diff --git a/src/nitro/communication/messages/outgoing/room/index.ts b/src/nitro/communication/messages/outgoing/room/index.ts index 4b101b0e..48d479c2 100644 --- a/src/nitro/communication/messages/outgoing/room/index.ts +++ b/src/nitro/communication/messages/outgoing/room/index.ts @@ -1,6 +1,7 @@ export * from './access'; export * from './action'; export * from './bots'; +export * from './camera'; export * from './data'; export * from './engine'; export * from './furniture'; diff --git a/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraConfigurationParser.ts b/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraConfigurationParser.ts new file mode 100644 index 00000000..5c4e809b --- /dev/null +++ b/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraConfigurationParser.ts @@ -0,0 +1,44 @@ +import { IMessageDataWrapper } from '../../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from '../../../../../../core/communication/messages/IMessageParser'; + +export class RoomWidgetCameraConfigurationParser implements IMessageParser +{ + private _credits: number; + private _points: number; + private _pointsType: number; + + public flush(): boolean + { + this._credits = 0; + this._points = 0; + this._pointsType = 0; + + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._credits = wrapper.readInt(); + this._points = wrapper.readInt(); + this._pointsType = wrapper.readInt(); + + return true; + } + + public get credits(): number + { + return this._credits; + } + + public get points(): number + { + return this._points; + } + + public get pointsType(): number + { + return this._pointsType; + } +} diff --git a/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPublishedParser.ts b/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPublishedParser.ts new file mode 100644 index 00000000..f68c41b8 --- /dev/null +++ b/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPublishedParser.ts @@ -0,0 +1,44 @@ +import { IMessageDataWrapper } from '../../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from '../../../../../../core/communication/messages/IMessageParser'; + +export class RoomWidgetCameraPublishedParser implements IMessageParser +{ + private _wasSuccessful: boolean; + private _cooldownSeconds: number; + private _extraDataId: number; + + public flush(): boolean + { + this._wasSuccessful = false; + this._cooldownSeconds = 0; + this._extraDataId = 0; + + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._wasSuccessful = wrapper.readBoolean(); + this._cooldownSeconds = wrapper.readInt(); + this._extraDataId = wrapper.readInt(); + + return true; + } + + public get wasSuccessful(): boolean + { + return this._wasSuccessful; + } + + public get cooldownSeconds(): number + { + return this._cooldownSeconds; + } + + public get extraDataId(): number + { + return this._extraDataId; + } +} diff --git a/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPurchaseSuccessfulParser.ts b/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPurchaseSuccessfulParser.ts new file mode 100644 index 00000000..33a55829 --- /dev/null +++ b/src/nitro/communication/messages/parser/room/camera/RoomWidgetCameraPurchaseSuccessfulParser.ts @@ -0,0 +1,17 @@ +import { IMessageDataWrapper } from '../../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from '../../../../../../core/communication/messages/IMessageParser'; + +export class RoomWidgetCameraPurchaseSuccessfulParser implements IMessageParser +{ + public flush(): boolean + { + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + return true; + } +} diff --git a/src/nitro/communication/messages/parser/room/camera/index.ts b/src/nitro/communication/messages/parser/room/camera/index.ts new file mode 100644 index 00000000..32a976b4 --- /dev/null +++ b/src/nitro/communication/messages/parser/room/camera/index.ts @@ -0,0 +1,3 @@ +export * from './RoomWidgetCameraConfigurationParser'; +export * from './RoomWidgetCameraPublishedParser'; +export * from './RoomWidgetCameraPurchaseSuccessfulParser'; diff --git a/src/nitro/communication/messages/parser/room/index.ts b/src/nitro/communication/messages/parser/room/index.ts index e692b601..0af11081 100644 --- a/src/nitro/communication/messages/parser/room/index.ts +++ b/src/nitro/communication/messages/parser/room/index.ts @@ -1,5 +1,6 @@ export * from './access'; export * from './bots'; +export * from './camera'; export * from './data'; export * from './engine'; export * from './furniture'; From 4cef3ab86b4c451b5e2809cbf8f6370c8b97ad0b Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Mon, 21 Jun 2021 02:00:09 -0300 Subject: [PATCH 3/4] Authentication Packets --- src/nitro/communication/NitroMessages.ts | 8 +++++ .../messages/incoming/IncomingHeader.ts | 1 + .../incoming/handshake/AuthenticationEvent.ts | 16 ++++++++++ .../messages/incoming/handshake/index.ts | 1 + .../messages/outgoing/OutgoingHeader.ts | 1 + .../AuthenticationMessageComposer.ts | 32 +++++++++++++++++++ .../messages/outgoing/handshake/index.ts | 1 + .../parser/handshake/AuthenticationParser.ts | 27 ++++++++++++++++ .../messages/parser/handshake/index.ts | 1 + 9 files changed, 88 insertions(+) create mode 100644 src/nitro/communication/messages/incoming/handshake/AuthenticationEvent.ts create mode 100644 src/nitro/communication/messages/incoming/handshake/index.ts create mode 100644 src/nitro/communication/messages/outgoing/handshake/AuthenticationMessageComposer.ts create mode 100644 src/nitro/communication/messages/parser/handshake/AuthenticationParser.ts create mode 100644 src/nitro/communication/messages/parser/handshake/index.ts diff --git a/src/nitro/communication/NitroMessages.ts b/src/nitro/communication/NitroMessages.ts index f57aeca9..535a97ba 100644 --- a/src/nitro/communication/NitroMessages.ts +++ b/src/nitro/communication/NitroMessages.ts @@ -49,6 +49,7 @@ import { GroupConfirmMemberRemoveEvent } from './messages/incoming/group/GroupCo import { GroupInformationEvent } from './messages/incoming/group/GroupInformationEvent'; import { GroupMembersEvent } from './messages/incoming/group/GroupMembersEvent'; import { GroupSettingsEvent } from './messages/incoming/group/GroupSettingsEvent'; +import { AuthenticationEvent } from './messages/incoming/handshake/AuthenticationEvent'; import { CallForHelpResultMessageEvent } from './messages/incoming/help/CallForHelpResultMessageEvent'; import { IncomingHeader } from './messages/incoming/IncomingHeader'; import { AchievementEvent } from './messages/incoming/inventory/achievements/AchievementEvent'; @@ -263,6 +264,7 @@ import { GroupSaveColorsComposer } from './messages/outgoing/group/GroupSaveColo import { GroupSaveInformationComposer } from './messages/outgoing/group/GroupSaveInformationComposer'; import { GroupSavePreferencesComposer } from './messages/outgoing/group/GroupSavePreferencesComposer'; import { GroupSettingsComposer } from './messages/outgoing/group/GroupSettingsComposer'; +import { AuthenticationMessageComposer } from './messages/outgoing/handshake/AuthenticationMessageComposer'; import { InfoRetrieveBaseMessageComposer } from './messages/outgoing/handshake/InfoRetrieveBaseMessageComposer'; import { SecurityTicketComposer } from './messages/outgoing/handshake/SecurityTicketComposer'; import { RequestBadgesComposer } from './messages/outgoing/inventory/badges/RequestBadgesComposer'; @@ -426,6 +428,9 @@ export class NitroMessages implements IMessageConfiguration private registerEvents(): void { + // AUTHENTICATION + this._events.set(IncomingHeader.AUTHENTICATION, AuthenticationEvent); + // AVAILABILITY this._events.set(IncomingHeader.AVAILABILITY_STATUS, AvailabilityStatusMessageEvent); this._events.set(IncomingHeader.GENERIC_ERROR, GenericErrorEvent); @@ -740,6 +745,9 @@ export class NitroMessages implements IMessageConfiguration private registerComposers(): void { + // AUTHENTICATION + this._composers.set(OutgoingHeader.AUTHENTICATION, AuthenticationMessageComposer); + // CATALOG this._composers.set(OutgoingHeader.CATALOG_MODE, CatalogModeComposer); this._composers.set(OutgoingHeader.CATALOG_PAGE, CatalogPageComposer); diff --git a/src/nitro/communication/messages/incoming/IncomingHeader.ts b/src/nitro/communication/messages/incoming/IncomingHeader.ts index cc0e5958..1088c4f5 100644 --- a/src/nitro/communication/messages/incoming/IncomingHeader.ts +++ b/src/nitro/communication/messages/incoming/IncomingHeader.ts @@ -2,6 +2,7 @@ export class IncomingHeader { public static ACHIEVEMENT_LIST = 305; public static AUTHENTICATED = 2491; + public static AUTHENTICATION = -1; public static AVAILABILITY_STATUS = 2033; public static BUILDERS_CLUB_EXPIRED = 1452; public static CAMERA_PRICE = 3878; diff --git a/src/nitro/communication/messages/incoming/handshake/AuthenticationEvent.ts b/src/nitro/communication/messages/incoming/handshake/AuthenticationEvent.ts new file mode 100644 index 00000000..9583e58e --- /dev/null +++ b/src/nitro/communication/messages/incoming/handshake/AuthenticationEvent.ts @@ -0,0 +1,16 @@ +import { IMessageEvent } from '../../../../../core/communication/messages/IMessageEvent'; +import { MessageEvent } from '../../../../../core/communication/messages/MessageEvent'; +import { AuthenticationParser } from '../../parser/handshake/AuthenticationParser'; + +export class AuthenticationEvent extends MessageEvent implements IMessageEvent +{ + constructor(callBack: Function) + { + super(callBack, AuthenticationParser); + } + + public getParser(): AuthenticationParser + { + return this.parser as AuthenticationParser; + } +} diff --git a/src/nitro/communication/messages/incoming/handshake/index.ts b/src/nitro/communication/messages/incoming/handshake/index.ts new file mode 100644 index 00000000..e05b5b36 --- /dev/null +++ b/src/nitro/communication/messages/incoming/handshake/index.ts @@ -0,0 +1 @@ +export * from './AuthenticationEvent'; diff --git a/src/nitro/communication/messages/outgoing/OutgoingHeader.ts b/src/nitro/communication/messages/outgoing/OutgoingHeader.ts index 355ce787..c50e95b4 100644 --- a/src/nitro/communication/messages/outgoing/OutgoingHeader.ts +++ b/src/nitro/communication/messages/outgoing/OutgoingHeader.ts @@ -1,6 +1,7 @@ export class OutgoingHeader { public static ACHIEVEMENT_LIST = 219; + public static AUTHENTICATION = -1; public static BOT_CONFIGURATION = 1986; public static BOT_PICKUP = 3323; public static BOT_PLACE = 1592; diff --git a/src/nitro/communication/messages/outgoing/handshake/AuthenticationMessageComposer.ts b/src/nitro/communication/messages/outgoing/handshake/AuthenticationMessageComposer.ts new file mode 100644 index 00000000..d52d6cc5 --- /dev/null +++ b/src/nitro/communication/messages/outgoing/handshake/AuthenticationMessageComposer.ts @@ -0,0 +1,32 @@ +import { IMessageComposer } from '../../../../../core/communication/messages/IMessageComposer'; + +export class AuthenticationMessageComposer implements IMessageComposer +{ + private _type: string; + private _data: string[]; + + constructor(type: string, keys: string[], values: string[]) + { + this._type = type; + + if(keys.length !== values.length) return; + + this._data = []; + + for(let i = 0; i < keys.length; i++) + { + this._data.push(keys[i]); + this._data.push(values[i]); + } + } + + public getMessageArray() + { + return this._data; + } + + public dispose(): void + { + return; + } +} diff --git a/src/nitro/communication/messages/outgoing/handshake/index.ts b/src/nitro/communication/messages/outgoing/handshake/index.ts index c7ed9a66..d4f561a0 100644 --- a/src/nitro/communication/messages/outgoing/handshake/index.ts +++ b/src/nitro/communication/messages/outgoing/handshake/index.ts @@ -1,2 +1,3 @@ +export * from './AuthenticationMessageComposer'; export * from './InfoRetrieveBaseMessageComposer'; export * from './SecurityTicketComposer'; diff --git a/src/nitro/communication/messages/parser/handshake/AuthenticationParser.ts b/src/nitro/communication/messages/parser/handshake/AuthenticationParser.ts new file mode 100644 index 00000000..c4dd3d1b --- /dev/null +++ b/src/nitro/communication/messages/parser/handshake/AuthenticationParser.ts @@ -0,0 +1,27 @@ +import { IMessageDataWrapper } from '../../../../../core/communication/messages/IMessageDataWrapper'; +import { IMessageParser } from '../../../../../core/communication/messages/IMessageParser'; + +export class AuthenticationParser implements IMessageParser +{ + private _sso: string; + + public flush(): boolean + { + this._sso = null; + return true; + } + + public parse(wrapper: IMessageDataWrapper): boolean + { + if(!wrapper) return false; + + this._sso = wrapper.readString(); + + return true; + } + + public get sso(): string + { + return this._sso; + } +} diff --git a/src/nitro/communication/messages/parser/handshake/index.ts b/src/nitro/communication/messages/parser/handshake/index.ts new file mode 100644 index 00000000..88f562dc --- /dev/null +++ b/src/nitro/communication/messages/parser/handshake/index.ts @@ -0,0 +1 @@ +export * from './AuthenticationParser'; From c7f479b641954cf0050f9103fc289cd59725bbd4 Mon Sep 17 00:00:00 2001 From: MyNameIsBatman Date: Mon, 21 Jun 2021 11:49:16 -0300 Subject: [PATCH 4/4] Fix ModtoolRoomInfoParser field name --- .../messages/parser/modtool/ModtoolRoomInfoParser.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/nitro/communication/messages/parser/modtool/ModtoolRoomInfoParser.ts b/src/nitro/communication/messages/parser/modtool/ModtoolRoomInfoParser.ts index b710e0d3..bc45146b 100644 --- a/src/nitro/communication/messages/parser/modtool/ModtoolRoomInfoParser.ts +++ b/src/nitro/communication/messages/parser/modtool/ModtoolRoomInfoParser.ts @@ -5,7 +5,7 @@ export class ModtoolRoomInfoParser implements IMessageParser { private _id: number; private _playerAmount: number; - private _owner: boolean; + private _ownerInRoom: boolean; private _ownerId: number; private _ownerName: string; private _bool: boolean; @@ -26,7 +26,7 @@ export class ModtoolRoomInfoParser implements IMessageParser this._id = wrapper.readInt(); this._playerAmount = wrapper.readInt(); - this._owner = wrapper.readBoolean(); + this._ownerInRoom = wrapper.readBoolean(); this._ownerId = wrapper.readInt(); this._ownerName = wrapper.readString(); this._bool = wrapper.readBoolean(); @@ -47,9 +47,9 @@ export class ModtoolRoomInfoParser implements IMessageParser return this._playerAmount; } - public get owner(): boolean + public get ownerInRoom(): boolean { - return this._owner; + return this._ownerInRoom; } public get ownerId(): number