Code:
import org.rsbot.script.*;
import org.rsbot.script.methods.*;
import org.rsbot.script.wrappers.*;
import org.rsbot.script.methods.Skills;
import org.rsbot.event.events.MessageEvent;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.event.listeners.MessageListener;
import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
@ScriptManifest(authors = "TehPolarBear", keywords = "Mining", name = "PolarsPowerMiner", description = "Polar's first public script edited by Kenneh from Rune-Server", version = 0.2)
public class PolarsPowerMiner extends Script implements PaintListener, MessageListener {
int [] ironRockID = {11954, 11955, 11956, 9717, 9718, 9179};
int [] stuffToKeep = {1265, 1267, 1269, 1273, 1271, 1275, 15259, 15532, 15533};
int [] pickaxe = {1265, 1267, 1269, 1273, 1271, 1275, 15259};
int [] strangeRocks = {15532, 15533};
@Override
public boolean onStart() {
log("Welcome to PolarsPowerMiner");
loadImages();
checkPickaxe();
startTime = System.currentTimeMillis();
mining = skills.MINING;
startExp = skills.getCurrentExp(mining);
startLevel = skills.getCurrentLevel(mining);
if (pickaxePresent == 1) {
return true;
} else {
log.severe("ERROR: You do not have a pickaxe!");
stopScript();
return false;
}
}
private void checkPickaxe() {
if (inventory.containsOneOf(pickaxe)) {
pickaxePresent = 1;
log("Pickaxe is in inventory");
} else if (equipment.containsOneOf(pickaxe)) {
pickaxePresent = 1;
log("Pickaxe is wielded");
} else
pickaxePresent = 0;
}
public int loop() {
if (!inventory.isFull()) {
if (players.getMyPlayer().getAnimation() == -1) {
RSObject rock = objects.getNearest(ironRockID);
status = "searching for rock";
if (rock != null) {
rock.doAction("Mine");
status = "mining rock";
}
}
}
if (inventory.isFull()){
inventory.dropAllExcept(stuffToKeep);
status = "Dropping ores";
}
return random(500, 1500);
}
@Override
public void onFinish() {
log("Thank-you for using PolarsPowerMiner!");
}
/* PAINT */
public void onRepaint(Graphics g1) {
// default stuff
Graphics2D g = (Graphics2D)g1;
millis = System.currentTimeMillis() - startTime;
hours = millis / (1000 * 60 * 60);
millis -= hours * (1000 * 60 * 60);
minutes = millis / (1000 * 60);
millis -= minutes * (1000 * 60);
seconds = millis / 1000;
currLevel = skills.getCurrentLevel(mining);
expGained = skills.getCurrentExp(mining) - startExp;
lvlsGained = currLevel - startLevel;
expHour = (int) ((expGained) * 3600000D / (System.currentTimeMillis() - startTime));
oresHour = (int) ((oresMined) * 3600000D / (System.currentTimeMillis() - startTime));
final int percent = skills.getPercentToNextLevel(mining);
int ironOreExp = 35;
oresTilLevel = skills.getExpToNextLevel(mining) / ironOreExp;
// Actual drawing of the paint
g.drawImage(banner, 4, 200, null);
g.drawString("Runtime: " + hours +":"+ minutes + ":" + seconds, 7, 265);
g.drawString("Gems Found: " + gemCount, 7, 285);
g.drawString("Strange Rocks: " + strangeRockCount, 7, 305);
g.drawString("Ores mined: " + oresMined, 7, 325);
g.drawString("Ores/hour: " + oresHour, 144, 265);
g.drawString("Ores TNL: " + oresTilLevel, 144, 285);
g.drawString("Exp gained: " + expGained, 144, 305);
g.drawString("Exp/hour: " + expHour, 144, 325);
g.drawString("Exp TNL: " + skills.getExpToNextLevel(mining), 272, 265);
g.drawString("Status: " + status, 272, 325);
g.drawString("Current lvl: " + currLevel + " (" + lvlsGained + ")", 272, 285);
g.drawString("Percent TNL: " + percent + "%", 272, 305);
drawMouse(g1);
}
public void drawMouse(final Graphics g) { // Mouse
final double mouseX = mouse.getLocation().getX() - 8,
mouseY = mouse.getLocation().getY() - 8;
final double mousePressX = mouse.getPressLocation().getX() - 8,
mousePressY = mouse.getPressLocation().getY() - 8;
if (System.currentTimeMillis() - mouse.getPressTime() < 400) {
g.drawImage(clicked, (int) mousePressX, (int) mousePressY, null);
}
g.drawImage(normal, (int) mouseX, (int) mouseY, null);
}
public void messageReceived(MessageEvent e) {
String x = e.getMessage().toLowerCase();
if (x.contains("you manage to mine")) {
oresMined++;
}
if (x.contains("just found")) {
gemCount++;
}
if (x.contains("strange rock.")) {
strangeRockCount++;
}
}
public void loadImages() {
try {
normal = ImageIO.read(new URL("http://i54.tinypic.com/2unwz85.png"));
clicked = ImageIO.read(new URL("http://i51.tinypic.com/24y1lxe.png"));
banner = ImageIO.read(new URL("http://dl.dropbox.com/u/9359719/minerlogo.png"));
} catch (final java.io.IOException e) {
e.printStackTrace();
}
}
public int pickaxePresent;
public String status = "";
public int oresMined = 0, lvlsGained = 0, startExp = 0, expGained = 0, expHour = 0,
oresHour = 0, last = 0, gemCount = 0, strangeRockCount = 0, oresTilLevel = 0;
public long startTime = 0, millis = 0, hours = 0, minutes = 0, seconds = 0;
public int mining, startLevel, currLevel;
BufferedImage normal = null;
BufferedImage clicked = null;
BufferedImage banner = null;
}