Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package OakChopperMule;
- import java.awt.*;
- import java.io.*;
- import org.osbot.rs07.api.model.Player;
- import org.osbot.rs07.api.ui.Message;
- import org.osbot.rs07.script.Script;
- import org.osbot.rs07.script.ScriptManifest;
- import org.osbot.rs07.api.map.Area;
- @ScriptManifest(author = "Magarac", info = "Oak Mule", name = "OakChopperMule", version = 1.0, logo = "")
- public class OakChopperMule extends Script {
- private long startTime;
- private String state;
- private String signalIn;
- private long itemStart = 0;
- private long itemNew = 0;
- private enum State { READ, LOGIN, WALK, TRADE, WAIT }
- private State getState() {
- if (!read) {
- return State.READ;
- }
- if (read && !getClient().isLoggedIn()) {
- return State.LOGIN;
- }
- if (getClient().isLoggedIn() && !meetupSpot.contains(myPlayer())) {
- return State.WALK;
- }
- if (getClient().isLoggedIn() && meetupSpot.contains(myPlayer()) && !traded) {
- return State.WAIT;
- }
- if (getClient().isLoggedIn() && meetupSpot.contains(myPlayer()) && traded) {
- return State.TRADE;
- }
- return State.WAIT;
- }
- private String user; // PARAM EXAMPLE: -script SCRIPTNAME:user-pass-itemToTrade-textFile-bot1-bot2-bot3-bot4
- private String pass;
- private String textFile;
- private String bot1;
- private String bot2;
- private String bot3;
- private String bot4;
- private Area meetupSpot = new Area(3146, 3479, 3154, 3474); // this is a spot just south east of G.E., can change if want.ok,
- private boolean read = false;
- private boolean traded = false;
- LoginEvent loginEvent; // now this is gut
- @Override
- public void onStart(){
- // sets params
- user = getParameters().split("-")[0];
- pass = getParameters().split("-")[1];
- textFile = getParameters().split("-")[2];
- bot1 = getParameters().split("-")[3];
- bot2 = getParameters().split("-")[4];
- bot3 = getParameters().split("-")[5];
- bot4 = getParameters().split("-")[6];
- // time
- startTime = System.currentTimeMillis();
- // message listener
- getBot().addMessageListener(this);
- }
- @Override
- public int onLoop() throws InterruptedException {
- switch (getState()) {
- case READ:
- state = "Checking file for a signal.";
- ReadFromFile();
- break;
- case LOGIN:
- state = "Logging in.";
- // login event
- loginEvent = new LoginEvent(user, pass);
- getBot().addLoginListener(loginEvent);
- execute(loginEvent);
- break;
- case WALK:
- state = "Walking to meet-up spot.";
- getWalking().webWalk(meetupSpot);
- break;
- case TRADE:
- itemStart = getInventory().getAmount("Oak logs");
- @SuppressWarnings("unchecked") Player trader = getPlayers().closest(player -> player != null && player.isInteracting(myPlayer()) && player.getName().equals(bot1) ||
- player.getName().equals(bot2) || player.getName().equals(bot3) || player.getName().equals(bot4));
- if (!trade.isCurrentlyTrading()) {
- state = "Trading with a bot.";
- trader.interact("Trade with");
- new org.osbot.rs07.utility.ConditionalSleep(20000) {
- @Override
- public boolean condition() throws InterruptedException {
- return trade.isCurrentlyTrading();
- }
- }.sleep();
- }
- else {
- if (trade.isFirstInterfaceOpen()) {
- new org.osbot.rs07.utility.ConditionalSleep(20000) {
- @Override
- public boolean condition() throws InterruptedException {
- return trade.getTheirOffers().contains("Oak logs");
- }
- }.sleep();
- if (trade.getTheirOffers().contains("Oak logs")) {
- trade.acceptTrade();
- new org.osbot.rs07.utility.ConditionalSleep(20000) {
- @Override
- public boolean condition() throws InterruptedException {
- return trade.isSecondInterfaceOpen();
- }
- }.sleep();
- }
- }
- else if (trade.isSecondInterfaceOpen()) {
- trade.acceptTrade();
- new org.osbot.rs07.utility.ConditionalSleep(20000) {
- @Override
- public boolean condition() throws InterruptedException {
- return !trade.isCurrentlyTrading();
- }
- }.sleep();
- }
- if (!trade.isCurrentlyTrading()) {
- itemNew = getInventory().getAmount("Oak logs");
- }
- if (itemNew > itemStart) {
- state = "Done trading with mule, logging out.";
- WriteToFile();
- getLogoutTab().logOut();
- read = false;
- signalIn = null;
- traded = false;
- sleep(600);
- }
- }
- break;
- case WAIT:
- state = "Waiting.";
- // got to add some kind of timer that waits 5 minutes else logs
- sleep(200);
- break;
- }
- // once done, this will refresh every 15 seconds while reading, or .2 seconds when trading
- if (!read) {
- state = "Checking file for a signal.";
- return 15000; // seconds to wait before reading file, can increase decrease as you like.
- }
- else {
- return 200;
- }
- }
- private void WriteToFile() throws InterruptedException {
- // name of file to open
- String fileName = textFile;
- try {
- // using filewriter, declaring a new one
- FileWriter fileWriter =
- new FileWriter(new File("C:\\Users\\drew\\OSBot\\Data", fileName));
- // wrapping in bufferedfilter
- BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
- // writing
- bufferedWriter.write("");
- // closing the file
- bufferedWriter.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private void ReadFromFile() throws InterruptedException {
- // name of file to open
- String fileName = textFile;
- // string to read
- String line = null;
- try {
- // using filereader, declaring a new one
- FileReader fileReader =
- new FileReader(new File("C:\\Users\\drew\\OSBot\\Data", fileName));
- // wrapping in bufferedfilter
- BufferedReader bufferedReader = new BufferedReader(fileReader);
- // reading
- while((line = bufferedReader.readLine()) != null) {
- signalIn = line;
- }
- if (signalIn != null && signalIn.equals("ready")) { // this is the signal the bot will send, can change if want
- read = true;
- }
- // closing the file
- bufferedReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onMessage(Message msg) throws InterruptedException {
- if (msg.getType().equals(Message.MessageType.RECEIVE_TRADE)) {
- traded = true;
- }
- }
- @Override
- public void onPaint(final Graphics2D g) {
- Point mP = getMouse().getPosition();
- g.drawLine(mP.x - 5, mP.y + 5, mP.x + 5, mP.y - 5);
- g.drawLine(mP.x + 5, mP.y + 5, mP.x - 5, mP.y - 5);
- Font font1 = new Font("Sans-Serif", Font.BOLD, 12);
- g.setFont(font1);
- g.setColor(Color.WHITE);
- g.drawString("Mule: " + state, 18, 280);
- g.drawString("" + formatTime(System.currentTimeMillis() - startTime), 18, 300);
- }
- public void onExit() throws InterruptedException {}
- // Converts ms to a timestamp
- private String formatTime(long ms) {
- long s = ms / 1000, m = s / 60, h = m / 60, d = h / 24;
- s %= 60;
- m %= 60;
- h %= 24;
- return d > 0 ? String.format("%02d:%02d:%02d:%02d", d, h, m, s) :
- h > 0 ? String.format("%02d:%02d:%02d", h, m, s) :
- String.format("%02d:%02d", m, s);
- }
- // Converts a value to m or k
- @SuppressWarnings("unused")
- private String formatValue(long v) { //an issue or shall I just surpress? no issure unless I accidentally hit a key? I think its fine.
- return (v > 1_000_000) ? String.format("%.2fm", (double) (v / 1_000_000)) :
- (v > 1000) ? String.format("%.1fk", (double) (v / 1000)) :
- v + "";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement