The Scripter’s Handbook Made by: Leejjon & Kjeld – Leetzone.us
Welcome in the world of habbo scripting.
As you know habbo is an online chat with extra features like clothing and furniture which you can buy for credits, costing you real life money.
Check www.habbo.com if you didn’t knew any of this.
This handbook is made to help beginners and more experienced people who script.
We hope that people learn the basics and that we can answer a lot of common questions.
After years of habbo and scripting we’ve got bored at the whole thing.
We want to share our experiences with people who do like habbo and scripting at this moment and to stop habbo scripting from “dieing”.
If you’ve got any questions for us than you can contact us via www.leetzone.us .
Take a look at the words + descriptions before you start to read the handbook.
These are important things if you want to understand everything and if you want to understand what scripters talk about. Most things will be explained more detailed in the following chapters.
ASCII – American Standard Code for Information Interchange, click here for a list with important ASCII’s.
B64 encoding – an encoding that shows the length of a packet, TFHA X has an encoder and decoder.
Chr(?) / [?] – If an ASCII sign is displayed as a square you can use this to show which number it is. ( = ASCII 01 = chr(1)/)
Client side / CS – Scripts only you, the client, sees. Others don’t see your client side scripts.
Client Packets – Packets that (usually) are sent from the client to the server.
Header – Beginning of a packet. The client/server recognizes a packet by looking at it’s header.
LV64 encoding – An encoding used in some server packets, TFHA X has an encoder en decoder.
Mutants – With mutants people mean habbo’s with illegal colors, shapes or that don’t have certain body parts. (this also includes mutant pets)
Server side / SS – Scripts that everyone, on the server, sees. Others can see your server side scripts.
Server Packets – Packets that (usually) are sent from the server to the client.
If you still don’t understand these words, don’t worry. Everything will be explained better later on.
What is scripting?
Outside habbo the word scripting has a very different meaning.
Scripting is programming, so making programs.
You can make a program in different languages, script languages.
Between these languages you also have differences.
You can put these between your HTML to let them work.
Besides that you also have Visual Basic, Java, C, C++ en C#.
With these languages you really make .exe files.
Scripting in habbo shares a close relation with hacking.
Hacking is not only, what most people think, stealing accounts.
It’s letting something work in a way it wasn’t made for, and benefits you.
In habbo it almost works the same, except it doesn’t have to benefit you (like colored pets) and it’s only for habbo.
Client & Server
If you want to script you need to know what habbo is built up from.
Your computer downloads (while you load habbo) the whole “game”.
The two most important parts are:
The client - Your computer which has the shockwave game in your browser.
The server – Habbo’s head computer which receives and sends all the data.
This computer knows everything from every habbo and room.
All habbo’s that are logged in are clients and connected with the server.
Data travels via the internet between the client and server.
If you’re online and you say something in a room, your computer (the client) sends packets to the server to let it know what you said.
The server will send packets with what you said to the other clients, the other habbos in the room.
They’ll receive what you just said on their screen, and that in fractions of a second.
The last page explained how the server communicates through packets with the clients.
Scripting is actually reading, editing, blocking and sending packets yourself to the server or client with a packet editor .
Almost all scripting programs are packet editor’s, the well known WPE PRO also means Winsocket Packet Editor.
As you can see on your right the client connects with a scripting program in stead of directly with the server, the server also connects with a scripting program in stead of directly with the client.
A scripting program lets all packets through so that the client nor the server knows that there’s something in between.
With a scripting program you can send every packet you want to the client but the effects can only be seen by you. (packets that go to the server can have server side effects)
Packets that go from the client to the server are always encrypted, so unreadable, probably as security against scripters.
Luckily there are people who’ve cracked the encryption and made a function in their packet editor so you can read packets from the client in the packet log and send packets without encryption to the server.
WPE PRO and all other made in Visual Basic 6 scripting programs are actually just packet editors with a built in browser.
We recommend you to use Habbo RC4 as scripting program to start off with, you can download it here .
Artmoney is an often used tool in habbo, that’s strange because a memory editor edits the memory in a selected process, that would normally only give client side results.
Still there have been ways found to script server side with Artmoney, for example the wall drop script found by Hit.
By editing the height value in the memory of your browser the walls in habbo rooms get stretched out using Artmoney.
The client only allows you to hang up posters on places where there’s wall to prevent you from hanging them outside the room.
By stretching out the walls the client thinks it’s ok to hang a poster there.
If you reload habbo the walls will be normal again but the posters now hang server side in the black.
Before encryption functions were there for everyone people used Artmoney to send data to the server without having to encrypt it.
This was done by editing packet headers in the memory of the client with Artmoney.
Using these methods you used to be able to make server side furniture.
All the editing of packet headers was quite complicated but now useless because of the cracked encryption, if the encryption may change in the future we’ll have to do all our scripts with Artmoney again.
You can download Artmoney on www.artmoney.ru
To start off with there’re two kinds of packets:
Packets meant for the client and packets meant for the server.
As example we’ll take BKLOL. (a MOD-message)
This packet should be sent from server to client, from moderator to a habbo.
You can recreate this by using a scripting program
BK is the beginning of the packet, the client sees by looking at the first letters which packet is used.
Those first letters are called the header.
You can find or study the headers yourself by looking in the packet log.
A MOD-message contains text, in this case LOL. (or anything else you want)
To end the packet you use chr(01)/. ()
With chr(01) we mean the ASCII sign with the number 01, ASCII is a collection of 255 signs that all have a number. For example A is number 41, capital B is 42 and so on. The numbers 0-32 don’t have a number/letter but are shown as a small square, we call those squares by their number to prevent confusing situations. Here you can find a list with all import ASCII’s.
By sending these and other packets to the client you can script client side.
Server Packets II
Lets take a more complicated packet, the furni packet. If you go into a room you receive packets with information about which furniture the client should show. To keep it simple I’ll use a packet with only one furniture, a teleporter: @`I5351386doorSAQBIIH0.0kvgFEFALSE
As you’ve hopefully learned, the packet begins with a header, @` and ends with a chr(01).
This packet has different places with data in it, these places are separated with chr(02)’s. You can also see an “I” right behind the header. This is encoded in Lv64, it means how much furniture the packet contains.
The number “5351386” after it is the ID of the furniture, each purchased furniture has an unique ID. After that a chr(02) follows to show that the next piece of information will start.
The word “door” is the sprite code, each furniture has its own sprite. When the client sees the word “door” it knows it has to show a teleporter.
Now it’s a bit more complicated, because this part is also encoded in LV64. I’ll decode it, SA = 7, QB = 9, these are the coordinates that show the client where the furniture is placed in the room. If you change this you’ll move the furniture.
I means 1 as I said, the dubble I after the coordinates show the size of the teleporter, because the teleporter is 1 by 1 square. The 0.0 show how high the furniture is placed.
After that you’ve got a place that shows the color and status of the furniture. A teleporter only has one color so that can’t be changed. The status is kvgFEFALSE, FALSE means that the door is closed.
You can edit and send this packet to the server to script your own client side furniture.
Change the sprite to get something else than a teleporter.
As you should know by now there’re packets for client and server.
A packet is recognized by its header, that’s why there are also headers for client and server.
As example for a packet for the server I’ll use the “getadrink” packet.
The header of a drink is AP followed by the ID of the drink.
The drink Cola has ID 19 in habbo.
What you should send to the server is AP19.
If you’re using a program with encryption AP19 is the only thing you have to send to let the cola bottle appear.
When there weren’t any public programs with encryption you had to edit the headers with Artmoney.
The header to kick a person out of the room is A_.
Script a client side person in your room with the name 19. (send an edited user packet to the client)
If you want to kick this person by clicking the “kick” button you’ll send A_19 to the server. But what if you edit the header A_ to AP with Artmoney?
If you now click the kick button you’ll send AP19 to the server.
De client side habbo won’t disappear but the drink with ID 19 will appear in your hand.
Client Packets II
An other difference between packets for the client and for the server is that packets for the server include some kind of security.
If you want to send a packet to the server it has to start with @ followed by the B64 encoding for the number of signs that follow.
B64 works like this: @A is 1, @B is 2, @C is 3 and so on.
If you want to send AP19 to the server you’ll have to send this: @@DAP19
@ < always at the beginning @D < means 4 (AP19 is 4 signs long) AP19 < as packet that you want to send.
If you send @@DAP190 to the server it’ll see that something is wrong.
@D means 4 but 5 signs follow.
What if you want to buy 4 chairs in an online shop but the server receives 40, the server will look at the B64 encoding before it and sees that something’s wrong.
Now the server knows that while the data was sent a number was added by accident and it’ll ask the client to send the request again, a kind of security.
At last but not least
We hope that you’ve learned something while reading this handbook.
We of course can’t make a chapter for every existing question, that’s why we recommend you to join a script forum.
Some links that can help you learn more about scripting:
English Forum: www.krewsforum.net
Dutch Forum (with international section): www.leetzone.us
Some English tutorials to start of with: SDBlog
Via Leetzone you can contact us, Leejjon and Kjeld.
This is the BETA version of The Scripter’s Handbook, updates will follow soon.