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.

[WIP] NewbFisher - Self-repairing Lobster Bot Network

Featured Replies

qHsux2W.png

Introduction:
EDIT:

Just noticed like 1000 other people have made this same script lol. Hopefully when I add account replacement and automatic muling it'll actually be more useful than it is now.


Hey guys. SqueezeTheorem here. I'm a computer science student, and I like to code weird stuff in my free time. This is my current project, and once It's done, I think it'll be pretty cool. 

My goal is to create a bot you can run that will create a self-repairing network of lobster fishing bots and mules that will replace themselves as they get banned. I've got it in my head how this whole thing is supposed to work and what technology i need to use to get there, and now it's just a matter of sitting down and writing the code.

This project is a means to an end. I don't really want a lobster fishing network. I want a network for a more profitable kind of bot, but since there's no overhead and no real risk with f2p lobster fishing, this is a great way to test the efficacy of a self-repairing network and explore if it's worth pursuing another kind of network like this.

When the bot is completed, the only thing you'll have to do management wise is check up on your mule accounts and make sure the database has unbanned accounts to use -- that's it.

Right now, this script is still usable and somewhat useful. You start the bot with coins, a small net, and a lobster pot in the Lumbridge swamp. From there, it gets level 45 fishing, and then heads off to karamja to catch lobsters. These are the only features so far.

Goals:

1. Have the bot be able to complete tutorial island

2. Have the bot power fish until level 45

3. Once level 45, have the bot get coins and a lobster pot from a mule account  where it then continues to fish lobster

4. Use a MySQL database to manage accounts, and allow for multiple bot networks to connect to one MySQL "hub" as a means of communication

5. Have all accounts marked as "fishing" mule their caught lobsters to a random mule account from the MySQL database after every X number of lobsters, but only if the account is at least 18 hours old

6. Once an account is banned, have the bot log in to the next account from the MySQL DB and repeat this process

7. Implement obscure, awkward antiban (ie: the bot will, on a random time interval, find a nearby player and address them by name in conversation, randomly using emotes, etc)

Current Features:

- Power fishes lobsters and anchovies until level 45 fishing, and then travels to karamja to catch lobster

- Randomly AFKs for 0 - 180 seconds. The chance of this occurring  is 1/33 every time the bot clicks on a fishing pool.

- That's it. It's a fishing bot, what were you expecting?

Instructions:

1. Start with some coins (15k - 25k), a small fishing net, and a lobster pot. 

2. Start the bot, preferably near the lumbridge swamp.

3. Let the bot catch lobsters until its banned. Mule as needed.

Known issues:

- If you get to level 45 fishing and don't have any coins, the bot is gonna derp out. Same story if it runs out of money. I have no idea what it'll do.

TODO:
- Fully automatic muling using MySQL

- MySQL support to allow for banned accounts to be easily replaced by those in a queue, creating a near fully-auto farm.

- Add support for starting without money/selling lobsters to get more money for travel

- Built in Tutorial Island solver for truly godly automation

Currently working on:

Tutorial island solver

Download:

https://www.dropbox.com/s/1gp8ezp3u13r6w7/NewbFisher.jar?dl=0

Source:

 

Spoiler

package squeezetheorem.newbfisher.main;

import java.awt.Color;
import java.awt.Graphics2D;
import java.util.Random;

import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.model.NPC;
import org.osbot.rs07.api.model.RS2Object;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;

@ScriptManifest(author = "SqueezeTheorem", info = "Powerfishes shrimp and anchoves until level 45 fishing, and then goes to Karamja to catch and deposit lobster", name = "NewbFisher", version = 0.1, logo = "")
public class Main extends Script {

	Area swamp = new Area(3250, 3156, 3237, 3142);
	Area docks = new Area(2918, 3172, 2930, 3180);
	Area depoArea = new Area(3043, 3236, 3047, 3235);
	
	int startXP = -1;
	int startLevel = -1;
	int currentXP = -1;
	int currentLevel = -1;
	
	long startTime = -1;
	
	@Override
	public void onStart() {
		startTime = System.currentTimeMillis();
		log("NewbFisher initialized.");
	}

	@Override
	public int onLoop() throws InterruptedException {

		shrimp();
		lobster();

		return random(1000, 1500);

	}

	private void shrimp() {

		if (skills.getStatic(Skill.FISHING) >= 45)
			return;

		shrimpGoTo();
		shrimpFish();
		dropShrimp();

	}

	private void shrimpGoTo() {

		
		
		if (!myPlayer().isMoving() && !myPlayer().isAnimating() && !inventory.isFull() && !swamp.contains(myPlayer().getPosition())) {

			walking.webWalk(swamp.getRandomPosition());

		}
		
	}

	private void shrimpFish() {

		if(!myPlayer().isAnimating() && !myPlayer().isMoving() && swamp.contains(myPlayer().getPosition()) && !inventory.isFull()) {
			
			NPC pool = npcs.closest(1530);
			
			if(pool != null) {
				
					pool.interact("Net");
				
			}
		
			try {
				sleep(random(5000, 7500));
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			AFK();	
			
		}

	}
	
	private void dropShrimp() {
		
		if(inventory.isFull() && !myPlayer().isMoving() && !myPlayer().isAnimating()) {
			
			inventory.dropAll("Raw shrimps");
			inventory.dropAll("Raw anchovies");
		}
		
	}
	
	private void lobster() {
		
		if(skills.getStatic(Skill.FISHING) <= 44)
			return;
		
		lobsterGoTo();
		lobsterFish();
		depositLobster();
		
	}
	
	private void lobsterGoTo() {
		
		if(!myPlayer().isMoving() && !myPlayer().isAnimating() && !inventory.isFull() && !docks.contains(myPlayer().getPosition())) {
			
			walking.webWalk(docks.getRandomPosition());
			
		}
		
	}
	
	private void lobsterFish() {
		
		
		if(!myPlayer().isAnimating() && !myPlayer().isMoving() && docks.contains(myPlayer().getPosition()) && !inventory.isFull()) {
			
			
			NPC pool = npcs.closest(1522);
			
			if(pool != null) {
				
					pool.interact("Cage");
				
			}
			
		
			try {
				sleep(random(5000, 7500));
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			
			AFK();	
			
		}
		
	}
	
	private void depositLobster() {
		
		if(!myPlayer().isAnimating() && !myPlayer().isMoving() && inventory.isFull()) {
			
			if(!depoArea.contains(myPlayer().getPosition()))
			walking.webWalk(depoArea.getRandomPosition());
			

			
			while(!depositBox.isOpen()) {
				
				RS2Object depoBox = getObjects().closest("Bank deposit box");
				if(depoBox != null) {
					
					depoBox.interact("Deposit");
					
				}
				
				try {
					sleep(2500);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
			
			while(depositBox.isOpen() && inventory.isFull()) {
				
				
				depositBox.depositAllExcept("Coins", "Lobster pot");
				
			}
			
			while(!inventory.isFull() && depositBox.isOpen()) {
				
				depositBox.close();
				
			}
		
			
		}
		
	}
	
	private void AFK() {
		
		
		Random RNG = new Random();
		int out = RNG.nextInt(33) + 1;
		if(out == 2) {
			
			int time = RNG.nextInt(180000) + 1;
			
			try {
				log("Going AFK for " + time + "ms.");
				sleep(time);
			} catch(Exception exc) {
				exc.printStackTrace();
			}
			
		}
		
	}

	@Override
	public void onExit() {
		log("Thanks for being a newb.");
	}

	@Override
	public void onPaint(Graphics2D g) {
		
		long timeElapsed = System.currentTimeMillis() - startTime;
		long second = (timeElapsed / 1000) % 60;
		long minute = (timeElapsed / (1000 * 60)) % 60;
		long hour = (timeElapsed / (1000 * 60 * 60)) % 24;
		int levelsGained = currentLevel - startLevel;
		int xpGained = currentXP - startXP;
		
		if(myPlayer().isOnScreen()) {
			
			if(startXP == -1) {
				startXP = skills.getExperience(Skill.FISHING);
			}
			
			if(startLevel == -1) {
				startLevel = skills.getStatic(Skill.FISHING);
			}
			
			currentXP = skills.getExperience(Skill.FISHING);
			currentLevel = skills.getStatic(Skill.FISHING);
			
		}
		
		g.setColor(new Color(255, 0, 255));
		g.drawString("XP gained: " + xpGained, 25, 25);
		g.drawString("Levels gained: " + levelsGained, 25, 50);
		g.drawString("Runtime: " + (hour + ":" + minute + ":" + second), 25, 75);
	}

}

 

 

Edited by SqueezeTheorem
fixed a couple mistakes and stuff

Looking forward to that automated muling. Adding a 7qp completer after tutorial island would be the cherry on top.

Good luck

  • Author

Shit, didn't expect anyone to even reply to this haha. 

I've made some progress with the tutorial island solver. OSBot has an amazing API, so it's much easier than it would have been with other clients. There's a few kinks to iron out, but hopefully I can complete it by this weekend. 

  • Author
6 hours ago, scriptersteve said:

Very nice matey, https://github.com/Explv/Tutorial-Island may help you if u get stuck on tut island. I am sure you will be fine though :)

Ay, thanks for the link. Didn't think about getting the tutorial island's progress percentage like that script does. Thanks for sending it my way.

Edited by SqueezeTheorem

  • 2 weeks later...
On 27.2.2018 at 2:28 AM, SqueezeTheorem said:

Ay, thanks for the link. Didn't think about getting the tutorial island's progress percentage like that script does. Thanks for sending it my way.

Please add Tut island + 7 Quest points. It will be awesome!

 

Write to me when the script is mule able  :P 

Edited by taraz

  • Author

I've made some progress with this. Using an open source tutorial island solver and quester, I was able to make a script that completed tutorial island & got 7 qp all in one go. 

I've got a serious problem with this that I can't yet resolve with scripting... It's a much larger logistical challenge and it's gonna require the right VPN/VPS provider to get it done. 

On 3/13/2018 at 6:49 PM, Vainiven said:

Why does it powerlevel until 45 btw instead of 40?

fishing at level 40 is somewhat slow, so I just had the script go to level 45 instead. Very easy to adjust. 

man this looks super promising i love mule scriprters.

 

cant wait to be proficient in java in a few years and ill join the ranks with u guys ha    ha

  • 3 weeks later...
  • 3 weeks later...

Create an account or sign in to comment

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.