import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.awt.Point; import java.awt.BasicStroke; import java.awt.Stroke; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import com.rarebot.event.events.MessageEvent; import com.rarebot.event.listeners.MessageListener; import com.rarebot.event.listeners.PaintListener; import com.rarebot.script.Script; import com.rarebot.script.ScriptManifest; import com.rarebot.script.wrappers.RSObject; import com.rarebot.script.wrappers.RSTile; import com.rarebot.script.wrappers.RSTilePath; import com.rarebot.script.wrappers.RSComponent; import com.rarebot.script.wrappers.RSInterface; import com.rarebot.script.methods.Skills; import com.rarebot.script.methods.Walking; import com.rarebot.script.wrappers.RSArea; import com.rarebot.script.wrappers.RSTile; @ScriptManifest( authors = {"Atomika"}, version = 1.2, keywords = {"Mining", "resource", "Dungeon"}, description = "Mines coal ores in lvl 15 resource dungeon and uses Desposit box!", name = "coalcrusherDungeonMiner(ergu)" ) public class DungCoal extends Script implements PaintListener,MouseListener{ /* coal IDs: 32428, 32427, 32426*/ private final static int[] PICKAXE_ID = {1275, 1271, 1273, 1267, 1269}; private final static int[] ORE_OBJECTS = {32428, 32427, 32426}; private final static int[] COAL_OBJECTS = {32428, 32427, 32426}; private final static int BOX_ID = 25937; private final static int IRON_ID = 447; private final static int COAL_ID = 453; private static final RSTile[] tilesToMine = {new RSTile(1049, 4574), new RSTile(1056, 4574), new RSTile(1063, 4573)}; RSTilePath pathToBank; private final static RSTile[] BOX_LOL = {new RSTile(3034, 9772)}; private final static RSTile[] HelpImLost = {new RSTile(1064, 4573), new RSTile(1058, 4573), new RSTile(1052, 4574), new RSTile(1047, 4577)}; private final static int MINING_ANIMATION = -1; private long startTime; private int coalPrice = 0; private int oresMined; public String statusText; public String myName; public int oresHour = 0; public boolean showPaint = true ; RSTilePath BOX,REORIENT; int startExp = 0; int expGained = 0; int profit = 0; int profithour = 0; public boolean onStart() { statusText = "FUCKING INITIALIZING"; if (!game.isLoggedIn()) { log.severe("Try logging in first then restart the script!"); stopScript(); return false; } else { mouse.setSpeed(4); startTime = System.currentTimeMillis(); startExp = skills.getCurrentExp(skills.MINING); coalPrice = 297; pathToBank = walking.newTilePath(tilesToMine); BOX = walking.newTilePath(BOX_LOL); REORIENT = walking.newTilePath(HelpImLost); log("Welcome to coalcrusherDungeonMiner by erguland!"); log("Let's hope the script dont fuck up."); myName = account.getName(); myName = myName.substring(0, 3); sleep(8000); if(checkJoin()) { return true; } else { return false; } } } public void mouseClicked(MouseEvent e) { RSComponent inter = interfaces.get(137).getComponent(0); if (inter.getArea().contains(e.getPoint())) { showPaint = !showPaint; } } private final Color color1 = new Color(51, 51, 51); private final Color color2 = new Color(0, 0, 0); private final Color color3 = new Color(0, 153, 0); private final BasicStroke stroke1 = new BasicStroke(1); private final Font font1 = new Font("Arial", 0, 19); public void walk() { pathToBank.traverse(); } public void onRepaint(Graphics g) { expGained = skills.getCurrentExp(skills.MINING) - startExp; long millis = System.currentTimeMillis() - startTime; long hours = millis / (1000 * 60 * 60); millis -= hours * (1000 * 60 * 60); long minutes = millis / (1000 * 60); millis -= minutes * (1000 * 60); long seconds = millis / 1000; float oresMined = expGained / 50; float oresHour = (int) ((oresMined) * 3600000D / (System.currentTimeMillis() - startTime)); float profit = oresMined * coalPrice; profithour = (int) ((profit) * 3600000D/ (System.currentTimeMillis() - startTime)); float xpsec = 0; if ((minutes > 0 || hours > 0 || seconds > 0) && expGained > 0) { xpsec = ((float) expGained) / (float)(seconds + (minutes*60) + (hours*60*60)); } float xpmin = xpsec * 60; float xphour = xpmin * 60; float expGained = skills.getCurrentExp(skills.MINING) - startExp; g.setFont(new Font("Arial", 0, 15)); g.setColor(color1); g.fillRoundRect(549, 208, 190, 254, 16, 16); g.setColor(color2); g.drawRoundRect(549, 208, 190, 254, 16, 16); g.setFont(new Font("Arial", 0, 15)); g.setColor(Color.CYAN); g.drawString("Mining skillcape almost here:P", 260, 470); g.drawString(statusText, 562, 226); g.drawString("Runtime: " + hours + ":" + minutes + ":" + seconds, 562, 246); g.drawString("Experience gained: " + expGained, 562, 266); g.drawString("Exp/h: " + (int)xphour, 562, 286); g.drawString("Ores mined: " + oresMined , 562, 306); g.drawString("ores mined/h: " + oresHour , 562, 326); g.drawString("Profit: " + profit, 562, 346); g.drawString("profit/h: " + (int)profithour, 562, 366); } private void setRun() { if (!walking.isRunEnabled() && walking.getEnergy() > 40) { statusText = "FUCKING RUNNING"; walking.setRun(true); sleep(random(600, 800)); return; } } public void checkIntercept() { RSInterface chatBox = interfaces.get(137); if(chatBox != null) { for(int x = 180; x < 240; x++) { if(chatBox.getComponent(x) != null && chatBox.getComponent(x).getAbsoluteY() > 330) { String curCompText = chatBox.getComponent(x).getText(); if(curCompText.contains("Does your house have stairs") && (!(curCompText.contains(myName)))) { keyboard.sendText("|||", true); sleep(2000); } } } } } public boolean checkJoin() { RSInterface chatBox = interfaces.get(137); if(chatBox != null) { for(int x = 180; x < 280; x++) { if(chatBox.getComponent(x) != null && chatBox.getComponent(x).getAbsoluteY() > 330) { String curCompText = chatBox.getComponent(x).getText(); if(curCompText.contains("|||")) { log.severe("This mine already has a bot running in it. Switch to another world."); return false; } } } return true; } return true; } private final void openBox() { RSObject box = objects.getNearest(BOX_ID); if(!box.isOnScreen() && box != null) { camera.turnTo(box); camera.setPitch(10); } else { if(box.isOnScreen() && box != null) { box.interact("Deposit"); sleep(2000, 2500); } } } private void goToBox() { BOX.traverse(); } private final void gobackplease() { REORIENT.traverse(); sleep(2000, 2500); } private final void depositOres() { mouse.move(330, 261, 3, 3); mouse.click(true); sleep(800, 1200); } private final boolean atBox() { RSObject boxy = objects.getNearest(BOX_ID); if(boxy != null) { if(boxy.isOnScreen()) { return true; } else { camera.turnTo(boxy); return false; } } return false; } private final void mine() { RSObject oremine = objects.getNearest(ORE_OBJECTS); if(getMyPlayer().getAnimation() == MINING_ANIMATION && oremine != null) { statusText = "RUNNIN TO THE ORE"; oremine.interact("Mine"); } else { statusText = "FUCKING MINING"; objects.getNearest(ORE_OBJECTS); } sleep(1800,2000); } private final void minecoal() { RSObject oremine = objects.getNearest(COAL_OBJECTS); if(getMyPlayer().getAnimation() == MINING_ANIMATION && oremine != null) { statusText = "RUNNIN TO THE COAL"; oremine.interact("Mine"); } else { statusText = "MINING THE DAMN COAL"; objects.getNearest(COAL_OBJECTS); } sleep(1800,2000); } public void do_Nothing() { sleep(random(10, 50)); } private final boolean atOres() { RSObject ores = objects.getNearest(ORE_OBJECTS); if(ores != null) { if(ores.isOnScreen()) { return true; } } return false; } @Override public int loop() { checkIntercept(); antiban(); setRun(); if(!atOres() && !inventory.isFull()) { RSObject oreo = objects.getNearest(ORE_OBJECTS); if(oreo != null) { statusText = "SHEARCHING FOR ROCKS"; camera.turnTo(oreo); camera.setPitch(100); sleep(random(800, 1000)); walk(); } else { RSObject coaly = objects.getNearest(COAL_OBJECTS); if(coaly != null) { camera.turnTo(coaly); camera.setPitch(100); minecoal(); } else { statusText = "SHEARCHING FOR COAL"; walk(); camera.setPitch(100); sleep(random(800, 1000)); } } } if(atOres() && !inventory.isFull()) { mine(); } if(inventory.isFull()) { while(!atBox()) { statusText = "SEARCHING FOR DEPOSIT BOX"; gobackplease(); sleep(random(500, 1000)); } while(!bank.isDepositOpen()) { goToBox(); statusText = "OPENING DEPOSIT BOX"; openBox(); sleep(random(500, 1000)); } statusText = "BANK THAT SHIT"; bank.depositAll(); sleep(random(500, 3000)); bank.close(); sleep(random(500, 2000)); gobackplease(); } if(combat.getLifePoints() < 60) { statusText = "FUCKING DEAD"; log.severe("------------------------------------------------------------------------"); log.severe("Hey, you're probably going to die--not that this script will do anything"); log.severe("------------------------------------------------------------------------"); stopScript(); sleep(5000); } return 1; } public void antiban() { statusText = "FUCKING WITH THE ANTIBAN"; int b = random(0, 10); switch (b) { case 1: if (random(0, 10) == 5) { log("[Antiban] move mouse"); mouse.moveSlightly(); sleep(200, 600); mouse.moveRandomly(150, 350); } break; case 2: if (random(0, 13) == 2) { log("[Antiban] Turn screen"); camera.setAngle(random(30, 70)); sleep(400, 1200); } break; case 3: if (random(0, 24) == 6) { log("[Antiban] mouse off screen"); mouse.moveOffScreen(); sleep(random(600, random(1200, 2000))); } break; case 4: if (random(0, 30) == 4) { log("[antiban] Setting camera pitch."); camera.setPitch(random(10, 99)); sleep(2500, 3400); } break; case 5: if (random(0, 28) == 5) { log("[antiban] Checking Xp."); game.openTab(2); skills.doHover(Skills.INTERFACE_MINING); sleep(2000, 2200); } default: break; } } public void onFinish() { log("Nap time."); log("Ores mined " + oresMined); log("Experience gained: " + expGained); log("Profit: " + profit); } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } }