Jump to content

flip242

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by flip242

  1. Here is the code if you want to craft silver bars into tiaras

     

    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 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 = "Tiara";
    private static final String MOULD = "Tiara mould";
    private static final String BAR = "Silver bar";

    @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)
    && !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)) {
    if (openBankOnScreen(ctx)) {
    ctx.bank().depositAllExcept(BAR);
    depositTiaraMould(ctx);
    banking(ctx, MOULD, BAR);
    } else {
    ctx.walking().walkTo(EDGE_BANK.randomize(2, 0));
    Time.sleep(15000, () -> openBankOnScreen(ctx));
    }
    }

    return hr;
    }

    private static boolean getItem(String name, APIContext ctx) {
    if (ctx.bank().contains(name)) {
    ctx.bank().withdrawAll(name);
    Time.sleep(4000, () -> ctx.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(item[0], ctx)) {
    if (item.length == 2) {
    if (!ctx.inventory().contains(item[1]) && getItem(item[1], ctx)) {
    return ctx.inventory().containsAll(item[0], item[1]);
    }
    }
    return false;
    } else if (item.length == 1) {
    return ctx.inventory().contains(item[0]);
    }
    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();
    }

    private static void depositTiaraMould(APIContext ctx) {
    if (ctx.bank().isOpen()) {
    ctx.bank().depositAllExcept(BAR);
    Time.sleep(3000, () -> ctx.inventory().isEmpty());
    }
    }

    @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(FURNACE_GROUP,SILVER_FURNACE_GROUP).visible().results().first() != null;
    }

    public static boolean initiate(APIContext ctx, String name) {
    WidgetChild named = ctx.widgets().query().visible().group(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(FURNACE_GROUP,SILVER_FURNACE_GROUP).filter(w -> w.hasActionMatch("Make " + name)).results().first();
    if (actionable != null) {
    return actionable.interact();
    }

    return false;
    }
    }
     

    EdgeJewelleryCrafter.class

×
×
  • Create New...