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.

Anon + zScripz Shark Fisher

Featured Replies

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:
v7lqZyI.png -Me
GHN4dhN.png - Ash
mX2e0XI.jpg -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));    }}

Edited by zScripz

cant wait to try! thank god for this, i will never pay 10$ for a fishing script!

 

also having the bot only join sparc mac's clan is suspicious. it should be able to join the user's clan, or atleast have the bot randomly choose from a select number of popular clans.

Edited by higuy123

  • Author

 

cant wait to try! thank god for this, i will never pay 10$ for a fishing script!

 

also having the bot only join sparc mac's clan is suspicious. it should be able to join the user's clan, or atleast have the bot randomly choose from a select number of popular clans.

That's a good idea. Thanks :)

Why doesn't this find a goddamn spot for me

client.typeString("Sparc Mac");

May I have the rights to add more clans onto this whilst using it? Thanks c:

  • Author

 

client.typeString("Sparc Mac");
May I have the rights to add more clans onto this whilst using it? Thanks c:
 

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.

Edited by zScripz

 

client.typeString("Sparc Mac");
May I have the rights to add more clans onto this whilst using it? Thanks c:
 

Sure tongue.png, 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.

 

add clever bot antiban like on andes fighter :P

  • Author

 

 

client.typeString("Sparc Mac");
May I have the rights to add more clans onto this whilst using it? Thanks c:
 

Sure tongue.png, 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.

 

add clever bot antiban like on andes fighter :P
I'll see about that.. seems like it would be a giveaway though.

this script is working for me and i appreciate u putting it up here but the problem i am noticing is that when it goes to bank it will continue to try and bank at one of the bank stalls that isn't real in the fishing guild bank. can u help me fix this problem please? :)

Testing now, will try running overnight if I can get a 2+ hr proggie whilst babysitting. Lot of respect for you for fixing up this script, the other fishing script is charging now and it's ridiculous! Look forward to updates on this mate, good bit of anti-ban would be the option to join your own CC as suggested before!

this script is working for me and i appreciate u putting it up here but the problem i am noticing is that when it goes to bank it will continue to try and bank at one of the bank stalls that isn't real in the fishing guild bank. can u help me fix this problem please? smile.png

 

 

it banks at the wrong bankbooth.. The fake one in front of the real one.

 

Same problem. Could you please fix this issue and let us know when its fixed.

 

Good job on taking over the script though, hope you can keep up the good work man :D

can you tell me what im doing wrong, it starts, and it cant find a spot, i have to find it a spot and it still doesnt work, it will run to bank but it doesnt know how to "x" out of the bank...

Guest
This topic is now closed to further replies.

Recently Browsing 0

  • No registered users viewing this page.

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.