import impsoft.nexus.bots.color.ColorBot; import impsoft.nexus.bots.color.scriptable.*; import impsoft.nexus.bots.color.scriptable.components.*; import impsoft.nexus.bots.color.scriptable.components.bottom.*; import impsoft.nexus.bots.color.scriptable.components.gamescreen.*; import impsoft.nexus.bots.color.scriptable.components.minimap.*; import impsoft.nexus.bots.color.scriptable.components.tab.*; import impsoft.nexus.bots.color.scriptable.interfaces.*; import impsoft.nexus.bots.color.scriptable.objects.*; import impsoft.nexus.bots.color.structures.*; import impsoft.nexus.bots.color.util.*; import impsoft.nexus.bots.reflection.objects.*; import impsoft.nexus.bots.reflection.scriptable.components.*; import impsoft.nexus.bots.reflection.structures.*; import java.awt.event.KeyEvent; import java.awt.Color; import java.awt.Graphics; import java.awt.Rectangle; public class MonkCurser extends ColorScript implements AutoPaint { public static String[] commands = new String[] { "Curse" }; public static String author = "Ainokea"; public static String description = "zammy monk curser for usa"; public static double version = 1.1; //The settings bellow do it every so many minutes. //usage - random(minmum, max); //How many minute to rotate the screen. int rotateScreenEvery = random(25,40); //How many minutes to random right click int randomRightClickEvery = random(20,35); //How many minutes to hoover over a skiil. int hoverSkillEvery = random(45,60); //1000 ms = 1 second //Minmum wait between casts.(ms) int minWait = 750; //Maximum wait between casts.(ms) int maxWait = 1250; //amount of casts to do int CastsToDo = 500; Rectangle curseRectangle = new Rectangle(666,256,13, 13 ); AryanTile monkArea = new AryanTile(3214, 3476); Curser Curser = new Curser(this); Stairs Stairs = new Stairs(this); Timer Hover = new Timer(0); Timer RClick= new Timer(0); Timer Rotate= new Timer(0); int casts = 0; long startTime = System.currentTimeMillis(); long Time1= System.currentTimeMillis(); long Time2= System.currentTimeMillis(); long Time3= System.currentTimeMillis(); ColorBot b5; public MonkCurser(ColorBot b) { super(b); b5 = b; } public void script() throws InterruptedException { theCompass.setEast(); debug("Setting Compass East"); while(true) { if(getLocation().distanceTo(monkArea) <= 10) { if(getLocation().distanceTo(monkArea) <= 2) { debug(CastsToDo); debug(casts); if(CastsToDo > casts) { if(inFight()) { debug("Fight Found"); if(isFight()) { new AryanPath(new AryanTile(3212,3463),this); sleep(random(1500,2500)); new AryanPath(monkArea,this).walkToEnd(); sleep(random(1250,2000)); } } if(!theTopText.isTopTextContaining("Cast")) { debug("Top Text Not Containing Cast > Selecting Spell"); stopRandom("MouseMover"); curse(); startRandom("MouseMover"); } if(Curser.attack()) { debug("Attacked Monk"); casts++; debug("Sleeping"); sleep(random(minWait,maxWait)); debug("Checking For AntiBan.."); AntiBan(); } } else { debug("Done"); theLoggedInTest.logOut(); stopAllRandoms(); b5.theScriptManager.stopScript(); log("Completed "+casts+" Curses"); } } else { new AryanPath(monkArea,this).walkToEnd(); } } } } public void walkUpStairs() throws InterruptedException { AryanTile stairs = new AryanTile(3213,3472); AryanTile upStairs = new AryanTile(3213,3476); new AryanPath(stairs,this).walkToEnd(); while(getLocation().distanceTo(upStairs) > 1) { Stairs.upStairs(); sleep(random(2000,3500)); } } public void walkDownStairs() throws InterruptedException { AryanTile downStairs = new AryanTile(3213,3472); while(getLocation().distanceTo(downStairs) > 1) { Stairs.downStairs(); sleep(random(2000,3500)); } } /* * isFight() * @author SRL (java convert by Ainokea) */ public boolean isFight() throws InterruptedException { if (inFight()) { sleep(random(1000, 1250)); return inFight(); } return false; } /* * inFight() * @Ainokea */ public boolean inFight()throws InterruptedException { XY[] hpbars = theHPBars.getHPBarsOnGameScreen(); Rectangle searchZone = new Rectangle(230, 130, 280 - 230, 180 - 130); for(int x =0; x 59) { minutes = seconds / 60; } else { minutes = 0; } return minutes; } //return time in minutes private int getMinutes() { int seconds = getSeconds(); int minutes; if (seconds > 59) { minutes = seconds / 60; } else { minutes = 0; } return minutes; } //Time running in minutes and seconds public String TimeRunning() { int seconds = getSeconds(); int minutes = getMinutes(); if (seconds > 59) { int remMinutes = seconds % 60; return (+minutes + " Minutes and " + remMinutes + " Seconds"); } else { return ("0 Minutes and " + seconds + " Seconds"); } } public void curse() throws InterruptedException { if(!theTabs.Magic.isSelected()) { theTabs.Magic.setSelected(); sleep(random(100,200)); } mouseClickLeft(curseRectangle); sleep(random(300,400)); } /* AntiBan * Calls HoverSkill, Random Right Click, and Roate Screen. In Timer increments. */ public void AntiBan()throws InterruptedException { int ranHover = random(0,11); if(getMinutes(Time1) >= hoverSkillEvery) { debug("[AntiBan]Hover Skill "); if(ranHover >= 5) { HoverSkill("magic"); } else { HoverSkill("random"); } Time1 = System.currentTimeMillis(); } else if(getMinutes(Time2) >= randomRightClickEvery) { RandomRClick(); debug("[AntiBan] Random Right Click"); Time2 = System.currentTimeMillis(); } else if(getMinutes(Time3) >= rotateScreenEvery) { RotateScreen(); debug("[AntiBan] Rotate Screen"); Time3 = System.currentTimeMillis(); } } /* HoverSkill * Hovers mouse over the selected skill. * @author SRl (java convert Ainokea) */ public void HoverSkill(String Skill) throws InterruptedException { theTabs.Statistics.setSelected(); stopRandom("MouseMover"); String skill = Skill.toLowerCase(); int row = 0; int col = 0; if(skill.contains("attack")) { row = 1; col = 1; } else if(skill.contains("strength")) { row = 2; col = 1; } else if(skill.contains("defence")) { row = 3; col = 1; } else if(skill.contains("range")) { row = 4; col = 1; } else if(skill.contains("prayer")) { row = 5; col = 1; } else if(skill.contains("magic")) { row = 6; col = 1; } else if(skill.contains("runecraft")) { row = 7; col = 1; } else if(skill.contains("hitpoints")) { row = 1; col = 2; } else if(skill.contains("agility")) { row = 2; col = 2; } else if(skill.contains("herblore")) { row = 3; col = 2; } else if(skill.contains("thieving")) { row = 4; col = 2; } else if(skill.contains("crafting")) { row = 5; col = 2; } else if(skill.contains("fletching")) { row = 6; col = 2; } else if(skill.contains("slayer")) { row = 7; col = 2; } else if(skill.contains("smithing")) { row = 2; col = 3; } else if(skill.contains("mining")) { row = 1; col = 3; } else if(skill.contains("fishing")) { row = 3; col = 3; } else if(skill.contains("cooking")) { row = 4; col = 3; } else if(skill.contains("firemaking")) { row = 5; col = 3; } else if(skill.contains("woodcutting")) { row = 6; col = 3; } else if(skill.contains("farming")) { row = 7; col = 3; } else if(skill.contains("construction")) { row = 8; col = 1; } else if(skill.contains("hunter")) { row = 8; col = 2; } else if(skill.contains("random")) { row = random(0,8) + 1; col = random(0,3) + 1; } else { row = random(0,8) + 1; col = random(0,3) + 1; } mouseMove(new Rectangle(532 + (64 * col), 191 + (31 * row), 10, 10)); sleep(random(5000,10000)); startRandom("MouseMover"); } /* RandomRClick * Randomly right clicks some where on the rs screen * @author SRL (java convert Ainokea) */ public void RandomRClick() throws InterruptedException { switch (random(0, 7)) { case 0: mouseClickRight(rectangleFromScar(533, 7, 757, 200)); sleep(random(600, 900)); case 1: mouseClickRight(rectangleFromScar(521, 3, 553, 496)); sleep(random(600, 900)); case 2: mouseClickRight(rectangleFromScar(743, 3, 764, 497)); sleep(random(600, 900)); case 3: mouseClickRight(rectangleFromScar(4, 467, 763, 498)); sleep(random(600, 900)); case 4: mouseClickRight(rectangleFromScar(499, 343, 552, 496)); sleep(random(600, 900)); case 5: mouseClickRight(rectangleFromScar(3, 343, 521, 355)); sleep(random(600, 900)); case 6: mouseClickRight(rectangleFromScar(2, 346, 14, 499)); sleep(random(600, 900)); } } /* Rotate Screen * Randomly rotates the camera in one direction. * @author SRL (java convert Ainokea) */ public void RotateScreen() throws InterruptedException { int key = random(0, 3); stopRandom("MouseMover"); if (key == 0) { SendKey(KeyEvent.VK_UP, 500 + random(100, 500)); } else if (key == 1) { SendKey(KeyEvent.VK_RIGHT, 500 + random(100, 500)); } else if (key == 2) { SendKey(KeyEvent.VK_LEFT, 500 + random(100, 500)); } sleep(random(200, 500)); startRandom("MouseMover"); theCompass.setEast(); sleep(random(100,200)); } public Rectangle rectangleFromScar(int x1, int y1, int x2, int y2) { return new Rectangle(x1, y1, x1-x2, y2-y1); } class Stairs extends RGBCluster { public Stairs(ColorScript c) { super(new RGB[] {new RGB(107,95,60), new RGB(117,103,67),new RGB(136,121,76)}, c); } public boolean upStairs() throws InterruptedException { gatherNewPoints(5); return doTopTextAndMenu("up","up"); } public boolean downStairs() throws InterruptedException { setBounds(new Rectangle(173,179, 100, 75)); gatherNewPoints(10); return doTopTextAndMenu("down","down"); } } class Curser extends RGBCluster { public Curser(ColorScript c) { super(new RGB[]{new RGB(73,28,26), new RGB(86, 33, 31)}, c); } public boolean attack() throws InterruptedException { gatherNewPoints(5); sortPointsByDistanceToXY(new XY(262,190)); XY[] thePoints = getPoints() ; for(int x =0; x< thePoints.length;x++) { mouseMove(thePoints[x]); sleep(random(400,650)); if(theTopText.isTopTextContaining("Monk")) { mouseClickLeft(getCurrentMouseXY()); return true; } } return false; } } }