Jump to content

Error in script executor! java.lang.NullPointerException


Recommended Posts

Posted

When i start the script this error comes:

[ERROR][Bot #1][08/19 08:04:33 PM]: Error in script executor!
java.lang.NullPointerException
	at org.osbot.rs07.api.map.Area.contains(kn:165)
	at flourMaker.Grind.grinder(Grind.java:92)
	at flourMaker.Main.onLoop(Main.java:24)
	at org.osbot.rs07.event.ScriptExecutor$InternalExecutor.run(qn:254)
	at java.lang.Thread.run(Unknown Source)

And as far as I understood it I have to do some sort of null check but dont know how to do it

The code:

package flourMaker;

import org.osbot.rs07.api.Bank;
import org.osbot.rs07.api.Inventory;
import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.model.Entity;
import org.osbot.rs07.api.model.Player;
import org.osbot.rs07.script.MethodProvider;

public class Grind extends MethodProvider{
	
	final Area BANK_AREA = new Area(3183, 34405, 3185, 3444);
	final Area GUILD_TRAY = new Area(3142, 3449, 3146, 3446);
	final Area GUILD_HOPPER = new Area(3140, 3452, 3143, 3450).setPlane(2);
	
	final int BANK_BOTH_ID = 10583;
	final int GRAIN_ID = 1947;
	
	final String HOPPER_NAME = "Hopper";
	final String CONTROLS_NAME = "Hopper controls";
	
	boolean tray = false;
	boolean con = false;
	boolean shouldGrain;
	boolean finishedGrain;
	
	Inventory inv;
	Player player;
	Bank bank;
	
		public void starter() {
			exchangeContext(getBot());
			inv = getInventory();
			player = myPlayer();
			bank = getBank();
		}

	public void grinder() throws InterruptedException {
		
		if (inventory.isFull() && inventory.contains(GRAIN_ID)) {
			shouldGrain = true;
		}

		Entity hopper = getObjects().closest(HOPPER_NAME);
		Entity controller = getObjects().closest(CONTROLS_NAME);
		Entity bankbooth = getObjects().closest(BANK_BOTH_ID);

		if (shouldGrain) {
			if (GUILD_HOPPER.contains(player)) {
				if (inventory.contains(GRAIN_ID)) {
					if (!con) {
						if (hopper != null) {
							if (hopper.isVisible()) {
								if (!player.isAnimating()) {
									if (!player.isMoving()) {
										hopper.interact("Fill");
										sleep(random(1500, 2000));
										con = true;
									}
								}
							} else {
								getCamera().toEntity(hopper);
							}
						}
					} else {
						if (controller != null) {
							if (controller.isVisible()) {
								if (!player.isAnimating()) {
									if (!player.isMoving()) {
										controller.interact("Operate");
										sleep(random(1500, 2000));
										con = false;
									}
								}
							}
						}
					}
				} else {
					tray = true;
					shouldGrain = false;
					controller.interact("Operate");
					sleep(random(1500, 2000));

				}
			} else {
				getWalking().webWalk(GUILD_HOPPER);
			}
		} else {
			if (BANK_AREA.contains(player)) {
				if (bank.isOpen()) {
					bank.withdrawAll(GRAIN_ID);
				} else {
					if (bankbooth != null) {
						if (bankbooth.isVisible()) {
							bankbooth.interact("Bank");
							sleep(random(2000, 3000));
						} else {
							getCamera().toEntity(bankbooth);
						}
					}
				}
			} else {
				getWalking().webWalk(BANK_AREA);
			}
		}
	}
}

AS far as I understood it the problem is something to do with the areas but dont know what to do

Posted (edited)
exchangeContext(getBot()); 

Is in script not the class itself.

 

public class TopLevel extends Script {

	Grind grind;
	public void onStart() throws InterruptedException {
		grind = 	new Grind();
		grind.exchangeContext(getBot());
		grind.starter() ;
...
    }

...
public class Grind extends MethodProvider{
	...
		public void starter() {
			inv = getInventory();
			player = myPlayer();
			bank = getBank();
		}
...

 

Edited by Nbacon
  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...