/*
* @Author lolpl0xme
* Swell - tutorial
* mak001, bluefirecorp, ConnectQ - clicking
* Electricity - STAT Antiban
* Enfilade - Paint Base
* YouEpicFail - Running
* InvaderZim - Banking
* TragiKs - paint
*/
import java.awt.BasicStroke;
import java.aw*****lor;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import org.rsbot.event.events.ServerMessageEvent;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.event.listeners.ServerMessageListener;
import org.rsbot.script.ScriptManifest;
import org.rsbot.script.Script;
import org.rsbot.script.methods.Game;
import org.rsbot.script.methods.Skills;
import org.rsbot.script.wrappers.RSArea;
import org.rsbot.script.wrappers.RSObject;
import org.rsbot.script.wrappers.RSTile;
@ScriptManifest(authors = { "lolpl0xme" }, keywords = { "Woodcutting" }, name = "Fallin Oaks", version = 0.3, description = "Lets start cutting all those oaks.")
public class FallinOaks extends Script implements PaintListener, ServerMessageListener {
//private final int[] hatchetIDs = { 349, 1351, 1353, 1355, 1357, 1359, 1361, 6739 };
private final int[] oTree = { 1281 };
double version = 0.3;
private int oLog = (1521);
RSTile[] banktoTrees = { new RSTile(3092, 3243), new RSTile(3102, 3244),};
private int bankboothID[] = {2213, 9398};
RSTile[] Treestobank = { new RSTile(3086, 3234), new RSTile(3092, 3243),};
private int xpGained;
private int currentXp;
public long startTime = System.currentTimeMillis();
long runTime = 0;
long seconds = 0;
long minutes = 0;
long hours = 0;
private int xpHour;
private int startXp;
private int levelsGained = 0;
private int logsCut = 0;
private String status = "Thinking...";
private int runEnergy = 0;
private void running() {
if (!game.isLoggedIn()) {
runEnergy = walking.getEnergy();
if (runEnergy >= 80 && !walking.isRunEnabled()) {
walking.setRun(true);
}
if (runEnergy < 80) {
sleep(10, 20);
}
}
}
private boolean atTrees(){
RSArea area = new RSArea(new RSTile(3110, 3250), new RSTile(3098, 3240));
return are*****ntains(getMyPlayer().getLocation());
}
private boolean atBank(){
RSArea area = new RSArea(new RSTile(3092, 3246), new RSTile(3095, 3240));
return are*****ntains(getMyPlayer().getLocation());
}
private boolean walkToTreesFromBank(){
RSTile[] randompath = walking.randomizePath(banktoTrees, 1, 1);
status = "Walking to trees";
return walking.walkPathMM(randompath, 15);
}
private boolean walkToBankFromTrees(){
RSTile[] randompath = walking.randomizePath(Treestobank, 1, 1);
status = "Walking to bank";
return walking.walkPathMM(randompath, 15);
}
public void serverMessageRecieved(ServerMessageEvent e) {
if (e.getMessage().contains("Woodcutting level")) {
levelsGained++;
}
if (e.getMessage().contains("get some")) {
logsCut++;
}
}
private void useBank(){
RSObject bankBooth = objects.getNearest(bankboothID);
if(bankBooth != null && inventory.contains(oLog)){
bankBooth.doAction("Use-quickly");
sleep(800, 1000);
}
}
private void depositWillowLogs(){
if(bank.isOpen()){
bank.deposit(oLog, 0);
status = "Banking Oaks";
sleep(300, 600);
}
}
private void closeBank(){
if(bank.isOpen()){
status = "Closing Bank";
mouse.move(490, 36, 3, 3);
sleep(300, 600);
mouse.click(true);
}
}
private void Bank(){
useBank();
depositWillowLogs();
closeBank();
}
public void antiban() {
switch (random(1, 30)) {
case 5:
game.openTab(Game.TAB_STATS);
skills.doHover(Skills.INTERFACE_WOODCUTTING);
status = "ANTIBAN WC";
sleep(random(1000, 4000));
game.openTab(Game.TAB_INVENTORY);
status = "Looking At Oaks";
break;
case 6:
game.openTab(Game.TAB_FRIENDS);
status = "ANTIBAN FL";
sleep(random(1600, 5000));
game.openTab(Game.TAB_INVENTORY);
status = "Looking At Oaks";
break;
case 7:
game.openTab(Game.TAB_CLAN);
status = "ANTIBAN CC";
sleep(random(2100, 4500));
game.openTab(Game.TAB_INVENTORY);
status = "Looking At Oaks";
}
}
public boolean onStart() {
log("Start at oaks at draynor");
startXp = skills.getCurrentExp(8);
mouse.setSpeed(10);
return true;
}
private final RenderingHints antialiasing = new RenderingHints(
RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
private Image getImage(String url) {
try {
return ImageIO.read(new URL(url));
} catch(IOException e) {
return null;
}
}
private final Color color1 = new Color(0, 0, 0);
private final Color color2 = new Color(255, 255, 51);
private final Color color3 = new Color(0, 255, 255);
private final BasicStroke stroke1 = new BasicStroke(2);
private final Font font1 = new Font("Century Gothic", 0, 12);
private final Image img1 = getImage("http://img340.imageshack.us/img340/9334/cooltext478936925.png");
private final Image img2 = getImage("http://img87.imageshack.us/img87/5395/oaktreeh.png");
public void onRepaint(Graphics g1) {
if (game.isLoggedIn()) {
runTime = System.currentTimeMillis() - startTime;
seconds = runTime / 1000;
if (seconds >= 60) {
minutes = seconds / 60;
seconds -= (minutes * 60);
}
if (minutes >= 60) {
hours = minutes / 60;
minutes -= (hours * 60);
}
xpHour = (int) ((3600000.0 / (double) runTime) * xpGained);
}
Graphics2D g = (Graphics2D)g1;
g.setRenderingHints(antialiasing);
currentXp = skills.getCurrentExp(8);
xpGained = currentXp - startXp;
g.setColor(color1);
g.fillRoundRect(517, 0, 247, 166, 16, 16);
g.setColor(color2);
g.setStroke(stroke1);
g.drawRoundRect(517, 0, 247, 166, 16, 16);
g.drawImage(img1, 564, 4, null);
g.setFont(font1);
g.setColor(color3);
g.drawString("Oaks Cut: "+ logsCut +".", 526, 63);
g.drawString("EXP Gained: " + xpGained, 527, 78);
g.drawString("Version: " + version, 684, 158);
g.drawImage(img2, 668, 39, null);
g.drawString("Status: " + status + ".", 527, 94);
g.drawString("Levels gained: " + levelsGained, 527, 110);
g.drawString("Xp per hour: " + xpHour + ".", 527, 142);
g.drawString("Time: " + hours + " Hrs " + minutes + " Mins " + seconds + " Secs ", 527, 126);
g.drawLine(mouse.getLocation().x - 5, mouse.getLocation().y,
mouse.getLocation().x + 5, mouse.getLocation().y);
g.drawLine(mouse.getLocation().x, mouse.getLocation().y - 5,
mouse.getLocation().x, mouse.getLocation().y + 5);
}
private void Chop(){
if (getMyPlayer().getAnimation() != 867){
RSObject tree = objects.getNearest(oTree);
if(tree != null);
tree.doAction("Chop");}
status = "Chopping Oaks";
while (getMyPlayer().getAnimation() != -1)
sleep(1200, 1500);
}
public int loop() {
antiban();
running();
if(atTrees() && inventory.isFull()){
walkToBankFromTrees();
}else if(atBank() && inventory.contains(oLog)){
Bank();
}else if(atTrees() && !inventory.isFull()){
Chop();
}else if(atBank() && !inventory.contains(oLog)){
walkToTreesFromBank();
}
return random(500, 1300);
}
public void onFinish() {
log("Please report all bugs on thread thank you");
}
}
UPDATE LOG ------------ New Paint Logs Cut: EXP Gained: EXP Per Hour: Runtime: Status: Levels Gained:
UPDATES TO COME ------------------ New Paint more locations

/*
* @Author lolpl0xme
* mak001, bluefirecorp, ConnectQ - clicking
* Electricity - STAT Antiban
* Enfilade, TragiKs - Paint Help
* Swell, InvaderZim - Scripting Basics
*/
import java.awt.BasicStroke;
import java.aw*****lor;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import org.rsbot.event.events.ServerMessageEvent;
import org.rsbot.event.listeners.PaintListener;
import org.rsbot.event.listeners.ServerMessageListener;
import org.rsbot.script.ScriptManifest;
import org.rsbot.script.Script;
import org.rsbot.script.methods.Game;
import org.rsbot.script.methods.Skills;
import org.rsbot.script.wrappers.RSArea;
import org.rsbot.script.wrappers.RSGroundItem;
import org.rsbot.script.wrappers.RSObject;
import org.rsbot.script.wrappers.RSTile;
@ScriptManifest(authors = { "lolpl0xme" }, keywords = { "Woodcutting" }, name = "Fallin Oaks", version = 0.5, description = "Cut all the oaks you can handle!")
public class FallinOaks extends Script implements PaintListener, ServerMessageListener {
private final int[] hatchetIDs = { 349, 1351, 1353, 1355, 1357, 1359, 1361, 6739 };
public final int[] nestIDs = {5070, 5071, 5072, 5073, 5074, 5075, 5076, 7413, 11966};
private int bankboothID[] = {2213, 9398};
private final int[] oTree = { 1281 };
RSTile[] banktoTrees = { new RSTile(3092, 3243), new RSTile(3102, 3244),};
RSTile[] Treestobank = { new RSTile(3086, 3234), new RSTile(3092, 3243),};
private int oLog = (1521);
private int xpHour;
private int startXp;
private int levelsGained = 0;
private int logsCut = 0;
private int xpGained;
private int currentXp;
private int nestsCollected;
private int runEnergy = 0;
double version = 0.5;
private String status = "Starting Up.";
public long startTime = System.currentTimeMillis();
long runTime = 0;
long seconds = 0;
long minutes = 0;
long hours = 0;
private void running() {
if (!game.isLoggedIn()) {
runEnergy = walking.getEnergy();
if (runEnergy >= 80 && !walking.isRunEnabled()) {
walking.setRun(true);
status = "Resting...";
}
if (runEnergy < 80) {
sleep(10, 20);
}
}
}
private void nest() {
RSGroundItem nest = groundItems.getNearest(nestIDs);
int initialCount = inventory.getCount();
if (nest != null && initialCount < 28) {
if (!nest.isOnScreen())
camera.turnToTile(nest.getLocation());
if (nest.doAction("Take")) {
for (int i = 0; i < 15; ++i) {
sleep(100);
if (getMyPlayer().isMoving()) {
i = 0;
}
if (inventory.getCount() > initialCount) {
nestsCollected++;
return;
}
}
}
}
}
private boolean atTrees(){
RSArea area = new RSArea(new RSTile(3110, 3250), new RSTile(3098, 3240));
return are*****ntains(getMyPlayer().getLocation());
}
private boolean atBank(){
RSArea area = new RSArea(new RSTile(3092, 3246), new RSTile(3095, 3240));
return are*****ntains(getMyPlayer().getLocation());
}
private boolean walkToTreesFromBank(){
RSTile[] randompath = walking.randomizePath(banktoTrees, 1, 1);
status = "Walking to trees";
return walking.walkPathMM(randompath, 15);
}
private boolean walkToBankFromTrees(){
RSTile[] randompath = walking.randomizePath(Treestobank, 1, 1);
status = "Walking to bank";
return walking.walkPathMM(randompath, 15);
}
public void serverMessageRecieved(ServerMessageEvent e) {
if (e.getMessage().contains("Woodcutting level")) {
levelsGained++;
}
if (e.getMessage().contains("get some")) {
logsCut++;
}
}
private void useBank(){
RSObject bankBooth = objects.getNearest(bankboothID);
if(bankBooth != null && inventory.contains(oLog)){
bankBooth.doAction("Use-quickly");
sleep(800, 1000);
}
}
private void depositOakLogs(){
if(bank.isOpen()){
bank.depositAllExcept(hatchetIDs);
status = "Banking oaks";
sleep(300, 600);
}
}
private void closeBank(){
if(bank.isOpen()){
status = "Closing bank";
mouse.move(490, 36, 3, 3);
sleep(300, 600);
mouse.click(true);
}
}
private void Bank(){
useBank();
depositOakLogs();
closeBank();
}
public void antiban() {
switch (random(1, 30)) {
case 5:
game.openTab(Game.TAB_STATS);
skills.doHover(Skills.INTERFACE_WOODCUTTING);
status = "Seeing EXP Left";
sleep(random(1000, 2100));
game.openTab(Game.TAB_INVENTORY);
status = "Looking at inventory";
break;
case 6:
game.openTab(Game.TAB_FRIENDS);
status = "Looking at friends list";
sleep(random(1000, 1700));
game.openTab(Game.TAB_INVENTORY);
status = "Looking at inventory";
break;
case 7:
game.openTab(Game.TAB_CLAN);
status = "Looking at clanchat";
sleep(random(1000, 1800));
game.openTab(Game.TAB_INVENTORY);
status = "Looking at inventory";
case 8:
if (random(1, 20) != 1)
return;
status = "Moving camera";
int angle = camera.getAngle() + random(-90, 90);
if (angle < 0) {
angle = random(0, 10);
}
if (angle > 359) {
angle = random(0, 10);
}
camera.setAngle(angle);
break;
case 9:
if (random(1, 5) == 1)
status = "Moving mouse";
mouse.moveSlightly();
case 10:
if (random (0, 12) == 7) {
status = "Antiban";
mouse.moveOffScreen();
sleep(random(5600, random(7200, 9000)));
}
break;
}
}
public boolean onStart() {
log("Start at trees or bank!");
startXp = skills.getCurrentExp(8);
mouse.setSpeed(10);
return true;
}
private final RenderingHints antialiasing = new RenderingHints(
RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
private Image getImage(String url) {
try {
return ImageIO.read(new URL(url));
} catch(IOException e) {
return null;
}
}
private final Color color1 = new Color(0, 0, 0);
private final Color color2 = new Color(255, 255, 51);
private final Color color3 = new Color(255, 255, 255);
private final BasicStroke stroke1 = new BasicStroke(2);
private final Font font1 = new Font("Century Gothic", 0, 18);
private final Image img1 = getImage("http://img593.imageshack.us/img593/4858/fallinoaks.png");
public void onRepaint(Graphics g1) {
nestsCollected = 0;
if (game.isLoggedIn()) {
runTime = System.currentTimeMillis() - startTime;
seconds = runTime / 1000;
if (seconds >= 60) {
minutes = seconds / 60;
seconds -= (minutes * 60);
}
if (minutes >= 60) {
hours = minutes / 60;
minutes -= (hours * 60);
}
xpHour = (int) ((3600000.0 / (double) runTime) * xpGained);
}
Graphics2D g = (Graphics2D)g1;
g.setRenderingHints(antialiasing);
currentXp = skills.getCurrentExp(8);
xpGained = currentXp - startXp;
g.setColor(color1);
g.setColor(color2);
g.setStroke(stroke1);
g.drawImage(img1, 7, 333, null);
g.setFont(font1);
g.setColor(color3);
g.drawString("Oaks Cut: "+ logsCut +".", 16, 406);
g.drawString("EXP Gained: " + xpGained, 16, 446);
g.drawString("Version: " + version, 332, 430);
g.drawString("Status: " + status + ".", 16, 386);
g.drawString("Levels gained: " + levelsGained, 16, 426);
g.drawString("EXP Per Hour: " + xpHour + ".", 16, 466);
g.drawString("Time: " + hours + " Hrs " + minutes + " Mins " + seconds + " Secs ", 16, 366);
g.drawString("Nests: " + nestsCollected, 332, 450);
g.drawLine(mouse.getLocation().x - 5, mouse.getLocation().y,
mouse.getLocation().x + 5, mouse.getLocation().y);
g.drawLine(mouse.getLocation().x, mouse.getLocation().y - 5,
mouse.getLocation().x, mouse.getLocation().y + 5);
}
private void Chop(){
if (getMyPlayer().getAnimation() != 867){
RSObject tree = objects.getNearest(oTree);
if(tree != null);
status = "Cutting oaks";
if (!tree.isOnScreen())
camera.turnToTile(tree.getLocation());
tree.doAction("Chop");}
while (getMyPlayer().getAnimation() != -1)
sleep(1200, 1500);
}
public int loop() {
antiban();
running();
nest();
if(atTrees() && inventory.isFull()){
walkToBankFromTrees();
}else if(atBank() && inventory.contains(oLog)){
Bank();
}else if(atTrees() && !inventory.isFull()){
Chop();
}else if(atBank() && !inventory.contains(oLog)){
walkToTreesFromBank();
}
return random(500, 1300);
}
public void onFinish() {
log("Thanks for using FallinOaks!");
env.saveScreenshot(true);
}
}