Skip to content

Instantly share code, notes, and snippets.

@lordgmage
Created December 17, 2015 21:18
Show Gist options
  • Save lordgmage/5522f0b3d451cf5b3e0a to your computer and use it in GitHub Desktop.
Save lordgmage/5522f0b3d451cf5b3e0a to your computer and use it in GitHub Desktop.
William
package org.parabot.lord.lordwoodcutting.data;
public class Constants {
public final static int NORMAL = 1276;
public final static int OAKS = 1281;
public final static int TEAK = 9036;
public final static int WILLIOWS = 1308;
public final static int MAHOGANY = 9034;
public final static int YEWS = 1309;
public final static int MAGIC = 1306;
public final static int DEPOSIT = 9398;
public final static int CLOSE = 233;
public final static int RESTING = 1353;
public final static int MONEY = 996;
public final static int RUNE_AXE = 1359;
}
package org.parabot.lord.lordwoodcutting.data;
public class Variables {
public static int tree;
public static boolean dropping;
public static boolean deposit;
public static boolean auto;
public static boolean cutting;
public static boolean upgrade;
private static String currentStatus;
public static int getTree() {
return tree;
}
public static boolean getDropping() {
return dropping;
}
public static boolean getCutting() {
return cutting;
}
public static boolean getDeposit() {
return deposit;
}
public static boolean getUpgrade() { return upgrade;}
public static boolean getAuto() {
return auto;
}
public static String getCurrentStatus() {
return currentStatus;
}
public static void setDropping(boolean dropping) {
Variables.dropping = dropping;
}
public static void setDeposit(boolean deposit) {
Variables.deposit = deposit;
}
public static void setUpgrade(boolean upgrade) {
Variables.upgrade = upgrade;
}
public static void setCutting(boolean cutting) {
Variables.cutting = cutting;
}
public static void setAuto(boolean auto) {
Variables.auto = auto;
}
public static void setCurrentStatus(String currentStatus) {
Variables.currentStatus = currentStatus;
}
}
package org.parabot.lord.lordwoodcutting.main;
import org.parabot.environment.api.interfaces.Paintable;
import org.parabot.environment.api.utils.Timer;
import org.parabot.environment.scripts.Category;
import org.parabot.environment.scripts.Script;
import org.parabot.environment.scripts.ScriptManifest;
import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.lord.lordwoodcutting.data.Variables;
import org.parabot.lord.lordwoodcutting.strategies.*;
import javax.imageio.ImageIO;
import java.awt.*;
import java.io.IOException;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.ArrayList;
@ScriptManifest(author = "Lord",
category = Category.WOODCUTTING,
description = "Cuts logs and drops them",
name = "Lord Woodcutting Pro",
servers = { "PKHonor" },
version = 1)
public class Core extends Script implements Paintable{
private final ArrayList<Strategy> strategies = new ArrayList<Strategy>();
private final Color color1 = new Color(255, 255, 255);
private final Color color2 = new Color(0, 0, 0);
private final Font font1 = new Font("Chalkboard", 0, 15);
private final Image img1 = getImage("http://i.imgur.com/lz3pONl.png");
public static int MoneyMade;
private Timer scriptTimer;
DecimalFormat formatter = new DecimalFormat("#,###,###,###,###");
@Override
public boolean onExecute() {
Variables.setCurrentStatus("Setting up");
UI GUI = new UI();
GUI.setVisible(true);
while (GUI.isVisible()) {
sleep(20);
}
System.out.println("Made with help from Legacy");
scriptTimer = new Timer();
//strategies.add(new CutAuto());
strategies.add(new Deposit());
strategies.add(new Cut());
strategies.add(new Dropping());
strategies.add(new Upgrading());
provide(strategies);
return true;
}
@Override
public void onFinish() {
super.onFinish();
}
private Image getImage(String url) {
try {
return ImageIO.read(new URL(url));
} catch(IOException e) {
return null;
}
}
@Override
public void paint(Graphics g1) {
Graphics2D g = (Graphics2D)g1;
g.drawImage(img1, 1, 294, null);
g.setFont(font1);
g.setColor(color2);
g.drawString(scriptTimer.toString(), 169, 387);
g.drawString(formatter.format(MoneyMade), 166, 406);
g.drawString(Variables.getCurrentStatus(), 333, 386);
g.drawString("Waiting for hook", 320, 407);
}
}
package org.parabot.lord.lordwoodcutting.main;
import com.sun.org.apache.xpath.internal.operations.Variable;
import org.parabot.lord.lordwoodcutting.data.Constants;
import org.parabot.lord.lordwoodcutting.data.Variables;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class UI extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UI frame = new UI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public UI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 303, 365);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblLordPlanking = new JLabel("Lord Woodcutting Pro");
lblLordPlanking.setHorizontalAlignment(SwingConstants.CENTER);
lblLordPlanking.setFont(new Font("Arial Black", Font.BOLD, 20));
lblLordPlanking.setBounds(0, 0, 287, 93);
contentPane.add(lblLordPlanking);
final JCheckBox Deposit = new JCheckBox("Deposit");
Deposit.setBounds(109, 157, 140, 23);
contentPane.add(Deposit);
final JCheckBox chckbxDropAll = new JCheckBox("Drop All");
chckbxDropAll.setBounds(109, 195, 140, 23);
contentPane.add(chckbxDropAll);
final JCheckBox Auto = new JCheckBox("Auto");
Auto.setBounds(109, 225, 140, 23);
contentPane.add(Auto);
final JComboBox LogSelect = new JComboBox();
LogSelect.setModel(new DefaultComboBoxModel(new String[] {"Normal", "Oaks", "Willow", "Teak", "Mahogany", "Yew", "Magic"}));
LogSelect.setBounds(84, 104, 114, 20);
contentPane.add(LogSelect);
final JButton Start = new JButton("Start");
Start.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String selection = (String) LogSelect.getModel().getSelectedItem();
switch (selection) {
case "Normal":
Variables.tree = Constants.NORMAL;
break;
case "Oaks":
Variables.tree = Constants.OAKS;
break;
case "Mahogany":
Variables.tree = Constants.MAHOGANY;
break;
case "Willow":
Variables.tree = Constants.WILLIOWS;
break;
case "Teak":
Variables.tree = Constants.TEAK;
break;
case "Yew":
Variables.tree = Constants.YEWS;
break;
case "Magic":
Variables.tree = Constants.MAGIC;
break;
default:
System.out.println("Something wrong as happened please contact the script writers.");
break;
}
if (Deposit.isSelected()){
Variables.setDeposit(true);
Variables.setCutting(true);
}
if (chckbxDropAll.isSelected()){
Variables.setDropping(true);
}
if (Auto.isSelected()){
Variables.setAuto(true);
}
setVisible(false);
}
});
Start.setBounds(10, 308, 209, 23);
contentPane.add(Start);
}
}
package org.parabot.lord.lordwoodcutting.strategies;
import org.parabot.environment.api.utils.Time;
import org.parabot.environment.scripts.framework.SleepCondition;
import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.lord.lordwoodcutting.data.Constants;
import org.parabot.lord.lordwoodcutting.data.Variables;
import org.rev317.min.api.methods.Inventory;
import org.rev317.min.api.methods.Players;
import org.rev317.min.api.methods.SceneObjects;
import org.rev317.min.api.wrappers.SceneObject;
public class Cut implements Strategy {
public boolean activate() {
return !Inventory.isFull() && Players.getMyPlayer().getAnimation() == -1 || Players.getMyPlayer().getAnimation() == Constants.RESTING && Variables.auto == false && Variables.cutting == true;
}
public void execute() {
Variables.setCurrentStatus("Cutting the tree master");
SceneObject[] TREE_ID = SceneObjects.getNearest(Variables.tree);
if (TREE_ID.length > 0 && TREE_ID != null) {
if (Players.getMyPlayer().getAnimation() == -1) {
TREE_ID[0].interact(SceneObjects.Option.CHOP_DOWN);
}
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isFull();
}
}, 1000);
}
}
}
package org.parabot.lord.lordwoodcutting.strategies;
import org.parabot.environment.api.utils.Time;
import org.parabot.environment.scripts.framework.SleepCondition;
import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.lord.lordwoodcutting.data.Constants;
import org.parabot.lord.lordwoodcutting.data.Variables;
import org.rev317.min.api.methods.Inventory;
import org.rev317.min.api.methods.Players;
import org.rev317.min.api.methods.SceneObjects;
import org.rev317.min.api.methods.Skill;
import org.rev317.min.api.wrappers.SceneObject;
public class CutAuto implements Strategy {
public boolean activate() {
return !Inventory.isFull() && Players.getMyPlayer().getAnimation() == -1 || Players.getMyPlayer().getAnimation() == Constants.RESTING
&& Variables.auto == true && Variables.cutting == false;
}
public void execute() {
SceneObject[] TREE_ID = SceneObjects.getNearest(Variables.tree);
Variables.setCurrentStatus("Cutting the tree master");
if (Skill.WOODCUTTING.getLevel() <= 19){
Variables.tree = Constants.NORMAL;
}
if (Skill.WOODCUTTING.getLevel() >= 20 && Skill.WOODCUTTING.getLevel() <= 49 ){
Variables.tree = Constants.OAKS;
}
if (Skill.WOODCUTTING.getLevel() >= 50){
Variables.tree = Constants.MAHOGANY;
}
if (Skill.WOODCUTTING.getLevel() >= 80){
Variables.setDeposit(true);
Variables.setDropping(false);
}
if (TREE_ID.length > 0 && TREE_ID != null) {
if (Players.getMyPlayer().getAnimation() == -1) {
TREE_ID[0].interact(SceneObjects.Option.CHOP_DOWN);
}
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isFull();
}
},10000);
}
}
}
package org.parabot.lord.lordwoodcutting.strategies;
import org.parabot.environment.api.utils.Time;
import org.parabot.environment.scripts.framework.SleepCondition;
import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.lord.lordwoodcutting.data.Constants;
import org.parabot.lord.lordwoodcutting.data.Variables;
import org.parabot.lord.lordwoodcutting.main.Core;
import org.rev317.min.api.methods.*;
import org.rev317.min.api.wrappers.SceneObject;
public class Deposit implements Strategy {
@Override
public boolean activate() {
return Variables.deposit == true && Inventory.isFull();
}
@Override
public void execute() {
// if (Skill.WOODCUTTING.getLevel() < 80){
// System.out.println("You do not have the required level to deposit");
// Variables.setDropping(true);
// Variables.setDeposit(false);
// }
Variables.setCurrentStatus("I'm banking this for you");
SceneObject[] DepositBox = SceneObjects.getNearest(Constants.DEPOSIT);
if (DepositBox.length > 0 && DepositBox != null) {
DepositBox[0].interact(SceneObjects.Option.DEPOSIT);
}
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Bank.isOpen();
}
}, 2500);
Menu.sendAction(646, 7954, 16, 23412);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isEmpty();
}
}, 2500);
Menu.clickButton(200);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return !Bank.isOpen();
}
}, 2500);
Core.MoneyMade += 28 * 35000;
}
}
package org.parabot.lord.lordwoodcutting.strategies;
import org.parabot.environment.api.utils.Time;
import org.parabot.environment.input.Keyboard;
import org.parabot.environment.scripts.framework.SleepCondition;
import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.lord.lordwoodcutting.data.Variables;
import org.rev317.min.api.methods.Game;
import org.rev317.min.api.methods.Inventory;
import org.rev317.min.api.methods.Menu;
import org.rev317.min.api.methods.Players;
public class Dropping implements Strategy{
@Override
public boolean activate() {
return Inventory.isFull() && Players.getMyPlayer().getAnimation() == -1 && Variables.dropping == true || Variables.auto == true;
}
@Override
public void execute() {
if(Inventory.isFull()) {
System.out.print("Dropping");
Variables.setCurrentStatus("Dropping all the goodies");
Keyboard.getInstance().sendKeys("::empty");
Time.sleep(1500);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isEmpty();
}
}, 2000);
}
if (Game.getOpenBackDialogId() == 4272){
Menu.sendAction(679,1094653498,144,4275);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isEmpty();
}
},2000);
}
}
}
package org.parabot.lord.lordwoodcutting.strategies;
import org.parabot.environment.api.utils.Time;
import org.parabot.environment.input.Keyboard;
import org.parabot.environment.scripts.framework.SleepCondition;
import org.parabot.environment.scripts.framework.Strategy;
import org.parabot.lord.lordwoodcutting.data.Constants;
import org.parabot.lord.lordwoodcutting.data.Variables;
import org.rev317.min.Loader;
import org.rev317.min.api.methods.*;
import org.rev317.min.api.wrappers.Npc;
public class Upgrading implements Strategy {
@Override
public boolean activate() {
return Skill.WOODCUTTING.getLevel() == 50 && Variables.auto == true && Variables.upgrade == true ;
}
@Override
public void execute() {
Npc[] DWARF = Npcs.getNearest(594);
Keyboard.getInstance().sendKeys("::Shops");
Time.sleep(5000);
Bank.open();
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Bank.isOpen();
}
}, 6000);
Menu.sendAction(646,379,9,23412);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isEmpty();
}
},2000);
Menu.sendAction(53, Constants.MONEY, Upgrading.getBankSlot(Constants.MONEY), 5382, 3);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.contains(Constants.MONEY);
}
},2000);
if (DWARF.length > 0 && DWARF !=null){
DWARF[0].interact(Npcs.Option.FIRST);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Game.getOpenInterfaceId() == 3824;
}
},2500);
Menu.sendAction(78,Constants.RUNE_AXE,11,3900);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.contains(Constants.RUNE_AXE);
}
},2500);
Menu.clickButton(200);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Game.getOpenInterfaceId() != 3824;
}
},2500);
Inventory.getItem(Constants.RUNE_AXE).interact(Items.Option.FIRST);
Bank.open();
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Bank.isOpen();
}
},6000);
Menu.sendAction(646,379,9,23412);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Inventory.isEmpty();
}
},3000);
Menu.clickButton(200);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return !Bank.isOpen();
}
},2500);
Menu.clickButton(1170);
Time.sleep(new SleepCondition() {
@Override
public boolean isValid() {
return Game.getOpenBackDialogId() == 2492;
}
},4000);
Menu.clickButton(2495);
Time.sleep(5000);
}
}
public static int getBankSlot ( int id){
int[] bankIds = Loader.getClient().getInterfaceCache()[5382].getItems();
for (int i = 0; i < bankIds.length; i++) {
if (bankIds[i] == id) {
return i;
}
}
return 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment