All pastes #1421104 Raw Edit

MultiKFisher

public javascript v1 · immutable
#1421104 ·published 2009-05-13 00:35 UTC
rendered paste body
// My Script:// [PHP]/* SAVE AS MultiKFisher.java in notepad. *  * Feature: * Up to 1k lines of code * Built in Antiban * Avoids whirlpools * Checks if you need more money * Powers or banks * Drops Tuna if you choose Swordfish * Faster at* methods * Waiting for new walkpathmm methods * Should I add deathwalk?*/ import java.util.List;import java.awt.Color;import java.awt.Graphics;import java.util.Map;import java.awt.*;import java.awt.Point;import java.awt.event.KeyEvent;import java.util.ArrayList;import java.util.*;import java.lang.String.*;import java.lang.String;import com.speljohan.rsbot.accessors.Player;import com.speljohan.rsbot.bot.Bot;import com.speljohan.rsbot.event.events.ServerMessageEvent;import com.speljohan.rsbot.event.listeners.PaintListener;import com.speljohan.rsbot.event.listeners.ServerMessageListener;import com.speljohan.rsbot.script.Script;import com.speljohan.rsbot.script.wrappers.RSInterface;import com.speljohan.rsbot.script.wrappers.RSItemTile;import com.speljohan.rsbot.script.wrappers.RSNPC;import com.speljohan.rsbot.script.wrappers.RSObject;import com.speljohan.rsbot.script.wrappers.RSPlayer;import com.speljohan.rsbot.script.wrappers.RSTile;import com.speljohan.rsbot.script.*;import com.speljohan.rsbot.script.wrappers.*;import com.speljohan.rsbot.script.Random;import com.speljohan.rsbot.script.wrappers.RSPlayer;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.*;import com.speljohan.rsbot.script.MouseHandler;public class MultiKFisher extends Script implements PaintListener{    public int currenttab;	public int GambleInt;	public int checkTime, checkTime1 = random(240000, 480000);	public int speed = 50;	public long lastCheck = -1, lastcheck1 = -1, lastCheck2,	lastCheck3 = System.currentTimeMillis();    // Above is values for tahayassen and WARXPERIMENT's antiban    public int tunaBanked = 0;    public int swordfishBanked = 0;    int tunaCount = 0;    int swordfishCount = 0;	public Point mousePos;    public String select; // string if drop down box    public int numberOfCatches;    public int lastExp;    public boolean dbank; // bolean if checkbox    private long startTime;    public int whirlpoolsAvoided;    int fails;    int sfails;    int fishing = Skills.getStatIndex("fishing");    int startxp = skills.getCurrentSkillExp(fishing);    int sfishlvl = skills.getCurrentSkillLevel(fishing);    int state = 0;    int trolla = 391;    int trollb = 392;    int trollc = 393;    int trolld = 394;    int trolle = 395;    int trollf = 396;    int bigfisha = 18482;    public int[] whirlpools = new int[] {        403, 404, 406, 406    };	RSTile[] bankToShipTile = { new RSTile(3093, 3243) ,			new RSTile(3081, 3242), // An array with give a special			new RSTile(3071, 3251), // value for rsbot called tiles.			new RSTile(3060, 3253), // Tiles are x, y coordinates that usually			new RSTile(3049, 3245), // create a path to walk.			new RSTile(3037, 3235),            new RSTile(3029, 3232),			new RSTile(3028, 3220)    };	RSTile[] KaramjaTile = {            new RSTile(2956, 3146),            new RSTile(2953, 3147),            new RSTile(2942, 3145),            new RSTile(2933, 3148),			new RSTile(2926, 3151),			new RSTile(2918, 3159),			new RSTile(2924, 3172),            new RSTile(2924, 3179)	};    RSTile[] shipToBankTiles = {            new RSTile(3028, 3232),            new RSTile(3041, 3240),            new RSTile(3053, 3248),            new RSTile(3067, 3250),            new RSTile(3080, 3241),            new RSTile(3093, 3243)    };    RSTile[] spotToShipTile = reversePath(KaramjaTile);    RSTile planker = new RSTile (3032, 3217);    RSTile sbank = new RSTile (3093, 3243);	RSTile Karamja = new RSTile (2956, 3146);	RSTile port = new RSTile(3028, 3220);    RSTile spot = new RSTile(2924, 3179);   public final RSTilePath shipToBank = new RSTilePath(shipToBankTiles, this);   public final RSTilePath KaramjaPath = new RSTilePath(KaramjaTile, this);   public final RSTilePath spotToShip = new RSTilePath(spotToShipTile, this);   public final RSTilePath bankToShip = new RSTilePath(bankToShipTile, this);public void antiBan() {		switch (GambleInt = random(1, 20)) {			case 1: // Camera Rotation\				turnCamera();				wait(random(300, 500));			case 2: // Move mouse & come back to original mouse location &					// Camera Rotation				int xA = random(0, 750);				int yA = random(0, 500);				mousePos = getMouseLocation();				moveMouse(xA, yA);				wait(random(300, 500));				moveMouse(mousePos, 7, 7);				wait(random(100, 200));				turnCamera();				wait(random(300, 500));			case 3: // Inventory Tab Selection & Camera Rotation				if (getCurrentTab() != TAB_INVENTORY) {					currenttab = getCurrentTab();					openTab(TAB_INVENTORY);					wait(random(300, 500));					turnCamera();					wait(random(300, 500));				}			case 4: // Player right click				mousePos = getMouseLocation();				RSPlayer p = getNearestPlayerByLevel(1, 130);				if (p != null && p.isValid()) {					moveMouse(p.getScreenLocation(), 5, 5);					wait(random(300, 500));					clickMouse(false);					wait(random(1000, 1500));					moveMouse(mousePos, 7, 7);					wait(random(100, 200));				}			case 5: // Camera Rotation & Move mouse & come back to original					// mouse location				turnCamera();				wait(random(300, 500));				int xB = random(0, 750);				int yB = random(0, 500);				mousePos = getMouseLocation();				moveMouse(xB, yB);				wait(random(300, 500));				moveMouse(mousePos, 7, 7);				wait(random(100, 200));			case 6: // Camera Rotation				turnCamera();				wait(random(300, 500));			case 7: // Open different tab and go back to original tab				mousePos = getMouseLocation();				currenttab = getCurrentTab();				openTab(random(0, 13));				wait(random(300, 500));				openTab(currenttab);				wait(random(300, 500));				moveMouse(mousePos, 7, 7);				wait(random(100, 200));			case 8: // Move mouse && come back to original mouse location				mousePos = getMouseLocation();				moveMouse(random(0, 450), random(0, 450));				wait(random(300, 500));				moveMouse(mousePos, 7, 7);				wait(random(100, 200));			}			if ((System.currentTimeMillis() - lastCheck2) >= checkTime) {				lastCheck2 = System.currentTimeMillis();				checkTime = random(300000, 600000);				turnCamera();				wait(random(300, 500));				mousePos = getMouseLocation();				currenttab = getCurrentTab();				openTab(random(0, 13));				wait(random(300, 500));				turnCamera();				wait(random(300, 500));				openTab(currenttab);				wait(random(300, 500));				moveMouse(mousePos, 7, 7);				wait(random(100, 200));			}}	public boolean activateCondition() {    	return random(1, speed) == 1;	}public String getName(){return "MultiKFisher";  // Determines name of script with .java added.}public String getAuthor(){return "Smashton227";}public String getScriptCategory(){return "Fishing";  // This is the folder it will be in.}public String getScriptDescription() {  // Add this for a description, or options.    String html = "";    html += "<html>\n"; // Starts html    html += "<body>\n"; // Starts body of html    html += "<h2><center>";    html += "MultiKFisher" + getVersion();    html += "<br></h2></FONT>Choose Fish:   ";     // <br> in html is a space between lines.    html += "<select name='select'>";    html += "<option>Lobsters";    html += "<option>Tuna/Swordies";    html += "<option>Swordies";    html += "<br>";    html += "<br>Bank?  ";    html += "<input type=\"checkbox\" name=\"dbank\" value=\"true\">";    html += "<br>";    html += "<br>";    html += "Info: If you are not powefishing, you have to start with " +            "more than 5,000 gold.";    html += "<br>";    html += "<br>";    html += "Credits: ";    html += "<br>";    html += "• tahayassen and WARXPERIMENT for AntiBan.";    html += "<br>";    html += "• 0x098b4a40 for 3x faster methods as well as teaching me " +            "useful methods not in methods.java.";    html += "<br>";    html += "• Smashton227 for the rest of the script.";    html += "</select>";    html += "</body>\n"; // ends body of html    html += "</html\n";  // ends html    return(html);}public double getVersion(){return 5.9;}public void onRepaint(Graphics g) {		// TODO Auto-generated method stub    if(!isInventoryFull()){     tunaBanked += tunaCount;     tunaCount = 0;        }       if(tunaCount == 0) {        tunaCount = getInventoryCount(359);        }    g.setColor(Color.CYAN);    int xnl = skills.getXPToNextLevel(fishing);    int cxp = xnl / 90;    int sxp = xnl / 100;    int txp = xnl / 80;    int pcl = skills.getPercentToNextLevel(fishing);            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;      int lobbys = (skills.getCurrentSkillExp(fishing) - startxp) / 90;      int sword = (skills.getCurrentSkillExp(fishing) - startxp) / 100;      int tun = (skills.getCurrentSkillExp(fishing) - startxp) / 80;      int hsword = getInventoryCount(371);      int htuna = getInventoryCount(359);      if (lastExp == 0)            lastExp = skills.getCurrentSkillExp(STAT_FISHING);        if (skills.getCurrentSkillExp(STAT_FISHING) > lastExp) {            lastExp = skills.getCurrentSkillExp(STAT_FISHING);            numberOfCatches++;        }      int htword = htuna + hsword;		g.drawString("Experience earned: " +        (skills.getCurrentSkillExp(fishing) - startxp), 18, 326);        g.drawString("Runtime: " + hours + ":" + minutes + ":" +                seconds + " and counting", 18, 278);        if (select.equals("Swordies")){        g.drawString("Swordfish Cought: " +Integer.toString(sword),              18, 302);        g.drawString(Integer.toString(sxp) + " swordfish left", 18, 206);        }        if (select.equals("Lobsters")){        g.drawString("Lobsters Cought: " +Integer.toString(lobbys),              18, 302);        g.drawString(Integer.toString(cxp) + " lobsters left", 18, 206);        }        if (select.equals("Tuna/Swordies")){        g.drawString("Fish Cought: " + numberOfCatches,              18, 302);        g.drawString(Integer.toString(sxp) + " swordfish or " +                Integer.toString(txp) +                " tuna left", 18, 206);        }        g.drawString("Levels Gained: " +        (skills.getCurrentSkillLevel(fishing) - sfishlvl), 18, 254);        g.drawString(Integer.toString(pcl) + "% Done", 18, 230);       g.setColor(Color.RED);       g.drawString("Created by SmashTon227", 355, 326);       g.setColor(new Color(0, 0, 0, 50)); // black       g.fill3DRect(12, 180, 190, 160, true);	}public void camera() {	setCameraRotation(0);	setCameraAltitude(true);    if (!isRunning() && getEnergy() > 50){ // ! means false.        // Checks if not running.		setRun(true); // Clicks run icon.		log("Running has been enabled.");	}}public void fpayfare() {	 wait(1500);    // waits 1500	  clickMouse(269, 456, true);// Clicks mouse to continue	  wait(2000);	  clickMouse(259, 404, true);	  wait(1500);	  clickMouse(217, 455, true);	  wait(10000);	  setCameraRotation(0);	  clickMouse(269, 456, true);	  wait(5000);	  clickMouse(252, 140, true);	  RSObject plAnK = getNearestObjectByID(2082);	  atObject(plAnK, "Cross Gangplank");	  atObject(plAnK, "Cross");	  log("Arrived at Karamja!");      clickMouse(263, 138, true);	  camera();}public void spayfare() {wait(2000);atInterface(241, 5);wait(2000);atInterface(228, 2);wait(2000);atInterface(64, 5);wait(2000);atInterface(241, 5);wait(2000);atInterface(230, 3);wait(2000);atInterface(64, 5);wait(2000);atInterface(242, 6);wait(2000);atInterface(228, 2);wait(2000);atInterface(64, 5);wait(10000);atInterface(210, 2);camera();RSObject splank = getNearestObjectByID(242);camera();clickMouse(224, 180, true);wait(100);atObject(splank, "Cross Gangplank");atObject(splank, "Cross");log("Arrived at Port Sarim!");wait(3000);}public void payloop() {    RSNPC seaman = getNearestFreeNPCByID(377);    log("Please wait...");    wait(1500);    atNPC(seaman, "Pay-fare");    atNPC(seaman, "Pay-fare Seaman Lorris");    fails++;  if (RSInterface.getInterface(513).getChild(2).getText( ).contains              ("The trip to Karamja will cost you 30 coins.")              || fails >= 4) {               fpayfare();  } else{ payloop(); }}public void spayloop() {    RSNPC seaman = getNearestFreeNPCByID(377);    log("Please wait...");    RSNPC officer = getNearestNPCByID(380);    wait(1500);      atNPC(officer, "Pay-Fare");      sfails++;      if (RSInterface.getInterface(241).getChild(4).getText( ).contains              ("Can I help you?")              || fails >= 4) {               spayfare();      }       else {      spayloop();      }}public boolean atPort(){	if (distanceTo(port) < 10 && !getMyPlayer().isMoving()){	    return true;	 }	else {		return false;	}}public boolean hasTools() { if(getInventoryCount(995) >= 120){        return true;      }      if(select.equals("Lobsters") && getInventoryCount(301) >= 1) {         return true;      }      if(select.equals("Tuna/Swordies") && getInventoryCount(311) >= 1){        return true;      }      if(select.equals("Swordies") && getInventoryCount(311) >= 1){          return true;      }      log("Please have your tools ready next time!");      return false;}public boolean atBank() {  if (distanceTo(sbank) < 10 && !getMyPlayer().isMoving()){	  return true;  }		return false;}public void fishloop() {  if (isInventoryFull() == false && getMyPlayer().getAnimation() == -1){  RSNPC fishingspot = getNearestNPCByID(324);  setCameraRotation(180);  if (select.equals("Lobsters")){  atNPC (fishingspot, "cage");  }  else{  atNPC (fishingspot, "harpoon");  }  }  else {      fishloop();  }  }@Overrideprotected int getMouseSpeed() {   return 5;}public boolean onStart(Map<String, String> args) {startTime = System.currentTimeMillis();select = args.get("select"); // locationName.equals("Barbarian Village")dbank = args.get("dbank") != null ? true : false;Bot.getEventManager().addListener(PaintListener.class, this);return true;}public void onFinish(){    Bot.getEventManager().removeListener(PaintListener.class, this);	log("Time to shutdown, error, stopped script, or looped 10k times!");    return;}public int loop() {   int pX = getMyPlayer().getLocation().getX();   int pY = getMyPlayer().getLocation().getY();   if (getMyPlayer().getAnimation() != -1 &&       !checkAndAvoidWhirlpools() || getMyPlayer().isMoving()){       antiBan();   }	camera();           if (pX > 3028 && pY > 3223 && !isInventoryFull()){          state = 1;        }       if (atPort() && !isInventoryFull()){	      state = 2;	    }	   if (pX < 2959 && !isInventoryFull()){          state = 3;        }       if (distanceTo(spot) < 7 && !isInventoryFull()){          if(dbank){          state = 4;          }          if(!dbank){          state = 9;          }        }       if (pX < 2959 && isInventoryFull()){          state = 5;        }       if (isInventoryFull() && distanceTo(Karamja) < 5){          state = 6;        }       if (pX > 3000 && pX < 3086 && isInventoryFull()){          state = 7;       }       if(isInventoryFull() && distanceTo(sbank) < 5){          state = 8;       }             if(ntool()){          if(distanceTo(sbank) < 5){         state = 777;       }       if (atPort()){	      state = 7;	    }       }           switch (state){        case 1: one(); break;        case 2: two(); break;        case 3: three(); break;        case 4: four(); break;        case 5: five(); break;        case 6: six(); break;        case 7: seven(); break;        case 8: eight(); break;        case 9: power(); break;        case 777: nmoney(); break;    }return 10000;}public void power() { if(hasTools()){ if(!isInventoryFull()){  log("Attempting to fish");  RSNPC fishingspot = getNearestNPCByID(324);  int ani = getMyPlayer().getAnimation();  if (ani == 619 || ani == 618){      log("Fishing...");  }  else{      fishloop();  } } else { dropInventoryExcluding(true, 995, 301, 311); } } }public boolean ntool() {if(getInventoryCount(995) < 61){return true;}if (select.equals("Lobsters") && getInventoryCount(301) < 1){return true;}if(select.equals("Tuna/Swordies") && getInventoryCount(311) < 1){return true;}if(select.equals("Swordies") && getInventoryCount(311) < 1){return true;}return false;}public void nmoney(){  RSObject booth = findObject(2213);  atObject(booth, "Use-quickly");  wait(1500);  if(!bank.isOpen()){  atObject(booth, "Use-quickly");  }  else {      bank.depositAllExcept(995, 301, 311);       if(select.equals("Lobsters") && getInventoryCount(301) < 1) {          atBankItem(301, "Withdraw-1");      }      if(select.equals("Tuna/Swordies") && getInventoryCount(311) < 1){          atBankItem(311, "Withdraw-1");      }      if(select.equals("Swordies") && getInventoryCount(311) < 1){          atBankItem(311, "Withdraw-1");      }      if(getInventoryCount(995) < 61){        atBankItem(995, "Withdraw-X");        wait(1500);        sendText("600", true);      }      wait(1500);      bank.close();  }}public void ten() {clickMouse(224, 180, true);}public void one() {  log("walking...");  walkPathMM(bankToShipTile, 15);  }public void two() {  setCameraRotation(352);  camera();  wait(1500);  RSNPC seaman = getNearestNPCByID(377);  atNPC(seaman, "Pay-fare");  atNPC(seaman, "Pay-fare Seaman Lorris");  if (RSInterface.getInterface(513).getChild(2).getText( ).contains     ("The trip to Karamja will cost you 30 coins.")) {      fpayfare();  }  else {      payloop();  }  }public void three() {  log("walking...");  walkPathMM(KaramjaTile, 15);  }public void four() {  log("Attempting to fish");  RSNPC fishingspot = getNearestNPCByID(324);  int ani = getMyPlayer().getAnimation();  if (ani == 619 || ani == 618){      log("Fishing...");  }  else{      fishloop();  }  }public void five() {  if(select.equals("Swordies")){  dropInventoryExcluding(true, 371, 377, 995, 301, 311);  }  log("Inventory full. Walking...");  walkPathMM(spotToShipTile, 15);  }public void six() {  wait(1500);  RSNPC officer = getNearestNPCByID(380);  atNPC(officer, "Pay-Fare");  if (RSInterface.getInterface(241).getChild(4).getText( ).contains      ("Can I help you?")) {      spayfare(); }  else {      spayloop();  }  }public void seven() {    try{  shipToBank.walkToEnd();  log("walking to the bank...");  }  catch(Exception e){  log("Erawr");  }}public void eight() {  RSObject booth = findObject(2213);  atObject(booth, "Use-quickly");  wait(1500);  if(!bank.isOpen()){  atObject(booth, "Use-quickly");  }  else {      bank.depositAllExcept(995, 301, 311);      if(getInventoryCount(995) < 61){        atBankItem(995, "Withdraw-X");        wait(1500);        sendText("600", true);      }           bank.close();  }  }public void turnCamera() {		char[] LR = new char[] { KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT };		char[] UD = new char[] { KeyEvent.VK_DOWN, KeyEvent.VK_UP };		char[] LRUD = new char[] { KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT,				KeyEvent.VK_UP, KeyEvent.VK_UP };		int random2 = random(0, 2);		int random1 = random(0, 2);		int random4 = random(0, 4);		if (random(0, 3) == 0) {			Bot.getInputManager().pressKey(LR[random1]);			try {				Thread.sleep(random(100, 400));			} catch (Exception e) {			}			Bot.getInputManager().pressKey(UD[random2]);			try {				Thread.sleep(random(300, 600));			} catch (Exception e) {			}			Bot.getInputManager().releaseKey(UD[random2]);			try {				Thread.sleep(random(100, 400));			} catch (Exception e) {			}			Bot.getInputManager().releaseKey(LR[random1]);		} else {			Bot.getInputManager().pressKey(LRUD[random4]);			if (random4 > 1) {				try {					Thread.sleep(random(300, 600));				} catch (Exception e) {				}			} else {				try {					Thread.sleep(random(500, 900));				} catch (Exception e) {				}			}			Bot.getInputManager().releaseKey(LRUD[random4]);		}	}  public void dropItem(int col, int row){        if (getCurrentTab() != TAB_INVENTORY                    && !RSInterface.getInterface(INTERFACE_BANK).isValid()                        && !RSInterface.getInterface(INTERFACE_STORE).isValid())            openTab(TAB_INVENTORY);        if(col<0||col>3||row<0||row>6)            return;        if(getInventoryArray()[col+row*4] == -1)            return;        clickMouse(563+col*42+random(0,32), 213+row*36+random(0,32),false);        wait(random(100,250));        atMenu("drop");        wait(random(100,250));    }    public void dropRectangle(int col, int row, int width, int height,            boolean leftToRight){        if(!leftToRight)            for(int c = col; c < col+width; c++)                for(int r = row; r < row+height; r++)                    dropItem(c, r);        else            for(int r = row; r < row+height; r++)                for(int c = col; c < col+width; c++)                    dropItem(c, r);    }    public void dropInventoryExcluding(boolean leftToRight, int ... ids){        if(!leftToRight)            for(int c = 0; c < 4; c++)                for(int r = 0; r < 7; r++){                    boolean found = false;                    for(int i = 0; i < ids.length && !found; i++)                        found = ids[i] == getInventoryArray()[c+r*4];                    if(!found)                        dropItem(c, r);                }        else            for(int r = 0; r < 7; r++)                for(int c = 0; c < 4; c++){                    boolean found = false;                    for(int i = 0; i < ids.length && !found; i++)                        found = ids[i] == getInventoryArray()[c+r*4];                    if(!found)                        dropItem(c, r);                }    }    public void dropInventory(boolean leftToRight){        dropRectangle(0, 0, 4, 7, leftToRight);    }        public int getMenuIndexExact(String optionContains) {		optionContains = optionContains.toLowerCase();		final java.util.List<String> actions = getMenuItems();		for (int i = 0; i < actions.size(); i++) {			final String action = actions.get(i);			if (action.toLowerCase().equals(optionContains)) {				return i;			}		}		return -1;	}    public boolean atMenuExact(final String optionContains) {		int idx = getMenuIndexExact(optionContains);		// log.info((optionContains + " " + idx + " " + getMenuItems());		if (!isMenuOpen()) {			if (idx == -1) {				return false;			}			if (idx == 0) {				clickMouse(true);			} else {				clickMouse(false);				atMenuItem(idx);			}			return true;		} else {			if (idx == -1) {				idx = getMenuIndex("Cancel");				atMenuItem(idx);				return false;			} else {				atMenuItem(idx);				return true;			}		}	}	private boolean arrayHas(final String[] items, String searchString) {		searchString = searchString.toLowerCase();		for (final String s : items) {			if (s.toLowerCase().equals(searchString)) {				return true;			}		}		return false;	}    public boolean atTileExact(RSTile tile, String option){    	Point p = Calculations.tileToScreen(tile);    	p.x += random(-5, 6);    	p.y += random(-5, 6);    	if(p.x < 0 || p.y < 0)    		return false;        moveMouse(p);        //wait(random(100,150));        getMenuItems();        List<String> itemsList = getMenuItems();        long waitTime = System.currentTimeMillis() + random(50,250);        boolean found = false;        while(System.currentTimeMillis() < waitTime && !found){            wait(15);            found = (itemsList = getMenuItems()).get(0).toLowerCase().equals(option.toLowerCase());        }        if(found){            clickMouse(true);            wait(random(150, 300));            return true;        }        clickMouse(false);        wait(random(150, 300));        return atMenuExact(option);    }    public boolean atTile(RSTile tile, String option){    	Point p = Calculations.tileToScreen(tile);    	p.x += random(-5, 6);    	p.y += random(-5, 6);    	if(p.x < 0 || p.y < 0)    		return false;        moveMouse(p);        //wait(random(100,150));        getMenuItems();        List<String> itemsList = getMenuItems();        long waitTime = System.currentTimeMillis() + random(50,250);        boolean found = false;        while(System.currentTimeMillis() < waitTime && !found){            wait(15);            found = (itemsList = getMenuItems()).get(0).toLowerCase().contains(option.toLowerCase());        }        if(found){            clickMouse(true);            wait(random(150, 300));            return true;        }        clickMouse(false);        wait(random(150, 300));        return atMenu(option);    }    public boolean atInventoryItem(int itemID, String option) {        if (getCurrentTab() != TAB_INVENTORY                && !RSInterface.getInterface(INTERFACE_BANK).isValid()                && !RSInterface.getInterface(INTERFACE_STORE).isValid()) {            openTab(TAB_INVENTORY);        }        int[] items = getInventoryArray();        java.util.List<Integer> possible = new ArrayList<Integer>();        for (int i = 0; i < items.length; i++) {            if (items[i] == itemID) {                possible.add(i);            }        }        if (possible.size() == 0) return false;        int idx = possible.get(random(0, possible.size()));        Point t = getInventoryItemPoint(idx);        moveMouse(t, 5, 5);        getMenuItems();        List<String> itemsList = getMenuItems();        long waitTime = System.currentTimeMillis() + random(50,250);        boolean found = false;        while(!found && System.currentTimeMillis() < waitTime){            wait(15);            if((itemsList = getMenuItems()).get(0).toLowerCase().contains(option.toLowerCase()))                found = true;        }        if(found){            clickMouse(true);            wait(random(150, 250));            return true;        }        clickMouse(false);        wait(random(150, 250));        return atMenu(option);    }    public int bankCount(int itemID){    	final int[] itemArray = bank.getItemArray();    	int count = 0;		for (int off = 0; off < itemArray.length; off++)			if(itemArray[off] == itemID)				count++;		return count;    }    public boolean atBankItem(final int itemID, final String txt) {		if (!isLoggedIn() || !bank.isOpen()) {			return false;		}		final int[] itemArray = bank.getItemArray();		for (int off = 0; off < itemArray.length; off++) {			if (itemArray[off] == itemID) {				moveMouse(bank.getItemPoint(off), 5, 5);		        List<String> itemsList = getMenuItems();		        long waitTime = System.currentTimeMillis() + random(50,250);		        boolean found = false;		        while(!found && System.currentTimeMillis() < waitTime){		            wait(15);		           if((itemsList = getMenuItems()).get(0).toLowerCase().contains(txt.toLowerCase()))                        found = true;                }				if(found){		            clickMouse(true);		            wait(random(150, 250));		            return true;		        }		        clickMouse(false);		        wait(random(150, 250));		        return atMenu(txt);			}		}		return false;	}     public boolean checkAndAvoidWhirlpools( ) {        RSTile playerLocation = getMyPlayer( ).getLocation( );        RSTile tileToTest1 = new RSTile(playerLocation.getX() + 1, playerLocation.getY());        RSTile tileToTest2 = new RSTile(playerLocation.getX() - 1, playerLocation.getY());        RSTile tileToTest3 = new RSTile(playerLocation.getX(), playerLocation.getY() + 1);        RSTile tileToTest4 = new RSTile(playerLocation.getX(), playerLocation.getY() - 1);        for ( int id : whirlpools ) {            RSNPC whirlpool = getNearestNPCByID( id );            if ( whirlpool == null ) continue;            if ( whirlpool.getLocation( ).equals(tileToTest1) || whirlpool.getLocation( ).equals(tileToTest2) ||                whirlpool.getLocation( ).equals(tileToTest3) || whirlpool.getLocation( ).equals(tileToTest4) ) {                whirlpoolsAvoided++;                log("Found whirlpool");                return true;            }        }        return false;    }}// [/PHP]