- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Image;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.image.BufferedImage;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.URLConnection;
- import javax.imageio.ImageIO;
- import org.powerbot.concurrent.Task;
- import org.powerbot.concurrent.strategy.Strategy;
- import org.powerbot.game.api.ActiveScript;
- import org.powerbot.game.api.Manifest;
- import org.powerbot.game.api.methods.Calculations;
- import org.powerbot.game.api.methods.Tabs;
- import org.powerbot.game.api.methods.Walking;
- import org.powerbot.game.api.methods.Widgets;
- import org.powerbot.game.api.methods.input.Mouse;
- import org.powerbot.game.api.methods.interactive.NPCs;
- import org.powerbot.game.api.methods.interactive.Players;
- import org.powerbot.game.api.methods.node.GroundItems;
- import org.powerbot.game.api.methods.node.SceneEntities;
- import org.powerbot.game.api.methods.tab.Inventory;
- import org.powerbot.game.api.methods.tab.Skills;
- import org.powerbot.game.api.methods.widget.Camera;
- import org.powerbot.game.api.util.Random;
- import org.powerbot.game.api.util.Time;
- import org.powerbot.game.api.wrappers.Area;
- import org.powerbot.game.api.wrappers.Tile;
- import org.powerbot.game.api.wrappers.interactive.NPC;
- import org.powerbot.game.api.wrappers.node.GroundItem;
- import org.powerbot.game.api.wrappers.node.Item;
- import org.powerbot.game.api.wrappers.node.SceneObject;
- import org.powerbot.game.bot.event.MessageEvent;
- import org.powerbot.game.bot.event.listener.MessageListener;
- import org.powerbot.game.bot.event.listener.PaintListener;
- @Manifest(authors = {"3G Connection"}, name = "SpeedHillies", description = "Kills Hillies at Edgeville Dungeon & banks")
- public class ConnectHillies extends ActiveScript implements PaintListener, MouseListener, MessageListener {
- Image showPaint;
- Image hidePaint;
- String Status = "Starting up";
- private final String showUrl = "";
- private final String hideUrl = "";
- private BufferedImage showImage;
- private BufferedImage mainImage;
- private boolean showShow;
- private boolean showHide;
- private int[] GIANT_ID = {0};
- private int[] LOOT_ID = {0, 0};
- private int BONES_ID = 0;
- private int LADDER_ID = 0;
- private int DOOR_ID = 0;
- private int BANK_ID = 0;
- private int TRAPDOOR_ID = 0;
- private int KEY_ID = 0;
- private int FOOD_ID = 0;
- private int TICKET_ID = 24154;
- private int MUSICIAN_ID = 0;
- private int expHour;
- private int expGained;
- private String training;
- private String SkillNames[] = {"Attack", "Strength", "Defense", "Ranged"};
- private int SkillConstants [] = {Skills.ATTACK, Skills.STRENGTH, Skills.DEFENSE, Skills.RANGE};
- private int startxp[] = {0, 0, 0, 0};
- private int startlvl[] = {0, 0, 0, 0};
- private int startCbLvl;
- private int CbLevel;
- private int trips;
- private int tripsHour;
- private int bones;
- private int bonesHour;
- private int kills;
- private int killsHour;
- private int profit;
- private int bonesPrice;
- public long startTime = System.currentTimeMillis();
- int before;
- int count = Inventory.getCount(BONES_ID);
- private final Area BANK_AREA = new Area (new Tile[] {
- new Tile(3185, 3439, 0), new Tile(3180, 3438, 0),
- new Tile(3175, 3437, 0), new Tile(3174, 3432, 0),
- new Tile(3178, 3428, 0), new Tile(3183, 3426, 0),
- new Tile(3188, 3426, 0), new Tile(3192, 3429, 0),
- new Tile(3194, 3434, 0), new Tile(3195, 3439, 0),
- new Tile(3192, 3443, 0), new Tile(3187, 3445, 0),
- new Tile(3182, 3446, 0), new Tile(3177, 3443, 0),
- new Tile(3173, 3440, 0), new Tile(3175, 3435, 0)});
- private final Area ROOM_AREA = new Area (new Tile[] {
- new Tile(1,2,0)});
- private final Area HILLY_AREA = new Area (new Tile[] {
- new Tile(1,2,0)});
- @Override
- protected void setup() {
- showPaint = getImage("http://postimage.org/image/4jonawbrl");
- hidePaint = getImage("");
- startTime = System.currentTimeMillis();
- startCbLvl = Players.getLocal().getLevel();
- {
- try {
- showImage = ImageIO.read(new URL(showUrl));
- showImage = ImageIO.read(new URL(hideUrl));
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- provide (new WalkingPath());
- provide (new Attack());
- provide (new Loot());
- provide (new Bank());
- provide (new Antiban());
- try {
- bonesPrice = getPrice(BONES_ID);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private Image getImage(String string) {
- return null;
- }
- public class WalkingPath extends Strategy implements Task {
- @Override
- public void run() {
- Status = "Walking";
- if (Inventory.getCount() == 28 && HILLY_AREA.contains(Players.getLocal())) {
- SceneObject ladder = SceneEntities.getNearest(LADDER_ID);
- if (ladder != null) {
- Walking.walk(ladder);
- if (Inventory.getCount() == 28 && ROOM_AREA.contains(Players.getLocal())) {
- SceneObject door = SceneEntities.getNearest(DOOR_ID);
- Walking.walk(door);
- if (door != null) {
- if (door.isOnScreen()) {
- door.interact("Open");
- if (!door.isOnScreen() && ROOM_AREA.contains(Players.getLocal())) {
- Camera.turnTo(door);
- }
- }
- }
- }
- if (Inventory.getCount() != 28 && ROOM_AREA.contains(Players.getLocal())) {
- SceneObject trapdoor = SceneEntities.getNearest(TRAPDOOR_ID);
- if (trapdoor != null) {
- trapdoor.interact("Go down");
- }
- }
- if (Inventory.getCount() != 28 && BANK_AREA.contains(Players.getLocal())) {
- NPC musician = NPCs.getNearest(MUSICIAN_ID);
- if (Calculations.distanceTo(musician) >= 5) {
- Walking.findPath(musician).traverse();
- musician.interact("Rest");
- }
- }
- if (Inventory.getCount() != 28) {
- NPC musician = NPCs.getNearest(MUSICIAN_ID);
- SceneObject door = SceneEntities.getNearest(DOOR_ID);
- if (musician.isOnScreen() && Walking.getEnergy() == 100) {
- Walking.findPath(door).traverse();
- door.interact("Open");
- }
- }
- }
- }
- }
- }
- public class Attack extends Strategy implements Task {
- @Override
- public void run() {
- if (Inventory.getCount() != 28) {
- NPC hilly = NPCs.getNearest(GIANT_ID);
- if (hilly != null) {
- if (hilly.isOnScreen() && !hilly.isInCombat() && Calculations.distanceTo(hilly) <= 8) {
- hilly.interact("Attack");
- Status = "Fighting";
- } else {
- if (!hilly.isOnScreen() && HILLY_AREA.contains(Players.getLocal())) {
- Camera.turnTo(hilly);
- } else {
- if (Players.getLocal().isInCombat()) {
- Time.sleep(Random.nextInt(2000, 4000));
- }
- }
- if (Players.getLocal().getInteracting().getHpPercent() == 0) {
- kills++;
- }
- }
- }
- }
- }
- }
- public class Loot extends Strategy implements Task {
- @Override
- public void run() {
- Status = "Looting";
- GroundItem ticket = GroundItems.getNearest(TICKET_ID);
- if (ticket != null) {
- if (ticket.isOnScreen()) {
- ticket.interact("Take");
- Time.sleep(Random.nextInt(500, 750));
- }
- }
- if (Players.getLocal().isInCombat()) {
- Time.sleep(Random.nextInt(1500, 2500));
- if (!Players.getLocal().isInCombat()) {
- GroundItem loot = GroundItems.getNearest(LOOT_ID);
- GroundItem bone = GroundItems.getNearest(BONES_ID);
- if (Calculations.distanceTo(bone.getLocation()) < 5) {
- if (Calculations.distanceTo(loot.getLocation()) < 5) {
- bone.interact("Take");
- loot.interact("Take");
- Time.sleep(Random.nextInt(2000, 2500));
- if (count > before) {
- bones++;
- before = Inventory.getCount(BONES_ID);
- }
- }
- }
- }
- }
- }
- }
- public class Bank extends Strategy implements Task {
- @Override
- public void run() {
- SceneObject bank = SceneEntities.getNearest(BANK_ID);
- bank.interact("Bank");
- Status = "Banking";
- if (org.powerbot.game.api.methods.widget.Bank.isOpen()) {
- if (Inventory.getCount() == 28) {
- org.powerbot.game.api.methods.widget.Bank.depositInventory();
- org.powerbot.game.api.methods.widget.Bank.withdraw(KEY_ID, 1);
- trips++;
- }
- if (Players.getLocal().getHpPercent() <= 45) {
- org.powerbot.game.api.methods.widget.Bank.withdraw(FOOD_ID, 3);
- org.powerbot.game.api.methods.widget.Bank.close();
- if (Tabs.getCurrent() != Tabs.INVENTORY) {
- if (Tabs.INVENTORY.open(true)) {
- Time.sleep(250, 500);
- for (Item i : Inventory.getItems()) {
- if (i.getId() == 0) {
- i.getWidgetChild().interact("Eat");
- if (Inventory.getCount(KEY_ID) == 0) {
- org.powerbot.game.api.methods.widget.Bank.withdraw(KEY_ID, 1);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- public class Antiban extends Strategy implements Task {
- @Override
- public void run() {
- int random = Random.nextInt(1, 20);
- switch (random) {
- case 2:
- if (!Tabs.STATS.isOpen()) {
- Tabs.STATS.open();
- Time.sleep(Random.nextInt(250, 500));
- }
- case 5:
- if (Tabs.STATS.isOpen()) {
- Tabs.STATS.open();
- Widgets.get(320).getChild(2);
- }
- case 8:
- Camera.setAngle(Random.nextInt(50, 300));
- Time.sleep(Random.nextInt(250, 350));
- case 11:
- Camera.setPitch(Random.nextInt(75, 225));
- case 14:
- Mouse.move(Random.nextInt(150, 225), 0);
- Time.sleep(Random.nextInt(750, 1250));
- case 16:
- Mouse.move(Random.nextInt(250, 350), 0);
- Time.sleep(Random.nextInt(500, 1000));
- case 19:
- if (Tabs.INVENTORY.isOpen()) {
- Tabs.INVENTORY.open();
- Time.sleep(Random.nextInt(750, 1250));
- }
- }
- }
- }
- private int getPrice (int id) throws IOException {
- URL url = new URL("http://open.tip.it/json/ge_single_item?item=" + id);
- URLConnection con = url.openConnection();
- BufferedReader in = new BufferedReader(new InputStreamReader(
- con.getInputStream()));
- String line = "";
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- line += inputLine;
- }
- in.close();
- if (!line.contains("mark_price")) {
- return -1;
- }
- line = line.substring(line.indexOf("mark_price\":\"")
- + "mark_price\":\"".length());
- line = line.substring(0, line.indexOf("\""));
- return Integer.parseInt(line);
- }
- private int getTrainingSkill() {
- for (int i = 0; i < SkillConstants.length; i++) {
- if (Skills.getExperience(SkillConstants[i]) > startxp[i]) {
- training = SkillNames[i];
- return SkillConstants[i];
- }
- }
- return -1;
- }
- private int getStartxp (int i) {
- for (int g = 0; g < SkillConstants.length; g++) {
- if (i == SkillConstants[g]) {
- return startxp[g];
- }
- }
- return -1;
- }
- private int getStartLvl (int i) {
- for (int g = 0; g < SkillConstants.length; g++) {
- if (i == SkillConstants[g]) {
- return startlvl[g];
- }
- }
- return -1;
- }
- private double getXpHour(double expGained) {
- return ((3600000.0 / (System.currentTimeMillis() - startTime)) * expGained);
- }
- private double getTripsHour (double trips) {
- return ((3600000.0 / (System.currentTimeMillis() - startTime)) * trips);
- }
- private double getBonesHour (double bones) {
- return ((3600000.0 / (System.currentTimeMillis() - startTime)) * bones);
- }
- private double getKillsHour (double kills) {
- return ((3600000.0 / (System.currentTimeMillis() - startTime)) * kills);
- }
- //----------------------------------- PAINT --------------------------------------------------------------------------
- private final Color color = new Color(255, 255, 255);
- private final Font font = new Font("Consolas", 0, 14);
- public void onRepaint(Graphics g1) {
- expGained = (Skills.getExperience(getTrainingSkill()) - getStartxp(getTrainingSkill()));
- expHour = (int) getXpHour (expGained);
- CbLevel = Players.getLocal().getLevel() - startCbLvl;
- tripsHour = (int) getTripsHour (trips);
- bonesHour = (int) getBonesHour (bones);
- killsHour = (int) getKillsHour (kills);
- 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;
- Graphics2D g = (Graphics2D)g1;
- g.setColor(color);
- g.setFont(font);
- g.drawString("" + hours + ":" + minutes + ":" + seconds, 67, 408); // Time
- g.drawString("" + expGained, 57, 430); // Exp
- g.drawString("" + expHour, 77, 453); // Exp/Hr
- g.drawString("" + bones, 197, 408); // Bones
- g.drawString("" + bonesHour, 215, 430); // Bones/Hr
- g.drawString("" + (Skills.getRealLevel(getTrainingSkill()) - getStartLvl(getTrainingSkill())), 196, 453); // Kills
- g.drawString("", 333, 408); // GP
- g.drawString("", 315, 430); // GP/Hr
- g.drawString("" + startCbLvl + " (+" + CbLevel + ")", 315, 453); // Kills/Hr
- g.drawString("" + trips, 432, 408); // Trips
- g.drawString("" + tripsHour, 450, 430); // Trips/Hr
- g.drawString("" + Status, 439, 453); // Status
- g.drawString("", 280, 378); // Training
- }
- @Override
- public void messageReceived(MessageEvent arg0) {
- }
- @Override
- public void mouseClicked(MouseEvent arg0) {
- }
- @Override
- public void mouseEntered(MouseEvent arg0) {
- }
- @Override
- public void mouseExited(MouseEvent arg0) {
- }
- @Override
- public void mousePressed(MouseEvent arg0) {
- }
- @Override
- public void mouseReleased(MouseEvent arg0) {
- }
- }