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

Share
 

 Bones Collector

Go down 
AuthorMessage
Famous
Administrator
Administrator
Famous

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

Bones Collector Empty
PostSubject: Bones Collector   Bones Collector EmptySun Jun 13, 2010 8:22 pm

This script will walk around collecting the bone of your choice. If you
would like banking to be added in the next version, post some locations
you would like to see.

Current Features:
Nice looking paint
Auto-updates
Collects & buries ALL types of bones
Eats food
Walks to bones if not on screen

Features in next version:
Some banking(maybe) [Need locations if so][/size]
Multiple bone collecting support
Auto shutdown after selected period of time
Avoid combat

Save as: BonesCollector.java

Code:
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

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.Game;
import org.rsbot.script.methods.Skills;
import org.rsbot.script.wrappers.RSGroundItem;
import org.rsbot.script.wrappers.RSPlayer;
import org.rsbot.script.wrappers.RSTile;

@scriptManifest(authors = { "Famous" }, category = "Other", name = "Bones Collector", version = 1.1, description = ""
        + ""
        + "[/url][url=http://pastie.org/1002233.txt]"
        + "[b][size=21][color=green]"
        + "Bones Collector"
        + " Version 1.1"
        + "[/color][/size][/b]"
        + "

"
        + "[i][size=16][color=black]Collects and buries bones with other various options.[/color][/size][/i]"
        + "

"
        + "[b][size=16][color=black]Which bone would you like to bury?[/color][/size][/b]"
        + "

"
        + "        Normal Bones"        + "Babydragon Bones"        + "Bat Bones"        + "Big Bones"        + "Burnt Bones"        + "Dagannoth Bones"        + "Dragon Bones"        + "Fayrg Bones"        + "Jogre Bones"        + "Monkey Bones"        + "Ourg Bones"        + "Raurg Bones"        + "Shaikahan Bones"        + "Wolf Bones"        + "Wvyern Bones"        + "Zogre Bones"        + ""        /*        * +        * "Would you like to use Bones To Peaches?"        * + "" + "No" + "Yes"        * + ""        */        + "Would you like to use food?"        + ""        + "        No"        + "Yes" + "" + "")public class BonesCollector extends script implements PaintListener,        ServerMessageListener {    private enum State {        WALKAROUND, EAT, PICKUP, BURY, WAIT, B2P    }    String status = "", boneN = "";    boolean boneName, B2P, eatFood, buryB, useFood, useB2P;    final int[] PBONES = { 526, 532, 530, 528, 3183, 2859 };    int buried = 0, mouseSpeed, HP, levelsGained = 0, BoneID, BPTAB = 8015;    public double version = getClass().getAnnotation(scriptManifest.class)            .version();    // AntiBan    BonesCollectorAntiBan antiban;    Thread t;    RSTile[] toDoor = { new RSTile(3184, 3436), new RSTile(3177, 3429),            new RSTile(3172, 3440), new RSTile(3166, 3452),            new RSTile(3155, 3459), new RSTile(3148, 3454),            new RSTile(3136, 3458), new RSTile(3127, 3456),            new RSTile(3115, 3449) };    RSTile ladderTile = new RSTile(3115, 9852);    // Food ID's    final int[] FOODID = { 1895, 1893, 1891, 4293, 2142, 291, 2140, 3228, 9980,            7223, 6297, 6293, 6295, 6299, 7521, 9988, 7228, 2878, 7568, 2343,            1861, 13433, 315, 325, 319, 3144, 347, 355, 333, 339, 351, 329,            3381, 361, 10136, 5003, 379, 365, 373, 7946, 385, 397, 391, 3369,            3371, 3373, 2309, 2325, 2333, 2327, 2331, 2323, 2335, 7178, 7180,            7188, 7190, 7198, 7200, 7208, 7210, 7218, 7220, 2003, 2011, 2289,            2291, 2293, 2295, 2297, 2299, 2301, 2303, 1891, 1893, 1895, 1897,            1899, 1901, 7072, 7062, 7078, 7064, 7084, 7082, 7066, 7068, 1942,            6701, 6703, 7054, 6705, 7056, 7060, 2130, 1985, 1993, 1989, 1978,            5763, 5765, 1913, 5747, 1905, 5739, 1909, 5743, 1907, 1911, 5745,            2955, 5749, 5751, 5753, 5755, 5757, 5759, 5761, 2084, 2034, 2048,            2036, 2217, 2213, 2205, 2209, 2054, 2040, 2080, 2277, 2225, 2255,            2221, 2253, 2219, 2281, 2227, 2223, 2191, 2233, 2092, 2032, 2074,            2030, 2281, 2235, 2064, 2028, 2187, 2185, 2229, 6883, 1971, 4608,            1883, 1885, 15272 };    // Paint Variables    public int PRAYER_STAT = Skills.getIndex("Prayer");    long startTime = System.currentTimeMillis(), runTime;    int startLVL = skills.getCurrentLevel(Skills.PRAYER);    int nextLVL = skills.getExpToNextLevel(Skills.PRAYER), expGained,            startExp = 0, expPerHour;    final scriptManifest properties = getClass().getAnnotation(            scriptManifest.class);    public int getMouseSpeed() {        return mouseSpeed;    }    public boolean onStart(Map args) {        antiban = new BonesCollectorAntiBan();        t = new Thread(antiban);        log("Bones Collector Started!");        status = "Starting Up";        mouseSpeed = (random(8, 9));        buried = 0;        expGained = 0;        startExp = 0;        levelsGained = 0;        final String BC = args.get("boneName");        final String BC3 = args.get("eatFood");        if (BC3.equals("Yes")) {            useFood = true;        }        if (BC.equals("Normal Bones")) {            BoneID = 526;            boneN = "Normal Bones";        }        if (BC.equals("Wolf Bones")) {            BoneID = 2859;            boneN = "Wolf Bones";        }        if (BC.equals("Burnt Bones")) {            BoneID = 528;            boneN = "Burnt Bones";        }        if (BC.equals("Monkey Bones")) {            BoneID = 3183;            boneN = "Monkey Bones";        }        if (BC.equals("Bat Bones")) {            BoneID = 530;            boneN = "Bat Bones";        }        if (BC.equals("Big Bones")) {            BoneID = 532;            boneN = "Big Bones";        }        if (BC.equals("Jogre Bones")) {            BoneID = 3125;            boneN = "Jogre Bones";        }        if (BC.equals("Zogre Bones")) {            BoneID = 4812;            boneN = "Zogre Bones";        }        if (BC.equals("Shaikahan Bones")) {            BoneID = 3123;            boneN = "Shaikahan Bones";        }        if (BC.equals("Babydragon Bones")) {            BoneID = 534;            boneN = "Babydragon Bones";        }        if (BC.equals("Wvyern Bones")) {            BoneID = 6812;            boneN = "Wvyern Bones";        }        if (BC.equals("Dragon Bones")) {            BoneID = 536;            boneN = "Dragon Bones";        }        if (BC.equals("Fayrg Bones")) {            BoneID = 4830;            boneN = "Fayrg Bones";        }        if (BC.equals("Raurg Bones")) {            BoneID = 4832;            boneN = "Raurg Bones";        }        if (BC.equals("Dagannoth Bones")) {            BoneID = 6729;            boneN = "Dagannoth Bones";        }        if (BC.equals("Ourg Bones")) {            BoneID = 4834;            boneN = "Ourg Bones";        }        // Credits to Enfilade        URLConnection url = null;        BufferedReader in = null;        BufferedWriter out = null;        if (JOptionPane                .showConfirmDialog(                        null,                        "Would you like to check for updates?\nThis requires an internet connection and will write files to your hard drive.") == 0) {            try {                url = new URL(                        "http://famousscripts.webs.com/scripts/BCVERSION.txt")                        .openConnection();                in = new BufferedReader(new InputStreamReader(url                        .getInputStream()));                if (Double.parseDouble(in.readLine()) > version) {                    if (JOptionPane                            .showConfirmDialog(null,                                    "There is a new update available. Would you like to download?") == 0) {                        JOptionPane                                .showMessageDialog(null,                                        "Please choose 'BonesCollector.java' in your scripts folder and hit 'Open'");                        JFileChooser fc = new JFileChooser();                        if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {                            url = new URL(                                    "http://famousscripts.webs.com/scripts/BonesCollector.java")                                    .openConnection();                            in = new BufferedReader(new InputStreamReader(url                                    .getInputStream()));                            out = new BufferedWriter(new FileWriter(fc                                    .getSelectedFile().getPath()));                            String inp;                            while ((inp = in.readLine()) != null) {                                out.write(inp);                                out.newLine();                                out.flush();                            }                            log("script successfully downloaded. Please recompile and reload the script.");                            return false;                        } else                            log("Update canceled");                    } else                        log("Update canceled");                } else                    JOptionPane.showMessageDialog(null,                            "You have the latest version.");                if (in != null)                    in.close();                if (out != null)                    out.close();            } catch (IOException e) {                log("Could not retrieve version.");                return false;            }        }        return true;    }    public boolean menuContains(String item) {        try {            for (String s : menu.getItems()) {                if (s.toLowerCase().contains(item.toLowerCase()))                    return true;            }        } catch (Exception e) {            return menuContains(item);        }        return false;    }    public boolean gettingAttacked() {        return getMyPlayer().isInCombat();    }    public boolean atInventoryItem(int i, String s) {        if (game.getCurrentTab() != Game.TAB_INVENTORY) {            game.openTab(Game.TAB_INVENTORY);        }        return inventory.getItem(i).doAction(s);    }    public int waitForAnim(int timeout) {        long start = System.currentTimeMillis();        RSPlayer myPlayer = getMyPlayer();        int anim = -1;        while (System.currentTimeMillis() - start < timeout) {            if ((anim = myPlayer.getAnimation()) != -1) {                break;            }            sleep(15);        }        return anim;    }    public boolean atInventoryItems(String s, int... ids) {        if (game.getCurrentTab() != Game.TAB_INVENTORY) {            game.openTab(Game.TAB_INVENTORY);        }        return inventory.getItem(ids).doAction(s);    }    public void eatFood() {        if (game.getCurrentTab() != Game.TAB_INVENTORY) {            game.openTab(Game.TAB_INVENTORY);            sleep(random(400, 600));        }        atInventoryItems("Eat", FOODID);        if (waitForAnim(829) != -1) {            while (getMyPlayer().getAnimation() != -1) {                sleep(random(300, 600));            }        }    }    public boolean itemPresent(final int itemID) {        RSGroundItem item = groundItems.getNearest(itemID);        if (item != null) {            return true;        } else {            return false;        }    }    final double getHP() {        if (interfaces.getComponent(748, 8).isValid()) {            if (interfaces.getComponent(748, 8).getText() != null) {                HP = Integer                        .parseInt(interfaces.getComponent(748, 8).getText());            } else {                log("Null error. Attempting to fix.");            }        } else {            log("Null error. Attempting to fix.");        }        return HP;    }    public boolean needToEat() {        int RealHP = skills.getRealLevel(Skills.CONSTITUTION) * 10;        if (getHP() <= random(RealHP / 2, RealHP / 1.5)) {            if (inventory.getCount(FOODID) != 0) {                return true;            }        }        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 State getState() {        try {            if (inventory.isFull()) {                if (inventory.contains(BoneID)) {                    return State.BURY;                }            }            if (useFood) {                if (needToEat()) {                    return State.EAT;                }            }            if (itemPresent(BoneID)) {                if (!inventory.isFull()) {                    return State.PICKUP;                }            }            /*            * if (useB2P) { if (isInventoryFull()) { if            * (getInventoryCount(BPTAB) != 0) { return State.B2P; } } }            */        } catch (final Exception e) {            e.printStackTrace();        }        return State.WAIT;    }    public int loop() {        if (!t.isAlive()) {            t.start();            log("AntiBan Started!");        }        try {            switch (getState()) {            case EAT:                status = "Eating Food";                eatFood();                break;            case PICKUP:                status = "Gathering Bones";                if (itemPresent(BoneID)) {                    setRun(random(40, 81));                    pickupItem(BoneID, "Take");                }                if (!itemPresent(BoneID)) {                    status = "Waiting for new bones";                }                break;            case BURY:                status = "Burying Bones";                while (inventory.contains(BoneID)) {                    if (atInventoryItem(BoneID, "Bury")) {                        mouse.moveRandomly(random(0, 20));                        if (waitForAnim(random(800, 1200)) != -1) {                            while (getMyPlayer().getAnimation() != -1) {                                wait(random(50, 100));                            }                        }                    }                }                break;            case B2P:                status = "Bones To Peaches";                if (inventory.getCount(FOODID) == 0                        && inventory.getCount(PBONES) != 0) {                    if (game.getCurrentTab() != Game.TAB_INVENTORY) {                        game.openTab(Game.TAB_INVENTORY);                        wait(random(300, 500));                    }                    atInventoryItem(BPTAB, "Break");                    if (waitForAnim(1500) != -1) {                        while (getMyPlayer().getAnimation() != -1) {                            wait(random(1250, 1500));                        }                    }                    log("Bones To Peaches Started!");                }                break;            case WAIT:                break;            }        } catch (final Exception e) {            e.printStackTrace();        }        return random(200, 400);    }    public boolean clickSkill(final String skill) {        int cskill = 0;        if (skill.equals("attack")) {            cskill = 1;        } else if (skill.equals("defense")) {            cskill = 21;        } else if (skill.equals("strength")) {            cskill = 4;        } else if (skill.equals("hitpoints")) {            cskill = 2;        } else if (skill.equals("range")) {            cskill = 45;        } else if (skill.equals("prayer")) {            cskill = 69;        } else if (skill.equals("magic")) {            cskill = 86;        } else if (skill.equals("cooking")) {            cskill = 61;        } else if (skill.equals("woodcutting")) {            cskill = 102;        } else if (skill.equals("fletching")) {            cskill = 94;        } else if (skill.equals("fishing")) {            cskill = 37;        } else if (skill.equals("firemaking")) {            cskill = 85;        } else if (skill.equals("crafting")) {            cskill = 77;        } else if (skill.equals("smithing")) {            cskill = 20;        } else if (skill.equals("mining")) {            cskill = 3;        } else if (skill.equals("herblore")) {            cskill = 29;        } else if (skill.equals("agility")) {            cskill = 12;        } else if (skill.equals("thieving")) {            cskill = 53;        } else if (skill.equals("slayer")) {            cskill = 111;        } else if (skill.equals("farming")) {            cskill = 119;        } else if (skill.equals("runecrafting")) {            cskill = 103;        } else if (skill.equals("hunter")) {            cskill = 135;        } else if (skill.equals("construction")) {            cskill = 127;        } else if (skill.equals("summoning")) {            cskill = 143;        } else if (skill.equals("dungeoneering")) {            cskill = 151;        }        if (game.getCurrentTab() != Game.TAB_STATS) {            game.openTab(Game.TAB_STATS);            for (int i = 0; i < 100; i++) {                sleep(20);                if (game.getCurrentTab() == Game.TAB_STATS) {                    break;                }            }            sleep(random(150, 250));        }        if (interfaces.get(499).isValid()) {            interfaces.getComponent(499, 29).doClick();            sleep(random(500, 900));        }        return game.getCurrentTab() == Game.TAB_STATS                && interfaces.getComponent(320, cskill).doClick();    }    public void serverMessageRecieved(final ServerMessageEvent arg0) {        final String serverString = arg0.getMessage();        if (serverString.contains("You've just advanced")) {            levelsGained++;            clickSkill("prayer");        }        if (serverString.contains("bury the bones.")) {            buried++;        }    }    // Credits to purefocus for progress bar.    public void ProgBar(Graphics g, int posX, int posY, int width, int height,            int Progress, Color color1, Color color2, Color text) {        int[] c1 = { color1.getRed(), color1.getGreen(), color1.getBlue(), 150 };        int[] c2 = { color2.getRed(), color2.getGreen(), color2.getBlue(), 150 };        if (c1[0] > 230) {            c1[0] = 230;        }        if (c1[1] > 230) {            c1[1] = 230;        }        if (c1[2] > 230) {            c1[2] = 230;        }        if (c2[0] > 230) {            c2[0] = 230;        }        if (c2[1] > 230) {            c2[1] = 230;        }        if (c2[2] > 230) {            c2[2] = 230;        }        g.setColor(new Color(c1[0], c1[1], c1[2], 200));        g.fillRoundRect(posX, posY, width, height, 5, 12);        g.setColor(new Color(c1[0] + 25, c1[1] + 25, c1[2] + 25, 200));        g.fillRoundRect(posX, posY, width, height / 2, 5, 12);        g.setColor(new Color(c2[0], c2[1], c2[2], 200));        g.fillRoundRect(posX, posY, (Progress * width) / 100, height, 5, 12);        g.setColor(new Color(c2[0] + 25, c2[1] + 25, c2[2] + 25, 150));        g                .fillRoundRect(posX, posY, (Progress * width) / 100,                        height / 2, 5, 12);        g.setColor(Color.LIGHT_GRAY);        g.drawRoundRect(posX, posY, width, height, 5, 12);        g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, height));        g.setColor(text);        g.drawString(Progress + "%", posX + (width / 6), posY                + (height + height / 20));    }    public void onRepaint(Graphics g) {        g.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 11));        ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,                RenderingHints.VALUE_ANTIALIAS_ON);        // ///////////////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);        // //////////////////////////////////////////        runTime = System.currentTimeMillis() - startTime;        long millis = System.currentTimeMillis() - startTime;        final long hours = millis / (1000 * 60 * 60);        millis -= hours * 1000 * 60 * 60;        final long minutes = millis / (1000 * 60);        millis -= minutes * 1000 * 60;        final long seconds = millis / 1000;        final int x = 561;        final int y = 225;        if (startExp == 0) {            startExp = skills.getCurrentExp(Skills.PRAYER);        }        expGained = skills.getCurrentExp(Skills.PRAYER) - startExp;        expPerHour = (int) ((3600000.0 / (double) runTime) * expGained);        g.setColor(new Color(0, 0, 0, 175));        g.fillRoundRect(555, 210, 175, 250, 10, 10);        g.setColor(Color.white);        g.drawString("Bones Collector Version "                + Double.toString(properties.version()), x, y);        g.setColor(Color.white);        g.drawString("Bone Chosen: " + boneN + "", 561, 265);        g                .drawString("Bones Buried: " + Integer.toString(buried) + "",                        561, 285);        g.drawString("EXP Gained: " + expGained + "", 561, 305);        g.drawString("EXP Till Next Level: "                + skills.getExpToNextLevel(Skills.PRAYER) + "", 561, 325);        g.drawString("EXP/Hour: " + expPerHour, 561, 345);        g.drawString("Levels Gained: " + Integer.toString(levelsGained) + "",                561, 365);        g.drawString("Time Running: " + hours + ":" + minutes + ":" + seconds                + "", 561, 385);        // ///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);        // ///////////////////        final int percent = skills.getPercentToNextLevel(Skills.PRAYER);        ProgBar(g, 11, 323, 145, 11, percent, Color.black, Color.green,                Color.white);    }    public void onFinish() {        antiban.stopThread = true;        log("Thank You for using Bones Collector!");        log("Bones Buried: " + buried);        log("Levels Gained: " + levelsGained);    }    private class BonesCollectorAntiBan 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, 8) == 0) {                                game.openTab(Game.TAB_STATS);                                Thread.sleep(random(3000, 6000));                            }                            if (random(0, 10) == 0) {                                game.openTab(random(1, 14));                                Thread.sleep(random(750, 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!


Last edited by Famous on Sun Jul 11, 2010 9:02 pm; edited 1 time in total (Reason for editing : Updated for API)
Back to top Go down
http://famousscripts.forumotion.com
 
Bones 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: