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.

Problem with paint in my script

Featured Replies

Hello guys!

I followed a YouTube tutorial that shows you how to write a simple woodcutting script and I tried to follow all the steps correctly but I don't understand why the paint doesn't show up.

Maybe you guys could help a noob out.

package prolette.woodcutter;

import org.osbot.rs07.api.Camera;
import org.osbot.rs07.api.Client;
import org.osbot.rs07.api.GrandExchange;
import org.osbot.rs07.api.Inventory;
import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.model.Entity;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.script.MethodProvider;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;

import java.awt.*;

@ScriptManifest(author = "prolette", name = "Woodcutter", info = "Chops trees near the GE and banks them.", version = 0.1, logo = "")
public class Main extends Script {

    static Timer runTime;

    final String TREE_NAME = "Tree";

    final Position BANKER_LOCATION = new Position(3162, 3490, 0);

    final Area GE = new Area(3147, 3507, 3182, 3471);

    final Area TREE_AREA = new Area(
            new int[][]{
                    { 3146, 3465 },
                    { 3147, 3457 },
                    { 3152, 3448 },
                    { 3159, 3449 },
                    { 3161, 3454 },
                    { 3162, 3459 },
                    { 3161, 3465 }
            }
    );

    final int BANK_ID = 6528;

    int startExp;

    int startLvl;

    int logsChopped = 0;

    @Override
    public void onStart() throws InterruptedException {
        runTime = new Timer(0);
        startExp = getSkills().getExperience(Skill.WOODCUTTING);
        startLvl = getSkills().getVirtualLevel(Skill.WOODCUTTING);
    }

    @Override
    public void onExit() throws InterruptedException {

    }

    @Override
    public int onLoop() throws InterruptedException {
        if (!getInventory().isFull()) {
            if (TREE_AREA.contains(myPlayer())) {
                Entity tree = getObjects().closest(TREE_NAME);

                if (tree != null) {
                    if (tree.isVisible()) {
                        if (!myPlayer().isAnimating()) {
                            if (!myPlayer().isMoving()) {
                                tree.interact("Chop down");
                                sleep(random(700, 800));
                            }
                        }
                    } else {
                        getCamera().toEntity(tree);
                    }
                }
            }else {
                getWalking().webWalk(TREE_AREA);
            }
        }else {
            if (GE.contains(myPlayer())) {
                Entity banker = getNpcs().closest(BANK_ID);

                if (bank.isOpen()) {
                    bank.depositAll();
                }else {

                    if (banker != null) {
                        if (banker.isVisible()) {
                            banker.interact("Bank");
                            sleep(random(700, 800));
                        }else {
                            getCamera().toEntity(banker);
                        }
                    }
                }
            }else {
                getWalking().webWalk(BANKER_LOCATION);
            }
        }
    return 50;
    }

    public void onMessage(String message) {
        if (message.contains("You get some logs.")) {
            logsChopped++;
        }
    }

    public void onPaint(Graphics g) {

        Graphics2D gr = (Graphics2D)g;
        gr.setColor(Color.RED);
        gr.setFont(new Font("Arial",Font.PLAIN,10));

        gr.drawString("Logs chopped: " + logsChopped, 12, 99);
        gr.drawString("Logs chopped/h: " + getPerHour(logsChopped), 12, 114);

        gr.drawString("Exp gained: " + (getSkills().getExperience(Skill.WOODCUTTING)- startExp), 12, 129);
        gr.drawString("Exp gained/h: " + getPerHour(getSkills().getExperience(Skill.WOODCUTTING)- startExp), 12, 144);

        gr.drawString("Lvls gained: " + (getSkills().getVirtualLevel(Skill.WOODCUTTING)- startLvl), 12, 159);
        gr.drawString("Lvls gained/h: " + getPerHour(getSkills().getVirtualLevel(Skill.WOODCUTTING)- startLvl), 12, 174);
    }

    public static int getPerHour(int value) {
        if (runTime != null && runTime.getElapsed() > 0) {
            return (int) (value * 3600000d / runTime.getElapsed());
        }else return 0;
    }

    public static long getPerHour(long value) {
        if (runTime != null && runTime.getElapsed() > 0) {
            return (long) (value * 3600000d / runTime.getElapsed());
        }else return 0;
    }

    public class Timer {

        private long period;
        private long start;

        public Timer(long period)
        {
            this.period = period;
            start = System.currentTimeMillis();
        }

        public long getElapsed()
        {
            return System.currentTimeMillis() - start;
        }

        public long getRemaining()
        {
            return period - getElapsed();
        }

        public boolean isRunning()
        {
            return getElapsed() <= period;
        }

        public void reset()
        {
            start = System.currentTimeMillis();
        }

        public void stop()
        {
            period = 0;
        }

        public String format(long milliSeconds)
        {
            long secs = milliSeconds / 1000L;
            return String.format("%02d:%02d:%02d", new Object[] {
                    Long.valueOf(secs / 3600L), Long.valueOf((secs % 3600L) / 60L), Long.valueOf(secs % 60L)
            });
        }
    }
}

 

  • Author

I found my stupid mistake, sorry to bother you. I had to write Graphics2D at the end

  • Author
6 minutes ago, Khaleesi said:

@proletteThat was probably my old tutorial for Osbot 1 client :)


public void onPaint(Graphics g)
Needs to be:

public void onPaint(Graphics2D g) {

It used to take a Graphics object but not it takes a graphics2D object :)
You can remove the following line aswell
Graphics2D gr = (Graphics2D)g;

Thanks a lot for your help

9 minutes ago, Khaleesi said:

@proletteThat was probably my old tutorial for Osbot 1 client :)


public void onPaint(Graphics g)
Needs to be:

public void onPaint(Graphics2D g) {

It used to take a Graphics object but not it takes a graphics2D object :)
You can remove the following line aswell
Graphics2D gr = (Graphics2D)g;

Am I doing something wrong with the logs part cuz it doesn't change from 0?

Change onMessage(String message) to onMessage(Message m) and then get the actual string from the message via m.getMessage(), and add @Override above the onMessage just to see if the code editor throws any errors and to make sure it's the right method. It'll then start counting logs chopped :D

Create an account or sign in to comment

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.