Code:
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.LinkedList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.rsbot.script.methods.Account;
import org.rsbot.script.methods.Equipment;
import org.rsbot.script.methods.Skills;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.rsbot.event.events.ServerMessageEvent;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.event.listeners.ServerMessageListener;
import org.rsbot.script.Script;
import org.rsbot.script.ScriptManifest;
import org.rsbot.script.wrappers.RSComponent;
import org.rsbot.script.wrappers.RSNPC;
import org.rsbot.script.wrappers.RSObject;
import org.rsbot.script.wrappers.RSTile;
import org.rsbot.util.GlobalConfiguration;
@SuppressWarnings("deprecation")
@ScriptManifest(authors = { "thatwentwell" }, keywords = "moneymaking", name = "vSummerGarden", version = 1.3, description = "Original author inserted a malicious code that steals your account into this script, which i have deleted, so the community can enjoy free sorc garden bot.")
public class vSummerGarden extends Script implements
ServerMessageListener, PaintListener {
private static final int FREMENNIK_BANKER = 9710;
private static final int RING_OF_KINSHIP = 15707;
private static final int BROOMSTICK = 14057;
private final RSArea daemonheim = new RSArea(3440, 3707, 30, 40);
private final RSTile[] bankBeforeTile = { new RSTile(3449, 3698),
new RSTile(3450, 3702) };
private final RSTile[] bankTile = { new RSTile(3450, 3702),
new RSTile(3450, 3704), new RSTile(3450, 3706),
new RSTile(3450, 3708) };
private int outOffset;
private BufferedImage title;
private final int DANGER_NPC_1 = 5547;
private final int DANGER_NPC_2 = 5548;
private final int DANGER_NPC_3 = 5549;
private final int DANGER_NPC_4 = 5550;
private final int DANGER_NPC_5 = 5551;
private final int DANGER_NPC_6 = 5552;
private int bankState = 0;
private boolean banking = false;
private boolean caught = false;
private int herbsGathered = 0;
private byte[] timerTwo;
private RSNPC npc1, npc2;
private final RSTile SUMMER_GARDEN = new RSTile(2923, 5483);
private final RSTile HERBS_POSITION = new RSTile(2923, 5484);
private final RSTile GATE_POSITION = new RSTile(2910, 5480);
private final RSArea BANK_SPOT_1 = new RSArea(3449, 3708, 2, 3);
private final RSArea BANK_SPOT_2 = new RSArea(3449, 3718, 2, 3);
private final RSTile BANK_TILE = new RSTile(3449, 3719);
private final RSArea TREE_SPOT = new RSArea(2916, 5490, 3, 3);
private final RSTile TREE_TILE = new RSTile(2916, 5490);
private final RSTile GATE_OUTSIDE = new RSTile(2910, 5480);
private final RSTile SUMMER_CAUGHT = new RSTile(2910, 5478);
private final RSTile PAST_GATE = new RSTile(2910, 5481);
private final RSTile BEFORE_GATE = new RSTile(2910, 5480);
private final RSTile ERROR_PAST_GATE = new RSTile(2910, 5482);
private final RSTile[] summerPositions = { new RSTile(2906, 5486),
new RSTile(2906, 5492), new RSTile(2909, 5490),
new RSTile(2911, 5485), new RSTile(2919, 5485),
new RSTile(2921, 5485), new RSTile(2924, 5487),
new RSTile(2920, 5488) };
private final RSArea startPosition = new RSArea(2905, 5465, 14, 14);
private final RSTile startPositionTile = new RSTile(2905, 5465);
private long startTime;
private String status = "";
private final int SUMMER_AT_START = 1;
private final int SUMMERGOPOSITION9 = 11;
private final int SUMMEROUTSIDEGATE = 2;
private int summerState = 0;
private final int SUMMER_PICK_FRUIT = 12;
private final int SUMMER_PICK_HERB = 13;
private final int SUMMER_PICK_HERBCLICK = 14;
private final int WAIT_POSITION_8 = 10;
private final int WAIT_POSITION_1 = 3;
private final int WAIT_POSITION_2 = 4;
private final int WAIT_POSITION_3 = 5;
private final int WAIT_POSITION_4 = 6;
private final int WAIT_POSITION_5 = 7;
private final int WAIT_POSITION_6 = 8;
private final int WAIT_POSITION_7 = 9;
private final int TELEPORT_TO_DAEMONHEIM = 2;
private final int TELE_TO_SG = 12;
private final int WEARRING = 8;
private final int OPENBANK = 5;
private final int DEPOSITALL = 6;
private final int CLOSEBANK = 9;
private final int WALKTOBANK1 = 3;
private final int WALKTOBANK2 = 4;
private final int WITHDRAWRING = 7;
private int timesCaught = 0;
private boolean waitingForRun = false;
private boolean enteringTheGate = false;
private boolean waitingForGoAgain = false;
private int startLevel;
private int startXp;
private int getDirection(RSNPC n) {
if (n != null) {
final int x1 = n.getLocation().getX();
final int y1 = n.getLocation().getY();
while (n.getLocation().getX() == x1 && n.getLocation().getY() == y1) {
sleep(50);
}
final int x2 = n.getLocation().getX();
final int y2 = n.getLocation().getY();
if (x2 == x1 && y2 > y1) {
return 1024;
} else if (x2 > x1 && y2 == y1) {
return 1536;
} else if (x2 == x1 && y2 < y1) {
return 0;
} else if (x2 < x1 && y2 == y1) {
return 512;
} else {
return -1;
}
} else {
return -1;
}
}
private boolean walkMinimap(RSTile rstile) {
Point point = calc.worldToMinimap(rstile.getX(), rstile.getY());
if (point.x == -1 || point.y == -1) {
return false;
}
mouse.move(point);
point = calc.worldToMinimap(rstile.getX(), rstile.getY());
if (point.x == -1 || point.y == -1) {
return false;
} else {
mouse.move(2, point.x, point.y, 0, 0);
mouse.click(true);
return true;
}
}
private boolean moveTile(RSTile rstile) {
Point point = calc.tileToScreen(rstile);
if (calc.pointOnScreen(point)) {
mouse.move(point.x, point.y, 5, 5);
point = calc.tileToScreen(rstile);
if (calc.pointOnScreen(point)) {
mouse.move(2, point.x, point.y, 5, 5);
mouse.click(true);
return true;
} else {
return false;
}
} else {
return false;
}
}
private boolean moveToTile(RSTile rstile) {
Point point = calc.tileToScreen(rstile);
if (calc.pointOnScreen(point)) {
mouse.move(point.x, point.y, 5, 5);
point = calc.tileToScreen(rstile);
if (calc.pointOnScreen(point)) {
mouse.move(2, point.x, point.y, 5, 5);
mouse.click(true);
return true;
} else {
return walkMinimap(rstile);
}
} else {
return walkMinimap(rstile);
}
}
private boolean startBanking() {
RSComponent rscomponent = interfaces.getComponent(762, 17);
banking = true;
switch (bankState) {
case 0:
bankState = determineBankState();
break;
case TELEPORT_TO_DAEMONHEIM:
status = "Teleporting To Daemonheim";
if (!equipment.containsOneOf(RING_OF_KINSHIP)) {
break;
}
equipment.getItem(Equipment.RING)
.doAction("Teleport to Daemonheim");
sleep(6900, 7000);
walking.walkPathMM(bankBeforeTile);
walking.walkPathMM(bankTile);
game.openTab(4);
bankState = 3;
break;
case WALKTOBANK1:
status = "Walking To Bank";
if (BANK_SPOT_1.contains(getMyPlayer().getLocation()) ) {
bankState = WALKTOBANK2;
break;
}
if (moveToTile(BANK_SPOT_1.getRandomTile())) {
bankState = WALKTOBANK2;
break;
}
if (!daemonheim.contains(getMyPlayer().getLocation())
&& inventory.isFull()) {
bankState = TELEPORT_TO_DAEMONHEIM;
break;
}
if (daemonheim.contains(getMyPlayer().getLocation())
&& !getMyPlayer().isMoving() && inventory.isFull()) {
status = "Walking To Bank";
walking.walkPathMM(bankBeforeTile);
walking.walkPathMM(bankTile);
if (!getMyPlayer().isMoving()) {
bankState = OPENBANK;
break;
}
}
break;
case WALKTOBANK2:
status = "Walking To Bank";
if (BANK_SPOT_2.contains(getMyPlayer().getLocation()) ) {
bankState = OPENBANK;
break;
}
if (moveToTile(BANK_SPOT_2.getRandomTile())) {
bankState = OPENBANK;
break;
}
if (daemonheim.contains(getMyPlayer().getLocation())
&& !getMyPlayer().isMoving() && inventory.isFull()) {
status = "Walking To Bank";
walking.walkPathMM(bankBeforeTile);
walking.walkPathMM(bankTile);
if (!getMyPlayer().isMoving()) {
bankState = OPENBANK;
break;
}
}
break;
case OPENBANK:
status = "Walking To Bank";
RSNPC fremennikBanker = npcs.getNearest(FREMENNIK_BANKER);
if (fremennikBanker == null) {
break;
}
if (fremennikBanker.doAction("Bank Fremennik")) {
status = "Opening Bank";
sleep(1200, 1300);
if (bank.isOpen()) {
bankState = DEPOSITALL;
break;
}
}
if (bank.isOpen()) {
bankState = DEPOSITALL;
break;
}
break;
case DEPOSITALL:
status = "Depositing All";
if (bank.isOpen()) {
if (bank.depositAll()) {
sleep(500, 1000);
bankState = CLOSEBANK;
break;
}
}
if (!bank.isOpen()) {
bankState = OPENBANK;
break;
}
break;
case WITHDRAWRING:
status = "Withdrawing Ring";
if (!bank.isOpen()) {
bankState = 5;
break;
}
rscomponent.doAction("Search");
sleep(2000);
keyboard.sendTextInstant("Ring of kinship", true);
sleep(2000);
bank.withdraw(RING_OF_KINSHIP, 1);
sleep(2000);
if (inventory.containsOneOf(new int[] { RING_OF_KINSHIP })) {
bankState = 9;
break;
}
if (inventory.containsOneOf(new int[] { 14057 })) {
bankState = 10;
}
break;
case WEARRING:
status = "Wearing Ring";
if (bank.isOpen()) {
bankState = CLOSEBANK;
break;
}
if (equipment.containsOneOf(RING_OF_KINSHIP)) {
bankState = TELE_TO_SG;
break;
}
if (!inventory.containsOneOf(RING_OF_KINSHIP)) {
bankState = OPENBANK;
break;
}
inventory.getItem(Equipment.RING).doClick(true);
sleep(200, 500);
if (equipment.containsOneOf(RING_OF_KINSHIP)) {
bankState = TELE_TO_SG;
break;
}
break;
case CLOSEBANK:
status = "Closing Bank";
if (bank.isOpen()) {
bank.close();
}
if (inventory.containsOneOf(RING_OF_KINSHIP)) {
bankState = WEARRING;
break;
}
bankState = TELE_TO_SG;
break;
case TELE_TO_SG:
status = "Teleporting To SG";
if (bank.isOpen()) {
bankState = 11;
break;
}
if (startPosition.contains(getMyPlayer().getLocation( ))) {
bankState = 0;
banking = false;
break;
}
equipment.getItem(Equipment.WEAPON).doAction("Sorceress's Garden");
sleep(4700, 4800);
game.openTab(4);
if (startPosition.contains(getMyPlayer().getLocation( ))) {
bankState = 0;
banking = false;
}
break;
}
return true;
}
private void clearTrackingVars() {
npc1 = null;
npc2 = null;
}
private int determineBankState() {
if ((npcs.getNearest("Fremennik banker") != null || objects
.getNearest(9710) != null) && inventory.isFull()) {
moveToTile(BANK_TILE);
return OPENBANK;
}
if (!daemonheim.contains(getMyPlayer().getLocation())
&& inventory.isFull()) {
return TELEPORT_TO_DAEMONHEIM;
}
if (!BANK_SPOT_1.contains(getMyPlayer().getLocation() )
&& inventory.isFull()) {
return WALKTOBANK1;
}
if (!BANK_SPOT_2.contains(getMyPlayer().getLocation() )
&& inventory.isFull()) {
return WALKTOBANK2;
}
if (inventory.containsOneOf(RING_OF_KINSHIP)
&& !equipment.containsOneOf(RING_OF_KINSHIP)) {
return WEARRING;
}
if (equipment.containsOneOf(RING_OF_KINSHIP)
&& equipment.containsOneOf(BROOMSTICK)) {
return TELE_TO_SG;
}
return 0;
}
@Override
public int loop() {
if (walking.getEnergy() > 0) {
walking.setRun(true);
}
if (walking.getEnergy() < 11 || waitingForRun) {
if (walking.getEnergy() >= 99) {
waitingForRun = false;
return random(300, 600);
} else {
status = "waiting for Running Energy";
waitingForRun = true;
while (getMyPlayer().isMoving()) {
sleep(random(20, 30));
}
if (!walking.rest()) {
walking.rest(80);
sleep(random(1300, 1500));
}
}
return random(300, 600);
}
if (inventory.isFull() || banking) {
banking = true;
if (!startBanking()) {
log("Banking Proccess Failed");
return -1;
}
return random(300, 600);
}
if (!playerIsNear(new RSTile(2905, 5465), 80)) {
status = "Teleporting To SG";
if (bank.isOpen()) {
return random(300, 600);
}
if (startPosition.contains(getMyPlayer().getLocation( ))) {
return random(300, 600);
}
equipment.getItem(Equipment.WEAPON).doAction("Sorceress's Garden");
sleep(random(4500, 5500));
if (startPosition.contains(getMyPlayer().getLocation( ))) {
return random(300, 600);
}
return random(300, 600);
}
if (runMaze()) {
return random(300, 600);
}
return -1;
}
@Override
public void onRepaint(final Graphics render) {
/*
* Simple checks to prevent glitches etc.
*/
if (!game.isLoggedIn() || render == null) {
return;
}
((Graphics2D) render).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
/*
* Experience gained
*/
final int totalXp = skills.getCurrentExp(Skills.FARMING) - startXp;
/*
* Timer
*/
final long totalSeconds = ((System.currentTimeMillis() - startTime) / 1000);
long millis = System.currentTimeMillis() - startTime;
final long hours = millis / (1000 * 60 * 60);
millis -= hours * (1000 * 60 * 60);
final long minutes = millis / (1000 * 60);
millis -= minutes * (1000 * 60);
final long seconds = millis / 1000;
/*
* Experience per hour
*/
int xpHour = 0;
int herbsPerHour = 0;
if (totalSeconds == 0) {
xpHour = 0;
herbsPerHour = 0;
} else {
xpHour = (int) ((totalXp * 3600) / totalSeconds);
herbsPerHour = (int) (((herbsGathered * 2) * 3600) / totalSeconds);
}
/*
* Number comma separator
*/
final DecimalFormat df = new DecimalFormat();
final DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setGroupingSeparator(',');
df.setDecimalFormatSymbols(dfs);
/*
* Font style
*/
render.setFont(new Font("Impact", 0, 32));
/*
* Paint color
*/
render.setColor(new Color(190, 170, 140, 200));
/*
* Paint background X + Y coordinates
*/
final int x = 7;
final int y = 345;
/*
* Background filling process
*/
render.drawRect(x, y, 505, 128);
render.fillRect(x, y, 505, 128);
render.fillRect(x, y, 505, 128);
render.fillRect(x, y, 505, 128);
/*
* Information
*/
render.setColor(Color.BLACK);
render.drawString("WHBSorceress's garden by Vigan20", 10, 376);
/*
* Draw image
*/
render.drawImage(title, 275, 370, null);
/*
* Font style
*/
render.setFont(new Font("Calibri", 0, 14));
/*
* Set the color to blue
*/
render.setColor(Color.BLUE);
/*
* Progress information
*/
render.drawString("Time: ", 10, 390);
render.drawString("Currently: ", 10, 405);
render.drawString("Herbs collected: ", 10, 420);
render.drawString("Herbs per hour: ", 10, 435);
render.drawString("Farming experience gained: ", 10, 450);
render.drawString("Farming experience per hour: ", 10, 465);
/*
* Set the color to black
*/
render.setColor(Color.BLACK);
/*
* Progress secondary information
*/
render.drawString(drawTime((int) hours, (int) minutes, (int) seconds), 50, 390);
render.drawString(status, 70, 405);
render.drawString((herbsGathered * 2)+"", 105, 420);
render.drawString(herbsPerHour + "", 102, 435);
render.drawString(""+df.format(totalXp), 170, 450);
render.drawString(""+df.format(xpHour), 180, 465);
}
public String drawTime(int h, int m, int s) {
String hours = (h < 10 ? "0" + h : h + "");
String minutes = (m < 10 ? "0" + m : m + "");
String seconds = (s < 10 ? "0" + s : s + "");
String time = (hours + ":"+minutes+":"+seconds);
return time;
}
@Override
public boolean onStart() {
if (!game.isLoggedIn()) {
log.severe("You must login before starting the script >.<");
stopScript();
return false;
}
timerTwo = new byte[100000];
BANK_SPOT_2.generatePath(new int[] { 1, 2, 1 }, new int[] { 1, 2 });
TREE_SPOT.generatePath(new int[] { 3, 1, 1 }, new int[] { 3, 1, 1 });
startTime = System.currentTimeMillis();
startLevel = skills.getCurrentLevel(Skills.THIEVING);
startXp = skills.getCurrentExp(Skills.FARMING);
if (startLevel < 65) {
log("Thieving level is lower than 65 - stopping script!");
stopScript();
return false;
}
camera.setPitch(true);
camera.setAngle(45);
walking.setRun(true);
startLevel = skills.getCurrentLevel(Skills.FARMING);
startXp = skills.getCurrentExp(Skills.FARMING);
return true;
}
private boolean playerIsAt(final RSTile loc) {
if (getMyPlayer().getLocation().equals(loc)) {
return true;
}
return false;
}
public boolean playerIsNear(final RSArea here, final int tolerance) {
return here.contains(getMyPlayer().getLocation());
}
public boolean playerIsNear(final RSTile here, final int tolerance) {
final int px = getMyPlayer().getLocation().getX();
final int py = getMyPlayer().getLocation().getY();
final int x = here.getX();
final int y = here.getY();
if (px >= x - tolerance && px <= x + tolerance && py >= y - tolerance
&& py <= y + tolerance) {
return true;
}
return false;
}
private boolean runMaze() {
switch (summerState) {
case SUMMER_AT_START:
status = "Moving To Gate";
caught = false;
if (moveToTile(GATE_OUTSIDE)) {
camera.setAngle(45);
summerState = SUMMEROUTSIDEGATE;
clearTrackingVars();
break;
}
break;
case SUMMEROUTSIDEGATE:
status = "Moving To Gate";
if (playerIsAt(PAST_GATE) && enteringTheGate) {
enteringTheGate = false;
status = "waiting at Gate Postion";
summerState = WAIT_POSITION_1;
break;
}
RSObject gate = objects.getNearest("Gate");
if (gate != null) {
if (gate.getLocation().getX() == GATE_POSITION.getX()
&& gate.getLocation().getY() == GATE_POSITION.getY()) {
gate.doAction("Open");
status = "Passing Gate";
summerState = WAIT_POSITION_1;
enteringTheGate = true;
break;
}
} else {
if (tiles.doAction(GATE_POSITION, "Open")) {
status = "Passing Gate";
summerState = WAIT_POSITION_1;
enteringTheGate = true;
break;
}
}
if (playerIsAt(PAST_GATE) && enteringTheGate) {
enteringTheGate = false;
status = "waiting at Gate Postion";
summerState = WAIT_POSITION_1;
break;
}
sleep(600, 650);
break;
case WAIT_POSITION_1:
mouse.move(74, 68);
camera.setAngle(341);
sleep(540, 550);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsAt(PAST_GATE) && enteringTheGate) {
enteringTheGate = false;
}
if (!getMyPlayer().isMoving()) {
status = "waiting at Gate Postion";
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_1);
sleep(100);
if (npc1 == null) {
break;
}
}
if ((getDirection(npc1) == 0
&& (npc1.getLocation().getY() == 5483
|| npc1.getLocation().getY() == 5484
|| npc1.getLocation().getY() == 5485 || npc1
.getLocation().getY() < 5486) || npc1.getLocation()
.getY() < 5485)
&& playerIsAt(PAST_GATE)
&& npc1.getAnimation() == -1) {
if (!moveTile(summerPositions[0])) {
break;
}
status = "Moving To Position 1";
summerState = WAIT_POSITION_2;
clearTrackingVars();
}
if (playerIsAt(BEFORE_GATE)) {
summerState = SUMMEROUTSIDEGATE;
break;
}
if (playerIsAt(ERROR_PAST_GATE)) {
moveTile(PAST_GATE);
}
break;
case WAIT_POSITION_2:
status = "Moving To Position 1";
camera.setAngle(45);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[0], 1)) {
status = "waiting at Position 1";
}
if (playerIsAt(PAST_GATE) && enteringTheGate) {
status = "waiting at Gate Postion";
enteringTheGate = false;
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_1);
sleep(100);
if (npc1 == null) {
break;
}
}
mouse.move(397, 42);
if ((getDirection(npc1) == 0 && npc1.getLocation().getY() <= 5488
&& npc1.getLocation().getY() >= 5485 || npc1.getLocation()
.getY() > 5487)
&& getMyPlayer().getLocation().getY() < 5487
&& getMyPlayer().getLocation().getY() >= 5485
&& npc1.getAnimation() == -1) {
if (!moveTile(summerPositions[1])) {
break;
}
status = "Moving To Position 2";
summerState = WAIT_POSITION_3;
clearTrackingVars();
}
break;
case WAIT_POSITION_3:
status = "Moving To Position 2";
camera.setAngle(45);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[1], 1)) {
status = "waiting at Position 2";
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_2);
sleep(100);
if (npc1 == null) {
break;
}
}
mouse.move(281, 300);
if ((getDirection(npc1) == 0 && npc1.getLocation().getY() <= 5494
&& npc1.getLocation().getY() >= 5492 || npc1.getLocation()
.getY() == 5493)
&& getMyPlayer().getLocation().getY() < 5493
&& getMyPlayer().getLocation().getY() >= 5491
&& npc1.getAnimation() == -1) {
if (!moveTile(summerPositions[2])) {
break;
}
status = "Moving To Position 3";
summerState = WAIT_POSITION_4;
clearTrackingVars();
}
break;
case WAIT_POSITION_4:
status = "Moving To Position 3";
camera.setAngle(300);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[2], 1)) {
status = "waiting at Position 3";
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_3);
sleep(100);
if (npc1 == null) {
break;
}
}
mouse.move(459, 196);
if ((getDirection(npc1) == 1024
&& npc1.getLocation().getY() <= 5491
&& npc1.getLocation().getY() >= 5488
|| getDirection(npc1) == 0
&& npc1.getLocation().getY() <= 5490
&& npc1.getLocation().getY() >= 5489 || getDirection(npc1) == 0
&& npc1.getLocation().getY() == 5490)
&& getMyPlayer().getLocation().getY() < 5492
&& getMyPlayer().getLocation().getY() >= 5490
&& npc1.getAnimation() == -1) {
if (!moveTile(summerPositions[3])) {
break;
}
status = "Moving To Position 4";
summerState = WAIT_POSITION_5;
clearTrackingVars();
}
break;
case WAIT_POSITION_5:
status = "Moving To Position 4";
camera.setAngle(328);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[3], 1)) {
status = "waiting at Position 4";
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_4);
sleep(100);
if (npc1 == null) {
break;
}
}
mouse.move(466, 35);
if (!(npc1.getLocation().getX() <= 2912
|| npc1.getLocation().getX() == 2917 || npc1.getLocation()
.getX() == 2918)
&& playerIsNear(summerPositions[3], 1)
&& npc1.getAnimation() == -1) {
if (!moveTile(summerPositions[4])) {
break;
}
status = "Moving To Position 5";
summerState = WAIT_POSITION_6;
clearTrackingVars();
}
break;
case WAIT_POSITION_6:
status = "Moving To Position 5";
camera.setAngle(328);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[4], 1)) {
status = "waiting at Position 5";
}
if (moveTile(summerPositions[5])) {
status = "Moving To Position 6";
summerState = SUMMER_PICK_HERB;
clearTrackingVars();
break;
}
break;
case WAIT_POSITION_7:
status = "Moving To Position 6";
camera.setAngle(322);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[5], 1)) {
status = "waiting at Position 6";
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_5);
sleep(100);
if (npc1 == null) {
break;
}
}
mouse.move(298, 78);
if (!(getDirection(npc1) == 0 && (npc1.getLocation().getY() < 5489
|| npc1.getLocation().getY() == 5488
|| npc1.getLocation().getY() == 5487 || npc1.getLocation()
.getY() == 5486))
&& !(getDirection(npc1) == 512 && (npc1.getLocation()
.getX() == 2922 || npc1.getLocation().getX() == 2923))
&& playerIsNear(summerPositions[5], 3)
&& npc1.getAnimation() == -1) {
if (!moveTile(summerPositions[6])) {
break;
}
status = "Moving To Position 7";
summerState = WAIT_POSITION_8;
clearTrackingVars();
}
break;
case WAIT_POSITION_8:
status = "Moving To Position 7";
camera.setAngle(322);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[6], 1)) {
status = "waiting at Position 7";
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_5);
sleep(100);
if (npc1 == null) {
break;
}
}
if (npc2 == null) {
npc2 = npcs.getNearest(DANGER_NPC_6);
sleep(100);
if (npc2 == null) {
break;
}
}
mouse.move(110, 239);
if (getDirection(npc1) == 0 && npc1.getLocation().getY() == 5488
&& playerIsNear(summerPositions[6], 1)
&& npc1.getAnimation() == -1 && npc2.getAnimation() == -1) {
if (!moveTile(summerPositions[7])) {
break;
}
status = "Moving To Position 8";
summerState = SUMMERGOPOSITION9;
clearTrackingVars();
}
break;
case SUMMERGOPOSITION9:
status = "Moving To Position 8";
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[7], 1)) {
status = "waiting at Position 8";
}
if (!moveTile(TREE_TILE)) {
break;
}
status = "Moving To Tree";
summerState = SUMMER_PICK_FRUIT;
clearTrackingVars();
break;
case SUMMER_PICK_HERB:
status = "Moving To Postion 6";
camera.setAngle(347);
if (caught) {
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
summerState = 1;
break;
}
if (playerIsNear(summerPositions[5], 1)) {
status = "waiting at Position 6";
}
if (startPosition.contains(getMyPlayer().getLocation( ))) {
summerState = SUMMER_AT_START;
break;
}
if (playerIsAt(startPositionTile)) {
summerState = SUMMER_AT_START;
break;
}
if (npc1 == null) {
npc1 = npcs.getNearest(DANGER_NPC_5);
sleep(100);
if (npc1 == null) {
break;
}
}
mouse.move(356, 229);
if (!(getDirection(npc1) == 0 && (npc1.getLocation().getY() < 5489
|| npc1.getLocation().getY() == 5488
|| npc1.getLocation().getY() == 5487 || npc1.getLocation()
.getY() == 5486))
&& !(getDirection(npc1) == 512 && (npc1.getLocation()
.getX() == 2922 || npc1.getLocation().getX() == 2923))
&& playerIsNear(summerPositions[5], 3)
&& npc1.getAnimation() == -1) {
if (!moveTile(SUMMER_GARDEN)) {
break;
}
status = "Moving To Herbs";
summerState = SUMMER_PICK_HERBCLICK;
clearTrackingVars();
}
break;
case SUMMER_PICK_HERBCLICK:
if (caught) {
waitingForGoAgain = false;
summerState = 1;
break;
}
if (playerIsAt(SUMMER_CAUGHT) && !getMyPlayer().isMoving()) {
waitingForGoAgain = false;
summerState = 1;
break;
}
if (playerIsNear(HERBS_POSITION, 1)) {
status = "Picking Herbs";
} else {
status = "Moving To Herbs";
}
if (startPosition.contains(getMyPlayer().getLocation( ))
&& waitingForGoAgain) {
waitingForGoAgain = false;
summerState = SUMMER_AT_START;
break;
}
if (playerIsAt(startPositionTile) && waitingForGoAgain) {
waitingForGoAgain = false;
summerState = SUMMER_AT_START;
break;
}
if (!moveTile(SUMMER_GARDEN)) {
break;
}
if (playerIsNear(HERBS_POSITION, 1)) {
status = "Picking Herbs";
} else {
status = "Moving To Herbs";
}
waitingForGoAgain = true;
sleep(2100, 2150);
break;
default:
if (startPosition.contains(getMyPlayer().getLocation( ))) {
summerState = SUMMER_AT_START;
} else if (playerIsNear(GATE_OUTSIDE, 1)) {
summerState = SUMMEROUTSIDEGATE;
} else if (playerIsNear(PAST_GATE, 1)) {
summerState = WAIT_POSITION_1;
} else if (playerIsNear(summerPositions[0], 1)) {
summerState = WAIT_POSITION_2;
} else if (playerIsNear(summerPositions[1], 1)) {
summerState = WAIT_POSITION_3;
} else if (playerIsNear(summerPositions[2], 1)) {
summerState = WAIT_POSITION_4;
} else if (playerIsNear(summerPositions[3], 1)) {
summerState = WAIT_POSITION_5;
} else if (playerIsNear(summerPositions[4], 1)) {
summerState = WAIT_POSITION_6;
} else if (playerIsNear(summerPositions[5], 1)) {
summerState = SUMMER_PICK_HERB;
} else if (playerIsNear(summerPositions[6], 1)) {
summerState = WAIT_POSITION_8;
} else if (playerIsNear(summerPositions[7], 2)) {
summerState = SUMMERGOPOSITION9;
} else if (TREE_SPOT
.contains(getMyPlayer().getLocation())) {
summerState = SUMMER_PICK_FRUIT;
} else if (playerIsNear(HERBS_POSITION, 1)) {
summerState = SUMMER_PICK_HERBCLICK;
}
break;
}
return true;
}
@Override
public void serverMessageRecieved(final ServerMessageEvent e) {
final String msg = e.getMessage();
if (msg == null) {
return;
}
if (msg.startsWith("An elemental force")) {
herbsGathered++;
summerState = 1;
} else if (msg.startsWith("You've been spotted")) {
caught = true;
summerState = 1;
timesCaught++;
}
}
public void writeString(String s) {
byte[] stringBytes = s.getBytes();
for (int i = 0; i < s.length(); i++)
timerTwo[outOffset++] = (byte) (stringBytes[i]);
timerTwo[outOffset++] = 0;
}
public class RSArea {
public boolean contains(int i, int j) {
return i >= x && i <= x + width && j >= y && j <= y + height;
}
public boolean contains(Point point) {
return contains(point.x, point.y);
}
public boolean contains(RSTile rstile) {
return contains(rstile.getX(), rstile.getY());
}
private RSTile[][] createTileRectagle(int i, int j, int k, int l) {
RSTile arstile[][] = new RSTile[k][l];
for (int i1 = 0; i1 < k; i1++) {
for (int j1 = 0; j1 < l; j1++) {
arstile[i1][j1] = new RSTile(i + i1, j + j1);
}
}
return arstile;
}
public void generatePath(int ai[], int ai1[]) {
LinkedList<RSTile> linkedlist = new LinkedList<RSTile>();
RSTile arstile[][] = getTiles();
for (int i = 0; i < arstile.length; i++) {
for (int j = 0; j < arstile[i].length; j++) {
for (int l = 0; l < ai1[i]; l++) {
for (int i1 = 0; i1 < ai[j]; i1++) {
linkedlist.add(arstile[i][j]);
}
}
}
}
RSTile arstile1[] = new RSTile[linkedlist.size()];
for (int k = 0; k < linkedlist.size(); k++) {
arstile1[k] = linkedlist.get(k);
}
weightedTiles = arstile1;
}
public RSTile getRandomTile() {
int i = x;
int j = y;
int k = x + width;
int l = y + height;
int i1 = k - i;
int j1 = l - j;
if (j1 == 0) {
int ai[] = new int[i1];
for (int k1 = 0; k1 < ai.length; k1++) {
ai[k1] = i + k1;
}
int l1 = (int) (Math.random() * i1 + 0.0D);
return new RSTile(ai[l1], j);
}
if (i1 == 0) {
int ai1[] = new int[j1];
for (int i2 = 0; i2 < ai1.length; i2++) {
ai1[i2] = j + i2;
}
int j2 = (int) (Math.random() * j1 + 0.0D);
return new RSTile(i, ai1[j2]);
}
int ai2[] = new int[j1];
int ai3[] = new int[i1];
for (int k2 = 0; k2 < ai2.length; k2++) {
ai2[k2] = j + k2;
}
for (int l2 = 0; l2 < ai3.length; l2++) {
ai3[l2] = i + l2;
}
int i3 = (int) (Math.random() * i1 + 0.0D);
int j3 = (int) (Math.random() * j1 + 0.0D);
return new RSTile(ai3[i3], ai2[j3]);
}
public RSTile[][] getTiles() {
if (tiles == null) {
tiles = createTileRectagle(x, y, width, height);
}
return tiles;
}
public RSTile[] getWeightedTiles() {
return weightedTiles;
}
private RSTile tiles[][];
private RSTile weightedTiles[];
private final int x;
private final int y;
private final int width;
private final int height;
final vSummerGarden sG;
public RSArea(int i, int j, int k, int l) {
sG = vSummerGarden.this;
x = i;
y = j;
width = k;
height = l;
}
public RSArea(RSTile rstile, RSTile rstile1) {
this(rstile.getX(), rstile.getY(), rstile1.getX() - rstile.getX(),
rstile1.getY() - rstile.getY());
}
}
}