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.

GUI Issues

Featured Replies

Hey guys, I am very new to Java and learning as I go. So far I wrote an Edgeville man killer script to learn a bit, I am now trying to implement a gui and have made one using WindowBuilder in Eclipse but cannot get it to run when my script is started, the script itself and the gui are 2 different classes. The script is probably very sloppy and I likely am trying to run the gui entirely wrong, the knowledge I have of Java is very small. Any help is greatly appreciated!

 

This is the script itself:

 

package Main;

import org.osbot.script.Script;
import org.osbot.script.ScriptManifest;
import org.osbot.script.rs2.map.Position;
import org.osbot.script.rs2.model.GroundItem;
import org.osbot.script.rs2.model.Player;
import org.osbot.script.rs2.model.NPC;
import org.osbot.script.rs2.model.RS2Object;
import org.osbot.script.rs2.skill.Skill;
import GUI.EdgeMenGUI;
 
 
 
 
@ScriptManifest(author = "Molly", info = "Edgeville Men version 3", name = "EdgeManKiller", version = 1)
public class EdgeMen extends Script {
final int[] MAN_ID = {313, 314, 315};
int HERB_ID = (207);
boolean HASFOOD;
public static boolean RUN = false;
public static int FOODID;
public static int HPEAT;
Position Room = new Position (3098, 3510, 0);
Position One = new Position (3098, 3503, 0);
Position Bank = new Position (3096, 3494, 0);
Position Two = new Position (3101, 3509, 0);
 
 
 
 
public void onStart() {
 
log("Slay all the men!");
 
}
 
public int onLoop() throws InterruptedException {
 
GroundItem Herb = closestGroundItem(207);
RS2Object Ladder = closestObject(16679);
RS2Object Door = closestObject(11948);
int Hitpoints = client.getSkills().getCurrentLevel(Skill.HITPOINTS);
if (RUN == false) {
new EdgeMenGUI();
}
 
if (Ladder != null) {
LadderHandler();
}
if (Door != null) {
DoorHandler();
}
 
if (Hitpoints < HPEAT) {
EatOrBank();
}
if (Herb != null) {
Loot();
else {
 
Kill();
 
}
return (80);}
 
 
 
private int Loot() throws InterruptedException {
GroundItem Herb = closestGroundItem(207);
Herb.interact("Take");
if (client.getInventory().isFull()) {
Bank();
}
return 500;
}
 
private void Bank() throws InterruptedException {
if (client.getInventory().isFull()) {
walkExact(Room);
sleep(1500);
walkExact(One);
sleep(1500);
walkExact(Bank);
sleep(3000);
RS2Object Bank = closestObject(13446);
Bank.interact("Bank");
sleep(1500);
while (!client.getBank().isOpen())
sleep(200);
client.getBank().depositAll();
sleep(750);
if (client.getBank().contains(FOODID)) {
client.getBank().withdraw5(FOODID);
}
 
sleep(250);
client.getBank().close();
while (client.getBank().isOpen())
sleep(200);
walkExact(One);
sleep(1500);
walkExact(Two);
sleep(1500);
}
}
 
private void Kill() throws InterruptedException {
Player player = client.getMyPlayer();
NPC man = closestNPC(MAN_ID);
if (man != null)
if (!player.isUnderAttack())  
if (!man.isUnderAttack())
man.interact("Attack");
sleep(1000);
}
 
private void LadderHandler() throws InterruptedException {
RS2Object Ladder = closestObject(16679);
Ladder.interact("Climb-down");
sleep(2000);
}
 
private void DoorHandler() throws InterruptedException {
RS2Object Door = closestObject(11948);
Door.interact("Open");
sleep(3000);
}
private void EatOrBank() throws InterruptedException {
if (FOODID != 0) {
if (client.getInventory().contains(FOODID)) {
client.getInventory().interactWithId(FOODID, "Eat");
}
else { 
WalkToBank();
}
}
else {
sleep(500);
}
}
private void WalkToBank() throws InterruptedException {
walkExact(Room);
sleep(1500);
walkExact(One);
sleep(1500);
walkExact(Bank);
sleep(3000);
RS2Object Bank = closestObject(13446);
Bank.interact("Bank");
sleep(1500);
while (!client.getBank().isOpen())
sleep(200);
client.getBank().depositAll();
sleep(750);
if (client.getBank().contains(FOODID)) {
client.getBank().withdraw5(FOODID);
}
else {
 
stop();
}
sleep(250);
client.getBank().close();
while (client.getBank().isOpen())
sleep(200);
walkExact(One);
sleep(1500);
walkExact(Two);
sleep(1500);
 
 
 
}
}
 
 
Here is the GUI class:
 
package GUI;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import Main.EdgeMen;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
 
 
public class EdgeMenGUI {
public String FOOD;
public String HP;
public int FOOD_ID;
public int HP_EAT;
private JFrame frame;
private JTextField txtFood;
private JTextField txtEat;
 
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EdgeMenGUI window = new EdgeMenGUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
 
/**
* Create the application.
*/
public EdgeMenGUI() {
initialize();
}
 
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
 
JLabel lblFoodId = new JLabel("Food ID:");
lblFoodId.setBounds(100, 96, 46, 14);
frame.getContentPane().add(lblFoodId);
 
JLabel lblNewLabel = new JLabel("Eat At:");
lblNewLabel.setBounds(100, 133, 46, 14);
frame.getContentPane().add(lblNewLabel);
 
JButton btnNewButton = new JButton("Start");
btnNewButton.setBounds(153, 175, 89, 23);
frame.getContentPane().add(btnNewButton);
 
txtFood = new JTextField();
txtFood.setEnabled(false);
txtFood.setBounds(156, 93, 86, 20);
frame.getContentPane().add(txtFood);
txtFood.setColumns(10);
 
txtEat = new JTextField();
txtEat.setEnabled(false);
txtEat.setBounds(156, 130, 86, 20);
frame.getContentPane().add(txtEat);
txtEat.setColumns(10);
 
final JCheckBox chckbxEat = new JCheckBox("Eat");
chckbxEat.setBounds(127, 63, 97, 23);
frame.getContentPane().add(chckbxEat);
 
txtFood = new JTextField();
txtFood.setBounds(156, 93, 86, 20);
frame.getContentPane().add(txtFood);
txtFood.setColumns(10);
 
txtEat = new JTextField();
txtEat.setBounds(156, 130, 86, 20);
frame.getContentPane().add(txtEat);
txtEat.setColumns(10);
 
 
 
 
chckbxEat.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
if (chckbxEat.isSelected());
txtFood.isEnabled();
txtEat.isEnabled();
}
});
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (chckbxEat.isSelected()) {
FOOD = txtFood.getText(); 
HP = txtEat.getText();
try{
 FOOD_ID = Integer.parseInt(FOOD);
 HP_EAT = Integer.parseInt(HP);
} catch (NumberFormatException e) {
 
}}
 
 
else {
FOOD_ID = (0);
HP_EAT = (0);
 
}
EdgeMen.FOODID = FOOD_ID;
EdgeMen.HPEAT = HP_EAT;
EdgeMen.RUN = true;
frame.dispose();
}});
 
}}
 
 

Edited by Molly

 

Hey guys, I am very new to Java and learning as I go. So far I wrote an Edgeville man killer script to learn a bit, I am now trying to implement a gui and have made one using WindowBuilder in Eclipse but cannot get it to run when my script is started, the script itself and the gui are 2 different classes. The script is probably very sloppy and I likely am trying to run the gui entirely wrong, the knowledge I have of Java is very small. Any help is greatly appreciated!

 

This is the script itself:

 

 

package Main;
import org.osbot.script.Script;
import org.osbot.script.ScriptManifest;
import org.osbot.script.rs2.map.Position;
import org.osbot.script.rs2.model.GroundItem;
import org.osbot.script.rs2.model.Player;
import org.osbot.script.rs2.model.NPC;
import org.osbot.script.rs2.model.RS2Object;
import org.osbot.script.rs2.skill.Skill;
import GUI.EdgeMenGUI;




@ScriptManifest(author = "Molly", info = "Edgeville Men version 3", name = "EdgeManKiller", version = 1)
public class EdgeMen extends Script {
final int[] MAN_ID = {313, 314, 315};
int HERB_ID = (207);
boolean HASFOOD;
public static boolean RUN = false;
public static int FOODID;
public static int HPEAT;
Position Room = new Position (3098, 3510, 0);
Position One = new Position (3098, 3503, 0);
Position Bank = new Position (3096, 3494, 0);
Position Two = new Position (3101, 3509, 0);




public void onStart() {

log("Slay all the men!");

}

public int onLoop() throws InterruptedException {

GroundItem Herb = closestGroundItem(207);
RS2Object Ladder = closestObject(16679);
RS2Object Door = closestObject(11948);
int Hitpoints = client.getSkills().getCurrentLevel(Skill.HITPOINTS);
if (RUN == false) {
new EdgeMenGUI();
}

if (Ladder != null) {
LadderHandler();
}
if (Door != null) {
DoorHandler();
}

if (Hitpoints < HPEAT) {
EatOrBank();
}
if (Herb != null) {
Loot();
} 
else {

Kill();

}
return (80);}



private int Loot() throws InterruptedException {
GroundItem Herb = closestGroundItem(207);
Herb.interact("Take");
if (client.getInventory().isFull()) {
Bank();
}
return 500;
}

private void Bank() throws InterruptedException {
if (client.getInventory().isFull()) {
walkExact(Room);
sleep(1500);
walkExact(One);
sleep(1500);
walkExact(Bank);
sleep(3000);
RS2Object Bank = closestObject(13446);
Bank.interact("Bank");
sleep(1500);
while (!client.getBank().isOpen())
sleep(200);
client.getBank().depositAll();
sleep(750);
if (client.getBank().contains(FOODID)) {
client.getBank().withdraw5(FOODID);
}

sleep(250);
client.getBank().close();
while (client.getBank().isOpen())
sleep(200);
walkExact(One);
sleep(1500);
walkExact(Two);
sleep(1500);
}
}

private void Kill() throws InterruptedException {
Player player = client.getMyPlayer();
NPC man = closestNPC(MAN_ID);
if (man != null)
if (!player.isUnderAttack())  
if (!man.isUnderAttack())
man.interact("Attack");
sleep(1000);
}

private void LadderHandler() throws InterruptedException {
RS2Object Ladder = closestObject(16679);
Ladder.interact("Climb-down");
sleep(2000);
}

private void DoorHandler() throws InterruptedException {
RS2Object Door = closestObject(11948);
Door.interact("Open");
sleep(3000);
}
private void EatOrBank() throws InterruptedException {
if (FOODID != 0) {
if (client.getInventory().contains(FOODID)) {
client.getInventory().interactWithId(FOODID, "Eat");
}
else { 
WalkToBank();
}
}
else {
sleep(500);
}
}
private void WalkToBank() throws InterruptedException {
walkExact(Room);
sleep(1500);
walkExact(One);
sleep(1500);
walkExact(Bank);
sleep(3000);
RS2Object Bank = closestObject(13446);
Bank.interact("Bank");
sleep(1500);
while (!client.getBank().isOpen())
sleep(200);
client.getBank().depositAll();
sleep(750);
if (client.getBank().contains(FOODID)) {
client.getBank().withdraw5(FOODID);
}
else {

stop();
}
sleep(250);
client.getBank().close();
while (client.getBank().isOpen())
sleep(200);
walkExact(One);
sleep(1500);
walkExact(Two);
sleep(1500);



}
}


Here is the GUI class:

package GUI;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import Main.EdgeMen;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;


public class EdgeMenGUI {
public String FOOD;
public String HP;
public int FOOD_ID;
public int HP_EAT;
private JFrame frame;
private JTextField txtFood;
private JTextField txtEat;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
EdgeMenGUI window = new EdgeMenGUI();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the application.
*/
public EdgeMenGUI() {
initialize();
}

/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);

JLabel lblFoodId = new JLabel("Food ID:");
lblFoodId.setBounds(100, 96, 46, 14);
frame.getContentPane().add(lblFoodId);

JLabel lblNewLabel = new JLabel("Eat At:");
lblNewLabel.setBounds(100, 133, 46, 14);
frame.getContentPane().add(lblNewLabel);

JButton btnNewButton = new JButton("Start");
btnNewButton.setBounds(153, 175, 89, 23);
frame.getContentPane().add(btnNewButton);

txtFood = new JTextField();
txtFood.setEnabled(false);
txtFood.setBounds(156, 93, 86, 20);
frame.getContentPane().add(txtFood);
txtFood.setColumns(10);

txtEat = new JTextField();
txtEat.setEnabled(false);
txtEat.setBounds(156, 130, 86, 20);
frame.getContentPane().add(txtEat);
txtEat.setColumns(10);

final JCheckBox chckbxEat = new JCheckBox("Eat");
chckbxEat.setBounds(127, 63, 97, 23);
frame.getContentPane().add(chckbxEat);

txtFood = new JTextField();
txtFood.setBounds(156, 93, 86, 20);
frame.getContentPane().add(txtFood);
txtFood.setColumns(10);

txtEat = new JTextField();
txtEat.setBounds(156, 130, 86, 20);
frame.getContentPane().add(txtEat);
txtEat.setColumns(10);




chckbxEat.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
if (chckbxEat.isSelected());
txtFood.isEnabled();
txtEat.isEnabled();
}
});
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (chckbxEat.isSelected()) {
FOOD = txtFood.getText(); 
HP = txtEat.getText();
try{
 FOOD_ID = Integer.parseInt(FOOD);
 HP_EAT = Integer.parseInt(HP);
} catch (NumberFormatException e) {

}}


else {
FOOD_ID = (0);
HP_EAT = (0);

}
EdgeMen.FOODID = FOOD_ID;
EdgeMen.HPEAT = HP_EAT;
EdgeMen.RUN = true;
frame.dispose();
}});

}}
 

 

umm quite confused.

if nobody else gets in first just wait like 2-3 mins whilst i find an example in my folders

@ScriptManifest(author="Isolate", info="Project FTB! We Will Succeed!", name="DarkCore ", version=0.1D)

public class Skele extends Script {
      GUI_CLASS_NAME g = new GUI_CLASS_NAME();

    @Override
    public void onStart() {
         g.setVisible(true);
         while(g.isVisible){
            //hold the god damn phone
            }

    }

    @Override
    public void onExit() throws InterruptedException {

    }

    @Override
    public int onLoop() throws InterruptedException {
        Inventory i = client.getInventory();
        Player p = client.getMyPlayer();
        Bank b = client.getBank();


        return random(200, 500);
    }

    @Override
    public void onPaint(Graphics a) {

    }

class GUI_CLASS_NAME extends JFrame{
   //function where you want to close gui{
    g.dispose();
}
   //some pretty buttons
   //sexy functions
   //maybe a radial button or two !
}
}
  • Author

umm quite confused.

if nobody else gets in first just wait like 2-3 mins whilst i find an example in my folders

 

Thanks man, like I said I literally have 0 knowledge of Java lol. I initially wrote a script that kills men in edge and eats lobs under 20 hp and it ran fairly well. I wanted to learn how to use a GUI to let the user decided the hp it eats at and what food it eats so I put this together hoping it would work and it doesn't.

Try this if you still cannot get it to work :)

Make a new method in the GUI Class.

public void showGUI() {

EdgeMenGUI window = new EdgeMenGUI();

window.frame.setVisible(true);

}

insert this above the onStart();

EdgeMenGUI g = new EdgeMenGUI();

In the onStart method do

g.showGUI();

- Precise

Thanks man, like I said I literally have 0 knowledge of Java lol. I initially wrote a script that kills men in edge and eats lobs under 20 hp and it ran fairly well. I wanted to learn how to use a GUI to let the user decided the hp it eats at and what food it eats so I put this together hoping it would work and it doesn't.

edited my main post with the code


public void onStart() {

SwingUtilities.InvokeLater(new Runnable() {

@Override

public void run() {

Gui g = new Gui();

g.setVisible(true);

}

});

}

public void onStart() {
SwingUtilities.InvokeLater(new Runnable() {
@Override
public void run() {
Gui g = new Gui();
g.setVisible(true);
}
});
}

Based on the fact that he said he's new to Java, I doubt hes going to care about what thread his GUI is running on.

 

@OP this would be the correct way to run the GUI though.

Based on the fact that he said he's new to Java, I doubt hes going to care about what thread his GUI is running on.

 

@OP this would be the correct way to run the GUI though.

you fixed your name <3

  • Author

Really appreciate the help guys, I got my script up and running how I want it to be. Thanks a lot!

Guest
This topic is now closed to further replies.

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.