Advertisement
Guest User

MuleCode

a guest
Mar 31st, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.00 KB | None | 0 0
  1. import java.awt.*;
  2. import java.io.*;
  3. import org.osbot.rs07.api.model.Player;
  4. import org.osbot.rs07.api.ui.Message;
  5. import org.osbot.rs07.script.Script;
  6. import org.osbot.rs07.script.ScriptManifest;
  7. import org.osbot.rs07.api.map.Area;
  8.  
  9. @ScriptManifest(author = "Magarac", info = "Bowstring Mule", name = "BSMule", version = 1.0, logo = "")
  10. public class BSMule extends Script {
  11.  
  12.     private long startTime;
  13.     private String state;
  14.     private String signalIn;
  15.     private long coinsStart = 0;
  16.     private long coinsNew = 0;
  17.  
  18.     private enum State { READ, LOGIN, WALK, TRADE, ACCEPT, WAIT }
  19.  
  20.     private State getState() {
  21.         if (!read) {
  22.             return State.READ;
  23.         }
  24.         if (read && !getClient().isLoggedIn()) {
  25.             return State.LOGIN;
  26.         }
  27.         if (getClient().isLoggedIn() && !meetupSpot.contains(myPlayer())) {
  28.             return State.WALK;
  29.         }
  30.         if (getClient().isLoggedIn() && meetupSpot.contains(myPlayer()) && !traded) {
  31.             return State.WAIT;
  32.         }
  33.         if (getClient().isLoggedIn() && meetupSpot.contains(myPlayer()) && traded) {
  34.             return State.TRADE;
  35.         }
  36.         if (trade.isCurrentlyTrading()) {
  37.             return State.ACCEPT;
  38.         }
  39.         return State.WAIT;
  40.     }
  41.  
  42.     private String user;
  43.     private String pass;
  44.     private String bot1;
  45.     private String bot2;
  46.     private String bot3;
  47.     private String bot4;
  48.  
  49.     private Area meetupSpot = new Area(3146, 3479, 3154, 3474);
  50.  
  51.     private boolean read = false;
  52.     private boolean traded = false;
  53.  
  54.     LoginEvent loginEvent;
  55.  
  56.     @Override
  57.     public void onStart(){
  58.         // sets params
  59.         user = getParameters().split("-")[0];
  60.         pass = getParameters().split("-")[1];
  61.         bot1 = getParameters().split("-")[2];
  62.         bot2 = getParameters().split("-")[3];
  63.         bot3 = getParameters().split("-")[4];
  64.         bot4 = getParameters().split("-")[5];
  65.         // time
  66.         startTime = System.currentTimeMillis();
  67.         // message listener
  68.         getBot().addMessageListener(this);
  69.     }
  70.  
  71.     @Override
  72.     public int onLoop() throws InterruptedException {
  73.         switch (getState()) {
  74.             case READ:
  75.                 state = "Checking file for a signal.";
  76.                 ReadFromFile();
  77.                 break;
  78.             case LOGIN:
  79.                 state = "Logging in.";
  80.                 // login event
  81.                 loginEvent = new LoginEvent(user, pass);
  82.                 getBot().addLoginListener(loginEvent);
  83.                 execute(loginEvent);
  84.                 break;
  85.             case WALK:
  86.                 state = "Walking to meet-up spot.";
  87.                 getWalking().webWalk(meetupSpot);
  88.                 break;
  89.             case TRADE:
  90.                 coinsStart = getInventory().getAmount("Coins");
  91.                 Player trader = getPlayers().closest(player -> player != null && player.isInteracting(myPlayer()) && player.getName().equals(bot1) ||
  92.                         player.getName().equals(bot2) || player.getName().equals(bot3) || player.getName().equals(bot4));
  93.                 if (!trade.isCurrentlyTrading()) {
  94.                     state = "Trading with a bot.";
  95.                     trader.interact("Trade with");
  96.                     new org.osbot.rs07.utility.ConditionalSleep(20000) {
  97.                         @Override
  98.                         public boolean condition() throws InterruptedException {
  99.                             return trade.isCurrentlyTrading();
  100.                         }
  101.                     }.sleep();
  102.                 }
  103.                 else {
  104.                     if (trade.isFirstInterfaceOpen()) {
  105.                         new org.osbot.rs07.utility.ConditionalSleep(20000) {
  106.                             @Override
  107.                             public boolean condition() throws InterruptedException {
  108.                                 return trade.getTheirOffers().contains("Coins");
  109.                             }
  110.                         }.sleep();
  111.                         if (trade.getTheirOffers().contains("Coins")) {
  112.                             trade.acceptTrade();
  113.                             new org.osbot.rs07.utility.ConditionalSleep(20000) {
  114.                                 @Override
  115.                                 public boolean condition() throws InterruptedException {
  116.                                     return trade.isSecondInterfaceOpen();
  117.                                 }
  118.                             }.sleep();
  119.                         }
  120.                     }
  121.                     else if (trade.isSecondInterfaceOpen()) {
  122.                         trade.acceptTrade();
  123.                         new org.osbot.rs07.utility.ConditionalSleep(20000) {
  124.                             @Override
  125.                             public boolean condition() throws InterruptedException {
  126.                                 return !trade.isCurrentlyTrading();
  127.                             }
  128.                         }.sleep();
  129.                     }
  130.                     if (!trade.isCurrentlyTrading()) {
  131.                         coinsNew = getInventory().getAmount("Coins");
  132.                     }
  133.                     if (coinsNew > coinsStart) {
  134.                         state = "Done trading with mule, logging out.";
  135.                         WriteToFile();
  136.                         getLogoutTab().logOut();
  137.                         read = false;
  138.                         signalIn = null;
  139.                         traded = false;
  140.                         sleep(600);
  141.                     }
  142.                 }
  143.                 break;
  144.             case WAIT:
  145.                 state = "Waiting.";
  146.                 // got to add some kind of timer that waits 5 minutes else logs
  147.                 sleep(200);
  148.                 break;
  149.         }
  150.         // once done, this will refresh every 15 seconds while reading, or .2 seconds when trading
  151.         if (!read) {
  152.             state = "Checking file for a signal.";
  153.             return 15000;
  154.         }
  155.         else {
  156.             return 200;
  157.         }
  158.     }
  159.  
  160.     private void WriteToFile() throws InterruptedException {
  161.         // name of file to open
  162.         String fileName = "bsfarm1.txt";
  163.         try {
  164.             // using filewriter, declaring a new one
  165.             FileWriter fileWriter =
  166.                     new FileWriter(new File("C:\\Users\\Faris\\OSBot\\Data", fileName));
  167.  
  168.             // wrapping in bufferedfilter
  169.             BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
  170.  
  171.             // writing
  172.             bufferedWriter.write("");
  173.  
  174.             // closing the file
  175.             bufferedWriter.close();
  176.         } catch (IOException e) {
  177.             e.printStackTrace();
  178.         }
  179.     }
  180.  
  181.     private void ReadFromFile() throws InterruptedException {
  182.         // name of file to open
  183.         String fileName = "bsfarm1.txt";
  184.         // string to read
  185.         String line = null;
  186.         try {
  187.             // using filereader, declaring a new one
  188.             FileReader fileReader =
  189.                     new FileReader(new File("C:\\Users\\Faris\\OSBot\\Data", fileName));
  190.  
  191.             // wrapping in bufferedfilter
  192.             BufferedReader bufferedReader = new BufferedReader(fileReader);
  193.  
  194.             // reading
  195.             while((line = bufferedReader.readLine()) != null) {
  196.                 signalIn = line;
  197.             }
  198.  
  199.             if (signalIn != null && signalIn.equals("ready")) {
  200.                 read = true;
  201.             }
  202.  
  203.             // closing the file
  204.             bufferedReader.close();
  205.         } catch (IOException e) {
  206.             e.printStackTrace();
  207.         }
  208.     }
  209.  
  210.     @Override
  211.     public void onMessage(Message msg) throws InterruptedException {
  212.         if (msg.getType().equals(Message.MessageType.RECEIVE_TRADE)) {
  213.             traded = true;
  214.         }
  215.     }
  216.  
  217.     @Override
  218.     public void onPaint(final Graphics2D g) {
  219.         Point mP = getMouse().getPosition();
  220.         g.drawLine(mP.x - 5, mP.y + 5, mP.x + 5, mP.y - 5);
  221.         g.drawLine(mP.x + 5, mP.y + 5, mP.x - 5, mP.y - 5);
  222.         Font font1 = new Font("Sans-Serif", Font.BOLD, 12);
  223.         g.setFont(font1);
  224.         g.setColor(Color.WHITE);
  225.         g.drawString("Mule: " + state, 18, 280);
  226.         g.drawString("" + formatTime(System.currentTimeMillis() - startTime), 18, 300);
  227.     }
  228.  
  229.     public void onExit() throws InterruptedException {}
  230.  
  231.     // Converts ms to a timestamp
  232.     private String formatTime(long ms) {
  233.  
  234.         long s = ms / 1000, m = s / 60, h = m / 60, d = h / 24;
  235.         s %= 60;
  236.         m %= 60;
  237.         h %= 24;
  238.  
  239.         return d > 0 ? String.format("%02d:%02d:%02d:%02d", d, h, m, s) :
  240.                 h > 0 ? String.format("%02d:%02d:%02d", h, m, s) :
  241.                         String.format("%02d:%02d", m, s);
  242.     }
  243.  
  244.     // Converts a value to m or k
  245.     private String formatValue(long v) {
  246.         return (v > 1_000_000) ? String.format("%.2fm", (double) (v / 1_000_000)) :
  247.                 (v > 1000) ? String.format("%.1fk", (double) (v / 1000)) :
  248.                         v + "";
  249.     }
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement