Before you state the obvious let me give credits: Anon: 99% (Everything) Me: 1% (Antiban + removal of ID's) Fishes sharks at fishing guild and banks them. NOTE: I HAVE NOT YET BEEN ABLE TO REMOVE THE ID FOR THE FISHING POOL BECAUSE OF THIS: Antiban features: -Check xp -Move camera randomly -Enter a random cc and say a phrase (may be removed!) -- BY DEFAULT THIS IS ALL COMMENTED OUT, YOU CAN UNCOMMENT IT IF YOU LIKE. CHANGLELOG:
V2.6
updateee
V2.5
-updates and fixes V2.4 -hotfixes V2.3 -fixed bug where it just sits there V2.2 -small bugfix V2.1 -fixed bank -fixed anti-combat random -removed ID's from fishing spot and bank Proggies: -Me - Ash -24hr! Download(s):
v2.6(latest)-http://up.ht/18gl63v
v2.5-http://up.ht/19b4My0 v2.4-http://up.ht/1cNdcP3 v2.3-http://up.ht/14sOi6z v2.2-http://up.ht/14rlOKD v2.1-http://up.ht/16SvEBd v2.0-http://up.ht/16OQuBa
import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Rectangle;import org.osbot.script.Script;import org.osbot.script.ScriptManifest;import org.osbot.script.mouse.RectangleDestination;import org.osbot.script.rs2.map.Position;import org.osbot.script.rs2.skill.Skill;import org.osbot.script.rs2.ui.Tab;import org.osbot.script.rs2.utility.Area;import org.osbot.script.rs2.model.GroundItem;import org.osbot.script.rs2.model.NPC;@ScriptManifest(author = "Anon", info = "Fishes sharks at the fishing guild -- Original by Anon, with Antiban + removal of ID's by zScripz", name="AnonShark", version = 2.1)public class SharkFisher extends Script{ private final int HARP_ID = 311, /*SPOT_ID = 863,*/ FISH_ANI = 618, RSHARK_ID = 383 /*BOOTH_ID = 2196*/; private final int[] Whirlpools = { 390, 404, 405, 2019, 2118, 2723 }; private final String[] badNPCs = { "Swarm", "River troll", "Evil chicken" }; private Area dock1 = new Area(2596, 3418, 2606, 3427); private Area dock2 = new Area(2601, 3405, 2613, 3418); private Area bank = new Area(2589, 3417, 2584, 3423); private Position dock1Spot = new Position(2600, 3422, 0); private Position dock2Spot = new Position(2604, 3413, 0); private Position bankTile = new Position(2587, 3420, 0); private Position safeSpot = new Position(2582, 3423, 0); private String state = "Idle"; //private String mess; //private String clan; private long startTime; private int harpoonsLost = 0; private int startEXP = 0; //private RectangleDestination clanbox = new RectangleDestination(new Rectangle(579, 444, 3, 3)); public enum State { FISHING, FIND_SPOT, DANGER, GO_FISH, GO_BANK, BANK, WITHDRAW, DEPOSIT, MOVE_MOUSE, } private State getState() throws InterruptedException { if(this.client.getMyPlayer().isUnderAttack()) return State.DANGER; else if(this.client.getMyPlayer().isMoving()) return State.FISHING; if(dock1.contains(this.client.getMyPlayer().getPosition())) { if(this.client.getInventory().contains(HARP_ID)) { if(!this.client.getInventory().isFull()) { if(this.client.getMyPlayer().getAnimation() == -1) return State.FIND_SPOT; else if(this.client.getMyPlayer().getAnimation() == FISH_ANI) if(!whirlpool(dock1)) if(getSeconds((System.currentTimeMillis()-startTime)) % 60 == 0) return State.MOVE_MOUSE; else return State.FISHING; else return State.DANGER; } else return State.GO_BANK; } else { if(onGround(dock1, HARP_ID)) pickUp(dock1, HARP_ID); else return State.GO_BANK; } } else { if(dock2.contains(this.client.getMyPlayer().getPosition())) { if(this.client.getInventory().contains(HARP_ID)) { if(!this.client.getInventory().isFull()) { if(this.client.getMyPlayer().getAnimation() == -1) return State.FIND_SPOT; else if(this.client.getMyPlayer().getAnimation() == FISH_ANI) if(!whirlpool(dock2)) if(getSeconds((System.currentTimeMillis()-startTime)) % 60 == 0) return State.MOVE_MOUSE; else return State.FISHING; else return State.DANGER; } else return State.GO_BANK; } else { if(onGround(dock2, HARP_ID)) pickUp(dock2, HARP_ID); else return State.GO_BANK; } } else { if(bank.contains(this.client.getMyPlayer().getPosition())) { if(this.client.getInventory().isFull() || !this.client.getInventory().contains(HARP_ID)) { if(this.client.getBank().isOpen()) { if(!this.client.getInventory().contains(HARP_ID)) return State.WITHDRAW; else if(this.client.getInventory().contains(RSHARK_ID)) return State.DEPOSIT; else return State.GO_FISH; } else return State.BANK; } else return State.GO_FISH; } else { if(safeSpot.equals(this.client.getMyPlayer().getPosition())) { sleep(3000); return State.GO_FISH; } else return State.GO_FISH; } } } return null; } public void onStart() { startTime = System.currentTimeMillis(); startEXP = this.client.getSkills().getExperience(Skill.FISHING); } public int onLoop() throws InterruptedException { try { switch(getState()) { case FISHING: state = "Fishing"; sleep(200); break; case FIND_SPOT: state = "Fishing/Finding Spot"; fish(); break; case DANGER: state = "DANGER"; if(client.getMyPlayer().isUnderAttack() || aggressiveNPC()) walk(this.safeSpot); else if(client.getMyPlayer().getAnimation() == FISH_ANI) walk(getWalkingSpot()); case GO_FISH: switch(random(0,2)) { case 0: state = "Walking to dock1"; walk(this.dock1Spot); break; case 1: state = "Walking to dock2"; walk(this.dock2Spot); break; } break; case GO_BANK: state = "Walking to Bank"; walk(this.bankTile); break; case BANK: state = "Opening Bank"; openBankBooth(); break; case WITHDRAW: state = "Withdrawing harpoon"; harpoonsLost += 1; this.client.getBank().withdraw1(HARP_ID); break; case DEPOSIT: state = "Depositing"; this.client.getBank().depositAllExcept(HARP_ID); break; case MOVE_MOUSE: state = "Moving mouse"; this.client.moveMouse(this.client.getMyPlayer().getMouseDestination(), true); break; } } catch (InterruptedException e) { throw e; } catch (Exception e) { e.printStackTrace(); return random(300, 400); } return random(300,400); } public void onPaint(Graphics g) { g = (Graphics2D)g; g.setColor(new Color(255,0,0,128)); g.drawRect(245, 340, 250, 117); int currentEXP = this.client.getSkills().getExperience(Skill.FISHING); int expGained = (currentEXP-startEXP); int sharksCaught = 0; if(expGained > 0) sharksCaught = expGained/110; g.setColor(Color.BLACK); g.drawString("Time ran: "+format((System.currentTimeMillis()-startTime)), 245, 355); g.drawString("State: "+this.state, 245, 365); g.drawString("Sharks caught(p/h): "+sharksCaught+" ("+getHourlyRate(sharksCaught)+")", 245, 375); g.drawString("Harpoons Lost: "+harpoonsLost, 245, 385); g.drawString("Fishing EXP gained(p/h): "+(expGained)+" ("+getHourlyRate(expGained)+")", 245, 395); g.drawString("Version: "+this.getVersion(), 245, 405); } public boolean whirlpool(Area inArea) { NPC dangerousPool = this.closestNPC(this.Whirlpools); return dangerousPool != null && dangerousPool.isInArea(inArea) && dangerousPool.isVisible() && dangerousPool.getPosition().distance(this.client.getMyPlayer().getPosition()) <= 2; } public boolean onGround(Area inArea, int id) throws InterruptedException { sleep(4500); GroundItem harp = this.closestGroundItem(inArea, id); return harp != null && harp.isInArea(inArea) && harp.getPosition().distance( this.client.getMyPlayer().getPosition()) <= 10; } public void pickUp(Area inArea, int id) throws InterruptedException { GroundItem harp = this.closestGroundItem(inArea, id); try { this.client.moveCameraToPosition(harp.getPosition()); this.walk(harp.getPosition()); harp.interact("Take"); } catch(InterruptedException e) { throw e; } } private Position getWalkingSpot() { return (getArea().equals(dock1) ? dock1Spot : dock2Spot); } public void fish() throws InterruptedException { NPC fishingSpot = this.closestNPCForName(getArea(), "Fishing spot"); for (String s : fishingSpot.getDefinition().getActions()) { if(fishingSpot != null && fishingSpot.exists() && s.equalsIgnoreCase("Net")) { if(fishingSpot.isVisible()) this.selectEntityOption(fishingSpot, "Harpoon"); else if(fishingSpot.getPosition().distance(this.client.getMyPlayer().getPosition()) >= 7) this.walk(getWalkingSpot()); else this.client.moveCameraToPosition(fishingSpot.getPosition()); sleep(5000); antiBan(); //once per fishing spot } else { fishingSpot = this.closestNPCForName(getOppArea(), "Fishing spot"); if(fishingSpot.isVisible() && s.equalsIgnoreCase("Net")) this.selectEntityOption(fishingSpot, "Harpoon"); else if(fishingSpot.getPosition().distance(this.client.getMyPlayer().getPosition()) >= 5) this.walk(getWalkingSpot()); else this.client.moveCameraToPosition(fishingSpot.getPosition()); sleep(5000); antiBan(); } } } public void openBankBooth() throws InterruptedException { NPC banker = this.closestNPCForName("Banker"); //will not break if(banker != null && banker.exists() && banker.isVisible()) banker.interact("Bank"); } public Area getArea() { return dock1.contains(this.client.getMyPlayer().getPosition()) ? dock1 : dock2; } public void antiBan() throws InterruptedException //todo cleverbot { sleep(12000); state = "Antiban -- By zScripz"; int random = random(5); switch(random) { case 0: //check fish xp -Done state = "Checking fish xp"; if (currentTab() != Tab.SKILLS) { openTab(Tab.SKILLS); RectangleDestination rectangleDest = new RectangleDestination(new Rectangle(702, 277, 3, 3)); client.moveMouse(rectangleDest, true); sleep(random(1000, 3000)); if (currentTab() != Tab.INVENTORY) { openTab(Tab.INVENTORY); } } break; /*case 1: //This was to join a clan chat, however I don't think its that good of an anti ban. //In addition, I need a way for it to only be called once and searchInterfaceForText() isn't working for me int randomclan = random(5); int randommessage = random(5); switch(randommessage) { case 0: mess = "/Yo guys whats up"; break; case 1: mess = "/Wooooot just got 76 woodcuttttt"; break; case 2: mess = "/So bored lol"; break; case 3: mess = "/Omfg dude I havent seen you guys in foreverrr"; break; case 4: mess = "/Just got back from vacation :D"; break; } switch(randomclan) { case 0: clan = "Sparc Mac"; break; case 1: clan = "No1s Perfect"; break; case 2: clan = client.getMyPlayer().getName(); break; case 3: clan = "Nightmarerh"; break; case 4: //idk any more clans lel clan = "So Wreck3d"; break; } if (currentTab () != Tab.CLANCHAT) { openTab(Tab.CLANCHAT); client.moveMouse(clanbox, true); client.moveMouse(clanbox, true); client.clickMouse(false); sleep(1000); client.clickMouse(false); client.typeString(clan); sleep(10000); client.typeString(mess); sleep(random(500,1500)); if (currentTab() != Tab.INVENTORY) { openTab(Tab.INVENTORY); } } break; */ case 2: //move camera (will be random each time) This is 3/4 of the anti-ban, as you dont check xp all the time lol moveCamera(); break; case 3: moveCamera(); break; case 4: moveCamera(); break; } } public Area getOppArea() { return dock1.contains(this.client.getMyPlayer().getPosition()) ? dock2 : dock1; } public void moveCamera() throws InterruptedException { int pitchAngle = random(0,360); int yawAngle = random(0,360); this.client.rotateCameraPitch (pitchAngle); this.client.rotateCameraToAngle(yawAngle); } public int getHourlyRate(int variable) { return (int)((variable - 0) * 3600000.0D / (System.currentTimeMillis() - this.startTime)); } public String format(long time) { StringBuilder string = new StringBuilder(); long totalSeconds = time / 1000L; long totalMinutes = totalSeconds / 60L; long totalHours = totalMinutes / 60L; int seconds = (int)totalSeconds % 60; int minutes = (int)totalMinutes % 60; int hours = (int)totalHours % 24; if (hours > 0) { string.append(hours + "h "); } if (minutes > 0) { string.append(minutes + "m "); } string.append(seconds + "s"); return string.toString(); } private int getSeconds(long time) { return (int)((time/1000L)%60); } private boolean aggressiveNPC() { return (this.closestNPCForName(getArea(), badNPCs) != null) && (this.client.getSkills().getCurrentLevel(Skill.HITPOINTS) < this.client.getSkills().getLevel(Skill.HITPOINTS)); }}