Jump to content

Simple bot - not starting issue


Spoodermon

Recommended Posts

package Clayminer;

 
import java.awt.Graphics2D;
 
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.Script;
import org.osbot.rs07.script.ScriptManifest;
 
@ScriptManifest(author = "Spooder", info = "Mines clay in varrock west", logo = "", name = "ClayMiner + banking", version = 1)
 
public class ClayMiner extends Script {
final int clay = 7454;
final Area CLAY_AREA = new Area(3183, 3378, 3183, 3378);
final Area BANK_AREA = new Area(3185, 3445, 3182, 3436);
Inventory inven = getInventory();
Player player = myPlayer();
Bank bank = getBank();
 
@Override
public void onStart() {
log("The Script has started");
}
 
 
 
@Override
public int onLoop() throws InterruptedException {
getWalking().webWalk(CLAY_AREA);
if (!inven.isFull()) {
if (CLAY_AREA.contains(player)) {
if (!player.isMoving()) {
if (!player.isAnimating()) {
Entity rock = getObjects().closest(clay);
if (rock != null) {
rock.interact("mine");
sleep(random(50, 120));
}
}
 
}
 
 
}
 
 
if (inven.isFull()) {
getWalking().webWalk(BANK_AREA);
if (BANK_AREA.contains(player)) {
if (!getBank().isOpen()) {
getBank().open();
} else {
bank.deposit(434, 28);
}
}
}
 
return 80;
}
 
@Override
public void onPaint(Graphics2D g) {
 
}
@Override
public void onExit() {
 
}
}
 
 
 
 
 
 
Since i dont know how people bring in the script i just copied and pasted. If you cant already see, this script is very scrubby, because this is my first ever attempt at writing a script, not sure why its not starting. Look forward to a solution. Thanks
Link to comment
Share on other sites

package Clayminer;

 

import java.awt.Graphics2D;

 

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.api.model.RS2Object;

import org.osbot.rs07.script.Script;

import org.osbot.rs07.script.ScriptManifest;

 

@ScriptManifest(author = "Spooder", info = "Mines clay in varrock west", logo = "", name = "ClayMiner + banking", version = 1)

 

public class ClayMiner extends Script {

final int clay = 7454;

final Area CLAY_AREA = new Area(3183, 3378, 3183, 3378);

final Area BANK_AREA = new Area(3185, 3445, 3182, 3436);

 

 

@Override

public void onStart() {

log("The Script has started");

}

 

 

 

@Override

public int onLoop() throws InterruptedException {

 

if (!inventory.isFull()) {

if (CLAY_AREA.contains(myPlayer())) {

if (!myPlayer().isMoving()) {

if (!myPlayer().isAnimating()) {

RS2Object rock = getObjects().closest(clay);

if (rock != null) {

rock.interact("mine");

sleep(random(50, 120));

}

}

 

}else{

sleep(1000);

}

 

} else{

getWalking().webWalk(CLAY_AREA);

}

 

}

 

 

if (inventory.isFull()) {

getWalking().webWalk(BANK_AREA);

if (BANK_AREA.contains(myPlayer())) {

if (!getBank().isOpen()) {

getBank().open();

} else {

bank.deposit(434, 28);

}

}

}

 

return 800;

}

 

@Override

public void onPaint(Graphics2D g) {

 

}

@Override

public void onExit() {

 

}

}

 

 

 

 

I changed it up a little bit but im guessing that the myPlayer(), is not grabbing my player, because when i start the script he does absolutely nothing.

Link to comment
Share on other sites

 

package Clayminer;
 
import java.awt.Graphics2D;
 
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.api.model.RS2Object;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
 
@ScriptManifest(author = "Spooder", info = "Mines clay in varrock west", logo = "", name = "ClayMiner + banking", version = 1)
 
public class ClayMiner extends Script {
final int clay = 7454;
final Area CLAY_AREA = new Area(3183, 3378, 3183, 3378);
final Area BANK_AREA = new Area(3185, 3445, 3182, 3436);
 
 
@Override
public void onStart() {
log("The Script has started");
}
 
 
 
@Override
public int onLoop() throws InterruptedException {
 
if (!inventory.isFull()) {
if (CLAY_AREA.contains(myPlayer())) {
if (!myPlayer().isMoving()) {
if (!myPlayer().isAnimating()) {
RS2Object rock = getObjects().closest(clay);
if (rock != null) {
rock.interact("mine");
sleep(random(50, 120));
}
}
 
}else{
sleep(1000);
}
 
} else{
getWalking().webWalk(CLAY_AREA);
}
 
}
 
 
if (inventory.isFull()) {
getWalking().webWalk(BANK_AREA);
if (BANK_AREA.contains(myPlayer())) {
if (!getBank().isOpen()) {
getBank().open();
} else {
bank.deposit(434, 28);
}
}
}
 
return 800;
}
 
@Override
public void onPaint(Graphics2D g) {
 
}
@Override
public void onExit() {
 
}
}
 
 
 
 
I changed it up a little bit but im guessing that the myPlayer(), is not grabbing my player, because when i start the script he does absolutely nothing.

 

You should put logs every where in your code and see which logs execute and which ones don't. Simple debug technique

Link to comment
Share on other sites

http://osbot.org/forum/topic/58775-a-beginners-guide-to-writing-osbot-scripts-where-to-get-started-by-apaec/

 

Learn how to do states.

 

Also, you use nested if statements instead of just having it neater with a single if statement.

if (!inventory.isFull()) {
if (CLAY_AREA.contains(myPlayer())) {
if (!myPlayer().isMoving()) {
if (!myPlayer().isAnimating()) {
RS2Object rock = getObjects().closest(clay);
if (rock != null) {
rock.interact("mine");
sleep(random(50, 120));
}
}
 

Can go to

Entity clay = objects.closest(clay)
if(!inventory.isFull() && CLAY_AREA.contains(myPlayer()) && !myPlayer().isMoving() && !myPlayer().isAnimating() && clay!=null)
{
clay.interact("mine");
sleep(random(1250,1500));
}
Link to comment
Share on other sites

adding the logs made it work some how, even tho its shoulda have oh well thanks for the help


ok thanks for the notes, about the ifs, i have 1 more question about this bot, when i mine the clay i want it to stay at the most northern clay in varrock west so i dont get attacked by the mugger, how would i make it stay just on that one, because its doing find closest clay and then running the one south, and then running back up cuz it checks that its not in the clay area and runs back north, which will get banned really fast, how do i fix that?

Link to comment
Share on other sites

adding the logs made it work some how, even tho its shoulda have oh well thanks for the help

ok thanks for the notes, about the ifs, i have 1 more question about this bot, when i mine the clay i want it to stay at the most northern clay in varrock west so i dont get attacked by the mugger, how would i make it stay just on that one, because its doing find closest clay and then running the one south, and then running back up cuz it checks that its not in the clay area and runs back north, which will get banned really fast, how do i fix that?

 

Make an area around only the clay rocks you want it to be at, so lets say its

final Area CLAY_NORTH = new Area (1 , 10, 2, 20);

you would do Entity clay = objects.closest(CLAY_NORTH, "Rocks"); so that way it's only checking for that area.

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