Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.79 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. import org.osbot.rs07.api.def.ItemDefinition;
  4. import org.osbot.rs07.api.map.Area;
  5. import org.osbot.rs07.api.model.Item;
  6. import org.osbot.rs07.api.model.NPC;
  7. import org.osbot.rs07.api.model.RS2Object;
  8. import org.osbot.rs07.api.ui.RS2Widget;
  9. import org.osbot.rs07.script.Script;
  10. import org.osbot.rs07.utility.ConditionalSleep;
  11.  
  12. public class GrandExchange {
  13. private final Script parent;
  14. private final Area GRAND_EXCHANGE_CENTER = new Area(3154, 3479, 3174, 3500);
  15. private final int[] collectWidget = { 465, 6, 1 };
  16. private final int[] buyOfferWidget = { 465, 7, 26 };
  17. private final int[] itemSelectWidget = { 465, 24, 21 };
  18. private final int[] preSlectionWidget = { 162, 38, 0 };
  19. private final int[] preNumberWidget = { 162, 32 };
  20. private final int[] searchIndexWidget = { 162, 38 };
  21. private final int[] searchTextWidget = { 162, 33 };
  22. private final int[] chatboxWidget = { 162, 42 };
  23. private final int[] priceWidget = { 465, 24, 39 };
  24. private final int[] amountWidget = { 465, 24, 32 };
  25. private final int[] setPriceWidget = { 465, 24, 12 };
  26. private final int[] setAmountWidget = { 465, 24, 7 };
  27. private final int[] confirmWidget = { 465, 24, 54 };
  28. private final int[] setAllWidget = { 465, 24, 6 };
  29.  
  30. public GrandExchange(Script script) {
  31. this.parent = script;
  32. }
  33.  
  34. public void openGE() {
  35. RS2Object geBooth = parent.getObjects().closest("Grand Exchange booth");
  36. NPC exchangeWorker = parent.getNpcs().closest("Grand Exchange Clerk");
  37.  
  38. int random = new Random().nextInt(10);
  39. if (geBooth != null && random < 5) {
  40. geBooth.interact("Exchange");
  41. new ConditionalSleep(2500, 3000) {
  42. @Override
  43. public boolean condition() {
  44. return parent.getGrandExchange().isOpen();
  45. }
  46. }.sleep();
  47. }
  48.  
  49. if (exchangeWorker != null && random >= 5) {
  50. exchangeWorker.interact("Exchange");
  51. new ConditionalSleep(2500, 3000) {
  52.  
  53. @Override
  54. public boolean condition() {
  55. return parent.getGrandExchange().isOpen();
  56. }
  57.  
  58. }.sleep();
  59. }
  60.  
  61. }
  62.  
  63. public void collectItems(boolean bank) {
  64. if (parent.getGrandExchange().isOpen() && collectButton() != null) {
  65. if (bank) {
  66. collectButton().interact("Collect to bank");
  67. } else {
  68. collectButton().interact("Collect to inventory");
  69. }
  70. new ConditionalSleep(2500, 3000) {
  71. @Override
  72. public boolean condition() {
  73. return collectButton() != null;
  74. }
  75. }.sleep();
  76. }
  77.  
  78. }
  79.  
  80. public void createBuyOffer(String itemName, int price, int amount) {
  81. if (parent.getGrandExchange().isOpen()) {
  82. if (!parent.getGrandExchange().isBuyOfferOpen()) {
  83. initBuyOffer(itemName);
  84. }
  85. if (!getItem().equals(itemName)) {
  86. selectBuyItem(itemName);
  87. }
  88. if (getPrice() != price) {
  89. setPrice(price);
  90. }
  91. if (getAmount() != amount) {
  92. setAmount(amount);
  93. }
  94. if (confirmButton() != null && getItem().equals(itemName) && getPrice() == price && getAmount() == amount) {
  95. confirmButton().interact("Confirm");
  96. new ConditionalSleep(2500, 3000) {
  97. @Override
  98. public boolean condition() {
  99. return !parent.getGrandExchange().isBuyOfferOpen();
  100. }
  101. }.sleep();
  102. }
  103.  
  104. }
  105.  
  106. }
  107.  
  108. private void initBuyOffer(String itemName) {
  109. if (parent.getGrandExchange().isOpen() && !parent.getGrandExchange().isBuyOfferOpen()
  110. && buyOfferSlotOne() != null) {
  111. buyOfferSlotOne().interact("Create buy offer");
  112. new ConditionalSleep(2500, 3000) {
  113. @Override
  114. public boolean condition() {
  115. return parent.getGrandExchange().isBuyOfferOpen();
  116. }
  117. }.sleep();
  118. }
  119. }
  120.  
  121. private void selectBuyItem(String itemName) {
  122. if (parent.getGrandExchange().isBuyOfferOpen() && !getName(itemSelection().getItemId()).equals(itemName)) {
  123. if (itemSelection() != null && preIndex() == null) {
  124. itemSelection().interact("Choose item");
  125. new ConditionalSleep(2500, 3000) {
  126. @Override
  127. public boolean condition() {
  128. return preIndex() != null;
  129. }
  130. }.sleep();
  131. }
  132. if (itemSelection() != null && preIndex() != null && !chatboxText().isVisible()) {
  133. if (!enteredText().equals(itemName)) {
  134. if (searchText().getMessage().length() == 47) {
  135. parent.getKeyboard().typeString(itemName, false);
  136. new ConditionalSleep(3000, 3500) {
  137. @Override
  138. public boolean condition() {
  139. return enteredText().equals(itemName);
  140. }
  141. }.sleep();
  142. } else {
  143. while (!itemName.contains(enteredText())) {
  144. parent.getKeyboard().typeKey('\b');
  145.  
  146. }
  147.  
  148. }
  149.  
  150. } else {
  151. // iterate through index children and find the itemName
  152. for (RS2Widget indexItem : searchIndex().getChildWidgets()) {
  153. if (indexItem.getMessage() != null && indexItem.getMessage().equals(itemName)) {
  154. parent.getMouse().click(indexItem.getAbsX(), indexItem.getAbsY(), false);
  155. new ConditionalSleep(2500, 3000) {
  156.  
  157. @Override
  158. public boolean condition() {
  159. return getName(itemSelection().getItemId()).equals(itemName);
  160. }
  161.  
  162. }.sleep();
  163. }
  164.  
  165. }
  166. }
  167.  
  168. }
  169. }
  170. }
  171.  
  172. public void createSellOffer(String itemName, int price, int amount) {
  173. if (parent.getGrandExchange().isOpen()) {
  174. if (!parent.getGrandExchange().isSellOfferOpen()) {
  175. initSellOffer(itemName);
  176. }
  177. setPrice(price);
  178. setAmount(amount);
  179. if (confirmButton() != null && getItem().equals(itemName) && getPrice() == price && getAmount() == amount) {
  180. confirmButton().interact("Confirm");
  181. new ConditionalSleep(2500, 3000) {
  182. @Override
  183. public boolean condition() {
  184. return !parent.getGrandExchange().isSellOfferOpen();
  185. }
  186. }.sleep();
  187. }
  188.  
  189. }
  190.  
  191. }
  192.  
  193. private void initSellOffer(String itemName) {
  194. if (parent.getGrandExchange().isOpen() && !parent.getGrandExchange().isSellOfferOpen()) {
  195. if (parent.getInventory().contains(itemName)) {
  196. Item sellItem = parent.getInventory().getItem(itemName);
  197. sellItem.interact("Offer");
  198. }
  199. new ConditionalSleep(2500, 3000) {
  200. @Override
  201. public boolean condition() {
  202. return parent.getGrandExchange().isSellOfferOpen();
  203. }
  204. }.sleep();
  205. }
  206. }
  207.  
  208. private void setPrice(int itemPrice) {
  209.  
  210. if (parent.getGrandExchange().isOpen() && parent.getGrandExchange().isOfferScreenOpen()) {
  211. if (priceText().getMessage() != null
  212. && Integer.parseInt(priceText().getMessage().replaceAll("[\\D]", "")) != itemPrice
  213. && preNumber() != null && !preNumber().isVisible()) {
  214. if (itemPrice != 0 && priceButton() != null && preNumber() != null && !preNumber().isVisible()) {
  215. priceButton().interact("Enter price");
  216. new ConditionalSleep(2500, 3000) {
  217. @Override
  218. public boolean condition() {
  219. return preNumber().isVisible();
  220. }
  221. }.sleep();
  222.  
  223. }
  224. if (itemPrice == 0 && allButton() != null) {
  225. allButton().interact("All");
  226. new ConditionalSleep(2500, 3000) {
  227. @Override
  228. public boolean condition() {
  229. return preNumber().isVisible();
  230. }
  231. }.sleep();
  232. }
  233.  
  234. }
  235.  
  236. if (getPrice() != itemPrice && preNumber() != null && preNumber().isVisible() && searchText() != null
  237. && !searchText().getMessage().replaceAll("[\\D]", "").equals((String.valueOf(itemPrice)))
  238. && !chatboxText().isVisible()) {
  239. parent.getKeyboard().typeString(String.valueOf(itemPrice), true);
  240. }
  241.  
  242. }
  243. }
  244.  
  245. private void setAmount(int itemAmount) {
  246. if (parent.getGrandExchange().isOpen() && parent.getGrandExchange().isOfferScreenOpen()) {
  247. if (amountText().getMessage() != null
  248. && Integer.parseInt(amountText().getMessage().replaceAll("[\\D]", "")) != itemAmount) {
  249. if (amountButton() != null && preNumber() != null && !preNumber().isVisible()) {
  250. amountButton().interact("Enter quantity");
  251. new ConditionalSleep(2500, 3000) {
  252. @Override
  253. public boolean condition() {
  254. return preNumber().isVisible();
  255. }
  256. }.sleep();
  257.  
  258. }
  259.  
  260. }
  261.  
  262. if (getAmount() != itemAmount && preNumber() != null && preNumber().isVisible() && searchText() != null
  263. && !searchText().getMessage().replaceAll("[\\D]", "").equals((String.valueOf(itemAmount)))
  264. && !chatboxText().isVisible()) {
  265. parent.getKeyboard().typeString(String.valueOf(itemAmount), true);
  266. }
  267.  
  268. }
  269. }
  270.  
  271. private String enteredText() {
  272. String input = searchText().getMessage().substring(46).replace("*", "");
  273. return input;
  274. }
  275.  
  276. private int getPrice() {
  277. if (priceText() != null && priceText().getMessage() != null) {
  278. return Integer.parseInt(priceText().getMessage().replaceAll("[\\D]", ""));
  279. }
  280. return -1;
  281. }
  282.  
  283. private int getAmount() {
  284. if (amountText() != null && amountText().getMessage() != null) {
  285. return Integer.parseInt(amountText().getMessage().replaceAll("[\\D]", ""));
  286. }
  287. return -1;
  288. }
  289.  
  290. private String getItem() {
  291. if (itemSelection() != null) {
  292. return getName(itemSelection().getItemId());
  293. }
  294. return "Invalid";
  295. }
  296.  
  297. private RS2Widget searchIndex() {
  298. RS2Widget widget = parent.getWidgets().get(searchIndexWidget[0], searchIndexWidget[1]);
  299. if (widget != null) {
  300. return widget;
  301. }
  302. return null;
  303. }
  304.  
  305. private RS2Widget buyOfferSlotOne() {
  306. RS2Widget widget = parent.getWidgets().get(buyOfferWidget[0], buyOfferWidget[1], buyOfferWidget[2]);
  307. if (widget != null) {
  308. return widget;
  309. }
  310. return null;
  311. }
  312.  
  313. private RS2Widget confirmButton() {
  314. RS2Widget widget = parent.getWidgets().get(confirmWidget[0], confirmWidget[1], confirmWidget[2]);
  315. if (widget != null) {
  316. return widget;
  317. }
  318. return null;
  319. }
  320.  
  321. private RS2Widget collectButton() {
  322. RS2Widget widget = parent.getWidgets().get(collectWidget[0], collectWidget[1], collectWidget[2]);
  323. if (widget != null) {
  324. return widget;
  325. }
  326. return null;
  327. }
  328.  
  329. private RS2Widget preIndex() {
  330. RS2Widget widget = parent.getWidgets().get(preSlectionWidget[0], preSlectionWidget[1], preSlectionWidget[2]);
  331. if (widget != null) {
  332. return widget;
  333. }
  334. return null;
  335. }
  336.  
  337. private RS2Widget itemSelection() {
  338. RS2Widget widget = parent.getWidgets().get(itemSelectWidget[0], itemSelectWidget[1], itemSelectWidget[2]);
  339. if (widget != null) {
  340. return widget;
  341. }
  342. return null;
  343. }
  344.  
  345. private RS2Widget priceButton() {
  346. RS2Widget widget = parent.getWidgets().get(setPriceWidget[0], setPriceWidget[1], setPriceWidget[2]);
  347. if (widget != null) {
  348. return widget;
  349. }
  350. return null;
  351. }
  352.  
  353. private RS2Widget priceText() {
  354. RS2Widget widget = parent.getWidgets().get(priceWidget[0], priceWidget[1], priceWidget[2]);
  355. if (widget != null) {
  356. return widget;
  357. }
  358. return null;
  359. }
  360.  
  361. private RS2Widget chatboxText() {
  362. RS2Widget widget = parent.getWidgets().get(chatboxWidget[0], chatboxWidget[1]);
  363. if (widget != null) {
  364. return widget;
  365. }
  366. return null;
  367. }
  368.  
  369. private RS2Widget preNumber() {
  370. RS2Widget widget = parent.getWidgets().get(preNumberWidget[0], preNumberWidget[1]);
  371. if (widget != null) {
  372. return widget;
  373. }
  374. return null;
  375. }
  376.  
  377. private RS2Widget searchText() {
  378. RS2Widget widget = parent.getWidgets().get(searchTextWidget[0], searchTextWidget[1]);
  379. if (widget != null) {
  380. return widget;
  381. }
  382. return null;
  383. }
  384.  
  385. private RS2Widget amountButton() {
  386. RS2Widget widget = parent.getWidgets().get(setAmountWidget[0], setAmountWidget[1], setAmountWidget[2]);
  387. if (widget != null) {
  388. return widget;
  389. }
  390. return null;
  391. }
  392.  
  393. private RS2Widget amountText() {
  394. RS2Widget widget = parent.getWidgets().get(amountWidget[0], amountWidget[1], amountWidget[2]);
  395. if (widget != null) {
  396. return widget;
  397. }
  398. return null;
  399. }
  400.  
  401. private String getName(int id) {
  402. ItemDefinition itemDef = ItemDefinition.forId(id);
  403. if (itemDef != null && itemDef.getName() != null) {
  404. return itemDef.getName();
  405. }
  406. return null;
  407. }
  408.  
  409. private RS2Widget allButton() {
  410. RS2Widget widget = parent.getWidgets().get(setAllWidget[0], setAllWidget[1], setAllWidget[2]);
  411. if (widget != null) {
  412. return widget;
  413. }
  414. return null;
  415. }
  416.  
  417. }
  418.  
  419.  
  420. Lemon Version:
  421.  
  422. Reveal hidden contents
  423. Example Usage:
  424.  
  425.  
  426. public class Script extends org.osbot.rs07.script.Script{
  427.  
  428. private final String itemName = "Blue partyhat";
  429. private final int itemPrice = 2147137627;
  430. private final int itemAmount = 500;
  431.  
  432. @Override
  433. public int onLoop() throws InterruptedException {
  434. GrandExchange GE = new GrandExchange(this); //new GrandExchange instance with our script
  435. if (!getGrandExchange().isOpen()) { //Checks if ge is open
  436. GE.openGE(); //open ge randomly using booth or npc
  437. } else {
  438. GE.collectItems(false); //collect items (boolean true -> to bank, false -> inventory)
  439. GE.createBuyOffer(itemName, itemPrice, itemAmount); //creates a buy offer with specified params
  440. GE.createSellOffer(itemName, itemPrice, 0); //Sells all of the specified items in inventory at specified price ( 0 = all, int = specified amount)
  441. }
  442. return 150;
  443. }
  444.  
  445. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement