Advertisement
iant06

Untitled

Nov 4th, 2015
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.91 KB | None | 0 0
  1. package scripts.clues;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.Point;
  8. import java.text.DecimalFormat;
  9. import java.util.HashMap;
  10.  
  11. import org.tribot.api.General;
  12. import org.tribot.api.Timing;
  13. import org.tribot.api.util.ABCUtil;
  14. import org.tribot.api2007.Banking;
  15. import org.tribot.api2007.Game;
  16. import org.tribot.api2007.Inventory;
  17. import org.tribot.api2007.NPCChat;
  18. import org.tribot.api2007.Options;
  19. import org.tribot.api2007.Player;
  20. import org.tribot.api2007.WebWalking;
  21. import org.tribot.api2007.util.ThreadSettings;
  22. import org.tribot.script.EnumScript;
  23. import org.tribot.script.ScriptManifest;
  24. import org.tribot.script.interfaces.MouseActions;
  25. import org.tribot.script.interfaces.Painting;
  26.  
  27. import scripts.clues.types.AcquiringMethod;
  28. import scripts.clues.types.State;
  29. import scripts.clues.types.TeleportLocation;
  30. import scripts.clues.types.TeleportMethod;
  31. import scripts.methods.Methods;
  32.  
  33. @ScriptManifest(authors = { "iant06" }, category = "Money Making", name = "iClueSolver")
  34.  
  35. public class Main extends EnumScript<State> implements Painting, MouseActions {
  36.  
  37. private final ABCUtil abc = new ABCUtil();
  38. private final DecimalFormat decimalFormat = new DecimalFormat("#.##");
  39.  
  40. private State state;
  41. private AcquiringMethod acquiringMethod;
  42. private TeleportMethod teleportMethod;
  43. private ClueTask clueTask;
  44. private ClueScroll clueScroll;
  45. private Teleporting teleporting;
  46. private Bank bank;
  47. private GUI gui;
  48. private Profile profile;
  49. private HamDungeon hamDungeon;
  50. private Equipped equipped;
  51. private RewardGUI rewardGui;
  52.  
  53. private int foodAmount;
  54. private int cluesSolved = 0;
  55. private int made;
  56. private int loss;
  57.  
  58. private boolean clueSolved;
  59. private boolean paintHidden = false;
  60. private boolean isEndScript = false;
  61.  
  62. private String foodName = "Lobster";
  63. private String status;
  64. private String name;
  65.  
  66. private HashMap<Integer, Reward> itemsWon = new HashMap<Integer, Reward>();
  67.  
  68. @Override
  69. public State getInitialState() {
  70. setName(Player.getRSPlayer().getName());
  71. setStatus("Initializing");
  72.  
  73. println("Starting script for: " + getName());
  74.  
  75. if(gui == null) {
  76. setGui(new GUI(this));
  77. }
  78.  
  79. while(gui.isVisible()) {
  80. sleep(40, 80);
  81. }
  82.  
  83. println("Hunting Clues using: " + Methods.correctCapitalization(getAcquiringMethod().toString()));
  84. println("Teleporting using: " + Methods.correctCapitalization(getTeleportMethod().toString()));
  85. println("Bringing " + getFoodAmount() + " " + getFoodName() + " for food.");
  86. println("Eating food if HP is below " + abc.INT_TRACKER.NEXT_EAT_AT.next() + "%");
  87.  
  88. if(teleporting == null) {
  89. setTeleporting(new Teleporting(this));
  90. }
  91.  
  92. if(clueScroll == null) {
  93. setClueScroll(new ClueScroll(this));
  94. }
  95.  
  96. if(bank == null) {
  97. setBank(new Bank(this));
  98. }
  99.  
  100. if(hamDungeon == null) {
  101. setHamDungeon(new HamDungeon(this));
  102. }
  103.  
  104. if(equipped == null) {
  105. setEquipped(new Equipped(this));
  106. }
  107.  
  108. ThreadSettings.get().setClickingAPIUseDynamic(true);
  109. General.useAntiBanCompliance(true);
  110. getEquipped().setEquipment();
  111.  
  112. if(getClueScroll().hasClue()) {
  113. setState(State.SOLVING_CLUE);
  114. return State.SOLVING_CLUE;
  115. }
  116.  
  117. if(Locations.inHamDungeon()) {
  118. setState(State.AQUIRING_CLUE);
  119. return State.AQUIRING_CLUE;
  120. }
  121.  
  122. if(getBank().canPerform()) {
  123. setState(State.WALKING_TO_CLUE_LOCATION);
  124. return State.WALKING_TO_CLUE_LOCATION;
  125. }
  126.  
  127. setState(State.BANKING);
  128. return State.BANKING;
  129. }
  130.  
  131. @Override
  132. public State handleState(State state) {
  133.  
  134. if(isEndScript()) {
  135. Thread.currentThread().interrupt();
  136. return null;
  137. }
  138.  
  139. if(getHamDungeon().canEatFood()) {
  140. getHamDungeon().eatFood();
  141. }
  142.  
  143. if(getClueScroll().isItemInterface()) {
  144. NPCChat.clickContinue(true);
  145. General.sleep(abc.DELAY_TRACKER.ITEM_INTERACTION.next());
  146. abc.DELAY_TRACKER.ITEM_INTERACTION.reset();
  147. setClueTask(null);
  148. setState(State.SOLVING_CLUE);
  149. return State.SOLVING_CLUE;
  150. }
  151.  
  152. if(getClueScroll().isRewardInterface()) {
  153. setState(State.BANKING);
  154. return State.BANKING;
  155. }
  156.  
  157. if(!getEquipped().hasNecklace() || !getEquipped().hasRing()) {
  158. println("Out of Duel ring or Games necklace.");
  159. setState(State.BANKING);
  160. }
  161.  
  162. if(Game.getRunEnergy() >= abc.INT_TRACKER.NEXT_RUN_AT.next()) {
  163. Options.setRunOn(true);
  164. abc.INT_TRACKER.NEXT_RUN_AT.reset();
  165. }
  166.  
  167. state = getState() != null ? getState() : getInitialState();
  168.  
  169. switch(state) {
  170.  
  171. case AQUIRING_CLUE:
  172.  
  173. getEquipped().checkEquipment();
  174. getBank().setBankTeleport(false);
  175.  
  176. if(getClueScroll().hasClue()) {
  177.  
  178. if(getAcquiringMethod().equals(AcquiringMethod.THIEVING)) {
  179. getHamDungeon().dropJunk();
  180. }
  181.  
  182. setState(State.SOLVING_CLUE);
  183. return State.SOLVING_CLUE;
  184.  
  185. }
  186.  
  187. if(!Locations.inHamDungeon()) {
  188.  
  189. setState(State.WALKING_TO_CLUE_LOCATION);
  190. return State.WALKING_TO_CLUE_LOCATION;
  191.  
  192. }
  193.  
  194. if (Player.getPosition().getX() > 3182 && Player.getPosition().getY() < 9614) {
  195.  
  196. getHamDungeon().openJailDoor();
  197. return State.AQUIRING_CLUE;
  198.  
  199. }
  200.  
  201. if(Inventory.isFull()) {
  202.  
  203. if(getAcquiringMethod().equals(AcquiringMethod.THIEVING)) {
  204. getHamDungeon().dropJunk();
  205. } else {
  206. getHamDungeon().eatFood();
  207. }
  208.  
  209. return State.AQUIRING_CLUE;
  210.  
  211. }
  212.  
  213. if(!getClueScroll().foundClueScroll()) {
  214. if(getAcquiringMethod().equals(AcquiringMethod.COMBAT))
  215. getHamDungeon().attackHamGuard();
  216. else
  217. getHamDungeon().pickpocketHamMember();
  218. }
  219.  
  220. return State.AQUIRING_CLUE;
  221.  
  222. case BANKING:
  223.  
  224. getEquipped().checkEquipment();
  225.  
  226. if(Locations.CRAFTING_GUILD_AREA.contains(Player.getPosition())
  227. || Locations.MONASTERY_AREA.contains(Player.getPosition())) {
  228.  
  229. getBank().setBankTeleport(true);
  230. getTeleporting().teleportTo(TeleportLocation.FALADOR);
  231. return State.BANKING;
  232.  
  233. }
  234.  
  235. if(getBank().checkPlane()) {
  236. return State.BANKING;
  237. }
  238.  
  239. if(!getBank().isBankTeleport()) {
  240.  
  241. if(Locations.inHamDungeon()) {
  242. getHamDungeon().leaveDungeon();
  243. return State.BANKING;
  244. }
  245.  
  246. int bankdist = Locations.FALADOR_TELEPORT_AREA.getRandomTile().distanceTo(Player.getPosition());
  247. int closest = getBank().getClosestBankDistance();
  248.  
  249. if(closest < bankdist && closest < 100) {
  250. println("Teleport Distance("+bankdist+") is greater than Closest Bank Distance("+closest+").");
  251. getBank().setBankTeleport(true);
  252. return State.BANKING;
  253. }
  254.  
  255. if(bankdist > 30 && !Banking.isInBank()
  256. || Player.getPosition().getPlane() > 0) {
  257. getBank().setBankTeleport(true);
  258. getTeleporting().teleportTo(TeleportLocation.FALADOR);
  259. return State.BANKING;
  260. }
  261. }
  262.  
  263. if(!Banking.isInBank()) {
  264. setStatus("Walking to Bank");
  265. WebWalking.walkToBank();
  266. return State.BANKING;
  267. }
  268.  
  269. if(getBank().openBank()) {
  270.  
  271. if(getBank().performBankTask()) {
  272.  
  273. Banking.close();
  274.  
  275. if(!getClueScroll().hasClue() && !getClueScroll().hasCasket()) {
  276.  
  277. setState(State.WALKING_TO_CLUE_LOCATION);
  278. return State.WALKING_TO_CLUE_LOCATION;
  279.  
  280. } else {
  281.  
  282. setState(State.SOLVING_CLUE);
  283. return State.SOLVING_CLUE;
  284. }
  285.  
  286. }
  287. }
  288.  
  289. return State.BANKING;
  290.  
  291. case SOLVING_CLUE:
  292. getBank().setBankTeleport(false);
  293. if(!getClueScroll().hasClue() && !getClueScroll().hasCasket()) {
  294. setState(State.BANKING);
  295. return State.BANKING;
  296. }
  297. if(Player.getRSPlayer().isInCombat() && Locations.inHamDungeon()) {
  298. return State.SOLVING_CLUE;
  299. }
  300. if(getClueScroll().isItemInterface()) {
  301. NPCChat.clickContinue(true);
  302. General.sleep(abc.DELAY_TRACKER.NEW_OBJECT_COMBAT.next());
  303. abc.DELAY_TRACKER.NEW_OBJECT_COMBAT.reset();
  304. setClueTask(null);
  305. setState(State.SOLVING_CLUE);
  306. return State.SOLVING_CLUE;
  307. }
  308. if(getClueScroll().isRewardInterface()) {
  309. setClueTask(null);
  310. getEquipped().checkEquipment();
  311. setState(State.BANKING);
  312. return State.BANKING;
  313. }
  314. if(getClueScroll().hasCasket()) {
  315. getClueScroll().openCasket();
  316. return State.SOLVING_CLUE;
  317. }
  318. if(getClueScroll().hasClue()) {
  319. getClueScroll().readClue();
  320. return State.SOLVING_CLUE;
  321. }
  322. return State.SOLVING_CLUE;
  323.  
  324. case WALKING_TO_CLUE_LOCATION:
  325. getEquipped().checkEquipment();
  326. getBank().setBankTeleport(false);
  327.  
  328. if(Banking.isBankScreenOpen()) {
  329. Banking.close();
  330. return State.WALKING_TO_CLUE_LOCATION;
  331. }
  332.  
  333. if(Locations.inHamDungeon()) {
  334. setState(State.AQUIRING_CLUE);
  335. return State.AQUIRING_CLUE;
  336. }
  337.  
  338. int dist = Methods.distanceTo(this, Locations.TRAPDOOR_TILE);
  339. if(dist > 100) {
  340. getTeleporting().teleportTo(TeleportLocation.LUMBRIDGE);
  341. return State.WALKING_TO_CLUE_LOCATION;
  342. }
  343.  
  344. if(dist > 4) {
  345. setStatus("Walking to Trapdoor");
  346. WebWalking.walkTo(Locations.TRAPDOOR_TILE);
  347. }
  348.  
  349. if(getHamDungeon().pickLock()) {
  350. setState(State.AQUIRING_CLUE);
  351. return State.AQUIRING_CLUE;
  352. }
  353.  
  354. return State.WALKING_TO_CLUE_LOCATION;
  355.  
  356. }
  357. return getState();
  358. }
  359.  
  360. @Override
  361. public void onPaint(Graphics g) {
  362. if(!isPaintHidden()) {
  363. int solved = (int) getCluesSolved();
  364. double solveHr = (double) (solved / ((getRunningTime()) / 3600000D));
  365. ((Graphics2D)g).drawImage(Constants.PAINT_IMG, 7, 330, null);
  366. g.setColor(Color.WHITE);
  367. g.setFont(new Font("Arial", Font.BOLD, 14));
  368. g.drawString(Timing.msToString(getRunningTime()), 125, 404);
  369. g.drawString(solved + " (" + (decimalFormat.format(solveHr)) + ")", 125, 426);
  370. g.drawString(getStatus(), 125, 451);
  371. String type = "None";
  372. String taskName = "None";
  373. if(getClueTask() != null) {
  374. if(getClueTask().getCrypticClue() != null) {
  375. type = "Cryptic";
  376. taskName = getClueTask().getCrypticClue().toString();
  377. } else if(getClueTask().getEmoteClue() != null) {
  378. type = "Emote";
  379. taskName = getClueTask().getEmoteClue().toString();
  380. } else if(getClueTask().getDigLocation() != null) {
  381. type = "Map";
  382. taskName = getClueTask().getDigLocation().toString();
  383. }
  384. }
  385. g.drawString(type, 411, 432);
  386. g.drawString(Methods.correctCapitalization(taskName), 411, 408);
  387. g.setFont(new Font("Arial", Font.PLAIN, 10));
  388. g.drawString("HIDE PAINT", 292, 465);
  389. g.drawString("SHOW REWARDS", 370, 465);
  390. g.drawString("CHANGE ACQUIRING METHOD", 120, 465);
  391. g.drawString(Constants.VERSION, 345, 365);
  392. } else {
  393. g.setFont(new Font("Arial", Font.PLAIN, 10));
  394. g.drawString("SHOW PAINT", 292, 465);
  395. }
  396. }
  397.  
  398. public State getState() {
  399. return state;
  400. }
  401.  
  402. public void setState(State state) {
  403. this.state = state;
  404. }
  405.  
  406. public ClueTask getClueTask() {
  407. return clueTask;
  408. }
  409.  
  410. public void setClueTask(ClueTask clueTask) {
  411. if(clueTask == null) {
  412. getClueScroll().setTeleported(false);
  413. getClueScroll().setEmoteTeleport(false);
  414. getClueScroll().setNpcClicks(0);
  415. getClueScroll().setEmoteClicks(0);
  416. getBank().setBankTeleport(false);
  417. getEquipped().checkEquipment();
  418. }
  419. this.clueTask = clueTask;
  420. }
  421.  
  422. public ClueScroll getClueScroll() {
  423. return clueScroll;
  424. }
  425.  
  426. public void setClueScroll(ClueScroll clueScroll) {
  427. this.clueScroll = clueScroll;
  428. }
  429.  
  430. public boolean isClueSolved() {
  431. return clueSolved;
  432. }
  433.  
  434. public void setClueSolved(boolean solvedClue) {
  435. this.clueSolved = solvedClue;
  436. }
  437.  
  438. public Teleporting getTeleporting() {
  439. return teleporting;
  440. }
  441.  
  442. public void setTeleporting(Teleporting teleporting) {
  443. this.teleporting = teleporting;
  444. }
  445.  
  446. public int getCluesSolved() {
  447. return cluesSolved;
  448. }
  449.  
  450. public void setCluesSolved(int cluesSolved) {
  451. this.cluesSolved = cluesSolved;
  452. }
  453.  
  454. public String getStatus() {
  455. return status;
  456. }
  457.  
  458. public void setStatus(String status) {
  459. this.status = status;
  460. }
  461.  
  462. public Bank getBank() {
  463. return bank;
  464. }
  465.  
  466. public void setBank(Bank bank) {
  467. this.bank = bank;
  468. }
  469.  
  470. public int getMade() {
  471. return made;
  472. }
  473.  
  474. public void setMade(int made) {
  475. this.made = made;
  476. }
  477.  
  478. public int getLoss() {
  479. return loss;
  480. }
  481.  
  482. public void setLoss(int loss) {
  483. this.loss = loss;
  484. }
  485.  
  486. public HashMap<Integer, Reward> getItemsWon() {
  487. return itemsWon;
  488. }
  489.  
  490. public void setItemsWon(HashMap<Integer, Reward> itemsWon) {
  491. this.itemsWon = itemsWon;
  492. }
  493.  
  494. public AcquiringMethod getAcquiringMethod() {
  495. return acquiringMethod;
  496. }
  497.  
  498. public void setAcquiringMethod(AcquiringMethod acquiringMethod) {
  499. this.acquiringMethod = acquiringMethod;
  500. }
  501.  
  502. public TeleportMethod getTeleportMethod() {
  503. return teleportMethod;
  504. }
  505.  
  506. public void setTeleportMethod(TeleportMethod teleportMethod) {
  507. this.teleportMethod = teleportMethod;
  508. }
  509.  
  510. public String getFoodName() {
  511. return foodName;
  512. }
  513.  
  514. public void setFoodName(String foodName) {
  515. this.foodName = foodName;
  516. }
  517.  
  518. public int getFoodAmount() {
  519. return foodAmount;
  520. }
  521.  
  522. public void setFoodAmount(int foodAmount) {
  523. this.foodAmount = foodAmount;
  524. }
  525.  
  526. public GUI getGui() {
  527. return gui;
  528. }
  529.  
  530. public void setGui(GUI gui) {
  531. this.gui = gui;
  532. }
  533.  
  534. public Profile getProfile() {
  535. return profile;
  536. }
  537.  
  538. public void setProfile(Profile profile) {
  539. this.profile = profile;
  540. }
  541.  
  542. public HamDungeon getHamDungeon() {
  543. return hamDungeon;
  544. }
  545.  
  546. public void setHamDungeon(HamDungeon hamDungeon) {
  547. this.hamDungeon = hamDungeon;
  548. }
  549.  
  550. public Equipped getEquipped() {
  551. return equipped;
  552. }
  553.  
  554. public void setEquipped(Equipped equipped) {
  555. this.equipped = equipped;
  556. }
  557.  
  558. public RewardGUI getRewardGui() {
  559. return rewardGui;
  560. }
  561.  
  562. public void setRewardGui(RewardGUI rewardGui) {
  563. this.rewardGui = rewardGui;
  564. }
  565.  
  566. public String getName() {
  567. return name;
  568. }
  569.  
  570. public void setName(String name) {
  571. this.name = name;
  572. }
  573.  
  574. public boolean isPaintHidden() {
  575. return paintHidden;
  576. }
  577.  
  578. public void setPaintHidden(boolean paintHidden) {
  579. this.paintHidden = paintHidden;
  580. }
  581.  
  582. @Override
  583. public void mouseClicked(Point e, int button, boolean isBot) {
  584. // hide paint
  585. if(e.getX() >= Constants.PAINT_CLICK_X[0] && e.getX() <= Constants.PAINT_CLICK_X[1]
  586. && e.getY() >= Constants.PAINT_CLICK_Y[0] && e.getY() <= Constants.PAINT_CLICK_Y[1]) {
  587. if(button == 1 && !isBot) {
  588. if(isPaintHidden()) {
  589. println("Showing Paint!");
  590. setPaintHidden(false);
  591. } else {
  592. println("Hiding Paint!");
  593. setPaintHidden(true);
  594. }
  595. }
  596. }
  597.  
  598. // show rewards
  599. if(e.getX() >= Constants.PAINT_CLICK_X[2] && e.getX() <= Constants.PAINT_CLICK_X[3]
  600. && e.getY() >= Constants.PAINT_CLICK_Y[2] && e.getY() <= Constants.PAINT_CLICK_Y[3]) {
  601. if(button == 1 && !isBot) {
  602. if(getRewardGui() != null) {
  603. getRewardGui().dispose();
  604. setRewardGui(null);
  605. }
  606. setRewardGui(new RewardGUI(this));
  607. println("Showing Rewards List!");
  608. }
  609. }
  610.  
  611. // change acquiring method
  612. if(e.getX() >= Constants.PAINT_CLICK_X[4] && e.getX() <= Constants.PAINT_CLICK_X[5]
  613. && e.getY() >= Constants.PAINT_CLICK_Y[4] && e.getY() <= Constants.PAINT_CLICK_Y[5]) {
  614. if(button == 1 && !isBot) {
  615. if(getAcquiringMethod().equals(AcquiringMethod.COMBAT)) {
  616. println("Changing Acquiring Method to Thieving!");
  617. setAcquiringMethod(AcquiringMethod.THIEVING);
  618. } else {
  619. println("Changing Acquiring Method to Combat!");
  620. setAcquiringMethod(AcquiringMethod.COMBAT);
  621. }
  622. }
  623. }
  624.  
  625. }
  626.  
  627. @Override
  628. public void mouseDragged(Point arg0, int arg1, boolean arg2) {
  629. }
  630.  
  631. @Override
  632. public void mouseMoved(Point arg0, boolean arg1) {
  633. }
  634.  
  635. @Override
  636. public void mouseReleased(Point arg0, int arg1, boolean arg2) {
  637. }
  638.  
  639. public String[] getTribotUsers() {
  640. return tribotUsers;
  641. }
  642.  
  643. public void setTribotUsers(String[] tribotUsers) {
  644. this.tribotUsers = tribotUsers;
  645. }
  646.  
  647. public boolean isEndScript() {
  648. return isEndScript;
  649. }
  650.  
  651. public void setEndScript(boolean isEndScript) {
  652. this.isEndScript = isEndScript;
  653. }
  654.  
  655. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement