Advertisement
Guest User

Untitled

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