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;
}
}