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.

my first script need some help.

Featured Replies



so basicly my problem right now is when it comes to the part looting i get this error.

 

[ERROR][Bot #1][02/05 02:38:03 PM]: Error in script executor!
java.lang.NullPointerException
	at WildyLooterv2.WildyLooterv2.looting(WildyLooterv2.java:157)
	at WildyLooterv2.WildyLooterv2.onLoop(WildyLooterv2.java:79)
	at org.osbot.rs07.event.ScriptExecutor$InternalExecutor.run(pm:10)
	at java.lang.Thread.run(Unknown Source)


my script :

package WildyLooterv2;



import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;

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

@ScriptManifest(name = "WildyLooterv2", author = "Basemas", logo = "", version = 2.0, info = "picks up loot from dead people.")

public class WildyLooterv2 extends Script{


	private long startTime;
	public static Area bankarea = new Area(3098, 3487, 3091, 3487);
	public static Area wildy = new Area(3068, 3536, 3113, 3523);
    public static Area bigwildy = new Area(2950, 3583, 3128, 3523);
      String[] P2PLoot = {"Heavy ballista", " Light ballista", "Amulet of fury", "Abyssal whip", "Dharok's platebody", "Dharok's helm", "Dharok's legs", "Dharok's greataxe",
                "Dragon platelegs", "Dark bow", "Dragon boots", "Obsidian cape", "Tzhaar-ket-om", "Tzhaar-ket-xil", "Dragon scimitar", "Black mask", "Granite platebody", "Berserker helm",
                "Helm of neitiznot", "Dragon chainskirt", "Granite platelegs", "Granite shield", "Rune 2h sword", "Rune platebody", "Rune platelegs", "Rune kiteshield", "Rune boots",
                "Combat bracelet(1)", "Combat bracelet(2)", "Combat bracelet(3)", "Combat bracelet(4)", "Combat bracelet(5)", "Combat bracelet(6)" , "Amulet of glory(6)", "Amulet of glory(5)",
                "Amulet of glory(4)", "Amulet of glory(3)", "Amulet of glory", "Amulet of glory(1)", "Amulet of glory(2)", "Granite maul","Dragon dagger(p++)", "Dragon dagger", "Dragon dagger(p+)",
                "Super combat potion(4)" , "Rune scimitar", "Super combat potion(3)", "Rune crossbow", "Prayer potion(4)", "Super restore(4)",  "Blue partyhat", "Super restore(3)",
                "Prayer potion(3)", "Ranging potion(4)", "Super combat potion(2)", "Super restore(2)", "Onyx bolts (e)", "Super strength(4)", "Super combat potion(1)", "Super strength(3)", "Ranging potion(3)",  
                "Super restore(1)",  "Black d'hide body", "Green d'hide body", "Blue d'hide body", "Prayer potion(2)", "Super strength potion(2)", "Bone dagger(p++)", "Black d'hide chaps", "Green d'hide chaps",
                "Black d'hide vambraces" , "Blue d'hide chaps", "Blue d'hide vambraces", "Green d'hide vambraces", "Phoenix necklace", "Prayer potion(1)", "Anglerfish", "Shark",  "Cooked karambwan", "Rune arrow", "Dragon bolts (e)", "Dragon arrow", "Dragon dart", "Rune knife", "Dragon javelin", "Ranging potion(2)", "Ranging potion(1)",
                "Magic shortbow", "Tuna potato",  "Strength potion(4)", "Super strength(1)", "Adamant crossbow", "Amulet of power", "Ring of life", "Ring of recoil", "Death rune", "Blood rune", "Super Attack(4)", "Super Attack(3)", "Super Attack(2)", "Super Attack(1)",
                "Snakeskin boots", "Astral rune", "Nature rune", "  ","Home teleport", "Lumbridge teleport", "Camelot teleport", "Varrock teleport", "Falador teleport", "Rune knife(p++)", "Rune knife(p+)", "Dragon dart(p++)", "Dragon dart(p+)", "Cooked karambwan", "Swordfish", "Monkfish", "Lobster", "Red partyhat", "Purple partyhat",
                "White partyhat", "Green partyhat", "Green h'ween mask", "Red h'ween mask", "Blue h'ween mask", "Santa hat", "Adamant boots", "Adamant platebody", "Amulet of strength", "Adamant arrow",
                "Strength potion(2)", "Strength potion(3)", "Ring of dueling(8)", "Ring of dueling(7)", "Ring of dueling(6)", "Ring of dueling(5)", "Ring of dueling(4)", "Ring of dueling(3)", "Ring of dueling(2)", "Ring of dueling(1)",
                "Diamond bolts (e)", "Climbing boots", "Maple shortbow", "Monks robe top"," Wizard's robe top",  "Mysterious emblem", "Gilded scimitar", "Gilded 2h", "Serpentine helm (uncharged)", "Armadyl crossbow", "Armadyl godsword", "Mystic robe bottom", "Mystic robe top", "Mystic robe bottom (light)", "Mystic robe top (light)", "Mystic robe bottom (dark)", "Mystic robe top (dark)", "Ancient staff", "Bandos chestplate", "Bandos tassets", "Berserker ring", "Archers ring", "Archer helm", "Saradomin brew(4)", "Saradomin brew(3)", "Saradomin brew(2)", "Saradomin brew(1)", "Stamina potion(4)", "Stamina potion(3)", "Stamina potion(2)", "Stamina potion(1)", "Anti-venom+(4)", "Anti-venom+(3)", "Anti-venom+(2)", "Anti-venom+(1)"};
	
      
    public void onStart() {
    	startTime = System.currentTimeMillis();
    }
    
    public void onExit() {
    	long runTime = System.currentTimeMillis() - startTime;
    	log("The script ran for" + formatTime(runTime) + ".");
    }
    
    private enum State {
    	LOOTING, BANKING, WAIT, WALK_TO_BANK, WALK_TO_WILDY, INCOMBAT, STOP
    }
    
    private State getState() {
    	if(!inventory.isFull() && !myPlayer().isMoving())
    		return State.LOOTING;
    	if(inventory.isFull() && !bankarea.contains(myPlayer()))
    		return State.WALK_TO_BANK;
    	if(inventory.isFull() && bankarea.contains(myPlayer()))
    		return State.BANKING;
    	if(!inventory.isFull() && !wildy.contains(myPlayer()) || !bigwildy.contains(myPlayer()))
    		return State.WALK_TO_WILDY;
    	if(myPlayer().isUnderAttack() && skills.getDynamic(Skill.HITPOINTS) <= 8)
    		return State.INCOMBAT;
    	return State.WAIT;
    }
    
	public int onLoop() throws InterruptedException {
		switch (getState()) {
		case BANKING:
			bank();
			break;
		case INCOMBAT:
			combat();
			break;
		case LOOTING:
			looting();
			break;
		case WAIT:
			doAntiBan();
			sleep(random(200, 300));
			break;
		case WALK_TO_BANK:
			walkToBank();
			break;
		case WALK_TO_WILDY:
			walkToWild();
			break;
		case STOP:
			this.stop();
		}
		return random(50, 100);
	}
	
	private void doAntiBan() throws InterruptedException {
		switch (random(1, 50)) {
		case 1:
			 getTabs().open(Tab.SKILLS);
			 sleep(random(500, 5000));
			 log("Antiban Case 1");
			break;
		case 2:
			 getTabs().open(Tab.SKILLS);
			 sleep(random(500, 5000));
			 getSkills().hoverSkill(Skill.FISHING);
			 sleep(random(100, 8000));
			 getMouse().moveRandomly();
			 log("Antiban Case 2");
			break;
		case 3:
			getMouse().moveRandomly();
			log("Antiban Case 3");
			break;
		case 4:
			this.camera.movePitch(random(0, 360));
			this.camera.moveYaw(random(0, 360));
			log("Antiban Case 4");
			break;
		case 5:
			 this.camera.movePitch(random(0, 360));
			 log("Antiban Case 5");
			break;
		case 6:
			this.camera.moveYaw(random(0, 360));
			log("Antiban Case 6");
			break;
		}
		sleep(random(700, 1800));
		getTabs().open(Tab.INVENTORY);
		
	}

	private void looting() throws InterruptedException {
		if(!inventory.isFull()&&skills.getDynamic(Skill.HITPOINTS)>6&&!myPlayer().isUnderAttack()){
            if(!bigwildy.contains(myPlayer())){
                log("walking randomly");
                walking.webWalk(wildy.getRandomPosition());
            }
		for(int i = 0; i < P2PLoot.length; i++) {
			for(GroundItem loot: groundItems.getAll()) {
				if(loot.getName().equals(P2PLoot[1]) && loot != null);
				if(!inventory.isFull() || !myPlayer().isMoving())
					walkToWild();
				if(inventory.isFull()||skills.getDynamic(Skill.HITPOINTS)<=9||myPlayer().isUnderAttack()){
					walkToBank();
					break;
				}
					if(!(settings.getRunEnergy() <=25)) {
                    	settings.setRunning(true);
                    }
                    if(myPlayer().isMoving()) {
                    sleep(10);
                    break;
				}else{
					groundItems.closest(P2PLoot[i]);
                    log("found item!");
                    GroundItem a = groundItems.closest(P2PLoot[i]);
                    a.interact("Take");
                    while(myPlayer().isAnimating());
                    break;
				}
			}
		}
	}
}

	private void combat() throws InterruptedException {
		settings.setRunning(true);
		walking.webWalk(bankarea);
		if(skills.getDynamic(Skill.HITPOINTS) <= 9)
			openBank();
			depositBank();
			bank.withdraw("Shark", 1);
			closeBank();
			inventory.interact("Eat", "Shark");
			log("ate some delicious shark");
		
	}

	public void bank() throws InterruptedException {
		openBank();
		depositBank();
		closeBank();
		
	}

	private void closeBank() {
		if(bank.isOpen())
			bank.close();
		log("bank is closed!");
		
	}

	private void depositBank() throws InterruptedException {
		
	if(bank.isOpen()) {
		bank.depositAll();
		sleep(random(30, 70));
	}
	log("Items have been deposited.");
		
	}

	private void openBank() throws InterruptedException{
		NPC closestBanker = getNpcs().closest("Banker");
		Entity closestBankBooth = objects.closest("Bank Booth");
		if(!bank.isOpen()) {
			int rand = random(3);
			if(rand == 1) {
				closestBankBooth.interact("Bank");
			}else{
				closestBanker.interact("Bank");
			}
			
			sleep(random(100, 150));
			log("Bank has been opend");
		}
		
	}

	public void walk(boolean tobank) throws InterruptedException {
		if(tobank) {
			getWalking().webWalk(bankarea);
		}else{
			getWalking().webWalk(wildy);
		}
	}
	
	public void walkToBank() throws InterruptedException {
		walk(true);
	}
	
	public void walkToWild() throws InterruptedException {
		walk(false);
	}
	
	public void onPaint(Graphics2D g) {
    		long runTime = System.currentTimeMillis() - startTime;
    
    		Font font = new Font("TimesRoman", Font.BOLD, 18);
    		g.setFont(font);
    		g.setColor(Color.green);
    	
    		g.drawString("Run Time - " + formatTime(runTime), 10, 220);
    	}
    

	public final String formatTime(final long ms){
	    long s = ms / 1000, m = s / 60, h = m / 60, d = h / 24;
	    s %= 60; m %= 60; h %= 24;
	
	    return d > 0 ? String.format("%02d:%02d:%02d:%02d", d, h, m, s) :
	           h > 0 ? String.format("%02d:%02d:%02d", h, m, s) :
	           String.format("%02d:%02d", m, s);
	}
}

	
	

i don't know who it was with the open source but you helped me a lot already thanks.

if anyone could help me out here thanks.

what is line

WildyLooterv2.java:157

?

Your error lies there

Edited by House

just a suggestion, dont know if this is possible but if it is maybe add something so it loots everything over X g.e value (or anything over 1k alch value)

  • Author
1 minute ago, jesenican said:

is the script for looting in pvp worlds? xD

no, in the wilderness

8 minutes ago, tehgousch said:

just a suggestion, dont know if this is possible but if it is maybe add something so it loots everything over X g.e value (or anything over 1k alch value)

i am going to in the future, but i was more thinking of getting the prices from osbuddy and then loot highest prices first.
but first i need to make this work better :P 

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.