Imthabawse Posted May 18, 2019 Share 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 Quote Link to comment Share on other sites More sharing options...
Framble Posted May 18, 2019 Share Posted May 18, 2019 Nice script, but i think body runes would yield the best xp/hr in f2p 1 Quote Link to comment Share on other sites More sharing options...
Imthabawse Posted May 19, 2019 Author Share 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. Quote Link to comment Share on other sites More sharing options...
Imthabawse Posted May 19, 2019 Author Share 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. Quote Link to comment Share on other sites More sharing options...