It's simplistic, I guess, but that almost comes with the territory. You pretty much only need a way to start and stop training, and of course the ability to tell it how to train, and these are the things on offer. When you start the program, you're greeted with a simple login prompt. Fill it out, and you'll then be taken to a screen similar to the image above, except it will of course display your pets. It's built using Ruby and the GTK+ toolkit, so it should look pretty much the same on all operating systems.
Clicking a pet's "Start Training" button will bring up a prompt for choosing the training strategy. "Balanced" keeps a 2/1 ratio between Level and the other stats, which can be filtered with the checkboxes if, for instance, you only want to train Level and HP. "Random" will just pick a random stat out of the ones you've checked, and "Set Order" allows you to fill in a string like "LDSLLSD" if you wanted to train Level, then Defense, then Strength, and so on. Of course, it will always train Level if required by some other stat being more than twice the current.
I've tried to make it as foolproof as possible, but there are no absolutes in that particular domain. It makes sure you're logged in before making any requests to Neopets, will pick up right in the middle if the pet is training, waiting for its course to be paid for, or has already finished. Pets can't be trained at the Island if they're in the Academy; right now, the program just informs you of such and stops processing that pet.
When gathering Codestones, it checks inventory first, then SDB, and finally buys them from the Shop Wizard if necessary. This process takes a couple seconds because it has to hit Neopets quite a few times, and currently the program's interface hangs when making HTTP requests. Don't freak out and click like crazy, you will only do harm. When buying codestones, it chooses the first shop that has as many of the Codestone in stock as you need + 1, just to ensure you can buy the requisite amount in the event that somebody picks one up in the interim. I have all labbed pets with low levels, so wasn't able to test multiple Codestones, but I think the implementation is sound. We'll see. : )
Hm... well, that's about it for usage, I suppose. Now for the technical side. The program is Ruby, but I didn't want to make everybody have to go through the process of installing it and properly setting up; in fact, I wanted it to be as simple as possible to just download it and get it running. To that end, I used Ocra (One-Click Ruby Application) to package everything up into a single .exe. Here is the code that gets compiled:
require 'gtk2' require 'net/http' require 'oily_png' include Gtk, Gdk code = Net::HTTP.start('inkheart.googlecode.com').get( "/svn/trunk/autotrainer.rb?#{rand}" ).body eval code
This grabs all of the actual code from a remote file hosted on Google Projects. I set it up this way to allow for seamless bug fixes and updates. This is usually a very shifty way of doing things, but I solemnly swear that I am up to no evil. Because the program has to dynamically load all of the Ruby interpreter before starting, IT WILL TAKE A WHILE FOR THE PROGRAM TO START. Don't keep clicking it, as this will benefit nothing. Shouldn't take more than 15 or 20 seconds for your computer to figure out where everything is and should go.
Non-Windows users (please reproduce, you beautiful people) or those who despise the slow startup time should be able to simply save the above code as a .rb file and pass it to Ruby, but will of course have to download Ruby before doing so. People who don't use Windows tend to be a brighter bunch, though, so that shouldn't be much trouble.
Roadmap
Use Typhoeus to do non-blocking HTTP calls, which prevents the GUI from hanging. Requires Windows users to download and set up libcurl, though, which is why I avoided it for the initial release.
Clean up the incredibly shitty code, if only for the sake of pride. I wanted to see what building an interface from scratch was like, as opposed to using Glade to design it, and it was not a pleasant experience.
Allow for training at the Academy, maybe.
Download
Unfortunately, the .exe has to package the entire Ruby language to run, so it's ~20MB, meaning I can't host it here. MediaFire is entirely reputable, and they scan for viruses during upload, so you're in no danger there. As for stealing your passwords, well,