Edit: Added script source again. Seems like someone edited my post and removed it.
Here we go. Didn't see any other prayer scripts on the first page, so that was enough to just write one out.
Be sure to edit your hosts accordingly. Some code may be ugly and ghetto because I could not get widgets to work. (weird considering they always worked for me before)
Here's a proggy.
Paint was redone after initial testing.
import org.osbot.rs07.api.map.Position;
import org.osbot.rs07.api.ui.Message;
import org.osbot.rs07.api.ui.Skill;
import org.osbot.rs07.script.Script;
import org.osbot.rs07.script.ScriptManifest;
import org.osbot.rs07.utility.ConditionalSleep;
import java.awt.*;
@ScriptManifest(name = "Get Boned", author = "Sony", version = 1.0, info = "", logo = "")
public class GetBoned extends Script {
public boolean hasSetHost1 = false, hasSetHost2 = false, hasSetHost3 = false,
useHost1 = true, useHost2 = false, useHost3 = false;
private long startTime, runTime;
public String
bone = "Wyvern bones", coins = "Coins", state,
host = "parte", host2 = "jokcy", host3 = "the 420 cc",
curHost;
Position phialsPos = new Position(2949, 3213, 0);
Position portalPos = new Position(2953, 3224, 0);
@Override
public void onStart() {
experienceTracker.startAll();
startTime = System.currentTimeMillis();
}
public boolean isAnimating() throws InterruptedException{
for(int i = 0; i < 5; i++){
if(myPlayer().isAnimating() || players.myPlayer().isMoving())
return true;
else
sleep(100);
}
return false;
}
public enum State {
unnoting, entering, praying, exiting, idle, exit
}
private State getState() throws InterruptedException {
if (inventory.contains(inventory.getItem(bone).getNotedId()) && !inventory.contains(inventory.getItem(bone).getUnnotedId()) && npcs.closest("Phials") == null) {
state = "Exiting";
return State.exiting;
}
if (inventory.contains(inventory.getItem(bone).getNotedId()) && !inventory.contains(inventory.getItem(bone).getUnnotedId()) && npcs.closest("Phials") != null) {
state = "Unnoting";
return State.unnoting;
}
if (inventory.contains(inventory.getItem(bone).getUnnotedId()) && objects.closest("Incense burner") == null) {
state = "Entering house";
return State.entering;
}
if (inventory.contains(inventory.getItem(bone).getUnnotedId()) && objects.closest("Incense burner") != null && !isAnimating()) {
state = "Praying";
return State.praying;
}
if (isAnimating() && inventory.contains(inventory.getItem(bone).getUnnotedId())) {
state = "Idling...";
return State.idle;
}
state = "Idling...";
return State.idle;
}
@Override
public int onLoop() throws InterruptedException {
if (!inventory.contains(bone)) {
stop();
}
switch (getState()) {
case unnoting:
if (map.distance(npcs.closest("Phials")) > 8) {
walking.webWalk(phialsPos);
new ConditionalSleep(10000) {
@Override
public boolean condition() throws InterruptedException {
return map.distance(npcs.closest("Phials")) < 8;
}
}.sleep();
}
if (map.distance(npcs.closest("Phials")) < 8) {
if (inventory.contains(inventory.getItem(bone).getNotedId())) {
inventory.getItem(inventory.getItem(bone).getNotedId()).interact("Use");
if (inventory.isItemSelected()) {
npcs.closest("Phials").interact("Use");
new ConditionalSleep(5000) {
@Override
public boolean condition() throws InterruptedException {
return dialogues.isPendingOption();
}
}.sleep();
}
if (dialogues.isPendingOption()) {
sleep(random(600, 1800));
if (inventory.getItem(inventory.getItem(bone).getNotedId()).getAmount() > 1 ) {
dialogues.selectOption(3);
} else {
dialogues.selectOption(1);
}
new ConditionalSleep(5000) {
@Override
public boolean condition() throws InterruptedException {
return inventory.contains(inventory.getItem(bone).getUnnotedId());
}
}.sleep();
}
}
}
break;
case entering:
if (objects.closest("Portal") != null) {
if (map.distance(objects.closest("Portal")) > 5) {
walking.webWalk(portalPos);
new ConditionalSleep(10000) {
@Override
public boolean condition() throws InterruptedException {
return map.distance(objects.closest("Portal")) < 5;
}
}.sleep();
}
if (map.distance(objects.closest("Portal")) < 5) {
if (widgets.get(162, 33, 0) == null) {
objects.closest("Portal").interact("Friend's house");
new ConditionalSleep(8000) {
@Override
public boolean condition() throws InterruptedException {
return widgets.get(162, 33, 0) != null;
}
}.sleep();
}
sleep(random(1200, 1500));
if (useHost1) {
curHost = host;
if (!hasSetHost1) {
keyboard.typeString(host, true);
hasSetHost1 = true;
} else {
keyboard.typeEnter();
}
}
if (useHost2) {
curHost = host2;
if (!hasSetHost2) {
keyboard.typeString(host2, true);
hasSetHost2 = true;
} else {
keyboard.typeEnter();
}
}
if (useHost3) {
curHost = host3;
if (!hasSetHost3) {
keyboard.typeString(host3, true);
hasSetHost3 = true;
} else {
keyboard.typeEnter();
}
}
new ConditionalSleep(15000) {
@Override
public boolean condition() throws InterruptedException {
return objects.closest("Incense burner") != null;
}
}.sleep();
}
}
break;
case exiting:
if (!isAnimating() && objects.closest("Altar") != null) {
objects.closest("Portal").interact("Enter");
new ConditionalSleep(10000) {
@Override
public boolean condition() throws InterruptedException {
return objects.closest("Incense burner") == null;
}
}.sleep();
}
break;
case praying:
if (!isAnimating() && objects.closest("Incense burner") != null) {
inventory.getItem(inventory.getItem(bone).getUnnotedId()).interact("Use");
new ConditionalSleep(5000) {
@Override
public boolean condition() throws InterruptedException {
return inventory.isItemSelected();
}
}.sleep();
objects.closest("Altar").interact("Use");
new ConditionalSleep(50000) {
@Override
public boolean condition() throws InterruptedException {
return !inventory.contains(inventory.getItem(bone).getUnnotedId()) || dialogues.isPendingContinuation() || !isAnimating();
}
}.sleep();
}
break;
case idle:
new ConditionalSleep(2500) {
@Override
public boolean condition() throws InterruptedException {
return !isAnimating() || dialogues.isPendingContinuation();
}
}.sleep();
break;
default:
break;
}
return 600;
}
private final RenderingHints antialiasing = new RenderingHints(
RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
private final Color color1 = new Color(0, 0, 0, 192);
private final Color color2 = new Color(0, 0, 0);
private final Color color3 = new Color(255, 255, 255);
private final BasicStroke stroke1 = new BasicStroke(1);
private final Font font1 = new Font("Arial", 0, 14);
private final Font font2 = new Font("Arial", 0, 12);
public final String 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);
}
public void onMessage(Message message) throws java.lang.InterruptedException {
if(message.getType() == Message.MessageType.GAME) {
if (message.getMessage().contains("player is offline") && useHost1) {
log("host 1 is offline");
log("checking if host 2 is online");
log("");
useHost1 = false;
useHost2 = true;
useHost3 = false;
return;
}
if (message.getMessage().contains("player is offline") && useHost2) {
log("host 2 is offline");
log("checking if host 3 is online");
log("");
useHost1 = false;
useHost2 = false;
useHost3 = true;
return;
}
if (message.getMessage().contains("player is offline") && useHost3) {
runTime = System.currentTimeMillis() - startTime;
log("all three hosts offline, exiting");
log("");
log("Runtime: " + formatTime(runTime));
log("XP Gained: " + experienceTracker.getGainedXP(Skill.PRAYER));
stop();
}
}
}
@Override
public void onPaint(Graphics2D g) {
g.setRenderingHints(antialiasing);
runTime = System.currentTimeMillis() - startTime;
g.setColor(color1);
g.fillRect(563, 219, 156, 179);
g.setColor(color2);
g.setStroke(stroke1);
g.drawRect(563, 219, 156, 179);
g.setFont(font1);
g.setColor(color3);
g.drawString("Get Boned", 606, 240);
g.drawLine(575, 246, 700, 246);
g.setFont(font2);
g.setColor(color3);
g.drawString("Host: " + curHost, 570, 260);
g.drawString("State: " + state, 570, 275);
g.drawString("Runtime: " + formatTime(runTime), 570, 290);
g.drawString("Exp gained: " + experienceTracker.getGainedXP(Skill.PRAYER), 570, 305);
g.drawString("Exp/Hour: " + experienceTracker.getGainedXPPerHour(Skill.PRAYER), 570, 320);
g.drawString("Levels gained: " + experienceTracker.getGainedLevels(Skill.PRAYER), 570, 335);
}
}