Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.*;
- import java.net.*;
- import java.util.*;
- import java.util.List;
- import org.rsbot.event.events.*;
- import org.rsbot.event.listeners.*;
- import org.rsbot.event.listeners.PaintListener;
- import org.rsbot.bot.*;
- import org.rsbot.script.wrappers.*;
- import org.rsbot.script.*;
- import org.rsbot.event.listeners.ServerMessageListener;
- import org.rsbot.event.events.ServerMessageEvent;
- @ScriptManifest(authors = {"Tel"}, name = "Chopper Catherby", version = 3.0, description = "<html><body><b>Tel's Yew CaTherby The Perfect!!</b></body></html>")
- public class TelsCatherbyYews extends Script implements PaintListener, ServerMessageListener
- {
- final double cVer = getClass().getAnnotation(ScriptManifest.class).version();
- final String cName = getClass().getAnnotation(ScriptManifest.class).name();
- int trainStat;
- int style = 0;
- int startStatLvl;
- int startXp;
- int logs = 0;
- String status = "Starting up";
- long startTime = System.currentTimeMillis();
- int yewTreeIDs[] = {1309};
- int yewTreeStumpID = 7402;
- RSTile bankTile = new RSTile(2807, 3441);
- RSTile yewTiles[] = {new RSTile(2757, 3431), new RSTile(2760, 3432), new RSTile(2758, 3433), new RSTile(2755, 3434)};
- RSTile waitTiles[] = {new RSTile(2758, 3431), new RSTile(2759, 3432), new RSTile(3222, 3501), new RSTile(2758, 3432)};
- RSTile yewTile = yewTiles[0];
- int hatchetID[] = {1351,1349,1361,1355,1357,1359,1353,6739};
- int currentTree;
- boolean noHatchet = false;
- boolean kill = false;
- boolean treeSwitch = false;
- long treeTimer[] = new long[yewTiles.length];
- enum treeStatus
- {
- GREEN, BROWN, RED
- }
- treeStatus yewPositions[] = new treeStatus[yewTiles.length];
- public boolean onStart()
- {
- log("Starting yew");
- trainStat = skills.getIndex("woodcutting");
- startStatLvl = skills.getCurrentLevel(trainStat);
- startXp = skills.getCurrentExp(trainStat);
- for (int i = 0; i < yewTiles.length; i++)
- {
- yewPositions[i] = treeStatus.GREEN;
- }
- return true;
- }
- public void onRepaint(Graphics g)
- {
- if (game.isLoggedIn())
- {
- double millis = System.currentTimeMillis() - startTime;
- int levelChange = skills.getCurrentLevel(trainStat) - startStatLvl;
- int xpChange = skills.getCurrentExp(trainStat) - startXp;
- int clvl = skills.getCurrentLevel(trainStat);
- int xpPerHour = (int)((xpChange / millis) * (1000 * 3600));
- int lpH = (int)((logs / millis) * (1000 * 3600));
- String time = formatTime((int)(millis/1000));
- String tTL = (xpChange != 0 && millis != 0) ? formatTime((int)((skills.getExpToNextLevel(trainStat) / (xpChange /millis)) / 1000)) : formatTime(0);
- String pTL = "" + skills.getPercentToNextLevel(trainStat);
- //paint
- g.setColor(Color.BLACK);
- g.setFont(new Font("Futura Hv", Font.BOLD, 17));
- g.drawString(cName + " v" + cVer + " ", 334, 33);
- g.setFont(new Font("Futura Hv", Font.BOLD, 14));
- //draw green trees
- for (int i = 0;i < yewTiles.length;i++)
- {
- if (yewPositions[i] == treeStatus.GREEN)
- {
- g.setColor(new Color(80,225,100));
- g.fillOval(334 + i*20, 44, 16,16);
- }
- else if (yewPositions[i] == treeStatus.BROWN)
- {
- g.setColor(new Color(255,255,255));
- g.fillOval(334 + i*20, 44, 16,16);
- g.setColor(Color.BLACK);
- int temp = (int)((System.currentTimeMillis() - treeTimer[i])/1000);
- drawCenteredString(temp + "", 334 + i*20 + 9, 56,g);
- }
- else if (yewPositions[i] == treeStatus.RED)
- {
- g.setColor(Color.RED);
- g.fillOval(334 + i*20, 44, 16,16);
- }
- if (i == currentTree)
- {
- if (treeSwitch && yewPositions[i] != treeStatus.BROWN)
- {
- g.setColor(Color.CYAN);
- }
- else
- {
- g.setColor(Color.BLACK);
- }
- g.drawOval(334 + i*20, 44, 16,16);
- }
- }
- g.setFont(new Font("Futura Hv", Font.BOLD, 14));
- g.setColor(new Color(255,255,255,255));
- g.drawString("Status: " + status, 334, 78);
- g.setFont(new Font("Futura Hv", Font.BOLD, 12));
- g.setColor(Color.CYAN);
- g.drawString("clvl: " + clvl + " lvl+: " + levelChange, 334, 89);
- g.drawString("xp+: " + xpChange + " xp/h: " + xpPerHour, 334, 100);
- g.drawString("ttL: " + tTL + " %tL: " + pTL + "%", 334, 111);
- g.drawString("logs: " + logs + " logs/h: " + lpH, 334,122);
- g.setColor(Color.BLACK);
- g.setFont(new Font("Futura Hv", Font.BOLD, 12));
- g.drawString("Runtime: " + time, 334, 144);
- }
- }
- String formatTime(int seconds)
- {
- return (((int)seconds / 3600 < 10 ? "0" : "") + (int)seconds / 3600 + ":" + ((int)seconds / 60 % 60 < 10 ? "0" : "") +(int)seconds / 60 % 60 + ":" + ((int)seconds % 60 < 10 ? "0" : "") + (int)seconds % 60);
- }
- public void drawCenteredString(String s, int x, int y, Graphics g)
- {
- FontMetrics fm = g.getFontMetrics();
- int xN = x - fm.stringWidth(s) / 2;
- g.drawString(s, xN, y);
- }
- int runControl()
- {
- if (!walking.isRunEnabled() && (walking.getEnergy() > random(20, 30)))
- {
- walking.setRun(true);
- return 500;
- }
- return 10;
- }
- public void onFinish()
- {
- log("Exiting...");
- }
- public int walkTileMMDirect(RSTile tt)
- {
- final int x1 = getMyPlayer().getLocation().getX();
- final int y1 = getMyPlayer().getLocation().getY();
- final int x = tt.getX() - x1;
- final int y = tt.getY() - y1;
- double angle = Math.atan2(y, x);
- int d = Math.min(calc.distanceTo(tt), random(9,20));
- RSTile tile = new RSTile(getMyPlayer().getLocation().getX() + (int)(d * Math.cos(angle)), getMyPlayer().getLocation().getY() + (int)(d * Math.sin(angle)));
- walking.walkTileMM(tile);
- return 200;
- }
- public int useBank()
- {
- try
- {
- if (bank.isOpen())
- {
- status = "Depositing";
- if (inventory.containsOneOf(hatchetID))
- {
- bank.depositAllExcept(hatchetID);
- }
- else
- {
- bank.depositAll();
- }
- }
- else
- {
- status = "Opening bank";
- //bank.open(); //damn thing sucks
- RSNPC banker = npcs.getNearest(494);
- if (banker != null)
- {
- banker.doAction("bank bank");
- }
- }
- }
- catch (Exception e)
- {
- log("useBank() error");
- e.printStackTrace();
- }
- return 1200;
- }
- public int goyews()
- {
- //(2793,3435)
- if (getMyPlayer().getLocation().getX() < 3186)
- {
- walkTileMMDirect(new RSTile(2757, 3431));
- }
- else
- {
- walkTileMMDirect(yewTiles[0]);
- }
- return 200;
- }
- public boolean atyews()
- {
- for (treeStatus tr : yewPositions)
- {
- if (tr == treeStatus.RED)
- {
- return false;
- }
- }
- return true;
- }
- public boolean atBank()
- {
- return calc.distanceTo(bankTile) < 3;
- }
- public int goBank()
- {
- walkTileMMDirect(bankTile);
- return 300;
- }
- public int chopyews()
- {
- try
- {
- if (calc.tileOnScreen(yewTiles[currentTree]) && calc.distanceTo(yewTiles[currentTree]) < 5)
- {
- if (yewPositions[currentTree] == treeStatus.GREEN)
- {
- if (getMyPlayer().getAnimation() == -1 || treeSwitch == true)
- {
- antiban();
- status = "Clicking tree";
- tiles.doAction(yewTiles[currentTree],"chop");
- treeSwitch = false;
- antiban();
- return 400;
- }
- else
- {
- antiban();
- status = "Chopping";
- return runControl();
- }
- }
- else
- {
- //wait
- status = "Waiting for spawn";
- return 100;
- }
- }
- else
- {
- status = "Moving to tree";
- antiban();
- walkTileMMDirect(waitTiles[currentTree]);
- antiban();
- return 400;
- }
- }
- catch (final Exception e)
- {
- log("chopyews() error, caught.");
- e.printStackTrace();
- }
- return random(600,600);
- }
- public int loop()
- {
- if (noHatchet)
- {
- log("No usable hatchet equiped or in inventory");
- return -1;
- }
- if (kill)
- {
- log("Shutdown message recieved");
- return -1;
- }
- getTreeStatus();
- int newTree = getCurrentTree();
- if (currentTree != newTree)
- {
- treeSwitch = true;
- currentTree = newTree;
- }
- if(atBank())
- {
- if(!inventory.isFull())
- {
- antiban();
- status = "Walking to yews";
- return goyews();
- }
- else
- {
- antiban();
- status = "Using bank";
- antiban();
- return useBank();
- }
- }
- else
- {
- if(!inventory.isFull())
- {
- if (!atyews())
- {
- return goyews();
- }
- return chopyews();
- }
- else
- {
- status = "Moving to bank";
- return goBank();
- }
- }
- }
- public void antiban() {
- int randomNum = random(1, 40);
- int r = random(1, 45);
- if (randomNum == 6) {
- if (r == 2) {
- status = "Using AntiBan|Open Random Tab";
- game.openTab(random(1, 14));
- }
- if (r == 3) {
- status = "Using AntiBan|Move Mouse";
- mouse.moveRandomly(50, 300);
- }
- if (r == 4) {
- status = "Using AntiBan|Move Mouse";
- mouse.moveRandomly(70, 380);
- }
- if (r == 5) {
- status = "Using AntiBan|Move Off Screen";
- mouse.moveOffScreen();
- }
- if (r == 6) {
- status = "Using AntiBan|Move Off Screen";
- mouse.moveOffScreen();
- }
- if (r == 7) {
- status = "Using AntiBan|Rotate Camera";
- camera.setAngle(random(100, 120));
- }
- if (r == 8) {
- status = "Using AntiBan|Rotate Camera";
- camera.setAngle(random(190, 230));
- }
- if (r == 9) {
- status = "Using AntiBan|Rotate Camera";
- camera.setAngle(random(150, 180));
- }
- if (r == 10) {
- status = "Using AntiBan|Rotate Camera";
- camera.setAngle(random(250, 260));
- }
- if (r == 11) {
- status = "Using AntiBan|Open Skill Tab";
- if (game.getCurrentTab() != 4) {
- game.openTab(4);
- } else return;
- }
- if (r == 35) {
- status = "Using AntiBan|Move Mouse To Woodutting Skill";
- if (game.getCurrentTab() != 1) {
- game.openTab(1);
- sleep(random(3072, 8209));
- mouse.move(random(680, 730), random(355, 370));
- sleep(random(3072, 75));
- }
- }
- }
- }
- boolean checkIfTreeID(int id)
- {
- for (int i : yewTreeIDs)
- {
- if (id == i)
- {
- return true;
- }
- }
- return false;
- }
- void getTreeStatus()
- {
- for (int i = 0;i < yewTiles.length;i++)
- {
- if (calc.distanceTo(yewTiles[i]) < 24)
- {
- RSObject obj = objects.getTopAt(yewTiles[i]);
- if (obj != null)
- {
- if (checkIfTreeID(obj.getID()))
- {
- yewPositions[i] = treeStatus.GREEN;
- }
- else if(obj.getID() == yewTreeStumpID)
- {
- if (yewPositions[i] == treeStatus.GREEN)
- {
- treeTimer[i] = System.currentTimeMillis();
- }
- yewPositions[i] = treeStatus.BROWN;
- }
- }
- else
- {
- yewPositions[i] = treeStatus.RED;
- }
- }
- else
- {
- yewPositions[i] = treeStatus.RED;
- }
- }
- }
- int getCurrentTree()
- {
- //don't change if current tree is fine
- if (yewPositions[currentTree] == treeStatus.GREEN)
- {
- return currentTree;
- }
- //find a green tree first
- int lowestDist = -1;
- for (int i = 0;i < yewTiles.length; i++)
- {
- if (yewPositions[i] == treeStatus.GREEN)
- {
- lowestDist = i;
- }
- }
- if (lowestDist != -1)
- {
- //use GREEN ones first
- for (int i = 0;i < yewTiles.length; i++)
- {
- if (yewPositions[i] == treeStatus.GREEN)
- {
- if (calc.distanceTo(yewTiles[i]) < calc.distanceTo(yewTiles[lowestDist]))
- {
- lowestDist = i;
- }
- }
- }
- return lowestDist;
- }
- //then check for highest timer.NO GREEN TREES SHOULD BE LEFT
- int highestTimer = 0;
- for (int i = 0;i < yewTiles.length; i++)
- {
- long time = System.currentTimeMillis() - treeTimer[i];
- long htime = System.currentTimeMillis() - treeTimer[highestTimer];
- if (time > htime)
- {
- highestTimer = i;
- }
- }
- return highestTimer;
- }
- public void serverMessageRecieved(ServerMessageEvent e)
- {
- String message = e.getMessage();
- if (message.contains("do not have a hatchet"))
- {
- noHatchet = true;
- }
- if (message.contains("some yew logs"))
- {
- logs++;
- }
- if (message.contains("too full"))
- {
- if (inventory.getCount() == 0 && inventory.isFull() == false)
- {
- log("Rsbot is miscounting inventory, exiting");
- kill = true;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement