Category Archives: Software

All the software i write

Multiple Hotkey Settings for the C++ Client

Did you always want to use more than one hotkey setting without changing them every time you relog? well it is easy:
(The following does only work with Windows, a Linux version is comming when i have time)

Open your Editor and copy the following text into it, then save that file under LaunchTibia.bat and make sure that you have “all files” selected at the type, and not only .txt. Or you could also download our already created .bat file

@echo off
color 0A
title Tibia Hotkey Manager

IF EXIST "%ProgramFiles(X86)%\Tibia" set TibiaExe="%ProgramFiles(X86)%\Tibia"
IF EXIST "%ProgramFiles%\Tibia" set TibiaExe="%ProgramFiles%\Tibia"
set HotkeyPath="%AppData%\Tibia"

echo Welcome, %USERNAME%
echo Select your hotkey file please
echo 1. Knight
echo 2. Paladin
echo 3. Druid
echo 4. Sorcerer
set /p choice="Enter your choice: "

if "%choice%"=="1" set f="knight.cfg"
if "%choice%"=="2" set f="paladin.cfg"
if "%choice%"=="3" set f="druid.cfg"
if "%choice%"=="4" set f="sorcerer.cfg"

copy /y "%HotkeyPath%\%f%" "%HotkeyPath%\Tibia.cfg"

cd %TibiaExe%\

copy /y "%HotkeyPath%\Tibia.cfg" "%HotkeyPath%\%f%"

If you then want to have a special hotkey set, you simply do the following: double click the file, then you enter the number of the set you want to use (for example “3” for druid) and then you press enter. But keep the black window open in the background. It will close when you close Tibia. If you want to switch the hotkey set you need to restart Tibia.

It will look like this:

Tibia Hotkey Manager

Tibia Hotkey Manager

VLC-Transcoder 0.0

VLC-Transcoder 0.0


It is basicly a program wich uses the VLC media player to transcode media files.

You can add files via drag and drop. You need some knowledge about the different file formats because the GUI will not stop you from doing stupid things like choosing a WAVE muxer and adding a video to it.

The program is written with Lazarus and should run under MacOS and Linux as well as Windows, but only Windows is tested and shared as binary.

I would be very happy about Feedback.



  • Error handeling
  • Add missing Codecs/Muxer

Assembler IDE

Screenshot Assembler V_003

Here you see a screenshot of my latest development, an IDE for learning assembler, more specific assembler on a register machine, without all the hard stuff like a stack or external libraries. Just very simple comands which are interpreted. For now the programm itself is in german, but multi language support is coming soon. It supports comments (every line starting with “–“), labels (“:labelname”), jump instructions (“jump 5” to jump at line 5 or “jump label” to jump to a label) and math instructions (“add 5” to add the value of the register 5 to the accumulator). More to come later on

Here is the download link.

BreatIT clone the 9999999th

Break It clone

Just a little game, with a lot of comments (in german). If I have enought time, I will make this a little bit more shiny, I plan to include the following:

  • time based movement
  • the ability to control the ball by making the beater reflecting the ball based on the position it hit the beater
  • adding droops wich apear if u break a block

If you got some more ideas, feel free to comment.


Into the Tibia automap format (C++ client)


I. Introduction

I‘d recommend you to have some programming background – otherwise you might find it hard to understand some aspects of this article. I must mention something concerning this article: some content could be used to create hacking tools and bots. I am aware of this fact, but it is like with all tools: they can be used for good and for bad things. With a hammer you can either build a house or kill your neighbour, then please:
do something good for the community and don’t misuse your knowledge!
Another side note: the entire code you will see in here is written in Delphi XE2. It shouldn’t be hard to port it though.
In this article I will give you a detailed explanation of the Tibia map format (C++ client).


II. Basics

You can find the map data at “%AppData%/Tibia/Automap” for Windows or “~/.tibia/automap” for Linux.
You will find a hell lot of files inside that folder – this is your automap. The automap is broken down into 256×256 big pieces.
The file name consists of: “” where x is the x coordinate, y the y coordinate and z the height of the map piece (7 is the regular ground level, 0 stands for deepest underground and 15 for the topmost floor). These numbers are filled up with zeros. They range from “” to “”.
If an area has not been explored yet, the file does not exist. As soon as you visit even a tiniest part of it, the file gets created.

III. Map Format

It is actually a really easy system, just the details get a bit tricky:

-65536 bytes: 256×256 bytes, each byte representing 1 visible pixel of the map
-65536 bytes: 256×256 bytes, each byte representing the walking speed on a specific tile
-4 bytes: the amount of markers on the map
The following section appears once for each marker on the map, if there are no markers the file ends here.
-1 byte: x position
-1 byte: map tile the marker is on on the x axis
-2 bytes: blank, they are always zero
-1 byte: y position
-1 byte: map tile the marker is on on the y axis
-2 bytes: blank, they are always zero
-4 bytes: the image ID of the marker
-2 bytes: length of the description that follows
-n bytes: the description of the marker, each byte representing 1 ANSI character, not zero terminated

Well – this seems easy! Let’s go into more details:

IV. Graphical map colors

If you play around a little with the map files you will find out that Tibia doesn’t use all of the 256 possible colors – actually ONLY the following 15 (maybe 16):

 TTibiaMapColor = record
 colorID: byte;
 r,g,b: byte;

 TibiaMapColorList: array[0..15] of TTibiaMapColor = (
 (colorID:000;r:000;g:000;b:000), // tar, void, inner cave walls, undiscovered area
 (colorID:012;r:000;g:102;b:000), // trees or bushes,
 (colorID:024;r:000;g:204;b:000), // grass or stone ground,
 (colorID:030;r:000;g:255;b:000), // swamp
 (colorID:040;r:051;g:000;b:204), // water
 (colorID:086;r:102;g:102;b:102), // mountain or rock
 (colorID:114;r:153;g:051;b:000), // cave wall
 (colorID:121;r:153;g:102;b:051), // cave mud
 (colorID:129;r:153;g:153;b:153), // normal floor or road
 (colorID:179;r:204;g:255;b:255), // ice walls
 (colorID:186;r:255;g:051;b:000), // wall
 (colorID:192;r:255;g:102;b:000), // lava
 (colorID:207;r:255;g:204;b:153), // sand
 (colorID:210;r:255;g:255;b:000), // ladder, hole, rope point, stairs or a teleporter (means of transporting without the use of NPCs)
 (colorID:215;r:255;g:255;b:255), // snow
 (colorID:255;r:150;g:000;b:255));// unknown

colorID is the byte written in the file, r, g and b are just the regular RGB colors used by the client to display the automap.
Please note that I have only found the id 255 at a single pixel and when I went there to check it, Tibia client removed it and replaced it with 0, so it was probably just a bug. But you can never know for sure – after all, 16 colors would make more sense than 15.

V. Pathfinding

This one is quite easy:

0: unexplored
255: non-walkable
1-250: the lower the value is, the higher is your movement speed on that tile
251-254: not used

Please note that stairs/teleporters etc. are marked as non-walkable too, so you’d need to check if this tile is marked as stairs/tp in the graphical map to be sure it is non-walkable.
If you combine those two maps you can do a very nice pathfinding, even (for example) calculate what’s the fastest way from Thais to Ab’Dendriel. (google for “A* Pathfinding”)

VI. Code

Here are some of my units to help you with the map format:

If i find a way to post them in a better way i will do so.

VII. Ending

Thank you for reading my article! If you liked it, please leave your comment at the bottom of this page.
If you didn’t like the article, please write a comment as well and tell me what do you think it lacked or what you disliked.
See you soon (or a little bit later) in a article on the network connections of Tibia.

Have fun playing!