Advertisement
Guest User

Untitled

a guest
Oct 25th, 2020 (edited)
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.31 KB | None | 0 0
  1. package core;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.Graphics2D;
  6. import java.awt.Window;
  7.  
  8. import javax.swing.*;
  9. import java.lang.reflect.InvocationTargetException;
  10. import org.osbot.rs07.api.model.NPC;
  11. import org.osbot.rs07.api.ui.RS2Widget;
  12. import org.osbot.rs07.api.ui.Skill;
  13. import org.osbot.rs07.api.ui.Spells.NormalSpells;
  14. import org.osbot.rs07.api.ui.Tab;
  15. import org.osbot.rs07.script.Script;
  16. import org.osbot.rs07.script.ScriptManifest;
  17.  
  18. @ScriptManifest(author = "Heist", info = "Trains magic on the demon in the wizard tower", name = "Heist's Demon Killer", version = 0.1, logo = "https://i.imgur.com/zW8GXPt.jpg")
  19. public class Main extends Script {
  20.  
  21. private GUI gui = new GUI();
  22. private Spell spell;
  23. private Style style;
  24. //time
  25. private long timeBegan;
  26. private long timeRan;
  27. // magic
  28. private int beginningXp;
  29. private int currentXp;
  30. private int xpGained;
  31. private int currentLevel;
  32. private int beginningLevel;
  33. private int levelsGained;
  34. // defense
  35. private int beginningXp1;
  36. private int currentXp1;
  37. private int xpGained1;
  38. private int currentLevel1;
  39. private int beginningLevel1;
  40. private int levelsGained1;
  41.  
  42. @Override
  43. public void onStart() throws InterruptedException {
  44. setWindowTitle();
  45.  
  46. timeBegan = System.currentTimeMillis();
  47. beginningXp = skills.getExperience(Skill.MAGIC);
  48. beginningLevel = skills.getStatic(Skill.MAGIC);
  49. beginningXp1 = skills.getExperience(Skill.DEFENCE);
  50. beginningLevel1 = skills.getStatic(Skill.DEFENCE);
  51.  
  52. try {
  53. SwingUtilities.invokeAndWait(() -> {
  54. gui = new GUI();
  55. gui.open();
  56. });
  57. } catch (InterruptedException | InvocationTargetException e) {
  58. e.printStackTrace();
  59. stop();
  60. return;
  61. }
  62.  
  63. if (!gui.isStarted()) { // If the user closed the dialog and didn't click the Start button
  64. stop();
  65. return;
  66. }
  67.  
  68. log("Heist's Demon Killer has started!");
  69.  
  70. zoomOut();
  71.  
  72. spell = gui.getSelectedSpell();
  73. style = gui.getSelectedCombatStyle();
  74.  
  75.  
  76. if (style.toString().toLowerCase().contentEquals("defensive")) {
  77. log("Setting combat style to defensive.");
  78. canAttack();
  79. getTabs().open(Tab.ATTACK);
  80. Sleep.sleepUntil(() -> getTabs().isOpen(Tab.ATTACK), 5000);
  81.  
  82. RS2Widget w = widgets.get(593, 22);
  83. if (w != null && w.isVisible()) {
  84. w.interact("Choose spell");
  85. } else {
  86. log("[Error] Spellbook widget not found.");
  87. }
  88.  
  89. Sleep.sleepUntil(() -> widgets.isVisible(201), 5000);
  90. selectSpell();
  91.  
  92. } else {
  93. log("Setting combat style to offensive.");
  94. canAttack();
  95. getTabs().open(Tab.ATTACK);
  96. Sleep.sleepUntil(() -> getTabs().isOpen(Tab.ATTACK), 5000);
  97.  
  98. RS2Widget w = widgets.get(593, 26);
  99. if (w != null && w.isVisible()) {
  100. w.interact("Choose spell");
  101. } else {
  102. log("[Error] Spellbook widget not found.");
  103. }
  104.  
  105. Sleep.sleepUntil(() -> widgets.isVisible(201), 5000);
  106. selectSpell();
  107. }
  108. }
  109.  
  110. private void setWindowTitle() {
  111. Window w = SwingUtilities.getWindowAncestor(bot.getCanvas());
  112. JFrame f = (JFrame) w;
  113. f.setTitle("RuneLite");
  114. }
  115.  
  116. private void zoomOut() {
  117. if (client.accessor.getScaleZ() > 1200) {
  118. log("Zooming out.");
  119. getTabs().open(Tab.SETTINGS);
  120. Sleep.sleepUntil(() -> getTabs().isOpen(Tab.SETTINGS), 5000);
  121. RS2Widget w = widgets.get(261, 9);
  122. if (w != null && w.isVisible()) {
  123. w.interact();
  124. } else {
  125. log("[Error] Zoom function not found.");
  126. }
  127. }
  128. }
  129.  
  130. @Override
  131. public int onLoop() throws InterruptedException {
  132. NPC LesserDemon = npcs.closest("Lesser demon");
  133. dismissDialogue();
  134. if(!canAttack()) {
  135. this.stop();
  136. log("[Error] Out of runes.");
  137. }
  138. if (LesserDemon != null) {
  139. if (LesserDemon.isVisible()) {
  140. if (((!myPlayer().isAnimating()) && !getCombat().isFighting()) && !myPlayer().isMoving()
  141. && LesserDemon.getHealthPercent() > 0) {
  142. attack();
  143. }
  144. } else {
  145. getCamera().toEntity(LesserDemon); // move camera to demon if it isn't visible
  146. }
  147. }
  148. return (random(600, 900)); // time before loop starts over
  149. }
  150.  
  151. private void dismissDialogue() throws InterruptedException { // dismiss level-up dialogue
  152. if (dialogues.inDialogue()) {
  153. dialogues.clickContinue();
  154. log("Dismissing dialogue.");
  155. }
  156. }
  157.  
  158. private boolean canAttack() throws InterruptedException {
  159. if(spell.toString().toLowerCase().equals("firestrike")) {
  160. return canUseFireStrike();
  161. }
  162. if(spell.toString().toLowerCase().equals("earthstrike")) {
  163. return canUseEarthStrike();
  164. }
  165. if(spell.toString().toLowerCase().equals("waterstrike")) {
  166. return canUseWaterStrike();
  167. }
  168. if(spell.toString().toLowerCase().equals("airstrike")) {
  169. return canUseAirStrike();
  170. }
  171. return false;
  172.  
  173. }
  174.  
  175. private boolean canUseFireStrike() throws InterruptedException {
  176. return getMagic().canCast(NormalSpells.FIRE_STRIKE, false);
  177. }
  178.  
  179. private boolean canUseEarthStrike() throws InterruptedException {
  180. return getMagic().canCast(NormalSpells.EARTH_STRIKE, false);
  181. }
  182.  
  183. private boolean canUseWaterStrike() throws InterruptedException {
  184. return getMagic().canCast(NormalSpells.WATER_STRIKE, false);
  185. }
  186.  
  187. private boolean canUseAirStrike() throws InterruptedException {
  188. return getMagic().canCast(NormalSpells.WIND_STRIKE, false);
  189. }
  190.  
  191. private void attack() throws InterruptedException {
  192. if (canAttack()) {
  193. NPC LesserDemon = npcs.closest("Lesser demon");
  194. if(LesserDemon != null && LesserDemon.isVisible()) {
  195. LesserDemon.interact("Attack");
  196. log("Attacking demon.");
  197. } else {
  198. log("[Error] Demon not found.");
  199. }
  200. }
  201. }
  202.  
  203.  
  204.  
  205. private void selectSpell() throws InterruptedException {
  206. if (spell.toString().toLowerCase().equals("firestrike")) {
  207. RS2Widget w = widgets.get(201, 1, 4);
  208. if (w != null && w.isVisible()) {
  209. w.interact("Fire Strike");
  210. }
  211. Sleep.sleepUntil(() -> widgets.isVisible(593), 5000);
  212. }
  213.  
  214. if (spell.toString().toLowerCase().equals("earthstrike")) {
  215. RS2Widget w = widgets.get(201, 1, 3);
  216. if (w != null && w.isVisible()) {
  217. w.interact("Earth Strike");
  218. }
  219. Sleep.sleepUntil(() -> widgets.isVisible(593), 5000);
  220. }
  221.  
  222. if (spell.toString().toLowerCase().equals("waterstrike")) {
  223. RS2Widget w = widgets.get(201, 1, 2);
  224. if (w != null && w.isVisible()) {
  225. w.interact("Water Strike");
  226. }
  227. Sleep.sleepUntil(() -> widgets.isVisible(593), 5000);
  228. }
  229.  
  230. if (spell.toString().toLowerCase().equals("airstrike")) {
  231. RS2Widget w = widgets.get(201, 1, 1);
  232. if (w != null && w.isVisible()) {
  233. w.interact("Wind Strike");
  234. }
  235. Sleep.sleepUntil(() -> widgets.isVisible(593), 5000);
  236. }
  237. }
  238.  
  239. @Override
  240. public void onExit() {
  241. if (gui != null) {
  242. gui.close();
  243. }
  244. log("Heist's Demon Killer has exited.");
  245. }
  246.  
  247.  
  248. private final String ft(final long ms){
  249. long s = ms / 1000, m = s / 60, h = m / 60, d = h / 24;
  250. s %= 60; m %= 60; h %= 24;
  251.  
  252. return d > 0 ? String.format("%02d:%02d:%02d:%02d", d, h, m, s) :
  253. h > 0 ? String.format("%02d:%02d:%02d", h, m, s) :
  254. String.format("%02d:%02d", m, s);
  255. }
  256.  
  257.  
  258. @Override
  259. public void onPaint(Graphics2D g) {
  260. Font font = new Font("Open Sans", Font.BOLD, 18);
  261. g.setFont(font);
  262. g.setFont(g.getFont().deriveFont(18.0f));
  263. g.setColor(new Color(0, 0, 0, 175));
  264. g.fillRect(0, 0, 200, 123);
  265. g.setColor(new Color(255, 255, 255, 200));
  266. g.drawString("Heist's Demon Killer", 12, 21);
  267. g.setFont(g.getFont().deriveFont(12.0f));
  268. timeRan = System.currentTimeMillis() - this.timeBegan;
  269. g.drawString("Run time: " + ft(timeRan), 10, 36);
  270. currentXp = skills.getExperience(Skill.MAGIC);
  271. xpGained = currentXp - beginningXp;
  272. g.drawString("Magic XP Gained: " + xpGained, 10, 49);
  273. currentXp1 = skills.getExperience(Skill.DEFENCE);
  274. xpGained1 = currentXp1 - beginningXp1;
  275. g.drawString("Defence XP Gained: " + xpGained1, 10, 62);
  276. currentLevel = skills.getStatic(Skill.MAGIC);
  277. levelsGained = currentLevel - beginningLevel;
  278. currentLevel1 = skills.getStatic(Skill.DEFENCE);
  279. levelsGained1 = currentLevel1 - beginningLevel1;
  280. g.drawString("Magic Levels gained: " + levelsGained, 10, 75);
  281. g.drawString("Magic level: " + currentLevel + "(" + beginningLevel + ")", 10,88);
  282. g.drawString("Defence Levels gained: " + levelsGained1, 10, 101);
  283. g.drawString("Defence level: " + currentLevel1 + "(" + beginningLevel1 + ")", 10,114);
  284. }
  285.  
  286. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement