[RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

Discussion in 'RuneScape 3 Cheating' started by law and order, Nov 22, 2008.

[RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users
  1. Unread #1 - Nov 22, 2008 at 4:04 PM
  2. law and order
    Joined:
    Nov 20, 2008
    Posts:
    142
    Referrals:
    0
    Sythe Gold:
    0

    law and order Active Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    This thread was created for the sole purpose of providing rsbot users with good scripts I figure if all the users of sythe get together and tell about some of the best scripts they've come accros we could make a damn good list. I also hope that other users will Atemp to altar the scripts to make them better. (atleast thats what ill be trying to atempt in this thread)


    Submitting a script.


    1. The name or title of the script
    2. A description of the script some of its features abilities etc.
    3. the code for the scrypt or a file to download it.
    4.(optional) any screen shots you may have of the script


    The Script List

    Fishing

    SuperBarbFisher by wolf(flight)
    Fishes trout and cod in barb village fly fish spot and drops them.
    Code:
    //
    // Script:
    // Pro Fisher v0.17
    //
    // Author:
    // Daniel Reed [Aelin]
    //
    // Features:
    // Antiban [Random Exp Checker/Random Mouse Movement/Tab switches/Random camera
    // movement]
    // Anticombat
    // Banking
    // Multiple Fishing Modes
    // Withdraw bait/gear
    // Recover gear when lost.
    // Power fishing
    // Anti-whirlpool
    // Paint debug, including xp gained, levels gained, percent to next level,
    // catches, times avoided combat
    // whirlpools avoided and time running.
    // Added new paths for run from combat (More efficient than running all the way
    // to the bank.)
    //
    // Credits:
    // Flight - Used his whirlpool IDs.
    // Transactions for loaning me a fishing guild account.
    //
    // Revision 0.17
    // Starting in power mode and then restarting in banking mode now works.
    //
    // Revision 0.16
    // Fixed barbarian village paths and fixed anti-whirlpool code.
    //
    // Revision 0.15
    // Fixed a simple problem in banking.
    //
    // Revision 0.14
    // Added paint functions by Photonman for est to next level.
    //
    // Revision 0.13
    // Revised paths for barbarian village, both more efficient and doesn't seem to
    // get stuck anymore.
    //
    // Revision 0.12
    // Updated to work with non-deprecated RSBot #199+
    //
    // Revision 0.11
    // Revised the average per hour counter.
    //
    // Revision 0.10
    // Added catches per hour.
    //
    // Revision 0,09
    // Added catches to next level.
    //
    // Revision 0.08
    // Added parts of post and recovery (Will be added as they are discovered.)
    //
    // Revision 0.07
    // Revised paths and ids for the fishing guild.
    //
    // Revision 0.06
    // Further revised banking to fix bait fishing mode.
    //
    // Revision 0.05
    // Revised banking code, seems to work better.
    //
    // Revision 0.04
    // Fixed Catherby Double clicks.
    //
    // Revision 0.03
    // Updated to work with latest Runescape revision.
    // Updated run code.
    // 
    // Revision 0.01
    // Initial release.
    //
    import java.awt.*;
    import java.util.Map;
    
    import com.speljohan.rsbot.bot.Bot;
    import com.speljohan.rsbot.event.listeners.PaintListener;
    import com.speljohan.rsbot.script.*;
    import com.speljohan.rsbot.script.wrappers.*;
    
    public class ProFisher extends Script implements PaintListener {
    	RSTile[] toBank = new RSTile[] { new RSTile(3087, 3227),
    			new RSTile(3085, 3242), new RSTile(3092, 3243) };
    
    	RSTile[] toArea = reversePath(toBank);
    	RSTile[] lostTiles = new RSTile[] { new RSTile(2860, 3428) };
    	RSTile[] recoverTiles = new RSTile[] { new RSTile(2849, 3430) };
    	RSTile[] runAway;
    	RSTile[] runBack;
    	int[] fishingSpots = new int[] {
    	// Draynor:
    			327, 327,
    
    			// Barbarian Village:
    			328, 328, 328,
    
    			// Catherby:
    			320, 320, 321, 321, 322,
    
    			// Guild:
    			312, 312, 313 };
    	String[] fishingCommands = new String[] {
    	// Draynor
    			"Net", "Bait",
    
    			// Barbarian Village
    			"Bait", "Lure", "Lure",
    
    			// Catherby:
    			"Net", "Bait", "Cage", "Harpoon", "Harpoon",
    
    			// Guild:
    			"Cage", "Harpoon", "Harpoon" };
    	int[] gear = new int[] {
    	// Draynor:
    			303, 307,
    
    			// Barbarian Village:
    			307, 309, 309,
    
    			// Catherby
    			303, 307, 301, 311, 311,
    
    			// Fishing Guild:
    			301, 311, 311,
    
    			// To prevent deposit of baits.
    			313, 10087, 314 };
    
    	int[] bait = new int[] {
    	// Draynor:
    			0, 313,
    
    			// Barbarian Village:
    			313, 314, 314,
    
    			// Catherby:
    			0, 313, 0, 0, 0,
    
    			// Guild:
    			0, 0, 0 };
    	int[] whirlpools = new int[] { 403, 404, 406, 406 };
    
    	int bankBooth = 2213;
    	boolean powerMode = false;
    	long catches = 0;
    	long gainedExp = 0;
    	long gainedLevels = 0;
    	final int S_WALKTO_AREA = 1000;
    	final int S_WALKTO_BANK = 1500;
    	final int S_FISH = 2000;
    	final int S_USE_BANK = 2500;
    	final int S_USE_BANKSHILO = 2550;
    	final int S_DROP = 3000;
    	int state = S_FISH;
    	RSTile lumby = new RSTile(0, 0);
    	int selectedPath = 0;
    	int fails = 0;
    	final int maxFails = 25;
    	int mode = 0;
    	int checkTime;
    	long startTime;
    	long lastCheck;
    	int startLevel;
    	int startExp;
    	int oldExp;
    	int avoidedCombat;
    	int whirlpoolsAvoided;
    	int randomRun = random(20, 65);
    	int oldLevels;
    	int xpPerCatch = 0;
    	int countToNext = 0;
    	long oldCatches = 0;
    	long avgPerHour = 0;
    	long lastAvgCheck;
    
    	public String getAuthor() {
    		return "Aelin";
    	}
    
    	public String getName() {
    		return "Pro Fisher";
    	}
    
    	public double getVersion() {
    		return 0.17;
    	}
    
    	public String getScriptCategory() {
    		return "Aelin/Pro Series/Fishing";
    	}
    
    	public String getScriptDescription() {
    		String html = "";
    
    		html += "<html>\n";
    		html += "<body>\n";
    		html += "<h2>" + getName() + " v" + getVersion() + "</h2><br>";
    		html += "<font size=\"2\">";
    		html += "Author: " + getAuthor() + "<br><br>";
    		html += "</font>";
    		html += "<form>";
    		html += "<font size=\"2\">";
    		html += "0 - Draynor - Shimp/Anchovies<br>";
    		html += "1 - Draynor - Herrings/Sardines<br>";
    		html += "2 - Barbarian Village - Pike<br>";
    		html += "3 - Barbarian Village - Trout/Salmon<br>";
    		html += "4 - Barbarian Village - Rainbow Fish<br>";
    		html += "5 - Catherby - Shimp/Anchovies<br>";
    		html += "6 - Catherby - Herring/Sardines<br>";
    		html += "7 - Catherby - Lobsters<br>";
    		html += "8 - Catherby - Tuna/Swordfish<br>";
    		html += "9 -  Catherby - Sharks<br>";
    		html += "10 - Fishing Guild - Lobsters<br>";
    		html += "11 - Fishing Guild - Tuna/Swordfish<br>";
    		html += "<12 - Fishing Guild - Sharks<br>";
    		// html += "<13 - Pictoris - Monkfish<br>";
    		html += "Mode: <input type=\"text\" name=\"mode\"><br>";
    		html += "<input type=\"radio\" name=\"power\" value=\"true\">Powerfishing Mode<br>";
    		html += "</font>";
    		html += "</form>";
    		html += "</html>\n";
    
    		return html;
    	}
    
    	//
    	// onStart( )
    	//
    	public boolean onStart(Map<String, String> args) {
    		// Add server listeners.
    		Bot.getEventManager().addListener(PaintListener.class, this);
    		// Bot.getEventManager( ).addListener(ServerMessageListener.class,
    		// this);
    
    		// log( args.get("selmode") );
    		try {
    			mode = Integer.parseInt(args.get("mode"));
    			if (args.get("power").equals("true")) {
    				powerMode = true;
    				log("Power-fishing mode activated.");
    			} else {
    				powerMode = false;
    				log("Power-mining mode deactivated.");
    			}
    		} catch (Exception e) {
    
    		}
    
    		// Is the selected mode a draynor mode?
    		if (mode >= 0 && mode <= 1) {
    
    			log("Setting paths for draynor.");
    			toBank = new RSTile[] { new RSTile(3087, 3227),
    					new RSTile(3085, 3242), new RSTile(3092, 3243) };
    			toArea = reversePath(toBank);
    			runAway = toBank;
    			runBack = toArea;
    		}
    
    		// Is the selected mode a barbarian village mode?
    		if (mode >= 2 && mode <= 4) {
    			// Yes, set paths and ids accordingly.
    			log("Setting paths for barbarian village.");
    			toBank = new RSTile[] { new RSTile(3103, 3434),
    					new RSTile(3098, 3437), new RSTile(3091, 3447),
    					new RSTile(3089, 3459), new RSTile(3100, 3469),
    					new RSTile(3100, 3484), new RSTile(3094, 3491) };
    			toArea = reversePath(toBank);
    			bankBooth = 26972;
    		}
    
    		// Is the selected mode a catherby mode?
    		if (mode >= 5 && mode <= 9) {
    			// Yes, set paths and ids accordingly.
    			log("Setting paths for catherby.");
    			toBank = new RSTile[] { new RSTile(2848, 3430),
    					new RSTile(2839, 3435), new RSTile(2822, 3438),
    					new RSTile(2810, 3440) };
    			toArea = reversePath(toBank);
    			bankBooth = 2213;
    		}
    
    		// Is the selected mode a guild mode?
    		if (mode >= 10 && mode <= 12) {
    			// Yes, set paths and ids accordingly.
    			log("Setting paths for the fishing guild.");
    			toBank = new RSTile[] { new RSTile(2599, 3421),
    					new RSTile(2594, 3414), new RSTile(2588, 3420) };
    			toArea = reversePath(toBank);
    			bankBooth = 2213;
    		}
    
    		// Is the selected mode a pictoris mode?
    		if (mode == 13) {
    			// Yes, set paths and IDs accordingly.
    			log("Setting paths for pictoris.");
    
    		}
    
    		return true;
    	}
    
    	//
    	// onFinish( )
    	//
    	public void onFinish() {
    
    		// Remove listeners.
    		Bot.getEventManager().removeListener(PaintListener.class, this);
    		// Bot.getEventManager( ).removeListener(ServerMessageListener.class,
    		// this);
    	}
    
    	//
    	// loop( )
    	//
    	public int loop() {
    		// Lost/Recover
    		// If enough energy and run enable, then enable run.
    		if (getEnergy() >= randomRun && !isRunning()) {
    			log("Setting run.");
    			randomRun = random(20, 65);
    			setRun(true);
    			return random(500, 750);
    		}
    
    		// If the player is moving, antiban.
    		if (getMyPlayer().isMoving()) {
    			return antiBan();
    		}
    
    		// Stop script if fails is too high.
    		if (fails >= maxFails) {
    			// Stop all scripts.
    			stopAllScripts();
    		}
    
    		// Process script events, based on state.
    		switch (state) {
    			// S_WALKTO_AREA - Walk to fishing area.
    			case S_WALKTO_AREA:
    				// Is the play missing gear and is the gear laying on the
    				// ground?
    				RSItemTile itemTile = getGroundItemByID(gear[mode]);
    				if (getInventoryCount(gear[mode]) == 0 && itemTile != null) {
    					if (tileOnScreen(itemTile)) {
    						log("Recovered gear.");
    						atTile(itemTile, "Take");
    						return random(500, 750);
    					} else {
    						log("Walking to gear location.");
    						walkTileMM(itemTile);
    						return random(500, 750);
    					}
    				}
    
    				// Does the player have the gear needed for the current mode?
    				if (getInventoryCount(gear[mode]) <= 0) {
    					// No, so head to the bank for new gear.
    					log("No gear for the current fishing mode, heading to bank for more.");
    					state = S_WALKTO_BANK;
    					return random(500, 750);
    				}
    
    				// Does the player need bait?
    				if (bait[mode] != 0) {
    					// Yes, do we have some?
    					if (getInventoryCount(bait[mode]) <= 0) {
    						// No, so head to the bank and withdraw some more.
    						log("Not enough bait to continue, heading to bank for more.");
    						state = S_WALKTO_BANK;
    						return random(500, 750);
    					}
    				}
    
    				// Is the player currently near the destination?
    				if (distanceTo(toArea[toArea.length - 1]) <= 2) {
    					// Yes, so start fishing and select next random path.
    					log("Ariving at fishing area, switching to fishing mode.");
    					state = S_FISH;
    
    					return random(500, 750);
    				} else {
    					// No, so continue to walk path.
    					if (!getMyPlayer().isMoving()) {
    						walkPathMM(randomizePath(toArea, 2, 2), 20);
    					}
    
    					return random(500, 750);
    				}
    
    				// S_WALKTO_BANK - Walks to the bank.
    			case S_WALKTO_BANK:
    				// Is the player currently near the destination?
    				if (distanceTo(toBank[toBank.length - 1]) <= 2) {
    					// Yes, so start banking.
    					log("Ariving at bank, making deposit.");
    					state = S_USE_BANK;
    
    					return random(500, 750);
    				} else {
    					// No, so continue to walk path.
    					if (!getMyPlayer().isMoving()) {
    						walkPathMM(randomizePath(toBank, 2, 2), 20);
    					}
    
    					return random(500, 750);
    				}
    
    				// S_FISH - Fishes based on current mode.
    			case S_FISH:
    				RSNPC spot = getNearestNPCByID(fishingSpots[mode]);
    				RSNPC whirl = getNearestNPCByID(whirlpools);
    				RSTile loc1 = new RSTile(
    						getMyPlayer().getLocation().getX() + 1, getMyPlayer()
    								.getLocation().getY());
    				RSTile loc2 = new RSTile(
    						getMyPlayer().getLocation().getX() - 1, getMyPlayer()
    								.getLocation().getY());
    				RSTile loc3 = new RSTile(getMyPlayer().getLocation().getX(),
    						getMyPlayer().getLocation().getY() + 1);
    				// RSTile loc4 = new RSTile(getMyPlayer().getLocation().getX(),
    				// getMyPlayer().getLocation().getY() - 1);
    
    				// Is the play missing gear and is the gear laying on the
    				// ground?
    				itemTile = getGroundItemByID(gear[mode]);
    				if (getInventoryCount(gear[mode]) == 0 && itemTile != null) {
    					if (tileOnScreen(itemTile)) {
    						log("Recovered gear.");
    						atTile(itemTile, "Take");
    						return random(500, 750);
    					} else {
    						log("Walking to gear location.");
    						walkTileMM(itemTile);
    						return random(500, 750);
    					}
    				}
    
    				// Anticombat: Is the player currently in combat?
    				if (getMyPlayer().isInCombat()) {
    					// Yes, so run to bank.
    					log("Running away from combat.");
    					avoidedCombat++;
    					state = S_WALKTO_BANK;
    					return random(500, 750);
    				}
    
    				// Is the player currently busy?
    				if (getMyPlayer().getAnimation() != -1
    						|| getMyPlayer().isMoving()) {
    					if (whirl != null) {
    						if (whirl.getLocation().equals(loc1)
    								|| whirl.getLocation().equals(loc2)
    								|| whirl.getLocation().equals(loc3)
    								|| whirl.getLocation().equals(loc1)) {
    
    							log("Avoiding whirlpool.");
    							whirlpoolsAvoided++;
    						}
    					} else {
    						return antiBan();
    					}
    				}
    
    				// Does the player have the gear needed for the current mode?
    				if (getInventoryCount(gear[mode]) <= 0) {
    					// No, so head to the bank for new gear.
    					log("No gear for the current fishing mode, heading to bank for more.");
    					state = S_WALKTO_BANK;
    					return random(500, 750);
    				}
    
    				// Does the player need bait?
    				if (bait[mode] != 0) {
    					// Yes, do we have some?
    					if (getInventoryCount(bait[mode]) <= 0) {
    						// No, so head to the bank and withdraw some more.
    						log("Not enough bait to continue, heading to bank for more.");
    						state = S_WALKTO_BANK;
    						return random(500, 750);
    					}
    				}
    
    				// Is the inventory full?
    				if (isInventoryFull()) {
    					// Yes, so are we power-fishing?
    					if (powerMode) {
    						// Yes, so drop.
    						log("The inventory is full, dropping all the catches.");
    						state = S_DROP;
    						return random(500, 750);
    					} else {
    						// No, so bank.
    						log("The inventory is full, heading to the bank.");
    						state = S_WALKTO_BANK;
    						return random(500, 750);
    					}
    				}
    
    				// Was a fishing spot found?
    				if (spot != null) {
    					// Yes, so reset fails.
    					fails = 0;
    
    					// Is the spot nearby?
    					if (tileOnScreen(spot.getLocation())) {
    						// Yes, so fish.
    						atNPC(spot, fishingCommands[mode]);
    						return random(1000, 1500);
    					} else {
    						// No, so walk to the fishing spots location.
    						walkTileRand(spot.getLocation());
    						return random(500, 750);
    					}
    				} else {
    					for (int i = 0; i < lostTiles.length; i++) {
    						RSTile lost = lostTiles[i];
    
    						if (distanceTo(lost) <= 4) {
    							log("Currently lost, returning.");
    							walkTileRand(recoverTiles[i]);
    							return random(500, 750);
    						}
    					}
    
    					// No, so increment fails and try again.
    					log("Couldn't find a fishing spot, trying "
    							+ (maxFails - fails) + " more times.");
    					fails++;
    					return random(1500, 3000);
    				}
    
    				// S_USE_BANK - Makes deposits.
    			case S_USE_BANK:
    				RSObject booth = findObject(bankBooth);
    
    				if (RSInterface.getInterface(INTERFACE_BANK).isValid()) {
    					bank.close();
    				}
    
    				// Was the booth found?
    				if (booth != null) {
    					// Is the bank on screen?
    					if (tileOnScreen(booth.getLocation())) {
    						// Yes, so use it.
    						atObject(booth, "Use-quickly");
    						wait(random(500, 750));
    
    						// Did the bank open?
    						if (!RSInterface.getInterface(INTERFACE_BANK).isValid()) {
    							// No, so retry.
    							log("Unable to access account, trying "
    									+ (maxFails - fails) + " more times.");
    							fails++;
    							return random(500, 750);
    						}
    
    						// Deposit all except gear.
    						bank.depositAllExcept(gear);
    
    						// Does the current mode require bait?
    						if (bait[mode] != 0
    								&& getInventoryCount(bait[mode]) == 0) {
    							// Yes, so does the bank have bait?
    							if (bank.getCount(bait[mode]) == 0) {
    								// No, so stop script.
    								log("There is no bait in the bank, exiting.");
    								stopAllScripts();
    							} else {
    								// Yes, so withdraw.
    								bank.atItem(bait[mode], "Withdraw-All");
    							}
    						}
    
    						// Is the player out of gear and there is none in the
    						// bank?
    						if (getInventoryCount(gear[mode]) == 0
    								&& bank.getCount(gear[mode]) == 0) {
    							// No, so stop script.
    							log("No gear in inventory and no gear in the bank, exiting.");
    							stopAllScripts();
    						} else {
    							// Yes, so withdraw.
    							bank.atItem(gear[mode], "Withdraw 1");
    						}
    
    						// Is the inventory still full?
    						if (isInventoryFull()) {
    							// Yes, so rebank.
    							log("Inventory is still full, rebanking.");
    							return random(500, 750);
    						} else {
    							// No, so head back to the spots.
    							log("Banked all, heading back to area.");
    							state = S_WALKTO_AREA;
    							return random(500, 750);
    						}
    					} else {
    						// No, so walk to the booth.
    						log("Found bank, but it isn't on screen, walking to location.");
    						walkTileRand(booth.getLocation());
    						return random(500, 750);
    					}
    				} else {
    					// No, so increment fails and try again.
    					log("Unable to find a bank booth, trying "
    							+ (maxFails - fails) + " more times.");
    					fails++;
    					return random(1500, 3000);
    				}
    
    				// S_DROP - Drop inventory, use for power fishing.
    			case S_DROP:
    				log("Dropping everything except gear.");
    				dropAllExcept(gear);
    				state = S_FISH;
    				return random(500, 750);
    
    				// Default - Unknown state.
    			default:
    				log("Unknown state: " + state + " terminating script.");
    				return -1;
    		}
    	}
    
    	//
    	// walkTileRand( )
    	//
    	// This method provides a means for the script to walk to a location more
    	// randomly than RSBot's standard walkTileMM function.
    	//
    	public void walkTileRand(RSTile tile) {
    		// Local objects:
    		RSTile temp = new RSTile(tile.getX() + random(-2, 2), tile.getY()
    				+ random(-2, 2));
    
    		walkTileMM(temp);
    	}
    
    	//
    	// antiBan( )
    	//
    	// This method provides a psuedo means of antiBan.
    	// Not sure that this is the greatest method of anti-ban, due
    	// to it's repetiveness.
    	//
    	int antiBan() {
    		int GambleInt = random(1, 6);
    
    		switch (GambleInt) {
    			case 1:
    				wait(random(1000, 1500));
    				break;
    
    			case 2:
    				int x = random(0, 750);
    				int y = random(0, 500);
    				moveMouse(0, 0, x, y);
    				return random(1000, 1500);
    
    			case 3:
    				// Is the current tab the inventory?
    				if (getCurrentTab() != TAB_INVENTORY) {
    					// No, so switch to the inventory tab.
    					openTab(TAB_INVENTORY);
    					return random(500, 750);
    				} else {
    					// No, so return
    					return random(500, 750);
    				}
    
    			case 4:
    				// If the player is moving, then abort.
    				if (getMyPlayer().isMoving()) {
    					return random(750, 1000);
    				}
    
    				if (System.currentTimeMillis() - lastCheck >= checkTime) {
    					lastCheck = System.currentTimeMillis();
    					checkTime = random(60000, 180000);
    
    					if (getCurrentTab() != TAB_STATS) {
    						openTab(TAB_STATS);
    					}
    					moveMouse(663, 292, 50, 28);
    					return random(5000, 8000);
    				}
    
    			case 5:
    				if (random(1, 8) == 2) {
    					int angle = getCameraAngle() + random(-90, 90);
    					if (angle < 0) {
    						angle = 0;
    					}
    					if (angle > 359) {
    						angle = 0;
    					}
    
    					setCameraRotation(angle);
    				}
    				return random(500, 750);
    		}
    
    		return random(500, 1000);
    	}
    
    	//
    	// onRepaint( )
    	//
    	// This method is called every time the graphics is updated.
    	//
    	//
    	// onRepaint( )
    	//
    	// This method is called every time the graphics is updated.
    	//
    	public void onRepaint(Graphics g) {
    		/*
    		 * Graphics h = image.getGraphics(); try { ImageIO.write(image, "jpg",
    		 * new File("progressReport.jpg")); } catch (IOException e) {
    		 * e.printStackTrace(); }
    		 */
    
    		// local objects:
    		int index = Skills.getStatIndex("Fishing");
    		int exp = 0;
    		int levels;
    		long hours = 0, minutes = 0, seconds = 0;
    		long time;
    		long untilhour = 0, untilmin = 0, untilsec = 0;
    		double temptime = 0;
    
    		// Has start time been previously set?
    		if (startTime == 0) {
    			startTime = System.currentTimeMillis();
    		}
    
    		// Calculate hours, minutes and seconds.
    		time = System.currentTimeMillis() - startTime;
    		seconds = time / 1000;
    		if (seconds >= 60) {
    			minutes = seconds / 60;
    			seconds -= minutes * 60;
    		}
    		if (minutes >= 60) {
    			hours = minutes / 60;
    			minutes -= hours * 60;
    		}
    
    		// Has variables been previously defined?
    		if (startLevel == 0 || startExp == 0) {
    			// No, so define them now.
    			startLevel = skills.getCurrentSkillLevel(index);
    			startExp = skills.getCurrentSkillExp(index);
    			oldExp = 0;
    		}
    
    		// Calculate catches based on experience changes.
    		exp = skills.getCurrentSkillExp(index) - startExp;
    		if (exp > oldExp) {
    			xpPerCatch = exp - oldExp;
    			oldExp = exp;
    			catches++;
    			countToNext = skills.getXPToNextLevel(STAT_FISHING) / xpPerCatch
    					+ 1;
    		}
    
    		// Calculate levels gained.
    		levels = skills.getCurrentSkillLevel(index) - startLevel;
    		if (levels > oldLevels) {
    			oldLevels = levels;
    		}
    
    		//
    		if (System.currentTimeMillis() - lastAvgCheck >= 60000) {
    			lastAvgCheck = System.currentTimeMillis();
    			avgPerHour = (catches - oldCatches) * 60;
    			oldCatches = catches;
    		}
    		if (countToNext == 0) {
    			untilsec = 0;
    			untilhour = 0;
    			untilmin = 0;
    		} else {
    			if (avgPerHour == 0) {
    				untilsec = 0;
    				untilhour = 0;
    				untilmin = 0;
    			} else {
    				temptime = (double) countToNext / avgPerHour;
    				untilsec = (int) (temptime * 3600);
    				untilmin = untilsec / 60;
    				untilsec -= untilmin * 60;
    				untilhour = untilmin / 60;
    				untilmin -= untilhour * 60;
    			}
    		}
    		// Draw information.
    
    		g.setColor(Color.WHITE);
    		g.drawString(getName() + " v" + getVersion(), 9, 171);
    		g.drawString("XP Gained: " + exp, 9, 187);
    		g.drawString("Levels Gained: " + levels, 9, 203);
    		g.drawString("Percent to next level: "
    				+ skills.getPercentToNextLevel(index), 9, 219);
    		g.drawString("Catches: " + catches, 9, 235);
    		g.drawString("Catches to next level: " + countToNext, 9, 251);
    		g.drawString("Times avoided combat: " + avoidedCombat, 9, 267);
    		g.drawString("Whirlpools Avoided: " + whirlpoolsAvoided, 9, 283);
    		g.drawString("Time running: " + hours + "." + minutes + "." + seconds,
    				9, 299);
    		g.drawString("Average per hour: " + avgPerHour, 9, 315);
    		g.drawString("Est time untill next level: " + untilhour + "."
    				+ untilmin + "." + untilsec, 9, 331);
    
    		/*
    		 * h.setColor( Color.WHITE ); h.drawString(getName( ) + " v" +
    		 * getVersion( ), 9, 171); h.drawString("XP Gained: " + exp, 9, 187);
    		 * h.drawString("Levels Gained: " + levels, 9, 203);
    		 * h.drawString("Percent to next level: " +
    		 * skills.getPercentToNextLevel( index ), 9, 219);
    		 * h.drawString("Catches: " + catches, 9, 235); h.drawString("Catches to
    		 * next level: " + countToNext, 9, 251); h.drawString("Times avoided
    		 * combat: " + avoidedCombat, 9, 267); h.drawString("Whirlpools Avoided: " +
    		 * whirlpoolsAvoided, 9, 283); h.drawString("Time running: " + hours +
    		 * "." + minutes + "." + seconds, 9, 299); h.drawString("Average per
    		 * hour: " + avgPerHour, 9, 315); h.drawString("Est time untill next
    		 * level: " + untilhour + "." + untilmin + "." + untilsec , 9, 331);
    		 */
    	}
    
    	// Modified to drop all except:)
    	public boolean dropAllExcept(int... items) {
    		boolean drop = false;
    
    		for (int item : getInventoryArray()) {
    			drop = true;
    			for (int nodrop : items) {
    				if (item == nodrop) {
    					drop = false;
    				}
    			}
    
    			if (drop && item != -1) {
    				for (int i = 0; i < getInventoryCount(item); i++) {
    					atInventoryItem(item, "Drop");
    					wait(random(500, 750));
    				}
    			}
    		}
    
    		return true;
    	}
    
    }
    Mining

    Trainers

    Quest

    Other


    PLEASE POST ANY SCRIPTS YOU CONSIDER TO BE THE BEST Remember a file or the actual code of the scrypt
     
  3. Unread #2 - Nov 22, 2008 at 4:08 PM
  4. CruZr
    Joined:
    Aug 9, 2008
    Posts:
    969
    Referrals:
    0
    Sythe Gold:
    0

    CruZr Apprentice
    Banned

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    1. Aelins ProFisher
    2. Fishes in guild, sharks, lobs, swordies, barb ville, bait or fly, draynor, bait or net, guild fly, and more.
    3. 1 second
    4.Not a screenie, but went non stop 1-65 fishing in 2 days straight, I disabled break handler, and no ban anyways.
     
  5. Unread #3 - Nov 22, 2008 at 4:09 PM
  6. iKILLbeers
    Joined:
    Nov 19, 2008
    Posts:
    90
    Referrals:
    0
    Sythe Gold:
    0

    iKILLbeers Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    (Phatgals super fletch)

    Its a pretty basic script im sure everyone has it if not let me know and ill submit it..

    it cuts,strings and does arrows. never messes up too.
     
  7. Unread #4 - Nov 22, 2008 at 4:10 PM
  8. law and order
    Joined:
    Nov 20, 2008
    Posts:
    142
    Referrals:
    0
    Sythe Gold:
    0

    law and order Active Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    I kill bears I dont have it I dont think it comes with rsbot download please submit it and give me the code or a file
     
  9. Unread #5 - Nov 22, 2008 at 4:16 PM
  10. Lacey 01
    Joined:
    Oct 11, 2008
    Posts:
    253
    Referrals:
    1
    Sythe Gold:
    0

    Lacey 01 Forum Addict

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    SuperBarbFisher by wolf(flight)
    Fishes trout and cod in barb village fly fish spot and drops them.
     
  11. Unread #6 - Nov 22, 2008 at 4:18 PM
  12. Lacey 01
    Joined:
    Oct 11, 2008
    Posts:
    253
    Referrals:
    1
    Sythe Gold:
    0

    Lacey 01 Forum Addict

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    Heres script for /\
     
  13. Unread #7 - Nov 22, 2008 at 4:26 PM
  14. MMO KING
    Joined:
    Nov 19, 2008
    Posts:
    580
    Referrals:
    0
    Sythe Gold:
    0

    MMO KING Forum Addict
    Banned

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    Somewhere in the cheating section theres a thread for 116 scripts. Download those, compile, and go to Fighting > JPestControl. Try to get that script to focus on damage count and not trying to attack the portal. I left it on when i went to school, came back and had won 20 games and lost 28 because of lack of zeal.
     
  15. Unread #8 - Nov 22, 2008 at 4:31 PM
  16. CruZr
    Joined:
    Aug 9, 2008
    Posts:
    969
    Referrals:
    0
    Sythe Gold:
    0

    CruZr Apprentice
    Banned

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    Aelisn Profisher
    Code:
    //
    // Script:
    // Pro Fisher v0.17
    //
    // Author:
    // Daniel Reed [Aelin]
    //
    // Features:
    // Antiban [Random Exp Checker/Random Mouse Movement/Tab switches/Random camera
    // movement]
    // Anticombat
    // Banking
    // Multiple Fishing Modes
    // Withdraw bait/gear
    // Recover gear when lost.
    // Power fishing
    // Anti-whirlpool
    // Paint debug, including xp gained, levels gained, percent to next level,
    // catches, times avoided combat
    // whirlpools avoided and time running.
    // Added new paths for run from combat (More efficient than running all the way
    // to the bank.)
    //
    // Credits:
    // Flight - Used his whirlpool IDs.
    // Transactions for loaning me a fishing guild account.
    //
    // Revision 0.17
    // Starting in power mode and then restarting in banking mode now works.
    //
    // Revision 0.16
    // Fixed barbarian village paths and fixed anti-whirlpool code.
    //
    // Revision 0.15
    // Fixed a simple problem in banking.
    //
    // Revision 0.14
    // Added paint functions by Photonman for est to next level.
    //
    // Revision 0.13
    // Revised paths for barbarian village, both more efficient and doesn't seem to
    // get stuck anymore.
    //
    // Revision 0.12
    // Updated to work with non-deprecated RSBot #199+
    //
    // Revision 0.11
    // Revised the average per hour counter.
    //
    // Revision 0.10
    // Added catches per hour.
    //
    // Revision 0,09
    // Added catches to next level.
    //
    // Revision 0.08
    // Added parts of post and recovery (Will be added as they are discovered.)
    //
    // Revision 0.07
    // Revised paths and ids for the fishing guild.
    //
    // Revision 0.06
    // Further revised banking to fix bait fishing mode.
    //
    // Revision 0.05
    // Revised banking code, seems to work better.
    //
    // Revision 0.04
    // Fixed Catherby Double clicks.
    //
    // Revision 0.03
    // Updated to work with latest Runescape revision.
    // Updated run code.
    // 
    // Revision 0.01
    // Initial release.
    //
    import java.awt.*;
    import java.util.Map;
    
    import com.speljohan.rsbot.bot.Bot;
    import com.speljohan.rsbot.event.listeners.PaintListener;
    import com.speljohan.rsbot.script.*;
    import com.speljohan.rsbot.script.wrappers.*;
    
    public class ProFisher extends Script implements PaintListener {
    	RSTile[] toBank = new RSTile[] { new RSTile(3087, 3227),
    			new RSTile(3085, 3242), new RSTile(3092, 3243) };
    
    	RSTile[] toArea = reversePath(toBank);
    	RSTile[] lostTiles = new RSTile[] { new RSTile(2860, 3428) };
    	RSTile[] recoverTiles = new RSTile[] { new RSTile(2849, 3430) };
    	RSTile[] runAway;
    	RSTile[] runBack;
    	int[] fishingSpots = new int[] {
    	// Draynor:
    			327, 327,
    
    			// Barbarian Village:
    			328, 328, 328,
    
    			// Catherby:
    			320, 320, 321, 321, 322,
    
    			// Guild:
    			312, 312, 313 };
    	String[] fishingCommands = new String[] {
    	// Draynor
    			"Net", "Bait",
    
    			// Barbarian Village
    			"Bait", "Lure", "Lure",
    
    			// Catherby:
    			"Net", "Bait", "Cage", "Harpoon", "Harpoon",
    
    			// Guild:
    			"Cage", "Harpoon", "Harpoon" };
    	int[] gear = new int[] {
    	// Draynor:
    			303, 307,
    
    			// Barbarian Village:
    			307, 309, 309,
    
    			// Catherby
    			303, 307, 301, 311, 311,
    
    			// Fishing Guild:
    			301, 311, 311,
    
    			// To prevent deposit of baits.
    			313, 10087, 314 };
    
    	int[] bait = new int[] {
    	// Draynor:
    			0, 313,
    
    			// Barbarian Village:
    			313, 314, 314,
    
    			// Catherby:
    			0, 313, 0, 0, 0,
    
    			// Guild:
    			0, 0, 0 };
    	int[] whirlpools = new int[] { 403, 404, 406, 406 };
    
    	int bankBooth = 2213;
    	boolean powerMode = false;
    	long catches = 0;
    	long gainedExp = 0;
    	long gainedLevels = 0;
    	final int S_WALKTO_AREA = 1000;
    	final int S_WALKTO_BANK = 1500;
    	final int S_FISH = 2000;
    	final int S_USE_BANK = 2500;
    	final int S_USE_BANKSHILO = 2550;
    	final int S_DROP = 3000;
    	int state = S_FISH;
    	RSTile lumby = new RSTile(0, 0);
    	int selectedPath = 0;
    	int fails = 0;
    	final int maxFails = 25;
    	int mode = 0;
    	int checkTime;
    	long startTime;
    	long lastCheck;
    	int startLevel;
    	int startExp;
    	int oldExp;
    	int avoidedCombat;
    	int whirlpoolsAvoided;
    	int randomRun = random(20, 65);
    	int oldLevels;
    	int xpPerCatch = 0;
    	int countToNext = 0;
    	long oldCatches = 0;
    	long avgPerHour = 0;
    	long lastAvgCheck;
    
    	public String getAuthor() {
    		return "Aelin";
    	}
    
    	public String getName() {
    		return "Pro Fisher";
    	}
    
    	public double getVersion() {
    		return 0.17;
    	}
    
    	public String getScriptCategory() {
    		return "Aelin/Pro Series/Fishing";
    	}
    
    	public String getScriptDescription() {
    		String html = "";
    
    		html += "<html>\n";
    		html += "<body>\n";
    		html += "<h2>" + getName() + " v" + getVersion() + "</h2><br>";
    		html += "<font size=\"2\">";
    		html += "Author: " + getAuthor() + "<br><br>";
    		html += "</font>";
    		html += "<form>";
    		html += "<font size=\"2\">";
    		html += "0 - Draynor - Shimp/Anchovies<br>";
    		html += "1 - Draynor - Herrings/Sardines<br>";
    		html += "2 - Barbarian Village - Pike<br>";
    		html += "3 - Barbarian Village - Trout/Salmon<br>";
    		html += "4 - Barbarian Village - Rainbow Fish<br>";
    		html += "5 - Catherby - Shimp/Anchovies<br>";
    		html += "6 - Catherby - Herring/Sardines<br>";
    		html += "7 - Catherby - Lobsters<br>";
    		html += "8 - Catherby - Tuna/Swordfish<br>";
    		html += "9 -  Catherby - Sharks<br>";
    		html += "10 - Fishing Guild - Lobsters<br>";
    		html += "11 - Fishing Guild - Tuna/Swordfish<br>";
    		html += "<12 - Fishing Guild - Sharks<br>";
    		// html += "<13 - Pictoris - Monkfish<br>";
    		html += "Mode: <input type=\"text\" name=\"mode\"><br>";
    		html += "<input type=\"radio\" name=\"power\" value=\"true\">Powerfishing Mode<br>";
    		html += "</font>";
    		html += "</form>";
    		html += "</html>\n";
    
    		return html;
    	}
    
    	//
    	// onStart( )
    	//
    	public boolean onStart(Map<String, String> args) {
    		// Add server listeners.
    		Bot.getEventManager().addListener(PaintListener.class, this);
    		// Bot.getEventManager( ).addListener(ServerMessageListener.class,
    		// this);
    
    		// log( args.get("selmode") );
    		try {
    			mode = Integer.parseInt(args.get("mode"));
    			if (args.get("power").equals("true")) {
    				powerMode = true;
    				log("Power-fishing mode activated.");
    			} else {
    				powerMode = false;
    				log("Power-mining mode deactivated.");
    			}
    		} catch (Exception e) {
    
    		}
    
    		// Is the selected mode a draynor mode?
    		if (mode >= 0 && mode <= 1) {
    
    			log("Setting paths for draynor.");
    			toBank = new RSTile[] { new RSTile(3087, 3227),
    					new RSTile(3085, 3242), new RSTile(3092, 3243) };
    			toArea = reversePath(toBank);
    			runAway = toBank;
    			runBack = toArea;
    		}
    
    		// Is the selected mode a barbarian village mode?
    		if (mode >= 2 && mode <= 4) {
    			// Yes, set paths and ids accordingly.
    			log("Setting paths for barbarian village.");
    			toBank = new RSTile[] { new RSTile(3103, 3434),
    					new RSTile(3098, 3437), new RSTile(3091, 3447),
    					new RSTile(3089, 3459), new RSTile(3100, 3469),
    					new RSTile(3100, 3484), new RSTile(3094, 3491) };
    			toArea = reversePath(toBank);
    			bankBooth = 26972;
    		}
    
    		// Is the selected mode a catherby mode?
    		if (mode >= 5 && mode <= 9) {
    			// Yes, set paths and ids accordingly.
    			log("Setting paths for catherby.");
    			toBank = new RSTile[] { new RSTile(2848, 3430),
    					new RSTile(2839, 3435), new RSTile(2822, 3438),
    					new RSTile(2810, 3440) };
    			toArea = reversePath(toBank);
    			bankBooth = 2213;
    		}
    
    		// Is the selected mode a guild mode?
    		if (mode >= 10 && mode <= 12) {
    			// Yes, set paths and ids accordingly.
    			log("Setting paths for the fishing guild.");
    			toBank = new RSTile[] { new RSTile(2599, 3421),
    					new RSTile(2594, 3414), new RSTile(2588, 3420) };
    			toArea = reversePath(toBank);
    			bankBooth = 2213;
    		}
    
    		// Is the selected mode a pictoris mode?
    		if (mode == 13) {
    			// Yes, set paths and IDs accordingly.
    			log("Setting paths for pictoris.");
    
    		}
    
    		return true;
    	}
    
    	//
    	// onFinish( )
    	//
    	public void onFinish() {
    
    		// Remove listeners.
    		Bot.getEventManager().removeListener(PaintListener.class, this);
    		// Bot.getEventManager( ).removeListener(ServerMessageListener.class,
    		// this);
    	}
    
    	//
    	// loop( )
    	//
    	public int loop() {
    		// Lost/Recover
    		// If enough energy and run enable, then enable run.
    		if (getEnergy() >= randomRun && !isRunning()) {
    			log("Setting run.");
    			randomRun = random(20, 65);
    			setRun(true);
    			return random(500, 750);
    		}
    
    		// If the player is moving, antiban.
    		if (getMyPlayer().isMoving()) {
    			return antiBan();
    		}
    
    		// Stop script if fails is too high.
    		if (fails >= maxFails) {
    			// Stop all scripts.
    			stopAllScripts();
    		}
    
    		// Process script events, based on state.
    		switch (state) {
    			// S_WALKTO_AREA - Walk to fishing area.
    			case S_WALKTO_AREA:
    				// Is the play missing gear and is the gear laying on the
    				// ground?
    				RSItemTile itemTile = getGroundItemByID(gear[mode]);
    				if (getInventoryCount(gear[mode]) == 0 && itemTile != null) {
    					if (tileOnScreen(itemTile)) {
    						log("Recovered gear.");
    						atTile(itemTile, "Take");
    						return random(500, 750);
    					} else {
    						log("Walking to gear location.");
    						walkTileMM(itemTile);
    						return random(500, 750);
    					}
    				}
    
    				// Does the player have the gear needed for the current mode?
    				if (getInventoryCount(gear[mode]) <= 0) {
    					// No, so head to the bank for new gear.
    					log("No gear for the current fishing mode, heading to bank for more.");
    					state = S_WALKTO_BANK;
    					return random(500, 750);
    				}
    
    				// Does the player need bait?
    				if (bait[mode] != 0) {
    					// Yes, do we have some?
    					if (getInventoryCount(bait[mode]) <= 0) {
    						// No, so head to the bank and withdraw some more.
    						log("Not enough bait to continue, heading to bank for more.");
    						state = S_WALKTO_BANK;
    						return random(500, 750);
    					}
    				}
    
    				// Is the player currently near the destination?
    				if (distanceTo(toArea[toArea.length - 1]) <= 2) {
    					// Yes, so start fishing and select next random path.
    					log("Ariving at fishing area, switching to fishing mode.");
    					state = S_FISH;
    
    					return random(500, 750);
    				} else {
    					// No, so continue to walk path.
    					if (!getMyPlayer().isMoving()) {
    						walkPathMM(randomizePath(toArea, 2, 2), 20);
    					}
    
    					return random(500, 750);
    				}
    
    				// S_WALKTO_BANK - Walks to the bank.
    			case S_WALKTO_BANK:
    				// Is the player currently near the destination?
    				if (distanceTo(toBank[toBank.length - 1]) <= 2) {
    					// Yes, so start banking.
    					log("Ariving at bank, making deposit.");
    					state = S_USE_BANK;
    
    					return random(500, 750);
    				} else {
    					// No, so continue to walk path.
    					if (!getMyPlayer().isMoving()) {
    						walkPathMM(randomizePath(toBank, 2, 2), 20);
    					}
    
    					return random(500, 750);
    				}
    
    				// S_FISH - Fishes based on current mode.
    			case S_FISH:
    				RSNPC spot = getNearestNPCByID(fishingSpots[mode]);
    				RSNPC whirl = getNearestNPCByID(whirlpools);
    				RSTile loc1 = new RSTile(
    						getMyPlayer().getLocation().getX() + 1, getMyPlayer()
    								.getLocation().getY());
    				RSTile loc2 = new RSTile(
    						getMyPlayer().getLocation().getX() - 1, getMyPlayer()
    								.getLocation().getY());
    				RSTile loc3 = new RSTile(getMyPlayer().getLocation().getX(),
    						getMyPlayer().getLocation().getY() + 1);
    				// RSTile loc4 = new RSTile(getMyPlayer().getLocation().getX(),
    				// getMyPlayer().getLocation().getY() - 1);
    
    				// Is the play missing gear and is the gear laying on the
    				// ground?
    				itemTile = getGroundItemByID(gear[mode]);
    				if (getInventoryCount(gear[mode]) == 0 && itemTile != null) {
    					if (tileOnScreen(itemTile)) {
    						log("Recovered gear.");
    						atTile(itemTile, "Take");
    						return random(500, 750);
    					} else {
    						log("Walking to gear location.");
    						walkTileMM(itemTile);
    						return random(500, 750);
    					}
    				}
    
    				// Anticombat: Is the player currently in combat?
    				if (getMyPlayer().isInCombat()) {
    					// Yes, so run to bank.
    					log("Running away from combat.");
    					avoidedCombat++;
    					state = S_WALKTO_BANK;
    					return random(500, 750);
    				}
    
    				// Is the player currently busy?
    				if (getMyPlayer().getAnimation() != -1
    						|| getMyPlayer().isMoving()) {
    					if (whirl != null) {
    						if (whirl.getLocation().equals(loc1)
    								|| whirl.getLocation().equals(loc2)
    								|| whirl.getLocation().equals(loc3)
    								|| whirl.getLocation().equals(loc1)) {
    
    							log("Avoiding whirlpool.");
    							whirlpoolsAvoided++;
    						}
    					} else {
    						return antiBan();
    					}
    				}
    
    				// Does the player have the gear needed for the current mode?
    				if (getInventoryCount(gear[mode]) <= 0) {
    					// No, so head to the bank for new gear.
    					log("No gear for the current fishing mode, heading to bank for more.");
    					state = S_WALKTO_BANK;
    					return random(500, 750);
    				}
    
    				// Does the player need bait?
    				if (bait[mode] != 0) {
    					// Yes, do we have some?
    					if (getInventoryCount(bait[mode]) <= 0) {
    						// No, so head to the bank and withdraw some more.
    						log("Not enough bait to continue, heading to bank for more.");
    						state = S_WALKTO_BANK;
    						return random(500, 750);
    					}
    				}
    
    				// Is the inventory full?
    				if (isInventoryFull()) {
    					// Yes, so are we power-fishing?
    					if (powerMode) {
    						// Yes, so drop.
    						log("The inventory is full, dropping all the catches.");
    						state = S_DROP;
    						return random(500, 750);
    					} else {
    						// No, so bank.
    						log("The inventory is full, heading to the bank.");
    						state = S_WALKTO_BANK;
    						return random(500, 750);
    					}
    				}
    
    				// Was a fishing spot found?
    				if (spot != null) {
    					// Yes, so reset fails.
    					fails = 0;
    
    					// Is the spot nearby?
    					if (tileOnScreen(spot.getLocation())) {
    						// Yes, so fish.
    						atNPC(spot, fishingCommands[mode]);
    						return random(1000, 1500);
    					} else {
    						// No, so walk to the fishing spots location.
    						walkTileRand(spot.getLocation());
    						return random(500, 750);
    					}
    				} else {
    					for (int i = 0; i < lostTiles.length; i++) {
    						RSTile lost = lostTiles[i];
    
    						if (distanceTo(lost) <= 4) {
    							log("Currently lost, returning.");
    							walkTileRand(recoverTiles[i]);
    							return random(500, 750);
    						}
    					}
    
    					// No, so increment fails and try again.
    					log("Couldn't find a fishing spot, trying "
    							+ (maxFails - fails) + " more times.");
    					fails++;
    					return random(1500, 3000);
    				}
    
    				// S_USE_BANK - Makes deposits.
    			case S_USE_BANK:
    				RSObject booth = findObject(bankBooth);
    
    				if (RSInterface.getInterface(INTERFACE_BANK).isValid()) {
    					bank.close();
    				}
    
    				// Was the booth found?
    				if (booth != null) {
    					// Is the bank on screen?
    					if (tileOnScreen(booth.getLocation())) {
    						// Yes, so use it.
    						atObject(booth, "Use-quickly");
    						wait(random(500, 750));
    
    						// Did the bank open?
    						if (!RSInterface.getInterface(INTERFACE_BANK).isValid()) {
    							// No, so retry.
    							log("Unable to access account, trying "
    									+ (maxFails - fails) + " more times.");
    							fails++;
    							return random(500, 750);
    						}
    
    						// Deposit all except gear.
    						bank.depositAllExcept(gear);
    
    						// Does the current mode require bait?
    						if (bait[mode] != 0
    								&& getInventoryCount(bait[mode]) == 0) {
    							// Yes, so does the bank have bait?
    							if (bank.getCount(bait[mode]) == 0) {
    								// No, so stop script.
    								log("There is no bait in the bank, exiting.");
    								stopAllScripts();
    							} else {
    								// Yes, so withdraw.
    								bank.atItem(bait[mode], "Withdraw-All");
    							}
    						}
    
    						// Is the player out of gear and there is none in the
    						// bank?
    						if (getInventoryCount(gear[mode]) == 0
    								&& bank.getCount(gear[mode]) == 0) {
    							// No, so stop script.
    							log("No gear in inventory and no gear in the bank, exiting.");
    							stopAllScripts();
    						} else {
    							// Yes, so withdraw.
    							bank.atItem(gear[mode], "Withdraw 1");
    						}
    
    						// Is the inventory still full?
    						if (isInventoryFull()) {
    							// Yes, so rebank.
    							log("Inventory is still full, rebanking.");
    							return random(500, 750);
    						} else {
    							// No, so head back to the spots.
    							log("Banked all, heading back to area.");
    							state = S_WALKTO_AREA;
    							return random(500, 750);
    						}
    					} else {
    						// No, so walk to the booth.
    						log("Found bank, but it isn't on screen, walking to location.");
    						walkTileRand(booth.getLocation());
    						return random(500, 750);
    					}
    				} else {
    					// No, so increment fails and try again.
    					log("Unable to find a bank booth, trying "
    							+ (maxFails - fails) + " more times.");
    					fails++;
    					return random(1500, 3000);
    				}
    
    				// S_DROP - Drop inventory, use for power fishing.
    			case S_DROP:
    				log("Dropping everything except gear.");
    				dropAllExcept(gear);
    				state = S_FISH;
    				return random(500, 750);
    
    				// Default - Unknown state.
    			default:
    				log("Unknown state: " + state + " terminating script.");
    				return -1;
    		}
    	}
    
    	//
    	// walkTileRand( )
    	//
    	// This method provides a means for the script to walk to a location more
    	// randomly than RSBot's standard walkTileMM function.
    	//
    	public void walkTileRand(RSTile tile) {
    		// Local objects:
    		RSTile temp = new RSTile(tile.getX() + random(-2, 2), tile.getY()
    				+ random(-2, 2));
    
    		walkTileMM(temp);
    	}
    
    	//
    	// antiBan( )
    	//
    	// This method provides a psuedo means of antiBan.
    	// Not sure that this is the greatest method of anti-ban, due
    	// to it's repetiveness.
    	//
    	int antiBan() {
    		int GambleInt = random(1, 6);
    
    		switch (GambleInt) {
    			case 1:
    				wait(random(1000, 1500));
    				break;
    
    			case 2:
    				int x = random(0, 750);
    				int y = random(0, 500);
    				moveMouse(0, 0, x, y);
    				return random(1000, 1500);
    
    			case 3:
    				// Is the current tab the inventory?
    				if (getCurrentTab() != TAB_INVENTORY) {
    					// No, so switch to the inventory tab.
    					openTab(TAB_INVENTORY);
    					return random(500, 750);
    				} else {
    					// No, so return
    					return random(500, 750);
    				}
    
    			case 4:
    				// If the player is moving, then abort.
    				if (getMyPlayer().isMoving()) {
    					return random(750, 1000);
    				}
    
    				if (System.currentTimeMillis() - lastCheck >= checkTime) {
    					lastCheck = System.currentTimeMillis();
    					checkTime = random(60000, 180000);
    
    					if (getCurrentTab() != TAB_STATS) {
    						openTab(TAB_STATS);
    					}
    					moveMouse(663, 292, 50, 28);
    					return random(5000, 8000);
    				}
    
    			case 5:
    				if (random(1, 8) == 2) {
    					int angle = getCameraAngle() + random(-90, 90);
    					if (angle < 0) {
    						angle = 0;
    					}
    					if (angle > 359) {
    						angle = 0;
    					}
    
    					setCameraRotation(angle);
    				}
    				return random(500, 750);
    		}
    
    		return random(500, 1000);
    	}
    
    	//
    	// onRepaint( )
    	//
    	// This method is called every time the graphics is updated.
    	//
    	//
    	// onRepaint( )
    	//
    	// This method is called every time the graphics is updated.
    	//
    	public void onRepaint(Graphics g) {
    		/*
    		 * Graphics h = image.getGraphics(); try { ImageIO.write(image, "jpg",
    		 * new File("progressReport.jpg")); } catch (IOException e) {
    		 * e.printStackTrace(); }
    		 */
    
    		// local objects:
    		int index = Skills.getStatIndex("Fishing");
    		int exp = 0;
    		int levels;
    		long hours = 0, minutes = 0, seconds = 0;
    		long time;
    		long untilhour = 0, untilmin = 0, untilsec = 0;
    		double temptime = 0;
    
    		// Has start time been previously set?
    		if (startTime == 0) {
    			startTime = System.currentTimeMillis();
    		}
    
    		// Calculate hours, minutes and seconds.
    		time = System.currentTimeMillis() - startTime;
    		seconds = time / 1000;
    		if (seconds >= 60) {
    			minutes = seconds / 60;
    			seconds -= minutes * 60;
    		}
    		if (minutes >= 60) {
    			hours = minutes / 60;
    			minutes -= hours * 60;
    		}
    
    		// Has variables been previously defined?
    		if (startLevel == 0 || startExp == 0) {
    			// No, so define them now.
    			startLevel = skills.getCurrentSkillLevel(index);
    			startExp = skills.getCurrentSkillExp(index);
    			oldExp = 0;
    		}
    
    		// Calculate catches based on experience changes.
    		exp = skills.getCurrentSkillExp(index) - startExp;
    		if (exp > oldExp) {
    			xpPerCatch = exp - oldExp;
    			oldExp = exp;
    			catches++;
    			countToNext = skills.getXPToNextLevel(STAT_FISHING) / xpPerCatch
    					+ 1;
    		}
    
    		// Calculate levels gained.
    		levels = skills.getCurrentSkillLevel(index) - startLevel;
    		if (levels > oldLevels) {
    			oldLevels = levels;
    		}
    
    		//
    		if (System.currentTimeMillis() - lastAvgCheck >= 60000) {
    			lastAvgCheck = System.currentTimeMillis();
    			avgPerHour = (catches - oldCatches) * 60;
    			oldCatches = catches;
    		}
    		if (countToNext == 0) {
    			untilsec = 0;
    			untilhour = 0;
    			untilmin = 0;
    		} else {
    			if (avgPerHour == 0) {
    				untilsec = 0;
    				untilhour = 0;
    				untilmin = 0;
    			} else {
    				temptime = (double) countToNext / avgPerHour;
    				untilsec = (int) (temptime * 3600);
    				untilmin = untilsec / 60;
    				untilsec -= untilmin * 60;
    				untilhour = untilmin / 60;
    				untilmin -= untilhour * 60;
    			}
    		}
    		// Draw information.
    
    		g.setColor(Color.WHITE);
    		g.drawString(getName() + " v" + getVersion(), 9, 171);
    		g.drawString("XP Gained: " + exp, 9, 187);
    		g.drawString("Levels Gained: " + levels, 9, 203);
    		g.drawString("Percent to next level: "
    				+ skills.getPercentToNextLevel(index), 9, 219);
    		g.drawString("Catches: " + catches, 9, 235);
    		g.drawString("Catches to next level: " + countToNext, 9, 251);
    		g.drawString("Times avoided combat: " + avoidedCombat, 9, 267);
    		g.drawString("Whirlpools Avoided: " + whirlpoolsAvoided, 9, 283);
    		g.drawString("Time running: " + hours + "." + minutes + "." + seconds,
    				9, 299);
    		g.drawString("Average per hour: " + avgPerHour, 9, 315);
    		g.drawString("Est time untill next level: " + untilhour + "."
    				+ untilmin + "." + untilsec, 9, 331);
    
    		/*
    		 * h.setColor( Color.WHITE ); h.drawString(getName( ) + " v" +
    		 * getVersion( ), 9, 171); h.drawString("XP Gained: " + exp, 9, 187);
    		 * h.drawString("Levels Gained: " + levels, 9, 203);
    		 * h.drawString("Percent to next level: " +
    		 * skills.getPercentToNextLevel( index ), 9, 219);
    		 * h.drawString("Catches: " + catches, 9, 235); h.drawString("Catches to
    		 * next level: " + countToNext, 9, 251); h.drawString("Times avoided
    		 * combat: " + avoidedCombat, 9, 267); h.drawString("Whirlpools Avoided: " +
    		 * whirlpoolsAvoided, 9, 283); h.drawString("Time running: " + hours +
    		 * "." + minutes + "." + seconds, 9, 299); h.drawString("Average per
    		 * hour: " + avgPerHour, 9, 315); h.drawString("Est time untill next
    		 * level: " + untilhour + "." + untilmin + "." + untilsec , 9, 331);
    		 */
    	}
    
    	// Modified to drop all except:)
    	public boolean dropAllExcept(int... items) {
    		boolean drop = false;
    
    		for (int item : getInventoryArray()) {
    			drop = true;
    			for (int nodrop : items) {
    				if (item == nodrop) {
    					drop = false;
    				}
    			}
    
    			if (drop && item != -1) {
    				for (int i = 0; i < getInventoryCount(item); i++) {
    					atInventoryItem(item, "Drop");
    					wait(random(500, 750));
    				}
    			}
    		}
    
    		return true;
    	}
    
    }
    
     
  17. Unread #9 - Nov 22, 2008 at 4:48 PM
  18. law and order
    Joined:
    Nov 20, 2008
    Posts:
    142
    Referrals:
    0
    Sythe Gold:
    0

    law and order Active Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    ok does anyone know a way I can make these code things smaller?
     
  19. Unread #10 - Nov 22, 2008 at 8:00 PM
  20. Lacey 01
    Joined:
    Oct 11, 2008
    Posts:
    253
    Referrals:
    1
    Sythe Gold:
    0

    Lacey 01 Forum Addict

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    Code:
    testing[code] edit:nvm dont work.
     
  21. Unread #11 - Nov 22, 2008 at 9:35 PM
  22. law and order
    Joined:
    Nov 20, 2008
    Posts:
    142
    Referrals:
    0
    Sythe Gold:
    0

    law and order Active Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    i did the code thing but for some reason it did not work ill try to make them atachments
     
  23. Unread #12 - Dec 4, 2008 at 3:23 PM
  24. Clue Scrolls
    Joined:
    Nov 28, 2008
    Posts:
    69
    Referrals:
    1
    Sythe Gold:
    0

    Clue Scrolls Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    Any1 know the arguments or w/e of super Fletch? is so can you send them to me or something thank you :p
     
  25. Unread #13 - Dec 4, 2008 at 5:23 PM
  26. LunarEclipse
    Joined:
    Jul 3, 2008
    Posts:
    90
    Referrals:
    0
    Sythe Gold:
    0

    LunarEclipse Member

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    1. Tenac's guild miner.
    2. Primary:
    -Mines Coal in the Miner's Guild.
    -Banks the mined ore.
    Optional:
    -Mines Mithril.
    -Droppes the mined ore.

    3.
    Code:
    import java.awt.*;
    import java.util.*;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    
    import com.speljohan.rsbot.accessors.Player;
    import com.speljohan.rsbot.bot.*;
    import com.speljohan.rsbot.script.*;
    import com.speljohan.rsbot.script.wrappers.*;
    import com.speljohan.rsbot.event.listeners.*;
    
    public class TenacGuildMiner extends Script implements PaintListener {
    
        int[] bankerID = { 6200 };
        int[] bankBoothID = { 11758 };
            
        RSTile topLadderObjectTile = new RSTile(3019, 3339);
        int[] ladderID = { 30941 };
        int[] coalRockID = { 31068, 31069, 31070 };
        int[] mithRockID = { 31086, 31087, 31088 };
    
        int coalID = 453;
        int mithrilID = 447;
        int[] gemID = { 1617, 1619, 1621, 1623 };
        int[] pickaxeHandleID = { 466 };
        int[] pickaxeID = { 1265, 1267, 1269, 1273, 1271, 1275 };
        int[] pickaxeHeadID = { 480, 482, 484, 486, 488, 490 };
        int[] brokenPickaxeID =  { 468, 470, 472, 474, 476, 478 };
        
        int[] junkItems = { 1917, 1971 }; //beer, kebab
        int goldPiecesID = 995;
    
        RSTile lumbridgeTile = new RSTile(3221, 3218);
    
        RSTile bankTile = new RSTile(3014, 3356);
        RSTile[] betweenBankAndLadderTiles = { new RSTile(3019, 3351), new RSTile(3022, 3351), new RSTile(3024, 3352) };
        RSTile ladderTile = new RSTile(3021, 3341);
        //RSTile[] topLadderTiles = { new RSTile(3022, 3341), new RSTile(3022, 3337) };
        //RSTile[] bottomLadderTiles = { new RSTile(3021, 9741), new RSTile(3022, 9740) };
    
        RSTile[] coalToLadderPath = { new RSTile(3046, 9752), new RSTile(3044, 9745), new RSTile(3044, 9738), 
                                      new RSTile(3037, 9737), new RSTile(3030, 9737), new RSTile(3019, 9739) };
    
        RSTile[] ladderToCoalPath = { new RSTile(3019, 9739), new RSTile(3030, 9737), new RSTile(3037, 9737), 
                                      new RSTile(3044, 9738), new RSTile(3044, 9745), new RSTile(3046, 9752) };
    
        RSTile[] lumbridgeToFalidorPath = { new RSTile(3226, 3218), new RSTile(3233, 3220), new RSTile(3233, 3225), 
                                            new RSTile(3231, 3230), new RSTile(3228, 3233), new RSTile(3223, 3238), 
                                            new RSTile(3221, 3242), new RSTile(3219, 3247), new RSTile(3218, 3251), 
                                            new RSTile(3217, 3256), new RSTile(3217, 3257), new RSTile(3217, 3261), 
                                            new RSTile(3217, 3266), new RSTile(3216, 3272), new RSTile(3216, 3277), 
                                            new RSTile(3210, 3280), new RSTile(3205, 3280), new RSTile(3204, 3279), 
                                            new RSTile(3197, 3279), new RSTile(3190, 3282), new RSTile(3184, 3286), 
                                            new RSTile(3178, 3287), new RSTile(3172, 3286), new RSTile(3165, 3285), 
                                            new RSTile(3158, 3291), new RSTile(3149, 3296), new RSTile(3143, 3294), 
                                            new RSTile(3137, 3295), new RSTile(3136, 3295), new RSTile(3130, 3295), 
                                            new RSTile(3123, 3299), new RSTile(3118, 3296), new RSTile(3112, 3295),
                                            new RSTile(3106, 3295), new RSTile(3099, 3295), new RSTile(3094, 3292), 
                                            new RSTile(3088, 3290), new RSTile(3082, 3289), new RSTile(3076, 3288), 
                                            new RSTile(3074, 3284), new RSTile(3074, 3280), new RSTile(3069, 3277), 
                                            new RSTile(3063, 3277), new RSTile(3057, 3276), new RSTile(3050, 3276), 
                                            new RSTile(3047, 3276), new RSTile(3044, 3274), new RSTile(3037, 3277), 
                                            new RSTile(3030, 3278), new RSTile(3024, 3276), new RSTile(3018, 3275), 
                                            new RSTile(3013, 3276), new RSTile(3011, 3278), new RSTile(3007, 3284), 
                                            new RSTile(3004, 3289), new RSTile(3007, 3294), new RSTile(3006, 3299), 
                                            new RSTile(3004, 3304), new RSTile(3006, 3310), new RSTile(3007, 3316), 
                                            new RSTile(3007, 3321), new RSTile(3005, 3326), new RSTile(3007, 3331), 
                                             new RSTile(3007, 3332), new RSTile(3007, 3337), new RSTile(3007, 3343), 
                                             new RSTile(3007, 3349), new RSTile(3005, 3355), new RSTile(3007, 3361), 
                                             new RSTile(3012, 3361), new RSTile(3015, 3355) };
    
        long startTime = System.currentTimeMillis();
        int startingLevel = skills.getCurrentSkillLevel(STAT_MINING);
        int startingExperience = skills.getCurrentSkillExp(STAT_MINING);
        int oldExperience = 0;
        int ranAwayFromCombat = 0;
        int gemsBanked = 0;
        int coalBanked = 0;
        int mithBanked = 0;
        int gemsDropped = 0;
        int coalDropped = 0;
        int mithDropped = 0;
        int xpPerCoal = 50;
        int xpPerMithril = 80;
        int energyToRunAt = random(40, 90);
    
        boolean powermine = false;
        int invCountToDrop = random(10, 29);
        boolean dropping = false;
        
        boolean walkBack = false;
        boolean miningMith = false;
        boolean runAway = false;
    
        int priceOfCoal = getMarketPriceOfItem(coalID);
        int priceOfMithril = getMarketPriceOfItem(mithrilID);
    
        public double getVersion() {
            return 2.0;
        }
    
        public String getName() {
            return "Guild Miner";
        }
    
        public String getAuthor() {
            return "Tenac";
        }
    
        public String getScriptCategory() {
            return "Mining";
        }
    
        public String getScriptDescription( ) {
            String html = "";
    
            html += "<html>n";
            html += "<body>n";
    
            html += "<font size="6">";
            html += "<center><h2>" + getName() + "</h2></center>n";
            html += "</font>";
    
            html += "<b>Author:</b>" + getAuthor() + "<br/>";
            html += "<b>Version:</b>" + getVersion() + "<br/><br>";
    
            html += "Start anywhere with a pickaxe and at least 60 mining, preferably inside Falidor East bank or Mining Guild.<br>n<br>";
            
            html += "<input type="checkbox" name="mineMith" value="yes" checked>Mine mithril rocks also?n<br>";
            html += "<input type="checkbox" name="powermine" value="yes">Drop ores?n<br>";
            
            html += "</body>n";
            html += "</htmln";
    
            return html;
        }
    
        public boolean onStart(Map<String, String> args) {
            startTime = System.currentTimeMillis();
            if(isLoggedIn()) {
                startingLevel = skills.getCurrentSkillLevel(STAT_MINING);
                startingExperience = skills.getCurrentSkillExp(STAT_MINING);
                setCameraAltitude(true);
                setCameraRotation(random(1, 359));
            }
    
            if(args.get("mineMith") != null)
                miningMith = true;
    
            if(args.get("powermine") != null)
                powermine = true;
    
            Bot.getEventManager().addListener(PaintListener.class, this);
            return true;
        }
    
        public void onFinish() {
            Bot.getEventManager().removeListener(PaintListener.class, this);
        }
    
        int height = 1;
    
        public void onRepaint(Graphics g) {
            if(isLoggedIn()) {
                if(startTime == 0)
                    startTime = System.currentTimeMillis();
    
                if(startingLevel == 0 || startingExperience == 0) {
                    startingLevel = skills.getCurrentSkillLevel(STAT_MINING);
                }
    
                long millis = System.currentTimeMillis() - startTime;
                long hours = millis / (1000 * 60 * 60);
                millis -= hours * (1000 * 60 * 60);
                long minutes = millis / (1000 * 60);
                millis -= minutes * (1000 * 60);
                long seconds = millis / 1000;
    
                g.setColor(new Color(33, 46, 207, 100));
                //window is (0, 0) (337, 515)
                //my box is (515 - 260, 0) (337, 200)
                int x = 515 - 230;
                int y = 4;
                g.fillRoundRect(x, y, 230, height, 20, 20);
                g.setColor(new Color(26, 36, 162, 255));
                g.drawRoundRect(x, y, 230, height, 20, 20);
                
                g.setColor(new Color(255, 255, 255, 255));
                g.drawString(getAuthor() + "'s " + getName() + " v" + getVersion(), x + 10, y += 15);
                g.drawString("Running for " + hours + ":" + minutes + ":" + seconds, x + 10, y += 15);
                if(powermine) {
                    g.drawString("Dropped " + coalDropped + " coal", x + 10, y += 15);
                    g.drawString("Dropped " + mithDropped + " mithril", x + 10, y += 15);
                    g.drawString("Dropped " + gemsDropped + " gems", x + 10, y += 15);
                } else {
                    g.drawString("Banked " + coalBanked + " coal", x + 10, y += 15);
                    g.drawString("Banked " + mithBanked + " mithril", x + 10, y += 15);
                    g.drawString("Banked " + gemsBanked + " gems", x + 10, y += 15);
                }
                if(!powermine) {
                    g.drawString("Gained " + ((coalBanked * priceOfCoal) + (mithBanked * priceOfMithril)) + "gp", x + 10, y += 15);
                    //averaging __gp per hour
                }
                g.drawString("Currently level " + skills.getCurrentSkillLevel(STAT_MINING) + " and " + skills.getPercentToNextLevel(STAT_MINING) + "% to next level", x + 10, y += 15);
                g.drawString("Gained " + (skills.getCurrentSkillLevel(STAT_MINING) - startingLevel) + " levels", x + 10, y += 15);
                //___ until level (skills.getCurrentSkillLevel(STAT_MINING) + 1)
                g.drawString("Gained " + (skills.getCurrentSkillExp(STAT_MINING) - startingExperience) + " experience", x + 10, y += 15);
                //averaging ____ experience per hour
                g.drawString("Ran from combat " + ranAwayFromCombat + " times", x + 10, y += 15);
                g.drawString("" + (int)(skills.getXPToNextLevel(STAT_MINING) / xpPerCoal + 1) + " more coal until next level", x + 10, y += 15);
                height = y + 3;
            }
        }
    
        public void printProgressReport() {
            if(startTime == 0)
                startTime = System.currentTimeMillis();
            if(startingLevel == 0 || startingExperience == 0) {
                startingLevel = skills.getCurrentSkillLevel(STAT_MINING);
                startingExperience = skills.getCurrentSkillExp(STAT_MINING);
            }
            long millis = System.currentTimeMillis() - startTime;
            long hours = millis / (1000 * 60 * 60);
            millis -= hours * (1000 * 60 * 60);
            long minutes = millis / (1000 * 60);
            millis -= minutes * (1000 * 60);
            long seconds = millis / 1000;
            log(getAuthor() + "'s " + getName() + " v" + getVersion());
            log("Running for " + hours + ":" + minutes + ":" + seconds);
            if(powermine) {
                log("Dropped " + coalDropped + " coal");
                log("Dropped " + mithDropped + " mithril");
                log("Dropped " + gemsDropped + " gems");
            } else {
                log("Banked " + coalBanked + " coal");
                log("Banked " + mithBanked + " mithril");
                log("Banked " + gemsBanked + " gems");
            }
            if(!powermine) {
                log("Gained " + ((coalBanked * priceOfCoal) + (mithBanked * priceOfMithril)) + "gp");
                //averaging __gp per hour
            }
            log("Currently level " + skills.getCurrentSkillLevel(STAT_MINING) + " and " + skills.getPercentToNextLevel(STAT_MINING) + "% to next level");
            log("Gained " + (skills.getCurrentSkillLevel(STAT_MINING) - startingLevel) + " levels");
            //___ until level (skills.getCurrentSkillLevel(STAT_MINING) + 1)
            log("Gained " + (skills.getCurrentSkillExp(STAT_MINING) - startingExperience) + " experience");
            //averaging ____ experience per hour
            log("Ran from combat " + ranAwayFromCombat + " times");
            log("" + (int)(skills.getXPToNextLevel(STAT_MINING) / xpPerCoal + 1) + " more coal until next level");
        }
    
        public int getMarketPriceOfItem(int id) {
            String pageSource = "";
            int begin = 0;
            int end = 0;
            try {
                URL theUrl = new URL("http://itemdb-rs.runescape.com/viewitem.ws?obj=" + id);
                URLConnection theUrlConnection = theUrl.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(theUrlConnection.getInputStream()));
                String inputLine = "";
                while ((inputLine = in.readLine()) != null)
                    pageSource += inputLine;
                in.close();
                pageSource = pageSource.replaceAll("n", "");
                pageSource = pageSource.replaceAll("t", "");
                begin = pageSource.indexOf("<b>Market price:</b> ") + ("<b>Market price:</b> ").length();
                end = pageSource.indexOf("</span><span><b>Maximum price:</b>");
            } catch (Exception e) {
                System.out.println("Error obtaining price of http://itemdb-rs.runescape.com/viewitem.ws?obj=" + id);
            }
            return (int)new Integer(pageSource.substring(begin, end)).intValue();
        }
    
        public int loop() {
            if(!isLoggedIn())
                return random(500, 800);
    
            //if(getGroundItemByID(17, pickaxeHeadID) != null && (isCarryingItem(pickaxeHandleID)))
            if(getGroundItemByID(17, pickaxeHeadID) != null)
                return fixPickaxe();
    
            if(getEnergy() >= energyToRunAt) {
                energyToRunAt = random(40, 90);
                setRun(true);
            }
            
            if(getMyPlayer().isInCombat())
                runAway = true;
            
            if(runAway)
                return runAway();
            
            if(distanceTo(lumbridgeTile) <= 17)
                walkBack = true;
    
            if(isLost()) {
                if(myGetNextTile(lumbridgeToFalidorPath, 17) == null)
                    return teleportToLumbridge();
                walkBack = true;
            }
    
            if(walkBack) {
                if(myWalkPath(lumbridgeToFalidorPath, 17, 1)) {
                    walkBack = false;
                    return depositInventory();
                }
            }
    
            //will never be called since the  rsbot equipment interface is fucked up 
            if(isCarryingItem(brokenPickaxeID) || isCarryingItem(pickaxeHandleID))
                return getNewPick();
    
            if(isCarryingJunk())
                return dropJunk();
    
            if(canEquipPickaxe())
                return wieldPickaxe();
    
            if(powermine && (getInventoryCount() >= invCountToDrop || isInventoryFull()))
                dropping = true;
    
            if(dropping)
                return dropInventory();
    
            if(isInventoryFull() && !powermine)
                return depositInventory();
    
            if(isInventoryFull())
                return depositInventory();
    
            return mineCoal();
        }
    
        public boolean isLost() {
            if(distanceTo(lumbridgeTile) <= 17)
                    return false;
            if(distanceTo(bankTile) <= 17)
                return false;
            if(distanceTo(ladderTile) <= 17)
                return false;
            for(int i = 0; i < betweenBankAndLadderTiles.length - 1; i++)
                if(distanceTo(betweenBankAndLadderTiles[i]) <= 17)
                        return false;
            for(int i = 0; i < coalToLadderPath.length - 1; i++)
                if(distanceTo(coalToLadderPath[i]) <= 17)
                        return false;
            return true;
        }
    
        public int dropInventory() {
            if(atInventoryItem(coalID, "Drop")) {
                coalDropped++;
                wait(random(500, 700));
                return random(50, 75);
            } else if(atInventoryItem(mithrilID, "Drop")) {
                mithDropped++;
                wait(random(500, 700));
                return random(50, 75);
            }
            for(int i = 0; i < gemID.length; i++) {
                if(atInventoryItem(gemID[i], "Drop")) {
                    gemsDropped++;
                    wait(random(500, 700));
                    return random(50, 75);
                }
            }
            dropping = false;
            invCountToDrop = random(10, 29);
            return random(50, 75);
        }
    
        public boolean isCarryingJunk() {
            for(int i = 0; i < junkItems.length; i++) {
                if(inventoryContainsOneOf(junkItems[i])) {
                    return true;
                }
            }
            RSItem item = getInventoryItemByID(goldPiecesID);
            if(item != null) {
                if(item.getStackSize() <= 5000) {
                    return true;
                }
            }
            return false;
        }
        
        public int dropJunk() {
            for(int i = 0; i < junkItems.length; i++) {
                if(inventoryContainsOneOf(junkItems[i])) {
                    if(atInventoryItem(junkItems[i], "Drop"))
                        return random(550, 700);
                }
            }
            RSItem item = getInventoryItemByID(goldPiecesID);
            if(item != null) {
                if(item.getStackSize() <= 5000) {
                    if(atInventoryItem(goldPiecesID, "Drop"))
                        return random(550, 700);
                }
            }
            return random(40, 100);
        }
        
        public void unequipWeapon() {
            openTab(TAB_EQUIPMENT);
            RSInterface equip = RSInterface.getInterface(INTERFACE_TAB_EQUIPMENT);
            RSInterfaceChild weapon = equip.getChild(16);
            atInterface(weapon);
            wait(random(400, 800));
            openTab(TAB_INVENTORY);
        }
    
        public int runAway() {
            log("Running away from combat...");
            setRun(true);
            if(getMyPlayer().getLocation().getY() > 6000) {
                if(!myWalkPath(coalToLadderPath, 17, 2))
                    return random(200, 300);
                waitUntilNotMoving();
                if(!climbUpLadder())
                    climbUpLadder();
                wait(random(2200, 3400));
            } else {
                RSTile curentTile = getMyPlayer().getLocation();
                int xRand = random(-16, 17);
                int yRand;
                if(random(0, 2) == 0)
                    yRand = -(int)(Math.sqrt((16 * 16) - (xRand * xRand)));
                else
                    yRand = -(int)(Math.sqrt((16 * 16)- (xRand * xRand)));
                RSTile runawayTile = new RSTile(curentTile.getX() + xRand, curentTile.getY() + yRand);
                myWalkTile(runawayTile, 0);
                waitUntilNearTile(runawayTile, 0);
                wait(random(2200, 3400));
                myWalkTile(curentTile, 1);
                wait(random(50, 600));
                if(random(0, 4) < 3)
                    moveMouse(random(100, 415), random(100, 237));
                waitUntilNotMoving();
            }
            runAway = false;
            ranAwayFromCombat++;
            log("Combat evaded.");
            return random(50, 100);
        }
    
        long upLadderTimer = System.currentTimeMillis();
    
        public boolean climbUpLadder() {
            upLadderTimer = System.currentTimeMillis();
            RSObject object = getNearestObjectById(16, ladderID);
            if(object == null)
                return false;
            if(!Calculations.onScreen(Calculations.tileToScreen(object.getLocation()))) {
                myWalkTile(object.getLocation(), 2);
                wait(random(50, 600));
                if(random(0, 4) < 3)
                    moveMouse(random(100, 415), random(100, 237));
                waitUntilNotMoving();
            }
            if(atObject(object, "up")) {
                while(getMyPlayer().getLocation().getY() > 6000 && System.currentTimeMillis() - upLadderTimer < 6000) {
                    if(getMyPlayer().getLocation().getY() < 6000)
                        return true;
                    if(System.currentTimeMillis() - upLadderTimer >= 6000)
                        return false;
                    wait(random(300, 600));
                }
            } else {
                setCameraRotation(random(1, 359));
                setCameraAltitude(true);
            }
            return false;
        }
    
        public boolean atTileModified(RSTile tile, String action) {
            try {
                Point location = Calculations.tileToScreen(tile);
                if (location.x == -1 || location.y == -1) return false;
                int xRand = 0;
                int yRand = 0;
                if(random(0, 2) == 0)
                    xRand = random(-26, -10);
                else
                    xRand = random(26, 10);
                if(random(0, 2) == 0)
                    yRand = random(-26, -10);
                else
                    yRand = random(26, 10);
                moveMouse(location, xRand, yRand);
                if (getMenuItems().get(0).toLowerCase().contains(action.toLowerCase())) {
                    clickMouse(true);
                } else {
                    clickMouse(false);
                    if (!atMenu(action)) return false;
                }
                waitUntilNotMoving();
                return true;
            } catch (Exception e) {
                return false;
            }
        }
    
        long downLadderTimer = System.currentTimeMillis();
    
        public boolean climbDownLadder() {
            downLadderTimer = System.currentTimeMillis();
            if(!Calculations.onScreen(Calculations.tileToScreen(topLadderObjectTile)))
                return false;
            if(atTileModified(topLadderObjectTile, "down")) {
                while(getMyPlayer().getLocation().getY() < 6000 && System.currentTimeMillis() - downLadderTimer < 6000) {
                    if(getMyPlayer().getLocation().getY() > 6000)
                        return true;
                    if(System.currentTimeMillis() - downLadderTimer >= 6000)
                        return false;
                    wait(random(300, 600));
                }
            } else {
                //if(distanceTo(ladderTile) > 6)
                //    myWalkTile(ladderTile, 2);
                setCameraRotation(random(1, 359));
                setCameraAltitude(true);
                //waitUntilNearTile(ladderTile, 0);
            }
            return false;
        }
    
        public int getNewPick() {
            if(getMyPlayer().getLocation().getY() > 6000) {
                if(myWalkPath(coalToLadderPath, 15, 3)) {
                    waitUntilNotMoving();
                    climbUpLadder();
                }
                return random(100, 200);
            }
            if(distanceTo(bankTile) > 4) {
                if(myWalkTile(bankTile, 1)) {
                    wait(random(50, 600));
                    if(random(0, 4) < 3)
                        moveMouse(random(100, 415), random(100, 237));
                    waitUntilNotMoving();
                } else {
                    RSTile theTile = betweenBankAndLadderTiles[random(0, betweenBankAndLadderTiles.length)];
                    myWalkTile(theTile, 1);
                    if(random(0, 2) == 0)
                        setCameraAltitude(true);
                    waitUntilNearTile(theTile, 2);
                }
                return random(200, 300);
            }
            if(!RSInterface.getInterface(INTERFACE_BANK).isValid()) {
                int r = random(0, 2);
                if(r == 0)
                    if(!atObject(getNearestObjectById(15, bankBoothID), "uickl"))
                        myWalkTile(bankTile, 2);
                if(r == 1)
                    if(!atNPC(getNearestNPCByID(bankerID), "ank Ba"))
                        myWalkTile(bankTile, 2);
                wait(random(200, 300));
                waitUntilNotMoving();
                return random(200, 300);
            }
            if(RSInterface.getInterface(INTERFACE_BANK).isValid()) {
                coalBanked += getInventoryCount(coalID);
                mithBanked += getInventoryCount(mithrilID);
                gemsBanked += getInventoryCount(gemID);
                bank.depositAll();
    
                //broken since the bank methods are broken
                /*
                bank.setWithdrawModeToItem();
                int skillMining = skills.getCurrentSkillLevel(STAT_MINING);
                for(int i = pickaxeID.length - 1; i >= 0; i--) {
                    if((skillMining >= 61 && i == 6) || 
                       (skillMining >= 41 && i == 5) || 
                       (skillMining >= 31 && i == 4) || 
                       (skillMining >= 21 && i == 3) || 
                       (skillMining >= 6 && i == 2)  || 
                       (skillMining >= 1 && i == 1)  || 
                       (skillMining >= 1 && i == 0)) {
                        bank.atItem(pickaxeID[i], "hdraw 1");
                        break;
                    }
                }
                wait(random(400, 900));
                if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 40 && inventoryContainsOneOf(pickaxeID[5]))
                    atInventoryItem(pickaxeID[5], "ield");
                else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 30 && inventoryContainsOneOf(pickaxeID[4]))
                    atInventoryItem(pickaxeID[4], "ield");
                else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 20 && inventoryContainsOneOf(pickaxeID[3]))
                    atInventoryItem(pickaxeID[3], "ield");
                else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 5 && inventoryContainsOneOf(pickaxeID[2]))
                    atInventoryItem(pickaxeID[2], "ield");
                else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[1]))
                    atInventoryItem(pickaxeID[1], "ield");
                else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[0]))
                    atInventoryItem(pickaxeID[0], "ield");
                */
                bank.close();
            }
            log("No useable pickaxe, ending script =(");
            printProgressReport();
            stopAllScripts();
            return random(100, 300);
        }
    
        int headAttempts;
        public int fixPickaxe() {
            RSItemTile head = getGroundItemByID(17, pickaxeHeadID);
            if(head != null) {
                log("Getting pickaxe head...");
                myWalkTile(head, 1);
                waitUntilNearTile(head, 0);
                headAttempts = 0;
                while(!atTile(head, "Take") || headAttempts <= 10) {
                    setCameraRotation(random(1, 359));
                    if(random(0, 3) == 0)
                        atTile(randomizeTile(head, 1, 1), "Walk");
                    headAttempts++;
                    
                }
            }
            //if(equipmentContains(pickaxeHandleID) || equipmentContains(brokenPickaxeID))
                unequipWeapon();
            openTab(TAB_INVENTORY);
            wait(random(200, 300));
            if(getInventoryItemByID(pickaxeHeadID) != null && getInventoryItemByID(pickaxeHandleID) != null)
                useItem(getInventoryItemByID(pickaxeHeadID), getInventoryItemByID(pickaxeHandleID));
    
            if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 40 && inventoryContainsOneOf(pickaxeID[5]))
                atInventoryItem(pickaxeID[5], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 30 && inventoryContainsOneOf(pickaxeID[4]))
                atInventoryItem(pickaxeID[4], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 20 && inventoryContainsOneOf(pickaxeID[3]))
                atInventoryItem(pickaxeID[3], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 5 && inventoryContainsOneOf(pickaxeID[2]))
                atInventoryItem(pickaxeID[2], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[1]))
                atInventoryItem(pickaxeID[1], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[0]))
                atInventoryItem(pickaxeID[0], "ield");
            return random(200, 400);
        }
    
        public boolean canEquipPickaxe() {
            if((skills.getCurrentSkillLevel(STAT_ATTACK) >= 40 && inventoryContainsOneOf(pickaxeID[5])) ||
               (skills.getCurrentSkillLevel(STAT_ATTACK) >= 30 && inventoryContainsOneOf(pickaxeID[4])) ||
               (skills.getCurrentSkillLevel(STAT_ATTACK) >= 20 && inventoryContainsOneOf(pickaxeID[3])) ||
               (skills.getCurrentSkillLevel(STAT_ATTACK) >= 5 && inventoryContainsOneOf(pickaxeID[2])) ||
               (skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[1])) ||
               (skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[0])))
                return true;
            return false;
        }
        
        public int wieldPickaxe() {
            if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 40 && inventoryContainsOneOf(pickaxeID[5]))
                atInventoryItem(pickaxeID[5], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 30 && inventoryContainsOneOf(pickaxeID[4]))
                atInventoryItem(pickaxeID[4], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 20 && inventoryContainsOneOf(pickaxeID[3]))
                atInventoryItem(pickaxeID[3], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 5 && inventoryContainsOneOf(pickaxeID[2]))
                atInventoryItem(pickaxeID[2], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[1]))
                atInventoryItem(pickaxeID[1], "ield");
            else if(skills.getCurrentSkillLevel(STAT_ATTACK) >= 1 && inventoryContainsOneOf(pickaxeID[0]))
                atInventoryItem(pickaxeID[0], "ield");
            return random(200, 400);
        }
    
        public int depositInventory() {
            if(getMyPlayer().getLocation().getY() > 6000) {
                if(myWalkPath(coalToLadderPath, 15, 3)) {
                    waitUntilNotMoving();
                    climbUpLadder();
                }
                return random(100, 200);
            }
            if(distanceTo(bankTile) > 4) {
                if(myWalkTile(bankTile, 1)) {
                    wait(random(50, 600));
                    if(random(0, 4) < 3)
                        moveMouse(random(100, 415), random(100, 237));
                    waitUntilNotMoving();
                } else {
                    RSTile theTile = betweenBankAndLadderTiles[random(0, betweenBankAndLadderTiles.length)];
                    myWalkTile(theTile, 1);
                    if(random(0, 2) == 0)
                        setCameraAltitude(true);
                    waitUntilNearTile(theTile, 2);
                }
                return random(200, 300);
            }
            if(!RSInterface.getInterface(INTERFACE_BANK).isValid()) {
                int r = random(0, 2);
                if(r == 0)
                    if(!atObject(getNearestObjectById(15, bankBoothID), "uickl"))
                        myWalkTile(bankTile, 2);
                if(r == 1)
                    if(!atNPC(getNearestNPCByID(bankerID), "ank Ba"))
                        myWalkTile(bankTile, 2);
                wait(random(200, 300));
                waitUntilNotMoving();
                return random(200, 300);
            }
            if(RSInterface.getInterface(INTERFACE_BANK).isValid()) {
                coalBanked += getInventoryCount(coalID);
                mithBanked += getInventoryCount(mithrilID);
                gemsBanked += getInventoryCount(gemID);
                bank.depositAllExcept(pickaxeID);
                if(random(0, 5) == 0)
                    bank.close();
            }
            return random(25, 100);
        }
    
        public void mouseOverMiningSkill() {
            openTab(TAB_STATS);
            //2 interfaces, one for the pickaxe image, other for the skill text
            RSInterfaceChild one = RSInterface.getInterface(320).getChild(9);
            RSInterfaceChild two = RSInterface.getInterface(320).getChild(10);
            if(random(0, 2) == 0)
                moveMouse(new Point(one.getAbsoluteX() + random(2, one.getWidth() - 1), one.getAbsoluteY() + random(2, one.getHeight() - 1)));
            else
                moveMouse(new Point(two.getAbsoluteX() + random(2, two.getWidth() - 1), two.getAbsoluteY() + random(2, two.getHeight() - 1)));
        }
    
        //4% chance of doing antiban: 17/425, every 4.8-19.2 seconds doing antiban
        public int antiBan() {
            switch(random(0, 425)) {
                case 0: setCameraRotation(random(1, 359)); break;
                case 1: setCameraRotation(random(1, 359)); break;
                case 2: setCameraRotation(random(1, 359)); break;
                case 3: setCameraRotation(random(1, 359)); break;
                case 4: setCameraRotation(random(1, 359)); break;
                case 5: setCameraRotation(random(1, 359)); break;
    
                case 6: setRun(true); break;
    
                case 7: moveMouse(random(0, 515), random(0, 337)); break;
                case 8: moveMouse(random(0, 515), random(0, 337)); break;
                case 9: moveMouse(random(100, 415), random(100, 237)); break;
                case 10: moveMouse(random(100, 415), random(100, 237)); break;
                case 11: moveMouse(random(100, 415), random(100, 237)); break;
                case 12: moveMouse(random(0, 764), random(0, 502)); break;
    
                case 13: mouseOverMiningSkill(); break;
                case 14: mouseOverMiningSkill(); break;
    
                case 15: openTab(TAB_INVENTORY); break;
                case 16: openTab(random(0, 13)); break;
    
                default: break;
            }
            return random(50, 200);
        }
    
        RSTile lastRockLocation = new RSTile(0000, 0000);
        RSObject rock;
        long timeIdle = System.currentTimeMillis();
    
        public boolean mineNewRock() {
            RSObject obj = getObjectAt(lastRockLocation);
            if(obj == null)
                return true;
            for(int i = 0; i < coalRockID.length; i++) {
                if(obj.getID() == coalRockID[i])
                    return false;
            }
            for(int i = 0; i < mithRockID.length; i++) {
                if(obj.getID() == mithRockID[i])
                    return false;
            }
            return true;
        }
    
        public boolean atRock(RSObject obj) {
            try {
                Point location = Calculations.tileToScreen(obj.getLocation());
                if (location.x == -1 || location.y == -1) return false;
                moveMouse(location, 3, 3);
                wait(random(40, 80));
                boolean validRock = false;
                RSObject temp = getObjectAt(obj.getLocation());
                if(temp != null) {
                    int id = temp.getID();
                    for(int i = 0; i < coalRockID.length; i++) {
                        if(id == coalRockID[i])
                            validRock = true;
                    }
                    if(!validRock) {
                        for(int i = 0; i < mithRockID.length; i++) {
                            if(id == mithRockID[i])
                                validRock = true;
                        }
                    }
                }
                if(!validRock)
                    return false;
                if(!getMenuItems().get(0).toLowerCase().contains(("ine R").toLowerCase())) {
                    moveMouse(location, 6, 6);
                    wait(random(40, 80));
                    if(!getMenuItems().get(0).toLowerCase().contains(("ine R").toLowerCase())) {
                        moveMouse(location, 6, 6);
                        wait(random(40, 80));
                        if(!getMenuItems().get(0).toLowerCase().contains(("ine R").toLowerCase())) {
                            moveMouse(location, 6, 6);
                            wait(random(40, 80));
                        }
                    }
                }
                    
                if(getMenuItems().get(0).toLowerCase().contains(("ine R").toLowerCase())) {
                    clickMouse(true);
                } else {
                    clickMouse(false);
                    if(!atMenu("ine R"))
                        return false;
                }
                wait(random(500, 1000));
                waitUntilNotMoving();
                return true;
            } catch (Exception e) {
                return false;
            }
        }
    
        private boolean isObjectOccupied(RSObject obj) {
            Player[] players = Bot.getClient().getPlayerArray();
            int[] playerIndex = Bot.getClient().getPlayerIndexArray();
            if(obj.getLocation() == null)
                return true;
            for(int element : playerIndex) {
                if(players[element] == null)
                    continue;
                RSPlayer player = new RSPlayer(players[element]);
                if(!player.getName().equals(getMyPlayer().getName()))
                    if(distanceBetween(obj.getLocation(), player.getLocation()) < 2 && player.getAnimation() != -1)
                        return true;
            }
            return false;
        }
    
        private RSObject findNearestUnoccupiedObject(RSObject... objects) {
            RSObject nearestObj = null;
            for(int i = 0; i < objects.length; i++) {
                if(isObjectOccupied(objects[i]))
                    continue;
                if(nearestObj == null)
                    nearestObj = objects[i];
                else if(distanceTo(objects[i].getLocation()) < distanceTo(nearestObj.getLocation()))
                    nearestObj = objects[i];
            }
            return nearestObj;
        }
    
        public int mineCoal() {
            if(getMyPlayer().getLocation().getY() < 6000) {
                if(!climbDownLadder()) {
                    if(myWalkTile(ladderTile, 2)) {
                        if(random(0, 4) < 3)
                            moveMouse(random(100, 415), random(100, 237));
                        waitUntilNearTile(ladderTile, 0);
                    } else {
                        RSTile theTile = betweenBankAndLadderTiles[random(0, betweenBankAndLadderTiles.length)];
                        myWalkTile(theTile, 1);
                        if(random(0, 2) == 0)
                            setCameraAltitude(true);
                        waitUntilNearTile(theTile, 2);
                    }
                    return random(200, 300);
                }
                return random(200, 400);
            }
    
            if(getMyPlayer().getAnimation() != -1)
                timeIdle = System.currentTimeMillis();
            
            if(getObjectAt(lastRockLocation) == null)
                lastRockLocation = new RSTile(0000, 0000);
    
            if(mineNewRock() || ((getMyPlayer().getAnimation() == -1) && (System.currentTimeMillis() - timeIdle >= 4000) && !getMyPlayer().isMoving())) {
                rock = null;
                if(miningMith && (findNearestUnoccupiedObject(findObjects(16, mithRockID)) != null || getNearestObjectById(16, mithRockID) != null)) {
                    if(findNearestUnoccupiedObject(findObjects(16, mithRockID)) != null)
                        rock = findNearestUnoccupiedObject(findObjects(16, mithRockID));
                    else
                        rock = getNearestObjectById(16, mithRockID);
                } else {
                    if(findNearestUnoccupiedObject(findObjects(10, coalRockID)) != null)
                        rock = findNearestUnoccupiedObject(findObjects(10, coalRockID));
                    else
                        rock = getNearestObjectById(16, coalRockID);
                }
                if(rock == null) {
                    if(distanceTo(ladderToCoalPath[ladderToCoalPath.length - 1]) < 6) {
                        myWalkPath(coalToLadderPath, 15, 3);
                        wait(random(50, 600));
                        if(random(0, 4) < 3)
                            moveMouse(random(100, 415), random(100, 237));
                        waitUntilNotMoving();
                        return random(50, 200);
                    }
                    if(distanceTo(coalToLadderPath[coalToLadderPath.length - 1]) < 6) {
                        myWalkPath(ladderToCoalPath, 15, 3);
                        wait(random(50, 600));
                        if(random(0, 4) < 3)
                            moveMouse(random(100, 415), random(100, 237));
                        waitUntilNotMoving();
                        return random(50, 200);
                    }
                    if(random(0, 2) == 0)
                        myWalkPath(ladderToCoalPath, 17, 3);
                    else
                        myWalkPath(coalToLadderPath, 17, 3);
    
                    wait(random(50, 600));
                    if(random(0, 4) < 3)
                        moveMouse(random(100, 415), random(100, 237));
                    waitUntilNotMoving();
                    return random(50, 200);
                }
                if(rock.getLocation().getY() > 9756) {
                    myWalkPath(coalToLadderPath, 17, 3);
                    waitUntilNotMoving();
                    lastRockLocation = new RSTile(0000, 0000);
                    return random(50, 200);
                }
                //if(!tileOnScreen(rock.getLocation())) {
                if(!Calculations.onScreen(Calculations.tileToScreen(rock.getLocation()))) {
                    if(!myWalkTile(rock.getLocation(), 2)) {
                        lastRockLocation = new RSTile(0000, 0000);
                        return random(20, 40);
                    }
                    if(random(0, 4) == 0)
                        setCameraAltitude(true);
                    wait(random(50, 200));
                    if(random(0, 4) < 3)
                        moveMouse(random(100, 415), random(100, 237));
                    waitUntilNotMoving();
                    return random(50, 200);
                }
                lastRockLocation = rock.getLocation();
                if(!atRock(rock))
                    setCameraRotation(random(1, 359));
    
                return random(100, 300);
            }
            return antiBan();
        }
    
        int tries = 0;
        public int teleportToLumbridge() {
            if(distanceTo(lumbridgeTile) > 17) {
                castSpell(1);
                wait(random(1500, 2400));
                if(getMyPlayer().getAnimation() != -1) {
                    wait(random(12500,14000));
                } else {
                     tries++;
                     if(tries >= 4) {
                         log("Unable to teleport to lumbridge, stopping script");
                         printProgressReport();
                         stopAllScripts();
                     }
                     int r = random(120000, 400000);
                     log("Unable to teleport to lumbridge, will attempt again in " + (r / 1000) + "seconds");
                     printProgressReport();
                     logout();
                     wait(r);
                     login();
                }
            }
            myWalkTile(lumbridgeTile, 1);
            setRun(true);
            waitUntilNearTile(lumbridgeTile, 2);
            return random(100, 600);
        }
    
        public void waitUntilNotMoving() {
            wait(random(700, 1000));
            while(getMyPlayer().isMoving())
                wait(random(25, 100));
        }
    
        public void waitUntilNearTile(RSTile tile, int dist) {
            wait(random(700, 1000));
            while(distanceTo(tile) >= dist && getMyPlayer().isMoving())
                wait(random(25, 100));
        }
    
        public boolean myWalkTile(RSTile theTile, int randomness) {
            if(theTile == null)
                return false;
            if((distanceTo(theTile)) <= 17) {
                RSTile newTile;
                if(randomness == 0)
                    newTile = new RSTile(theTile.getX(), theTile.getY());
                else
                    newTile = new RSTile(theTile.getX() + random(-randomness, randomness), theTile.getY() + random(-randomness, randomness));
    
                if(random(0, 30) == 0)
                    turnToTile(newTile, 15);
    
                if(tileOnScreen(newTile) && random(0, 10) == 0) {
                    if(!atTile(newTile, "Walk")) {
                        if(!walkTileMM(newTile)) {
                            //log("Failed walking to tile: (" + theTile.getX() + ", " + theTile.getY() + ")");
                            return false;
                        } else {
                            return true;
                        }
                    } else {
                        return true;
                    }
                } else {
                    if(!walkTileMM(newTile)) {
                        //log("Failed walking to tile: (" + theTile.getX() + ", " + theTile.getY() + ")");
                        return false;
                    } else {
                        return true;
                    }
                }
            } else {
                //log("Tile out of reach: (" + theTile.getX() + ", " + theTile.getY() + ")");
                return false;
            }
        }
    
        public RSTile myGetNextTile(RSTile[] path, int maxDist) {
            for(int i = path.length - 1; i >= 0; i--) {
                if(distanceTo(path[i]) <= maxDist) {
                    return path[i];
                }
            }
            return null;
        }
    
        /**
         * Walks to the next reachable tile in the path
         *
         * @param path The path it will walk
         * @param maxDist The max distance it will search for the next tile in the path
         * @param randomness the randomness it will add to clicking the tile
         * @return if you are within 4 tiles of the destination
         */
        public boolean myWalkPath(RSTile[] path, int maxDist, int randomness) {
            if(distanceTo(path[path.length - 1]) <= 4) {
                return true;
            } else {
                RSTile theTile = myGetNextTile(path, maxDist);
                if(theTile != null) {
                    myWalkTile(theTile, randomness);
                    waitUntilNearTile(theTile, 2);
                }
                return false;
            }
        }
    
        public RSObject getNearestObjectById(int range, int... ids) {
            for(int i = 0; i <= range; i++) {
                RSObject temp = findObject(i, ids);
                if(temp != null) {
                    return temp;
                }
            }
            return null;
        }
    
        public RSObject[] findObjects(int range, int... ids) {
            ArrayList<RSObject> matches = new ArrayList<RSObject>();
            RSTile pos = getMyPlayer().getLocation();
            int xBegin = pos.getX() - range;
            int yBegin = pos.getY() - range;
            int xEnd = pos.getX() + range;
            int yEnd = pos.getY() + range;
            for (int x = xBegin; x < xEnd; x++) {
                for (int y = yBegin; y < yEnd; y++) {
                    RSTile t = new RSTile(x, y);
                    RSObject obj = getObjectAt(t);
                    if (obj == null)
                        continue;
                    for (int objType : ids) {
                        if (objType == obj.getID())
                            matches.add(obj);
                    }
                }
            }
            try {
                matches.trimToSize();
                return (RSObject[]) matches.toArray(new RSObject[matches.size()]);
            } catch (Exception e) { }
            return new RSObject[0];
        }
    
    }
    4. No screens im sorry.
    -Runned for me, got already 75+ mining with it!

    Ps. Anyone! Tell me how to post a scroll bar in the Code! Thanks.
     
  27. Unread #14 - Dec 4, 2008 at 5:30 PM
  28. +Love+
    Joined:
    Nov 27, 2008
    Posts:
    1,870
    Referrals:
    1
    Sythe Gold:
    0

    +Love+ Guru
    Banned

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    SmartPC 3.7 Ultimate Pc script used this many times on my pures very useful and reliable.

    Code:
    import java.awt.*;
    import java.util.*;
    import com.speljohan.rsbot.script.*;
    import com.speljohan.rsbot.bot.*;
    import com.speljohan.rsbot.script.wrappers.*;
    import com.speljohan.rsbot.event.listeners.*;
    import com.speljohan.rsbot.event.events.*;
    
    public class SmartPC extends Script implements PaintListener{    
    
        public String getName() {  
            return "SmartPC";   
        }
    
        public double getVersion() {   
            return 3.7;      
        }
    
        public String getAuthor() { 
            return "Jan274";  
        }
    
        public String getmodifier() { 
            return "Cheeseiznice, Exile, Fatality";  
        }
        
        public String getScriptCategory() {
            return "Minigames";
        }
        
        public String getScriptDescription() {
            String html = "";
            html += "<html>\n";
            html += "<body>\n";
            html += "<h1>" + getName() + " v" + getVersion() + "</h1><br>\n";
            html += "Script by: " + getAuthor() + "<br>\n";
            html += "Modified by: " + getmodifier() + "<br>\n";
            html += "<h4>Description:</h4>SmartPC is a modified version of 'Jan274s Pest Control' script. The script has been altered for faster, more consistent execution, lower detectability, and will now spend points correctly.";
            html += "<br>";
            html += "<h4>Instructions:</h4>-Start script at lander dock (Optional-'BreakHandler')<br>";
            html += "-Make sure you have a working Autologin script in your AntiRandom folder.";
            html += "<br>";
                    html += "<br>";html += "Args: NONE= 0, Attack= 1, Strength= 2, Defence= 3, Range= 4, Prayer= 5, Magic= 6, Hitpoints= 7 && for prayer: Strength=1, Range=2, Mage=3 ";
            html += "<br>";
                    html += "<br>";
            html += "Enter Argument (one number only): <input type=\"text\" name=\"args\">";
            html += "</body>\n";
            html += "</html\n";
            return(html);
        }
    
        public boolean onStart(String[] args) {
            startTime = System.currentTimeMillis();
            Bot.getEventManager().addListener(PaintListener.class, this);
            num=Integer.parseInt(args[0]);
            whichPray=Integer.parseInt(args[1]);
            if(num==1){
                log("Points will be exchanged for Attack exp");
            }
                if(num==2){
                log("Points will be exchanged for Strength exp");
            }
                if(num==3){
                log("Points will be exchanged for Defence exp");
            }
                if(num==4){
                log("Points will be exchanged for Range exp");
            }
                if(num==5){
                log("Points will be exchanged for Prayer exp");
            }
                if(num==6){
                log("Points will be exchanged for Magic exp");
            }
                if(num==7){
                log("Points will be exchanged for Hitpoints exp");
            }
            return true;   
        }
        
        public void onFinish() {
            log("Script Ended.");
            Bot.getEventManager( ).removeListener(PaintListener.class, this);
        }
        
        long startTime;
        int state=1;
        int prev=0;
        int portW=0;
        int points=0;
        int won=0;
        int lost=0;
        int health;
        int door[]={14239, 14241, 14235, 14237, 14233, 14235, 14239};
        int portal[]={6150,6151,6152,6153,6142,6143,6144,6145};
        int gangplank[]={14315,25631,25632};
        int centerX=0;
        int centerY=0;
        int num;
        int whichPray;
        int randomInt;
        int GambleInt;
        long lastCheck = -1;
        long timer = System.currentTimeMillis();
    	long startIdle = System.currentTimeMillis();
        int checkTime;
        boolean notyet=true;
        boolean u=true;
        boolean setboat=false;
        String currentp ="none";
        int jpoints=0;
        int Evoid[]={3788, 3789};
    
        int startX;
        int startY;
        int desX;
        int desY;
        
        public RSTile bridge;
        public RSTile boat;
        
        RSTile first = new RSTile(2657, 2639);
        RSTile firstB = new RSTile(2661,2639);
        RSTile second = new RSTile(2644,2644);
        RSTile secondB = new RSTile(2640, 2644);
        RSTile third = new RSTile(2638,2653);
        RSTile thirdB = new RSTile(2634, 2653);
        RSTile cache;
        RSTile temp;
        
        //to center
        public RSTile[] toCenterTile;
        //to west
        public RSTile centToWestA[];
        public RSTile centToWestB[];
        //to east
        public RSTile centToEastA[];
        public RSTile centToEastB[];
        //to south door
        public RSTile centToSouth[];
        //to south-east
        public RSTile southToEast[];
        //to south-west
        public RSTile southToWest[];
        
        public RSTile westToSWest;
        
        public RSTile eastToSEast;
        
        public RSTile sWestToSEast;
       
        public RSTile center;
        public RSTile center1;
        public RSTile voidE=new RSTile(2659,2649);
    
        public int loop(){
            int j;
    		if(getMyPlayer().getAnimation() != -1) {
    			startIdle = System.currentTimeMillis();
    			RSTile lastLocation = getMyPlayer().getLocation();
    	if(System.currentTimeMillis() - startIdle >= 10000 && getMyPlayer().getAnimation() == -1 && getMyPlayer().getLocation() == lastLocation)
    				state = prev;
    						}
                 try{
                if(setboat == false){
                    setBoat();
                }
                        if (getEnergy() >= 100) {
                    setRun(true);
                        }
                if (getSetting(Methods.SETTING_AUTO_RETALIATE) != 0) {
                    openTab(Methods.TAB_ATTACK);
                    wait(random(300,600));
                    clickMouse(random(578,708), random(362,398), true);
                    wait(random(800, 1000));
                }
                setCameraRotation(1);
                if(getMyPlayer().isMoving()){
                    return random(400, 500);
                }
                if(state != 2 && findVoid() && distanceTo(temp) < 9){
                    makeTile();
                    currentp="none";
                    while(getMyPlayer().isMoving()){
                        wait(random(500, 900));
                    }
                                setRun(true);
                    walkToCenter();
                    while(getMyPlayer().isMoving()){
                        wait(random(500, 900));
                    }
                    wait(random(500, 600));
                    state=3;
                }
                if(distanceTo(bridge) > 2 && distanceTo(boat) > 2 && distanceTo(bridge) < 20){
                    if(distanceTo(bridge) > 17){
                        RSTile bridg = bridge;
                        int bX= bridg.getX();
                        int bY= bridg.getY();
                        RSTile a = new RSTile(bX,bY+5);
                        myWalkTile(a,1);
                        wait(random(3000, 4000));
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                    }
                    myWalkTile(bridge,1);
                    wait(2000);
                    while(getMyPlayer().isMoving()){
                        wait(random(500, 900));
                    }
                }
                if(distanceTo(bridge) < 2){
                    notyet=true;
                    currentp="none";
                    wait(random(1000,1350));
                    if(interfaceExists(242) || interfaceExists(211)) {
                        lost++;
                        } else if(interfaceExists(243)){
                        won++; }
                        while(interfaceExists(242) || interfaceExists(211) || interfaceExists(243)) {
                            pressContinue();
                            wait(random(650,750));
                        }
                    
    
                if(bridge==first){
    
                if(jpoints >= 100){
                    log("You reached over 100 points; spending now!");
                    spendPoints();
                    myWalkTile(bridge,1);
                    points=0;
                    jpoints=0;
                    if(distanceTo(bridge) < 4 || !(interfaceExists(242) || !(interfaceExists(211) || !(interfaceExists(243))))){
                        atObject(findObject(gangplank), "Cross");
                    }else{
                        return random(20,100);
                    }
                    wait(random(700, 1000));
                    state=2;
                }
            
            }
    
                    if(bridge==second){
    
                if(jpoints >= 100){
                    log("You reached over 100 points; spending now!");
                    spendPoints();
                    myWalkTile(bridge,1);
                    points=0;
                     jpoints=0;
                    if(distanceTo(bridge) < 4){
                        atObject(findObject(gangplank), "Cross");
                    }else{
                        return random(20,100);
                    }
                    wait(random(700, 1000));
                    state=2;
                }
            }
    
                if(bridge==third){
    
                if(jpoints >= 100){
                    log("You reached over 100 points; spending now!");
                    spendPoints();
                        setCameraRotation(1);
                        clickMouse(556,74,true);
                        wait(random(4000, 5000));
                    myWalkTile(bridge,1);
                    points=0;
                    jpoints=0;
                    if(distanceTo(bridge) < 4){
                        atObject(findObject(gangplank), "Cross");
                    }else{
                        return random(20,100);
                    }
                    wait(random(700, 1000));
                    state=2;
                }
            }
    
                    wait(random(700, 1000));
                    if(distanceTo(bridge) < 4){
                        atObject(findObject(gangplank), "Cross");
                    }else{
                        return random(20,100);
                    }
                    wait(random(700, 1000));
                    state=2;
                }
                switch(state){
                case 0:
                    if(getMyPlayer().getAnimation() != -1 || getMyPlayer().isInCombat()) {
                        antiBan();
                        wait(250);
                        }else{
                            state = prev;
                        }
                    return random(500, 1000);
                case 1:
                    if(distanceTo(boat) < 2){
                        state=2;
                    }
                    return random(20,100);
                case 2:
                    if(distanceTo(boat) < 2 || distanceTo(bridge) < 2){
                        RSInterfaceChild a = RSInterface.getChildInterface(407,16);
                        String text = a.getText();
                        jpoints=extract(text);
                        if(jpoints == 240 || jpoints >= 240){
                            log("Ending Script, you have over 240 points");
                            return -1;
                        }
                        antiBan();
                        return random(20,100);
                    }else{
                        setRun(true);
                        RSNPC squire = getNearestNPCByID(3781);
    					usePrayer();
                        if(squire==null){
                            return random(20,100);
                        }
                        makeTile();    
                        if(distanceTo(center) > 30){
                            currentp="none";
                            if(getMyPlayer().isMoving()) {
                                return random(20,100);
                            }
                            walkToCenter();
                            if(getMyPlayer().isMoving()) {
                                return random(20,100);
                            }
                        }
                        state=3;
                    }
                    return random(20,100);
                case 3:
                    RSNPC Atta;
                    Atta = getNearestNPCByName("Shifter", "Defiler", "Torcher", "Brawler", "Ravager");
                    if(Atta != null && distanceTo(Atta) < 7) {
                        atNPC2(Atta, "Attack");
                        state= 0;
                        prev= 3;
                       return random(20,100);
                    }else{
                        state=5;
                        prev=4;
                    }
                    return random(20,100);
                case 4:
                    stayNearPortal();
                    RSNPC mons;
                    mons = getNearestNPCByName("Spinner");
                    avoidBrawler(mons);
                    if(mons != null && distanceTo(mons) < 7) {
                        atNPC2(mons, "Attack");
                        state= 0;
                        prev= 4;
                        return random(20,100);    
                    }
                    stayNearPortal();
                    RSNPC Portal;
                    Portal = getNearestNPCByID(portal);
                    avoidBrawler(Portal);
                    if(Portal != null && distanceTo(Portal) < 5){
                        atNPC2(Portal, "Attack");
                        state= 0;
                        prev= 4;
                        return random(20,100);    
                    }
                    stayNearPortal();
                    RSNPC monst;
                    monst = getNearestNPCByName("Shifter", "Defiler", "Torcher", "Brawler", "Ravager");
                    if(monst != null && distanceTo(monst) < 7) {
                        atNPC2(monst, "Attack");
                        state= 0;
                        prev= 4;
                        return random(20,100);    
                    }else{
                        stayNearPortal();
                        wait(random(100, 500));
                        state = 5;
                        prev=4;
                    }
                    return random(20,100);
                case 5:
    				if(!(newPortal())){
                        if(distanceTo(bridge) > 2 && distanceTo(boat) > 2 && distanceTo(bridge) < 20){
                            myWalkTile(bridge,1);
                            wait(2000);
                            if(getMyPlayer().isMoving()){
                                return random(20,100);
                            }
    					}
                        return 100;
                    }else{
                        state=prev;
                    }
                    return random(20,100);
                }
            }catch(Exception e){ 
                e.printStackTrace(); 
            }
           return random(20,100);
        }
        
        public void setMaxAltitude() {
               Bot.getInputManager().pressKey((char) 38);
               wait(random(500,1000));
               Bot.getInputManager().releaseKey((char) 38);
        }
        
        public void pressContinue(){ 
            clickMouse(254+random(0,20), 455+random(0,4), true);
        }
        
        
    public int getSpec() {
    return getSetting(300);
    }
        
    public boolean specEnabled() {
    return (getSetting(301)) == 1;
    }
    
    public void doSpec() {
        if(getSpec() == 1000 && !(specEnabled() && distanceTo(boat) > 5)) {    
        openTab(Methods.TAB_ATTACK);    
            clickMouse(645+random(0,4), 425+random(0,4), true);
        }
        return;
    }
    
    public void usePrayer(){
    int prayerLevel = skills.getCurrentSkillLevel(STAT_PRAYER);
    if(whichPray==0) {
    return; }
    if(random(0, 2) == 0)
    wait(random(700,1000));
    openTab(Methods.TAB_PRAYER);
    wait(random(300, 500));
    openTab(Methods.TAB_PRAYER);
    wait(random(300, 500));
    if(whichPray==1) {//Strength prayer (melee)
    if(prayerLevel >=4 && prayerLevel <=12) {
        clickMouse(599+random(0,5), 228+random(0,5), true);
    }
    else if(prayerLevel >=13 && prayerLevel <=30) {
        clickMouse(599+random(0,5), 268+random(0,5), true);
    }
    else if(prayerLevel >=31) {
        clickMouse(712+random(0,5), 306+random(0,5), true);
    }
    }
    else if(whichPray==2) {//Range prayer
    if(prayerLevel >=8 && prayerLevel <=25) {
        clickMouse(673+random(0,5), 226+random(0,5), true);    
    }
    else if(prayerLevel >=26 && prayerLevel <=43) {
        clickMouse(599+random(0,5), 298+random(0,5), true);
    }
    else if(prayerLevel >=44) {
        clickMouse(559+random(0,5), 374+random(0,5), true);
    }
    }
    else if(whichPray==3) {//Magic prayer
    if(prayerLevel >=9 && prayerLevel <= 26) {
        clickMouse(709+random(0,5), 228+random(0,5), true);
    }
    else if(prayerLevel >=27 && prayerLevel <= 44) {
        clickMouse(634+random(0,5), 306+random(0,5), true);
    }
    else if(prayerLevel <=45) {
        clickMouse(599+random(0,5), 375+random(0,5), true);
    }
    }
    return;
    }
        
        public void antiBan(){
            int t;
            int u;
                t = random(0,9);
                u = random(0,15);
                if( u == 9 ){
                try{
                    switch(t){
                   case 8://Random mouse
                       moveMouse(0 + random(0, 500), 0 + random(0, 500));
                       break;
                   case 4://Does special attack if possible
                        doSpec();
                          break;
                   case 2://Random mouse
                       moveMouse(0 + random(0, 500), 0 + random(0, 500));
                       break;
                   case 3://Random player
                                      clickCharacter(getNearestPlayerByLevel(1,130) , "Cancel");
                                      break;
                   case 1://Leave empty
                   case 5://Max altitude
                       setMaxAltitude();
                       break;
                   case 0://Leave empty
                   case 7://Random mouse
                       moveMouse(0 + random(0, 500), 0 + random(0, 500));
                       break;
                   case 6://Checks stat you selected in argument
                       if ( getCurrentTab( ) != TAB_STATS ) {
                           openTab( TAB_STATS );
                                      if(num==1){
                moveMouse(580+random(1, 5),245+random(1, 5));;
            }
                                      if(num==2){
                moveMouse(580+random(1, 5),270+random(1, 5));;
            }
                                      if(num==3){
                moveMouse(580+random(1, 5),305+random(1, 5));;
            }
                                      if(num==4){
                moveMouse(580+random(1, 5),340+random(1, 5));;
            }
                                      if(num==5){
                moveMouse(580+random(1, 5),370+random(1, 5));;
            }
                                      if(num==6){
                moveMouse(580+random(1, 5),400+random(1, 5));;
            }
                                      if(num==7){
                moveMouse(630+random(1, 5),245+random(1, 5));;
            }
                                      if(num==0){
                moveMouse(580+random(1, 5),270+random(1, 5));;
            }
                       }
                       break;
                    }
                }catch(Exception e){ 
                    e.printStackTrace(); 
                } 
                }
            
        }
        
        public boolean findVoid(){
            RSNPC squire = getNearestNPCByID(3781);
            if(squire != null){
                temp = squire.getLocation();
                return true;
            }else{
                return false;
            }
        }
        
        public void makeTile()throws InterruptedException{
                findVoid();
                startX=temp.getX();
                startY=temp.getY();
                desX= temp.getX() + 2;
                desY= temp.getY() - 14;
                centerX=desX;
                centerY=desY;
                center=new RSTile(centerX,centerY);
                center1=new RSTile(centerX,centerY+7);
                toCenterTile=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                /* To West Tiles */
                startX=desX;
                startY=centerY;
                desX= startX - 12;
                desY=centerY;
                centToWestA=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                startX=desX - 4;
                desX=desX - 13;
                desY=centerY-1;
                centToWestB=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                westToSWest=new RSTile(desX+10, desY-9);
                /* To East Tiles */
                startX=centerX;
                startY=centerY;
                desX=startX + 12;
                desY=startY;
                centToEastA=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                startX=desX + 3;
                desX=startX + 7;
                desY=centerY-4;
                centToEastB=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                eastToSEast=new RSTile(desX-7, desY-8);
                /* To South Tile */
                startX=centerX;
                startY=centerY;
                desX=startX;
                desY=startY - 7;
                centToSouth=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                /* To South West Tile */
                startX=centerX;
                startY=desY- 3;
                desX=startX - 8;
                desY=startY - 10;
                southToWest=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
                sWestToSEast=new RSTile(centerX,desY);
                /* To South East Tile */
                desX=startX + 10;
                desY=startY - 10;
                southToEast=new RSTile[]{new RSTile(startX,startY),new RSTile(desX,desY)};
        }
        
        public int goPortal(int j)throws InterruptedException{
            int p;
            if(j==0){
                log("Choosing Random Portal");
                p = random(1,5);
            }else{
                p=j;
            }
            if(p==1){
                log("Going to West Portal");
                    RSTilePath towestA = new RSTilePath(randomizePath(centToWestA, 2, 2), this);
                    towestA.walkToEnd();
                    while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                    openDoor("West");
                    RSTilePath towestB = new RSTilePath(randomizePath(centToWestB, 2, 2), this);
                    towestB.walkToEnd();
                    currentp="west";
            }
            if(p==2){
                log("Going to East Portal");
                    RSTilePath toEastA = new RSTilePath(randomizePath(centToEastA, 2, 2), this);
                    toEastA.walkToEnd();
                    while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                    openDoor("East");
                    RSTilePath toeastB = new RSTilePath(randomizePath(centToEastB, 2, 2), this);
                    toeastB.walkToEnd();
                    currentp="east";    
            }
            if(p==3){
                log("Going to South-West Portal");
                    RSTilePath ToSouth = new RSTilePath(randomizePath(centToSouth, 2, 2), this);
                    ToSouth.walkToEnd();
                    while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                    openDoor("South");
                    RSTilePath toSouthWest = new RSTilePath(randomizePath(southToWest, 2, 2), this);
                    toSouthWest.walkToEnd();
                    currentp="sWest";
            }
            if(p==4){
                log("Going to South-East Portal");
                    RSTilePath toSouth = new RSTilePath(randomizePath(centToSouth, 2, 2), this);
                    toSouth.walkToEnd();
                    while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                    openDoor("South");
                    RSTilePath toSouthEast = new RSTilePath(randomizePath(southToEast, 2, 2), this);
                    toSouthEast.walkToEnd();
                    currentp="sEast";        
            }
            
            return random(200,400);
        }
        
    public int openDoor(String j) {
            RSObject temp = findObject(door);
            if(door == null){
                return (random(50, 100));
            }else{
                wait(random(100, 200));
                if(findObject(door) != null) {
                if(j == "West") {
                    setCompass('w');
                }
                else if(j == "East") {
                    setCompass('e');
                }
                else if(j == "South") {
                    setCompass('s');
                }
                }
                        if(atDoor(findObject(door), j, "Open")){
                    wait(2000);
                }
            }
            return (random(100, 200));
        }
    
        public int goFromPortal(int p)throws InterruptedException{
            if(currentp=="west"){
                    if(p==2){
                        log("Going to East Portal");
                        walkToCenter();
                                        goPortal(p);
                            currentp="east";
                    }
                    if(p==3){
                        log("Going to South-West Portal");
                        stayNearPortal();
                        myWalkTile(westToSWest,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToWest[1],1);
                        currentp="sWest";
                    }
                    if(p==4){
                        log("Going to South-East Portal");
                        stayNearPortal();
                        myWalkTile(westToSWest,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToWest[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(sWestToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToEast[1],1);
                        wait(random(2800,3000));
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="sEast";
                    }
                    return random(100,300);
                }
                if(currentp=="east"){
                    if(p==1){
                        log("Going to West Portal");
                        walkToCenter();
                        goPortal(p);
                    }
                    if(p==4){
                        log("Going to South-East Portal");
                        stayNearPortal();
                        wait(random(300,500));
                        myWalkTile(eastToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToEast[1],1);
                        currentp="sEast";
                    }
                    if(p==3){
                        log("Going to South-West Portal");
                        stayNearPortal();
                        myWalkTile(eastToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToEast[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(sWestToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToWest[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="sWest";
                    }
                    return random(200,400);
                }
                if(currentp=="sWest"){
                    if(p==1){
                        log("Going to West Portal");
                        stayNearPortal();
                        wait(random(100,300));
                        myWalkTile(westToSWest,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(centToWestB[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="west";
                    }
                    if(p==2){
                        stayNearPortal();
                        log("Going to East Portal");
                        myWalkTile(sWestToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToEast[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(eastToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(centToEastB[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="east";
                        wait(random(200, 500));
                    }
                    if(p==4){
                        log("Going to South-East Portal");
                        stayNearPortal();
                        myWalkTile(sWestToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToEast[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="sEast";
                    }
                    return random(200,400);
                }
                if(currentp=="sEast"){
                    if(p==1){
                        stayNearPortal();
                        log("Going to West Portal");
                        myWalkTile(sWestToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToWest[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(westToSWest,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(centToWestB[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="west";
                        wait(random(200, 500));
                    }
                    if(p==2){
                        stayNearPortal();
                        log("Going to East Portal");
                        myWalkTile(eastToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(centToEastB[1],1);
                        currentp="east";
                        wait(random(200, 500));
                    }
                    if(p==3){
                        log("Going to South-West Portal");
                        stayNearPortal();
                        myWalkTile(sWestToSEast,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        myWalkTile(southToWest[1],1);
                        while(getMyPlayer().isMoving()){
                            wait(random(100, 300));
                        }
                        currentp="sWest";
                    }
                    return random(100,300);
                }
                return random(200,400);
        }
    
        public int walkToCenter()throws InterruptedException{
            if(distanceTo(center) < 7){
                return -1;
            }
            if(currentp=="none"){
                log("Walking to center");
                myWalkTile(center1,3);
                while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                }
                wait(random(2000,2500));
                myWalkTile(center,1);
                while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                }
                wait(random(400,600));
            }
             if(currentp=="west"){
                 log("Walking to center");
                     RSTilePath towestB = new RSTilePath(randomizePath(centToWestB, 2, 2), this);
                     towestB.walkToStart();
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                     }
                     openDoor("East");
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                     }
                     RSTilePath towestA = new RSTilePath(randomizePath(centToWestA, 2, 2), this);
                     towestA.walkToStart();
             }    
             if(currentp=="east"){
                 log("Walking to center");
                     RSTilePath toeastB = new RSTilePath(randomizePath(centToEastB, 2, 2), this);
                     toeastB.walkToStart();
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                     openDoor("West");
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                     }
                     RSTilePath toeastA = new RSTilePath(randomizePath(centToEastA, 2, 2), this);
                     toeastA.walkToStart();        
             }
             if(currentp=="sWest"){
                 log("Walking to center");
                     RSTilePath toSouthWest = new RSTilePath(randomizePath(southToWest, 2, 2), this);
                     toSouthWest.walkToStart();
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                     wait(random(600, 800));
                     openDoor("North");
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                     }
                     RSTilePath ToSouth = new RSTilePath(randomizePath(centToSouth, 2, 2), this);
                     ToSouth.walkToStart();
             }
             if(currentp=="sEast"){
                 log("Walking to center");
                     RSTilePath toSouthEast = new RSTilePath(randomizePath(southToEast, 2, 2), this);
                     toSouthEast.walkToStart();
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                    }
                     wait(random(600, 800));
                     openDoor("North");
                     while(getMyPlayer().isMoving()){
                        wait(random(100, 300));
                     }
                     RSTilePath ToSouth = new RSTilePath(randomizePath(centToSouth, 2, 2), this);
                     ToSouth.walkToStart();  
             }
             return random(200,400);
        }
        
        public void stayNearPortal()throws InterruptedException{
        if(getMyPlayer().getAnimation() == -1 || !(getMyPlayer().isInCombat())) {
            if(currentp=="west"){
                if(distanceTo(centToWestB[1]) > 5){
                    myWalkTile(centToWestB[1],1);
                    while(getMyPlayer().isMoving()){
                        wait(random(400, 500));
                    }
                }
            }
            if(currentp=="east"){
                if(distanceTo(centToEastB[1]) > 5){
                    myWalkTile(centToEastB[1],1);
                    while(getMyPlayer().isMoving()){
                        wait(random(400, 500));
                    }
                }
            }
            if(currentp=="sWest"){
                if(distanceTo(southToWest[1]) > 5){
                    myWalkTile(southToWest[1],1);
                    while(getMyPlayer().isMoving()){
                        wait(random(400, 500));
                    }
                }
            }
            if(currentp=="sEast"){
                if(distanceTo(southToEast[1]) > 5){
                    myWalkTile(southToEast[1],1);
                    while(getMyPlayer().isMoving()){
                        wait(random(400, 500));
                    }
                }
            }
            }
        }
        
        public boolean newPortal()throws InterruptedException{
            int g;
            int a;
            int b;
            int c;
            int d;
            int e;
            RSInterfaceChild west = RSInterface.getChildInterface(408, 13);
            String wh = west.getText();
            log("West-portal health is at:"+wh);
            RSInterfaceChild east = RSInterface.getChildInterface(408, 14);
            String eh = east.getText();
            log("East-portal health is at:"+eh);
            RSInterfaceChild sWest = RSInterface.getChildInterface(408, 16);
            String sWh = sWest.getText();
            log("South-West portal health is at:"+sWh);
            RSInterfaceChild sEast = RSInterface.getChildInterface(408, 15);
            String sEh = sEast.getText();
            log("South-East portal health is at:"+sEh);
            a=Integer.parseInt(wh);
            b=Integer.parseInt(eh);
            c=Integer.parseInt(sWh);
            d=Integer.parseInt(sEh);
            if(a > b){    
                g=a;
                e=1;
            }else{
                g=b;
                e=2;
            }
            if(g < c){
                g=c;
                e=3;
            }
            if(g < d){
                g=d;
                e=4;
            }
            if(a == b && c == d && a==c && b==d){
                g=random(1,4);
                e=g;
            }
            health = g;
            if(health == 0){
                return false;
            }else{
                if(distanceTo(center) < 7 || currentp=="none"){    
                    walkToCenter();
                    goPortal(e);
                }else{
                    goFromPortal(e);
                }
                wait(random(600, 900));
                return true;
            }
        }
        
        public boolean interfaceExists(int inte) {
            return (RSInterface.getInterface(inte).isValid());
        }
        
        public void setBoat(){
            if(setboat == false){
                if(distanceTo(first) < 2 || distanceTo(firstB) < 2){
                    log("Novice");
                    bridge = first;
                    boat= firstB;
                    setboat = true;
                }
                if(distanceTo(second) < 2 || distanceTo(secondB) < 2){
                    log("Intermediate");
                    bridge = second;
                    boat = secondB;
                    setboat = true;
                }
                if(distanceTo(third) < 2 || distanceTo(thirdB) < 2){
                    log("Veteran");
                    bridge = third;
                    boat = thirdB;
                    setboat = true;
                }
            }
        }
        
        public void confirm(){
            clickMouse(random(247, 253), random(290,294),true);
        }
        
        public boolean findV(){
            while(!interfaceExists(267)){        
                atNPC2(getNearestNPCByID(Evoid), "Exchange");
                return false;
            }
                return true;
        }
    
        public boolean spendPoints(){
    
            if(num==0){
                return true;
                 }    
            
            if(distanceTo(voidE) > 5){
    
                if(bridge==third){
                setCameraRotation(1);
                clickMouse(random(678,685),random(112,117),true);
                wait(random(4000, 5000));
            }
                myWalkTile(voidE,1);
                wait(random(4000, 5000));
                while(getMyPlayer().isMoving()){
                    wait(random(500, 900));
                }
            }
            while(getMyPlayer().isMoving()){
                wait(random(1000, 1200));
            }
            while(!findV()){wait(400);};
            wait(random(800,1100));
            if(num==1){//Attack
                log("Buying attack exp");
                clickMouse(random(202,205),random(70,74),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(random(202,205),random(70,74),true);
                confirm();
                return true;
            }else if(num==2){//Strength
                log("Buying strength exp");
                clickMouse(random(420,424),random(68,72),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(random(420,424),random(68,72),true);
                confirm();
                return true;
            }else if(num==3){//Defence
                log("Buying defence exp");
                clickMouse(random(202,206),random(106,110),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(random(202,206),random(106,110),true);
                confirm();
                return true;
            }else if(num==7){//Hitpoints
                log("Buying hitpoints exp");
                clickMouse(random(425,429),random(143,157),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(random(425,429),random(143,157),true);
                confirm();
                return true;
            }else if(num==4){//Range
                log("Buying range exp");
                clickMouse(424+random(1,4),104+random(1,4),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(424+random(1,4),104+random(1,4),true);
                confirm();
                return true;
            }else if(num==6){//Magic
                log("Buying magic exp");
                clickMouse(random(204,208),random(145,149),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(random(204,208),random(145,149),true);
                confirm();
                return true;
            }else if(num==5){//Prayer
                log("Buying prayer exp");
                clickMouse(random(204,208),random(183,187),true);
                confirm();
                while(!findV()){wait(200);};
                clickMouse(random(204,208),random(183,187),true);
                confirm();
                return true;
            }
            return false;
        }
                
        public int avoidBrawler(RSNPC temp){
            if(temp == null){
                return random(100,300);
            }
            if(getMyPlayer().getAnimation() != -1 || getMyPlayer().isInCombat()) {
                return random(100, 200);
            }
            RSNPC brawler = getNearestNPCByName("Brawler");
            if(brawler==null){
                return -1;
            }
            RSTile brawl = brawler.getLocation();
            int bX= brawl.getX();
            int bY= brawl.getY();
            RSTile player = getMyPlayer().getLocation();
            int pX= player.getX();
            int pY= player.getY();
            RSTile attack = temp.getLocation();
            int aX=attack.getX();
            int aY=attack.getY();
            if(distanceTo(brawler) < 2){
                if(pX==bX+1 || pX==bX-1 || pX==bX){
                    if(pX==aX || pX==aX+1 || pX==aX-1){
                        RSTile to = new RSTile(pX+random(3,4), pY);
                        myWalkTile(to,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                        RSTile monst= temp.getLocation();
                        int tY=monst.getY();
                        player = getMyPlayer().getLocation();
                        pX= player.getX();
                        RSTile too = new RSTile(pX, tY);
                        myWalkTile(too,1);
                        wait(random(1000, 1100));
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                        myWalkTile(monst,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                        return random(100,300);
                    }
                }
                if(pY==bY+1 || pY==bY-1 || pY==bY){
                    if(pY==aY || pY==aY+1 || pY==aY-1){
                        RSTile to = new RSTile(pX, pY+random(3,4));
                        myWalkTile(to,1);
                        wait(random(1000, 1100));
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                        RSTile monst= temp.getLocation();
                        int tX=monst.getX();
                        player = getMyPlayer().getLocation();
                        pY= player.getY();
                        RSTile too = new RSTile(tX, pY);
                        myWalkTile(too,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                        myWalkTile(monst,1);
                        while(getMyPlayer().isMoving()){
                            wait(random(500, 900));
                        }
                        return random(20,100);
                    }
                return random(100,300);
            }
            return random(100,300);
        }
        return random (10,20);
        }
        
        public int extract(String s) {
            int j = s.length()-1;
            while (j >= 0 && Character.isDigit(s.charAt(j))) {
                j--;
            }
            return Integer.parseInt(s.substring(j+1,s.length()));
        }
    
    public boolean myWalkTile(RSTile theTile, int randomness) { //BY TENAC
            if(theTile == null)
                return false;
            if((distanceTo(theTile)) <= 17) {
                RSTile newTile;
                if(randomness == 0)
                    newTile = new RSTile(theTile.getX(), theTile.getY());
                else
                    newTile = new RSTile(theTile.getX() + random(-randomness, randomness), theTile.getY() + random(-randomness, randomness));
    
                if(random(0, 30) == 0)
                    turnToTile(newTile, 15);
    
                if(tileOnScreen(newTile) && random(0, 10) == 0) {
                    if(!atTile(newTile, "Walk")) {
                        if(!walkTileMM(newTile)) {
                            //log("Failed walking to tile: (" + theTile.getX() + ", " + theTile.getY() + ")");
                            return false;
                        } else {
                            return true;
                        }
                    } else {
                        return true;
                    }
                } else {
                    if(!walkTileMM(newTile)) {
                        //log("Failed walking to tile: (" + theTile.getX() + ", " + theTile.getY() + ")");
                        return false;
                    } else {
                        return true;
                    }
                }
            } else {
                //log("Tile out of reach: (" + theTile.getX() + ", " + theTile.getY() + ")");
                return false;
            }
        }
        
        public boolean atNPC2(RSNPC npc, String action) {
            if (npc == null) return false;
            RSTile tile = npc.getLocation();
            if (!tile.isValid()) return false;
            if (distanceTo(tile) > 4) {
                myWalkTile(tile,1);
                wait(750 + random(0, 250));
                while(getMyPlayer().isMoving()) wait(40);
            }
            return clickCharacter2(npc, action);
        }
    
        public boolean clickCharacter2(RSCharacter c, String action) {
            Point screenLoc = null;
            for (int i = 0; i < 20; i++) {
                screenLoc = c.getScreenLocation();
                if (!c.isValid() || !pointOnScreen(screenLoc))    return false;
    
                if (getMouseLocation().equals(screenLoc)) break;
                moveMouse(screenLoc);
            }
            screenLoc = c.getScreenLocation();
            if (!getMouseLocation().equals(screenLoc)|| getMyPlayer().getInteracting() != null) return false;
            if (getMenuItems().get(0).toLowerCase().contains(action.toLowerCase())) {
                clickMouse(screenLoc, true);
                return true;
            } else {
                clickMouse(screenLoc, false);
                return atMenu(action);
            }
        }
    
        
        public void onRepaint(Graphics g)
        {
            long l = System.currentTimeMillis() - startTime;
            long l1 = l / 1000L;
            long l2 = l1 / 60L;
            long l3 = l2 / 60L;
            int i = (int)l1 % 60;
            int j = (int)l2 % 60;
            int k = (int)l3 % 60;
            StringBuilder stringbuilder = new StringBuilder();
            if(k < 10)
                stringbuilder.append('0');
            stringbuilder.append(k);
            stringbuilder.append(':');
            if(j < 10)
                stringbuilder.append('0');
            stringbuilder.append(j);
            stringbuilder.append(':');
            if(i < 10)
                stringbuilder.append('0');
            stringbuilder.append(i);
            if(isLoggedIn()){
            if(bridge==first){
                points = won*2;
            }
            if(bridge==second){
                points = won*3;
            }
            if(bridge==third){
                points = won*4;
            }
                byte byte0 = 18;
                int i1 = 240;
                g.setColor(Color.GREEN);
                g.drawString("SmartPC v." + getVersion(), byte0, i1);
                g.setColor(Color.WHITE);
                g.drawString((new StringBuilder()).append("Elapsed time: ").append(stringbuilder.toString()).toString(), byte0, i1 += 20);
                g.drawString((new StringBuilder()).append("Games won: ").append(won).append(" games").toString(), byte0, i1 += 15);
                g.drawString((new StringBuilder()).append("Games lost: ").append(lost).append(" games").toString(), byte0, i1 += 15);
            g.drawString((new StringBuilder()).append("Total points: ").append(jpoints).append(" points").toString(), byte0, i1 += 15);
            }
        }
    
    }
     
  29. Unread #15 - Dec 4, 2008 at 11:18 PM
  30. The True Gears
    Referrals:
    1

    The True Gears Guest
    $5 USD Donor

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    Aeliens fisher is definitly the best fisher.
     
  31. Unread #16 - Feb 15, 2009 at 3:55 AM
  32. layhooo
    Joined:
    Dec 24, 2008
    Posts:
    9
    Referrals:
    0
    Sythe Gold:
    0

    layhooo Newcomer

    [RSBOT]-A COMPILATION of the BEST scripts Voted and Submited by Users

    i was running smartpc on my pure, and it switched my attack style midway from strength to attack, so watch out for that
     
< Need help with Ben G's Flax Picker; | Rsbot update link >

Users viewing this thread
1 guest


 
 
Adblock breaks this site