Jump to content

Problem running program


peckerwood

Recommended Posts

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");
        }
    }
}

 

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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()){
            
        }
    }
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

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