feat: add builders club communication support

This commit is contained in:
Lorenzune
2026-04-07 14:40:51 +02:00
parent aacdfe3eae
commit fd40a74396
10 changed files with 45 additions and 16 deletions
@@ -4,9 +4,9 @@ export class CatalogAdminCreateOfferComposer implements IMessageComposer<Constru
{
private _data: ConstructorParameters<typeof CatalogAdminCreateOfferComposer>;
constructor(pageId: number, itemId: number, catalogName: string, costCredits: number, costPoints: number, pointsType: number, amount: number, clubOnly: number, extradata: string, haveOffer: boolean, offerIdGroup: number, limitedStack: number, orderNumber: number)
constructor(pageId: number, itemId: number, catalogName: string, costCredits: number, costPoints: number, pointsType: number, amount: number, clubOnly: number, extradata: string, haveOffer: boolean, offerIdGroup: number, limitedStack: number, orderNumber: number, catalogMode: string = 'NORMAL')
{
this._data = [ pageId, itemId, catalogName, costCredits, costPoints, pointsType, amount, clubOnly, extradata, haveOffer, offerIdGroup, limitedStack, orderNumber ];
this._data = [ pageId, itemId, catalogName, costCredits, costPoints, pointsType, amount, clubOnly, extradata, haveOffer, offerIdGroup, limitedStack, orderNumber, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminCreatePageComposer implements IMessageComposer<Construc
{
private _data: ConstructorParameters<typeof CatalogAdminCreatePageComposer>;
constructor(caption: string, caption2: string, layout: string, iconType: number, minRank: number, visible: boolean, enabled: boolean, orderNum: number, parentId: number)
constructor(caption: string, caption2: string, layout: string, iconType: number, minRank: number, visible: boolean, enabled: boolean, orderNum: number, parentId: number, targetCatalogType: string, catalogMode: string = 'NORMAL')
{
this._data = [ caption, caption2, layout, iconType, minRank, visible, enabled, orderNum, parentId ];
this._data = [ caption, caption2, layout, iconType, minRank, visible, enabled, orderNum, parentId, targetCatalogType, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminDeleteOfferComposer implements IMessageComposer<Constru
{
private _data: ConstructorParameters<typeof CatalogAdminDeleteOfferComposer>;
constructor(offerId: number)
constructor(offerId: number, catalogMode: string = 'NORMAL')
{
this._data = [ offerId ];
this._data = [ offerId, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminDeletePageComposer implements IMessageComposer<Construc
{
private _data: ConstructorParameters<typeof CatalogAdminDeletePageComposer>;
constructor(pageId: number)
constructor(pageId: number, catalogMode: string = 'NORMAL')
{
this._data = [ pageId ];
this._data = [ pageId, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminMoveOfferComposer implements IMessageComposer<Construct
{
private _data: ConstructorParameters<typeof CatalogAdminMoveOfferComposer>;
constructor(offerId: number, orderNumber: number)
constructor(offerId: number, orderNumber: number, catalogMode: string = 'NORMAL')
{
this._data = [ offerId, orderNumber ];
this._data = [ offerId, orderNumber, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminMovePageComposer implements IMessageComposer<Constructo
{
private _data: ConstructorParameters<typeof CatalogAdminMovePageComposer>;
constructor(pageId: number, newParentId: number, newIndex: number)
constructor(pageId: number, newParentId: number, newIndex: number, catalogMode: string = 'NORMAL')
{
this._data = [ pageId, newParentId, newIndex ];
this._data = [ pageId, newParentId, newIndex, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminSaveOfferComposer implements IMessageComposer<Construct
{
private _data: ConstructorParameters<typeof CatalogAdminSaveOfferComposer>;
constructor(offerId: number, pageId: number, itemId: number, catalogName: string, costCredits: number, costPoints: number, pointsType: number, amount: number, clubOnly: number, extradata: string, haveOffer: boolean, offerIdGroup: number, limitedStack: number, orderNumber: number)
constructor(offerId: number, pageId: number, itemId: number, catalogName: string, costCredits: number, costPoints: number, pointsType: number, amount: number, clubOnly: number, extradata: string, haveOffer: boolean, offerIdGroup: number, limitedStack: number, orderNumber: number, catalogMode: string = 'NORMAL')
{
this._data = [ offerId, pageId, itemId, catalogName, costCredits, costPoints, pointsType, amount, clubOnly, extradata, haveOffer, offerIdGroup, limitedStack, orderNumber ];
this._data = [ offerId, pageId, itemId, catalogName, costCredits, costPoints, pointsType, amount, clubOnly, extradata, haveOffer, offerIdGroup, limitedStack, orderNumber, catalogMode ];
}
dispose(): void
@@ -4,9 +4,9 @@ export class CatalogAdminSavePageComposer implements IMessageComposer<Constructo
{
private _data: ConstructorParameters<typeof CatalogAdminSavePageComposer>;
constructor(pageId: number, caption: string, caption2: string, layout: string, iconType: number, minRank: number, visible: boolean, enabled: boolean, orderNum: number, parentId: number, headline: string, teaser: string, textDetails: string)
constructor(pageId: number, caption: string, caption2: string, layout: string, iconType: number, minRank: number, visible: boolean, enabled: boolean, orderNum: number, parentId: number, headline: string, teaser: string, textDetails: string, targetCatalogType: string, catalogMode: string = 'NORMAL')
{
this._data = [ pageId, caption, caption2, layout, iconType, minRank, visible, enabled, orderNum, parentId, headline, teaser, textDetails ];
this._data = [ pageId, caption, caption2, layout, iconType, minRank, visible, enabled, orderNum, parentId, headline, teaser, textDetails, targetCatalogType, catalogMode ];
}
dispose(): void
@@ -6,6 +6,8 @@ export class BuildersClubSubscriptionStatusMessageParser implements IMessagePars
private _furniLimit: number;
private _maxFurniLimit: number;
private _secondsLeftWithGrace: number;
private _placementBlockedByVisitors: boolean;
private _placementAllowedInCurrentRoom: boolean;
public flush(): boolean
{
@@ -13,6 +15,8 @@ export class BuildersClubSubscriptionStatusMessageParser implements IMessagePars
this._furniLimit = 0;
this._maxFurniLimit = 0;
this._secondsLeftWithGrace = 0;
this._placementBlockedByVisitors = false;
this._placementAllowedInCurrentRoom = false;
return true;
}
@@ -28,6 +32,12 @@ export class BuildersClubSubscriptionStatusMessageParser implements IMessagePars
if(wrapper.bytesAvailable) this._secondsLeftWithGrace = wrapper.readInt();
else this._secondsLeftWithGrace = this._secondsLeft;
if(wrapper.bytesAvailable) this._placementBlockedByVisitors = wrapper.readBoolean();
else this._placementBlockedByVisitors = false;
if(wrapper.bytesAvailable) this._placementAllowedInCurrentRoom = wrapper.readBoolean();
else this._placementAllowedInCurrentRoom = false;
return true;
}
@@ -50,4 +60,14 @@ export class BuildersClubSubscriptionStatusMessageParser implements IMessagePars
{
return this._secondsLeftWithGrace;
}
public get placementBlockedByVisitors(): boolean
{
return this._placementBlockedByVisitors;
}
public get placementAllowedInCurrentRoom(): boolean
{
return this._placementAllowedInCurrentRoom;
}
}
@@ -4,10 +4,12 @@ import { ClubOfferData } from './ClubOfferData';
export class HabboClubOffersMessageParser implements IMessageParser
{
private _offers: ClubOfferData[];
private _windowId = 1;
public flush(): boolean
{
this._offers = [];
this._windowId = 1;
return true;
}
@@ -25,6 +27,8 @@ export class HabboClubOffersMessageParser implements IMessageParser
totalOffers--;
}
if(wrapper.bytesAvailable) this._windowId = wrapper.readInt();
return true;
}
@@ -32,4 +36,9 @@ export class HabboClubOffersMessageParser implements IMessageParser
{
return this._offers;
}
public get windowId(): number
{
return this._windowId;
}
}