import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import org.rsbot.script.Script; import org.rsbot.script.ScriptManifest; import org.rsbot.script.wrappers.*; import org.rsbot.event.events.MessageEvent; import org.rsbot.event.listeners.MessageListener; import org.rsbot.event.listeners.PaintListener; @ScriptManifest(authors = "Elite92", keywords = "Power chops willows", name = "EliteChopper", version = 1, description = "Power chops willows") public class EliteChopper extends Script implements PaintListener, MessageListener{ public int[] hatchets = {1349, 1351, 13523, 1355, 1357, 1359, 6739}; public int[] willowTree = {5551, 5552, 5553}; public int willowLog = 1519; long startTime; int startXp = 0; int expGained = 0; int logsCut = 0; public boolean onStart() { startTime = System.currentTimeMillis(); startXp = skills.getCurrentExp(skills.WOODCUTTING); log("Welcome to Test."); return true; } public int loop() { if(inventory.isFull()) { inventory.dropAllExcept(hatchets); }else{ if(getMyPlayer().getAnimation() != 867){ RSObject tree = objects.getNearest(willowTree); if(tree != null){ tree.doAction("Chop"); sleep(500, 800); } } } return random(500, 800); } public void onFinish() { log("You gained:" + expGained + " exp"); log("Goodbye"); } @Override public void onRepaint(final Graphics g) { //START: Code generated using Enfilade's Easel final Color color1 = new Color(102, 0, 102, 185); final Color color2 = new Color(0, 0, 0); final BasicStroke stroke1 = new BasicStroke(1); final Font font1 = new Font("Lucida Handwriting", 1, 19); final Font font2 = new Font("Arial", 1, 14); long expGained = skills.getCurrentExp(skills.WOODCUTTING) - startXp; int xpTilLevel = skills.getExpToNextLevel(skills.WOODCUTTING); long millis = System.currentTimeMillis() - startTime; long hours = millis / (1000 * 60 * 60); millis -= hours * (1000 * 60 *60); long minutes = millis / (1000 * 60); millis -= minutes * (1000 * 60); long seconds = millis / 1000; float xpsec = 0; if((minutes > 0 || hours > 0 || seconds > 0) && expGained > 0) { xpsec = ((float)expGained)/(float)(seconds + (minutes * 60)+ hours * 60 *60); } float xpmin = xpsec * 60; float xpHour = xpmin * 60; float logsec = 0; if((minutes > 0 || hours > 0 || seconds > 0) && logsCut > 0) { xpsec = ((float)logsCut)/(float)(seconds + (minutes * 60)+ hours * 60 *60); } float logmin = xpsec * 60; float logHour = xpmin * 60; Graphics2D g1 = (Graphics2D)g; g1.setColor(color1); g1.fillRect(9, 347, 486, 110); g1.setColor(color2); g1.setStroke(stroke1); g1.drawRect(9, 347, 486, 110); g1.setFont(font1); g1.drawString("Elite Bots ", 11, 368); g1.setFont(font2); g1.drawString("Runtime:" + hours + ":" + minutes + ":" + seconds, 40, 391); g1.drawString("Exp Gained:" + (int)expGained, 39, 410); g1.drawString("Exp/h:" + (int)xpHour, 40, 429); g1.drawString("Logs Cut:" + (int)logsCut, 194, 390); g1.drawString("Logs/h:" + (int)logHour, 195, 408); g1.drawString("Xp Til Level:" + xpTilLevel, 193, 428); } //END: Code generated using Enfilade's Easel @Override public void messageReceived(MessageEvent e) { String txt = e.getMessage(); if(txt.contains("logs")){ logsCut++; } } }