Jump to content

Problem running program


Recommended Posts

Posted

I seem to have to errors in my code however when I add my .jar file to the scripts folder I am unable to run it from the client. I know its an issue with my code but can't seem to figure out what the problem is. I am new to this whole thing but would appreciate any help I can get!

import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;

@ScriptManifest(version = 1.0, logo = "", info = "Combat", author = "P", name = "bot")

public class Main extends Script{

    public long maxSleep = 1234;

    @Override
    public void onStart() throws InterruptedException {
        super.onStart();
        log("Script Started");

    }

    @Override
    public int onLoop() throws InterruptedException {
        combat combat = new combat();
        combat.findMonster();
        Eat eat = new Eat();
        eat.eat();
        eat.dropInv();
        return 432;
    }

    @Override
    public void onExit() throws InterruptedException {
        super.onExit();
        log("Script Ended");
    }
}
import org.osbot.rs07.api.model.Entity;

public class combat extends Main {

    public void findMonster() throws InterruptedException {
        Entity monster = getNpcs().closest("Cow", "Chicken");

        if(monster != null){
            monster.interact("Attack");
            if((monster == null) && !myPlayer().isAttackable()){
                sleep(343);
            }
        } else {
            sleep(maxSleep);
        }
    }

}
import org.osbot.rs07.api.GroundItems;
import org.osbot.rs07.api.Inventory;
import org.osbot.rs07.api.model.Character;

public class Eat {
    private Inventory inventory;
    private Character myChar;
    private GroundItems pickUp;

    public void eat() {
        int health = myChar.getHealthPercent();
        if(health < 20){
            inventory.getItem("Beef").interact("Eat");
            if(!inventory.contains("Beef") && !inventory.isFull()){
                pickUp.closest("Raw Beef").interact("Pick Up");

            }
        }

    }

    public void dropInv(){
        if(inventory.isFull()){
            inventory.dropAll("Bones", "Cow Hide");
        }
    }
}

 

Posted (edited)

I think you forgot to put them in a package.

I compiled and ran your code but... It froze my client

 

---------------------------------------------------------------------------------

Edit found your error.

You need to pass a MethodProvider to all class or echange context ... so things like 

inventory.getItem("Beef").interact("Eat"); 

can work

Edited by Nbacon
Posted

just in case anyone is experiencing the same issue, in order to utilize other classes you need to first pass the method provider as a field then create a constructor from that field in the new class. Example:

public class PickUp {
//the class field
    public final MethodProvider methods;
//the constructor
    public PickUp(MethodProvider methods) {
        this.methods = methods;
    }
//implementation of the MethodProvider field in order to access the OSBot Api class
    public void itemCheck(){
        if(methods.inventory.isFull()){
            
        }
    }
}

 

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...