- import org.rsbot.script.Script;
- import org.rsbot.script.ScriptManifest;
- import org.rsbot.script.wrappers.*;
- @ScriptManifest(authors = "Juro", name = "JuroCook", keywords = "Cooking", version = 1.0, description = "A bot that Cooks lobsters at Al-Kharid")
- public class JuroCook extends Script {
- int RAW_LOBSTER = 377;
- int COOKED_LOBSTER = 379;
- int RANGE = 25730;
- int BANKBOOTHID = 35647;
- RSTile[] bankToRange = { new RSTile(3273, 3180) };
- RSTile[] rangeToBank = { new RSTile(3270, 3167) };
- public boolean onStart() {
- log("Welcome to JuroCook");
- return true;
- }
- private boolean atRange() {
- RSArea area = new RSArea(new RSTile(3275, 3179), new RSTile(3272, 3183));
- return area.contains(getMyPlayer().getLocation());
- }
- private boolean atBank() {
- RSArea area = new RSArea(new RSTile(3272, 3165), new RSTile(3261, 3171));
- return area.contains(getMyPlayer().getLocation());
- }
- private enum State {
- OPENBANK, DEPOSIT, WITHDRAW, CLOSEBANK, WALK_TO_RANGE, COOK, WALK_TO_BANK
- }
- private State getState() {
- if (bank.isOpen() && !inventory.contains(RAW_LOBSTER)
- && inventory.getCount() != 0) {
- return State.DEPOSIT;
- } else if (bank.isOpen() && inventory.getCount() == 0) {
- return State.WITHDRAW;
- } else if (bank.isOpen() && inventory.contains(RAW_LOBSTER)) {
- return State.CLOSEBANK;
- } else if (!bank.isOpen() && inventory.contains(RAW_LOBSTER)
- && !atRange()) {
- return State.WALK_TO_RANGE;
- } else if (inventory.contains(RAW_LOBSTER) && atRange()) {
- return State.COOK;
- } else if (!inventory.contains(RAW_LOBSTER) && atRange()) {
- return State.WALK_TO_BANK;
- } else if (!bank.isOpen() && !inventory.contains(RAW_LOBSTER)
- && atBank()) {
- return State.OPENBANK;
- }
- return null;
- }
- public void onFinish() {
- log("Thank's for using JuroCook!");
- }
- public int loop() {
- switch (getState()) {
- case OPENBANK:
- bank.open();
- sleep(1100, 1000);
- break;
- case DEPOSIT:
- bank.deposit(COOKED_LOBSTER, 0);
- sleep(700, 900);
- break;
- case WITHDRAW:
- bank.withdraw(RAW_LOBSTER, 0);
- sleep(700, 900);
- break;
- case CLOSEBANK:
- bank.close();
- sleep(700, 500);
- break;
- case WALK_TO_RANGE:
- walking.walkPathMM(bankToRange);
- case COOK:
- RSItem lobster = inventory.getItem(RAW_LOBSTER);
- RSObject range = objects.getNearest(RANGE);
- if (lobster != null && range != null) {
- inventory.useItem(lobster, range);
- sleep(500, 200);
- mouse.move(254, 423, 15, 15);
- mouse.click(true);
- sleep(500, 200);
- while (waitForAnimation(random(750, 1500)) == 896) {
- sleep(123, 456);
- }
- }
- case WALK_TO_BANK:
- walking.walkPathMM(rangeToBank);
- }
- return random(400, 700);
- }
- private int waitForAnimation(int timeout) {
- int myAnim = -1;
- long endTime = System.currentTimeMillis() + timeout;
- while (System.currentTimeMillis() < endTime) {
- myAnim = getMyPlayer().getAnimation();
- if (myAnim != -1)
- return myAnim;
- sleep(5, 15);
- }
- return myAnim;
- }
- }