Ok so this is a simple recoil enchanter script (it is quite old I made it last year but never used it till now) It can be improved it's no where near perfect but it is stable as far as i'm aware you are free to use this and improve etc. but I request that you do not resell unless your planning on adding more features etc. Please do comment if this was helpful in helping you understand how to script I will document this tomorrow if you want to compile this into a jar open up intellij or eclipse and use a script tutorial guide like apaecs in how to compile (it is quite easy) if you struggle tho i will post the jar of this there are two classes to this one is for the Dynamic Sleeping which is less tedious to write out (made by @Explv ) All credits go to him for it. P.S Sorry for the {} indentation it's how it is when i post this so i'll post the whole code on Pastebin if you find this annoying lol DOWNLOAD LINK http://www.filedropper.com/simpleenchanter_1 (old version) need to update the jar link lol EDITS:
http://pastebin.com/z2JWh6g7
import java.util.function.BooleanSupplier;
import org.osbot.rs07.api.ui.Spells;
import org.osbot.rs07.api.ui.Tab;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
@ScriptManifest(logo = "", name = "Simple Recoil Enchanter", author = "Saiyan", info = "Recoil enchanter", version = 0)
public class Main extends Script {
@Override
public void onStart() {
log("recoil enchanter");
}
private class DynamicSleep extends ConditionalSleep {
private final BooleanSupplier condition;
public DynamicSleep(final BooleanSupplier condition, int timeout) {
super(timeout);
this.condition = condition;
}
@Override
public boolean condition() throws InterruptedException {
return condition.getAsBoolean();
}
}
@Override
public int onLoop() throws InterruptedException {
if (canEnchant()) {
enchantRing();
log("enchantRing active");
} else {
banking();
log("banking active");
}
return 350;
}
private boolean canEnchant() {
return getInventory().contains("Sapphire ring") && getInventory().contains("Cosmic rune")
&& !getBank().isOpen();
}
private void enchantRing() throws InterruptedException {
if (!getTabs().open(Tab.MAGIC)) {
getTabs().open(Tab.MAGIC);
} else {
if (getMagic().canCast(Spells.NormalSpells.LVL_1_ENCHANT)) {
if (getMagic().castSpell(Spells.NormalSpells.LVL_1_ENCHANT)) {
if (getInventory().interact("Cast", "Sapphire ring")) {
new DynamicSleep(() -> getTabs().getOpen() == Tab.MAGIC, 5000).sleep();
}
}
}
}
}
@SuppressWarnings("unchecked")
private void banking() throws InterruptedException {
if (!getBank().isOpen()) {
if (getBank().open())
new DynamicSleep(() -> getBank().isOpen(), 5000).sleep();
} else if (getInventory()
.contains(i -> !i.getName().equals("Cosmic rune") && !i.getName().equals("Sapphire ring"))) {
getBank().depositAllExcept("Cosmic rune", "Sapphire ring");
} else if (!getInventory().contains("Cosmic rune")) {
if (getBank().contains("Cosmic rune"))
getBank().withdrawAllButOne("Cosmic rune");
else
stop();
} else if (!getInventory().contains("Sapphire ring")) {
if (getBank().contains("Sapphire ring"))
getBank().withdrawAll("Sapphire ring");
else
stop();
} else {
getBank().close();
}
}
}
TLDR; if you need help on me explaining any parts please do message me Thanks and i hope you have learnt something new