Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

zScripz

Members
  • Joined

  • Last visited

Everything posted by zScripz

  1.    Sure :P, version 2.1 will -Completely remove ids (done) -Clan anti-ban (will join a clan from a random list of clans) Edit: The only bug I have seen so far is that sometimes if the spot disappears instantly it will take about 15 secs to find another. Will look into this.
  2. That's a good idea. Thanks
  3. 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)); }}

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.