Jump to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Is this script safe?

Featured Replies

I wouldn't risk it, I've heard that botting cows will get you banned really quickly. If you're just looking for combat xp, try seagulls at port sarim using Ande's fighter.

Do you mean the script is safe as in no suspicious wares/loggers or do you mean by safe from being banned from jagex?

 Yes it is safe, not sure about the banrates though...

package source;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import org.osbot.script.Script;
import org.osbot.script.ScriptManifest;
import org.osbot.script.rs2.Client;
import org.osbot.script.rs2.map.Position;
import org.osbot.script.rs2.model.GroundItem;
import org.osbot.script.rs2.model.NPC;
import org.osbot.script.rs2.model.Player;
import org.osbot.script.rs2.model.RS2Object;
import org.osbot.script.rs2.ui.Bank;
import org.osbot.script.rs2.ui.Inventory;
import org.osbot.script.rs2.utility.Area;

@ScriptManifest(author="Zach (LifezHatred)", info="Kills cows and collect hides", name="CowHideKiller", version=1.0D)
public class Main extends Script
{
  public long startTime;
  public int hours;
  public int minutes;
  public int seconds;
  public Area cowArea1 = new Area(3253, 3255, 3265, 3271);
  public Area cowArea2 = new Area(3235, 3272, 3265, 3300);
  public boolean killingCows = false;
  public int cowHideId = 1739;
  public int[] cowIds = { 2974, 2975, 2976, 2977 };
  public boolean checkTheWalk = false;
  public String status = "Going to gateFS";
  public int laps = 0;
  public int cowHidesCollected = 0;
  public int banked = 0;
  public Position[] pathToGate = { new Position(3249, 3256, 0), new Position(3254, 3250, 0), new Position(3259, 3240, 0), new Position(3260, 3231, 0), new Position(3264, 3228, 0) };
  public Position[] pathToBank = { new Position(3270, 3228, 0), new Position(3273, 3219, 0), new Position(3273, 3210, 0), new Position(3270, 3201, 0), new Position(3271, 3202, 0), 
    new Position(3267, 3195, 0), new Position(3268, 3192, 0), new Position(3267, 3187, 0), new Position(3268, 3179, 0), new Position(3269, 3169, 0) };

  public int randomDis = 0;
  public long lastRun = 0L;

  public boolean start = true;
  public int positionQue = 0;

  public void onStart()
  {
    this.startTime = System.currentTimeMillis();
  }

  public int onLoop() {
    checkArea();
    if (isRunning()) {
      this.lastRun = System.currentTimeMillis();
    }
    else if (this.lastRun > System.currentTimeMillis() + 300000L) {
      try {
        setRunning(true);
      }
      catch (InterruptedException e) {
        e.printStackTrace();
      }
    }

    if (this.killingCows) {
      if (myPlayer().isMoving())
        return 600;
      try
      {
        NPC cow = closestAttackableNPC(this.cowIds);
        GroundItem cowHide = closestGroundItem(new int[] { this.cowHideId });
        if ((cowHide != null) && (cowHide.exists()) && (cowHide.isVisible())) {
          cowHide.interact("Take");
          long startTimer = System.currentTimeMillis();
          while (cowHide.exists()) {
            if (System.currentTimeMillis() - startTimer > 2000L) {
              cowHide.interact("Take");
            }
            sleep((int)(100.0D + Math.random() * 600.0D));
          }
          return 600;
        }
        if (myPlayer().isUnderAttack()) {
          return 600;
        }
        if (cow.isUnderAttack()) {
          return 600;
        }
        cow.interact("Attack");
        sleep(1200);
      }
      catch (InterruptedException e) {
        e.printStackTrace();
      }
    } else {
      switch ((e = this.status).hashCode()) { case -1591360525:
        if (e.equals("Going to Bank..."));
        break;
      case -1039830248:
        if (e.equals("Walk to cows...")) break; break;
      case -804339118:
        if (e.equals("Open Bank"));
        break;
      case -804189983:
        if (e.equals("Open Gate"));
        break;
      case -294498713:
        if (e.equals("Going to Cows..."));
        break;
      case -100260521:
        if (e.equals("Going to gateFS"));
        break;
      case 1469339573:
        if (e.equals("Walk To Gate..."));
        break;
      case 2059411461:
        if (!e.equals("Walking To Gate2...")) { break label1104;

          RS2Object gate2 = closestObject(new int[] { 20798 });
          if ((gate2 != null) && 
            (gate2.exists()) && (gate2.getY() < 3270)) {
            try {
              gate2.interact("Open");
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          }
          try
          {
            walk(this.cowArea1);
          }
          catch (InterruptedException e2) {
            e2.printStackTrace();
          }

          if (myPlayer().isMoving()) {
            return 600;
          }
          if (this.cowArea2.contains(myPlayer())) {
            try {
              walk(this.cowArea1);
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          }
          RS2Object gate = closestObject(new int[] { 20798 });
          if ((gate.exists()) && (gate.getY() < 3270))
            try {
              gate.interact("Open");
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          else {
            try {
              walk(new Position(3249 + (int)(Math.random() * 2.0D), 3265 + (int)(Math.random() * 2.0D), 0));
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          }

          if ((!this.cowArea1.contains(myPlayer())) && 
            (myPlayer().getClient().getInventory().getEmptySlots() == 0)) {
            this.status = "Walking To Gate2...";
          }
        }
        else
        {
          performWalk(0, false);
          break label1104;

          RS2Object gatePay = closestObject(new int[] { 2883 });
          try {
            this.client.moveCameraToEntity(gatePay);
          }
          catch (InterruptedException e1) {
            e1.printStackTrace();
          }
          if (gatePay.isVisible())
            try {
              gatePay.interact("Pay-toll(10gp)");
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          else
            try {
              this.client.moveCameraToEntity(gatePay);
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          try
          {
            sleep(3000);
          }
          catch (InterruptedException e1) {
            e1.printStackTrace();
          }
          if (this.client.getInventory().getEmptySlots() == 0) {
            if (myPlayer().getX() == 3268) {
              this.status = "Going to Bank...";
            }
          }
          else if (myPlayer().getX() == 3267) {
            this.status = "Going to Cows...";
          }

          return (int)(Math.random() * 1000.0D);

          performWalk(1, false);
          break label1104;

          performWalk(0, true);
          break label1104;

          RS2Object bankBooth = closestObjectForName(new String[] { "Bank booth" });
          if (this.client.getBank().isOpen()) {
            this.banked = ((int)(this.banked + this.client.getInventory().getAmount(this.cowHideId)));
            this.laps += 1;
            try {
              this.client.getBank().depositAllExcept(new int[] { 995 });
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
            if (this.client.getInventory().getAmount(995) < 20L)
              try {
                this.client.getBank().withdraw(995, 10000);
              }
              catch (InterruptedException e) {
                e.printStackTrace();
              }
            try
            {
              this.client.getBank().close();
              this.status = "Going to gateFS";
              return 2000;
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }
          }
          else {
            if (bankBooth.isVisible()) {
              try {
                bankBooth.interact("Bank");
              }
              catch (InterruptedException e) {
                e.printStackTrace();
              }
              return 1200 + (int)(Math.random() * 600.0D);
            }
            try {
              this.client.moveCameraToEntity(bankBooth);
            }
            catch (InterruptedException e) {
              e.printStackTrace();
            }

            performWalk(1, true);
          }
        }
        break; } 
    }
    label1104: return 600;
  }

  public void checkArea() {
    if ((this.cowArea1.contains(myPlayer())) || (this.cowArea2.contains(myPlayer())))
      if (myPlayer().getClient().getInventory().getEmptySlots() == 0) {
        this.killingCows = false;
        this.status = "Walk To Gate...";
      }
      else if (!this.killingCows) {
        this.killingCows = true;
      }
  }

  public boolean performWalk(int path, boolean way)
  {
    if ((way) && (this.start)) {
      if (path == 0)
        this.positionQue = (this.pathToGate.length - 1);
      else
        this.positionQue = (this.pathToBank.length - 1);
    }
    else if (this.start)
      this.positionQue = 0;
    try
    {
      if (this.start) {
        if (path == 0)
          walk(this.pathToGate[this.positionQue]);
        else {
          walk(this.pathToBank[this.positionQue]);
        }
        this.randomDis = (3 + (int)(Math.random() * 3.0D));
        this.start = false;
      }
      int distance = 0;
      if (path == 0)
        distance = this.pathToGate[this.positionQue].distance(myPlayer().getPosition());
      else {
        distance = this.pathToBank[this.positionQue].distance(myPlayer().getPosition());
      }
      if (!myPlayer().isMoving()) {
        if (path == 0)
          walk(this.pathToGate[this.positionQue]);
        else {
          walk(this.pathToBank[this.positionQue]);
        }
      }
      if (distance < this.randomDis) {
        if (way) {
          this.positionQue -= 1;
          if (this.positionQue < 0)
            this.positionQue = 0;
        }
        else {
          this.positionQue += 1;
        }
        if (path == 0)
          walk(this.pathToGate[this.positionQue]);
        else {
          walk(this.pathToBank[this.positionQue]);
        }
        this.randomDis = (3 + (int)(Math.random() * 3.0D));
      }
      if (way) {
        if (path == 0) {
          if (this.pathToGate[0].distance(myPlayer().getPosition()) < 6) {
            this.positionQue = 0;
            this.status = "Walk to cows...";
            this.start = true;
            return true;
          }
        }
        else if (this.pathToBank[0].distance(myPlayer().getPosition()) < 6) {
          this.positionQue = 0;
          this.status = "Open Gate";
          this.start = true;
          return true;
        }

      }
      else if (path == 0) {
        if (this.pathToGate[4].distance(myPlayer().getPosition()) < 6) {
          this.positionQue = 0;
          this.status = "Open Gate";
          this.start = true;
          return true;
        }
      }
      else if (this.pathToBank[9].distance(myPlayer().getPosition()) < 6) {
        this.positionQue = 0;
        this.status = "Open Bank";
        this.start = true;
        return true;
      }
    }
    catch (Exception localException)
    {
    }

    return false;
  }

  public void updateStats() {
    long runTime = System.currentTimeMillis() - this.startTime;
    this.hours = ((int)runTime / 1000 / 60 / 60);
    this.minutes = ((int)runTime / 1000 / 60 - this.hours * 60);
    this.seconds = ((int)runTime / 1000 - this.hours * 60 * 60 - this.minutes * 60);
  }

  private long actionsPerHour(long actions, long startTime) {
    return ()(3600000.0D / (System.currentTimeMillis() - startTime) * actions);
  }

  public void onPaint(Graphics g) {
    updateStats();
    int cowHides = (int)(this.banked + this.client.getInventory().getAmount(this.cowHideId));
    int cowHidesPerHour = (int)actionsPerHour(cowHides, this.startTime);
    Graphics2D g2 = (Graphics2D)g;
    g2.setColor(Color.WHITE);
    g2.setFont(new Font("Ariel", 0, 12));
    g2.drawString("Created by LifezHatred", 375, 225);
    g2.drawString("Cow Hides Per Hour: " + cowHidesPerHour, 375, 250);
    g2.drawString("Cow Hides Collected: " + cowHides, 375, 275);
    g2.drawString("Trips Completed: " + this.laps, 375, 300);
    String hz = "";
    String mz = "";
    String sz = "";
    if (this.hours < 10) {
      hz = "0";
    }
    if (this.minutes < 10) {
      mz = "0";
    }
    if (this.seconds < 10) {
      sz = "0";
    }
    g2.drawString("Time Elapsed: " + hz + this.hours + ":" + mz + this.minutes + ":" + sz + this.seconds, 375, 325);
  }
} 

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.