Advertisement
asciicat

GateStones.java 3.5

Jun 11th, 2011
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.73 KB | None | 0 0
  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.RenderingHints;
  7. import java.awt.event.KeyEvent;
  8. import java.awt.event.MouseEvent;
  9. import org.rsbot.script.Script;
  10. import org.rsbot.script.ScriptManifest;
  11.  
  12. import org.rsbot.script.methods.Skills;
  13. import org.rsbot.script.wrappers.RSObject;
  14. import org.rsbot.script.wrappers.RSTile;
  15. import org.rsbot.script.wrappers.RSArea;
  16.  
  17. import java.awt.event.MouseListener;
  18. import java.io.BufferedReader;
  19. import java.io.IOException;
  20. import java.io.InputStreamReader;
  21. import java.net.URL;
  22. import java.text.DecimalFormat;
  23. import java.text.DecimalFormatSymbols;
  24. import javax.imageio.ImageIO;
  25. import javax.swing.JOptionPane;
  26. import org.rsbot.event.events.MessageEvent;
  27. import org.rsbot.event.listeners.MessageListener;
  28. import org.rsbot.event.listeners.PaintListener;
  29. import org.rsbot.script.methods.Game;
  30.  
  31. @ScriptManifest(authors = "Maze2234", name = "GateStone Maker", version = 3.5, description = "Creates gatestones within daemonheim for magic experience.")
  32.  
  33. public class GateStones extends Script implements PaintListener, MessageListener, MouseListener {
  34.  
  35. //Variables_______________________________________________________________________
  36.  
  37. private double scriptVersion = GateStones.class.getAnnotation(ScriptManifest.class).version();
  38. private int startExp;
  39. private int gainedExp;
  40. private int startLvl;
  41. private int gainedLvls;
  42. private int currentLevel;
  43. private int mouseSpeed = 1;
  44. private int[] dungLadderID = {51156, 50604, 51704, 54675};
  45. private int ExpHour = 0;
  46. private int cameraAntiBan = 0;
  47. private long startTime;
  48. private long runTime;
  49. private long expLevel;
  50. private boolean hasBall = false;
  51. private boolean startedScript = false;
  52. private boolean showPaint = true;
  53.  
  54. private Font font = new Font("Monospaced", Font.BOLD,  16);
  55. private final Image gateStone = getImage("http://scripters.powerbot.org/240751/GSBG.png");
  56.  
  57. //Voids & Booleans________________________________________________________________
  58.  
  59. //Locations and Walking
  60. private boolean outSide(){
  61.     RSArea area = new RSArea(new RSTile(3445, 3718), new RSTile(3472, 3729));
  62.     return area.contains(getMyPlayer().getLocation());
  63. }
  64.  
  65. //Clicking Objects
  66. private void clickDoor() {
  67.         antiBan();
  68.     if (objects.getNearest(48496) != null) {
  69.             if (!interfaces.get(236).isValid() && !interfaces.get(210).isValid() && !interfaces.get(947).isValid() && !interfaces.get(938).isValid()) {
  70.                     RSObject dungDoor = objects.getNearest(48496);
  71.                     if (!dungDoor.isOnScreen() && dungDoor.getLocation() != null) {
  72.                         walking.walkTileMM(dungDoor.getLocation());
  73.                         sleep(random(1200, 1400));
  74.                     }
  75.                     if (dungDoor.isOnScreen()) {
  76.                         dungDoor.interact("Climb-down");
  77.                         sleep(random(1200, 1600));
  78.                     }
  79.                 }
  80.     }
  81. }
  82.  
  83. private void clickLadder() {
  84.         antiBan();
  85.     if (objects.getNearest(dungLadderID) != null) {
  86.             if (!interfaces.get(236).isValid() && !interfaces.get(211).isValid()) {
  87.                 RSObject dungLadder = objects.getNearest(dungLadderID);
  88.                 if (!dungLadder.isOnScreen() && dungLadder.getLocation() != null) {
  89.                     walking.walkTileMM(dungLadder.getLocation());
  90.                     sleep(random(1200, 1400));
  91.                 }
  92.                 if (dungLadder.isOnScreen()) {
  93.                     dungLadder.interact("Climb-up");
  94.                     sleep(random(1500, 1800));
  95.                 }
  96.             }
  97.         }
  98. }
  99.  
  100. private void clickStairs() {
  101.         antiBan();
  102.     if (objects.getNearest(50552) != null && getMyPlayer().getAnimation() != 13760) {
  103.             RSObject dungStairs = objects.getNearest(50552);
  104.             if  (!dungStairs.isOnScreen() && dungStairs.getLocation() != null) {
  105.                 walking.walkTileMM(dungStairs.getLocation());
  106.                 sleep(random(1200, 1400));
  107.             }
  108.             if (dungStairs.isOnScreen()) {
  109.                 dungStairs.interact("Jump-down");
  110.                 sleep(random(1200, 1600));
  111.             }
  112.     }
  113. }
  114.  
  115. //Tasks
  116. private void formParty() {
  117.     antiBan();
  118.     if (interfaces.get(210).getComponent(2).isValid()) {
  119.         mouse.setSpeed(mouseSpeed + random(0, 5));
  120.         interfaces.get(210).getComponent(2).doClick();
  121.         sleep(random(400, 500));
  122.     }
  123.     if (interfaces.get(236).getComponent(1).isValid()) {
  124.         mouse.setSpeed(mouseSpeed + random(0, 5));
  125.         interfaces.get(236).getComponent(1).doClick();
  126.         sleep(random(600, 800));
  127.     }
  128. }
  129.  
  130. private void setDifficulty() {
  131.     antiBan();
  132.     if (interfaces.get(947).getComponent(761).isValid()) {
  133.         mouse.setSpeed(mouseSpeed + random(0, 5));
  134.         interfaces.get(947).getComponent(761).doClick();//change floor (finish)
  135.         sleep(random(200, 400));
  136.     }
  137.     if (interfaces.get(938).getComponent(39).isValid()) {
  138.         mouse.setSpeed(mouseSpeed + random(0, 5));
  139.         interfaces.get(938).getComponent(39).doClick();//change complexity (finish)
  140.         sleep(random(200, 400));
  141.     }
  142. }
  143.  
  144. private void setSize() {
  145.     antiBan();
  146.     if (interfaces.get(236).getComponent(1).isValid()) {
  147.         mouse.setSpeed(mouseSpeed + random(0, 5));
  148.         interfaces.get(236).getComponent(1).doClick();//size (small)
  149.     }
  150. }
  151.  
  152. private void makeStones() {
  153.         antiBan();
  154.     if (inventory.contains(17489)) {
  155.         mouse.setSpeed(mouseSpeed + random(0, 3));
  156.             inventory.getItem(17489).interact("Drop");
  157.         keyboard.pressKey((char) KeyEvent.VK_F4);
  158.         sleep(random(75, 100));
  159.         keyboard.releaseKey((char) KeyEvent.VK_F4);
  160.         mouse.setSpeed(mouseSpeed + random(0, 3));
  161.             interfaces.get(950).getComponent(38).interact("Quick-cast");//make gatestone
  162.         sleep(random(750, 850));
  163.         keyboard.pressKey((char) KeyEvent.VK_F1);
  164.         sleep(random(75, 100));
  165.         keyboard.releaseKey((char) KeyEvent.VK_F1);
  166.     } else if (!inventory.contains(17489)) {
  167.         keyboard.pressKey((char) KeyEvent.VK_F4);
  168.         sleep(random(75, 100));
  169.         keyboard.releaseKey((char) KeyEvent.VK_F4);
  170.         mouse.setSpeed(mouseSpeed + random(0, 3));
  171.             interfaces.get(950).getComponent(38).interact("Quick-cast");//make gatestone
  172.                 sleep(random(750, 850));
  173.         keyboard.pressKey((char) KeyEvent.VK_F1);
  174.         sleep(random(75, 100));
  175.         keyboard.releaseKey((char) KeyEvent.VK_F1);
  176.         }  
  177. }
  178.  
  179. private void leaveDung() {
  180.         antiBan();
  181.         clickLadder();
  182.         if (interfaces.get(211).getComponent(3).isValid()) {
  183.         mouse.setSpeed(mouseSpeed + random(0, 5));
  184.             interfaces.get(211).getComponent(3).doClick();//Leave party (Continue)
  185.         sleep(random(800, 1000));
  186.     }
  187.         if (interfaces.get(236).getComponent(1).isValid()) {
  188.         mouse.setSpeed(mouseSpeed + random(0, 5));
  189.             interfaces.get(236).getComponent(1).doClick();//Leave party (Yes)
  190.     }
  191. }
  192.  
  193. private void dropBall() {
  194.     game.openTab(Game.Tab.EQUIPMENT);
  195.     sleep(random(100, 200));
  196.     if (interfaces.get(387).isValid()) {
  197.         mouse.setSpeed(random(8, 11));
  198.         interfaces.get(387).getComponent(17).interact("Remove");  
  199.         sleep (random(400, 500));
  200.     }
  201.     if (inventory.contains(751)) {
  202.         hasBall = false;
  203.         inventory.getItem(751).interact("Drop");
  204.         sleep(random(400, 700));
  205.     }
  206.     else if (!inventory.contains(751)) {
  207.         log(Color.RED, "Please bank all items before running the script.");
  208.         stopScript();
  209.     }
  210. }
  211.  
  212. //Other
  213. @Override
  214. public void messageReceived(MessageEvent me) {
  215.     final String msg = me.getMessage();
  216.     if (msg.contains("cannot be taken into Daemonheim") && me.getID() == MessageEvent.MESSAGE_SERVER) {
  217.         hasBall = true;
  218.     }
  219. }
  220.  
  221. @Override
  222. public boolean onStart(){
  223.         log(Color.BLUE, "Welcome to Maze's GateStone maker.");
  224.     double currver = getCurrentVersion();
  225.     if(currver > scriptVersion) {
  226.         log(Color.GREEN,"GateStones has been updated!");
  227.         log("Your current version is " + scriptVersion + ". The latest version is " + currver);
  228.         log("You can download this update from:");
  229.         log(Color.MAGENTA, "http://www.powerbot.org/vb/showthread.php?t=800493");
  230.     }
  231.         Object[] options = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
  232.         mouseSpeed = (int)JOptionPane.showOptionDialog(null, "Choose the mouse speed for the script: \n" + "(1 being the fastest)", "GateStones",JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, 1);
  233.         startedScript = true;
  234.     startExp = -1;
  235.     startLvl = skills.getRealLevel(Skills.MAGIC);
  236.     startTime = System.currentTimeMillis();
  237.         startCamera();
  238.         return true;
  239. }
  240.  
  241. @Override
  242. public void onFinish(){
  243.         startedScript = false;
  244.     log("Thanks for using Maze's Gatestone maker.");
  245.         log("Ran for " + formatTime(runTime));
  246.     log("You gained "+ (gainedExp) +" experiance and "+ gainedLvls +" magic levels.");
  247.     env.saveScreenshot(true);
  248.         stopScript();
  249. }
  250.    
  251. private String formatTime(final long time) {
  252.     final int sec = (int) (time / 1000), h = sec / 3600, m = sec / 60 % 60, s = sec % 60;
  253.     return (h < 10 ? "0" + h : h) + ":" + (m < 10 ? "0" + m : m) + ":"
  254.             + (s < 10 ? "0" + s : s);
  255. }
  256.  
  257. public String insertCommas(double d) {
  258.         DecimalFormat df = new DecimalFormat();
  259.         DecimalFormatSymbols dfs = new DecimalFormatSymbols();
  260.         dfs.setGroupingSeparator(',');
  261.  
  262.         df.setDecimalFormatSymbols(dfs);
  263.         return ((String) df.format((int) d));
  264. }
  265.  
  266.  
  267. public double getCurrentVersion() {
  268.     try {
  269.         BufferedReader r = new BufferedReader(new InputStreamReader(new URL("http://scripters.powerbot.org/240751/ver.txt").openStream()));
  270.         double d = Double.parseDouble(r.readLine());
  271.         r.close();
  272.         return d;
  273.     } catch(Exception e) {
  274.         log("Error checking for latest version.");
  275.     }  
  276.     return scriptVersion;
  277. }
  278.  
  279. private Image getImage(String url) {
  280.     try {
  281.         return ImageIO.read(new URL(url));
  282.     } catch (IOException e) {
  283.         return null;
  284.     }
  285. }
  286.  
  287. //AntiBan
  288. public void startCamera() {
  289.     new Thread() {
  290.         @Override
  291.             public void run() {
  292.                 while (startedScript) {
  293.                     if (!isActive()){return;}
  294.                         if (game.isLoggedIn() && getMyPlayer().isOnScreen()) {
  295.                             switch (cameraAntiBan) {
  296.                                 case 3:
  297.                                     camera.moveRandomly(1000);;
  298.                                     break;
  299.                                 case 5:
  300.                                     camera.setPitch(random(10, 100));
  301.                                     break;
  302.                                 case 7:
  303.                                     camera.setAngle(random(0, 360));
  304.                                     break;
  305.                             }
  306.                         }
  307.                         try {
  308.                             Thread.sleep((random(100, 500)));
  309.                         } catch (Exception e) {
  310.                             log.severe("Error Waiting!");
  311.                         }
  312.                     }
  313.             }
  314.     }.start();
  315.  
  316. }
  317.  
  318. private void antiBan() {
  319.     int antiBan = random(1, 70);
  320.     cameraAntiBan = random(1, 30);
  321.     switch (antiBan) {
  322.         case 3:
  323.             mouse.setSpeed(mouseSpeed + random(3, 7));
  324.             mouse.moveSlightly();
  325.             sleep(random(50, 300));
  326.             break;
  327.         case 5:
  328.             if (random(1, 20) == 2) {
  329.                 mouse.setSpeed(mouseSpeed + random(3, 7));
  330.                 mouse.moveOffScreen();
  331.                 sleep(random(1000, 10000));
  332.             }
  333.             break;
  334.         case 10:
  335.             if (random(1, 20) == 2) {
  336.                 mouse.setSpeed(mouseSpeed + random(3, 7));
  337.                 game.openTab(Game.Tab.STATS);
  338.                 interfaces.get(320).getComponent(87).doHover();
  339.                 sleep(random(3000, 5000));
  340.             }
  341.             break;
  342.         default:
  343.             break;
  344.     }
  345. }
  346.  
  347. //LOOP____________________________________________________________
  348.  
  349. @Override
  350. public int loop() {
  351.     if (game.isLoggedIn() && getMyPlayer().isOnScreen() && isActive() && startedScript) {
  352.             if (startExp < 0) {
  353.                 startExp = skills.getCurrentExp(Skills.MAGIC);
  354.             }
  355. //Starting a party
  356.         if (game.getPlane() == 0 && outSide() && hasBall == false) {
  357.                    clickDoor();
  358.                    formParty();
  359.                    clickDoor();
  360.                    setDifficulty();
  361.                    setSize();
  362.                 } else if (game.getPlane() == 0 && outSide() && hasBall == true) {
  363.                     dropBall();
  364.                 }
  365.  
  366.                 if (!outSide() && game.getPlane() == 0) {
  367. //Making gatestones
  368.                     if (inventory.getCount(true, 16100) >= 3) makeStones();
  369. //Leaving Dungeon
  370.                     else if (inventory.getCount(true, 16100) <=2 && inventory.getCount(true, 16100) != -1 || inventory.getCount(true, 16100) == -1) leaveDung();
  371.                 }
  372.  
  373.         if (game.getPlane() == 1) {
  374.                     mouse.setSpeed(mouseSpeed + random(0, 6));
  375.                     clickStairs(); 
  376.         }
  377.                
  378.     }
  379.  
  380.     return random(10, 25);
  381.  
  382. }
  383.  
  384.  
  385.  
  386. //Paint____________________________________________________
  387.  
  388. @Override
  389. public void mouseClicked(MouseEvent e) {
  390.     if (e.getPoint().getX() >= 7 && e.getPoint().getX() <= 70 && e.getPoint().getY() >= 456 && e.getPoint().getY() <= 472) {
  391.         showPaint = !showPaint;
  392.     }
  393. }
  394.  
  395. @Override
  396. public void mousePressed(MouseEvent e) {
  397. }
  398. @Override
  399. public void mouseReleased(MouseEvent e) {
  400. }
  401. @Override
  402. public void mouseEntered(MouseEvent e) {
  403. }
  404. @Override
  405. public void mouseExited(MouseEvent e) {
  406. }
  407.  
  408. @Override
  409. public void onRepaint(Graphics g1) {
  410.     if(game.isLoggedIn() && isActive() && startedScript) {
  411.         final Graphics2D g2 = (Graphics2D) g1;
  412.         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  413.         RenderingHints.VALUE_ANTIALIAS_ON);
  414.         currentLevel = skills.getRealLevel(Skills.MAGIC);
  415.         gainedLvls = skills.getRealLevel(Skills.MAGIC) - startLvl;
  416.         gainedExp = skills.getCurrentExp(Skills.MAGIC) - startExp;
  417.         expLevel = skills.getExpToNextLevel(Skills.MAGIC);
  418.         ExpHour = (int) ((3600000.0 / (double) runTime) * gainedExp);
  419.         runTime = System.currentTimeMillis() - startTime;
  420.                 if(!showPaint) {
  421.                 g2.drawString("Show Paint", 10, 470);
  422.                 }
  423.                 if (showPaint) {
  424.                 g2.drawImage(gateStone, 5, 300, null);
  425.                 g2.setColor(Color.WHITE);
  426.                 g2.drawString("Hide Paint", 10, 470);
  427.                 g2.setFont(font);
  428.         g2.drawString(currentLevel + " (" + gainedLvls + ")", 445, 376);
  429.         g2.drawString("" + insertCommas(expLevel), 420, 400);
  430.                 if (gainedExp /1000 <= 0) {
  431.                     g2.drawString((gainedExp) + " (" + (ExpHour / 1000) + "K Xp/h)", 353, 425);
  432.                 } else if (gainedExp / 1000 >= 1 && gainedExp /1000000 < 1) {
  433.                     g2.drawString((gainedExp) / 1000 + "K " + " (" + (ExpHour / 1000) + "K Xp/h)", 353, 425);
  434.                 } else if (gainedExp / 1000000 >= 1) {
  435.                     g2.drawString((gainedExp) / 1000000 + "M" + " (" + (ExpHour / 1000) + "K Xp/h)", 353, 425);
  436.                 }
  437.                 if(ExpHour != 0 && gainedExp >= 2000){
  438.                     float timeTNLhour = 0;
  439.                     timeTNLhour = (float) expLevel/(float)ExpHour;
  440.                     float timeTNLmin = timeTNLhour*60;
  441.                     float timeTNLsec = timeTNLmin*60;  
  442.                     int estimatedHour = (int) (timeTNLsec/3600);
  443.                     float tempminutes = timeTNLsec%3600;
  444.                     int estimatedMinutes = (int) (tempminutes/60);
  445.                     int estimatedSeconds = (int) (tempminutes%60);
  446.                     if (estimatedMinutes < 10 && estimatedSeconds < 10) {
  447.                         g2.drawString(estimatedHour + ":0" + estimatedMinutes + ":0" + estimatedSeconds, 320, 454);  
  448.                     } else if (estimatedMinutes > 10 && estimatedSeconds < 10) {
  449.                         g2.drawString(estimatedHour + ":" + estimatedMinutes + ":0" + estimatedSeconds, 320, 454);  
  450.                     } else if (estimatedMinutes < 10 && estimatedSeconds > 10) {
  451.                         g2.drawString(estimatedHour + ":0" + estimatedMinutes + ":" + estimatedSeconds, 320, 454);  
  452.                     } else {
  453.                     g2.drawString(estimatedHour + ":" + estimatedMinutes + ":" + estimatedSeconds, 320, 454);
  454.                     }
  455.         } else if (ExpHour == 0 || gainedExp <= 5000) {
  456.                     g2.drawString("N/A", 320, 454);
  457.                 }
  458.             g2.drawString("Run Time: " + formatTime(runTime), 330, 335);
  459.                 }
  460.                
  461.     }
  462.                    
  463. }
  464.  
  465. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement