Custom client
Automate every aspect of the game by extending the TypeScript codebase or by sending HTTP requests
And a guide for reading memory of mono applications

hacked mud is a legal custom client for an MMO game hackmud
It is a tool for game automation. Everything that you can do in-game by hand, you can automate with TypeScript in hacked mud!

For those who don't know, hackmud is an MMO where you write scripts in JS to automate almost every aspect of the game and also hack NPCs and other players (it is amazing, go get it!). Some parts of the game are very easily to automated while others are next to impossible.
There are 3 ways to execute actions in the game
You run commands in the game terminal and get a response.
>>accts.balance
131B947M886K515GCYou make scripts that execute multiple commands for you
>>cake.inv
╔════════════════════════════════════╗
║ cake.inv - specs ║
╠════════════════════════════════════╣
║ ║
║ hardline_count: 12 ║
║ slots: 116/256 ║ <-- c001 ASCII window! :)
║ loaded: 60/64 ║
║ user: cake ║
║ balance: 131B947M886K515GC ║
║ ║
╚════════════════════════════════════╝You put your script on a cron bot.
Crons are very speed limited and fragile
However you, as a player, can execute any number of commands and can perform task sequentially. You are only limited by server response time and script execution time.
That means that you either
We can keep a hackmud window open and simulate keyboard key presses! We need to imitate a player.
The loop is:

Note
This is not the only way to do this. You can also use the flush command to dump the contents of the terminal into the shell.txt file instead of reading memory. It works and can actually be enough for most players but it does have its limitations. If you don't want to implement memory reading consider flushing the terminal
This way we can achieve quite a lot of things in the game. We can automate:
If you know a thing or two about hacking you may say
But why do all of this when you can just decompile the game and find the networking logic and just talk to the game server directly?
Nah-uh-uh! Not allowed by the game developer! People did get banned for doing this.
This project is not just software. It is an effort to document the process of reading memory of mono applications. Every step is carefully explained in a Vitepress documentation so that you could make your own memory reading client if you wanted to. You can learn about:
Prerequisites:
Basic setup steps:
git clone https://github.com/CakeEaterGames/hacked_mud.git
cd hacked_mud
make prepare
make install
make x11
make prodEverything that you need to know is in the documentation
Happy automating, mudders 👍
Licensed under MIT.