• Log in or sign up for an account here: https://www.sythe.org/login

Easier to use Robot class!

Status
Not open for further replies.

somanayr

Active Member
Joined
Apr 25, 2010
Sythe Gold
0
Messages
114
<edit>
How do I make the code box smaller?!
</edit>

I had some spare time today, so I made this:
Code:
import java.awt.event.InputEvent;

import java.awt.Robot;

import java.awt.Color;

import java.awt.AWTException;

import java.lang.String;



public class bots {



/* easier_botting intended for use with java.awt.Robot in some cases.

This should shorten the number of commands need. For example, it should

no longer be necessary to type mousePress, mouseRelease and mouseMove to

click on a location.*/	

	

	

//	presses mouse button at any given location

	public static void Click(int x, int y, int button) throws AWTException{

		Robot mouseclick = new Robot();

		mouseclick.mouseMove(x, y); //moves mouse

		if (button == 1){

			mouseclick.mousePress(InputEvent.BUTTON1_MASK);

			mouseclick.mouseRelease(InputEvent.BUTTON1_MASK);

		}

		if (button == 2){

			mouseclick.mousePress(InputEvent.BUTTON2_MASK);

			mouseclick.mouseRelease(InputEvent.BUTTON2_MASK);

		}

		if (button == 3){

			mouseclick.mousePress(InputEvent.BUTTON3_MASK);

			mouseclick.mouseRelease(InputEvent.BUTTON3_MASK);

		}

	}



//	presses mouse button, moves mouse to location, releases mouse button, commonly called "dragging"

	public static void drag(int x_init, int y_init, int x_fin, int y_fin, int button) throws AWTException{

		Robot drag = new Robot();

		drag.mouseMove(x_init, y_init);

		if (button == 1){

			drag.mousePress(InputEvent.BUTTON1_MASK);

			drag.mouseMove(x_fin, y_fin);

			drag.mouseRelease(InputEvent.BUTTON1_MASK);

		}

		if (button == 2){

			drag.mousePress(InputEvent.BUTTON2_MASK);

			drag.mouseMove(x_fin, y_fin);

			drag.mouseRelease(InputEvent.BUTTON2_MASK);

		}

		if (button == 3){

			drag.mousePress(InputEvent.BUTTON3_MASK);

			drag.mouseMove(x_fin, y_fin);

			drag.mouseRelease(InputEvent.BUTTON3_MASK);

		}	



	}



//	Identifies colors

	public static int Red(int x, int y)throws AWTException{

		Robot pixel_finder = new Robot();

		Color colour;

		colour = pixel_finder.getPixelColor(x, y);

		int redness = colour.getRed();

		return redness;

		}



	public static int Blue(int x, int y) throws AWTException{

		Robot pixel_finder = new Robot();

		Color colour= pixel_finder.getPixelColor(x, y);;

		int redness = colour.getBlue();

		return redness;

		}



	public static int Green(int x, int y) throws AWTException{

		Robot pixel_finder = new Robot();

		Color colour;

		colour = pixel_finder.getPixelColor(x, y);

		int redness = colour.getGreen();

		return redness;

		}

	public static void key(String a/*, int num_letters  <-- I'm gonna work on that part*/) throws AWTException{

		Robot k = new Robot();

		//int i = num_letters - 1;

		//num_letters = 0;
                        <---And this part!
		//while (num_letters <= i){

		char letter = a.charAt(0);

		//Start lowercase letters

		if (letter == 'a'){

			k.keyPress(65); //press key, 65 is the key code

			k.keyRelease(65);

		}

		if (letter == 'b'){

			k.keyPress(66);

			k.keyRelease(66);

		}

		if (letter == 'c'){

			k.keyPress(67);

			k.keyRelease(67);

		}

		if (letter == 'd'){

			k.keyPress(68);

			k.keyRelease(68);

		}

		if (letter == 'e'){

			k.keyPress(69);

			k.keyRelease(69);

		}

		if (letter == 'f'){

			k.keyPress(70);

			k.keyRelease(70);

		}

		if (letter == 'g'){

			k.keyPress(71);

			k.keyRelease(71);

		}

		if (letter == 'h'){

			k.keyPress(72);

			k.keyRelease(72);

		}

		if (letter == 'i'){

			k.keyPress(73);

			k.keyRelease(73);

		}

		if (letter == 'j'){

			k.keyPress(74);

			k.keyRelease(74);

		}

		if (letter == 'k'){

			k.keyPress(75);

			k.keyRelease(75);

		}

		if (letter == 'l'){

			k.keyPress(76);

			k.keyRelease(76);

		}

		if (letter == 'm'){

			k.keyPress(77);

			k.keyRelease(77);

		}

		if (letter == 'n'){

			k.keyPress(78);

			k.keyRelease(78);

		}

		if (letter == 'o'){

			k.keyPress(79);

			k.keyRelease(79);

		}

		if (letter == 'p'){

			k.keyPress(80);

			k.keyRelease(80);

		}

		if (letter == 'q'){

			k.keyPress(81);

			k.keyRelease(81);

		}

		if (letter == 'r'){

			k.keyPress(82);

			k.keyRelease(82);

		}

		if (letter == 's'){

			k.keyPress(83);

			k.keyRelease(83);

		}

		if (letter == 't'){

			k.keyPress(84);

			k.keyRelease(84);

		}

		if (letter == 'u'){

			k.keyPress(85);

			k.keyRelease(85);

		}

		if (letter == 'v'){

			k.keyPress(86);

			k.keyRelease(86);

		}

		if (letter == 'w'){

			k.keyPress(87);

			k.keyRelease(87);

		}

		if (letter == 'x'){

			k.keyPress(88);

			k.keyRelease(88);

		}

		if (letter == 'y'){

			k.keyPress(89);

			k.keyRelease(89);

		}

		if (letter == 'z'){

			k.keyPress(90);

			k.keyRelease(90);

		}

		//Start capital letters

		if (letter == 'A'){

			k.keyPress(16); //16 is the keycode for "shift". Must be pressed before and released after press of other key for intended effect

			k.keyPress(65);

			k.keyRelease(65);

			k.keyRelease(16);

		}

		if (letter == 'B'){

			k.keyPress(16);

			k.keyPress(66);

			k.keyRelease(66);

			k.keyRelease(16);

		}

		if (letter == 'C'){

			k.keyPress(16);

			k.keyPress(67);

			k.keyRelease(67);

			k.keyRelease(16);

		}

		if (letter == 'D'){

			k.keyPress(16);

			k.keyPress(68);

			k.keyRelease(68);

			k.keyRelease(16);

		}

		if (letter == 'E'){

			k.keyPress(16);

			k.keyPress(69);

			k.keyRelease(69);

			k.keyRelease(16);

		}

		if (letter == 'F'){

			k.keyPress(16);

			k.keyPress(70);

			k.keyRelease(70);

			k.keyRelease(16);

		}

		if (letter == 'G'){

			k.keyPress(16);

			k.keyPress(71);

			k.keyRelease(71);

			k.keyRelease(16);

		}

		if (letter == 'H'){

			k.keyPress(16);

			k.keyPress(72);

			k.keyRelease(72);

			k.keyRelease(16);

		}

		if (letter == 'I'){

			k.keyPress(16);

			k.keyPress(73);

			k.keyRelease(73);

			k.keyRelease(16);

		}

		if (letter == 'J'){

			k.keyPress(16);

			k.keyPress(74);

			k.keyRelease(74);

			k.keyRelease(16);

		}

		if (letter == 'K'){

			k.keyPress(16);

			k.keyPress(75);

			k.keyRelease(75);

			k.keyRelease(16);

		}

		if (letter == 'L'){

			k.keyPress(16);

			k.keyPress(76);

			k.keyRelease(76);

			k.keyRelease(16);

		}

		if (letter == 'M'){

			k.keyPress(16);

			k.keyPress(77);

			k.keyRelease(77);

			k.keyRelease(16);

		}

		if (letter == 'N'){

			k.keyPress(16);

			k.keyPress(78);

			k.keyRelease(78);

			k.keyRelease(16);

		}

		if (letter == 'O'){

			k.keyPress(16);

			k.keyPress(79);

			k.keyRelease(79);

			k.keyRelease(16);

		}

		if (letter == 'P'){

			k.keyPress(16);

			k.keyPress(80);

			k.keyRelease(80);

			k.keyRelease(16);

		}

		if (letter == 'Q'){

			k.keyPress(16);

			k.keyPress(81);

			k.keyRelease(81);

			k.keyRelease(16);

		}

		if (letter == 'R'){

			k.keyPress(16);

			k.keyPress(82);

			k.keyRelease(82);

			k.keyRelease(16);

		}

		if (letter == 'S'){

			k.keyPress(16);

			k.keyPress(83);

			k.keyRelease(83);

			k.keyRelease(16);

		}

		if (letter == 'T'){

			k.keyPress(16);

			k.keyPress(84);

			k.keyRelease(84);

			k.keyRelease(16);

		}

		if (letter == 'U'){

			k.keyPress(16);

			k.keyPress(85);

			k.keyRelease(85);

			k.keyRelease(16);

		}

		if (letter == 'V'){

			k.keyPress(16);

			k.keyPress(86);

			k.keyRelease(86);

			k.keyRelease(16);

		}

		if (letter == 'W'){

			k.keyPress(16);

			k.keyPress(87);

			k.keyRelease(87);

			k.keyRelease(16);

		}

		if (letter == 'X'){

			k.keyPress(16);

			k.keyPress(88);

			k.keyRelease(88);

			k.keyRelease(16);

		}

		if (letter == 'Y'){

			k.keyPress(16);

			k.keyPress(89);

			k.keyRelease(89);

			k.keyRelease(16);

		}

		if (letter == 'Z'){

			k.keyPress(16);

			k.keyPress(90);

			k.keyRelease(90);

			k.keyRelease(16);

		}

		//start numbers

		if (letter == '1'){

			k.keyPress(49);

			k.keyRelease(49);

		}

		if (letter == '2'){

			k.keyPress(50);

			k.keyRelease(50);

		}

		if (letter == '3'){

			k.keyPress(51);

			k.keyRelease(51);

		}

		if (letter == '4'){

			k.keyPress(52);

			k.keyRelease(52);

		}

		if (letter == '5'){

			k.keyPress(53);

			k.keyRelease(53);

		}

		if (letter == '6'){

			k.keyPress(54);

			k.keyRelease(54);

		}

		if (letter == '7'){

			k.keyPress(55);

			k.keyRelease(55);

		}

		if (letter == '8'){

			k.keyPress(56);

			k.keyRelease(56);

		}

		if (letter == '9'){

			k.keyPress(57);

			k.keyRelease(57);

		}

		if (letter == '0'){

			k.keyPress(48);

			k.keyRelease(48);

		}

		//start punctuation without shift key

		if (letter == '`'){

			k.keyPress(192);

			k.keyRelease(192);

		}

		if (letter == ','){

			k.keyPress(44);

			k.keyRelease(44);

		}

		if (letter == '.'){

			k.keyPress(46);

			k.keyRelease(46);

		}

		if (letter == '\\'){

			k.keyPress(92);

			k.keyRelease(92);

		}

		if (letter == '/'){

			k.keyPress(47);

			k.keyRelease(47);

		}

		if (letter == ';'){

			k.keyPress(59);

			k.keyRelease(59);

		}

		if (letter == '\''){

			k.keyPress(222);

			k.keyRelease(222);

		}

		if (letter == '-'){

			k.keyPress(45);

			k.keyRelease(45);

		}

		if (letter == '='){

			k.keyPress(61);

			k.keyRelease(61);

		}

		if (letter == '['){

			k.keyPress(91);

			k.keyRelease(91);

		}

		if (letter == ']'){

			k.keyPress(93);

			k.keyRelease(93);

		

		//start punctuation with shift key

		if (letter == '!'){

			k.keyPress(16);

			k.keyPress(49);

			k.keyRelease(49);

			k.keyPress(16);

		}

		if (letter == '@'){

			k.keyPress(16);

			k.keyPress(50);

			k.keyRelease(50);

			k.keyRelease(16);

		}

		if (letter == '#'){

			k.keyPress(16);

			k.keyPress(51);

			k.keyRelease(51);

			k.keyRelease(16);

		}

		if (letter == '$'){

			k.keyPress(16);

			k.keyPress(52);

			k.keyRelease(52);

			k.keyRelease(16);

		}

		if (letter == '%'){

			k.keyPress(16);

			k.keyPress(53);

			k.keyRelease(53);

			k.keyRelease(16);

		}

		if (letter == '^'){

			k.keyPress(16);

			k.keyPress(54);

			k.keyRelease(54);

			k.keyRelease(16);

		}

		if (letter == '&'){

			k.keyPress(16);

			k.keyPress(55);

			k.keyRelease(55);

			k.keyRelease(16);

		}

		if (letter == '*'){

			k.keyPress(16);

			k.keyPress(56);

			k.keyRelease(56);

			k.keyRelease(16);

		}

		if (letter == '('){

			k.keyPress(16);

			k.keyPress(57);

			k.keyRelease(57);

			k.keyRelease(16);

		}

		if (letter == ')'){

			k.keyPress(16);

			k.keyPress(58);

			k.keyRelease(58);

			k.keyRelease(16);

		}

		if (letter == '~'){

			k.keyPress(16);

			k.keyPress(192);

			k.keyRelease(192);

			k.keyRelease(16);

		}

		if (letter == '<'){

			k.keyPress(16);

			k.keyPress(44);

			k.keyRelease(44);

			k.keyRelease(16);

		}

		if (letter == '>'){

			k.keyPress(16);

			k.keyPress(46);

			k.keyRelease(46);

			k.keyRelease(16);

		}

		if (letter == '|'){

			k.keyPress(16);

			k.keyPress(92);

			k.keyRelease(92);

			k.keyRelease(16);

		}

		if (letter == '?'){

			k.keyPress(16);

			k.keyPress(47);

			k.keyRelease(47);

			k.keyRelease(16);

		}

		if (letter == ':'){

			k.keyPress(16);

			k.keyPress(59);

			k.keyRelease(59);

			k.keyRelease(16);

		}

		if (letter == '"'){

			k.keyPress(16);

			k.keyPress(222);

			k.keyRelease(222);

			k.keyRelease(16);

		}

		if (letter == '_'){

			k.keyPress(16);

			k.keyPress(45);

			k.keyRelease(45);

			k.keyRelease(16);

		}

		if (letter == '+'){

			k.keyPress(16);

			k.keyPress(61);

			k.keyRelease(61);

			k.keyRelease(16);

		}

		if (letter == '{'){

			k.keyPress(16);

			k.keyPress(91);

			k.keyRelease(91);

			k.keyRelease(16);

		}

		if (letter == '}'){

			k.keyPress(16);

			k.keyPress(93);

			k.keyRelease(93);

			k.keyRelease(16);

		}

		//(space)

		if (letter == ' '){

			k.keyPress(32);

			k.keyRelease(32);

		}

		//num_letters ++;

	//}

	}

}

}

What it is is a class that makes it easier to make bots. Save it as "bots".
Functions:
Click(int x, int y, int button) : moves mouse to X, Y and presses button 1, 2, 3.
drag(int x_init, int y_init, int x_fin, int y_fin, int button) : Moves mouse to X, Y (initial), presses a mouse button, moves mouse to X, Y (final), releases mouse button
Red(X, Y) : Returns red value for position X, Y
Blue(X, Y) : Same as above with blue. Go figure
Green(X, Y) : Guess :P
key(String a) : Presses the keys to make the first letter of String a. Took 500 lines. Means you no longer have to go search for keycodes!

If anyone has anything to add, go for it.
This works really well as a substitute for Robot, but only on simple codes. If you want to just plain old move the mouse, you'll have to use Robot. I think I'll add in a pointer location finder at some point.
 
For your incredibly ugly code to get the key code int you can do something like Keyevent.setKeyChar(char keyChar) then keyevent.getKeyChar() I believe. I did something similar to what you did before i realized this tho. Mine's a lot cleaner if you want to use it. Ofc we both should have used hashmaps to get O(1) conversion times but I wrote this back when I was a noob :D

Code:
public int ascii2VK(int ascii) {
		int keyCode = -1;
		if((ascii >= 48 && ascii <=57) || (ascii >= 65 && ascii <=90)) {
			keyCode = ascii;
		} 
		else if(ascii >= 97 && ascii <= 122) {
			keyCode = ascii - 32;
		}
		else if(ascii == 10) {
			keyCode = KeyEvent.VK_ENTER;
		}
		else if(ascii == 32) {
			keyCode = KeyEvent.VK_SPACE;
		}
		else if(ascii == 33) {
			keyCode = 49;
		}
		else if(ascii == 34) {
			keyCode = KeyEvent.VK_QUOTE;
		}
		else if(ascii == 35) {
			keyCode = 51;
		}
		else if(ascii == 36) {
			keyCode = 52;
		}
		else if(ascii == 37) {
			keyCode = 53;
		}
		else if(ascii == 38) {
			keyCode = 55;
		}
		else if(ascii == 39) {
			keyCode = KeyEvent.VK_QUOTE;
		}
		else if(ascii == 40) {
			keyCode = 57;
		}
		else if(ascii == 41) {
			keyCode = 48;
		}
		else if(ascii == 42) {
			keyCode = 56;
		}
		// i <3 the creator of ascii/vk codes :]
		else if(ascii == 43) {
			keyCode = KeyEvent.VK_EQUALS;
		}
		else if(ascii == 44) {
			keyCode = KeyEvent.VK_COMMA;
		}
		else if(ascii == 44) {
			keyCode = KeyEvent.VK_COMMA;
		}
		else if(ascii == 45) {
			keyCode = KeyEvent.VK_MINUS;
		}
		else if(ascii == 46) {
			keyCode = KeyEvent.VK_PERIOD;
		}
		else if(ascii == 47) {
			keyCode = KeyEvent.VK_SLASH;
		}
		else if(ascii == 58) {
			keyCode = KeyEvent.VK_SEMICOLON;
		}
		else if(ascii == 59) {
			keyCode = KeyEvent.VK_SEMICOLON;
		}
		else if(ascii == 60) {
			keyCode = KeyEvent.VK_COMMA;
		}
		else if(ascii == 61) {
			keyCode = KeyEvent.VK_EQUALS;
		}
		else if(ascii == 62) {
			keyCode = KeyEvent.VK_PERIOD;
		}
		else if(ascii == 63) {
			keyCode = KeyEvent.VK_SLASH;
		}
		else if(ascii == 64) {
			keyCode = 50;
		}
		else if(ascii == 64) {
			keyCode = 50;
		}
		else if(ascii == 91) {
			keyCode = KeyEvent.VK_OPEN_BRACKET;
		}
		else if(ascii == 92) {
			keyCode = KeyEvent.VK_BACK_SLASH;
		}
		else if(ascii == 93) {
			keyCode = KeyEvent.VK_CLOSE_BRACKET;
		}
		else if(ascii == 94) {
			keyCode = 54;
		}
		else if(ascii == 95) {
			keyCode = KeyEvent.VK_MINUS;
		}
		else if(ascii == 123) {
			keyCode = KeyEvent.VK_OPEN_BRACKET;
		}
		else if(ascii == 124) {
			keyCode = KeyEvent.VK_BACK_SLASH;
		}
		else if(ascii == 125) {
			keyCode = KeyEvent.VK_CLOSE_BRACKET;
		}
		else {
			System.out.println("this key code has not been implemented");
		}
		return keyCode;
	}
	
	/**
	 * Checks to see if the key needs shift held down
	 * @param ascii The ascii value of the key
	 * @return Returns true if shift needs to be held to type key
	 */
	public boolean needsShift(int ascii) {
		boolean ret = false;
		if (ascii >= 65 && ascii <=90)
			ret = true;
		else if (ascii >= 33 && ascii <= 38)
			ret = true;
		else if (ascii >= 40 && ascii <= 43)
			ret = true;
		else if (ascii >= 40 && ascii <= 43)
			ret = true;
		else if (ascii == 58)
			ret = true;
		else if (ascii == 60)
			ret = true;
		else if (ascii >= 62 && ascii <= 64)
			ret = true;
		else if (ascii == 94)
			ret = true;
		else if (ascii == 95)
			ret = true;
		else if (ascii >= 123 && ascii <= 125)
			ret = true;
		return ret;
	}
	
	/**
	 * Generates key events to type the character given.
	 * @param ascii The ascii value of the character to be typed
	 */
	 public void sendKey(int ascii) {
	 	if (needsShift(ascii)) {
	 		robot.keyPress(KeyEvent.VK_SHIFT);
			robot.delay(random(random(11,16),random(16,28)));
    		robot.keyPress(ascii2VK(ascii));
			robot.delay(random(random(11,16),random(16,28)));
			robot.keyRelease(ascii2VK(ascii));
			robot.delay(random(random(11,16),random(16,28)));
			robot.keyRelease(KeyEvent.VK_SHIFT);
		}
		else {
			robot.keyPress(ascii2VK(ascii));
			robot.delay(random(random(11,16),random(16,28)));
			robot.keyRelease(ascii2VK(ascii));
		}
	}
 
Yours is still pretty damn ugly...
Why is mine double spaced???
 
Status
Not open for further replies.
Runescape Gamblingrunescape gambling
Back
Top