Imthabawse Posted May 18, 2019 Posted May 18, 2019 (edited) Fire Runeer Features - Crafts fire runes out of pure essence in Al-Kharid - Banks Fire runes, withdraws Pure essence, repeat - Script currently will NOT logout after all Pure essence are gone but should sit at bank till 5 min log To run script - Have FIXED mode enabled - Pure essence in bank - Fire tiara equip - Standing in Al-Kharid bank with Tiara equip & Pure ess in inventory OR no pure ess in inventory Report bug format - Whats bot doing?: - Whats logger say?: - Does problem happen all the time?: Pictures https://imgur.com/dEm00la https://imgur.com/QGKdI8o https://imgur.com/rUFp0kY Download Fire RuneEr Source code Spoiler import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.constants.Banks; 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 org.osbot.rs07.utility.ConditionalSleep; import java.awt.*; import java.util.concurrent.TimeUnit; @ScriptManifest(name = "Firecrafter", logo = "", version = 1, author = "Imthabawse", info = "Makes Fire runes and banks") public class Firecrafter extends Script { private long timeBegan; private long timeRan; private int beginningXp; private int currentXp; private int xpGained; private int currentLevel; private int beginningLevel; private int levelsGained; private double nextLevelXp; private double xpTillNextLevel; private long timeTNL; private int xpPerHour; final int[] XP_TABLE = { 0, 0, 83, 174, 276, 388, 512, 650, 801, 969, 1154, 1358, 1584, 1833, 2107, 2411, 2746, 3115, 3523, 3973, 4470, 5018, 5624, 6291, 7028, 7842, 8740, 9730, 10824, 12031, 13363, 14833, 16456, 18247, 20224, 22406, 24815, 27473, 30408, 33648, 37224, 41171, 45529, 50339, 55649, 61512, 67983, 75127, 83014, 91721, 101333, 111945, 123660, 136594, 150872, 166636, 184040, 203254, 224466, 247886, 273742, 302288, 333804, 368599, 407015, 449428, 496254, 547953, 605032, 668051, 737627, 814445, 899257, 992895, 1096278, 1210421, 1336443, 1475581, 1629200, 1798808, 1986068, 2192818, 2421087, 2673114, 2951373, 3258594, 3597792, 3972294, 4385776, 4842295, 5346332, 5902831, 6517253, 7195629, 7944614, 8771558, 9684577, 10692629, 11805606, 13034431, 200000000 }; private Area PortalArea = new Area(2578, 4844, 2569, 4854); private Area RuinsArea = new Area(3312, 3250, 3307, 3253); private void bank() throws InterruptedException { Entity portal = getObjects().closest(PortalArea, "Portal"); if(getInventory().contains("Fire rune") && !myPlayer().isAnimating() && !myPlayer().isMoving() && portal != null) { log("Teleporting out.."); portal.interact("Use"); new ConditionalSleep(5000) { @Override public boolean condition() { return myPlayer().isAnimating() && RuinsArea.contains(myPlayer()); } }.sleep(); } if(getInventory().contains("Fire rune") && !myPlayer().isMoving()) { log("Walking to bank.."); getWalking().webWalk(Banks.AL_KHARID); new ConditionalSleep(5000) { @Override public boolean condition() { return Banks.AL_KHARID.contains(myPlayer()); } }.sleep(); } if(Banks.AL_KHARID.contains(myPlayer()) && getInventory().contains("Fire rune")) { log("Banking.."); getBank().open(); sleep(random(800,1200)); getBank().depositAll(); sleep(random(825,1125)); getBank().withdrawAll("Pure essence"); sleep(random(700,900)); getBank().close(); new ConditionalSleep(5000) { @Override public boolean condition() { return getInventory().contains("Pure essence"); } }.sleep(); }else if(Banks.AL_KHARID.contains(myPlayer()) && !getInventory().contains("Pure essence")) { getBank().open(); sleep(random(800,1200)); getBank().withdrawAll("Pure essence"); sleep(random(825,1125)); getBank().close(); new ConditionalSleep(5000) { @Override public boolean condition() { return getInventory().contains("Pure essence"); } }.sleep(); } } private void craft() { Entity ruins = getObjects().closest("Mysterious ruins"); Entity altar = getObjects().closest("Altar"); if (!RuinsArea.contains(myPlayer()) && !PortalArea.contains(myPlayer()) && !myPlayer().isAnimating() && !myPlayer().isMoving()) { log("Walking to ruins.."); getWalking().webWalk(RuinsArea); new ConditionalSleep(5000) { @Override public boolean condition() { return RuinsArea.contains(myPlayer()); } }.sleep(); } if (!myPlayer().isAnimating() && RuinsArea.contains(myPlayer()) && ruins != null && ruins.interact("Enter")) { log("Entering"); new ConditionalSleep(5000) { @Override public boolean condition() { return PortalArea.contains(myPlayer()) && myPlayer().isVisible(); } }.sleep(); } if (!myPlayer().isAnimating() && PortalArea.contains(myPlayer()) && altar != null && altar.interact("Craft-rune")) { log("Crafting runes.."); new ConditionalSleep(5000) { @Override public boolean condition() { return myPlayer().isAnimating() && getInventory().contains("Fire rune"); } }.sleep(); } } @Override public void onStart() { log("Welcome to Fire RuneER by: Imthabawse"); timeBegan = System.currentTimeMillis(); beginningXp = skills.getExperience(Skill.RUNECRAFTING); beginningLevel = skills.getStatic(Skill.RUNECRAFTING); timeTNL = 0; } @Override public int onLoop() throws InterruptedException { if(getInventory().contains("Pure essence")) { craft(); }else{ bank(); } return 500; } @Override public void onPaint(Graphics2D g) { Font font = new Font("Java Kick BTN",Font.BOLD,16); g.setFont(font); g.setColor(Color.RED); timeRan = System.currentTimeMillis() - this.timeBegan; g.drawString("-Fire RuneEr V1-",12,210); g.drawString(ft(timeRan), 12, 235); currentXp = skills.getExperience(Skill.RUNECRAFTING); xpGained = currentXp - beginningXp; g.drawString("Exp Gained: " + xpGained, 12, 250); currentLevel = skills.getStatic(Skill.RUNECRAFTING); levelsGained = currentLevel - beginningLevel; g.drawString("Start Level: " + beginningLevel, 12,265); g.drawString("Current Level: " + currentLevel, 12,280); g.drawString("Levels Gained: " + levelsGained, 12, 295); g.drawString("Time Till Level: " + ft(timeTNL), 12,325); currentXp = skills.getExperience(Skill.RUNECRAFTING); currentLevel = skills.getStatic(Skill.RUNECRAFTING); xpGained = currentXp - beginningXp; xpPerHour = (int)( xpGained / ((System.currentTimeMillis() - this.timeBegan) / 3600000.0D)); nextLevelXp = XP_TABLE[currentLevel + 1]; xpTillNextLevel = nextLevelXp - currentXp; if (xpGained >= 1) { timeTNL = (long) ((xpTillNextLevel / xpPerHour) * 3600000); } } 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; } } Edited May 18, 2019 by Imthabawse
Framble Posted May 18, 2019 Posted May 18, 2019 Nice script, but i think body runes would yield the best xp/hr in f2p 1
Imthabawse Posted May 19, 2019 Author Posted May 19, 2019 57 minutes ago, Framble said: Nice script, but i think body runes would yield the best xp/hr in f2p Right on will look into making one, this was one of my first scripts just decided to release it.
Imthabawse Posted May 19, 2019 Author Posted May 19, 2019 @Framble you may be onto something, I've looked into this and may be a decent money maker used with pure essence.