Recompilable Habbo.swf 2021-11-10

ntuative

Member
Oct 5, 2021
10
28
Hi All,

I am back once again. This time with a recompilable SWF for the HabboAir client targeting Adobe Flash Player for usage in both browsers and projectors.

This release corresponds to the following client version: WIN63-202111081545-75921380.

You can find the source on my which also includes a precompiled SWF.

Screenshot:
 

Sledmore

Chaturbate Livestreamer
Staff member
FindRetros Moderator
Jul 24, 2010
5,194
3,901
Damn, another amazing release. I'd figured people would try to achieve this, but wasn't sure if they'd pull it off. Good job, that's insane.

Thanks a bunch for the source, been playing around a little and have got it running, I've a little issue with the fonts (not too bothered about it for now, just playing around w/ other bits first). But any suggestions on how to get around that? :p

Looking forward to screwing around with it further, few notes below for those who fancy playing with it.

Couple things for people who use this revision, so far:
  • You'll need to set up an endpoint like Habbo for the gamedata files, e.g.
  • You'll probably need rewrite rules to match theirs unless you feel like changing the code, which is entirely possible.
  • Make sure your figuremap is in your external_variables, as it looks like the overrides are no longer called.
  • AchievementsEvent (790) requires a new short for state
  • MarketplaceConfigurationEvent (3958) requires 3 new integers, sellingFeePercentage, revenueLimit, halfTaxLimit
  • ExtendedProfileMessageEvent (2854) doesn't require changes, but will accept bool, int, int, int, bool, bool. The first int for account level, third for star gem count.
  • Possibly more structure changes, haven't fully ventured yet.
  • For web API you'll need an initial /api/public/info/hello call, e.g.
See below @ font issue:

unknown.png


For the login flow, you can edit the environments list in the HabboHabboConfigurationCom_Habbocommon_configuration_txt.bin file, to give you something like:

unknown.png
 

ntuative

Member
Oct 5, 2021
10
28
Couple things for people who use this revision, so far:
  • You'll need to set up an endpoint like Habbo for the gamedata files, e.g.
  • You'll probably need rewrite rules to match theirs unless you feel like changing the code, which is entirely possible.
  • Make sure your figuremap is in your external_variables, as it looks like the overrides are no longer called.
  • AchievementsEvent (790) requires a new short for state
  • MarketplaceConfigurationEvent (3958) requires 3 new integers, sellingFeePercentage, revenueLimit, halfTaxLimit
  • ExtendedProfileMessageEvent (2854) doesn't require changes, but will accept bool, int, int, int, bool, bool. The first int for account level, third for star gem count.
  • Possibly more structure changes, haven't fully ventured yet.
  • For web API you'll need an initial /api/public/info/hello call, e.g.

Thanks for catching these, you can still supply a number of the usual flash vars via your typical html client which I believe will then be merged into the defaults provided within the common configuration file. I've only tested this against Habbo itself however so I could be wrong.


For the login flow, you can edit the environments list in the HabboHabboConfigurationCom_Habbocommon_configuration_txt.bin file, to give you something like:

There's a secondary branch that removes the hotel selector allowing an SSO ticket to be provided via the usual means with the remainder of the config pointing at the "en" environment.
 

Nigo

New Member
Jun 25, 2020
26
23
Damn, another amazing release. I'd figured people would try to achieve this, but wasn't sure if they'd pull it off. Good job, that's insane.

Thanks a bunch for the source, been playing around a little and have got it running, I've a little issue with the fonts (not too bothered about it for now, just playing around w/ other bits first). But any suggestions on how to get around that? :p

Looking forward to screwing around with it further, few notes below for those who fancy playing with it.

Couple things for people who use this revision, so far:
  • You'll need to set up an endpoint like Habbo for the gamedata files, e.g.
  • You'll probably need rewrite rules to match theirs unless you feel like changing the code, which is entirely possible.
  • Make sure your figuremap is in your external_variables, as it looks like the overrides are no longer called.
  • AchievementsEvent (790) requires a new short for state
  • MarketplaceConfigurationEvent (3958) requires 3 new integers, sellingFeePercentage, revenueLimit, halfTaxLimit
  • ExtendedProfileMessageEvent (2854) doesn't require changes, but will accept bool, int, int, int, bool, bool. The first int for account level, third for star gem count.
  • Possibly more structure changes, haven't fully ventured yet.
  • For web API you'll need an initial /api/public/info/hello call, e.g.
See below @ font issue:

unknown.png


For the login flow, you can edit the environments list in the HabboHabboConfigurationCom_Habbocommon_configuration_txt.bin file, to give you something like:

unknown.png
Hello,

Since it is a long time ago I was wondering if you did found the issue with the font? It seems nothing is working. Editting the TextController/Replace ttf’s does not seems to do the trick either grrr!

Regards
 

ntuative

Member
Oct 5, 2021
10
28
Hello,

Since it is a long time ago I was wondering if you did found the issue with the font? It seems nothing is working. Editting the TextController/Replace ttf’s does not seems to do the trick either grrr!

Regards

Hi,

I had investigated this to some extent previously with Sledmore, unfortunately I was unable to determine the root cause for the font issue but believe it to involve a missing cast somewhere in the text engine.

Specifically I believe it occurs when interpreting the client css assets that specify the thickness and sharpness of a given font.


I haven't looked at this for some time now but I hope that helps point you in the right direction!
 

Doeha

New Member
Dec 30, 2021
1
3
Awesome release!

The font issue has to do with the SDK in combination with the .asconfig properties and the fonts (.ttf files and linked .as files)

Download and use Adobe Flex SDK version 4.6.0:

This SDK also has the necessary playerglobal.swc included (version 11.1)
Because of this SDK change, I also had to change the bytes function in BitmapFileLoader.as to make this compatible.

Returning to Sledmore's packet structure changes:
  • AchievementEvent (753) also requires a new short for state

There are also other changes that are important to mention:
  • The badges now load as png instead of gif.
    • To change this back to gif you need to change the png path to gif in some files.
      Only the lines containing "album1584" need to be changed in these files.

      It concerns these files:
      • BadgeImageWidget.as
      • ConcurrentUsersInfoElementHandler.as
      • _SafeStr_230.as
  • The user respect functionality has been completely removed from the code.
    • I've managed to implement this functionality back to the way Habbo had it before. With this fix the give star gem button has also been replaced with the respect button. If you also want to be able to give gems then you can remove the code comments and set the container y's correctly for every button in "avatar_menu_widget_xml".
  • Habbo has broken the free flow chat bubbles with id 1 (generic) and 34 (notification)
    • This is caused by the "getConfigBoolean" function in ChatStyleLibrary misreading the "anonymous" boolean property of the chat bubble regpoints txts. The boolean recognition through this function is based on whether the anonymous rule equals "true", but reads "true\r". In earlier versions this was based on a contains (through indexOf) instead of equals. After replacing this function, this has been fixed.

All the files I had to modify for these fixes can be found in the zip in the attachments.
 

Attachments

  • All fixes.zip
    433.1 KB · Views: 43

ntuative

Member
Oct 5, 2021
10
28
Awesome release!

The font issue has to do with the SDK in combination with the .asconfig properties and the fonts (.ttf files and linked .as files)

Download and use Adobe Flex SDK version 4.6.0:

This SDK also has the necessary playerglobal.swc included (version 11.1)
Because of this SDK change, I also had to change the bytes function in BitmapFileLoader.as to make this compatible.

Returning to Sledmore's packet structure changes:
  • AchievementEvent (753) also requires a new short for state

There are also other changes that are important to mention:
  • The badges now load as png instead of gif.
    • To change this back to gif you need to change the png path to gif in some files.
      Only the lines containing "album1584" need to be changed in these files.

      It concerns these files:
      • BadgeImageWidget.as
      • ConcurrentUsersInfoElementHandler.as
      • _SafeStr_230.as
  • The user respect functionality has been completely removed from the code.
    • I've managed to implement this functionality back to the way Habbo had it before. With this fix the give star gem button has also been replaced with the respect button. If you also want to be able to give gems then you can remove the code comments and set the container y's correctly for every button in "avatar_menu_widget_xml".
  • Habbo has broken the free flow chat bubbles with id 1 (generic) and 34 (notification)
    • This is caused by the "getConfigBoolean" function in ChatStyleLibrary misreading the "anonymous" boolean property of the chat bubble regpoints txts. The boolean recognition through this function is based on whether the anonymous rule equals "true", but reads "true\r". In earlier versions this was based on a contains (through indexOf) instead of equals. After replacing this function, this has been fixed.

All the files I had to modify for these fixes can be found in the zip in the attachments.

Awesome work!

I would have never guessed that my FlexSDK installation would cause such an issue so I'm glad you were able to get to the bottom of it.

I had noted the free-flow chat issue but I think I just cheated and added positions or whatever it was since I didn't want to dig deeper into the mess.

If you want to draft a pull request or similar I'd be happy to accept it. Otherwise, with your permission I'd also be happy to review the above fixes and create a patch commit.
 

Sledmore

Chaturbate Livestreamer
Staff member
FindRetros Moderator
Jul 24, 2010
5,194
3,901
Awesome release!

The font issue has to do with the SDK in combination with the .asconfig properties and the fonts (.ttf files and linked .as files)

Download and use Adobe Flex SDK version 4.6.0:

This SDK also has the necessary playerglobal.swc included (version 11.1)
Because of this SDK change, I also had to change the bytes function in BitmapFileLoader.as to make this compatible.

Returning to Sledmore's packet structure changes:
  • AchievementEvent (753) also requires a new short for state

There are also other changes that are important to mention:
  • The badges now load as png instead of gif.
    • To change this back to gif you need to change the png path to gif in some files.
      Only the lines containing "album1584" need to be changed in these files.

      It concerns these files:
      • BadgeImageWidget.as
      • ConcurrentUsersInfoElementHandler.as
      • _SafeStr_230.as
  • The user respect functionality has been completely removed from the code.
    • I've managed to implement this functionality back to the way Habbo had it before. With this fix the give star gem button has also been replaced with the respect button. If you also want to be able to give gems then you can remove the code comments and set the container y's correctly for every button in "avatar_menu_widget_xml".
  • Habbo has broken the free flow chat bubbles with id 1 (generic) and 34 (notification)
    • This is caused by the "getConfigBoolean" function in ChatStyleLibrary misreading the "anonymous" boolean property of the chat bubble regpoints txts. The boolean recognition through this function is based on whether the anonymous rule equals "true", but reads "true\r". In earlier versions this was based on a contains (through indexOf) instead of equals. After replacing this function, this has been fixed.

All the files I had to modify for these fixes can be found in the zip in the attachments.

Damn, good job! That's awesome, seems to be working flawlessly my end.

Thanks a bunch for your contributions, also good catch w/ the free flow chat.

Some minor other changes, new images needed for achievements - nothing stopping anyone from re-naming them or pointing them to the old place, but attached below.

Hot looks no longer uses the XML file, instead it has its own packets now which is quite nice.

GetHotLooksMessageEvent = 2638
HotLooksMessageComposer = 2696
 

Attachments

  • achievement_background_active_1.zip
    51.3 KB · Views: 32

ntuative

Member
Oct 5, 2021
10
28
I've now updated the GitHub repository to include a set of formatting fixes and the required font updates. This includes precompiled SWF's for usage on both branches.

For those wishing to compile the project themselves you will need to perform the following steps:

1. Get the AirSDK from selecting the version with the new action script compiler.
2. Download the last Adobe SDK from the that @Doeha provided.
3. Create the lib/external/optional directory.
4. Copy the following .jar files into the newly created directory.
1. adt.jar
2. afe.jar
3. aglj40.jar
4. flex-fontkit.jar
5. rideau.jar

Once the above has been completed you should be able to compile without issue.

Following this I'll work on migrating the respect changes and other items to separate branches so people can mix and match the codebase to suit their needs.

Special thanks goes out to @Doeha who figured this all out!
 

ntuative

Member
Oct 5, 2021
10
28
Might be a noob question, not sure.
Is this usable for Nitro & Arcturus Morningstar?

Certainly not a noob question!

This release is for Flash Player and has nothing to do with Nitro which is a HTML5 alternative to Habbo's flash client. Additionally, while Morningstar, Plus, etc. could support this none of them do publicly at the current moment.

Sledmore has documented some of the updates that would be required above to start adding support but I'm sure more would be required since the two mostly support clients from the 2017 era outside of certain private versions.
 

Users who are viewing this thread

Top