Haha, Runescape story time. I made a sizeable sum of GP in the early RS2 days by writing a bot that automatically bought items from underpriced general stores. To find the store operator NPC, the script would move the mouse randomly over the game window and detect the yellow text in the top left. I wrote a cool function to count the number of letters in the text, as a kind of rudimentary OCR. This defeated a lot of the randomisation that Jagex applied to stop bots, since the text was always in the same place, a consistent colour, etc whereas everything else was pretty well randomised.
From there, it could "read" enough to find the right places to click to buy things. The bot basically world hopped constantly, 24 hours a day, and bought cheap items until the general store was depleted. I'd then sell them in bulk for several times more. I never got hit with random events (in-game captchas), because I never stayed logged in for more than a minute or so. I was also not hit by any of the big banning waves, since I didn't rely on reflection in Java or use any of the popular "frameworks" for macroing.
Joke's on me though, because that game consumed several years of my life and I spent a lot of money buying several years worth of "members".
Later on there was also a gambling culture of "dicing" where you'd join an IRC channel, type a command to a bot like '/roll', and get paid in-game if the 'dice roll' came out in a certain way. I took an educated guess that the channel operators were running bots with mIRC, and reverse engineered the random number generator in the mIRC client (which was fun, because it was written in C++). Turns out it was a linear congruential generator which was in principle brute forceable given a few consecutive rolls. I wrote some OpenCL code for my GPU in the very early days when "GPGPU" was a new idea, but was never able to get it fully working because mIRC used 64-bit floating point arithmetic and the least significant digits were relevant to the outcome of the RNG, and my GPU was only 32 bit.
I wrote my own auto miner for RS3 (though it would have worked for RS2 too), and it was my first foray into the OpenCV and blob detection. If a mineral was ready to be mined it would sparkle with a distinct and small white star.
I had no other inputs beyond that, and I remember that the script would work well for about an hour or two and then I'd accidentally try to attack something else that had the nerve to sparkle at me, which would send me on a wild goose chase. At one point I came back to the machine after dinner and found myself running in the wilderness.
This resulted in me having to keep an eye on it whilst it "automines", which was frustratingly boring, and probably is similar to what certain drivers feel in their autopilot cars.
The worst part is that I was in the vicinity of actual miners who were all talking to each other, and sharing stories, and I was just this dumb mute. When enemies came to grief us during mining, my character would just ignore them and keep mining. It was incredibly rude, and after a while I just stopped using the autominer since it wasn't saving me any time or effort, and was turning me into an antisocial jerk.
I got scammed once in Runescape, selling a rune shield or something and my trade partner put up the right amount of cash, but also a bunch of random items. This bunch of random items distracted me from the fact that he decreased the cash amount by a factor of 10 and I accepted the trade.
It's good to learn such life lessons in a virtual game rather than real life!
That was definitely not the only life lesson though, I also way overpaid for a halloween mask once when they were just dropping in 2002 due to the hype.
Bought a hammer for 80k because someone 5 minutes earlier had said they wanted to buy one for 100k and I thought I would make a 20k profit. Little did 14 year old me know that the buyer and seller were working together, or were the same person, and I had been tricked into buying a hammer worth 40k for 80k.
That has to be a scam as old as time. Glad I learned that lesson on runescape instead of in real life.
this is so sick. Runescape was such an amazing game. I loved how high stakes it was. If you died, you lost your shit permanently. When I was 12 my mom didn't want me to play and wouldn't allow me to use her credit card to buy a membership. I ended up mailing a ten dollar bill to Jagex HQ in the UK for two months of membership.
Love the story. My first exposure to programming was through automating RSC. All I was doing though was writing scripts for SCAR. I think maybe in… pascal?
I remember trying to learn some Java at the time, but could never make the leap between building simple CLI app’s and primitive string manipulation to integrating with the RS client and actually doing something ‘useful’. However, I was only 8, so I’ll cut myself some slack!
From there, it could "read" enough to find the right places to click to buy things. The bot basically world hopped constantly, 24 hours a day, and bought cheap items until the general store was depleted. I'd then sell them in bulk for several times more. I never got hit with random events (in-game captchas), because I never stayed logged in for more than a minute or so. I was also not hit by any of the big banning waves, since I didn't rely on reflection in Java or use any of the popular "frameworks" for macroing.
Joke's on me though, because that game consumed several years of my life and I spent a lot of money buying several years worth of "members".
Later on there was also a gambling culture of "dicing" where you'd join an IRC channel, type a command to a bot like '/roll', and get paid in-game if the 'dice roll' came out in a certain way. I took an educated guess that the channel operators were running bots with mIRC, and reverse engineered the random number generator in the mIRC client (which was fun, because it was written in C++). Turns out it was a linear congruential generator which was in principle brute forceable given a few consecutive rolls. I wrote some OpenCL code for my GPU in the very early days when "GPGPU" was a new idea, but was never able to get it fully working because mIRC used 64-bit floating point arithmetic and the least significant digits were relevant to the outcome of the RNG, and my GPU was only 32 bit.
Link to my SE question at the time: https://crypto.stackexchange.com/questions/2086/predicting-v...