Advertisement
phl0w

iTIvies 1.0

Apr 21st, 2012
597
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.05 KB | None | 0 0
  1. import java.awt.AlphaComposite;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.Point;
  7. import java.awt.Polygon;
  8. import java.awt.Rectangle;
  9.  
  10. import org.powerbot.concurrent.Task;
  11. import org.powerbot.concurrent.strategy.Strategy;
  12. import org.powerbot.game.api.ActiveScript;
  13. import org.powerbot.game.api.Manifest;
  14. import org.powerbot.game.api.methods.Calculations;
  15. import org.powerbot.game.api.methods.Tabs;
  16. import org.powerbot.game.api.methods.Widgets;
  17. import org.powerbot.game.api.methods.input.Mouse;
  18. import org.powerbot.game.api.methods.interactive.Players;
  19. import org.powerbot.game.api.methods.node.GroundItems;
  20. import org.powerbot.game.api.methods.node.SceneEntities;
  21. import org.powerbot.game.api.methods.tab.Skills;
  22. import org.powerbot.game.api.methods.widget.Camera;
  23. import org.powerbot.game.api.util.Filter;
  24. import org.powerbot.game.api.util.Random;
  25. import org.powerbot.game.api.util.Time;
  26. import org.powerbot.game.api.wrappers.Tile;
  27. import org.powerbot.game.api.wrappers.interactive.Player;
  28. import org.powerbot.game.api.wrappers.node.GroundItem;
  29. import org.powerbot.game.api.wrappers.node.SceneObject;
  30. import org.powerbot.game.api.wrappers.widget.WidgetChild;
  31. import org.powerbot.game.bot.event.MessageEvent;
  32. import org.powerbot.game.bot.event.listener.MessageListener;
  33. import org.powerbot.game.bot.event.listener.PaintListener;
  34.  
  35. @Manifest(authors = { "Flow_HRS" }, name = "iTIvies", description = "Chops ivies for you!", version = 1.0)
  36. public class iTIvies extends ActiveScript implements MessageListener,
  37.         PaintListener {
  38.  
  39.     private final int[] TREE_IVY = { 46318, 46320, 46322, 46324 },
  40.             BIRD_NESTS = { 5070, 5071, 5072, 5073, 5074, 5075, 7413, 11966 };
  41.     private boolean getNest;
  42.     private int chops, nests, startXp, startLevel;
  43.     private String status = "nothing";
  44.     private WidgetChild wc;
  45.     private long startTime;
  46.  
  47.     @Override
  48.     protected void setup() {
  49.         provide(new Chop());
  50.         provide(new Nest());
  51.         provide(new Antiban());
  52.         wc = Widgets.get(320, 78);
  53.         startTime = System.currentTimeMillis();
  54.         startXp = Skills.getExperience(Skills.WOODCUTTING);
  55.         startLevel = Skills.getLevel(Skills.WOODCUTTING);
  56.     }
  57.  
  58.     @Override
  59.     public void messageReceived(MessageEvent me) {
  60.         String msg = me.getMessage();
  61.         if (msg.contains("chop away")) {
  62.             chops++;
  63.         } else if (msg.contains("nest")) {
  64.             getNest = true;
  65.         }
  66.     }
  67.  
  68.     private SceneObject getIvy() {
  69.         return SceneEntities.getNearest(new Filter<SceneObject>() {
  70.             @Override
  71.             public boolean accept(SceneObject obj) {
  72.                 return obj.getId() == TREE_IVY[0] || obj.getId() == TREE_IVY[1]
  73.                         || obj.getId() == TREE_IVY[2]
  74.                         || obj.getId() == TREE_IVY[3];
  75.             }
  76.         });
  77.     }
  78.  
  79.     private GroundItem getNest() {
  80.         return GroundItems.getNearest(new Filter<GroundItem>() {
  81.             @Override
  82.             public boolean accept(GroundItem item) {
  83.                 for (int id : BIRD_NESTS) {
  84.                     return id == item.getId();
  85.                 }
  86.                 return false;
  87.             }
  88.         });
  89.     }
  90.  
  91.     private class Chop extends Strategy implements Task {
  92.  
  93.         @Override
  94.         public boolean validate() {
  95.             return getIvy() != null && getIvy().isOnScreen()
  96.                     && Players.getLocal().getAnimation() == -1
  97.                     && !Players.getLocal().isMoving() && !getNest;
  98.         }
  99.  
  100.         @Override
  101.         public void run() {
  102.             status = "chopping";
  103.             getIvy().interact("Chop");
  104.             Time.sleep(Random.nextInt(300, 400));
  105.         }
  106.     }
  107.  
  108.     private class Nest extends Strategy implements Task {
  109.  
  110.         @Override
  111.         public boolean validate() {
  112.             return getNest;
  113.         }
  114.  
  115.         @Override
  116.         public void run() {
  117.             if (getNest() != null) {
  118.                 status = "taking nest";
  119.                 getNest().interact("Take");
  120.                 Time.sleep(Random.nextInt(300, 400));
  121.                 getNest = false;
  122.                 nests++;
  123.             }
  124.         }
  125.     }
  126.  
  127.     private class Antiban extends Strategy implements Task {
  128.  
  129.         @Override
  130.         public boolean validate() {
  131.             return true;
  132.         }
  133.  
  134.         @Override
  135.         public void run() {
  136.             if (Random.nextInt(1, 250) < 14) {
  137.                 executeAntiban();
  138.             }
  139.             Time.sleep(Random.nextInt(1000, 2000));
  140.         }
  141.  
  142.         public void executeAntiban() {
  143.             int dx, dy;
  144.             int r = Random.nextInt(0, 4);
  145.             switch (r) {
  146.             case 0:
  147.                 status = "moving camera";
  148.                 Camera.setAngle(Random.nextInt(20, 300));
  149.                 break;
  150.             case 1:
  151.                 if (Tabs.getCurrent() != Tabs.STATS) {
  152.                     Tabs.STATS.open();
  153.                 }
  154.                 status = "hovering";
  155.                 Time.sleep(1000);
  156.                 wc.hover();
  157.                 break;
  158.             case 2:
  159.                 status = "opening tabs";
  160.                 if (Tabs.getCurrent() != Tabs.INVENTORY) {
  161.                     Tabs.INVENTORY.open();
  162.                 }
  163.                 break;
  164.             case 3:
  165.                 status = "moving mouse";
  166.                 dx = Random.nextInt(-30, 30);
  167.                 dy = Random.nextInt(-30, 30);
  168.                 Mouse.move(Mouse.getX() + dx, Mouse.getY() + dy);
  169.                 Time.sleep(Random.nextInt(20, 150));
  170.                 break;
  171.             case 4:
  172.                 status = "checking player";
  173.                 Player player = Players.getNearest(new Filter<Player>() {
  174.                     @Override
  175.                     public boolean accept(Player p) {
  176.                         return !p.equals(Players.getLocal());
  177.                     }
  178.                 });
  179.                 if (player != null) {
  180.                     player.click(false);
  181.                     Time.sleep(Random.nextInt(400, 1000));
  182.                     dx = Random.nextInt(-16, 16);
  183.                     dy = Random.nextInt(-60, -20);
  184.                     Mouse.move(Mouse.getX() + dx, Mouse.getY() + dy);
  185.                 }
  186.                 Time.sleep(Random.nextInt(20, 150));
  187.                 break;
  188.             }
  189.             status = "chopping";
  190.         }
  191.     }
  192.  
  193.     private AlphaComposite makeComposite(float alpha) {
  194.         int type = AlphaComposite.SRC_OVER;
  195.         return (AlphaComposite.getInstance(type, alpha));
  196.     }
  197.  
  198.     @Override
  199.     public void onRepaint(Graphics g) {
  200.         Graphics2D g2d = (Graphics2D) g;
  201.  
  202.         Font title = new Font("Monotype Corsiva", Font.PLAIN, 25);
  203.         Font author = new Font("Monotype Corsiva", Font.PLAIN, 16);
  204.         Font info = new Font("Book Antiqua", Font.PLAIN, 15);
  205.  
  206.         Rectangle bg = new Rectangle(10, 23, 230, 165);
  207.         Rectangle border = new Rectangle(8, 21, 234, 169);
  208.         g2d.setColor(Color.DARK_GRAY);
  209.         g2d.setComposite(makeComposite(0.5f));
  210.         g2d.fill(bg);
  211.         g2d.setColor(Color.BLACK);
  212.         g2d.fill(border);
  213.         g2d.setComposite(makeComposite(1.0f));
  214.  
  215.         g2d.setColor(Color.WHITE);
  216.  
  217.         g2d.fill(new Rectangle(Mouse.getX() + 1, Mouse.getY() - 4, 2, 15));
  218.         g2d.fill(new Rectangle(Mouse.getX() - 6, Mouse.getY() + 2, 16, 2));
  219.  
  220.         int expGained = Skills.getExperiences()[Skills.WOODCUTTING] - startXp;
  221.         int expHour = (int) ((expGained) * 3600000D / (System
  222.                 .currentTimeMillis() - startTime));
  223.         int cutHour = (int) ((chops) * 3600000D / (System.currentTimeMillis() - startTime));
  224.         g2d.setFont(title);
  225.         g2d.drawString("iTIvies", 12, 43);
  226.         g2d.setFont(author);
  227.         g2d.drawString("By: Flow_HRS", 12, 58);
  228.  
  229.         g2d.setFont(info);
  230.         g2d.drawString("WC level: " + Skills.getLevels()[Skills.WOODCUTTING]
  231.                 + "/" + startLevel + ".", 12, 78);
  232.         g2d.drawString("WC experience gained: " + expGained + ".", 12, 93);
  233.         g2d.drawString("WC experience/hour: " + expHour + ".", 12, 108);
  234.         g2d.drawString("Chopped " + chops + " ivies.", 12, 123);
  235.         g2d.drawString("Chopping " + cutHour + " ivies per hour.", 12, 138);
  236.         g2d.drawString("Nests: " + nests + ".", 12, 153);
  237.         g2d.drawString("Status: " + status + ".", 12, 168);
  238.         g2d.drawString("Time running: "
  239.                 + formatTime(System.currentTimeMillis() - startTime) + ".", 12,
  240.                 183);
  241.         drawTile(g2d, Players.getLocal().getLocation(), Color.GREEN);
  242.     }
  243.  
  244.     private String formatTime(final long milliseconds) {
  245.         final long t_seconds = milliseconds / 1000;
  246.         final long t_minutes = t_seconds / 60;
  247.         final long t_hours = t_minutes / 60;
  248.         final long seconds = t_seconds % 60;
  249.         final long minutes = t_minutes % 60;
  250.         final long hours = t_hours % 500;
  251.         return hours + ":" + minutes + ":" + seconds;
  252.     }
  253.  
  254.     public void drawTile(Graphics2D g, Tile tile, Color col) {
  255.         for (Polygon poly : tile.getBounds()) {
  256.             boolean drawThisOne = true;
  257.             for (int i = 0; i < poly.npoints; i++) {
  258.                 Point p = new Point(poly.xpoints[i], poly.ypoints[i]);
  259.                 if (!Calculations.isOnScreen(p)) {
  260.                     drawThisOne = false;
  261.                 }
  262.             }
  263.             if (drawThisOne) {
  264.                 Color col2 = new Color(col.getRed(), col.getGreen(),
  265.                         col.getBlue(), 80);
  266.                 g.setColor(col2);
  267.                 g.fillPolygon(poly);
  268.                 g.setColor(col);
  269.                 g.drawPolygon(poly);
  270.             }
  271.         }
  272.     }
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement