crezzy Posted March 22, 2018 Share Posted March 22, 2018 (edited) Just wanted to check my bank worth so I wrote a basic script which gets prices from the OSBuddy API. Place in your local script directory (C/users/YOU/osbot/Scripts) It will take a few seconds depending on how many items are within your bank. Note: it will not check the value of untradeable items(e.g blowpipe with scales/darts init) or coins! Start the script with your bank open. Output will be shown on client paint. Download link: bankeval.jar Screenshot: Source code for anyone who wants it: import java.awt.Graphics2D; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "Crezzy", name = "Bank Evlauator", info = "Determins value of bank", logo = "", version = 1) public class Main extends Script { private int wealth = 0; private long startTime; private long endTime; private static final Pattern pattern = Pattern.compile("(?:\"overall\":)([0-9]+)"); private static int getPrice(int id) throws MalformedURLException, IOException { String url = "http://api.rsbuddy.com/grandExchange?a=guidePrice&i=" + id; BufferedReader reader = new BufferedReader( new InputStreamReader(new URL(String.format(url, id)).openConnection().getInputStream())); String line; while ((line = reader.readLine()) != null) { Matcher m = pattern.matcher(line); if (m.find() && m.groupCount() > 0) { int overallPrice = Integer.parseInt(m.group(1)); if (overallPrice == 0) { overallPrice = 1; } return overallPrice; } } return 1; } @Override public void onPaint(Graphics2D g) { Graphics2D paint = (Graphics2D) g.create(); paint.drawString("Amount of time took to get bank wealth: " + formatT(endTime), 10, 310); paint.drawString("Amount of items found in bank: " + getBank().getItems().length, 10, 325); paint.drawString("Bank amount: " + wealth, 10, 340); } private String formatT(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); } @Override public void onStart() { startTime = System.currentTimeMillis(); if (getBank().isOpen()) { for (Item i : getBank().getItems()) { try { wealth = wealth + getPrice(i.getId()); } catch (IOException e) { e.printStackTrace(); } } endTime = System.currentTimeMillis() - startTime; log("total wealth = " + wealth); } } @Override public int onLoop() throws InterruptedException { return 100; } } Edited March 22, 2018 by crezzy 1 Quote Link to comment Share on other sites More sharing options...
crezzy Posted March 22, 2018 Author Share Posted March 22, 2018 Updated; added basic paint and added source code to post for anyone who wants it Your welcome. Quote Link to comment Share on other sites More sharing options...
Chris Posted March 22, 2018 Share Posted March 22, 2018 (edited) import java.awt.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.text.NumberFormat; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "", name = "Bank Evaluator", info = "Determines the value of bank", logo = "", version = 1) public class Main extends Script { private int wealth = 0; private long startTime; private long endTime; private static final Pattern pattern = Pattern.compile("(?:\"overall\":)([0-9]+)"); private static int getPrice(int id) throws MalformedURLException, IOException { String url = "http://api.rsbuddy.com/grandExchange?a=guidePrice&i=" + id; BufferedReader reader = new BufferedReader( new InputStreamReader(new URL(String.format(url, id)).openConnection().getInputStream())); String line; while ((line = reader.readLine()) != null) { Matcher m = pattern.matcher(line); if (m.find() && m.groupCount() > 0) { int overallPrice = Integer.parseInt(m.group(1)); if (overallPrice == 0) break; return overallPrice; } } reader.close(); return 0; } @Override public void onPaint(Graphics2D paint) { paint.setColor(Color.ORANGE); paint.drawString("Amount of time took to get bank wealth: " + formatT(endTime), 10, 310); paint.drawString("Amount of items found in bank: " + formatIntegers(getBank().getItems().length), 10, 325); paint.drawString("Bank amount: " + formatIntegers(wealth), 10, 340); } private String formatT(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); } @Override public void onStart() { startTime = System.currentTimeMillis(); if (getBank().isOpen()) { for (Item i : getBank().getItems()) { if (i != null){ try { wealth = wealth + (getPrice(i.getId()) * i.getAmount()); } catch (IOException e) { e.printStackTrace(); } } } endTime = System.currentTimeMillis() - startTime; } } private String formatIntegers(int num) { return NumberFormat.getInstance().format(num); } @Override public int onLoop() throws InterruptedException { return 1000; } } made some changes hope u like Edited March 22, 2018 by Chris 1 Quote Link to comment Share on other sites More sharing options...
dreameo Posted March 22, 2018 Share Posted March 22, 2018 (edited) 2 hours ago, Chris said: made some changes hope u like The method should be kept static and the constructor private. ** class should be separate for ^ Edited March 22, 2018 by dreameo 1 Quote Link to comment Share on other sites More sharing options...
crezzy Posted March 22, 2018 Author Share Posted March 22, 2018 41 minutes ago, Chris said: import java.awt.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.text.NumberFormat; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.osbot.rs07.api.model.Item; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "", name = "Bank Evaluator", info = "Determines the value of bank", logo = "", version = 1) public class Main extends Script { private int wealth = 0; private long startTime; private long endTime; private static final Pattern pattern = Pattern.compile("(?:\"overall\":)([0-9]+)"); private static int getPrice(int id) throws MalformedURLException, IOException { String url = "http://api.rsbuddy.com/grandExchange?a=guidePrice&i=" + id; BufferedReader reader = new BufferedReader( new InputStreamReader(new URL(String.format(url, id)).openConnection().getInputStream())); String line; while ((line = reader.readLine()) != null) { Matcher m = pattern.matcher(line); if (m.find() && m.groupCount() > 0) { int overallPrice = Integer.parseInt(m.group(1)); if (overallPrice == 0) break; return overallPrice; } } reader.close(); return 0; } @Override public void onPaint(Graphics2D paint) { paint.setColor(Color.ORANGE); paint.drawString("Amount of time took to get bank wealth: " + formatT(endTime), 10, 310); paint.drawString("Amount of items found in bank: " + formatIntegers(getBank().getItems().length), 10, 325); paint.drawString("Bank amount: " + formatIntegers(wealth), 10, 340); } private String formatT(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); } @Override public void onStart() { startTime = System.currentTimeMillis(); if (getBank().isOpen()) { for (Item i : getBank().getItems()) { if (i != null){ try { wealth = wealth + (getPrice(i.getId()) * i.getAmount()); } catch (IOException e) { e.printStackTrace(); } } } endTime = System.currentTimeMillis() - startTime; } } private String formatIntegers(int num) { return NumberFormat.getInstance().format(num); } @Override public int onLoop() throws InterruptedException { return 1000; } } made some changes hope u like I was thinking about formatting the total wealth myself but just didn't get round it as I only wrote it to check the account wealth lol But thanks for this 1 Quote Link to comment Share on other sites More sharing options...
Armadyl14 Posted March 22, 2018 Share Posted March 22, 2018 just use osbuddy pro 1 Quote Link to comment Share on other sites More sharing options...
Destrupt Posted March 22, 2018 Share Posted March 22, 2018 Cool script mayn, would take a lot of up keep though no? 1 Quote Link to comment Share on other sites More sharing options...
crezzy Posted March 22, 2018 Author Share Posted March 22, 2018 1 hour ago, Destrupt said: Cool script mayn, would take a lot of up keep though no? Thanks Nah it should never need to be updated 1 hour ago, Armadyl14 said: just use osbuddy pro Why would I pay for something I can just program it myself? Quote Link to comment Share on other sites More sharing options...
Chris Posted March 22, 2018 Share Posted March 22, 2018 8 hours ago, crezzy said: Thanks Nah it should never need to be updated Why would I pay for something I can just program it myself? can also add coins and tokens wealth += i.getId() == 995 ? i.getAmount() : i.getId() == 13204 ? (i.getAmount() * 1000) : (getPrice(i.getId()) * i.getAmount()); 1 Quote Link to comment Share on other sites More sharing options...
safe profile Posted March 22, 2018 Share Posted March 22, 2018 Very nice script man, good job and thanks for sharing. Especially with source. 1 Quote Link to comment Share on other sites More sharing options...
crezzy Posted April 2, 2018 Author Share Posted April 2, 2018 On 3/22/2018 at 1:41 PM, Chris said: can also add coins and tokens wealth += i.getId() == 995 ? i.getAmount() : i.getId() == 13204 ? (i.getAmount() * 1000) : (getPrice(i.getId()) * i.getAmount()); I'm dumb didn't even occur to me to do that lmao /= Thanks though! When I open up eclipse I'll update it On 3/22/2018 at 11:11 PM, safe profile said: Very nice script man, good job and thanks for sharing. Especially with source. Cheers man and no worries Quote Link to comment Share on other sites More sharing options...