Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.rsbot.event.events.MessageEvent;
- import org.rsbot.event.listeners.MessageListener;
- import org.rsbot.event.listeners.PaintListener;
- import org.rsbot.script.Script;
- import org.rsbot.script.ScriptManifest;
- import org.rsbot.script.methods.Skills;
- import org.rsbot.script.wrappers.RSNPC;
- import org.rsbot.script.wrappers.RSObject;
- import org.rsbot.script.wrappers.RSTile;
- import java.awt.*;
- @ScriptManifest(authors = {"lord_qaz"}, name = "yewMurderGE", version = 3.0, description = "Chops yews at GE")
- public class yewMurderGE extends Script implements PaintListener, MessageListener
- {
- final double cVer = getClass().getAnnotation(ScriptManifest.class).version();
- final String cName = getClass().getAnnotation(ScriptManifest.class).name();
- int startStatLvl;
- int startXp;
- int logs = 0;
- String status = "Starting up";
- long startTime = System.currentTimeMillis();
- RSTile geTile = new RSTile(3188, 3491);
- RSTile bankTile = new RSTile(3185, 3477);
- RSTile yewTiles[] = {new RSTile(3205, 3504), new RSTile(3210, 3504), new RSTile(3222, 3503)};
- RSTile waitTiles[] = {new RSTile(3207, 3503), new RSTile(3208, 3503), new RSTile(3221, 3501)};
- int hatchetID[] = {1351,1349,1361,1355,1357,1359,1353,6739};
- int currentTree;
- boolean noHatchet = false;
- boolean kill = false;
- boolean treeSwitch = false;
- boolean atGrandExchange = false;
- long treeTimer[] = new long[yewTiles.length];
- enum treeStatus
- {
- GREEN, BROWN, RED
- }
- treeStatus yewPositions[] = new treeStatus[yewTiles.length];
- public boolean onStart()
- {
- log("Starting yewMurder");
- startStatLvl = skills.getCurrentLevel(Skills.WOODCUTTING);
- startXp = skills.getCurrentExp(Skills.WOODCUTTING);
- 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(Skills.WOODCUTTING) - startStatLvl;
- int xpChange = skills.getCurrentExp(Skills.WOODCUTTING) - startXp;
- int clvl = skills.getCurrentLevel(Skills.WOODCUTTING);
- 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(Skills.WOODCUTTING) / (xpChange / millis)) / 1000)) : formatTime(0);
- String pTL = "" + skills.getPercentToNextLevel(Skills.WOODCUTTING);
- //paint
- g.setColor(Color.WHITE);
- g.setFont(new Font("Arial", Font.BOLD, 14));
- g.drawString(cName + " v" + cVer + " ", 334, 33);
- g.setFont(new Font("Arial", Font.PLAIN, 11));
- //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(85,60,60));
- g.fillOval(334 + i*20, 44, 16,16);
- g.setColor(Color.WHITE);
- 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.YELLOW);
- }
- g.drawOval(334 + i*20, 44, 16,16);
- }
- }
- g.setFont(new Font("zurich ex bt", Font.BOLD, 11));
- g.setColor(new Color(255,255,255,255));
- g.drawString("Status: " + status, 334, 78);
- g.setFont(new Font("zurich ex bt", Font.PLAIN, 11));
- g.setColor(Color.ORANGE);
- 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.YELLOW);
- g.setFont(new Font("zurich ex bt", Font.BOLD, 11));
- g.drawString("Runtime: " + time, 334, 144);
- }
- }
- String formatTime(int seconds)
- {
- return ((seconds / 3600 < 10 ? "0" : "") + seconds / 3600 + ":" + (seconds / 60 % 60 < 10 ? "0" : "") + seconds / 60 % 60 + ":" + (seconds % 60 < 10 ? "0" : "") + 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 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(3418);
- if (banker != null)
- {
- banker.interact("bank benutzen");
- }
- }
- }
- catch (Exception e)
- {
- log("useBank() error");
- e.printStackTrace();
- }
- return 1200;
- }
- public int goYews()
- {
- //(3190,3488)
- if (getMyPlayer().getLocation().getX() < geTile.getX() && atGrandExchange)
- {
- walking.walkTileMM(new RSTile(3193, 3488));
- if(calc.distanceTo(geTile) <= 3) {
- atGrandExchange = false;
- }
- }
- else
- {
- walking.walkTileMM(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 boolean atGEEntrance()
- {
- return calc.distanceTo(geTile) <= 3;
- }
- public int goBank()
- {
- if(!atGEEntrance() && !atGrandExchange) {
- walking.walkTileMM(geTile);
- } else {
- atGrandExchange = true;
- walking.walkTileMM(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)
- {
- status = "Clicking tree";
- objects.getTopAt(yewTiles[currentTree]).interact("Fällen");
- treeSwitch = false;
- return 400;
- }
- else
- {
- status = "Chopping";
- return runControl();
- }
- }
- else
- {
- //wait
- status = "Waiting for spawn";
- return 100;
- }
- }
- else
- {
- status = "Moving to tree";
- walking.walkTileMM(waitTiles[currentTree]);
- return 400;
- }
- }
- catch (final Exception e)
- {
- log("chopYews() error, caught.");
- e.printStackTrace();
- }
- return 600;
- }
- public int loop()
- {
- if (noHatchet)
- {
- log("No usable hatchet equipped or in inventory");
- return -1;
- }
- if (kill)
- {
- log("Shutdown message received");
- return -1;
- }
- getTreeStatus();
- int newTree = getCurrentTree();
- if (currentTree != newTree)
- {
- treeSwitch = true;
- currentTree = newTree;
- }
- if(atBank())
- {
- if(!inventory.isFull())
- {
- status = "Walking to yews";
- return goYews();
- }
- else
- {
- status = "Using bank";
- return useBank();
- }
- }
- else
- {
- if(!inventory.isFull())
- {
- if (!atYews())
- {
- return goYews();
- }
- return chopYews();
- }
- else
- {
- status = "Moving to bank";
- return goBank();
- }
- }
- }
- 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 && obj.getName().equals("Eibenbaum"))
- {
- if (obj.hasAction("Fällen"))
- {
- yewPositions[i] = treeStatus.GREEN;
- }
- else
- {
- 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;
- break;
- }
- }
- 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 messageReceived(MessageEvent e)
- {
- String message = e.getMessage();
- if (message.contains("eine Axt, um diesen Baum zu fällen"))
- {
- noHatchet = true;
- }
- if (message.contains("Du erhältst einige"))
- {
- logs++;
- }
- if (message.contains("too full"))
- {
- if (inventory.getCount() == 0 && !inventory.isFull())
- {
- log("Dein Inventar ist voll");
- kill = true;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement