Jump to content

soms

Members
  • Posts

    1
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by soms

  1. Crafts any jewellery using Edgeville furnace 💰 glhf import com.epicbot.api.shared.APIContext; import com.epicbot.api.shared.GameType; import com.epicbot.api.shared.entity.SceneObject; import com.epicbot.api.shared.entity.WidgetChild; import com.epicbot.api.shared.model.Tile; import com.epicbot.api.shared.script.LoopScript; import com.epicbot.api.shared.script.ScriptManifest; import com.epicbot.api.shared.util.Random; import com.epicbot.api.shared.util.time.Time; @ScriptManifest(name = "JewelleryCrafter", gameType = GameType.OS) public class EdgeJewelleryCrafter extends LoopScript { private long anim; private int runE = Random.nextInt(50,80); private static final int GOLD_FURNACE_GROUP = 446; private static final int SILVER_FURNACE_GROUP = 6; private static final Tile FURNACE_ROOM = new Tile(3108, 3499, 0); private static final Tile EDGE_BANK = new Tile(3096, 3496, 0); /* Settings */ private static final String JEWELLERY_NAME = "Diamond bracelet"; private static final String MOULD = "Bracelet mould"; private static final String BAR = "Gold bar"; private static final boolean USING_GEM = true; private static final String GEM = "Diamond"; @Override protected int loop() { APIContext ctx = getAPIContext(); int hr = Time.getHumanReaction(); if (ctx.walking().getRunEnergy() > runE && !ctx.walking().isRunEnabled() && !localAnimating(ctx) && !ctx.bank().isOpen()) { ctx.walking().setRun(true); runE = Random.nextInt(30,80); return hr; } if (ctx.inventory().containsAll(BAR, MOULD) && (!USING_GEM || ctx.inventory().contains(GEM)) && !localAnimating(ctx)) { if (isOpen(ctx) && initiate(ctx, JEWELLERY_NAME)) { Time.sleep(5000, () -> localAnimating(ctx)); return hr; } SceneObject furnace = ctx.objects().query().named("Furnace").results().first(); if (furnace != null) { if (furnace.isVisible() && furnace.interact("Smelt")) { Time.sleep(10000, () -> isOpen(ctx)); return hr; } else if (!furnace.isVisible()) { ctx.walking().walkTo(FURNACE_ROOM); Time.sleep(10000, ()->furnace.isVisible() || furnace.distanceTo(ctx) <= 2); } } } else if (!ctx.inventory().containsAll(BAR, MOULD) || (USING_GEM && !ctx.inventory().contains(GEM))) { if (openBankOnScreen(ctx)) { ctx.bank().depositAllExcept(MOULD, BAR); if (JEWELLERY_NAME.startsWith("Gold")) { banking(ctx, MOULD, BAR); } else { banking(ctx, MOULD, BAR, GEM); } } else { ctx.walking().walkTo(EDGE_BANK.randomize(2,0)); Time.sleep(15000,() -> openBankOnScreen(ctx)); } } return hr; } private static boolean getItem(int amount, String name, APIContext ctx) { if (ctx.bank().contains(name)) { ctx.bank().withdraw(amount, name); Time.sleep(4000, () -> APIContext.get().inventory().contains(name)); return true; } else { ctx.script().stop("No "+name+" in bank, stopping."); } return false; } public static boolean banking(APIContext ctx, String... item) { if (!ctx.inventory().contains(item[0]) && getItem(1, item[0], ctx)) if (item.length == 2) { if (!ctx.inventory().contains(item[1]) && getItem(ctx.bank().getCount(item[1]), item[1], ctx)) return ctx.inventory().containsAll(item[0], item[1]); } if (item.length == 3) { if (ctx.inventory().getCount(item[1]) < 13 && getItem(13, item[1], ctx)) if (ctx.inventory().getCount(item[2]) < 13 && getItem(13, item[2], ctx)) return ctx.inventory().containsAll(item[0], item[1], item[2]); } return false; } public static boolean openBankOnScreen(APIContext ctx) { if (ctx.bank().isOpen()) { return true; } SceneObject bank = ctx.objects().query().actions("Bank").visible().results().nearest(); if (bank != null && bank.interact("Bank")) { Time.sleep(10000, ()->ctx.bank().isOpen()); } return ctx.bank().isOpen(); } @Override public boolean onStart(String... strings) { return true; } private boolean localAnimating(APIContext ctx) { if (ctx.localPlayer().isAnimating()) { anim = System.currentTimeMillis(); return true; } return System.currentTimeMillis() <= (anim + Random.nextInt(2600, 3600)); } public static boolean isOpen(APIContext ctx) { return ctx.widgets().query().group(GOLD_FURNACE_GROUP, SILVER_FURNACE_GROUP).visible().results().first() != null; } public static boolean initiate(APIContext ctx, String name) { WidgetChild named = ctx.widgets().query().visible().group(GOLD_FURNACE_GROUP, SILVER_FURNACE_GROUP).filter(w -> w.getActions().size() != 0).itemName(name).results().first(); if (named != null) { return named.interact(); } WidgetChild actionable = ctx.widgets().query().visible().group(GOLD_FURNACE_GROUP, SILVER_FURNACE_GROUP).filter(w -> w.hasActionMatch("Make "+name)).results().first(); if (actionable != null) { return actionable.interact(); } return false; } }
×
×
  • Create New...