rendered paste bodyimport java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import org.rsbot.event.events.MessageEvent;
import org.rsbot.event.listeners.MessageListener;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.script.Script;
import org.rsbot.script.ScriptManifest;
import org.rsbot.script.util.Filter;
import org.rsbot.script.wrappers.RSObject;
import org.rsbot.script.wrappers.RSTile;
import org.rsbot.script.wrappers.RSTilePath;
import java.awt.*;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.net.URL;
@ScriptManifest(
authors = {"RuNnNy"},
version = 1.0,
keywords = {"mining", "banking", "money", "mithril", "coal"},
description = "RuNnNy_Mithril_CoalMiner, by RuNnNy",
name = "RuNnNy_Mithril_CoalMiner"
)
public class RuNnNy_Mithril_CoalMiner extends Script implements PaintListener, MessageListener {
ScriptManifest props = getClass().getAnnotation(ScriptManifest.class);
public int depositBoxID = 25937;
public int[] oreIDs = new int[]{32439, 32440, 32438, 32426, 32427, 32428};
public int miningAnimation = 624;
RSTile[] tilesToDepositbox = {new RSTile (1066, 4573), new RSTile (1054, 4574), new RSTile (1045, 4573), new RSTile (1043, 4578)};
RSTilePath pathToDepositbox;
long startTime;
int expGained = 0;
int startExp = 0;
int oresMined = 0;
public boolean onStart() {
pathToDepositbox = walking.newTilePath(tilesToDepositbox);
startTime = System.currentTimeMillis();
startExp = skills.getCurrentExp(skills.MINING);
return true;
}
@Override
public int loop() {
if (inventory.isFull()) {
if (atBank()) {
// doBank();
useDepositBox();
} else {
walk();
}
}
else {
if(atMine()) {
mineOres();
}else{
walkR();
}
}
antiBan();
return random(600, 800);
}
private void mineOres() {
RSObject rock = objects.getNearest(oreIDs);
if (getMyPlayer().getAnimation() != miningAnimation) {
rock.doAction ("Mine");
// if (random(1,15) == 7) antiBan();
}
antiBan();
sleep (1200, 2000);
}
private void walkR() {
pathToDepositbox.reverse();
pathToDepositbox.traverse();
pathToDepositbox.reverse();
}
private void walk() {
pathToDepositbox.traverse();
// if(random(0, 20) == 10) antiBan();
}
public void onFinsih() {
log ("Thank you for using " + props.name() + " v" + props.version() + "!");
}
private boolean atBank() {
RSObject bank = objects.getNearest(depositBoxID);
if(bank !=null)
{
if(bank.isOnScreen()) {
return true;
}
}
return false;
}
private boolean atMine()
{
RSObject ore = objects.getNearest(oreIDs);
if (ore != null)
{
if (ore.isOnScreen())
{
return true;
}
}
return false;
}
//START: Code generated using Enfilade's Easel
private Image getImage(String url) {
try {
return ImageIO.read(new URL(url));
} catch(IOException e) {
return null;
}
}
private final Color color1 = new Color(0, 0, 255, 133);
private final Color color2 = new Color(0, 0, 0);
private final Color color3 = new Color(0, 0, 0, 202);
private final BasicStroke stroke1 = new BasicStroke(1);
private final Font font1 = new Font("Impact", 1, 20);
private final Font font2 = new Font("Georgia", 0, 15);
private final Font font3 = new Font("SimSun", 0, 13);
private final Image img1 = getImage("http://images1.wikia.nocookie.net/__cb20100917030156/runescape/images/8/80/Mining_Detail.PNG");
private void openDepositBox(){
RSObject bankDepositBox = objects.getNearest(depositBoxID);
if (bankDepositBox != null && !bank.isOpen()) {
bankDepositBox.doAction("deposit");
}
}
private void doBank() {
/*if(bank.isDepositOpen()) {
bank.depositAll();
sleep(800, 1200);
} else {
bank.openDepositBox();
sleep(1800, 2200);
}*/
/*Filter<RSObject> depBox = new Filter<RSObject>()
{
public boolean accept(RSObject rso)
{
return rso != null && rso.getID() == depositBoxID;
}
};*/
}
public void useDepositBox()
{
RSObject bankDepositBox = objects.getNearest(depositBoxID);
if (bankDepositBox != null)
{
bankDepositBox.doAction("Deposit");
bank.depositAll();
/*bank.*/
sleep (3000, 4000);
mouse.move(random(335, 360), random(265, 285));
mouse.click(true);
bank.close();
}
}
@Override
public void onRepaint(Graphics g1) {
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 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 oresec = 0;
if ((minutes > 0 || hours > 0 || seconds > 0) && oresMined > 0) {
oresec = ((float) oresMined)/(float)(seconds + (minutes*60)+ (hours*60*60));
}
float oremin = oresec * 60;
float orehour = oremin * 60;
Graphics2D g = (Graphics2D)g1;
g.setColor(color1);
g.fillRect(6, 345, 489, 230);
g.setColor(color2);
g.setStroke(stroke1);
g.drawRect(6, 345, 489, 230);
g.setFont(font1);
g.setColor(color3);
g.drawString("RuNnNy_Mithril_CoalMiner V" + props.version(), 27, 374);
g.setFont(font2);
g.drawString("Runtime:" + hours + ":" + minutes + ":" + seconds , 252, 398);
g.drawString("Experience gained: " + expGained + " Exp/h: " + (int)xphour, 253, 422);
g.drawString("Ores mined: " + oresMined + " Ores/h: " + (int)orehour, 253, 448);
g.setFont(font3);
g.drawString("Made by RuNnNy", 393, 470);
g.drawImage(img1, 439, 351, null);
}
//END: Code generated using Enfilade's Easel
@Override
public void messageReceived(MessageEvent e) {
String txt = e.getMessage();
if(txt.contains("You manage to mine")) {
oresMined++;
}
}
private void antiBan () {
int r = random(0, 50);
switch(r) {
case 1:
game.openTab(game.TAB_STATS);
break;
case 2: game.openTab(game.TAB_FRIENDS); break;
case 4: game.openTab(game.TAB_EQUIPMENT); break;
case 3:
mouse.moveSlightly();
sleep(500, 800);
break;
case 7:
mouse.moveRandomly(10, 50);
break;
case 16:
mouse.moveOffScreen();
sleep(2000, 3000);
break;
case 18:
camera.moveRandomly(random(750, 1250));
break;
}
}
}