- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import org.rsbot.event.events.ServerMessageEvent;
- import org.rsbot.event.listeners.PaintListener;
- import org.rsbot.event.listeners.ServerMessageListener;
- import org.rsbot.script.Script;
- import org.rsbot.script.ScriptManifest;
- import org.rsbot.script.methods.Skills;
- import org.rsbot.script.wrappers.RSObject;
- import org.rsbot.script.wrappers.RSTile;
- @SuppressWarnings("deprecation")
- @ScriptManifest(authors = {"GreenCowz"}, keywords = "Hunter", version = 1.0, name = "gChins", description = "Hunts chinchompas.")
- public class gChins extends Script implements PaintListener, ServerMessageListener {
- private final ScriptManifest scriptInfo = getClass().getAnnotation(
- ScriptManifest.class);
- int numCaught = 0;
- int boxID = 10008;
- int openBoxID = 19187;
- int failedBoxID = 19192;
- int successBoxID = 19190;
- int chinExp = 265;
- int maxTraps = 0;
- int trapsOut = 0;
- RSTile checkTile, centerTile, upLeft, upRight, downLeft, downRight;
- private long startTime;
- private int startExp;
- private int startLevel;
- public long runTime = 0, seconds = 0, minutes = 0, hours = 0;
- public int gainedExp = 0;
- public int expToLevel = 0;
- public long secToLevel = 0;
- public long minutesToLevel = 0;
- public long hoursToLevel = 0;
- public float secExp = 0;
- public float minuteExp = 0;
- public float hourExp = 0;
- RSTile tile1, tile2, tile3, tile4, tile5;
- BoxWatcher x = new BoxWatcher(null);
- public boolean onStart() {
- centerTile = players.getMyPlayer().getLocation();
- upLeft = new RSTile(centerTile.getX() - 1, centerTile.getY() + 1);
- upRight = new RSTile(centerTile.getX() + 1, centerTile.getY() + 1);
- downLeft = new RSTile(centerTile.getX() - 1, centerTile.getY() - 1);
- downRight = new RSTile(centerTile.getX() + 1, centerTile.getY() - 1);
- checkMaxTraps();
- mouse.setSpeed(random(4, 5));
- x.start();
- return true;
- }
- public void onFinish() {
- log("Thank you for using gChins!");
- }
- public boolean checkMaxTraps() {
- if (skills.getCurrentLevel(Skills.HUNTER) < 60) {
- maxTraps = 3;
- } else if (skills.getCurrentLevel(Skills.HUNTER) < 80) {
- maxTraps = 4;
- } else if (skills.getCurrentLevel(Skills.HUNTER) >= 80) {
- maxTraps = 5;
- }
- return true;
- }
- public boolean setupTrap() {
- if(trapsOut < maxTraps) {
- if(inventory.getItem(boxID).doAction("Lay")) {
- trapsOut++;
- }
- }
- return true;
- }
- public void trapCheck(RSTile x) {
- if (x != null) {
- if (objects.getTopAt(x).getID() != openBoxID && x != null) {
- int whatIsIt = objects.getTopAt(x).getID();
- if (whatIsIt == successBoxID) {
- if(tiles.doAction(x, "Check")) {
- x = null;
- trapsOut--;
- sleep(800, 1200);
- while (!players.getMyPlayer().isIdle()) {
- sleep(400, 600);
- }
- }
- } else if (whatIsIt == failedBoxID) {
- if (tiles.doAction(x, "Dismantle")) {
- x = null;
- trapsOut--;
- sleep(800, 1200);
- while (!players.getMyPlayer().isIdle()) {
- sleep(400, 600);
- }
- }
- } else {
- try {
- tiles.doAction(x, "Lay");
- } catch (NullPointerException e) {
- x = null;
- trapsOut--;
- sleep(800, 1200);
- while (!players.getMyPlayer().isIdle()) {
- sleep(400, 600);
- }
- }
- }
- }
- }
- }
- public boolean walkToOpen() {
- if (objects.getTopAt(upLeft) == null) {
- if (players.getMyPlayer().getLocation() != upLeft) {
- tiles.doAction(upLeft, "Walk");
- }
- return true;
- } else if (objects.getTopAt(upRight) == null) {
- if (players.getMyPlayer().getLocation() != upRight) {
- tiles.doAction(upRight, "Walk");
- }
- return true;
- } else if (objects.getTopAt(downRight) == null) {
- if (players.getMyPlayer().getLocation() != downRight) {
- tiles.doAction(downRight, "Walk");
- }
- return true;
- } else if (objects.getTopAt(downLeft) == null && maxTraps >= 4) {
- if (players.getMyPlayer().getLocation() != downLeft) {
- tiles.doAction(downLeft, "Walk");
- }
- return true;
- } else if (objects.getTopAt(centerTile) == null && maxTraps == 5) {
- if (players.getMyPlayer().getLocation() != centerTile) {
- tiles.doAction(centerTile, "Walk");
- }
- return true;
- }
- return false;
- }
- public void overTake() {
- tile1 = tile2;
- tile2 = tile3;
- tile3 = tile4;
- tile4 = tile5;
- tile5 = null;
- }
- @Override
- public int loop() {
- checkMaxTraps();
- if (objects.getTopAt(upLeft) == null
- || objects.getTopAt(upRight) == null
- || objects.getTopAt(downRight) == null
- || objects.getTopAt(downLeft) == null
- || objects.getTopAt(centerTile) == null) {
- if (objects.getTopAt(upLeft) == null
- || objects.getTopAt(upRight) == null
- || objects.getTopAt(downRight) == null) {
- while (!players.getMyPlayer().isIdle()) {
- sleep(600, 800);
- }
- walkToOpen();
- while (!players.getMyPlayer().isIdle()) {
- sleep(300, 600);
- }
- sleep(800, 1200);
- setupTrap();
- sleep(1000, 1400);
- while (!players.getMyPlayer().isIdle() && players.getMyPlayer().getAnimation() != -1) {
- sleep(600, 800);
- }
- } else if (objects.getTopAt(downLeft) == null && maxTraps >= 4) {
- while (!players.getMyPlayer().isIdle()) {
- sleep(600, 800);
- }
- walkToOpen();
- while (!players.getMyPlayer().isIdle()) {
- sleep(300, 600);
- }
- sleep(800, 1200);
- setupTrap();
- sleep(1000, 1400);
- while (!players.getMyPlayer().isIdle() && players.getMyPlayer().getAnimation() != -1) {
- sleep(600, 800);
- }
- } else if (objects.getTopAt(centerTile) == null && maxTraps == 5) {
- while (!players.getMyPlayer().isIdle()) {
- sleep(600, 800);
- }
- walkToOpen();
- while (!players.getMyPlayer().isIdle()) {
- sleep(300, 600);
- }
- sleep(800, 1200);
- setupTrap();
- sleep(1000, 1400);
- while (!players.getMyPlayer().isIdle() && players.getMyPlayer().getAnimation() != -1) {
- sleep(600, 800);
- }
- }
- }
- if (trapsOut == maxTraps) {
- for (int i = 0; i < 1000; i++) {
- if (tile1 != null) {
- checkTile = tile1;
- overTake();
- break;
- }
- sleep(60);
- }
- }
- if (checkTile != null) {
- log("About to check for down traps..");
- trapCheck(checkTile);
- }
- return random(200, 400);
- }
- @Override
- public void onRepaint(final Graphics g) {
- final Color BG = new Color(0, 0, 0, 75);
- final Color RED = new Color(255, 0, 0, 255);
- final Color GREEN = new Color(0, 255, 0, 255);
- final Color BLACK = new Color(0, 0, 0, 255);
- if (startTime == 0) {
- startTime = System.currentTimeMillis();
- }
- if (startExp == 0) {
- startExp = skills.getCurrentExp(Skills.HUNTER);
- }
- if (startLevel == 0) {
- startLevel = skills.getCurrentLevel(Skills.HUNTER);
- }
- runTime = System.currentTimeMillis() - startTime;
- seconds = runTime / 1000;
- if (seconds >= 60) {
- minutes = seconds / 60;
- seconds -= minutes * 60;
- }
- if (minutes >= 60) {
- hours = minutes / 60;
- minutes -= hours * 60;
- }
- gainedExp = skills.getCurrentExp(Skills.HUNTER) - startExp;
- expToLevel = skills.getExpToNextLevel(Skills.HUNTER);
- if ((minutes > 0 || hours > 0 || seconds > 0) && gainedExp > 0) {
- secExp = (float) gainedExp
- / (float) (seconds + minutes * 60 + hours * 60 * 60);
- }
- minuteExp = secExp * 60;
- hourExp = minuteExp * 60;
- if (secExp > 0) {
- secToLevel = (int) (expToLevel / secExp);
- }
- if (secToLevel >= 60) {
- minutesToLevel = secToLevel / 60;
- secToLevel -= minutesToLevel * 60;
- } else {
- minutesToLevel = 0;
- }
- if (minutesToLevel >= 60) {
- hoursToLevel = minutesToLevel / 60;
- minutesToLevel -= hoursToLevel * 60;
- } else {
- hoursToLevel = 0;
- }
- g.setFont(new Font("Tahoma", Font.PLAIN, 10));
- g.setColor(BG);
- g.fill3DRect(345, 10, 160, 140, true);
- g.setColor(BLACK);
- g.drawString(scriptInfo.name() + " v" + scriptInfo.version(), 350 + 1,
- 25 + 1);
- g.setColor(Color.white);
- g.drawString(scriptInfo.name() + " v" + scriptInfo.version(), 350, 25);
- g.drawString("Running for: " + hours + ":" + minutes + ":" + seconds,
- 350, 40);
- g
- .drawString(
- "Exp Gained: "
- + gainedExp
- + " ("
- + (skills
- .getCurrentLevel(Skills.HUNTER) - startLevel)
- + ")", 350, 55);
- g.drawString("Stuff Caught: " + numCaught, 350, 70);
- g.drawString("Exp per hour: " + (int) hourExp, 350, 85);
- g.drawString("Exp to level: " + expToLevel + " ("
- + (int) (expToLevel / chinExp + 0.5) + " catches)", 350, 100);
- g.drawString("Time to level: " + hoursToLevel + ":" + minutesToLevel
- + ":" + secToLevel, 350, 115);
- g.drawString("Progress to next level:", 350, 130);
- g.setColor(RED);
- g.fill3DRect(350, 135, 100, 11, true);
- g.setColor(GREEN);
- g.fill3DRect(350, 135, skills
- .getPercentToNextLevel(Skills.HUNTER), 11, true);
- g.setColor(BLACK);
- g.drawString(skills.getPercentToNextLevel(Skills.HUNTER)
- + "% to "
- + (skills.getCurrentLevel(Skills.HUNTER) + 1),
- 380, 144);
- }
- @Override
- public void serverMessageRecieved(ServerMessageEvent e) {
- final String message = e.getMessage().toLowerCase();
- if (message.contains("caught")) {
- numCaught++;
- }
- }
- class BoxWatcher extends Thread {
- private gChins parent;
- BoxWatcher(gChins parent) {
- this.parent = parent;
- }
- public void run() {
- try {
- while(parent.isActive()) {
- if(!parent.isPaused()) {
- // caught
- RSObject obj = objects.getNearest(19190);
- RSTile objLoc;
- log("Checking if OBJ = null");
- if (obj != null) {
- log("obj != null");
- objLoc = obj.getLocation();
- if (objLoc != tile1 && objLoc != tile2 && objLoc != tile3
- && objLoc != tile4 && objLoc != tile5) {
- if (tile1 == null) {
- log("found the obj. naming loc to tile1!@!@!");
- tile1 = objLoc;
- } else if (tile2 == null) {
- tile2 = objLoc;
- } else if (tile3 == null) {
- tile3 = objLoc;
- } else if (tile4 == null) {
- tile4 = objLoc;
- } else if (tile5 == null) {
- tile5 = objLoc;
- }
- }
- }
- }
- sleep(parent.random(800, 1200));
- }
- }
- catch(InterruptedException e) {
- log(e.getMessage());
- }
- }
- }
- }