예제 #1
0
 private void noteHerbs() {
   if (inventory.containsOneOf(grimyID)) {
     status = "Noting herbs";
     RSNPC leprechaun = npcs.getNearest(leprechaunID);
     if (!leprechaun.isOnScreen() || calc.distanceTo(leprechaun) > 4) {
       walking.walkTileMM(leprechaun.getLocation(), 1, 1);
       sleep(random(3000, 4000));
     }
     int tmp = inventory.getCount(grimyID);
     for (int i = 0; i < 5; i++) {
       if (tmp == inventory.getCount(grimyID)) {
         inventory.getItem(grimyID).doAction("Use");
         sleep(200, 300);
         if (inventory.isItemSelected()) {
           leprechaun.doAction("Use");
           sleep(3000, 4000);
         }
       } else break;
     }
     RSObject plot = objects.getNearest(herbPlot);
     if (plot != null) {
       if (!plot.isOnScreen()) {
         walking.walkTileMM(plot.getLocation(), 1, 1);
         sleep(random(3000, 4000));
       }
     }
   }
 }
예제 #2
0
 private void checkCrops() {
   status = "Checking crops";
   RSObject plot = objects.getNearest(herbPlot);
   if (plot != null) {
     if (!plot.isOnScreen() || calc.distanceTo(plot) > 3) {
       walking.walkTileMM(plot.getLocation(), 1, 1);
       sleep(random(3000, 4000));
     }
     plot.doAction(inspect);
   }
 }
예제 #3
0
  private void compostPatch() {
    status = "Adding supercompost";
    RSObject plot = objects.getNearest(herbPlot);
    if (plot != null) {
      if (!inventory.contains(compostID)) {
        RSNPC leprechaun = npcs.getNearest(leprechaunID);
        if (!leprechaun.isOnScreen() || calc.distanceTo(leprechaun) > 4) {
          walking.walkTileMM(leprechaun.getLocation(), 1, 1);
          sleep(random(3000, 4000));
        }

        leprechaun.doAction("Exchange");
        sleep(random(1500, 2000));
        mouse.click(359, 265, 10, 10, true);
        sleep(random(300, 900));
        interfaces.getComponent(leprechaunInterface, closeInterface).doClick();
        sleep(random(200, 300));
        if (!plot.isOnScreen() || calc.distanceTo(plot) > 4) {
          walking.walkTileMM(plot.getLocation(), 1, 1);
          sleep(random(3000, 4000));
        }
      }
      if (inventory.contains(compostID)) {
        int tmp = inventory.getCount(compostID);
        for (int i = 0; i < 5; i++) {
          if (tmp == inventory.getCount(compostID) && currentState == State.COMPOST) {
            if (i > 0) camera.setAngle(random(0, 360));
            if (inventory.contains(compostID)) {
              inventory.getItem(compostID).doClick(true);
              plot.doClick();
            }
            sleep(random(4000, 5000));
          } else break;
        }
      }
    }
    currentState = State.CHECK_CROPS;
  }
예제 #4
0
파일: Certer.java 프로젝트: imagod123/RSBot
  @Override
  public int loop() {
    if (!activateCondition() && readyToLeave) {
      readyToLeave = false;
      failCount = 0;
      return -1;
    }
    if (getMyPlayer().getAnimation() != -1 || getMyPlayer().isMoving()) {
      return random(500, 1000);
    }
    if (interfaces.getComponent(241, 4).containsText("Ahem, ")) {
      readyToLeave = false;
    }

    if (interfaces.getComponent(241, 4).containsText("Correct.")
        || interfaces.getComponent(241, 4).containsText("You can go now.")) {
      readyToLeave = true;
    }

    if (readyToLeave) {
      int PORTAL_ID = 11368;
      final RSObject portal = objects.getNearest(PORTAL_ID);
      if (portal != null) {
        final RSTile portalLocation = portal.getLocation();
        if (portal.isOnScreen()) {
          portal.doAction("Enter");
          return random(3000, 4000);
        } else {
          walking.walkTileMM(
              new RSTile(portalLocation.getX() - 1, portalLocation.getY()).randomize(1, 1));
          return random(1500, 2000);
        }
      }
    }

    if (interfaces.getComponent(184, 0).isValid()) {
      final int modelID = interfaces.getComponent(184, 8).getComponents()[3].getModelID();
      String itemName = null;
      for (int i = 0; i < MODEL_IDS.length; i++) {
        if (MODEL_IDS[i] == modelID) {
          itemName = ITEM_NAMES[i];
        }
      }

      if (itemName == null) {
        log("The object couldn't be identified! ID: " + modelID);
        failCount++;
        if (failCount > 10) {
          stopScript(false);
          return -1;
        }
        return random(1000, 2000);
      }

      for (int j = 0; j < 3; j++) {
        final RSComponent iface = interfaces.getComponent(184, 8).getComponents()[j];
        if (iface.containsText(itemName)) {
          iface.doClick();
          return random(1000, 1200);
        }
      }
    }

    if (interfaces.canContinue()) {
      interfaces.clickContinue();
      return random(1000, 1200);
    }

    final RSNPC certer = npcs.getNearest("Niles", "Miles", "Giles");
    if (certer != null) {
      if (calc.distanceTo(certer) < 4) {
        certer.doAction("Talk-to");
        return random(2500, 3000);
      } else {
        final RSTile certerLocation = certer.getLocation();
        walking.walkTileMM(
            new RSTile(certerLocation.getX() + 2, certerLocation.getY()).randomize(1, 1));
        return random(3000, 3500);
      }
    }

    failCount++;
    if (failCount > 10) {
      stopScript(false);
      return -1;
    }
    return random(400, 600);
  }
예제 #5
0
  @Override
  public int loop() {
    if (bank.isDepositOpen() || bank.isOpen()) {
      bank.close();
    }

    if (!activateCondition()) {
      return -1;
    }

    if (getMyPlayer().isMoving()) {
      return random(1000, 2000);
    }

    switch (getState()) {
      case EXIT:
        RSObject portal = objects.getNearest(EXIT_PORTAL);
        if (portal != null) {
          if (!portal.isOnScreen()) {
            camera.turnTo(portal);
          }
          if (portal.doAction("Enter")) {
            return random(1000, 1300);
          }
        }
        break;

      case OPEN_CHEST:
        RSObject chest = objects.getNearest(ARNAV_CHEST);
        if (chest != null) {
          if (chest.doClick()) {
            return random(1000, 1300);
          }
        }
        break;

      case TALK:
        if (interfaces.canContinue()) {
          interfaces.clickContinue();
          return random(1500, 2000);
        }
        RSComponent okay = interfaces.getComponent(TALK_INTERFACE, 3);
        if (okay != null && okay.isValid()) {
          okay.doClick();
        }
        return random(1500, 2000);

      case SOLVE:
        RSInterface solver = interfaces.get(CHEST_INTERFACE_PARENT);
        if (solver != null && solver.isValid()) {

          String s = solver.getComponent(32).getText();
          if (s.contains("Bowl")) {
            index = 0;
          } else if (s.contains("Ring")) {
            index = 1;
          } else if (s.contains("Coin")) {
            index = 2;
          } else if (s.contains("Bar")) {
            index = 3;
          }

          if (solved()) {
            solver.getComponent(CHEST_INTERFACE_UNLOCK).doClick();
            return random(600, 900);
          }

          RSComponent container = solver.getComponent(CHEST_INTERFACE_CENTER);
          for (int i = 0; i < 3; i++) {
            int rand = random(0, 100);
            if (rand < 50) {
              rand = 0;
            } else if (rand >= 50) {
              rand = 1;
            }
            RSComponent target = solver.getComponent(INTERFACE_SOLVE_IDS[index][i]);
            RSComponent arrow = solver.getComponent(ARROWS[i][rand]);
            while (container.isValid()
                && target.isValid()
                && !container
                    .getArea()
                    .contains(new Point(target.getCenter().x + 15, target.getCenter().y))
                && arrow.isValid()
                && new Timer(10000).isRunning()) {
              arrow.doClick();
              sleep(random(1000, 1200));
            }
          }
        }
    }
    return random(500, 800);
  }