Wanted to thieve the chest so i made this.
Its not very efficient, it runs 12-16 seconds for a thieve from chest and you can min-max clicking at 8 seconds.
All the scripts on the sdn dont support this chest so i threw this together real fast.
import org.osbot.rs07.api.model.Entity;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import java.awt.*;
import java.util.concurrent.TimeUnit;
@ScriptManifest(name = "Ardougne Nature Chest", author = "Patrickold", version = 0.1, info = "Simple script to open the Nature Rune chest", logo = "")
public class ArdyChest extends Script {
private int natureRunes = 0;
private int coins = 0;
private long timeBegan;
private long timeRan;
private int beginningXP;
private int currentXp;
private int xpGained;
private int currentLevel;
private int beginningLevel;
private int levelsGained;
@Override
public void onStart() {
log("Script Starting.");
natureRunes = (int) this.inventory.getAmount(561);
coins = (int) this.inventory.getAmount(995);
timeBegan = System.currentTimeMillis();
beginningXP = skills.getExperience(Skill.THIEVING);
beginningLevel = skills.getStatic(Skill.THIEVING);
lastChest = System.currentTimeMillis() - 5000;
}
@Override
public void onExit() {
log("Script Exited.");
}
private long lastChest = 0;
@Override
public int onLoop() throws InterruptedException {
Entity chest = getObjects().closest("Chest");
sleep(random(100,200));
getCamera().moveYaw(random(10,150));
sleep(random(100,200));
if(chest.getId() == 11736 && chest.getX() == 2671 && chest.getY() == 3301 && lastChest <= System.currentTimeMillis() - 3000) {
chest.interact("Search for traps");
getCamera().movePitch(random(100,200));
getCamera().moveYaw(random(10,150));
lastChest = System.currentTimeMillis();
}
sleep(random(100,200));
getCamera().movePitch(random(100,200));
return(random(100,150));
}
private String ft(long duration)
{
String res = "";
long days = TimeUnit.MILLISECONDS.toDays(duration);
long hours = TimeUnit.MILLISECONDS.toHours(duration)
- TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(duration));
long minutes = TimeUnit.MILLISECONDS.toMinutes(duration)
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS
.toHours(duration));
long seconds = TimeUnit.MILLISECONDS.toSeconds(duration)
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS
.toMinutes(duration));
if (days == 0) {
res = (hours + ":" + minutes + ":" + seconds);
} else {
res = (days + ":" + hours + ":" + minutes + ":" + seconds);
}
return res;
}
@Override
public void onPaint(Graphics2D g) {
timeRan = System.currentTimeMillis() - this.timeBegan;
currentXp = skills.getExperience(Skill.THIEVING);
xpGained = currentXp - beginningXP;
currentLevel = skills.getStatic(Skill.THIEVING);
levelsGained = currentLevel - beginningLevel;
super.onPaint(g);
g.setColor(Color.GREEN);
g.drawString("Ardougne Nature Chest :3", 5, 290);
g.drawString("Time Ran: "+ft(timeRan), 5, 302);
g.drawString("Nature Runes: "+(this.inventory.getAmount(561) - natureRunes), 5, 314);
g.drawString("Coins: "+(this.inventory.getAmount(995) - coins), 5, 326);
g.drawString("Xp Gained: " + xpGained, 5, 338);
g.drawString("Thieving LVL: "+currentLevel+(levelsGained > 0 ? " (+"+levelsGained+")" : ""), 5, 350);
}
}
Second time running it, first time was for about a hour then i had to leave.
I have only tested it on the Mirror client, so. No idea how the regular client will function.