Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.AlphaComposite;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Rectangle;
- import java.awt.Toolkit;
- import org.powerbot.concurrent.Task;
- import org.powerbot.concurrent.strategy.Strategy;
- import org.powerbot.game.api.ActiveScript;
- import org.powerbot.game.api.Manifest;
- import org.powerbot.game.api.methods.Tabs;
- import org.powerbot.game.api.methods.Widgets;
- import org.powerbot.game.api.methods.input.Mouse;
- import org.powerbot.game.api.methods.tab.Inventory;
- import org.powerbot.game.api.methods.tab.Skills;
- import org.powerbot.game.api.methods.widget.Bank;
- import org.powerbot.game.api.util.Random;
- import org.powerbot.game.api.util.Time;
- import org.powerbot.game.api.wrappers.node.Item;
- import org.powerbot.game.bot.event.MessageEvent;
- import org.powerbot.game.bot.event.listener.MessageListener;
- import org.powerbot.game.bot.event.listener.PaintListener;
- import javax.swing.JFrame;
- import javax.swing.JSlider;
- import javax.swing.SwingUtilities;
- import javax.swing.UnsupportedLookAndFeelException;
- @Manifest(authors = { "Flow", "BeeStar" }, name = "iTHerbCleaner", description = "Cleans your grimy herbs.", version = 1.4)
- public class iTHerbCleaner extends ActiveScript implements MessageListener,
- PaintListener {
- private int selectedHerb = 0, cleans = 0, sleep = 200, startXp, startLevel;
- private boolean guiInitialized;
- private long startTime;
- private String status;
- boolean done;
- @Override
- protected void setup() {
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- JFrame gui = new GUI();
- gui.setVisible(true);
- }
- });
- provide(new Clean());
- provide(new Banking());
- provide(new CloseBank());
- provide(new OpenBank());
- startXp = Skills.getExperience(Skills.HERBLORE);
- startLevel = Skills.getLevel(Skills.HERBLORE);
- startTime = System.currentTimeMillis();
- }
- private int getHerbForName(String herb) {
- Object[][] data = { { 199, "Guam" }, { 201, "Marrentil" },
- { 203, "Tarromin" }, { 205, "Harralander" }, { 207, "Ranarr" },
- { 209, "Irit" }, { 211, "Avantoe" }, { 213, "Kwuarm" },
- { 215, "Cadantine" }, { 2485, "Lantadyme" },
- { 217, "Dwarf Weed" }, { 221, "Torstol" },
- { 3049, "Toadflax" }, { 12174, "Spirit Weed" },
- { 14836, "Wergali" }, { 3051, "Snapdragon" },
- { 21626, "Fellstalk" } };
- for (int i = 0; i < data.length; i++) {
- if (data[i][1].equals(herb)) {
- return (Integer) data[i][0];
- }
- }
- return -1;
- }
- private AlphaComposite makeComposite(float alpha) {
- int type = AlphaComposite.SRC_OVER;
- return (AlphaComposite.getInstance(type, alpha));
- }
- @Override
- public void onRepaint(Graphics g) {
- Graphics2D g2d = (Graphics2D) g;
- Font title = new Font("Monotype Corsiva", Font.PLAIN, 25);
- Font author = new Font("Monotype Corsiva", Font.PLAIN, 16);
- Font info = new Font("Book Antiqua", Font.PLAIN, 15);
- Rectangle bg = new Rectangle(10, 23, 250, 155);
- Rectangle border = new Rectangle(8, 21, 254, 159);
- g2d.setColor(Color.RED);
- g2d.setComposite(makeComposite(0.5f));
- g2d.fill(bg);
- g2d.setColor(Color.BLACK);
- g2d.fill(border);
- g2d.setComposite(makeComposite(1.0f));
- g2d.setColor(Color.WHITE);
- g2d.fill(new Rectangle(Mouse.getX() + 1, Mouse.getY() - 4, 2, 15));
- g2d.fill(new Rectangle(Mouse.getX() - 6, Mouse.getY() + 2, 16, 2));
- int expGained = Skills.getExperiences()[Skills.HERBLORE] - startXp;
- int expHour = (int) ((expGained) * 3600000D / (System
- .currentTimeMillis() - startTime));
- int madeHour = (int) ((cleans) * 3600000D / (System.currentTimeMillis() - startTime));
- g2d.setFont(title);
- g2d.drawString("iTHerbCleaner", 20, 50);
- g2d.setFont(author);
- g2d.drawString("By: Flow_HRS", 20, 65);
- g2d.setFont(info);
- g2d.drawString("Herblore level: " + Skills.getLevels()[Skills.HERBLORE]
- + "/" + startLevel + ".", 20, 85);
- g2d.drawString("Herblore experience gained: " + expGained + ".", 20,
- 100);
- g2d.drawString("Herblore experience/hour: " + expHour + ".", 20, 115);
- g2d.drawString("Successfully cleaned " + cleans + " herbs.", 20, 130);
- g2d.drawString("Cleaning " + madeHour + " herbs per hour.", 20, 145);
- g2d.drawString("Status: " + status + ".", 20, 160);
- g2d.drawString(
- "Time running: "
- + Time.format(System.currentTimeMillis() - startTime)
- + ".", 20, 175);
- }
- @Override
- public void messageReceived(MessageEvent arg0) {
- String msg = arg0.getMessage();
- if (msg.contains("clean the dirt")) {
- cleans++;
- }
- }
- private class Clean extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized && Inventory.getCount(selectedHerb) > 0
- && !Bank.isOpen();
- }
- @Override
- public void run() {
- status = "cleaning";
- int count = Inventory.getCount(selectedHerb);
- int[] path = { 0, 4, 8, 12, 16, 20, 24, 25, 21, 17, 13, 9, 1, 5, 2,
- 6, 10, 14, 18, 22, 26, 27, 23, 19, 15, 11, 7, 3 };
- for (int slot = 0; slot < path.length; slot++) {
- Item item = Inventory.getItemAt(path[slot]);
- if (item.getId() == selectedHerb) {
- Mouse.hop(
- item.getWidgetChild().getAbsoluteX()
- + Random.nextInt(0, 12),
- item.getWidgetChild().getAbsoluteY()
- + Random.nextInt(0, 12));
- Mouse.click(true);
- count--;
- Time.sleep(count == 0 ? 200 : sleep);
- }
- done = true;
- }
- }
- }
- private class CloseBank extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized && Bank.isOpen() && done == false;
- }
- @Override
- public void run() {
- while (!Bank.close()) {
- Time.sleep(Random.nextInt(80, 120));
- }
- if (Inventory.getCount(selectedHerb) == 0) {
- stop();
- }
- }
- }
- private class OpenBank extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized && done == true && !Bank.isOpen();
- }
- @Override
- public void run() {
- if (Tabs.getCurrent() != Tabs.INVENTORY) {
- Tabs.INVENTORY.open();
- }
- while (!Bank.open()) {
- Time.sleep(Random.nextInt(80, 120));
- }
- }
- }
- private class Banking extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized && done == true
- && Widgets.get(762, 1).validate();
- }
- @Override
- public void run() {
- if (Inventory.getCount() != 0) {
- while (!Bank.depositInventory()) {
- Time.sleep(Random.nextInt(80, 120));
- }
- }
- Bank.withdraw(selectedHerb, 0);
- done = false;
- Time.sleep(Random.nextInt(30, 110));
- }
- }
- public class GUI extends javax.swing.JFrame {
- private static final long serialVersionUID = 1L;
- public GUI() {
- initComponents();
- }
- private void initComponents() {
- Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
- int w = getSize().width;
- int h = getSize().height;
- int x = (dim.width - w) / 2;
- int y = (dim.height - h) / 2;
- setLocation(x, y);
- try {
- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
- .getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info
- .getClassName());
- break;
- }
- }
- } catch (UnsupportedLookAndFeelException e) {
- } catch (ClassNotFoundException e) {
- } catch (InstantiationException e) {
- } catch (IllegalAccessException e) {
- }
- jLabel1 = new javax.swing.JLabel();
- jComboBox1 = new javax.swing.JComboBox();
- jLabel2 = new javax.swing.JLabel();
- jSlider1 = new javax.swing.JSlider();
- jLabel3 = new javax.swing.JLabel();
- jButton1 = new javax.swing.JButton();
- jLabel4 = new javax.swing.JLabel();
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setTitle("CleanHerb V1.3");
- jLabel1.setText("Select herb:");
- jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(
- new String[] { "Guam", "Marrentil", "Tarromin",
- "Harralander", "Ranarr", "Toadflax", "Spirit Weed",
- "Irit", "Wergali", "Avantoe", "Kwuarm",
- "Snapdragon", "Cadantine", "Lantadyme",
- "Dwarf Weed", "Torstol", "Fellstalk" }));
- jLabel2.setText("Select sleep time:");
- jSlider1.setMinimum(20);
- jSlider1.setMaximum(1000);
- jSlider1.setToolTipText("");
- jSlider1.setValue(200);
- jSlider1.addChangeListener(new javax.swing.event.ChangeListener() {
- public void stateChanged(javax.swing.event.ChangeEvent evt) {
- jSlider1StateChanged(evt);
- }
- });
- jLabel3.setText("Start " + "@ SW/CW/Duel Arena/Lumb Underground");
- jButton1.setText("Start!");
- jButton1.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButton1ActionPerformed(evt);
- }
- });
- jLabel4.setText("200 (ms)");
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
- getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(layout
- .createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(
- layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(
- javax.swing.GroupLayout.Alignment.TRAILING,
- layout.createSequentialGroup()
- .addGap(0,
- 0,
- Short.MAX_VALUE)
- .addComponent(
- jComboBox1,
- javax.swing.GroupLayout.PREFERRED_SIZE,
- 125,
- javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(83,
- 83,
- 83))
- .addGroup(
- layout.createSequentialGroup()
- .addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.TRAILING,
- false)
- .addComponent(
- jButton1,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE)
- .addComponent(
- jLabel1,
- javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(
- javax.swing.GroupLayout.Alignment.LEADING,
- layout.createSequentialGroup()
- .addComponent(
- jLabel2)
- .addGap(18,
- 18,
- 18)
- .addComponent(
- jLabel4))
- .addComponent(
- jSlider1,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE))
- .addGroup(
- layout.createSequentialGroup()
- .addGap(40,
- 40,
- 40)
- .addComponent(
- jLabel3)))
- .addContainerGap()))));
- layout.setVerticalGroup(layout
- .createParallelGroup(
- javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(
- layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(jLabel1)
- .addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(
- jComboBox1,
- javax.swing.GroupLayout.PREFERRED_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(
- layout.createParallelGroup(
- javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel2)
- .addComponent(jLabel4))
- .addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(
- jSlider1,
- javax.swing.GroupLayout.PREFERRED_SIZE,
- javax.swing.GroupLayout.DEFAULT_SIZE,
- javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jLabel3)
- .addPreferredGap(
- javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jButton1)
- .addContainerGap(
- javax.swing.GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE)));
- pack();
- }
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
- guiInitialized = true;
- selectedHerb = getHerbForName(jComboBox1.getSelectedItem()
- .toString());
- this.setVisible(false);
- this.dispose();
- }
- private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {
- JSlider source = (JSlider) evt.getSource();
- sleep = source.getValue();
- jLabel4.setText(Integer.toString(sleep) + " (ms)");
- }
- private javax.swing.JButton jButton1;
- private javax.swing.JComboBox jComboBox1;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JLabel jLabel4;
- private javax.swing.JSlider jSlider1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement