Scripts for RSBot made by Famous
 
HomePortalMemberlistUsergroupsRegisterLog in
New scripts being created everyday! Go to GameKiller.net!

Share | 
 

 Ash Collector

Go down 
AuthorMessage
Famous
Administrator
Administrator
Famous

Posts : 50
Join date : 2009-10-23
Age : 24
Location : Chicago

PostSubject: Ash Collector   Fri Jun 18, 2010 11:46 am

This can be found here:
http://www.rsbot.org/vb/showthread.php?t=308160

This is the new version for the API:

Code:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.util.Map;

import org.rsbot.event.events.ServerMessageEvent;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.event.listeners.ServerMessageListener;
import org.rsbot.script.script;
import org.rsbot.script.scriptManifest;
import org.rsbot.script.methods.Bank;
import org.rsbot.script.wrappers.RSGroundItem;
import org.rsbot.script.wrappers.RSNPC;
import org.rsbot.script.wrappers.RSObject;
import org.rsbot.script.wrappers.RSTile;

@scriptManifest(authors = { "Famous" }, category = "Other", name = "Ash Collector", version = 1.0, description = "<html><head></head><body>Collects and banks ashes in the Grand Exchange.</body></html\n")
public class AshCollector extends script implements PaintListener,
        ServerMessageListener {

    String status = "";
    int ash = 592, gp = 995, mouseSpeed;

    ashCAntiBan antiban;
    Thread t;

    final scriptManifest properties = getClass().getAnnotation(
            scriptManifest.class);

    public int getMouseSpeed() {
        return mouseSpeed;
    }

    public boolean onStart(Map<String, String> args) {
        status = "Starting up";
        antiban = new ashCAntiBan();
        t = new Thread(antiban);
        mouseSpeed = (random(7, 9));
        return true;
    }

    private boolean bank() {
        if (interfaces.get(Bank.INTERFACE_BANK).isValid()) {
            if (inventory.contains(ash)) {
                bank.deposit(ash, 0);
                sleep(random(1000, 1900));
            }
            if (inventory.contains(gp)) {
                bank.deposit(gp, 0);
            }
            if (!inventory.contains(ash)) {
                bank.close();
            }
        } else {
            openBank();
        }
        return false;
    }

    private RSTile nearestBank() {
        final RSObject Booth = objects.getNearest(Bank.BANK_BOOTHS);
        RSNPC BankerNPC = npcs.getNearest(Bank.BANKERS);
        RSObject BankChest = objects.getNearest(Bank.BANK_CHESTS);
        int minDist = 30;
        if (BankChest != null) {
            minDist = calc.distanceTo(BankChest);
        }
        if (BankerNPC != null && calc.distanceTo(BankerNPC) < minDist) {
            minDist = calc.distanceTo(BankerNPC);
            BankChest = null;
        }
        if (Booth != null && calc.distanceTo(Booth) < minDist) {
            BankerNPC = null;
        }
        if (BankerNPC != null) {
            return BankerNPC.getLocation();
        }
        if (BankChest != null) {
            return BankChest.getLocation();
        }
        if (Booth != null) {
            return Booth.getLocation();
        }
        return null;
    }

    private RSTile checkTile(final RSTile tile) {
        if (calc.distanceTo(tile) < 17) {
            return tile;
        }
        final RSTile loc = getMyPlayer().getLocation();
        final RSTile walk = new RSTile((loc.getX() + tile.getX()) / 2, (loc
                .getY() + tile.getY()) / 2);
        return calc.distanceTo(walk) < 17 ? walk : checkTile(walk);
    }

    private boolean openBank() {
        final RSTile bankLoc = nearestBank();
        if (bankLoc == null) {
            walking.walkTo(bankLoc);
        }
        if (!calc.tileOnScreen(bankLoc)) {
            camera.turnToTile(bankLoc, 15);
        }
        final RSObject booth = objects.getNearest(Bank.BANK_BOOTHS);
        if (calc.distanceTo(new RSTile(3183, 3434)) > 40) {
            return bank.open();
        } else if (booth == null) {
            return false;
        } else if (calc.tileOnScreen(booth.getLocation())) {
            return booth.doAction("Use-quickly");
        } else {
            walking.walkTo(checkTile(booth.getLocation()));
        }
        return false;
    }

    public boolean itemPresent(final int itemID) {
        RSGroundItem item = groundItems.getNearest(itemID);
        if (item != null) {
            return true;
        } else {
            return false;
        }
    }

    public void pickupItem(final int itemID, final String action) {
        if (!getMyPlayer().isInCombat()
                && getMyPlayer().getInteracting() == null) {
            RSGroundItem item = groundItems.getNearest(itemID);
            if (item != null) {
                RSTile itemtile = item.getLocation();
                if (!calc.tileOnScreen(itemtile)) {
                    camera.turnToTile(itemtile, 5);
                    if (!calc.tileOnScreen(itemtile)) {
                        walking.walkTileOnScreen(walking.randomizeTile(
                                itemtile, 1, 1));
                        mouse.moveSlightly();
                        sleep(random(800, 1200));
                    }
                } else {
                    tiles.doAction(itemtile, action);
                    mouse.moveSlightly();
                    if (item != null) {
                        while (getMyPlayer().isMoving()) {
                            sleep(random(20, 30));
                        }
                    }
                }
            }
        }
    }

    private boolean setRun(final int min) {
        if (walking.isRunEnabled() == false) {
            if (min <= walking.getEnergy()) {
                walking.setRun(true);
            }
        }
        return true;
    }

    private enum State {
        PICKUP, BANK, WAIT
    }

    private State getState() {
        try {
            if (inventory.isFull()) {
                if (inventory.contains(ash)) {
                    return State.BANK;
                }
            }
            if (itemPresent(ash)) {
                if (!inventory.isFull()) {
                    return State.PICKUP;
                }
            }
        } catch (final Exception e) {
            e.printStackTrace();
        }
        return State.WAIT;
    }

    public int loop() {
        if (!t.isAlive()) {
            t.start();
            log("AntiBan Started!");
        }
        try {
            switch (getState()) {
            case PICKUP:
                status = "Gathering ashes";
                if (itemPresent(ash)) {
                    setRun(random(40, 81));
                    pickupItem(ash, "Take");
                }
                if (!itemPresent(ash)) {
                    status = "Waiting for new ashes";
                }
                break;
            case BANK:
                status = "Banking";
                bank();
            case WAIT:
                break;
            }
        } catch (final Exception e) {
            e.printStackTrace();
        }
        return 1000;
    }

    public void serverMessageRecieved(final ServerMessageEvent arg0) {
    }

    public void onRepaint(Graphics g) {
        // ///////////////Paint Mouse////////////////
        Point m = mouse.getClientLocation();
        g.setColor(new Color(0, 0, 255, 180));
        g.drawRoundRect(m.x - 6, m.y, 15, 3, 5, 5);
        g.drawRoundRect(m.x, m.y - 6, 3, 15, 5, 5);
        g.setColor(new Color(0, 0, 255, 180));
        g.fillRoundRect(m.x - 6, m.y, 15, 3, 5, 5);
        g.fillRoundRect(m.x, m.y - 6, 3, 15, 5, 5);
        // //////////////////////////////////////////
        // ///Status Bar////
        g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 13));
        g.setColor(Color.BLACK);
        g.drawRoundRect(330 - 15, 336 - 15, 200, 15, 10, 10);
        g.setColor(new Color(0, 0, 0, 90));
        g.fillRoundRect(330 - 15, 336 - 15, 200, 15, 10, 10);
        g.setColor(Color.WHITE);
        g.drawString(status, 330, 336 - 3);
        g.drawString("Status: ", 270, 336 - 3);
        // ///////////////////
    }

    public void onFinish() {
        antiban.stopThread = true;
    }

    private class ashCAntiBan implements Runnable {
        public boolean stopThread;

        public void run() {
            while (!stopThread) {
                try {
                    if (random(0, 15) == 0) {
                        final char[] LR = new char[] { KeyEvent.VK_LEFT,
                                KeyEvent.VK_RIGHT };
                        final char[] UD = new char[] { KeyEvent.VK_DOWN,
                                KeyEvent.VK_UP };
                        final char[] LRUD = new char[] { KeyEvent.VK_LEFT,
                                KeyEvent.VK_RIGHT, KeyEvent.VK_UP,
                                KeyEvent.VK_UP };
                        final int random2 = random(0, 2);
                        final int random1 = random(0, 2);
                        final int random4 = random(0, 4);

                        if (random(0, 3) == 0) {
                            mouse.moveSlightly();
                            keyboard.pressKey(LR[random1]);
                            Thread.sleep(random(100, 400));
                            keyboard.pressKey(UD[random2]);
                            Thread.sleep(random(300, 600));
                            keyboard.releaseKey(UD[random2]);
                            Thread.sleep(random(100, 400));
                            keyboard.releaseKey(LR[random1]);

                            if (random(0, 10) == 0) {
                                game.openTab(random(1, 14));
                                Thread.sleep(random(700, 3000));
                            }
                        } else {
                            keyboard.pressKey(LRUD[random4]);
                            if (random4 > 1) {
                                Thread.sleep(random(300, 600));
                            } else {
                                Thread.sleep(random(500, 900));
                            }
                            keyboard.releaseKey(LRUD[random4]);
                        }
                    } else {
                        Thread.sleep(random(200, 2000));
                    }
                } catch (final Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

_________________
Search & Win
^^^^^^^^^^^^^^^^^^^^^^^
Sign up now!
Back to top Go down
http://famousscripts.forumotion.com
 
Ash Collector
Back to top 
Page 1 of 1
 Similar topics
-
» DCUC Matty collector exclusives
» Mattel's new Collector Website and online Store
» Collector Shops Melbourne
» The Gem Of A Friend Collector\'s Item
» DaBigfella's Collection Update Saturday 20th June 2011 page 6

Permissions in this forum:You cannot reply to topics in this forum
Famous Scripts :: Scripts :: Other-
Jump to: