Don't like ads? PRO users don't see any ads ;-)
Guest

ConnectHillies

By: a guest on Jun 27th, 2012  |  syntax: None  |  size: 14.13 KB  |  hits: 20  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.Image;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8. import java.awt.image.BufferedImage;
  9. import java.io.BufferedReader;
  10. import java.io.IOException;
  11. import java.io.InputStreamReader;
  12. import java.net.MalformedURLException;
  13. import java.net.URL;
  14. import java.net.URLConnection;
  15.  
  16. import javax.imageio.ImageIO;
  17.  
  18. import org.powerbot.concurrent.Task;
  19. import org.powerbot.concurrent.strategy.Strategy;
  20. import org.powerbot.game.api.ActiveScript;
  21. import org.powerbot.game.api.Manifest;
  22. import org.powerbot.game.api.methods.Calculations;
  23. import org.powerbot.game.api.methods.Tabs;
  24. import org.powerbot.game.api.methods.Walking;
  25. import org.powerbot.game.api.methods.Widgets;
  26. import org.powerbot.game.api.methods.input.Mouse;
  27. import org.powerbot.game.api.methods.interactive.NPCs;
  28. import org.powerbot.game.api.methods.interactive.Players;
  29. import org.powerbot.game.api.methods.node.GroundItems;
  30. import org.powerbot.game.api.methods.node.SceneEntities;
  31. import org.powerbot.game.api.methods.tab.Inventory;
  32. import org.powerbot.game.api.methods.tab.Skills;
  33. import org.powerbot.game.api.methods.widget.Camera;
  34. import org.powerbot.game.api.util.Random;
  35. import org.powerbot.game.api.util.Time;
  36. import org.powerbot.game.api.wrappers.Area;
  37. import org.powerbot.game.api.wrappers.Tile;
  38. import org.powerbot.game.api.wrappers.interactive.NPC;
  39. import org.powerbot.game.api.wrappers.node.GroundItem;
  40. import org.powerbot.game.api.wrappers.node.Item;
  41. import org.powerbot.game.api.wrappers.node.SceneObject;
  42. import org.powerbot.game.bot.event.MessageEvent;
  43. import org.powerbot.game.bot.event.listener.MessageListener;
  44. import org.powerbot.game.bot.event.listener.PaintListener;
  45.  
  46.  
  47. @Manifest(authors = {"3G Connection"}, name = "SpeedHillies", description = "Kills Hillies at Edgeville Dungeon & banks")
  48.  
  49. public class ConnectHillies extends ActiveScript implements PaintListener, MouseListener, MessageListener       {
  50.        
  51.         Image showPaint;
  52.         Image hidePaint;
  53.        
  54.         String Status = "Starting up";
  55.        
  56.         private final String showUrl = "";
  57.         private final String hideUrl = "";
  58.        
  59.         private BufferedImage showImage;
  60.         private BufferedImage mainImage;
  61.        
  62.         private boolean showShow;
  63.         private boolean showHide;
  64.        
  65.         private int[] GIANT_ID = {0};
  66.         private int[] LOOT_ID = {0, 0};
  67.         private int BONES_ID = 0;
  68.         private int LADDER_ID = 0;
  69.         private int DOOR_ID = 0;
  70.         private int BANK_ID = 0;
  71.         private int TRAPDOOR_ID = 0;
  72.         private int KEY_ID = 0;
  73.         private int FOOD_ID = 0;
  74.         private int TICKET_ID = 24154;
  75.         private int MUSICIAN_ID = 0;
  76.        
  77.     private int expHour;
  78.     private int expGained;
  79.     private String training;
  80.         private String SkillNames[] = {"Attack", "Strength", "Defense", "Ranged"};
  81.         private int SkillConstants [] = {Skills.ATTACK, Skills.STRENGTH, Skills.DEFENSE, Skills.RANGE};
  82.         private int startxp[] = {0, 0, 0, 0};
  83.     private int startlvl[] = {0, 0, 0, 0};
  84.     private int startCbLvl;
  85.     private int CbLevel;
  86.     private int trips;
  87.     private int tripsHour;
  88.     private int bones;
  89.     private int bonesHour;
  90.     private int kills;
  91.     private int killsHour;
  92.    
  93.     private int profit;
  94.     private int bonesPrice;
  95.        
  96.         public long startTime = System.currentTimeMillis();
  97.        
  98.         int before;
  99.         int count = Inventory.getCount(BONES_ID);
  100.        
  101.         private final Area BANK_AREA = new Area (new Tile[] {
  102.                         new Tile(3185, 3439, 0), new Tile(3180, 3438, 0),
  103.                         new Tile(3175, 3437, 0), new Tile(3174, 3432, 0),
  104.                         new Tile(3178, 3428, 0), new Tile(3183, 3426, 0),
  105.                         new Tile(3188, 3426, 0), new Tile(3192, 3429, 0),
  106.                         new Tile(3194, 3434, 0), new Tile(3195, 3439, 0),
  107.                         new Tile(3192, 3443, 0), new Tile(3187, 3445, 0),
  108.                         new Tile(3182, 3446, 0), new Tile(3177, 3443, 0),
  109.                         new Tile(3173, 3440, 0), new Tile(3175, 3435, 0)});
  110.        
  111.         private final Area ROOM_AREA = new Area (new Tile[] {
  112.                         new Tile(1,2,0)});
  113.        
  114.         private final Area HILLY_AREA = new Area (new Tile[] {
  115.                         new Tile(1,2,0)});
  116.  
  117.         @Override
  118.         protected void setup() {
  119.                
  120.                 showPaint = getImage("http://postimage.org/image/4jonawbrl");
  121.                 hidePaint = getImage("");
  122.                
  123.                 startTime = System.currentTimeMillis();
  124.                 startCbLvl = Players.getLocal().getLevel();
  125.                
  126.                 {
  127.                         try {
  128.                         showImage = ImageIO.read(new URL(showUrl));
  129.                         showImage = ImageIO.read(new URL(hideUrl));
  130.                 } catch (MalformedURLException e) {
  131.                         e.printStackTrace();
  132.                 } catch (IOException e) {
  133.                         e.printStackTrace();
  134.                         }
  135.                 }
  136.                
  137.                 provide (new WalkingPath());
  138.                 provide (new Attack());
  139.                 provide (new Loot());
  140.                 provide (new Bank());
  141.                 provide (new Antiban());
  142.                
  143.                 try     {
  144.                         bonesPrice = getPrice(BONES_ID);
  145.                 }       catch (IOException e)   {
  146.                         e.printStackTrace();
  147.                 }
  148.         }
  149.        
  150.         private Image getImage(String string) {
  151.                
  152.                 return null;
  153.         }
  154.  
  155.         public class WalkingPath extends Strategy implements Task       {
  156.  
  157.                 @Override
  158.                 public void run() {
  159.                         Status = "Walking";
  160.                         if (Inventory.getCount() == 28 && HILLY_AREA.contains(Players.getLocal()))      {
  161.                                 SceneObject ladder = SceneEntities.getNearest(LADDER_ID);
  162.                                         if (ladder != null)     {
  163.                                         Walking.walk(ladder);
  164.                         if (Inventory.getCount() == 28 && ROOM_AREA.contains(Players.getLocal()))       {
  165.                                 SceneObject door = SceneEntities.getNearest(DOOR_ID);
  166.                                         Walking.walk(door);
  167.                                                 if (door != null)       {
  168.                                                 if (door.isOnScreen())  {
  169.                                                         door.interact("Open");
  170.                                                 if (!door.isOnScreen() && ROOM_AREA.contains(Players.getLocal()))       {
  171.                                                         Camera.turnTo(door);
  172.                                                         }
  173.                                                 }
  174.                                         }
  175.                                 }
  176.                        
  177.                         if (Inventory.getCount() != 28 && ROOM_AREA.contains(Players.getLocal()))       {
  178.                                 SceneObject trapdoor = SceneEntities.getNearest(TRAPDOOR_ID);
  179.                                         if (trapdoor != null)   {
  180.                                                 trapdoor.interact("Go down");
  181.                                         }
  182.                         }
  183.                         if (Inventory.getCount() != 28 && BANK_AREA.contains(Players.getLocal()))       {
  184.                                 NPC musician = NPCs.getNearest(MUSICIAN_ID);
  185.                                 if (Calculations.distanceTo(musician) >= 5)     {
  186.                                         Walking.findPath(musician).traverse();
  187.                                                 musician.interact("Rest");
  188.                                                 }
  189.                                         }
  190.                         if (Inventory.getCount() != 28) {
  191.                                 NPC musician = NPCs.getNearest(MUSICIAN_ID);
  192.                                 SceneObject door = SceneEntities.getNearest(DOOR_ID);
  193.                                 if (musician.isOnScreen() && Walking.getEnergy() == 100)        {
  194.                                         Walking.findPath(door).traverse();
  195.                                                 door.interact("Open");
  196.                                                 }
  197.                                         }
  198.                                 }
  199.                         }
  200.                 }
  201.         }
  202.        
  203.         public class Attack extends Strategy implements Task    {
  204.  
  205.                 @Override
  206.                 public void run() {
  207.                         if (Inventory.getCount() != 28) {
  208.                         NPC hilly = NPCs.getNearest(GIANT_ID);
  209.                         if (hilly != null)      {
  210.                                 if (hilly.isOnScreen() && !hilly.isInCombat() && Calculations.distanceTo(hilly) <= 8)   {
  211.                                         hilly.interact("Attack");
  212.                                         Status = "Fighting";
  213.                                 }       else    {
  214.                                         if (!hilly.isOnScreen() && HILLY_AREA.contains(Players.getLocal()))     {
  215.                                                 Camera.turnTo(hilly);
  216.                                 }       else    {
  217.                                         if (Players.getLocal().isInCombat())    {
  218.                                                 Time.sleep(Random.nextInt(2000, 4000));
  219.                                                         }
  220.                                                 }
  221.                                         if (Players.getLocal().getInteracting().getHpPercent() == 0)    {
  222.                                                 kills++;
  223.                                                 }
  224.                                         }
  225.                                 }
  226.                         }
  227.                 }
  228.         }
  229.        
  230.         public class Loot extends Strategy implements Task      {
  231.        
  232.                 @Override
  233.                 public void run()       {
  234.                         Status = "Looting";
  235.                         GroundItem ticket = GroundItems.getNearest(TICKET_ID);
  236.                         if (ticket != null)     {
  237.                                 if (ticket.isOnScreen())        {
  238.                                         ticket.interact("Take");
  239.                                                 Time.sleep(Random.nextInt(500, 750));
  240.                                 }
  241.                         }
  242.                        
  243.                         if (Players.getLocal().isInCombat())    {
  244.                                 Time.sleep(Random.nextInt(1500, 2500));
  245.                         if (!Players.getLocal().isInCombat())   {
  246.                                 GroundItem loot = GroundItems.getNearest(LOOT_ID);
  247.                                 GroundItem bone = GroundItems.getNearest(BONES_ID);
  248.                                         if (Calculations.distanceTo(bone.getLocation()) < 5)    {
  249.                                         if (Calculations.distanceTo(loot.getLocation()) < 5)    {
  250.                                                 bone.interact("Take");
  251.                                                 loot.interact("Take");
  252.                                                         Time.sleep(Random.nextInt(2000, 2500));
  253.                                                        
  254.                                                         if (count > before)     {
  255.                                                                 bones++;
  256.                                                                 before = Inventory.getCount(BONES_ID);
  257.                                                         }
  258.                                                 }
  259.                                         }
  260.                                 }
  261.                         }
  262.                 }
  263.         }
  264.        
  265.         public class Bank extends Strategy implements Task      {
  266.                
  267.                 @Override
  268.                 public void run()       {
  269.                         SceneObject bank = SceneEntities.getNearest(BANK_ID);
  270.                                 bank.interact("Bank");
  271.                                 Status = "Banking";
  272.                                 if (org.powerbot.game.api.methods.widget.Bank.isOpen()) {
  273.                                        
  274.                                         if (Inventory.getCount() == 28) {
  275.                                                 org.powerbot.game.api.methods.widget.Bank.depositInventory();  
  276.                                                 org.powerbot.game.api.methods.widget.Bank.withdraw(KEY_ID, 1);
  277.                                                         trips++;
  278.                                         }
  279.                                        
  280.                                         if (Players.getLocal().getHpPercent() <= 45)    {
  281.                                                 org.powerbot.game.api.methods.widget.Bank.withdraw(FOOD_ID, 3);
  282.                                                 org.powerbot.game.api.methods.widget.Bank.close();
  283.                                                        
  284.                                                 if (Tabs.getCurrent() != Tabs.INVENTORY) {
  285.                                                         if (Tabs.INVENTORY.open(true)) {
  286.                                                                 Time.sleep(250, 500);
  287.                                         for (Item i : Inventory.getItems())     {
  288.                                                         if (i.getId() == 0)     {                                              
  289.                                                                 i.getWidgetChild().interact("Eat");
  290.                                                                
  291.                                         if (Inventory.getCount(KEY_ID) == 0)    {
  292.                                         org.powerbot.game.api.methods.widget.Bank.withdraw(KEY_ID, 1);                         
  293.                                                                         }
  294.                                                 }      
  295.                                                                         }
  296.                                                                 }
  297.                                                         }
  298.                                                 }
  299.                                         }
  300.                                 }
  301.                         }
  302.        
  303.         public class Antiban extends Strategy implements Task   {
  304.  
  305.                 @Override
  306.                 public void run() {
  307.                         int random = Random.nextInt(1, 20);
  308.                         switch (random) {
  309.                                
  310.                                 case 2:
  311.                                         if (!Tabs.STATS.isOpen())       {      
  312.                                         Tabs.STATS.open();
  313.                                                 Time.sleep(Random.nextInt(250, 500));
  314.                                                
  315.                                         }
  316.                                                
  317.                                 case 5:
  318.                                         if (Tabs.STATS.isOpen())        {
  319.                                                 Tabs.STATS.open();
  320.                                                 Widgets.get(320).getChild(2);
  321.                                         }
  322.                                
  323.                                 case 8:
  324.                                         Camera.setAngle(Random.nextInt(50, 300));
  325.                                         Time.sleep(Random.nextInt(250, 350));
  326.                                        
  327.                                 case 11:
  328.                                         Camera.setPitch(Random.nextInt(75, 225));
  329.                                        
  330.                                 case 14:
  331.                                         Mouse.move(Random.nextInt(150, 225), 0);
  332.                                                 Time.sleep(Random.nextInt(750, 1250));
  333.                                        
  334.                                 case 16:
  335.                                         Mouse.move(Random.nextInt(250, 350), 0);
  336.                                                 Time.sleep(Random.nextInt(500, 1000));
  337.                                                
  338.                                 case 19:
  339.                                         if (Tabs.INVENTORY.isOpen())    {
  340.                                                 Tabs.INVENTORY.open();
  341.                                                         Time.sleep(Random.nextInt(750, 1250));
  342.                                                        
  343.                                 }
  344.                         }      
  345.                 }
  346.         }
  347.        
  348.         private int getPrice (int id) throws IOException {
  349.         URL url = new URL("http://open.tip.it/json/ge_single_item?item=" + id);
  350.         URLConnection con = url.openConnection();
  351.         BufferedReader in = new BufferedReader(new InputStreamReader(
  352.         con.getInputStream()));
  353.         String line = "";
  354.         String inputLine;
  355.  
  356.         while ((inputLine = in.readLine()) != null) {
  357.                 line += inputLine;
  358.         }
  359.  
  360.         in.close();
  361.  
  362.         if (!line.contains("mark_price")) {
  363.                 return -1;
  364.         }
  365.  
  366.         line = line.substring(line.indexOf("mark_price\":\"")
  367.         + "mark_price\":\"".length());
  368.         line = line.substring(0, line.indexOf("\""));
  369.         return Integer.parseInt(line);
  370. }
  371.        
  372.         private int getTrainingSkill() {
  373.                 for (int i = 0; i < SkillConstants.length; i++) {
  374.                         if (Skills.getExperience(SkillConstants[i]) > startxp[i]) {
  375.                                 training = SkillNames[i];
  376.                                 return SkillConstants[i];
  377.                                 }
  378.                         }
  379.                 return -1;
  380.         }
  381.        
  382.         private int getStartxp (int i) {
  383.                 for (int g = 0; g < SkillConstants.length; g++) {
  384.                         if (i == SkillConstants[g]) {
  385.                                         return startxp[g];    
  386.                         }
  387.                 }
  388.                 return -1;
  389.         }
  390.        
  391.         private int getStartLvl (int i) {
  392.                 for (int g = 0; g < SkillConstants.length; g++) {
  393.                         if (i == SkillConstants[g]) {
  394.                                 return startlvl[g];    
  395.                         }
  396.                 }
  397.                 return -1;
  398.         }
  399.        
  400.        
  401.  
  402.         private double getXpHour(double expGained)      {
  403.                 return ((3600000.0 / (System.currentTimeMillis() - startTime)) * expGained);
  404.         }
  405.        
  406.         private double getTripsHour (double trips)      {
  407.                 return ((3600000.0 / (System.currentTimeMillis() - startTime)) * trips);
  408.         }
  409.        
  410.         private double getBonesHour (double bones)      {
  411.                 return ((3600000.0 / (System.currentTimeMillis() - startTime)) * bones);
  412.         }
  413.  
  414.         private double getKillsHour (double kills)      {
  415.                 return ((3600000.0 / (System.currentTimeMillis() - startTime)) * kills);
  416.         }
  417.        
  418.         //----------------------------------- PAINT --------------------------------------------------------------------------
  419.        
  420.        
  421.        
  422.         private final Color color = new Color(255, 255, 255);
  423.         private final Font font = new Font("Consolas", 0, 14);
  424.        
  425.         public void onRepaint(Graphics g1) {
  426.                
  427.                 expGained = (Skills.getExperience(getTrainingSkill()) - getStartxp(getTrainingSkill()));
  428.                 expHour = (int) getXpHour (expGained);
  429.                 CbLevel = Players.getLocal().getLevel() - startCbLvl;
  430.                 tripsHour = (int) getTripsHour (trips);
  431.                 bonesHour = (int) getBonesHour (bones);
  432.                 killsHour = (int) getKillsHour (kills);
  433.                
  434.                 long millis = System.currentTimeMillis() - startTime;
  435.         long hours = millis / (1000 * 60 * 60);
  436.         millis -= hours * (1000 * 60 * 60);
  437.         long minutes = millis / (1000 * 60);
  438.         millis -= minutes * (1000 * 60);
  439.         long seconds = millis / 1000;
  440.                
  441.                 Graphics2D g = (Graphics2D)g1;
  442.                 g.setColor(color);
  443.                 g.setFont(font);
  444.                 g.drawString("" + hours + ":" + minutes + ":" + seconds, 67, 408); // Time
  445.                 g.drawString("" + expGained, 57, 430); // Exp
  446.                 g.drawString("" + expHour, 77, 453); // Exp/Hr
  447.                 g.drawString("" + bones, 197, 408); // Bones
  448.                 g.drawString("" + bonesHour, 215, 430); // Bones/Hr
  449.                 g.drawString("" + (Skills.getRealLevel(getTrainingSkill()) - getStartLvl(getTrainingSkill())), 196, 453); // Kills
  450.                 g.drawString("", 333, 408); // GP
  451.                 g.drawString("", 315, 430); // GP/Hr
  452.                 g.drawString("" + startCbLvl + " (+" + CbLevel + ")", 315, 453); // Kills/Hr
  453.                 g.drawString("" + trips, 432, 408); // Trips
  454.                 g.drawString("" + tripsHour, 450, 430); // Trips/Hr
  455.                 g.drawString("" + Status, 439, 453); // Status
  456.                 g.drawString("", 280, 378); // Training
  457.         }
  458.  
  459.         @Override
  460.         public void messageReceived(MessageEvent arg0) {
  461.                
  462.         }
  463.  
  464.         @Override
  465.         public void mouseClicked(MouseEvent arg0) {
  466.                
  467.         }
  468.  
  469.         @Override
  470.         public void mouseEntered(MouseEvent arg0) {
  471.                
  472.         }
  473.  
  474.         @Override
  475.         public void mouseExited(MouseEvent arg0) {
  476.                
  477.         }
  478.  
  479.         @Override
  480.         public void mousePressed(MouseEvent arg0) {
  481.                
  482.         }
  483.  
  484.         @Override
  485.         public void mouseReleased(MouseEvent arg0) {
  486.                
  487.         }
  488. }