Advertisement
Leespiker

Spiker Warriors' Guild Defender-er v1.56

Sep 28th, 2013
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 45.50 KB | None | 0 0
  1. package scripts;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Graphics;
  7. import java.awt.Point;
  8. import java.awt.Polygon;
  9. import java.awt.Rectangle;
  10. import java.awt.Toolkit;
  11. import java.awt.event.KeyEvent;
  12. import java.awt.event.MouseEvent;
  13. import java.awt.image.BufferedImage;
  14. import java.io.IOException;
  15. import java.net.URL;
  16. import java.text.DecimalFormat;
  17.  
  18. import javax.imageio.ImageIO;
  19. import javax.swing.SwingUtilities;
  20.  
  21. import org.tribot.api.DynamicClicking;
  22. import org.tribot.api.General;
  23. import org.tribot.api.Timing;
  24. import org.tribot.api.input.Mouse;
  25. import org.tribot.api2007.Banking;
  26. import org.tribot.api2007.Camera;
  27. import org.tribot.api2007.ChooseOption;
  28. import org.tribot.api2007.Game;
  29. import org.tribot.api2007.GameTab;
  30. import org.tribot.api2007.GameTab.TABS;
  31. import org.tribot.api2007.GroundItems;
  32. import org.tribot.api2007.Inventory;
  33. import org.tribot.api2007.Login;
  34. import org.tribot.api2007.NPCChat;
  35. import org.tribot.api2007.NPCs;
  36. import org.tribot.api2007.Objects;
  37. import org.tribot.api2007.Player;
  38. import org.tribot.api2007.Skills;
  39. import org.tribot.api2007.Skills.SKILLS;
  40. import org.tribot.api2007.Walking;
  41. import org.tribot.api2007.WebWalking;
  42. import org.tribot.api2007.types.RSGroundItem;
  43. import org.tribot.api2007.types.RSItem;
  44. import org.tribot.api2007.types.RSNPC;
  45. import org.tribot.api2007.types.RSObject;
  46. import org.tribot.api2007.types.RSTile;
  47. import org.tribot.script.Script;
  48. import org.tribot.script.ScriptManifest;
  49. import org.tribot.script.interfaces.EventBlockingOverride;
  50. import org.tribot.script.interfaces.Painting;
  51.  
  52. @ScriptManifest(authors = { "Spiker" }, category = "Combat", name = "Warriors' Guild Defender-er", version = 1.56)
  53. public class WarriorsGuildDefenderer extends Script implements Painting,
  54.         EventBlockingOverride {
  55.  
  56.     private boolean below76 = false;
  57.     private boolean buryBigBones = false;
  58.     private boolean flashPrayer = false;
  59.     private boolean GUIisVisible = true;
  60.     private boolean hitSave = false;
  61.     private boolean lootBigBones = false;
  62.     private boolean needsToShowDefender = true;
  63.     private boolean showPaint = true;
  64.     private final BufferedImage paint = getImage("http://i.imgur.com/CB7ngFJ.png");
  65.     private final BufferedImage toggleGreen = getImage("http://i.imgur.com/K9Z4MRF.png");
  66.     private final BufferedImage toggleRed = getImage("http://i.imgur.com/1Vy5gln.png");
  67.     private final Dimension screenSize = Toolkit.getDefaultToolkit()
  68.             .getScreenSize();
  69.     private final double version = 1.56;
  70.     private final int screenH = screenSize.height;
  71.     private final int screenW = screenSize.width;
  72.     private final int[] CyclopsAreaX = { 2847, 2848, 2849, 2849, 2877, 2877,
  73.             2837, 2837, 2846 };
  74.     private final int[] CyclopsAreaY = { 3538, 3537, 3536, 3533, 3533, 3557,
  75.             3557, 3543, 3543 };
  76.     private final int[] defenderIDs = { 8844, 8845, 8846, 8847, 8848, 8849,
  77.             8850 };
  78.     private final int[] prayerPotionIDs = { 143, 141, 139, 2434 };
  79.     private final Polygon CyclopsArea = new Polygon(CyclopsAreaX, CyclopsAreaY,
  80.             CyclopsAreaX.length);
  81.     private final Rectangle toggleArea = new Rectangle(467, 348, 28, 29);
  82.     private final String[] defenderType = { "Bronze defender", "Iron defender",
  83.             "Steel defender", "Black defender", "Mithril defender",
  84.             "Adamant defender", "Rune defender" };
  85.     private int defenderCount = 0;
  86.     private int foodID = 0;
  87.     private int prayerPotionsToWithdraw = 0;
  88.     private int startingPrayerXP = 0;
  89.     private int startingXP = 0;
  90.     private int totalBigBones = 0;
  91.     private int withdrawAmount = 0;
  92.     private int whenToDrinkPrayerPotions = 0;
  93.     private int whenToEat = 0;
  94.     private long START_TIME = System.currentTimeMillis();
  95.     private String attackStyle = null;
  96.  
  97.     public void run() {
  98.         if (onStart()) {
  99.             setLoginBotState(false);
  100.             SwingUtilities.invokeLater(new Runnable() {
  101.                 public void run() {
  102.                     try {
  103.                         WarriorsGuildDefendererGUI GUI = new WarriorsGuildDefendererGUI();
  104.                         Dimension dim = GUI.getSize();
  105.                         GUI.setLocation((screenW / 2) - (dim.width / 2),
  106.                                 (screenH / 2) - (dim.height / 2));
  107.                         GUI.setVisible(true);
  108.                     } catch (Exception e) {
  109.                         e.printStackTrace();
  110.                     }
  111.                 }
  112.             });
  113.             while (GUIisVisible)
  114.                 sleep(500);
  115.             if (hitSave) {
  116.                 setup();
  117.                 while (true) {
  118.                     switch (getState()) {
  119.                     case LOOT_DEFENDER:
  120.                         lootDefender();
  121.                         break;
  122.                     case EATING:
  123.                         eat();
  124.                         break;
  125.                     case ATTACKING:
  126.                         attack();
  127.                         break;
  128.                     case GET_TO_BANK:
  129.                         getToBank();
  130.                         break;
  131.                     case GET_TO_CYCLOPS:
  132.                         getToRoom();
  133.                         break;
  134.                     case SHOWING_DEFENDER:
  135.                         useDefenderOnKamfreena();
  136.                         break;
  137.                     case BANKING:
  138.                         bank();
  139.                         break;
  140.                     case IN_COMBAT:
  141.                         inCombatLoop();
  142.                         break;
  143.                     case LOOTING:
  144.                         if (lootBigBones())
  145.                             buryBigBones();
  146.                         break;
  147.                     case CHECK:
  148.                         println("Spiker's Cool");
  149.                         break;
  150.                     }
  151.                 }
  152.             }
  153.         }
  154.     }
  155.  
  156.     private BufferedImage getImage(String url) {
  157.         try {
  158.             return ImageIO.read(new URL(url));
  159.         } catch (IOException e) {
  160.             return null;
  161.         }
  162.     }
  163.  
  164.     @Override
  165.     public void onPaint(Graphics g) {
  166.         if (!GUIisVisible && Login.getLoginState() == Login.STATE.INGAME) {
  167.             if (showPaint) {
  168.                 g.drawImage(paint, 9, 344, null);
  169.                 g.drawImage(toggleRed, 467, 348, null);
  170.                 long timeRan = System.currentTimeMillis() - START_TIME;
  171.                 g.setColor(new Color(255, 255, 255));
  172.                 g.setFont(new Font("default", Font.PLAIN, 11));
  173.                 printSimpleString(Timing.msToString(timeRan), 111, 351, 364, g);
  174.                 printSimpleString(getStateString(), 111, 351, 379, g);
  175.                 double multiplier = timeRan / 3600000D;
  176.                 double defendersPerHour = defenderCount / multiplier;
  177.                 DecimalFormat df = new DecimalFormat("#.###");
  178.                 printSimpleString(
  179.                         defenderCount + " (" + df.format(defendersPerHour)
  180.                                 + "/hr)", 111, 351, 395, g);
  181.                 DecimalFormat formatter = new DecimalFormat("#,###");
  182.                 if (attackStyle != null) {
  183.                     int xp = 0;
  184.                     switch (attackStyle) {
  185.                     case "Attack":
  186.                         xp = Skills.getXP(SKILLS.ATTACK);
  187.                         break;
  188.                     case "Strength":
  189.                         xp = Skills.getXP(SKILLS.STRENGTH);
  190.                         break;
  191.                     case "Defence":
  192.                         xp = Skills.getXP(SKILLS.DEFENCE);
  193.                         break;
  194.                     }
  195.                     int totalXP = xp - startingXP;
  196.                     int xpPerHour = (int) (totalXP / multiplier);
  197.                     printSimpleString(formatter.format(totalXP) + " ("
  198.                             + formatter.format(xpPerHour) + "/hr)", 111, 351,
  199.                             411, g);
  200.                 }
  201.                 int bigBonesPerHour = (int) (totalBigBones / multiplier);
  202.                 printSimpleString(formatter.format(totalBigBones) + " ("
  203.                         + bigBonesPerHour + "/hr)", 111, 351, 427, g);
  204.                 int totalPrayerXP = Skills.getXP(SKILLS.PRAYER)
  205.                         - startingPrayerXP;
  206.                 int prayerXPPerHour = (int) (totalPrayerXP / multiplier);
  207.                 printSimpleString(formatter.format(totalPrayerXP) + " ("
  208.                         + formatter.format(prayerXPPerHour) + "/hr)", 111, 351,
  209.                         444, g);
  210.             } else
  211.                 g.drawImage(toggleGreen, 467, 348, null);
  212.         }
  213.     }
  214.  
  215.     private void printSimpleString(String s, int width, int XPos, int YPos,
  216.             Graphics g) {
  217.         int stringLen = (int) g.getFontMetrics().getStringBounds(s, g)
  218.                 .getWidth();
  219.         int start = width / 2 - stringLen / 2;
  220.         g.drawString(s, start + XPos, YPos);
  221.     }
  222.  
  223.     @Override
  224.     public OVERRIDE_RETURN overrideKeyEvent(KeyEvent e) {
  225.         return OVERRIDE_RETURN.SEND;
  226.     }
  227.  
  228.     @Override
  229.     public OVERRIDE_RETURN overrideMouseEvent(MouseEvent e) {
  230.         try {
  231.             if (toggleArea.contains(e.getPoint())) {
  232.                 if (e.getID() == MouseEvent.MOUSE_CLICKED) {
  233.                     e.consume();
  234.                     if (!showPaint)
  235.                         showPaint = true;
  236.                     else
  237.                         showPaint = false;
  238.                     return OVERRIDE_RETURN.DISMISS;
  239.                 } else if (e.getID() == MouseEvent.MOUSE_PRESSED)
  240.                     return OVERRIDE_RETURN.DISMISS;
  241.             }
  242.             return OVERRIDE_RETURN.PROCESS;
  243.         } catch (Exception e2) {
  244.             return OVERRIDE_RETURN.DISMISS;
  245.         }
  246.     }
  247.  
  248.     private boolean onStart() {
  249.         println("Spiker's Warriors' Guild Defender-er v" + version
  250.                 + " has started.");
  251.         return true;
  252.     }
  253.  
  254.     private void setup() {
  255.         setLoginBotState(true);
  256.         startingPrayerXP = Skills.getXP(SKILLS.PRAYER);
  257.         if (Game.getSettingsArray()[43] == 0)
  258.             attackStyle = "Attack";
  259.         else if (Game.getSettingsArray()[43] == 1)
  260.             attackStyle = "Strength";
  261.         else if (Game.getSettingsArray()[43] == 2)
  262.             attackStyle = "Strength";
  263.         else if (Game.getSettingsArray()[43] == 3)
  264.             attackStyle = "Defence";
  265.         switch (attackStyle) {
  266.         case "Attack":
  267.             startingXP = Skills.getXP(SKILLS.ATTACK);
  268.             break;
  269.         case "Strength":
  270.             startingXP = Skills.getXP(SKILLS.STRENGTH);
  271.             break;
  272.         case "Defence":
  273.             startingXP = Skills.getXP(SKILLS.DEFENCE);
  274.             break;
  275.         }
  276.         Walking.control_click = true;
  277.         Walking.walking_timeout = 500;
  278.         if (Camera.getCameraAngle() < 40 || Camera.getCameraAngle() > 50)
  279.             Camera.setCameraAngle(General.random(40, 50));
  280.         if (Camera.getCameraRotation() < 282
  281.                 || Camera.getCameraRotation() > 287)
  282.             Camera.setCameraRotation(General.random(282, 287));
  283.         Mouse.setSpeed(General.random(155, 165));
  284.         setAutoRetaliate(true);
  285.         if (inCyclopsRoom() || Inventory.find(defenderIDs[6]) != null
  286.                 || Inventory.find(defenderIDs) == null)
  287.             needsToShowDefender = false;
  288.         below76 = Player.getRSPlayer().getCombatLevel() < 76;
  289.         if (Inventory.getCount(8851) < 100) {
  290.             println("You don't have enough tokens to get into the room. Stopping script.");
  291.             stopScript();
  292.         }
  293.         if (bestDefender() == null)
  294.             needsToShowDefender = false;
  295.         START_TIME = System.currentTimeMillis();
  296.     }
  297.  
  298.     private String getStateString() {
  299.         switch (getState()) {
  300.         case LOOT_DEFENDER:
  301.             return "Looting Defender";
  302.         case EATING:
  303.             return "Eating";
  304.         case ATTACKING:
  305.             return "Attacking";
  306.         case GET_TO_BANK:
  307.             return "To Bank";
  308.         case GET_TO_CYCLOPS:
  309.             return "To Cyclops";
  310.         case SHOWING_DEFENDER:
  311.             return "";
  312.         case BANKING:
  313.             return "Banking";
  314.         case IN_COMBAT:
  315.             return "In Combat";
  316.         case LOOTING:
  317.             return "Looting";
  318.         case CHECK:
  319.             return "Spiker's Cool";
  320.         default:
  321.             return "Spiker's Cool";
  322.         }
  323.     }
  324.  
  325.     private void inCombatLoop() {
  326.         if (Camera.getCameraAngle() < 90)
  327.             Camera.setCameraAngle(100);
  328.         if (flashPrayer)
  329.             flashPrayer();
  330.         if (inCombat())
  331.             ;
  332.         antiBan();
  333.         sleep(400, 500);
  334.     }
  335.  
  336.     private void antiBan() {
  337.         if (!flashPrayer) {
  338.             switch (General.random(1, 500)) {
  339.             case 25:
  340.                 openRandomTab();
  341.                 break;
  342.             case 50:
  343.                 checkStats();
  344.                 break;
  345.             default:
  346.                 sleep(400, 500);
  347.             }
  348.         }
  349.     }
  350.  
  351.     private void flashPrayer() {
  352.         if (flashPrayer) {
  353.             if (Skills.getActualLevel(SKILLS.PRAYER) >= 43) {
  354.                 if (Skills.getCurrentLevel(SKILLS.PRAYER) > 0) {
  355.                     openTabIfClosed(TABS.PRAYERS);
  356.                     Mouse.moveBox(666, 333, 685, 353);
  357.                     while (Player.getRSPlayer().getInteractingCharacter()
  358.                             .getAnimation() == -1)
  359.                         ;
  360.                     while (Player.getRSPlayer().getInteractingCharacter()
  361.                             .getAnimation() != -1)
  362.                         ;
  363.                     while (inCombat()) {
  364.                         if (needsToEat())
  365.                             break;
  366.                         sleep(350, 400);
  367.                         Mouse.clickBox(666, 333, 685, 353, 1);
  368.                         while (Player.getRSPlayer().getInteractingCharacter()
  369.                                 .getAnimation() == -1)
  370.                             ;
  371.                         sleep(200, 250);
  372.                         Mouse.clickBox(666, 333, 685, 353, 1);
  373.                         while (Player.getRSPlayer().getInteractingCharacter()
  374.                                 .getAnimation() != -1)
  375.                             ;
  376.                         if (Skills.getCurrentLevel(SKILLS.PRAYER) <= whenToDrinkPrayerPotions) {
  377.                             drinkPrayerPotion();
  378.                             break;
  379.                         }
  380.                     }
  381.                     openTabIfClosed(TABS.INVENTORY);
  382.                 }
  383.             }
  384.         }
  385.     }
  386.  
  387.     private boolean drinkPrayerPotion() {
  388.         if (flashPrayer) {
  389.             if (Skills.getCurrentLevel(SKILLS.PRAYER) <= whenToDrinkPrayerPotions) {
  390.                 openTabIfClosed(TABS.INVENTORY);
  391.                 RSItem[] prayerPots = Inventory.find(prayerPotionIDs);
  392.                 if (prayerPots != null && prayerPots.length > 0)
  393.                     if (prayerPots[0].click("Drink")) {
  394.                         sleep(1000, 1100);
  395.                         return true;
  396.                     }
  397.             }
  398.         }
  399.         return false;
  400.     }
  401.  
  402.     private void openRandomTab() {
  403.         println("Opening Random Tab.");
  404.         TABS[] tabs = { TABS.COMBAT, TABS.EQUIPMENT, TABS.FRIENDS,
  405.                 TABS.INVENTORY, TABS.MAGIC, TABS.PRAYERS, TABS.STATS };
  406.         int tabNum = General.random(0, 6);
  407.         openTabIfClosed(tabs[tabNum]);
  408.         sleep(2000, 2500);
  409.         openTabIfClosed(TABS.INVENTORY);
  410.         sleep(400, 500);
  411.     }
  412.  
  413.     private void checkStats() {
  414.         println("Checking Stats.");
  415.         openTabIfClosed(TABS.STATS);
  416.         if (attackStyle == "Attack")
  417.             Mouse.moveBox(547, 207, 610, 237);
  418.         else if (attackStyle == "Strength")
  419.             Mouse.moveBox(547, 237, 610, 267);
  420.         else if (attackStyle == "Defence")
  421.             Mouse.moveBox(547, 267, 610, 297);
  422.         sleep(2500, 3000);
  423.         openTabIfClosed(TABS.INVENTORY);
  424.         sleep(400, 500);
  425.     }
  426.  
  427.     private void setAutoRetaliate(boolean option) {
  428.         int[] settingsArray = Game.getSettingsArray();
  429.         if (settingsArray != null) {
  430.             if (settingsArray.length >= 172) {
  431.                 // auto retaliate is 0 for enabled, 1 for disabled
  432.                 if ((settingsArray[172] == 1) == option) {
  433.                     openTabIfClosed(TABS.COMBAT);
  434.                     Mouse.clickBox(604, 359, 716, 401, 1);
  435.                     sleep(400, 500);
  436.                 }
  437.             }
  438.         }
  439.     }
  440.  
  441.     private void openTabIfClosed(GameTab.TABS tab) {
  442.         long t = System.currentTimeMillis();
  443.         while (!GameTab.getOpen().equals(tab) && Timing.timeFromMark(t) <= 5000)
  444.             GameTab.open(tab);
  445.     }
  446.  
  447.     private void bank() {
  448.         if (Banking.isBankScreenOpen() || Banking.isPinScreenOpen()) {
  449.             if (Banking.isPinScreenOpen()) {
  450.                 sleep(300, 500);
  451.                 if (!Banking.inPin()) {
  452.                     sleep(3000, 3300);
  453.                     bank();
  454.                 }
  455.             }
  456.             sleep(300, 500);
  457.             int id = 0;
  458.             if (bestDefender() != null)
  459.                 id = bestDefender().getID();
  460.             Banking.depositAllExcept(id, 8851);
  461.             RSItem[] runeDefenders = Inventory.find(defenderIDs[6]);
  462.             if (runeDefenders != null && runeDefenders.length > 1)
  463.                 Banking.deposit(runeDefenders.length - 1, 8850);
  464.             if (Banking.find(foodID) != null && Banking.find(foodID).length > 0) {
  465.                 Banking.withdraw(withdrawAmount, foodID);
  466.                 sleep(1000, 1200);
  467.                 if (prayerPotionsToWithdraw > 0) {
  468.                     int count = 0;
  469.                     for (int i = 3; i > -1; i--) {
  470.                         RSItem[] pots = Banking.find(prayerPotionIDs[i]);
  471.                         if (pots != null && pots.length > 0) {
  472.                             if (pots[0].getStack() + count >= prayerPotionsToWithdraw) {
  473.                                 Banking.withdraw(prayerPotionsToWithdraw
  474.                                         - count, prayerPotionIDs[i]);
  475.                                 count = prayerPotionsToWithdraw;
  476.                                 break;
  477.                             } else {
  478.                                 Banking.withdraw(pots[0].getStack(),
  479.                                         prayerPotionIDs[i]);
  480.                                 count += pots[0].getStack();
  481.                             }
  482.                         }
  483.                     }
  484.                     if (count < prayerPotionsToWithdraw) {
  485.                         println("You have no more prayer potions in your bank.");
  486.                         prayerPotionsToWithdraw = 0;
  487.                     }
  488.                 }
  489.             } else {
  490.                 println("Out of food. Stopping script.");
  491.                 while (Banking.isBankScreenOpen())
  492.                     Banking.close();
  493.                 Login.logout();
  494.                 stopScript();
  495.             }
  496.         } else {
  497.             RSObject[] booth = Objects.findNearest(10, "Bank booth");
  498.             if (booth != null && booth.length > 0) {
  499.                 while (distance(Player.getPosition(), new RSTile(2844, 3543)) > 3) {
  500.                     WebWalking.walkTo(new RSTile(2844, 3543));
  501.                     sleep(1000, 1100);
  502.                 }
  503.                 waitUntilIdle();
  504.                 if (clickObject("Bank Bank booth", booth[0], 2, 2)) {
  505.                     long t = System.currentTimeMillis();
  506.                     while (!Banking.isBankScreenOpen()
  507.                             && !Banking.isPinScreenOpen()
  508.                             && Timing.timeFromMark(t) <= 5000)
  509.                         ;
  510.                     if (Timing.timeFromMark(t) <= 5000)
  511.                         bank();
  512.                 }
  513.             }
  514.         }
  515.     }
  516.  
  517.     private void getToRoom() {
  518.         if (Inventory.getCount(8851) < 100) {
  519.             println("You don't have enough tokens to get into the room. Stopping script.");
  520.             Login.logout();
  521.             stopScript();
  522.         }
  523.         while (Banking.isBankScreenOpen() || Banking.isPinScreenOpen())
  524.             Banking.close();
  525.         if (Player.getPosition().getPlane() == 0) {
  526.             RSObject[] stairs = Objects.find(15, "Staircase");
  527.             if (stairs != null && stairs.length > 0) {
  528.                 if (!stairs[0].isOnScreen()) {
  529.                     if (!stairs[0].isOnScreen()) {
  530.                         while (distance(Player.getPosition(), new RSTile(2841,
  531.                                 3538)) > 3) {
  532.                             WebWalking.walkTo(new RSTile(2841, 3538));
  533.                             sleep(1000, 1100);
  534.                         }
  535.                         waitUntilIdle();
  536.                     }
  537.                 }
  538.                 if (clickObject("Climb-up", stairs[0], 2, 2)) {
  539.                     long t = System.currentTimeMillis();
  540.                     while (Player.getPosition().getPlane() != 1
  541.                             && Timing.timeFromMark(t) <= 4000)
  542.                         ;
  543.                 }
  544.             }
  545.         } else if (Player.getPosition().getPlane() == 1) {
  546.             RSObject[] stairs = Objects.find(15, "Staircase");
  547.             if (stairs != null && stairs.length > 0) {
  548.                 if (clickObject("Climb-up", stairs[0], 2, 2)) {
  549.                     long t = System.currentTimeMillis();
  550.                     while (Player.getPosition().getPlane() != 2
  551.                             && Timing.timeFromMark(t) <= 3000)
  552.                         ;
  553.                 }
  554.             }
  555.         } else if (Player.getPosition().getPlane() == 2) {
  556.             if (Camera.getCameraAngle() < 40 || Camera.getCameraAngle() > 50)
  557.                 Camera.setCameraAngle(General.random(40, 50));
  558.             if (Camera.getCameraRotation() < 282
  559.                     || Camera.getCameraRotation() > 287)
  560.                 Camera.setCameraRotation(General.random(282, 287));
  561.             RSObject[] doors = Objects.findNearest(12, "Door");
  562.             if (doors != null && doors.length > 0) {
  563.                 if (clickObject("Open", doors[0], 2, 2)) {
  564.                     long t = System.currentTimeMillis();
  565.                     while (!inCyclopsRoom() && Timing.timeFromMark(t) <= 3000) {
  566.                         if (NPCChat.clickContinue(true))
  567.                             t = System.currentTimeMillis();
  568.                     }
  569.                 }
  570.             }
  571.         }
  572.     }
  573.  
  574.     private void getToBank() {
  575.         if (Player.getPosition().getPlane() == 0) {
  576.             while (distance(Player.getPosition(), new RSTile(2844, 3543)) > 3) {
  577.                 WebWalking.walkTo(new RSTile(2844, 3543));
  578.                 sleep(1000, 1100);
  579.             }
  580.             waitUntilIdle();
  581.         } else if (Player.getPosition().getPlane() == 1) {
  582.             RSObject[] stairs = Objects.find(10, "Staircase");
  583.             if (stairs != null && stairs.length > 0) {
  584.                 if (clickObject("Climb-down", stairs[0], 2, 2)) {
  585.                     long t = System.currentTimeMillis();
  586.                     while (Player.getPosition().getPlane() != 0
  587.                             && Timing.timeFromMark(t) <= 5000)
  588.                         ;
  589.                 }
  590.             }
  591.         } else if (Player.getPosition().getPlane() == 2) {
  592.             if (Camera.getCameraAngle() < 40 || Camera.getCameraAngle() > 50)
  593.                 Camera.setCameraAngle(General.random(40, 50));
  594.             if (Camera.getCameraRotation() < 282
  595.                     || Camera.getCameraRotation() > 287)
  596.                 Camera.setCameraRotation(General.random(282, 287));
  597.             if (inCyclopsRoom()) {
  598.                 RSObject[] doors = Objects.findNearest(20, "Door");
  599.                 if (doors != null && doors.length > 0) {
  600.                     if (!doors[0].isOnScreen()) {
  601.                         while (distance(Player.getPosition(), new RSTile(2847,
  602.                                 3541)) > 3) {
  603.                             WebWalking.walkTo(new RSTile(2847, 3541));
  604.                             sleep(1000, 1100);
  605.                         }
  606.                         while (Player.isMoving())
  607.                             ;
  608.                     }
  609.                     if (clickObject("Open", doors[0], 2, 2)) {
  610.                         long t = System.currentTimeMillis();
  611.                         while (inCyclopsRoom()
  612.                                 && Timing.timeFromMark(t) <= 5000)
  613.                             ;
  614.                     }
  615.                 } else {
  616.                     while (distance(Player.getPosition(),
  617.                             new RSTile(2847, 3541)) > 3) {
  618.                         WebWalking.walkTo(new RSTile(2847, 3541));
  619.                         sleep(1000, 1100);
  620.                     }
  621.                     while (Player.isMoving())
  622.                         ;
  623.                     getToBank();
  624.                 }
  625.             }
  626.             RSObject[] stairs = Objects.find(15, "Staircase");
  627.             if (stairs != null && stairs.length > 0) {
  628.                 if (!stairs[0].isOnScreen()) {
  629.                     while (distance(Player.getPosition(),
  630.                             new RSTile(2840, 3539)) > 3) {
  631.                         WebWalking.walkTo(new RSTile(2840, 3539));
  632.                         sleep(1000, 1100);
  633.                     }
  634.                     waitUntilIdle();
  635.                     if (!stairs[0].isOnScreen())
  636.                         getToBank();
  637.                 }
  638.                 if (clickObject("Climb-down", stairs[0], 2, 2)) {
  639.                     long t = System.currentTimeMillis();
  640.                     while (Player.getPosition().getPlane() != 1
  641.                             && Timing.timeFromMark(t) <= 5000)
  642.                         ;
  643.                 }
  644.             }
  645.         }
  646.     }
  647.  
  648.     private boolean clickObject(String action, RSObject objectToInteract,
  649.             int xOffSet, int yOffSet) {
  650.         Polygon model = objectToInteract.getModel().getEnclosedArea();
  651.         Point p = new Point((int) model.getBounds2D().getCenterX(), (int) model
  652.                 .getBounds2D().getCenterY());
  653.         Mouse.move(p);
  654.         sleep(30, 50);
  655.         if (Game.getUptext().startsWith(action)) {
  656.             Mouse.click(1);
  657.             return true;
  658.         }
  659.         try {
  660.             if (!ChooseOption.isOpen())
  661.                 Mouse.click(
  662.                         new Point(General.random(p.x - xOffSet, p.x + xOffSet),
  663.                                 General.random(p.y - yOffSet, p.y + yOffSet)),
  664.                         3);
  665.             if (ChooseOption.isOpen()) {
  666.                 if (ChooseOption.isOptionValid(action)) {
  667.                     if (ChooseOption.select(action))
  668.                         return true;
  669.                 } else {
  670.                     if (ChooseOption.isOpen()
  671.                             && !ChooseOption.isOptionValid(action)) {
  672.                         ChooseOption.close();
  673.                         return false;
  674.                     }
  675.                 }
  676.             }
  677.         } catch (ArrayIndexOutOfBoundsException e) {
  678.             e.printStackTrace();
  679.         }
  680.         return false;
  681.     }
  682.  
  683.     private boolean useDefenderOnKamfreena() {
  684.         if (Camera.getCameraAngle() < 40 || Camera.getCameraAngle() > 50)
  685.             Camera.setCameraAngle(General.random(40, 50));
  686.         if (Camera.getCameraRotation() < 282
  687.                 || Camera.getCameraRotation() > 287)
  688.             Camera.setCameraRotation(General.random(282, 287));
  689.         if (inCyclopsRoom()) {
  690.             while (distance(Player.getPosition(), new RSTile(2847, 3540)) > 3) {
  691.                 WebWalking.walkTo(new RSTile(2847, 3540));
  692.                 sleep(1000, 1100);
  693.             }
  694.             while (Player.isMoving())
  695.                 ;
  696.             RSObject[] doors = Objects.findNearest(12, "Door");
  697.             if (doors != null && doors.length > 0) {
  698.                 long t = System.currentTimeMillis();
  699.                 while (!clickObject("Open", doors[0], 2, 2)
  700.                         && Timing.timeFromMark(t) <= 5000)
  701.                     ;
  702.                 if (Timing.timeFromMark(t) > 5000)
  703.                     return false;
  704.                 t = System.currentTimeMillis();
  705.                 while (!inCyclopsRoom() && Timing.timeFromMark(t) <= 5000)
  706.                     ;
  707.                 if (inCyclopsRoom())
  708.                     return false;
  709.             } else
  710.                 useDefenderOnKamfreena();
  711.         }
  712.         RSNPC[] kamfreena = NPCs.find("Kamfreena");
  713.         if (kamfreena != null && kamfreena.length > 0 && bestDefender() != null) {
  714.             if (bestDefender().click("Use " + bestDefenderName())) {
  715.                 if (kamfreena[0].click("Use " + bestDefenderName()
  716.                         + " -> Kamfreena")) {
  717.                     sleep(2000, 2200);
  718.                     NPCChat.clickContinue(false);
  719.                     sleep(3000, 3300);
  720.                     NPCChat.clickContinue(false);
  721.                     sleep(2000, 2200);
  722.                     needsToShowDefender = false;
  723.                     return true;
  724.                 }
  725.             }
  726.         } else {
  727.             println("Can't find defender or Kamfreena. Stopping script.");
  728.             Login.logout();
  729.             stopScript();
  730.         }
  731.         return false;
  732.     }
  733.  
  734.     private boolean eat() {
  735.         if (needsToEat() || Inventory.isFull()) {
  736.             if (Banking.isBankScreenOpen())
  737.                 Banking.close();
  738.             openTabIfClosed(TABS.INVENTORY);
  739.             RSItem[] food = Inventory.find(foodID);
  740.             if (food != null && food.length > 0) {
  741.                 if (food[0].click("Eat")) {
  742.                     sleep(3000, 3300);
  743.                     return true;
  744.                 }
  745.             }
  746.         }
  747.         return false;
  748.     }
  749.  
  750.     private boolean hasFood() {
  751.         return Inventory.find(foodID) != null
  752.                 && Inventory.find(foodID).length > 0;
  753.     }
  754.  
  755.     private boolean lootBigBones() {
  756.         if (lootBigBones) {
  757.             openTabIfClosed(TABS.INVENTORY);
  758.             if (!Inventory.isFull() || (buryBigBones && buryBigBones())
  759.                     || eat()) {
  760.                 RSGroundItem[] bigBones = GroundItems.findNearest("Big bones");
  761.                 if (bigBones != null
  762.                         && bigBones.length > 0
  763.                         && CyclopsArea.contains(bigBones[0].getPosition()
  764.                                 .getX(), bigBones[0].getPosition().getY())
  765.                         && bigBones[0].isOnScreen() && inCyclopsRoom()) {
  766.                     long t = System.currentTimeMillis();
  767.                     while (!bigBones[0].click("Take Big bones")
  768.                             && Timing.timeFromMark(t) <= 4000)
  769.                         ;
  770.                     if (Timing.timeFromMark(t) <= 4000) {
  771.                         sleep(2000, 2200);
  772.                         totalBigBones++;
  773.                         return true;
  774.                     }
  775.                 }
  776.             }
  777.         }
  778.         return false;
  779.     }
  780.  
  781.     private boolean buryBigBones() {
  782.         if (buryBigBones) {
  783.             openTabIfClosed(TABS.INVENTORY);
  784.             RSItem[] bigBones = Inventory.find("Big bones");
  785.             if (bigBones != null && bigBones.length > 0) {
  786.                 boolean buried = false;
  787.                 for (RSItem bigBone : bigBones) {
  788.                     if (bigBone.click("Bury")) {
  789.                         buried = true;
  790.                         sleep(2000, 2200);
  791.                     }
  792.                 }
  793.                 if (buried)
  794.                     return true;
  795.             }
  796.         }
  797.         return false;
  798.     }
  799.  
  800.     private boolean nearbyBigBones() {
  801.         if (lootBigBones) {
  802.             RSGroundItem[] bigBones = GroundItems.findNearest("Big bones");
  803.             if (bigBones != null
  804.                     && bigBones.length > 0
  805.                     && CyclopsArea.contains(bigBones[0].getPosition().getX(),
  806.                             bigBones[0].getPosition().getY())
  807.                     && distance(Player.getPosition(), bigBones[0].getPosition()) < 3
  808.                     && inCyclopsRoom())
  809.                 return true;
  810.         }
  811.         return false;
  812.     }
  813.  
  814.     private boolean lootDefender() {
  815.         RSGroundItem[] defender = GroundItems.findNearest(defenderIDs);
  816.         if (defender != null && defender.length > 0) {
  817.             openTabIfClosed(TABS.INVENTORY);
  818.             if (Inventory.isFull()) {
  819.                 if (eat())
  820.                     ;
  821.                 else if (buryBigBones && buryBigBones())
  822.                     ;
  823.                 else if (dropOneFood())
  824.                     ;
  825.                 else if (dropOneBigBones())
  826.                     ;
  827.                 else
  828.                     lootDefender();
  829.             }
  830.             if (!defender[0].isOnScreen()) {
  831.                 while (distance(Player.getPosition(), defender[0].getPosition()) > 3) {
  832.                     WebWalking.walkTo(defender[0].getPosition());
  833.                     sleep(1000, 1100);
  834.                 }
  835.                 while (Player.isMoving())
  836.                     ;
  837.                 if (!defender[0].isOnScreen())
  838.                     lootDefender();
  839.             }
  840.             int defenderID = defender[0].getID();
  841.             RSTile defenderLocation = defender[0].getPosition();
  842.             long t = System.currentTimeMillis();
  843.             while (!defender[0].click("Take "
  844.                     + defenderType[indexOf(defenderIDs, defender[0].getID())])
  845.                     && Timing.timeFromMark(t) <= 5000)
  846.                 ;
  847.             if (Timing.timeFromMark(t) <= 5000) {
  848.                 t = System.currentTimeMillis();
  849.                 while (!Player.getPosition().equals(defenderLocation)
  850.                         && Timing.timeFromMark(t) <= 5000)
  851.                     ;
  852.                 if (Timing.timeFromMark(t) <= 5000) {
  853.                     if (defenderID != defenderIDs[6])
  854.                         needsToShowDefender = true;
  855.                     sleep(500, 600);
  856.                     println("We picked up a(n) "
  857.                             + defenderType[indexOf(defenderIDs,
  858.                                     defender[0].getID())] + ".");
  859.                     defenderCount++;
  860.                     return true;
  861.                 }
  862.             }
  863.         }
  864.         return false;
  865.     }
  866.  
  867.     private boolean dropOneFood() {
  868.         RSItem[] food = Inventory.find(foodID);
  869.         if (food != null && food.length > 0) {
  870.             long t = System.currentTimeMillis();
  871.             while (!food[0].click("Drop") && Timing.timeFromMark(t) <= 4000)
  872.                 ;
  873.             if (Timing.timeFromMark(t) <= 4000)
  874.                 return true;
  875.         }
  876.         return false;
  877.     }
  878.  
  879.     private boolean dropOneBigBones() {
  880.         RSItem[] bigBones = Inventory.find("Big bones");
  881.         if (bigBones != null && bigBones.length > 0) {
  882.             long t = System.currentTimeMillis();
  883.             while (!bigBones[0].click("Drop") && Timing.timeFromMark(t) <= 4000)
  884.                 ;
  885.             if (Timing.timeFromMark(t) <= 4000)
  886.                 return true;
  887.         }
  888.         return false;
  889.     }
  890.  
  891.     private boolean attack() {
  892.         if (Camera.getCameraAngle() < 90)
  893.             Camera.setCameraAngle(100);
  894.         RSNPC cyclops = cyclops();
  895.         if (cyclops != null) {
  896.             try {
  897.                 if (cyclops.isInCombat() && cyclops.getHealth() == 0) {
  898.                     sleep(1400, 1500);
  899.                     return false;
  900.                 }
  901.                 if (!cyclops.isOnScreen()) {
  902.                     while (distance(Player.getPosition(), cyclops.getPosition()) > 3) {
  903.                         WebWalking.walkTo(cyclops.getPosition());
  904.                         sleep(1000, 1100);
  905.                     }
  906.                     while (Player.isMoving())
  907.                         ;
  908.                     if (!cyclops.isOnScreen())
  909.                         attack();
  910.                 }
  911.                 if (below76) {
  912.                     if (DynamicClicking.clickRSNPC(cyclops, 3)) {
  913.                         if (ChooseOption.isOpen()) {
  914.                             if (ChooseOption.isOptionValid("Attack Cyclops")) {
  915.                                 if (ChooseOption.select("Attack Cyclops")) {
  916.                                     long t = System.currentTimeMillis();
  917.                                     while (!inCombat()
  918.                                             && Timing.timeFromMark(t) <= 4000)
  919.                                         ;
  920.                                     if (inCombat())
  921.                                         return true;
  922.                                 }
  923.                             }
  924.                         }
  925.                     }
  926.                 } else {
  927.                     if (DynamicClicking.clickRSNPC(cyclops, "Attack")) {
  928.                         long t = System.currentTimeMillis();
  929.                         while (!inCombat() && Timing.timeFromMark(t) <= 4000)
  930.                             ;
  931.                         if (inCombat())
  932.                             return true;
  933.                     }
  934.                 }
  935.             } catch (NullPointerException e) {
  936.                 e.printStackTrace();
  937.             }
  938.         }
  939.         return false;
  940.     }
  941.  
  942.     private RSNPC cyclops() {
  943.         RSNPC[] cyclops = NPCs.findNearest("Cyclops");
  944.         if (cyclops != null && cyclops.length > 0) {
  945.             for (int i = 0; i < cyclops.length; i++) {
  946.                 if (!npcIsInCombat(cyclops[i]))
  947.                     return cyclops[i];
  948.             }
  949.         }
  950.         return null;
  951.     }
  952.  
  953.     private boolean needsToEat() {
  954.         if (Skills.getCurrentLevel(SKILLS.HITPOINTS) <= whenToEat)
  955.             return true;
  956.         return false;
  957.     }
  958.  
  959.     private boolean inCyclopsRoom() {
  960.         if (CyclopsArea.contains(Player.getPosition().getX(), Player
  961.                 .getPosition().getY())
  962.                 && Player.getPosition().getPlane() == 2)
  963.             return true;
  964.         return false;
  965.     }
  966.  
  967.     private RSItem bestDefender() {
  968.         openTabIfClosed(TABS.INVENTORY);
  969.         for (int i = defenderIDs.length - 1; i > -1; i--) {
  970.             RSItem[] defenders = Inventory.find(defenderIDs[i]);
  971.             if (defenders != null && defenders.length > 0)
  972.                 return defenders[0];
  973.         }
  974.         return null;
  975.     }
  976.  
  977.     private boolean nearbyDefender() {
  978.         RSGroundItem[] defenders = GroundItems.findNearest(defenderIDs);
  979.         if (defenders != null && defenders.length > 0)
  980.             return true;
  981.         return false;
  982.     }
  983.  
  984.     private void waitUntilIdle() {
  985.         long t = System.currentTimeMillis();
  986.         while (Timing.timeFromMark(t) < General.random(1000, 1200)) {
  987.             if (Player.isMoving() || Player.getAnimation() != -1)
  988.                 t = System.currentTimeMillis();
  989.             sleep(10, 20);
  990.         }
  991.     }
  992.  
  993.     private String bestDefenderName() {
  994.         return defenderType[indexOf(defenderIDs, bestDefender().getID())];
  995.     }
  996.  
  997.     private boolean inCombat() {
  998.         try {
  999.             if (Player.getRSPlayer() != null
  1000.                     && Player.getRSPlayer().getInteractingCharacter() != null
  1001.                     && Player.getRSPlayer().getInteractingCharacter()
  1002.                             .getCombatCycle() > 0)
  1003.                 return true;
  1004.         } catch (NullPointerException e) {
  1005.         }
  1006.         return false;
  1007.     }
  1008.  
  1009.     private boolean npcIsInCombat(RSNPC npc) {
  1010.         try {
  1011.             if (npc != null
  1012.                     && !npc.getInteractingCharacter().equals(
  1013.                             Player.getRSPlayer())
  1014.                     && npc.getInteractingCharacter() != null
  1015.                     && npc.getInteractingCharacter().getCombatCycle() > 0
  1016.                     || npc.isInCombat())
  1017.                 return true;
  1018.         } catch (NullPointerException e) {
  1019.         }
  1020.         return false;
  1021.     }
  1022.  
  1023.     private int indexOf(int[] array, int num) {
  1024.         for (int i = 0; i < array.length; i++) {
  1025.             if (array[i] == num)
  1026.                 return i;
  1027.         }
  1028.         return -1;
  1029.     }
  1030.  
  1031.     private double distance(RSTile p1, RSTile p2) {
  1032.         return (double) Math.sqrt(Math.pow(p1.getX() - p2.getX(), 2)
  1033.                 + Math.pow(p1.getY() - p2.getY(), 2));
  1034.     }
  1035.  
  1036.     private enum State {
  1037.         LOOT_DEFENDER, EATING, ATTACKING, GET_TO_CYCLOPS, BANKING, SHOWING_DEFENDER, GET_TO_BANK, IN_COMBAT, LOOTING, CHECK
  1038.     }
  1039.  
  1040.     private State getState() {
  1041.         if (hasFood() || !needsToEat()) {
  1042.             if (needsToEat())
  1043.                 return State.EATING;
  1044.             else if (nearbyDefender())
  1045.                 return State.LOOT_DEFENDER;
  1046.             else if (nearbyBigBones() && inCyclopsRoom())
  1047.                 return State.LOOTING;
  1048.             else if (Player.getPosition().getPlane() == 2
  1049.                     && needsToShowDefender)
  1050.                 return State.SHOWING_DEFENDER;
  1051.             else if (inCombat())
  1052.                 return State.IN_COMBAT;
  1053.             else if (!inCombat() && inCyclopsRoom())
  1054.                 return State.ATTACKING;
  1055.             else if (!inCyclopsRoom())
  1056.                 return State.GET_TO_CYCLOPS;
  1057.         } else {
  1058.             RSObject[] booth = Objects.findNearest(10, "Bank booth");
  1059.             if (booth != null && booth.length > 0)
  1060.                 return State.BANKING;
  1061.             else
  1062.                 return State.GET_TO_BANK;
  1063.         }
  1064.         return State.CHECK;
  1065.     }
  1066.  
  1067.     class WarriorsGuildDefendererGUI extends javax.swing.JFrame {
  1068.  
  1069.         private static final long serialVersionUID = 1L;
  1070.  
  1071.         public WarriorsGuildDefendererGUI() {
  1072.             initComponents();
  1073.         }
  1074.  
  1075.         private void initComponents() {
  1076.  
  1077.             Title = new javax.swing.JLabel();
  1078.             FoodIDLabel = new javax.swing.JLabel();
  1079.             FoodID = new javax.swing.JTextField();
  1080.             WhenToEatLabel = new javax.swing.JLabel();
  1081.             WhenToEat = new javax.swing.JSlider();
  1082.             AmountOfFoodToWithdrawLabel = new javax.swing.JLabel();
  1083.             AmountOfFoodToWithdraw = new javax.swing.JSlider();
  1084.             WhenToDrinkPrayerPotionsLabel = new javax.swing.JLabel();
  1085.             WhenToDrinkPrayerPotions = new javax.swing.JSlider();
  1086.             AmountOfPrayerPotionsToWithdrawLabel = new javax.swing.JLabel();
  1087.             AmountOfPrayerPotionsToWithdraw = new javax.swing.JSlider();
  1088.             LootBigBones = new javax.swing.JCheckBox();
  1089.             BuryBigBones = new javax.swing.JCheckBox();
  1090.             FlashProtectFromMelee = new javax.swing.JCheckBox();
  1091.             LetsStart = new javax.swing.JButton();
  1092.  
  1093.             setAlwaysOnTop(true);
  1094.             setResizable(false);
  1095.  
  1096.             Title.setFont(new java.awt.Font("Bebas Neue", 0, 48));
  1097.             Title.setForeground(new java.awt.Color(51, 102, 0));
  1098.             Title.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  1099.             Title.setText("Warriors' Guild Defender-er");
  1100.  
  1101.             FoodIDLabel.setFont(new java.awt.Font("Tahoma", 0, 16));
  1102.             FoodIDLabel
  1103.                     .setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  1104.             FoodIDLabel.setText("Food ID");
  1105.  
  1106.             FoodID.setFont(new java.awt.Font("Tahoma", 0, 16));
  1107.             FoodID.setHorizontalAlignment(javax.swing.JTextField.CENTER);
  1108.             FoodID.addKeyListener(new java.awt.event.KeyAdapter() {
  1109.                 public void keyTyped(java.awt.event.KeyEvent evt) {
  1110.                     FoodIDKeyTyped(evt);
  1111.                 }
  1112.             });
  1113.  
  1114.             WhenToEatLabel.setFont(new java.awt.Font("Tahoma", 0, 16));
  1115.             WhenToEatLabel
  1116.                     .setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  1117.             WhenToEatLabel.setText("When to Eat");
  1118.  
  1119.             WhenToEat.setMajorTickSpacing(5);
  1120.             WhenToEat.setMinorTickSpacing(1);
  1121.             WhenToEat.setPaintLabels(true);
  1122.             WhenToEat.setPaintTicks(true);
  1123.             WhenToEat.setSnapToTicks(true);
  1124.  
  1125.             AmountOfFoodToWithdrawLabel.setFont(new java.awt.Font("Tahoma", 0,
  1126.                     16));
  1127.             AmountOfFoodToWithdrawLabel
  1128.                     .setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  1129.             AmountOfFoodToWithdrawLabel.setText("Amount of Food to Withdraw");
  1130.  
  1131.             AmountOfFoodToWithdraw.setMajorTickSpacing(1);
  1132.             AmountOfFoodToWithdraw.setMaximum(26);
  1133.             AmountOfFoodToWithdraw.setPaintLabels(true);
  1134.             AmountOfFoodToWithdraw.setPaintTicks(true);
  1135.             AmountOfFoodToWithdraw.setSnapToTicks(true);
  1136.             AmountOfFoodToWithdraw.setValue(13);
  1137.  
  1138.             WhenToDrinkPrayerPotionsLabel.setFont(new java.awt.Font("Tahoma",
  1139.                     0, 16));
  1140.             WhenToDrinkPrayerPotionsLabel
  1141.                     .setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  1142.             WhenToDrinkPrayerPotionsLabel
  1143.                     .setText("When to Drink Prayer Potions");
  1144.  
  1145.             WhenToDrinkPrayerPotions.setMajorTickSpacing(5);
  1146.             WhenToDrinkPrayerPotions.setMinorTickSpacing(1);
  1147.             WhenToDrinkPrayerPotions.setPaintLabels(true);
  1148.             WhenToDrinkPrayerPotions.setPaintTicks(true);
  1149.             WhenToDrinkPrayerPotions.setSnapToTicks(true);
  1150.  
  1151.             AmountOfPrayerPotionsToWithdrawLabel.setFont(new java.awt.Font(
  1152.                     "Tahoma", 0, 16));
  1153.             AmountOfPrayerPotionsToWithdrawLabel
  1154.                     .setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
  1155.             AmountOfPrayerPotionsToWithdrawLabel
  1156.                     .setText("Amount of Prayer Potions to Withdraw");
  1157.  
  1158.             AmountOfPrayerPotionsToWithdraw.setMajorTickSpacing(1);
  1159.             AmountOfPrayerPotionsToWithdraw.setMaximum(26);
  1160.             AmountOfPrayerPotionsToWithdraw.setPaintLabels(true);
  1161.             AmountOfPrayerPotionsToWithdraw.setPaintTicks(true);
  1162.             AmountOfPrayerPotionsToWithdraw.setSnapToTicks(true);
  1163.             AmountOfPrayerPotionsToWithdraw.setValue(13);
  1164.  
  1165.             LootBigBones.setFont(new java.awt.Font("Tahoma", 0, 16));
  1166.             LootBigBones.setText("Loot Big Bones?");
  1167.  
  1168.             BuryBigBones.setFont(new java.awt.Font("Tahoma", 0, 16));
  1169.             BuryBigBones.setText("Bury Big Bones?");
  1170.  
  1171.             FlashProtectFromMelee.setFont(new java.awt.Font("Tahoma", 0, 16));
  1172.             FlashProtectFromMelee.setText("Flash Protect from Melee?");
  1173.  
  1174.             LetsStart.setFont(new java.awt.Font("Tahoma", 1, 18));
  1175.             LetsStart.setText("Let's Start!");
  1176.             LetsStart.addActionListener(new java.awt.event.ActionListener() {
  1177.                 public void actionPerformed(java.awt.event.ActionEvent evt) {
  1178.                     LetsStartActionPerformed(evt);
  1179.                 }
  1180.             });
  1181.  
  1182.             javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
  1183.                     getContentPane());
  1184.             getContentPane().setLayout(layout);
  1185.             layout.setHorizontalGroup(layout
  1186.                     .createParallelGroup(
  1187.                             javax.swing.GroupLayout.Alignment.LEADING)
  1188.                     .addGroup(
  1189.                             layout.createSequentialGroup()
  1190.                                     .addContainerGap()
  1191.                                     .addGroup(
  1192.                                             layout.createParallelGroup(
  1193.                                                     javax.swing.GroupLayout.Alignment.LEADING)
  1194.                                                     .addComponent(
  1195.                                                             AmountOfPrayerPotionsToWithdrawLabel,
  1196.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1197.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1198.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1199.                                                             Short.MAX_VALUE)
  1200.                                                     .addComponent(
  1201.                                                             WhenToDrinkPrayerPotions,
  1202.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1203.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1204.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1205.                                                             Short.MAX_VALUE)
  1206.                                                     .addComponent(
  1207.                                                             WhenToDrinkPrayerPotionsLabel,
  1208.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1209.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1210.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1211.                                                             Short.MAX_VALUE)
  1212.                                                     .addComponent(
  1213.                                                             AmountOfFoodToWithdrawLabel,
  1214.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1215.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1216.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1217.                                                             Short.MAX_VALUE)
  1218.                                                     .addComponent(
  1219.                                                             Title,
  1220.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1221.                                                             486,
  1222.                                                             Short.MAX_VALUE)
  1223.                                                     .addComponent(
  1224.                                                             WhenToEatLabel,
  1225.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1226.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1227.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1228.                                                             Short.MAX_VALUE)
  1229.                                                     .addComponent(
  1230.                                                             FoodIDLabel,
  1231.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1232.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1233.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1234.                                                             Short.MAX_VALUE)
  1235.                                                     .addComponent(
  1236.                                                             WhenToEat,
  1237.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1238.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1239.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1240.                                                             Short.MAX_VALUE)
  1241.                                                     .addComponent(
  1242.                                                             AmountOfFoodToWithdraw,
  1243.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1244.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1245.                                                             Short.MAX_VALUE)
  1246.                                                     .addComponent(
  1247.                                                             AmountOfPrayerPotionsToWithdraw,
  1248.                                                             javax.swing.GroupLayout.Alignment.TRAILING,
  1249.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1250.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1251.                                                             Short.MAX_VALUE)
  1252.                                                     .addComponent(
  1253.                                                             FoodID,
  1254.                                                             javax.swing.GroupLayout.Alignment.TRAILING)
  1255.                                                     .addGroup(
  1256.                                                             layout.createSequentialGroup()
  1257.                                                                     .addGroup(
  1258.                                                                             layout.createParallelGroup(
  1259.                                                                                     javax.swing.GroupLayout.Alignment.LEADING)
  1260.                                                                                     .addGroup(
  1261.                                                                                             layout.createSequentialGroup()
  1262.                                                                                                     .addComponent(
  1263.                                                                                                             LootBigBones)
  1264.                                                                                                     .addPreferredGap(
  1265.                                                                                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1266.                                                                                                     .addComponent(
  1267.                                                                                                             BuryBigBones,
  1268.                                                                                                             javax.swing.GroupLayout.PREFERRED_SIZE,
  1269.                                                                                                             155,
  1270.                                                                                                             javax.swing.GroupLayout.PREFERRED_SIZE))
  1271.                                                                                     .addComponent(
  1272.                                                                                             FlashProtectFromMelee))
  1273.                                                                     .addPreferredGap(
  1274.                                                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1275.                                                                     .addComponent(
  1276.                                                                             LetsStart,
  1277.                                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1278.                                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1279.                                                                             Short.MAX_VALUE)))
  1280.                                     .addContainerGap()));
  1281.             layout.setVerticalGroup(layout
  1282.                     .createParallelGroup(
  1283.                             javax.swing.GroupLayout.Alignment.LEADING)
  1284.                     .addGroup(
  1285.                             layout.createSequentialGroup()
  1286.                                     .addContainerGap()
  1287.                                     .addComponent(Title)
  1288.                                     .addPreferredGap(
  1289.                                             javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1290.                                     .addComponent(FoodIDLabel)
  1291.                                     .addPreferredGap(
  1292.                                             javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1293.                                     .addComponent(
  1294.                                             FoodID,
  1295.                                             javax.swing.GroupLayout.PREFERRED_SIZE,
  1296.                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1297.                                             javax.swing.GroupLayout.PREFERRED_SIZE)
  1298.                                     .addPreferredGap(
  1299.                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1300.                                     .addComponent(WhenToEatLabel)
  1301.                                     .addPreferredGap(
  1302.                                             javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1303.                                     .addComponent(
  1304.                                             WhenToEat,
  1305.                                             javax.swing.GroupLayout.PREFERRED_SIZE,
  1306.                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1307.                                             javax.swing.GroupLayout.PREFERRED_SIZE)
  1308.                                     .addPreferredGap(
  1309.                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1310.                                     .addComponent(AmountOfFoodToWithdrawLabel)
  1311.                                     .addPreferredGap(
  1312.                                             javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1313.                                     .addComponent(
  1314.                                             AmountOfFoodToWithdraw,
  1315.                                             javax.swing.GroupLayout.PREFERRED_SIZE,
  1316.                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1317.                                             javax.swing.GroupLayout.PREFERRED_SIZE)
  1318.                                     .addPreferredGap(
  1319.                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1320.                                     .addComponent(WhenToDrinkPrayerPotionsLabel)
  1321.                                     .addPreferredGap(
  1322.                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1323.                                     .addComponent(
  1324.                                             WhenToDrinkPrayerPotions,
  1325.                                             javax.swing.GroupLayout.PREFERRED_SIZE,
  1326.                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1327.                                             javax.swing.GroupLayout.PREFERRED_SIZE)
  1328.                                     .addPreferredGap(
  1329.                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1330.                                     .addComponent(
  1331.                                             AmountOfPrayerPotionsToWithdrawLabel)
  1332.                                     .addPreferredGap(
  1333.                                             javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  1334.                                     .addComponent(
  1335.                                             AmountOfPrayerPotionsToWithdraw,
  1336.                                             javax.swing.GroupLayout.PREFERRED_SIZE,
  1337.                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1338.                                             javax.swing.GroupLayout.PREFERRED_SIZE)
  1339.                                     .addPreferredGap(
  1340.                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1341.                                     .addGroup(
  1342.                                             layout.createParallelGroup(
  1343.                                                     javax.swing.GroupLayout.Alignment.LEADING,
  1344.                                                     false)
  1345.                                                     .addGroup(
  1346.                                                             layout.createSequentialGroup()
  1347.                                                                     .addGroup(
  1348.                                                                             layout.createParallelGroup(
  1349.                                                                                     javax.swing.GroupLayout.Alignment.BASELINE)
  1350.                                                                                     .addComponent(
  1351.                                                                                             LootBigBones)
  1352.                                                                                     .addComponent(
  1353.                                                                                             BuryBigBones))
  1354.                                                                     .addPreferredGap(
  1355.                                                                             javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  1356.                                                                     .addComponent(
  1357.                                                                             FlashProtectFromMelee))
  1358.                                                     .addComponent(
  1359.                                                             LetsStart,
  1360.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1361.                                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1362.                                                             Short.MAX_VALUE))
  1363.                                     .addContainerGap(
  1364.                                             javax.swing.GroupLayout.DEFAULT_SIZE,
  1365.                                             Short.MAX_VALUE)));
  1366.             pack();
  1367.         }
  1368.  
  1369.         private void FoodIDKeyTyped(java.awt.event.KeyEvent evt) {
  1370.             char c = evt.getKeyChar();
  1371.             if (!(Character.isDigit(c) || c == KeyEvent.VK_BACK_SPACE || c == KeyEvent.VK_DELETE)) {
  1372.                 getToolkit().beep();
  1373.                 evt.consume();
  1374.             }
  1375.         }
  1376.  
  1377.         private void LetsStartActionPerformed(java.awt.event.ActionEvent evt) {
  1378.             if (this.FoodID.getText().length() < 1) {
  1379.                 println("Your Food ID cannot be empty.");
  1380.                 getToolkit().beep();
  1381.             } else if (this.WhenToEat.getValue() < 1
  1382.                     || this.WhenToEat.getValue() > 98) {
  1383.                 println("Your When to Eat value cannot be "
  1384.                         + this.WhenToEat.getValue() + ".");
  1385.                 getToolkit().beep();
  1386.             } else if (this.AmountOfFoodToWithdraw.getValue() < 1) {
  1387.                 println("Your Amount of Food to Withdraw cannot be 0.");
  1388.                 getToolkit().beep();
  1389.             } else if (this.AmountOfFoodToWithdraw.getValue()
  1390.                     + this.AmountOfPrayerPotionsToWithdraw.getValue() > 26) {
  1391.                 println("Your Amount of Food to Withdraw plus your Amount of Prayer Potions to Withdraw cannot be more than 26.");
  1392.                 getToolkit().beep();
  1393.             } else {
  1394.                 foodID = Integer.parseInt(this.FoodID.getText());
  1395.                 whenToEat = this.WhenToEat.getValue();
  1396.                 withdrawAmount = this.AmountOfFoodToWithdraw.getValue();
  1397.                 whenToDrinkPrayerPotions = this.WhenToDrinkPrayerPotions
  1398.                         .getValue();
  1399.                 prayerPotionsToWithdraw = this.AmountOfPrayerPotionsToWithdraw
  1400.                         .getValue();
  1401.                 lootBigBones = this.LootBigBones.isSelected();
  1402.                 buryBigBones = this.BuryBigBones.isSelected();
  1403.                 flashPrayer = this.FlashProtectFromMelee.isSelected();
  1404.                 hitSave = true;
  1405.                 setVisible(false);
  1406.                 GUIisVisible = false;
  1407.             }
  1408.         }
  1409.  
  1410.         private javax.swing.JSlider AmountOfFoodToWithdraw;
  1411.         private javax.swing.JLabel AmountOfFoodToWithdrawLabel;
  1412.         private javax.swing.JSlider AmountOfPrayerPotionsToWithdraw;
  1413.         private javax.swing.JLabel AmountOfPrayerPotionsToWithdrawLabel;
  1414.         private javax.swing.JCheckBox BuryBigBones;
  1415.         private javax.swing.JCheckBox FlashProtectFromMelee;
  1416.         private javax.swing.JTextField FoodID;
  1417.         private javax.swing.JLabel FoodIDLabel;
  1418.         private javax.swing.JButton LetsStart;
  1419.         private javax.swing.JCheckBox LootBigBones;
  1420.         private javax.swing.JLabel Title;
  1421.         private javax.swing.JSlider WhenToDrinkPrayerPotions;
  1422.         private javax.swing.JLabel WhenToDrinkPrayerPotionsLabel;
  1423.         private javax.swing.JSlider WhenToEat;
  1424.         private javax.swing.JLabel WhenToEatLabel;
  1425.     }
  1426. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement