Guest User

OSBot Scripp

a guest
Jan 29th, 2022
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.31 KB | None | 0 0
  1.  
  2. import org.osbot.rs07.api.Objects;
  3. import org.osbot.rs07.listener.MessageListener;
  4. import org.osbot.rs07.script.Script;
  5. import org.osbot.rs07.script.ScriptManifest;
  6. import org.osbot.rs07.api.map.Area;
  7. import org.osbot.rs07.api.model.GroundItem;
  8. import org.osbot.rs07.api.model.Player;
  9. import org.osbot.rs07.api.GroundItems;
  10. import org.osbot.rs07.api.Walking;
  11. import org.osbot.rs07.api.Settings;
  12. import org.osbot.rs07.api.Bank;
  13. import org.osbot.rs07.api.model.Item;
  14. import org.osbot.rs07.api.Inventory;
  15. import org.osbot.rs07.api.Players;
  16. import org.osbot.rs07.api.model.NPC;
  17. import org.osbot.rs07.api.ui.RS2Widget;
  18. import org.osbot.rs07.api.Dialogues;
  19. import org.osbot.rs07.api.Worlds;
  20. import org.osbot.rs07.api.Widgets;
  21.  
  22.  
  23.  
  24.  
  25.  
  26. import java.awt.*;
  27. import java.awt.event.ItemListener;
  28. import java.awt.event.MouseEvent;
  29. import java.awt.event.MouseListener;
  30. import java.io.IOException;
  31. import java.net.URL;
  32. import java.sql.Date;
  33. import java.text.DateFormat;
  34. import java.text.SimpleDateFormat;
  35. import java.time.Duration;
  36. import java.time.Instant;
  37.  
  38. import javax.imageio.ImageIO;
  39.  
  40. @ScriptManifest(name = "OS BoneBot", author = "Beefsteak", version = 1.0, info = "benis", logo = "")
  41.  
  42. public class OSBoneBot extends Script implements MessageListener, MouseListener {
  43.  
  44. private static long startTime = System.currentTimeMillis();
  45. private String currentState;
  46. private final Image bg = getImage("https://i.imgur.com/AelFPby.png");
  47. private final Image eye = getImage("https://i.imgur.com/gAdhzaC.png");
  48. private final Image coins = getImage("https://i.imgur.com/LL2qDvN.png");
  49. private Boolean hidePaint = false;
  50. private boolean shouldHop = false;
  51. private boolean runGE = false;
  52. private boolean hasSorted = false;
  53. private boolean inCombat = false;
  54. private Rectangle rect = new Rectangle(496, 346, 16, 16);
  55. private Rectangle rect2 = new Rectangle(535, 469, 30, 33);
  56. private Rectangle closePaint = rect;
  57. private Rectangle openPaint = rect;
  58. private Rectangle geButton = rect2;
  59. private Point p;
  60.  
  61. private int bankRuns;
  62. private int bonePrice;
  63. private int boneNum;
  64. private Instant start;
  65.  
  66.  
  67. Area nonwild = new Area(2900, 3521, 3423, 3041);
  68. Area escape1 = new Area(3131, 3615, 3137, 3612);
  69. Area wildy = new Area(2945, 3522, 3339, 3894);
  70. Area lootArea = new Area(3156, 3603, 3181, 3585);
  71. Area bankArea = new Area(3132, 3630, 3136, 3627);
  72. Area refArea = new Area(3131, 3637, 3127, 3635);
  73. Area GE = new Area(3161, 3487, 3168, 3485);
  74. Area edge = new Area(3136, 3520, 3141, 3521);
  75. GroundItem loot = groundItems.closest("Bones");
  76. Area near = myPlayer().getArea(3);
  77. Object pool = objects.closest("Pool of Refreshment");
  78. Object ditch = objects.closest("Wilderness Ditch");
  79.  
  80.  
  81. public String format(long time) {
  82. StringBuilder string = new StringBuilder();
  83. long totalSeconds = time / 1000L;
  84. long totalMinutes = totalSeconds / 60L;
  85. long totalHours = totalMinutes / 60L;
  86. int seconds = (int) totalSeconds % 60;
  87. int minutes = (int) totalMinutes % 60;
  88. int hours = (int) totalHours % 24;
  89. if (hours > 0) {
  90. string.append((new StringBuilder(String.valueOf(hours))).append(
  91. ":").toString());
  92. }
  93. if (minutes > 0) {
  94. string.append((new StringBuilder(String.valueOf(minutes))).append(
  95. ":").toString());
  96. }
  97. string.append((new StringBuilder(String.valueOf(seconds))).append(":")
  98. .toString());
  99. return string.toString();
  100. }
  101.  
  102. private Image getImage(String url){
  103. try {
  104. return ImageIO.read(new URL(url));
  105. } catch (IOException e) {
  106. e.printStackTrace();
  107. }
  108. return null;
  109. }
  110.  
  111. private RS2Widget getMyWidget() {
  112. //Replace ids with your ids
  113. RS2Widget storedWidget = getWidgets().getWidgets().getWidgetContainingText("Enter Wilderness");
  114. return storedWidget;
  115. }
  116.  
  117. private boolean isMyWidgetWorking() {
  118. return getMyWidget() != null && getMyWidget().isVisible();
  119. }
  120.  
  121.  
  122.  
  123. @Override
  124. public void mouseClicked(MouseEvent e) {
  125.  
  126. p = e.getPoint();
  127.  
  128. if (closePaint.contains(p) && !hidePaint) {
  129. hidePaint = true;
  130.  
  131. } else if (openPaint.contains(p) && hidePaint) {
  132. hidePaint = false;
  133. }
  134.  
  135. if (geButton.contains(p)){
  136. runGE = true;
  137. log("runGE = true");
  138. }
  139.  
  140.  
  141. }
  142.  
  143. @Override
  144. public void mousePressed(MouseEvent e) {
  145. }
  146. @Override
  147. public void mouseReleased(MouseEvent e) {
  148. }
  149. @Override
  150. public void mouseEntered(MouseEvent e) {
  151. }
  152. @Override
  153. public void mouseExited(MouseEvent e) {
  154. }
  155.  
  156. // ----------------------------------------------------------------------------------
  157.  
  158. @Override
  159.  
  160. public void onStart() {
  161.  
  162. log("Welcome to BoneBot");
  163. startTime = System.currentTimeMillis();
  164. }
  165.  
  166.  
  167. private enum State {
  168. LOOT, WILDY, WALKING, BANKING,RUNAWAY1,
  169. WORLDHOP, GE, REFILL, IDLE
  170. }
  171.  
  172. private State getState() {
  173.  
  174. if(bankArea.contains(myPlayer()) && settings.getRunEnergy()< 25)
  175. if(!getInventory().isFull())
  176. return State.REFILL;
  177.  
  178. if(lootArea.contains(myPlayer()) && !getInventory().isFull())
  179. if(inCombat == false && shouldHop == false && runGE == false)
  180. return State.LOOT;
  181.  
  182. if(getInventory().isFull() && runGE == false)
  183. return State.BANKING;
  184.  
  185. if(shouldHop == true)
  186. return State.WORLDHOP;
  187.  
  188. if(runGE == true)
  189. return State.GE;
  190.  
  191. if(nonwild.contains(myPlayer()))
  192. return State.WILDY;
  193.  
  194. if(!lootArea.contains(myPlayer()) && wildy.contains(myPlayer()))
  195. if(!getInventory().isFull() && runGE == false)
  196. return State.WALKING;
  197.  
  198. if(myPlayer().isUnderAttack() && myPlayer().isHitBarVisible())
  199. return State.RUNAWAY1;
  200.  
  201. return State.IDLE;
  202.  
  203. }
  204.  
  205.  
  206. @Override
  207. public int onLoop() throws InterruptedException {
  208.  
  209. if (isMyWidgetWorking()) {
  210. log(getMyWidget().getMessage());
  211. getMyWidget().interact();
  212. } else {
  213. log("(Error) - Can't use any action for getMyWidget(). Returning as null or invisible.");
  214. }
  215. // return 300;
  216.  
  217.  
  218.  
  219.  
  220.  
  221. // bonePrice = LivePrices.get("Bones");
  222. // NPC banker = npcs.closest(w -> w != null && w.getName().equals("Banker") && w.hasAction("Bank"));
  223.  
  224.  
  225.  
  226. // ----------------------------------------------------------- //
  227.  
  228.  
  229. switch (getState()) {
  230. case BANKING:
  231. currentState = "Banking";
  232.  
  233. if (!bankArea.contains(myPlayer())) {
  234. getWalking().walk(bankArea.getRandomPosition());
  235. sleep(random(1000,1500));
  236. }
  237.  
  238. // if(bankArea.contains(myPlayer()) && banker.isVisible()){
  239.  
  240. // banker.interact("Bank");
  241. sleep(random(600, 1000));
  242. bank.depositAll();
  243. sleep(random(1000,1500));
  244. bank.close();
  245. bankRuns++;
  246.  
  247. if(settings.getRunEnergy() < 25){
  248. getWalking().walk(refArea.getRandomPosition());
  249. sleep(random(500,1000));
  250. objects.closest("Pool of Refreshment").interact();
  251. sleep(500);
  252. objects.closest("Pool of Refreshment").interact();
  253. sleep(random(2000,3000));
  254. }
  255.  
  256.  
  257.  
  258. break;
  259.  
  260.  
  261.  
  262. }
  263.  
  264.  
  265.  
  266. switch (getState()) {
  267. case LOOT:
  268. currentState = "Looting";
  269. // GroundItem loot = groundItems.closest("Bones");
  270.  
  271. if(lootArea.contains(loot) && loot != null){
  272. if(myPlayer().getArea(12).contains(loot)){
  273. loot.interact();
  274. sleep(random(1000,1850));
  275. }
  276.  
  277. if(!myPlayer().getArea(12).contains(loot)){
  278. getWalking().walk(lootArea.getCentralPosition());
  279. sleep(random(1000,2000));
  280. }
  281. }
  282.  
  283. if(!lootArea.contains(loot) && !myPlayer().isMoving()){
  284. shouldHop = true;
  285. log("shouldHop is true.");
  286. }
  287.  
  288. break;
  289. }
  290.  
  291. switch (getState()) {
  292. case WILDY:
  293. currentState = "Walking to Wilderness";
  294.  
  295. if(!near.contains(objects.closest("Wilderness Ditch"))){
  296. getWalking().walk(edge.getRandomPosition());
  297. sleep(random(1000,1500));
  298.  
  299. }
  300.  
  301. if(near.contains(objects.closest("Wilderness Ditch")) && nonwild.contains(myPlayer())){
  302. sleep(random(1000,2000));
  303. objects.closest("Wilderness Ditch").interact("Cross");
  304. sleep(random(1000,2000));
  305.  
  306. if(getWidgets().getWidgetContainingText("Enter Wilderness") != null){
  307. log("Closing wildy warning");
  308. sleep(random(1500,2000));
  309. sleep(random(1500,2000));
  310. objects.closest("Wilderness Ditch").interact("Cross");
  311. sleep(random(3500,5000));
  312. }
  313.  
  314.  
  315. }
  316. break;
  317. }
  318.  
  319. switch (getState()) {
  320. case WALKING:
  321. currentState = "Walking to Graveyard";
  322. if(!dialogues.inDialogue() && !lootArea.contains(myPlayer())){
  323. getWalking().walk(lootArea.getRandomPosition());
  324. sleep(random(1000,1500));
  325. }
  326.  
  327. if(dialogues.inDialogue() == true){
  328. sleep(random(500,1000));
  329. dialogues.clickContinue();
  330. sleep(random(500,1000));
  331. dialogues.selectOption(2);
  332. sleep(random(500,1000));
  333. }
  334. break;
  335. }
  336.  
  337. switch (getState()) {
  338. case RUNAWAY1:
  339. }
  340.  
  341. switch (getState()) {
  342. case WORLDHOP:
  343. if(shouldHop == true){
  344. currentState = "Hopping worlds";
  345.  
  346. worlds.hopToF2PWorld();
  347. sleep(random(10000,15000));
  348. shouldHop = false;
  349. }
  350. break;
  351. }
  352.  
  353. switch (getState()) {
  354. case REFILL:
  355. currentState = "Recharging energy";
  356. if(!refArea.contains(myPlayer())){
  357. getWalking().walk(refArea.getRandomPosition());
  358. sleep(random(1000,1500));
  359. objects.closest("Pool of Refreshment").interact();
  360. sleep(random(1000,3000));
  361. }
  362. break;
  363. }
  364.  
  365.  
  366. switch (getState()) {
  367. case GE:
  368. }
  369.  
  370.  
  371.  
  372. switch (getState()) {
  373. case IDLE:
  374. }
  375.  
  376.  
  377. return 300;
  378.  
  379. }
  380.  
  381.  
  382.  
  383. @Override
  384.  
  385. public void onPaint(Graphics2D g) {
  386.  
  387. long elapsed = System.currentTimeMillis() - startTime;
  388. g.drawString((new StringBuilder("Time: ")).append(format(elapsed)).toString(), 50, 50);
  389.  
  390. //This is where you will put your code for paint(s)
  391.  
  392. }
  393.  
  394.  
  395.  
  396. @Override
  397.  
  398. public void onExit() {
  399.  
  400. //Code here will execute after the script ends
  401.  
  402. }
  403.  
  404.  
  405.  
  406. }
  407.  
  408.  
Advertisement
Add Comment
Please, Sign In to add comment