K130 Posted July 29, 2022 Share Posted July 29, 2022 (edited) Supports all logs + will relocate to a new tile if under Fire + Daisies(Seers/Falador) Locations: Grand Exchange Varrock West Varrock East Edgeville Seers Village Port Phasmatys If you have any suggestions please feel free to post on this thread. Updates: v1.1 Reworked banking to enhance stability Updated firemaking areas in West Varrock + East Varrock Created new methods in preparation for future enhancements (progressive mode) v1.0 Release Github link + download : Spoiler https://github.com/K13094/eZ-Firemaker Progress Reports : Spoiler Edited July 30, 2022 by Imokay 1 1 Quote Link to comment Share on other sites More sharing options...
Rays Posted July 30, 2022 Share Posted July 30, 2022 Congratulations on your release!! 1 Quote Link to comment Share on other sites More sharing options...
K130 Posted July 30, 2022 Author Share Posted July 30, 2022 22 hours ago, Rays said: Congratulations on your release!! Thanks man, I'll keep updating it as much as possible until it's SDN approved. Most of the other firemaking scripts are outdated. Quote Link to comment Share on other sites More sharing options...
zMurda Posted December 15, 2022 Share Posted December 15, 2022 (edited) Niceeee, I just tried the script and it's pretty good! Keep updating this! Edited December 15, 2022 by zMurda Quote Link to comment Share on other sites More sharing options...
deadmau5 Posted January 7, 2023 Share Posted January 7, 2023 Really great script man Any chance you could add progressive? Quote Link to comment Share on other sites More sharing options...
deadmau5 Posted January 7, 2023 Share Posted January 7, 2023 @K130 1 Quote Link to comment Share on other sites More sharing options...
famers Posted February 22, 2023 Share Posted February 22, 2023 I updated this script to stop wasting logs: package main; import java.awt.Color; import java.awt.Graphics2D; import java.lang.reflect.InvocationTargetException; import javax.swing.SwingUtilities; import org.osbot.rs07.api.map.Area; import org.osbot.rs07.api.map.Position; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.api.ui.Skill; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; import util.MouseCursor; import util.MouseTrail; @ScriptManifest(author = "A&K", info = "Most up to date firemaking bot. Supporting Multiple locations", name = "ez main.Firemaker", version = 1.1, logo = "https://i.imgur.com/9nUfZKI.png") public class Firemaker extends Script { String pLog; // PAINT + main.GUI private MouseTrail trail = new MouseTrail(0, 255, 255, 2000, this); private MouseCursor cursor = new MouseCursor(25, 3, Color.ORANGE, this); private int beginningXP; private int currentXp; private int xpGained; private long XpHourly; private long startTime = System.currentTimeMillis(); private GUI gui = new GUI(); private LOGLIST loglist; private AREALIST arealist; // items int TINDERBOX = 590; // LOGS int selectedLog; int Normal_Logs = 1511; int Oak_Logs = 1521; int WILLOW_LOGS = 1519; int TEAK_LOGS = 6333; int MAPLE_LOGS = 1517; int YEW_LOGS = 1515; int MAGIC_LOGS = 1513; int REDWOOD_LOGS = 19669; // XAREA Area PORTPHASMATYS_XAREA = new Area(3699, 3475, 3663, 3472);// phasmatys accepted area Area EDGEVILLE_XAREA = new Area(3111, 3505, 3074, 3500);// edge xarea Area FALADOR_XAREA = new Area(3032, 3366, 2997, 3359);// falador accepted area Area SEERS_XAREA = new Area(2733, 3484, 2706, 3486);// seers accepted area Area GE_XAREA = new Area(3146, 3506, 3193, 3473);// ge xarea Area VARROCKEAST_XAREA = new Area(3290, 3430, 3240, 3428);// east varrock x area Area VARROCKWEST_XAREA = new Area(3173, 3432, 3209, 3428);// west varrock xarea // BANKS Area GE_BANK = new Area(3160, 3494, 3169, 3485);// ge bank Area VARROCKWEST_BANK = new Area(3180, 3447, 3185, 3433);// Area VARROCKEAST_BANK = new Area(3252, 3423, 3254, 3420); // east varrock bank Area SEERS_BANK = new Area(2730, 3493, 2721, 3490);// seers bank Area FALADOR_EASTBANK = new Area(3009, 3358, 3018, 3355);// // falador east bank Area DRAYNOR_BANK = new Area(3091, 3246, 3096, 3240);// draynor bank area Area EDGEVILLE_BANK = new Area(3098, 3499, 3091, 3488);// edgeville bank Area PORTPHASMATYS_BANK = new Area(3691, 3471, 3686, 3461);// port phasmatys bank area // FMing START AREAS Area[] FALADOREAST_STARTAREA = { new Area(3032, 3359, 3031, 3359), new Area(3032, 3360, 3031, 3360), new Area(3032, 3361, 3031, 3361), new Area(3032, 3362, 3031, 3362), new Area(3030, 3362, 3030, 3361), new Area(3030, 3360, 3030, 3359), };// falador start area Area SEERS_STARTAREA[] = { new Area(2734, 3486, 2733, 3486), new Area(2733, 3485, 2732, 3485), new Area(2732, 3486, 2731, 3486), new Area(2733, 3484, 2730, 3484), new Area(2731, 3485, 2730, 3485), new Area(2730, 3486, 2730, 3486), };// seers start area// seers start area Area VARROCKWEST_STARTAREA[] = { new Area(3208, 3429, 3207, 3429), new Area(3208, 3430, 3207, 3430), new Area(3208, 3428, 3207, 3428), new Area(3200, 3431, 3199, 3431), new Area(3200, 3432, 3199, 3432), };// west Area VARROCKEAST_STARTAREA[] = { new Area(3281, 3429, 3282, 3429), new Area(3281, 3428, 3282, 3428), new Area(3285, 3429, 3285, 3428), new Area(3286, 3428, 3286, 3429), new Area(3284, 3428, 3284, 3429), new Area(3283, 3428, 3283, 3429), };// varrock-east star Area[] DRAYNOR_STARTAREA = { new Area(3105, 3250, 3103, 3250), new Area(3097, 3249, 3096, 3249), new Area(3097, 3248, 3096, 3248), new Area(3097, 3247, 3096, 3247), new Area(3097, 3250, 3096, 3250), new Area(3095, 3250, 3095, 3247), };// draynor start area Area[] GE_STARTAREA = { new Area(3181, 3506, 3178, 3504), new Area(3181, 3503, 3178, 3501), new Area(3180, 3496, 3176, 3497), new Area(3188, 3491, 3195, 3488), new Area(3174, 3483, 3180, 3482), new Area(3177, 3475, 3171, 3477), };// ge fm start area Area[] EDGEVILLE_STARTAREA = { new Area(3122, 3508, 3119, 3508), new Area(3116, 3507, 3112, 3507), new Area(3111, 3505, 3107, 3505), new Area(3106, 3504, 3104, 3504), new Area(3112, 3502, 3109, 3502), new Area(3106, 3503, 3104, 3503), };// edgeville fm start area Area[] PORTPHASMATYS_STARTAREA = { new Area(3701, 3472, 3700, 3472), new Area(3701, 3473, 3700, 3473), new Area(3701, 3474, 3700, 3474), new Area(3701, 3475, 3700, 3475), };// phasmatys fm area start phasmatys fm area start public void bank() throws InterruptedException { if (!getBankArea().contains(myPlayer())) { pLog = "Walking to start area."; walkToBankArea(); } if (getBankArea().contains(myPlayer()) && !checkTinderbox()) { pLog = "Withdrawing tinderbox & logs"; getBank().open(); sleep(random(800, 1600)); getBank().withdraw(TINDERBOX, 1); sleep(random(800, 1600)); withdrawLogs(); } else if (checkTinderbox() && getBankArea().contains(myPlayer())) { pLog = "Withdrawing logs"; withdrawLogs(); } getBank().close(); } public void checkInventory() throws InterruptedException { if (!getInventory().onlyContains(getLogs(), TINDERBOX)) { pLog = "Banking wrong items..."; walkToBankArea(); getBank().open(); sleep(random(1000, 2000)); getBank().depositAllExcept(TINDERBOX, getLogs()); } } public void walkToBankArea() { if ((!getInventory().contains(TINDERBOX) && !getInventory().contains(getLogs()) || (!getInventory().contains(getLogs()) && !myPlayer().isAnimating()))) { pLog = "Walking to " + arealist.toString(); getWalking().webWalk(getBankArea()); } } public void walkToFMArea() { if (checkTinderbox() && getInventory().contains(getLogs())) { pLog = "Walking to a random tile"; getWalking().webWalk(getFMArea()); } } public boolean checkTinderbox() { return getInventory().contains(TINDERBOX, 1); } public void withdrawLogs() throws InterruptedException { if (!getInventory().contains(getLogs()) && !myPlayer().isAnimating()) { if (getBankArea().contains(myPlayer())) { getBank().open(); sleep(random(800, 1600)); pLog = "Withdrawing logs..."; getBank().withdrawAll(getLogs()); sleep(random(800, 1600)); } if (!getBank().contains(getLogs())) { log("No logs left. Stopping script."); stop(); } } } private long waitTimeout = 3000; public void firemaking() throws InterruptedException { // Checks to see if player is in the firemaking area and has a tinderbox and // logs if (getInventory().contains(TINDERBOX, 1) && (getInventory().contains(getLogs()) && xArea().contains(myPosition()))) { while (spotTaken()) { pLog = "Changing spot..."; walkToFMArea(); } pLog = "Using tinderbox.."; getInventory().interact("Use", TINDERBOX); getInventory().interact("Use", getLogs()); Position startPosition = myPosition(); pLog = "Making fire @ " + startPosition; long start = System.currentTimeMillis(); do { sleep(200); Position newPosition = myPosition(); if (startPosition.getX() != newPosition.getX() || startPosition.getY() != newPosition.getY()) { break; } } while (System.currentTimeMillis() - start < waitTimeout); // check if the inventory contains logs / walks to fm area } else if (getInventory().contains(getLogs())) { pLog = "Walking to " + getFMArea(); walkToFMArea(); } } public boolean spotTaken() { for (RS2Object o : objects.getAll()) { if (o.getName().equals("Fire") || o.getName().equals("Daisies")) { if (o.getPosition().getX() == myPlayer().getX() && o.getPosition().getY() == myPlayer().getY()) { pLog = "Found: " + o.getName() + "! Moving to new tile.."; return true; } } } return false; } public Area xArea() { if (arealist.toString().equals("east_varrock")) { return VARROCKEAST_XAREA; } else if (arealist.toString().equals("west_varrock")) { return VARROCKWEST_XAREA; } else if (arealist.toString().equals("edgeville")) { return EDGEVILLE_XAREA; } else if (arealist.toString().equals("grand_exchange")) { return GE_XAREA; } else if (arealist.toString().equals("seers")) { return SEERS_XAREA; } else if (arealist.toString().equals("falador")) { return FALADOR_XAREA; } else if (arealist.toString().equals("port_phasmatys")) return PORTPHASMATYS_XAREA; return null; } public Area getBankArea() { if (arealist.toString().equals("east_varrock")) { return VARROCKEAST_BANK; } else if (arealist.toString().equals("west_varrock")) { return VARROCKWEST_BANK; } else if (arealist.toString().equals("edgeville")) { return EDGEVILLE_BANK; } else if (arealist.toString().equals("grand_exchange")) { return GE_BANK; } else if (arealist.toString().equals("seers")) { return SEERS_BANK; } else if (arealist.toString().equals("falador")) { return FALADOR_EASTBANK; } else if (arealist.toString().equals("port_phasmatys")) return PORTPHASMATYS_BANK; return null; } public Area getFMArea() { if (arealist.toString().equals("east_varrock")) { return VARROCKEAST_STARTAREA[random(0, 5)]; } else if (arealist.toString().equals("west_varrock")) { return VARROCKWEST_STARTAREA[random(0, 4)]; } else if (arealist.toString().equals("edgeville")) { return EDGEVILLE_STARTAREA[random(0, 5)]; } else if (arealist.toString().equals("grand_exchange")) { return GE_STARTAREA[random(0, 5)]; } else if (arealist.toString().equals("seers")) { return SEERS_STARTAREA[random(0, 5)]; } else if (arealist.toString().equals("falador")) { return FALADOREAST_STARTAREA[random(0, 5)]; } else if (arealist.toString().equals("port_phasmatys")) { return PORTPHASMATYS_STARTAREA[random(0, 3)]; } return null; } public int getLogs() { if (loglist.toString().equals("logs")) { return Normal_Logs; } else if (loglist.toString().equals("oak_logs")) { return Oak_Logs; } else if (loglist.toString().equals("willow_logs")) { return WILLOW_LOGS; } else if (loglist.toString().equals("teak_logs")) { return TEAK_LOGS; } else if (loglist.toString().equals("maple_logs")) { return MAPLE_LOGS; } else if (loglist.toString().equals("yew_logs")) { return YEW_LOGS; } else if (loglist.toString().equals("magic_logs")) { return MAGIC_LOGS; } else if (loglist.toString().equals("redwood_logs")) { return REDWOOD_LOGS; } return 0; } @Override public int onLoop() throws InterruptedException { checkInventory(); walkToBankArea(); withdrawLogs(); firemaking(); return random(100, 150); } @Override public void onStart() throws InterruptedException { try { SwingUtilities.invokeAndWait(() -> { beginningXP = skills.getExperience(Skill.FIREMAKING); pLog = "Starting up..."; log("ez main.Firemaker starting."); gui = new GUI(); gui.open(); }); } catch (InterruptedException | InvocationTargetException e) { e.printStackTrace(); stop(); return; } if (!gui.isStarted()) { stop(); return; } loglist = gui.getSelectedlog(); arealist = gui.getSelectedBank(); checkInventory(); bank(); } @Override public void onExit() { log("Thanks for using eZ main.Firemaker!"); } @Override public void onPaint(Graphics2D g) { trail.paint(g); cursor.paint(g); currentXp = skills.getExperience(Skill.FIREMAKING); xpGained = currentXp - beginningXP; XpHourly = (int) (xpGained / ((System.currentTimeMillis() - startTime) / 3600000.0D)); g.setColor(Color.ORANGE); g.drawString("eZ main.Firemaker", 8, 255); g.drawString("Run time: " + String.valueOf(formatTime(System.currentTimeMillis() - startTime)), 8, 275); g.drawString("Firemaking xp gained: " + xpGained, 8, 295); g.drawString("Firemaking xp p/h : " + XpHourly, 8, 315); g.drawString("Status: " + pLog, 8, 335); final Color BlockName = new Color(208, 188, 149); Graphics2D gr = g; gr.setColor(BlockName); gr.fillRect(7, 460, 100, 14); } private 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); } } Quote Link to comment Share on other sites More sharing options...