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.

Progressive woodcutter with GE and mysql stats

Featured Replies

My first script(started learning java few days ago)

Looking for some feedback what you would improve/change ignore the log texts

	import org.osbot.rs07.api.map.constants.Banks;
import org.osbot.rs07.api.model.NPC;
import org.osbot.rs07.api.model.RS2Object;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
	import java.awt.*;
	import org.osbot.rs07.api.Bank;
import org.osbot.rs07.api.GrandExchange;
import org.osbot.rs07.api.Inventory;
import org.osbot.rs07.api.Walking;
import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.map.constants.Banks;
import org.osbot.rs07.api.model.*;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.api.util.ItemContainer;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
import org.osbot.rs07.utility.ConditionalSleep2;
import org.osbot.rs07.api.map.Area;
import org.osbot.rs07.api.model.NPC;
import org.osbot.rs07.api.ui.EquipmentSlot;
import org.osbot.rs07.api.ui.Tab;
	import java.*;
	import static java.lang.Math.toIntExact;
	
import java.awt.*;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.rmi.UnexpectedException;
import java.sql.Connection;
import java.sql.DriverManager;
	@SuppressWarnings("Duplicates")
@ScriptManifest(author = "trees", info = "trees", name = "trees", version = 0, logo = "")
public class tree extends Script {
	    //private Area bankAreaTrees = new Area(new Position(0, 0, 0), new Position(0, 0, 0));
	    private Area trees = new Area(new Position(0, 0, 0), new Position(0, 0, 0));
	    private Area oak = new Area(new Position(0, 0, 0), new Position(0, 0, 0));
	    private Area yew = new Area(new Position(0, 0, 0), new Position(0, 0, 0));
	    //private Area ge = new Area(new Position(0, 0, 0), new Position(0, 0, 0));
    //private long startTime;
    private int bankDeposit = 0;
    private long startTime;
	 
	    @Override
    public void onStart() throws InterruptedException {
        startTime = System.currentTimeMillis();
        //getWalking().webWalk(yew);
        String playerUsername = myPlayer().getName();
        log("Player username: " + playerUsername);
	        try {
            mysql(playerUsername, 0);
            log("Player username added to database");
        } catch (Exception e) {
            log("Problem adding player username to database");
        }
	        int woodCuttingLvlstart = getSkills().getDynamic(Skill.WOODCUTTING);
        log("Current woodcutting level : " + woodCuttingLvlstart);
	
        long hasAxe = getInventory().getAmount(1355);
        log("do we have axe"+hasAxe);
	 
	 
	
    }
	    @Override
    public int onLoop() throws InterruptedException {
        int woodCuttingLvl = getSkills().getDynamic(Skill.WOODCUTTING);
        String playerUsername2 = myPlayer().getName();
        long hasAxe = getInventory().getAmount(1355);
	
        log("do we have axe loop:"+hasAxe);
	
        try{
            lvlDbUpdate(playerUsername2,woodCuttingLvl);
            log("Updated lvl");
        } catch (Exception e){
            log("Error updating lvl");
        }
	        //lvlDbUpdate(woodCuttingLvl);
        //woodCuttingLvl = 40;
	        if (woodCuttingLvl < 15) {
            if (getInventory().getEmptySlotCount() >= 1) {
                log("Inventory NOT full, going to find trees");
	                if (trees.contains(myPlayer())) {
                    log("We are at Trees location");
                    //find tree
	
                    new ConditionalSleep(70000) {
                        @Override
                        public boolean condition() {
                            return !myPlayer().isAnimating() && !myPlayer().isMoving();
                        }
	                    }.sleep();
                    RS2Object tree = getObjects().closest("Tree");
	                    // continue when tree found
	                    if (tree != null) {
                        tree.interact("Chop down");
	                        //wait until tree cut
                        new ConditionalSleep(20000) {
                            @Override
                            public boolean condition() {
                                return !myPlayer().isAnimating() && !myPlayer().isMoving();
                            }
                        }.sleep();
	
                    }
	                } else {
                    log("Not at tree location going now");
                    getWalking().webWalk(trees);
                }
	
            } else {
                // inventory is full we must deposit
                log("Walking to bank)");
                getWalking().webWalk(Banks.VARROCK_EAST);
                NPC bank = getNpcs().closest("Banker");
                bank.interact("Bank");
                new ConditionalSleep(15000) {
                    @Override
                    public boolean condition() {
                        return getBank().isOpen();
	                    }
                }.sleep();
                getBank().depositAllExcept("Bronze axe");
                String playerUsername = myPlayer().getName();
	                try {
                    mysql(playerUsername, 27);
                    log("Amount of trees farmed updated in database");
                } catch (Exception e) {
                    log("Cant update amount of trees farmed");
                }
	
            }
	
        } else if (woodCuttingLvl >= 15 && woodCuttingLvl < 21) {
            //code if lvl higher or equal to 15
            if (getInventory().getEmptySlotCount() >= 1) {
                log("Inventory NOT full, going to find Oak");
                log(woodCuttingLvl);
	                if (oak.contains(myPlayer())) {
                    log("We are at Oak location");
                    //find tree
	
                    new ConditionalSleep(70000) {
                        @Override
                        public boolean condition() {
                            return !myPlayer().isAnimating() && !myPlayer().isMoving();
                        }
	                    }.sleep();
                    RS2Object oak = getObjects().closest("Oak");
	                    // continue when tree found
	                    if (oak != null) {
                        oak.interact("Chop down");
	                        //wait until tree cut
                        new ConditionalSleep(25000) {
                            @Override
                            public boolean condition() {
                                return !myPlayer().isAnimating() && !myPlayer().isMoving();
                            }
                        }.sleep();
	
                    }
	                } else {
                    log("Not at Oak location going now");
                    getWalking().webWalk(oak);
                }
	
            } else {
                // inventory is full we must deposit
                log("Walking to bank)");
                getWalking().webWalk(Banks.VARROCK_EAST);
                NPC bank = getNpcs().closest("Banker");
                bank.interact("Bank");
                new ConditionalSleep(14000) {
                    @Override
                    public boolean condition() {
                        return getBank().isOpen();
	                    }
                }.sleep();
                getBank().depositAllExcept("Bronze axe");
                String playerUsername = myPlayer().getName();
                try {
                    mysql(playerUsername, 27);
                    log("Amount of Oak farmed updated in database");
                } catch (Exception e) {
                    log("Cant update amount of Oak farmed");
                }
            }
	        } else if (woodCuttingLvl >= 21) {
            //code if lvl higher or equal to 21
            log(woodCuttingLvl);
            log("xxxxx");
	            new ConditionalSleep(15000){
                @Override
                public boolean condition(){
                    return getInventory().contains("Mithril axe");
                }
            }.sleep();
            boolean mithrilAxeInInventory = getInventory().contains("Mithril axe");
            long getAxe2 = getInventory().getAmount(1355);
	
            if (getAxe2 >= 1) {
                log("we have axe");
                //lets cut more trees because we already have mithril axe
                log("Using Mithril axe");
                if (getInventory().getEmptySlotCount() >= 1) {
                    log("Inventory NOT full, going to find Oak");
                    log(woodCuttingLvl);
	                    if (oak.contains(myPlayer())) {
                        log("We are at Oak location");
                        //find tree
	
                        new ConditionalSleep(70000) {
                            @Override
                            public boolean condition() {
                                return !myPlayer().isAnimating() && !myPlayer().isMoving();
                            }
	                        }.sleep();
                        RS2Object oak = getObjects().closest("Oak");
	                        // continue when tree found
	                        if (oak != null) {
                            oak.interact("Chop down");
	                            //wait until tree cut
                            new ConditionalSleep(25000) {
                                @Override
                                public boolean condition() {
                                    return !myPlayer().isAnimating() && !myPlayer().isMoving();
                                }
                            }.sleep();
	
                        }
	                    } else {
                        log("Not at Oak location going now");
                        getWalking().webWalk(oak);
                    }
	
                } else {
                    // inventory is full we must deposit
                    log("Walking to bank)");
                    getWalking().webWalk(Banks.VARROCK_EAST);
                    NPC bank = getNpcs().closest("Banker");
                    bank.interact("Bank");
                    new ConditionalSleep(14000) {
                        @Override
                        public boolean condition() {
                            return getBank().isOpen();
	                        }
                    }.sleep();
                    getBank().depositAllExcept("Mithril axe");
                    String playerUsername = myPlayer().getName();
	                    
                    
	                 
	
                    try {
                        mysql(playerUsername, 27);
                        log("Amount of Oak farmed updated in database");
                    } catch (Exception e) {
                        log("Cant update amount of Oak farmed");
                    }
                }
            } else {
	                // walk to ge and sell logs then buy mithril axe
                log("Walking to GE");
                getWalking().webWalk(Banks.GRAND_EXCHANGE);
	                if (Banks.GRAND_EXCHANGE.contains(myPlayer())) {
                    // ADD BETTER CONDITIONAL SLEEP SINCE ON BIG POPULATION SERVER ISSUES
                    log("Arrived at GE");
                    //find banker deposit all,withdraw logs,sell logs ge
                    NPC bankerGE = getNpcs().closest("Banker");
                    bankerGE.interact("Bank");
                    log("issue here");
                    new ConditionalSleep(60000) {
                        @Override
                        public boolean condition() {
                            return getBank().isOpen();
                        }
                    }.sleep();
                    log("Walking to 2GE");
	
                    if (getBank().isOpen()) {
                        getBank().depositAll();
                        log("Deposited everything to bank");
                        getBank().enableMode(Bank.BankMode.WITHDRAW_NOTE);
                        log("Walking to 3GE");
                        new ConditionalSleep(50000) {
                            @Override
                            public boolean condition() {
                                return getBank().getWithdrawMode() == Bank.BankMode.WITHDRAW_NOTE;
                            }
                        }.sleep();
                        log("Walking to 4GE");
                        long hasAxe4 = getInventory().getAmount(1355);
                        log("zero axes"+hasAxe4);
	 
	                        if (getInventory().getAmount(1355) <= 0) {
                            // note mode enabled,lets withdraw logs(id 1511)
                            log("issue 22");
                            log("no axe must buy");
                            getBank().withdrawAll(1511); // check if maybe not have this in bank
                            getBank().withdrawAll(995);
                            new ConditionalSleep(40000){
                                @Override
                                public boolean condition(){
	
                                    return getInventory().contains(1512) || getInventory().contains(995);
                                }
                            }.sleep();
	
                            if (getInventory().contains(1512)) {
                                log("we have logs in inventory lets sell them");
	                                NPC geClerk = getNpcs().closest("Grand Exchange Clerk");
                                geClerk.interact("Exchange");
                                new ConditionalSleep(50000) {
                                    @Override
                                    public boolean condition() {
                                        return getGrandExchange().isOpen();
                                    }
                                }.sleep();
	                                getGrandExchange().sellItem(1512, 2, 500);
                                getBank().enableMode(Bank.BankMode.WITHDRAW_ITEM);
	                                new ConditionalSleep(50000) {
                                    @Override
                                    public boolean condition() {
	                                        GrandExchange.Status statusSale = getGrandExchange().getStatus(GrandExchange.Box.BOX_1);
	 
	 
	                                        return statusSale == GrandExchange.Status.FINISHED_SALE;
	
                                    }
                                }.sleep();
                                log("Logs(1512) sold");
	                                getGrandExchange().collect();
                                new ConditionalSleep(50000) {
                                    @Override
                                    public boolean condition() {
                                        return getInventory().getAmount(995) > 300;
	                                    }
                                }.sleep();
	                                long currentGold = getInventory().getAmount(995);
                                log("Current gold in inventory : "+currentGold);
	
                                getGrandExchange().buyItem(1355, "mithril axe", toIntExact(currentGold), 1);
                                getBank().enableMode(Bank.BankMode.WITHDRAW_ITEM);
                                new ConditionalSleep(50000) {
                                    @Override
                                    public boolean condition() {
	                                        GrandExchange.Status statusSale = getGrandExchange().getStatus(GrandExchange.Box.BOX_1);
	 
	                                        return statusSale == GrandExchange.Status.FINISHED_BUY;
	
                                    }
                                }.sleep();
                                for(int i = 1;i < 10;i++){
                                    getGrandExchange().collect();
                                }
                                log("got axe");
                                new ConditionalSleep(50000) {
                                    @Override
                                    public boolean condition() {
                                        return getInventory().contains("Mithril axe");
                                    }
                                }.sleep();
	                                //mithrilAxeInInventory = true;
	
                            } else {
                                getBank().withdraw(1511, 200);
                                log("Waxxxxlking to GE");
                            }
	                        } else {
                            getWalking().webWalk(oak);
                            log("Walking to XGE");
                        }
                        getBank().close();
                    }
	                } else {
                    log("Walking again to GE");
                    getWalking().webWalk(Banks.GRAND_EXCHANGE);
                    log("Walking to GExx");
                }
	            }
	
        }
	 
	        return 600;
    }
	
    @Override
    public void onExit() throws InterruptedException {
        super.onExit();
    }
	    @Override
    public void onPaint(Graphics2D g) {
	
    }
	    public final int formatTime(final long ms) {
	        long s = ms / 1000, m = s / 60, h = m / 60;
	        s %= 60;
        m %= 60;
        h %= 24;
        //return String.format("%02d:%02d:%02d", h, m, s);
        return (int) (s);
    }
	
    private void mysql(String name, int treefarmed) throws Exception {
	        if (treefarmed > 0) {
            String url2 = "http://0.0.0.0/get.php?name=" + name + "&amount=" + treefarmed;
            URL obj2 = new URL(url2);
	
            HttpURLConnection con = (HttpURLConnection) obj2.openConnection();
            con.setRequestMethod("GET");
            con.setRequestProperty("User-agent", "Mozilla/6.0");
            int responseCode = con.getResponseCode();
            log("Sending URL request to : " + url2);
            log("Response code : " + responseCode);
        } else {
            String url = "http://0.0.0.0/get.php?name=" + name;
	            URL obj = new URL(url);
	
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            con.setRequestMethod("GET");
            con.setRequestProperty("User-agent", "Mozilla/5.0");
            int responseCode = con.getResponseCode();
            log("Sending URL request to : " + url);
            log("Response code : " + responseCode);
        }
	
    }
	    private void lvlDbUpdate(String name,int lvl) throws Exception {
	
        String url = "http://0.0.0.0/get.php?name=" + name+"&lvl="+lvl;
	        URL obj = new URL(url);
	
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("User-agent", "Mozilla/5.0");
        int responseCode = con.getResponseCode();
        log("Sending URL request to : " + url);
        log("Response code : " + responseCode);
    }
	
}
	 
	 

First suggestion would be to look at Enums for storing all your variables related to Trees. Next would just be improving code readability. :) Good start for 3 days though!

The code looks fine, but you should consider IDE formatting tools, eg CTRL + SHIFT + F in eclipse, CTRL + ALT + L in intellij, they make the code so much easier to read without having to manually format it

  • Author

Thanks for the comment guys and about code formatting in my IDE it looks good (I often use code reformat in intellij) but for some reason it pasted not so nicely here.

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.