UO Robot is a utility that helps players of Ultima Online. It automates several of the mundane tasks of the game. It is essentially an advanced macro program. It is advanced because it does much more than the usual recording & playback of mouse clicks & keystrokes. It is intelligent - it performs screen captures of the game screen and makes intelligent decisions based on the current state of the screen. This allows for such complex tasks as recalling to all of the magic shops and stocking up on reagents, etc.
To be honest, UO Robot might be better named "Reagent Bot" or "Scribe Bot". Since it was the first Bot I wrote, it got the distinction of being the main Bot program. It is the first product in a family of products that make playing UO easier.
Here is a screen shot. Note that this is an early version of the tool, and the user interface will change a lot in the near future. The tool is currently configured to work well with my character and system. I am working on adding a configuration & setup system that will allow the user to configure the program to work with their character.
Currently UO Robot can perform the following functions:
I am going to start a beta program for UO Robot real soon now. Send me an email if you'd like to be a tester for UO Robot. Once the program has been tested & debugged, it will become available as shareware. The price will probably be around $30. Click here for additional information on the beta program.
According to OSI's Terms of Service, you can't use a utility designed for UO without their written consent. Unfortunately, they just ended their UOPro program that would approve 3rd party programs (and their web page doesn't say why). It appears that UO Robot will not gain this approval in the short term. Until this changes, you have to use UO Robot at your own risk.
OSI's policy differentiates between "exploits" and "unattended macroing". UO Robot is not an exploit - it can't do anything that a player couldn't normally do. It could be considered "unattended macroing" if you don't watch it while it is running. OSI frowns upon unattended macroing, and can penalize you for it. Check out their policy on macroing.
UO Robot doesn't unbalance the game, give players unfair advantages in combat, etc. This program doesn't do anything that a player can't do. All it does is look at the screen and generate mouse clicks and keystrokes. It does NOT snoop at the data stream between the UO client and the server. It does NOT examine or modify any of the UO memory space (e.g., as a debug process).
Many people feel very strongly about the issue of macro programs in Ultima Online. Some feel that it is cheating and giving an unfair advantage to players who use the program. In short, I feel that its OK as long as it doesn't give an UNFAIR advantage to a player. UO Robot only helps a player in stocking up and maintaining that stockage. It does not help in combat, stealing, etc. It lets you play as if you had more time to do all of the menial tasks.
Finding Vendors. To find the vendor I hit the All names macro, do a search for the name on the screen, and then double right click below the name to walk over there. Its not perfect but it usually works. I have a text file that lists the vendor for each location. Thanks to RobC for the suggestion of finding vendors using this method!
Short Answer: No! ;)
Privacy and Copy Protection Issues. (Note that this is not set in stone). The first beta(s) I put out will have a time limit (probably two weeks), and that's it for copy protection. If you want to set your clock back you could use it forever. I don't want that to happen of course, but some people don't want to pay and they'll spend 20 hours trying to hack it rather than pay $30. I'm not really going to worry about that, and hope that the honest people do pay.
As for additional network traffic, I might set up two sockets. I will of course fully document this. One will be to check for upgrades. The other will check to see that no more than one copy is being used per license number. Those are just two possibilities, and like I said I would fully disclose any info that gets passed over the network. I'm thinking the license key will some how be based on the User Name & Machine name (both can be obtained through API calls). I'll then encrypt them to create a license key, and decrypt it at run-time to check if its a valid license key.
In no way will UO Robot try to access your characters login name and password. I have already been told by one of my beta testers that he will be watching for any "unexplained packets and non-UO destinations and will publish to all newsgroups if these are not accounted." I believe him. ;)
Start UO Robot, and go to the "Run One Action" button (looks like a man walking). Hit the button, go down to the bottom and select "Capture Form". This is the tool I use to do screen captures.
You pick which window you want to capture from the drop down box. If you have Ultima Online already open, you should see the caption to that window already picked. If not, pick it from the list. Then hit the "Capture" button. You should see the bitmap transfered to the capture window. Sometimes you get gray or black spots because Ultima Online didn't have enough time to redraw. In that case just hit "Capture" again.
There's a button with a dotted line box. That's the select button. When you press it, you should see a selection rectangle inside the captured bitmap. You can move the selection rectangle using the standard mouse drags, and ctrl & shift arrow keys too I think.
If you just wanted a piece of the bitmap, you could hit the "crop" button and it would remove everything but the selection rectangle. You don't want to do that when capturing names though.
When capturing names you want to create a "Masked" bitmap which is a little more tricky. The mask portion just means that the image searching routine knows that it can skip over certain pixels that don't matter. This is necessary because obviously 99.9% of the game objects are not perfect rectangles!
To capture in object in Ultima Online, you have to do 4 basic steps: 1) Do a capture, and but the selection rectangle (a little bigger that the size of the object you want to capture) somewhere in an empty space in your backpack. 2) Hit the "Mask" button - it will tell you the next time it will create a masked image - hit OK 3) In Ultima Online, move the object into the spot you had picked. 4) Go back to the capture tool, hit the "Capture" button, and then the "Mask" button. Note if you forget to hit the capture button first you will get an empty mask bitmap and an error message!
You should have a properly masked image of that object. Now you can just save it out.
HOW TO CAPTURE VENDOR NAMES
You basically follow the steps for capturing an object. But instead of an object, you place the selection window over your characters head. You do the inital mask, then speak the Vendors name, wait for it to show up on screen, and then hit the Capture & Mask buttons a second time. As long as nothing else changed on screen, you should get a "clean" masked image of the vendors name.
Note that the color of the text you speak may not match the color of the name above the Vendors head when using the All Names macro. If this is the case, you must either change the UO text color options so that they match, or capture the Vendor's name using the All-names macro.