Hacker News new | ask | show | jobs
by gadrfgaesgysd 3943 days ago
Can you give a in-depth description of how the bots worked? You can assume the reader has good knowledge of programming, AutoIt and Diablo 2.
2 comments

Typically you had 2 types of bots:

1. AutoIt bots that simulate human interaction

2. Other bots that manipulate game memory (usually caught by the anti-cheat dubbed 'Warden', more on that later)

The reason most bots were PindleSkin bots, is because the PindleSkin unique monster spawns on Act 5 and can be accessed through a red portal. The level generated is always the same, so the path taken to the monster is always the same.

1. AutoIt bots simulate keyboard input and mouse clicks, and can check pixel colors at an x,y location on the screen. This alone allows you to navigate to the portal, enter it, and reach the monster. Enter a predefined number of key strokes and mouseclicks to cast spells and kill the monsters, and afterwards collect the loot.

Some examples of usage: Check the health and mana spheres pixel colors. You could estimate what percentage of HP or Mana your character had, by using some basic math, since the HP and Mana spheres were symmetrical. If the percentage was below a threshold, send keystroke 1, 2, 3, or 4 (this tells the game to drink a potion from one of those slots in your belt).

Checking inventory space and unloading items into the stash was done in a similar matter. The inventory is a 2d grid of squares, and each square has the same pixel color at the center. You'd count how much space you have by checking the pixels of each square and building a 2d array. You could also figure out how big an item was in terms of inventory space, by checking the empty spaces before and after lifting it off your inventory, and subtracting to get the difference.

Collecting the loot was initially done by using a d2loader pick-it hack, which injects into game memory, and uses a predefined list of items you want it to pick up. Now since this modified the memory, it was easily detectable, so when blizzard released the 'Warden' anti-cheat, it became useless.

Some guy by the name manus-magnus came around and released a new PindleSkin bot, written in AutoIt, which had a built in OCR. He was able to literally scan the items that were dropped, turn them into text, determine if they are rare, unique, or normal (based on pixel color), and whether to pick them up based on the pre-configured data the user specified.

He also took advantage of the ability to modify sprites on the client side, and add colored blocks to key points of interest places on the level. This allowed him to use these colored blocks as markers and navigate to reach the monsters he wanted to kill. All without manipulating game memory. I believe his bot included the 2 other unique monsters on Act 5 (Shenk and something else?)

Blizzard had such a hard time catching this bot, some believe it is the reason they added a 20 game / hr limit, and if you exceeded it, you got a temporary 15 minute IP ban.

2. Non AutoIt bots relied on injecting into the game memory, and using a maphack to find the monsters on randomly generated levels. They were a lot more powerful, as they were able receive a lot more information from the game, but were usually banned swiftly. I don't know that much about the implementation details of the non AutoIt bots.

If you want to find more information, you can search around the AutoIt forums for a pindle skin bot, or search online for manus magnus pindleskin bot.

I could also go into detail on how the Diablo Clone hunting was done on irc.dclone.org.

The TLDR is that a bunch of people get together and pool in Stone of Jordan rings, and then decide which servers they'll spawn the clone on, and once they're all sitting on a few of those servers, the initiate the selling and "popping" (spawning the clone) on the server.

I'm interested if it's half as good as your other post! Can you explain what exactly they're trying to achieve here? Was this getting the Uber diablo triggered by selling SoJs?
Yes indeed in order to spawn the Diablo Clone, you have to sell SoJs.

No one knows what the exact number of SoJs is, so a community was created and it used irc.dclone.org as the IRC server to manage all of this and collect data over time. This gave some historical data on how many SoJ's were sold for a certain IP address before that server "popped" (the clone spawned)

Each Diablo game you create, has a unique IP address.

Let's say you're on a server with IP 123.123.123.XXX

When you sell SoJ's, all servers that end with XXX will eventually spawn a Diablo Clone and receive the "XYZ SoJs have been sold to merchants" message.

People would gather on irc.dclone.org and pool together say 100-150 SoJs on the NON-LADDER mode. Items were cheaper on NON-LADDER, so the SoJ's were sold on a NON-LADDER server, but, the people who organize the event, would in advance hog the predetermined servers that end with XXX on LADDER mode. That way, they'd get the annihilus charm the clone drops and it'd be worth more.

So in essence, you're selling the SoJs on the NON-LADDER servers, but their effect propagates to the LADDER servers. Thus, your returns are much higher.

In order to find these servers, you'd use a similar AutoIt bot to basically create a game every 3 minutes and use some basic netstat commands to extract the IP address and once a game has the .XXX address you want, the bot will idle in it, until your group spawns the diablo clone.

A private diablo clone spawning event would typically go in the following order:

1. Get number of people to transfer SoJs to one account (buy-in is usually 10 SoJs/person assuming ~10-12 people party)

2. At time T, the SoJs selling will begin

3. Announce the IP address XXX at (T - 5 hours), this will give you 5 hours to search for game servers with IP address XXX.

4. Start selling SoJs at time T

5. Clone Spawns, everyone kills the clone in the games they have found, and collects the annihilus charm.

When I was doing this regularly, an unidentified annihilus charm was worth $20-$30 on ebay, one with perfect or near perfect stats could go up to $100.

Wow, non ladder affected ladder? How bizarre that they would do that. Such a strange mechanic for Blizzard to introduce.
Thank you. I didn't think it was possible to have PixelGetColor() as the main form of navigation. Pindleskin is really easy to reach so I can totally see this working.
You may also find this Diablo III story interesting - http://diablo3story.blogspot.com/2014/07/a-diablo-3-story.ht...
I have already read that last year.

Blizzard really screwed themselves( and the players ) with the Auction House.