All pastes #2068933 Raw Edit

RuNnNy Mithril Coal Miner

public text v1 · immutable
#2068933 ·published 2011-05-25 13:19 UTC
rendered paste body
import 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;
		}
		
	}
	
	
	
	
	
	
	
}