Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

HabboAir's localization init...

Initiate Mage
Feb 2, 2023
Reaction score
Hey everyone. I started developing an emulator for the HabboAir client, from scratch, just for fun and to see how far the project goes.
I decided to pick Air because, while Production builds are still being published, they have been silently abandoned as the habbo devs have not been working or them or adding new features at all (snowstorm and nft shit is missing, plus there are around 70 more packets in Air vs. production). So yes, it's a step on supporting recent builds.

I managed to crack HabboAir.swf, replace RSA keys, remove movie host checks + forced ".habbo.com" connection host and also replace the configuration text files that were embedded (both common and localization config).
So handshake and crypto work fine now:

Now, I need some help. If anyone's fiddled with the Air client and knows what's going on, that'd be awesome.
Upon sending the Auth OK message event, I'm supposed to get the InfoRetrieve request next. But it doesn't happen, and I know (to some extent) why:

So when the client receives the auth OK message, it calls this method before sending info retrieve:
Now, if localization fails to init by any reason, the client ends up in a softlock. Sending a disconnect message or closing the emulator does not give any error alert or send me to the fatal error page (this behavior happens on Production builds as well; if external flash texts TXT file fails to load, it softlocks on Production too.)

Luckily, most strings in the decrypted HabboAir swf are not obfuscated, so it's easier for me to do some research.
In classic Production builds, you'd get the external texts url from the client page variables.
However, Air goes a little further and retrieves it from a json file specified in an embedded config file:

I made a similar file as well:
The way it retrieves the external texts is basically making an url request to (url + "/" + hash).
So I modified the method to just request it to the url:
However I still can't get the external texts to load and I'm honestly bummed because I'm this close to a login on the latest version. Any help is pretty much appreciated. I have taken a look at the loadLocalizationFromURL method to see where an error could occur, but I haven't found anything. Maybe there is something I'm missing.

and loadLocalizationFromURL are the name of the methods where this localization init happens.
(this from HabboAir actionscripts)

I also considered the possibility that the Habbo.exe maybe does not allow other URLs or localhost, but this wouldn't be the case because if I shut down my web server (which hosts the swfs) the percentage is stuck at 60%. The percentage goes to 73% if my web server is turned on, so the files (hh_human_xx etc.) must be successfully retrieved! :(

Any help is much appreciated.