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.Font;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.Rectangle;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.swing.DefaultComboBoxModel;
- import javax.swing.GroupLayout;
- import javax.swing.JButton;
- import javax.swing.JCheckBox;
- import javax.swing.JComboBox;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JTextField;
- import javax.swing.LayoutStyle;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.UnsupportedLookAndFeelException;
- 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.Walking;
- import org.powerbot.game.api.methods.Widgets;
- import org.powerbot.game.api.methods.input.Mouse;
- import org.powerbot.game.api.methods.interactive.NPCs;
- import org.powerbot.game.api.methods.interactive.Players;
- import org.powerbot.game.api.methods.node.Menu;
- import org.powerbot.game.api.methods.node.SceneEntities;
- import org.powerbot.game.api.methods.tab.Inventory;
- import org.powerbot.game.api.methods.tab.Skills;
- import org.powerbot.game.api.methods.widget.Camera;
- import org.powerbot.game.api.util.Filter;
- import org.powerbot.game.api.util.Random;
- import org.powerbot.game.api.util.Time;
- import org.powerbot.game.api.wrappers.Area;
- import org.powerbot.game.api.wrappers.Tile;
- import org.powerbot.game.api.wrappers.interactive.NPC;
- import org.powerbot.game.api.wrappers.node.Item;
- import org.powerbot.game.api.wrappers.node.SceneObject;
- import org.powerbot.game.api.wrappers.widget.Widget;
- import org.powerbot.game.api.wrappers.widget.WidgetChild;
- import org.powerbot.game.bot.event.MessageEvent;
- import org.powerbot.game.bot.event.listener.MessageListener;
- import org.powerbot.game.bot.event.listener.PaintListener;
- @Manifest(authors = { "Flow_HRS" }, name = "iTMasterPickpocket", description = "Start at the Ardougne master farmer!", version = 1.5)
- public class iTMasterPickpocket extends ActiveScript implements PaintListener,
- MessageListener {
- private long startTime, lastClick;
- private boolean isStunned, guiInitialized, antiBan, bankingSupport,
- dropNonHerbSeeds;
- private int eatAt = 60, selectedFood, startLevel, startExp, thiefs, fails;
- private final Area AREA_BANK = new Area(new Tile(2621, 3335, 0), new Tile(
- 2609, 3332, 0));
- private final Tile[] PATH_BANK = { new Tile(2636, 3357, 0),
- new Tile(2636, 3352, 0), new Tile(2637, 3345, 0),
- new Tile(2634, 3340, 0), new Tile(2633, 3335, 0),
- new Tile(2628, 3335, 0), new Tile(2624, 3337, 0),
- new Tile(2619, 3338, 0), new Tile(2618, 3334, 0) };
- private String status = "waiting for gui";
- @Override
- protected void setup() {
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- JFrame gui = new Settings();
- gui.setVisible(true);
- }
- });
- provide(new Pickpocket());
- provide(new Eat());
- provide(new Open());
- provide(new Walker());
- provide(new Drop());
- provide(new Banking());
- provide(new AntiBan());
- startTime = System.currentTimeMillis();
- startExp = Skills.getExperience(Skills.THIEVING);
- startLevel = Skills.getLevel(Skills.THIEVING);
- }
- private class AntiBan extends Strategy implements Task {
- @Override
- public boolean validate() {
- return antiBan;
- }
- @Override
- public void run() {
- if (Random.nextInt(1, 15) <= 2) {
- executeAntiBan();
- }
- Time.sleep(1000);
- }
- private final void executeAntiBan() {
- status = "antiban";
- Camera.setAngle(Random.nextInt(20, 300));
- }
- }
- private class Banking extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized
- && AREA_BANK.contains(Players.getLocal().getLocation())
- && !Widgets.get(762, 1).visible();
- }
- @Override
- public void run() {
- status = "banking";
- for (Item i : Inventory.getItems()) {
- while (!i.getWidgetChild().interact("Deposit-All")) {
- Time.sleep(Random.nextInt(80, 120));
- }
- }
- withdraw(selectedFood, "Withdraw-10");
- Time.sleep(Random.nextInt(350, 750));
- while (!Widgets.get(762, 45).interact("Close")) {
- Time.sleep(Random.nextInt(80, 120));
- }
- }
- public boolean withdraw(int item, String withdraw) {
- Widget bank = Widgets.get(762);
- WidgetChild items = bank.getChild(95);
- int baseX = items.getAbsoluteX(), baseY = items.getAbsoluteY();
- for (WidgetChild child : items.getChildren()) {
- if (child.getChildId() == item) {
- Mouse.click(
- child.getRelativeX() + baseX
- + (child.getWidth() / 2),
- child.getRelativeY() + baseY
- + (child.getHeight() / 2), false);
- return Menu.select(withdraw);
- }
- }
- return false;
- }
- }
- private class Drop extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized && Inventory.getCount() == 28
- && dropNonHerbSeeds;
- }
- @Override
- public void run() {
- status = "dropping";
- for (Item i : Inventory.getItems()) {
- if (!isHerb(i.getId()) && i.getId() != selectedFood) {
- Mouse.hop(i.getWidgetChild().getAbsoluteX(), i
- .getWidgetChild().getAbsoluteY());
- Mouse.click(false);
- while (!Menu.isOpen()) {
- Time.sleep(Random.nextInt(1, 12));
- }
- Menu.select("Drop");
- }
- }
- }
- }
- private class Walker extends Strategy implements Task {
- @Override
- public boolean validate() {
- return bankingSupport
- && guiInitialized
- && (Inventory.getCount(selectedFood) == 0 && eatAt > 0
- && needEatFood() && !AREA_BANK.contains(Players
- .getLocal().getLocation()))
- || (Inventory.getCount(selectedFood) != 0 && !getFarmer()
- .isOnScreen());
- }
- @Override
- public void run() {
- status = "walking";
- if (Inventory.getCount(selectedFood) != 0) {
- Walking.newTilePath(reverse(PATH_BANK)).traverse();
- } else {
- Walking.newTilePath(PATH_BANK).traverse();
- }
- }
- private final Tile[] reverse(Tile[] path) {
- for (int l = 0, r = path.length - 1; l < r; l++, r--) {
- Tile temp = path[l];
- path[l] = path[r];
- path[r] = temp;
- }
- return path;
- }
- }
- private class Open extends Strategy implements Task {
- @Override
- public boolean validate() {
- return guiInitialized
- && (getFarmer().getLocation().getX() <= 2634
- && Players.getLocal().getLocation().getX() >= 2635 && getDoor() != null)
- || (getFarmer().getLocation().getX() >= 2641
- && getFarmer().getLocation().getX() <= 2640 && getGate() != null);
- }
- @Override
- public void run() {
- status = "stuck";
- if (getFarmer().getLocation().getX() <= 2634
- && Players.getLocal().getLocation().getX() >= 2635
- && getDoor() != null) { // Fence
- while (!getDoor().interact("Open")) {
- Time.sleep(Random.nextInt(80, 120));
- }
- } else if (getFarmer().getLocation().getX() >= 2641
- && getFarmer().getLocation().getX() <= 2640
- && getGate() != null) { // Door
- while (!getGate().interact("Open")) {
- Time.sleep(Random.nextInt(80, 120));
- }
- }
- Time.sleep(Random.nextInt(350, 750));
- }
- }
- private class Eat extends Strategy implements Task {
- @Override
- public boolean validate() {
- return needEatFood() && guiInitialized;
- }
- @Override
- public void run() {
- status = "eating";
- if (eatAt == 0) {
- log.info("Disabled food eating & low hp, stopping.");
- stop();
- } else {
- if (Tabs.getCurrent() != Tabs.INVENTORY) {
- Tabs.INVENTORY.open();
- }
- while (!Inventory.getItem(selectedFood).getWidgetChild()
- .interact("Eat")) {
- Time.sleep(Random.nextInt(80, 120));
- }
- Time.sleep(Random.nextInt(300, 470));
- }
- }
- }
- private class Pickpocket extends Strategy implements Task {
- @Override
- public boolean validate() {
- return !Players.getLocal().isMoving()
- && System.currentTimeMillis() - lastClick > (isStunned ? Random
- .nextInt(6021, 6200) : Random.nextInt(600, 850))
- && guiInitialized;
- }
- @Override
- public void run() {
- status = "pickpocketing";
- while (!getFarmer().interact("Pickpocket")) {
- Time.sleep(Random.nextInt(80, 120));
- }
- Time.sleep(Random.nextInt(100, 120));
- lastClick = System.currentTimeMillis();
- }
- }
- private final AlphaComposite makeComposite(float alpha) {
- int type = AlphaComposite.SRC_OVER;
- return (AlphaComposite.getInstance(type, alpha));
- }
- private final String formatTime(final long milliseconds) {
- final long t_seconds = milliseconds / 1000;
- final long t_minutes = t_seconds / 60;
- final long t_hours = t_minutes / 60;
- final long seconds = t_seconds % 60;
- final long minutes = t_minutes % 60;
- final long hours = t_hours % 500;
- return hours + ":" + minutes + ":" + seconds;
- }
- @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.GREEN);
- 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.THIEVING] - startExp;
- int expHour = (int) ((expGained) * 3600000D / (System
- .currentTimeMillis() - startTime));
- int perHour = (int) ((thiefs) * 3600000D / (System.currentTimeMillis() - startTime));
- g2d.setFont(title);
- g2d.drawString("iTMasterPickpocket", 20, 50);
- g2d.setFont(author);
- g2d.drawString("By: Flow_HRS", 20, 65);
- g2d.setFont(info);
- g2d.drawString("Thieving level: " + Skills.getLevel(Skills.THIEVING)
- + "/" + startLevel + ".", 20, 85);
- g2d.drawString(
- "Thieving experience gained: "
- + (Skills.getExperience(Skills.THIEVING) - startExp)
- + ".", 20, 100);
- g2d.drawString("Thieving experience/hour: " + expHour + ".", 20, 115);
- g2d.drawString("Stolen: " + thiefs + " times. (" + perHour + "/hour)",
- 20, 130);
- g2d.drawString("Failed: " + fails + " times.", 20, 145);
- g2d.drawString("Status: " + status + ".", 20, 160);
- g2d.drawString("Time running: "
- + formatTime(System.currentTimeMillis() - startTime) + ".", 20,
- 175);
- }
- private NPC getFarmer() {
- return NPCs.getNearest(new Filter<NPC>() {
- @Override
- public boolean accept(NPC n) {
- return n.getId() == 2234;
- }
- });
- }
- private SceneObject getDoor() {
- return SceneEntities.getNearest(new Filter<SceneObject>() {
- @Override
- public boolean accept(SceneObject obj) {
- return obj.getId() == 34807;
- }
- });
- }
- private SceneObject getGate() {
- return SceneEntities.getNearest(new Filter<SceneObject>() {
- @Override
- public boolean accept(SceneObject obj) {
- return obj.getId() == 34780 || obj.getId() == 34779;
- }
- });
- }
- private final boolean needEatFood() {
- return Integer.parseInt(Widgets.get(748, 8).getText()) <= eatAt;
- }
- private final boolean isHerb(int item) {
- return (item >= 5291 && item <= 5304) && item != 5321;
- }
- private int getFoodForName(String name) {
- Object[][] data = { { 333, "Trout" }, { 329, "Salmon" },
- { 379, "Lobster" }, { 385, "Shark" }, { 15272, "Rocktail" },
- { 361, "Tuna" }, { 315, "Shrimps" }, { 319, "Anchovies" },
- { 13433, "Crayfish" }, { 347, "Herring" }, { 355, "Mackerel" },
- { 339, "Cod" }, { 351, "Pike" }, { 365, "Bass" },
- { 373, "Swordfish" }, { 7946, "Monkfish" },
- { 7060, "Tuna potato" }, { 391, "Manta ray" },
- { 397, "Sea turtle" } };
- for (int i = 0; i < data.length; i++) {
- if (data[i][1].equals(name)) {
- return (Integer) data[i][0];
- }
- }
- return -1;
- }
- public class Settings extends JFrame {
- private static final long serialVersionUID = 1L;
- public Settings() {
- initComponents();
- }
- private void initComponents() {
- try {
- for (UIManager.LookAndFeelInfo info : UIManager
- .getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- Logger.getLogger(Settings.class.getName()).log(Level.SEVERE,
- null, ex);
- } catch (InstantiationException ex) {
- Logger.getLogger(Settings.class.getName()).log(Level.SEVERE,
- null, ex);
- } catch (IllegalAccessException ex) {
- Logger.getLogger(Settings.class.getName()).log(Level.SEVERE,
- null, ex);
- } catch (UnsupportedLookAndFeelException ex) {
- Logger.getLogger(Settings.class.getName()).log(Level.SEVERE,
- null, ex);
- }
- jCheckBox3 = new JCheckBox();
- jLabel1 = new JLabel();
- jTextField1 = new JTextField();
- jLabel2 = new JLabel();
- jCheckBox1 = new JCheckBox();
- jButton1 = new JButton();
- jCheckBox2 = new JCheckBox();
- jLabel3 = new JLabel();
- jComboBox1 = new JComboBox();
- setTitle("MFPickpocketer - By Flow_HRS");
- jCheckBox3.setText("Drop non-herb seeds?");
- jLabel1.setText("Eat food at:");
- jTextField1.setText("60");
- jLabel2.setText("lifepoints (leavy empty to disable)");
- jCheckBox1.setText("Enable antiban?");
- jButton1.setText("Start script");
- jButton1.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent evt) {
- jButton1ActionPerformed(evt);
- }
- });
- jCheckBox2.setText("Bank support?");
- jLabel3.setText("Select food:");
- jComboBox1.setModel(new DefaultComboBoxModel(new String[] {
- "Trout", "Salmon", "Lobster", "Shark", "Rocktail", "Tuna",
- "Shrimps", "Anchovies", "Crayfish", "Herring", "Mackerel",
- "Cod", "Pike", "Bass", "Swordfish", "Monkfish",
- "Tuna potato", "Manta ray", "Sea turtle" }));
- GroupLayout layout = new GroupLayout(getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(layout
- .createParallelGroup(GroupLayout.Alignment.LEADING)
- .addGroup(
- layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(
- layout.createParallelGroup(
- GroupLayout.Alignment.LEADING)
- .addComponent(jCheckBox1)
- .addGroup(
- layout.createSequentialGroup()
- .addComponent(
- jLabel1)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(
- jTextField1,
- GroupLayout.PREFERRED_SIZE,
- 38,
- GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(
- jLabel2))
- .addComponent(jCheckBox2)
- .addComponent(jCheckBox3)
- .addComponent(jLabel3)
- .addComponent(
- jComboBox1,
- GroupLayout.PREFERRED_SIZE,
- 184,
- GroupLayout.PREFERRED_SIZE)
- .addComponent(
- jButton1,
- GroupLayout.PREFERRED_SIZE,
- 266,
- GroupLayout.PREFERRED_SIZE))
- .addContainerGap(GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE)));
- layout.setVerticalGroup(layout.createParallelGroup(
- GroupLayout.Alignment.LEADING).addGroup(
- layout.createSequentialGroup()
- .addGap(6, 6, 6)
- .addGroup(
- layout.createParallelGroup(
- GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel1)
- .addComponent(jTextField1,
- GroupLayout.PREFERRED_SIZE,
- GroupLayout.DEFAULT_SIZE,
- GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel2))
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jCheckBox3)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jCheckBox1)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jCheckBox2)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jLabel3)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jComboBox1,
- GroupLayout.PREFERRED_SIZE,
- GroupLayout.DEFAULT_SIZE,
- GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(
- LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jButton1)
- .addContainerGap(GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE)));
- pack();
- }// </editor-fold>
- private void jButton1ActionPerformed(ActionEvent evt) {
- eatAt = Integer.parseInt(jTextField1.getText());
- antiBan = jCheckBox1.isSelected();
- dropNonHerbSeeds = jCheckBox3.isSelected();
- selectedFood = getFoodForName(jComboBox1.getSelectedItem()
- .toString());
- bankingSupport = jCheckBox2.isSelected();
- guiInitialized = true;
- status = "gui done";
- this.dispose();
- }
- private JButton jButton1;
- private JCheckBox jCheckBox1;
- private JCheckBox jCheckBox2;
- private JCheckBox jCheckBox3;
- private JComboBox jComboBox1;
- private JLabel jLabel1;
- private JLabel jLabel2;
- private JLabel jLabel3;
- private JTextField jTextField1;
- }
- @Override
- public void messageReceived(MessageEvent arg0) {
- String msg = arg0.getMessage();
- if (msg.contains("fail to pick")) {
- isStunned = true;
- fails++;
- status = "stunned";
- } else if (msg.contains("You pick the master farmer")
- || msg.contains("you to steal")) {
- thiefs++;
- isStunned = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement