Advertisement
Guest User

Untitled

a guest
Sep 17th, 2015
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.99 KB | None | 0 0
  1. package scripts.smither;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics;
  6. import java.text.DecimalFormat;
  7.  
  8. import org.tribot.api.General;
  9. import org.tribot.api.Timing;
  10. import org.tribot.api.input.Keyboard;
  11. import org.tribot.api.input.Mouse;
  12. import org.tribot.api.util.ABCUtil;
  13. import org.tribot.api2007.Banking;
  14. import org.tribot.api2007.Camera;
  15. import org.tribot.api2007.Game;
  16. import org.tribot.api2007.Interfaces;
  17. import org.tribot.api2007.Inventory;
  18. import org.tribot.api2007.NPCChat;
  19. import org.tribot.api2007.Objects;
  20. import org.tribot.api2007.Player;
  21. import org.tribot.api2007.Skills;
  22. import org.tribot.api2007.WebWalking;
  23. import org.tribot.api2007.Skills.SKILLS;
  24. import org.tribot.api2007.Walking;
  25. import org.tribot.api2007.types.RSArea;
  26. import org.tribot.api2007.types.RSInterface;
  27. import org.tribot.api2007.types.RSItem;
  28. import org.tribot.api2007.types.RSObject;
  29. import org.tribot.api2007.types.RSTile;
  30. import org.tribot.script.EnumScript;
  31. import org.tribot.script.ScriptManifest;
  32. import org.tribot.script.interfaces.Painting;
  33.  
  34. import scripts.methods.Methods;
  35.  
  36. @ScriptManifest(authors = { "iant06" }, category = "Smithing", name = "iSmithing Pro")
  37.  
  38. public class Main extends EnumScript<State> implements Painting {
  39.  
  40. private ABCUtil abc = new ABCUtil();
  41.  
  42. private GUI gui;
  43. private Bank bank;
  44. private BarType barType;
  45. private SmithLocation smithLocation;
  46. private Smithing item;
  47. private ScriptTask task;
  48. private Forging forging;
  49. private State state;
  50.  
  51. private int startLevel = -1;
  52. private int startXp = -1;
  53.  
  54. private int ringsUsed = 0;
  55.  
  56. private boolean endScript = false;
  57.  
  58.  
  59. @Override
  60. public State getInitialState() {
  61. if(gui == null) {
  62. setGui(new GUI(this));
  63. }
  64. while(getGui().isVisible()) {
  65. sleep(50, 150);
  66. }
  67. if(bank == null) {
  68. setBank(new Bank(this));
  69. }
  70. switch(getTask()) {
  71. case CANNONBALLS:
  72.  
  73. case SMELTING:
  74. if(!getItem().equals(Smithing.CANNONBALLS)) {
  75. if(getSmithLocation().getAnvilArea().contains(Player.getPosition())) {
  76. if(getBank().canPerform()) {
  77. setState(State.SMELTING);
  78. return State.SMELTING;
  79. }
  80. }
  81. } else {
  82. if(getSmithLocation().getFurnaceArea().contains(Player.getPosition())) {
  83. if(getBank().canPerform()) {
  84. setState(State.SMITHING);
  85. return State.SMITHING;
  86. }
  87. }
  88. }
  89. break;
  90.  
  91. case SMITHING:
  92. if(!getItem().equals(Smithing.CANNONBALLS)) {
  93. if(getSmithLocation().getAnvilArea().contains(Player.getPosition())) {
  94. if(getBank().canPerform()) {
  95. setState(State.SMITHING);
  96. return State.SMITHING;
  97. }
  98. }
  99. } else {
  100. if(getSmithLocation().getFurnaceArea().contains(Player.getPosition())) {
  101. if(getBank().canPerform()) {
  102. setState(State.SMITHING);
  103. return State.SMITHING;
  104. }
  105. }
  106. }
  107. break;
  108.  
  109. }
  110. setState(State.BANKING);
  111. return State.BANKING;
  112. }
  113.  
  114. @Override
  115. public State handleState(State state) {
  116. if(isEndScript()) {
  117. Thread.currentThread().interrupt();
  118. return null;
  119. }
  120. state = getState() != null ? getState() : getInitialState();
  121. switch(state) {
  122. case BANKING:
  123. if(getBank().isBankScreenOpen(100)) {
  124. if(getBank().performedBankTask()) {
  125. switch(getTask()) {
  126. case CANNONBALLS:
  127. setState(State.WALKING_TO_FURNACE);
  128. return State.WALKING_TO_FURNACE;
  129. case SMELTING:
  130. setState(State.WALKING_TO_FURNACE);
  131. return State.WALKING_TO_FURNACE;
  132. case SMITHING:
  133. if(getItem().equals(Smithing.CANNONBALLS)) {
  134. setState(State.WALKING_TO_FURNACE);
  135. return State.WALKING_TO_FURNACE;
  136. }
  137. setState(State.WALKING_TO_ANVIL);
  138. return State.WALKING_TO_ANVIL;
  139. }
  140. }
  141. }
  142. if(Banking.openBank()) {
  143. if(getBank().performedBankTask()) {
  144. switch(getTask()) {
  145. case CANNONBALLS:
  146. setState(State.WALKING_TO_FURNACE);
  147. return State.WALKING_TO_FURNACE;
  148. case SMELTING:
  149. setState(State.WALKING_TO_FURNACE);
  150. return State.WALKING_TO_FURNACE;
  151. case SMITHING:
  152. if(getItem().equals(Smithing.CANNONBALLS)) {
  153. setState(State.WALKING_TO_FURNACE);
  154. return State.WALKING_TO_FURNACE;
  155. }
  156. setState(State.WALKING_TO_ANVIL);
  157. return State.WALKING_TO_ANVIL;
  158. }
  159. }
  160. }
  161. if(!Banking.isInBank())
  162. WebWalking.walkToBank();
  163. return State.BANKING;
  164. case SMELTING:
  165. if(getTask().equals(ScriptTask.CANNONBALLS)) {
  166. if(outOfBars() && outOfOre()) {
  167. setState(State.BANKING);
  168. return State.BANKING;
  169. }
  170. } else {
  171. if(outOfOre()) {
  172. setState(State.BANKING);
  173. return State.BANKING;
  174. }
  175. }
  176. if(getTask().equals(ScriptTask.SMELTING))
  177. smeltItems();
  178. else if(getTask().equals(ScriptTask.CANNONBALLS)) {
  179. if(!outOfOre()) {
  180. smeltItems();
  181. return State.SMELTING;
  182. }
  183. makeCannonballs();
  184. }
  185. return State.SMELTING;
  186. case SMITHING:
  187. if(outOfBars()) {
  188. setState(State.BANKING);
  189. return State.BANKING;
  190. }
  191. if(!getItem().equals(Smithing.CANNONBALLS))
  192. smithItems();
  193. else
  194. makeCannonballs();
  195. return State.SMITHING;
  196. case WALKING_TO_ANVIL:
  197. RSArea anvilArea = getSmithLocation().getAnvilArea();
  198. if(anvilArea.contains(Player.getPosition())) {
  199. setState(State.SMITHING);
  200. return State.SMITHING;
  201. }
  202. RSTile anvilTile = getSmithLocation().getAnvilTile();
  203. if(!anvilArea.contains(Player.getPosition())) {
  204. if(WebWalking.walkTo(anvilTile)) {
  205. setState(State.SMITHING);
  206. return State.SMITHING;
  207. }
  208. }
  209. return State.WALKING_TO_ANVIL;
  210. case WALKING_TO_FURNACE:
  211. RSArea furnaceArea = getSmithLocation().getFurnaceArea();
  212. if(furnaceArea.contains(Player.getPosition())) {
  213. if(!getItem().equals(Smithing.CANNONBALLS) || getTask().equals(ScriptTask.CANNONBALLS)) {
  214. setState(State.SMELTING);
  215. return State.SMELTING;
  216. } else {
  217. setState(State.SMITHING);
  218. return State.SMITHING;
  219. }
  220. }
  221. RSTile furnaceTile = getSmithLocation().getFurnaceTile();
  222. if(!furnaceArea.contains(Player.getPosition())) {
  223. if(getSmithLocation().equals(SmithLocation.EDGEVILLE)) {
  224. if(!Player.isMoving() || Game.getDestination() == null) {
  225. RSTile[] path = Walking.generateStraightPath(furnaceTile);
  226. Walking.walkPath(path);
  227. }
  228. } else {
  229. if(WebWalking.walkTo(furnaceTile)) {
  230. if(!getItem().equals(Smithing.CANNONBALLS) || getTask().equals(ScriptTask.CANNONBALLS)) {
  231. setState(State.SMELTING);
  232. return State.SMELTING;
  233. } else {
  234. setState(State.SMITHING);
  235. return State.SMITHING;
  236. }
  237. }
  238. }
  239. }
  240. return State.WALKING_TO_FURNACE;
  241. }
  242. return null;
  243. }
  244.  
  245. public boolean outOfBars() {
  246. if(Inventory.getCount(getBarType().getItemId()) <= 0
  247. || Inventory.getCount(getBarType().getItemId())
  248. < getItem().getBarsRequired()) {
  249. return true;
  250. }
  251. return false;
  252. }
  253.  
  254. public boolean outOfOre() {
  255. int[] ores = getBarType().getOres();
  256. int[] amounts = getBarType().getAmounts();
  257. boolean firstOre = Inventory.getCount(ores[0]) >= amounts[0];
  258. boolean secondOre = Inventory.getCount(ores[1]) >= amounts[1];
  259. return !firstOre || !secondOre;
  260. }
  261.  
  262. public boolean makeCannonballs() {
  263. if(outOfBars()) {
  264. setState(State.BANKING);
  265. return false;
  266. }
  267. if(Player.getAnimation() == Constants.SMELTING_ANIM) {
  268. return false;
  269. }
  270. if(Interfaces.isInterfaceValid(Constants.CANNONBALL_INTERFACE)) {
  271. if(performSmithCannonballs()) {
  272. return true;
  273. }
  274. }
  275. RSObject[] furnace = Objects.findNearest(24, "Furnace");
  276. RSItem[] steel = Inventory.find(Constants.STEEL_BAR);
  277. if(furnace != null && furnace.length > 0) {
  278. if(steel != null && steel.length > 0) {
  279. if(Game.getItemSelectionState() == 1) {
  280. Mouse.click(1);
  281. sleep();
  282. }
  283. if(steel[0].click("Use")) {
  284. if(clickedItem(1000)) {
  285. sleep();
  286. if(furnace[0].click("Use")) {
  287. sleep();
  288. if(interfaceOpen(2000, Constants.CANNONBALL_INTERFACE)) {
  289. if(performSmithCannonballs()) {
  290. return true;
  291. }
  292. }
  293. }
  294. }
  295. }
  296. }
  297. }
  298. return false;
  299. }
  300.  
  301. public boolean smeltItems() {
  302. if(outOfOre()) {
  303. setState(State.BANKING);
  304. return false;
  305. }
  306. if(!getSmithLocation().getFurnaceArea().contains(Player.getPosition())) {
  307. setState(State.WALKING_TO_FURNACE);
  308. return false;
  309. }
  310. if(Player.getAnimation() == Constants.SMELTING_ANIM) {
  311. return false;
  312. }
  313. if(Interfaces.isInterfaceValid(Constants.SMELTING_INTERFACE)) {
  314. if(performSmeltBar()) {
  315. return true;
  316. }
  317. return false;
  318. }
  319. RSObject[] furnace = Objects.findNearest(24, "Furnace");
  320. if(furnace != null && furnace.length > 0) {
  321. if(furnace[0].click("Smelt")) {
  322. sleep();
  323. if(performSmeltBar()) {
  324. return true;
  325. }
  326. }
  327. }
  328. return false;
  329. }
  330.  
  331. public boolean smithItems() {
  332. if(outOfBars()) {
  333. setState(State.BANKING);
  334. return false;
  335. }
  336. if(!getSmithLocation().getAnvilArea().contains(Player.getPosition())) {
  337. setState(State.WALKING_TO_ANVIL);
  338. return false;
  339. }
  340. if(Player.getAnimation() == Constants.SMITHING_ANIM) {
  341. return false;
  342. }
  343. if(Interfaces.isInterfaceValid(Constants.SMITHING_INTERFACE)) {
  344. if(performSmithItem()) {
  345. return true;
  346. }
  347. return false;
  348. }
  349. RSObject[] anvil = Objects.findNearest(24, "Anvil");
  350. RSItem[] bar = Inventory.find(getBarType().getItemId());
  351. if(bar != null && bar.length > 0) {
  352. if(anvil != null && anvil.length > 0) {
  353. if(Camera.getCameraAngle() < 50) {
  354. Camera.setCameraAngle(General.random(80, 110));
  355. }
  356. if(anvil[0].click("Smith")) {
  357. sleep();
  358. if(performSmithItem()) {
  359. return true;
  360. }
  361. }
  362. }
  363. }
  364. return false;
  365. }
  366.  
  367. public boolean smeltXOption() {
  368. switch(getBarType()) {
  369. case BRONZE:
  370. return true;
  371. case GOLD:
  372. return true;
  373. case IRON:
  374. return true;
  375. case SILVER:
  376. return true;
  377. default:
  378. return false;
  379.  
  380. }
  381. }
  382.  
  383. public boolean smithXOption() {
  384. return getItem().getBarsRequired() <= 2;
  385. }
  386.  
  387. public boolean performSmeltBar() {
  388. if(!getBank().canPerform()) {
  389. return false;
  390. }
  391. if(interfaceOpen(1000, Constants.SMELTING_INTERFACE)) {
  392. sleep();
  393. RSInterface smith = Interfaces.get(Constants.SMELTING_INTERFACE);
  394. if(smith != null) {
  395. int childId = getBarType().getChildId();
  396. String option = smeltXOption() ? "Smelt X" : "Smelt 10";
  397. if(smith.getChild(childId).click(option)) {
  398. //if(interfaceOpen(1000, 162)) {
  399. sleep(500, 1000);
  400. sleep();
  401. if(smeltXOption()) {
  402. Keyboard.typeString("" + 5);
  403. sleep();
  404. Keyboard.typeString("" + General.random(0, 10));
  405. sleep();
  406. if(General.random(0, 5) == 0) {
  407. Keyboard.typeString("" + General.random(0, 10));
  408. sleep();
  409. }
  410. Keyboard.pressEnter();
  411. }
  412. if(enteredAmount(1000)) {
  413. sleep();
  414. if(finishedSmelting(120000)) {
  415. sleep();
  416. return true;
  417. }
  418. }
  419. //}
  420. }
  421. }
  422. }
  423. return false;
  424. }
  425.  
  426. public boolean performSmithItem() {
  427. if(!getBank().canPerform()) {
  428. return false;
  429. }
  430. if(interfaceOpen(2000, Constants.SMITHING_INTERFACE)) {
  431. sleep();
  432. RSInterface smith = Interfaces.get(Constants.SMITHING_INTERFACE);
  433. if(smith != null) {
  434. int childId = getItem().getChildId();
  435. String option = smithXOption() ? "Smith X" : "Smith 10";
  436. if(smith.getChild(childId).click(option)) {
  437.  
  438. sleep(500, 1000);
  439. sleep();
  440. if(smithXOption()) {
  441. Keyboard.typeString("" + 5);
  442. sleep();
  443. Keyboard.typeString("" + General.random(0, 10));
  444. sleep();
  445. if(General.random(0, 3) == 0) {
  446. Keyboard.typeString("" + General.random(0, 10));
  447. sleep();
  448. }
  449. Keyboard.pressEnter();
  450. }
  451. if(enteredAmount(1000)) {
  452. sleep();
  453. if(finishedSmithing(120000)) {
  454. sleep();
  455. return true;
  456. }
  457. }
  458. //}
  459. }
  460. }
  461. }
  462. return false;
  463. }
  464.  
  465. public boolean performSmithCannonballs() {
  466. if(!getBank().canPerform()) {
  467. return false;
  468. }
  469. if(interfaceOpen(2000, Constants.CANNONBALL_INTERFACE)) {
  470. sleep();
  471. RSInterface smith = Interfaces.get(Constants.CANNONBALL_INTERFACE);
  472. if(smith != null) {
  473. int childId = Constants.CANNONBALL_CHILD_ID;
  474. if(smith.getChild(childId).click("Make All")) {
  475.  
  476. sleep(500, 1000);
  477. sleep();
  478.  
  479. if(enteredAmount(1000)) {
  480. sleep();
  481. if(finishedSmithing(180000)) {
  482. sleep();
  483. return true;
  484. }
  485. }
  486. //}
  487. }
  488. }
  489. }
  490. return false;
  491. }
  492.  
  493. public void sleep() {
  494. General.sleep(abc.DELAY_TRACKER.ITEM_INTERACTION.next());
  495. abc.DELAY_TRACKER.ITEM_INTERACTION.reset();
  496. }
  497.  
  498. private boolean finishedSmelting(int i) {
  499. long t = System.currentTimeMillis();
  500. long l;
  501. while(Timing.timeFromMark(t) < i) {
  502. Methods.performAntiBan(this);
  503. if(outOfOre()) {
  504. return true;
  505. }
  506. if(NPCChat.getMessage() != null) {
  507. return true;
  508. }
  509. if(Player.getAnimation() == -1) {
  510. l = System.currentTimeMillis();
  511. while(Player.getAnimation() == -1) {
  512. //println(Timing.timeFromMark(l));
  513. if(Timing.timeFromMark(l) > 4000) {
  514. return true;
  515. }
  516. sleep(50, 150);
  517. }
  518. }
  519. sleep(50, 150);
  520. }
  521. return false;
  522. }
  523.  
  524. private int cannonballsMade = 0;
  525.  
  526. private boolean finishedSmithing(int i) {
  527. long t = System.currentTimeMillis();
  528. long l = System.currentTimeMillis();
  529. while(Timing.timeFromMark(t) < i) {
  530. Methods.performAntiBan(this);
  531. if(outOfBars()) {
  532. if(getTask().equals(ScriptTask.CANNONBALLS)) {
  533. if(Inventory.getCount(Constants.STEEL_BAR) <= 0) {
  534. setCannonballsMade(getCannonballsMade() + Inventory.getCount(Constants.CANNONBALL_ID));
  535. }
  536. }
  537. return true;
  538. }
  539. if(NPCChat.getMessage() != null) {
  540. if(getTask().equals(ScriptTask.CANNONBALLS)) {
  541. if(Inventory.getCount(Constants.STEEL_BAR) <= 0) {
  542. setCannonballsMade(getCannonballsMade() + Inventory.getCount(Constants.CANNONBALL_ID));
  543. }
  544. }
  545. return true;
  546. }
  547. if(Player.getAnimation() == -1) {
  548. l = System.currentTimeMillis();
  549. while(Player.getAnimation() == -1) {
  550. //println(Timing.timeFromMark(l));
  551. if(Timing.timeFromMark(l) > 4000) {
  552. if(getTask().equals(ScriptTask.CANNONBALLS)) {
  553. if(Inventory.getCount(Constants.STEEL_BAR) <= 0) {
  554. setCannonballsMade(getCannonballsMade() + Inventory.getCount(Constants.CANNONBALL_ID));
  555. }
  556. }
  557. return true;
  558. }
  559. sleep(50, 150);
  560. }
  561. }
  562. sleep(50, 150);
  563. }
  564. return false;
  565. }
  566.  
  567. private boolean interfaceOpen(int i, int j) {
  568. long t = System.currentTimeMillis();
  569. while(Timing.timeFromMark(t) < i) {
  570. if(Interfaces.isInterfaceValid(j)) {
  571. return true;
  572. }
  573. switch(getTask()) {
  574. case CANNONBALLS:
  575. case SMELTING:
  576. while(getSmithLocation().getFurnaceArea().contains(Player.getPosition())
  577. && Player.isMoving()) {
  578. sleep(50, 150);
  579. }
  580. break;
  581. case SMITHING:
  582. if(!getItem().equals(Smithing.CANNONBALLS)) {
  583. while(getSmithLocation().getAnvilArea().contains(Player.getPosition())
  584. && Player.isMoving()) {
  585. sleep(50, 150);
  586. }
  587. } else {
  588. while(getSmithLocation().getFurnaceArea().contains(Player.getPosition())
  589. && Player.isMoving()) {
  590. sleep(50, 150);
  591. }
  592. }
  593. break;
  594.  
  595. }
  596. sleep(50, 150);
  597. }
  598. return false;
  599. }
  600.  
  601. private boolean clickedItem(int i) {
  602. long t = System.currentTimeMillis();
  603. while(Timing.timeFromMark(t) < i) {
  604. if(Game.getItemSelectionState() == 1) {
  605. return true;
  606. }
  607. sleep(50, 150);
  608. }
  609. return false;
  610. }
  611.  
  612. public int getAnimation() {
  613. switch(getTask()) {
  614. case CANNONBALLS:
  615. case SMELTING:
  616. return Constants.SMELTING_ANIM;
  617. case SMITHING:
  618. if(!getItem().equals(Smithing.CANNONBALLS))
  619. return Constants.SMITHING_ANIM;
  620. else
  621. return Constants.SMELTING_ANIM;
  622. }
  623. return -1;
  624. }
  625.  
  626. private boolean enteredAmount(int i) {
  627. long t = System.currentTimeMillis();
  628. while (Timing.timeFromMark(t) < i) {
  629. if(Player.getAnimation() == getAnimation()) {
  630. return true;
  631. }
  632. sleep(40, 80);
  633. }
  634. return false;
  635. }
  636.  
  637. public String getCollecting() {
  638. String collecting = "";
  639. switch(getTask()) {
  640. case CANNONBALLS:
  641. collecting = "Cannonballs";
  642. break;
  643. case SMELTING:
  644. collecting = "Bars";
  645. break;
  646. case SMITHING:
  647. collecting = "Smithed";
  648. break;
  649. }
  650. return collecting;
  651. }
  652.  
  653. public String correctCapitalization(String s) {
  654. char firstBarLetter = s.charAt(0);
  655. String restBar = s.substring(1).toLowerCase().replaceAll("_", " ");
  656. return firstBarLetter + restBar;
  657. }
  658.  
  659. public String getPaintItemName() {
  660. String collecting = "";
  661.  
  662. switch(getTask()) {
  663. case CANNONBALLS:
  664. collecting = "Cannonballs";
  665. break;
  666. case SMELTING:
  667. collecting = "Bars";
  668. break;
  669. case SMITHING:
  670. collecting = correctCapitalization(getItem().getName());
  671. break;
  672. }
  673. return collecting;
  674. }
  675.  
  676. public int getBarIndex() {
  677. switch(getBarType()) {
  678. case ADAMANT:
  679. return 4;
  680. case BRONZE:
  681. return 0;
  682. case IRON:
  683. return 1;
  684. case MITHRIL:
  685. return 3;
  686. case RUNE:
  687. return 5;
  688. case STEEL:
  689. return 2;
  690. default:
  691. break;
  692.  
  693. }
  694. return 0;
  695. }
  696.  
  697. public double getXpPerAction() {
  698. switch(getTask()) {
  699. case CANNONBALLS:
  700. case SMITHING:
  701. return getItem().getXpByBar(getBarIndex());
  702. case SMELTING:
  703. return getBarType().getXp();
  704. }
  705. return 0;
  706. }
  707.  
  708.  
  709.  
  710.  
  711. private int calculateProfit() {
  712. double xp = getXpPerAction();
  713. int smithed = (int) ((int) (Skills.getXP(Skills.SKILLS.SMITHING) - getStartXp()) / xp);
  714. int profit = 0;
  715. int ironore = Constants.IRON_PRICE;
  716. int coalore = Constants.COAL_PRICE;
  717. int steelbar = Constants.STEEL_BAR_PRICE;
  718. int bar = getBarType().getPrice();
  719. int firstOre = getBarType().getOrePrices()[0];
  720. int secondOre = getBarType().getOrePrices()[1];
  721. int firstAmount = getBarType().getAmounts()[0];
  722. int secondAmount = getBarType().getAmounts()[1];
  723. int cball = Constants.CANNONBALL_PRICE;
  724. if(getItem().equals(Smithing.CANNONBALLS)) {
  725. smithed *= 4;
  726. int steelBarAmount = (int) smithed / 4;
  727. return (int) (smithed * cball - (steelBarAmount * steelbar));
  728. }
  729. if(getTask().equals(ScriptTask.CANNONBALLS)) {
  730. smithed = cannonballsMade;
  731. profit = smithed * cball;
  732. int ironOreAmount = (int) smithed / 4;
  733. int coalOreAmount = (int) smithed / 2;
  734. return (int) profit - ((coalOreAmount * coalore) + (ironOreAmount * ironore));
  735. }
  736. if(getTask().equals(ScriptTask.SMELTING)) {
  737. profit = smithed * bar;
  738. profit = (profit - ((smithed * firstAmount) * firstOre));
  739. profit = (profit - ((smithed * secondAmount) * secondOre));
  740. if(getForging().equals(Forging.YES)) {
  741. profit = (profit - (getRingsUsed() * Constants.RING_OF_FORGING_PRICE));
  742. }
  743. return profit;
  744. }
  745. return 0;
  746. }
  747.  
  748. @Override
  749. public void onPaint(Graphics g) {
  750. double xp = getXpPerAction();
  751. int smith = (int) ((int) (Skills.getXP(Skills.SKILLS.SMITHING) - getStartXp()) / xp);
  752. if(getTask().equals(ScriptTask.CANNONBALLS)) {
  753. smith = cannonballsMade;
  754. }
  755. if(getItem().equals(Smithing.CANNONBALLS)) {
  756. smith *= 4;
  757. }
  758. int smithHr = (int) (smith / ((getRunningTime()) / 3600000D));
  759. int xpMade = (int) (Skills.getXP(Skills.SKILLS.SMITHING) - getStartXp());
  760. int xpHr = (int) (xpMade / ((getRunningTime()) / 3600000D));
  761. int profit = (int) calculateProfit();
  762. int profitHr = (int) (profit / ((getRunningTime()) / 3600000D));
  763. int smithLevel = Skills.getLevelByXP(Skills.getXP(SKILLS.SMITHING));
  764. int index = 20 + 15;
  765. g.setColor(Color.WHITE);
  766. g.setFont(new Font("default", Font.BOLD, 14));
  767. g.drawString("Task: " + correctCapitalization(getTask().toString()), 375, index);
  768. index += 15;
  769. g.drawString("Location: " + correctCapitalization(getSmithLocation().toString()), 375, index);
  770. index += 15;
  771. g.drawString("Bar: " + correctCapitalization(getBarType().toString()), 375, index);
  772. index += 15;
  773. if(!getTask().equals(ScriptTask.CANNONBALLS)) {
  774. g.drawString("Item: " + getPaintItemName(), 375, index);
  775. index += 15;
  776. }
  777. g.drawString("State: " + correctCapitalization(getState().toString()), 375, index);
  778. index += 15;
  779. g.drawString(getCollecting() + ": " + smith + " (" + smithHr + ")", 375, index);
  780. index += 15;
  781. g.drawString("Level: " + smithLevel + " (" + (smithLevel - getStartLevel()) + ")", 375, index);
  782. index += 15;
  783. g.drawString("XP Gain: " + setInMoneyFormat(xpMade) + " (" + setInMoneyFormat(xpHr) + ")", 375, index);
  784. index += 15;
  785. g.drawString("Running for: " + Timing.msToString(getRunningTime()), 375, index);
  786. index += 15;
  787. if(getTask().equals(ScriptTask.CANNONBALLS)
  788. || getTask().equals(ScriptTask.SMELTING)
  789. || getItem().equals(Smithing.CANNONBALLS)) {
  790. g.drawString("Profit: " + setInMoneyFormat(profit) + " (" + setInMoneyFormat(profitHr) + ")", 375, index);
  791. }
  792. }
  793.  
  794. public DecimalFormat decimalFormat = new DecimalFormat("#.##");
  795.  
  796. public String setInMoneyFormat(double amount) {
  797. final int ONE_K = 1000;
  798. final int ONE_M = 1000000;
  799. if(amount >= ONE_M) {
  800. return decimalFormat.format(((double) amount / ONE_M)) + "M";
  801. }
  802. if(amount >= ONE_K) {
  803. return decimalFormat.format(((double) amount / ONE_K)) + "K";
  804. }
  805. return "" + decimalFormat.format(amount);
  806. }
  807.  
  808. public GUI getGui() {
  809. return gui;
  810. }
  811.  
  812. public void setGui(GUI gui) {
  813. this.gui = gui;
  814. }
  815.  
  816. public Bank getBank() {
  817. return bank;
  818. }
  819.  
  820. public void setBank(Bank bank) {
  821. this.bank = bank;
  822. }
  823.  
  824. public BarType getBarType() {
  825. return barType;
  826. }
  827.  
  828. public void setBarType(BarType barType) {
  829. this.barType = barType;
  830. }
  831.  
  832. public Smithing getItem() {
  833. return item;
  834. }
  835.  
  836. public void setItem(Smithing item) {
  837. this.item = item;
  838. }
  839.  
  840. public ScriptTask getTask() {
  841. return task;
  842. }
  843.  
  844. public void setTask(ScriptTask task) {
  845. this.task = task;
  846. }
  847.  
  848. public Forging getForging() {
  849. return forging;
  850. }
  851.  
  852. public void setForging(Forging forging) {
  853. this.forging = forging;
  854. }
  855.  
  856. public int getStartLevel() {
  857. return startLevel;
  858. }
  859.  
  860. public void setStartLevel(int startLevel) {
  861. this.startLevel = startLevel;
  862. }
  863.  
  864. public int getStartXp() {
  865. return startXp;
  866. }
  867.  
  868. public void setStartXp(int startXp) {
  869. this.startXp = startXp;
  870. }
  871.  
  872. public State getState() {
  873. return state;
  874. }
  875.  
  876. public void setState(State state) {
  877. this.state = state;
  878. }
  879.  
  880. public boolean isEndScript() {
  881. return endScript;
  882. }
  883.  
  884. public void setEndScript(boolean endScript) {
  885. this.endScript = endScript;
  886. }
  887.  
  888. public SmithLocation getSmithLocation() {
  889. return smithLocation;
  890. }
  891.  
  892. public void setSmithLocation(SmithLocation smithLocation) {
  893. this.smithLocation = smithLocation;
  894. }
  895.  
  896. public int getCannonballsMade() {
  897. return cannonballsMade;
  898. }
  899.  
  900. public void setCannonballsMade(int cannonballsMade) {
  901. this.cannonballsMade = cannonballsMade;
  902. }
  903.  
  904. public int getRingsUsed() {
  905. return ringsUsed;
  906. }
  907.  
  908. public void setRingsUsed(int ringsUsed) {
  909. this.ringsUsed = ringsUsed;
  910. }
  911.  
  912. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement