Advertisement
Guest User

Decanter

a guest
Oct 3rd, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.41 KB | None | 0 0
  1. package scripts.Decanter;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.Graphics;
  7. import java.awt.Graphics2D;
  8. import java.awt.Image;
  9. import java.awt.Toolkit;
  10. import java.io.IOException;
  11. import java.net.URL;
  12.  
  13. import javax.imageio.ImageIO;
  14. import javax.swing.JFrame;
  15.  
  16. import org.tribot.api.General;
  17. import org.tribot.api.Timing;
  18. import org.tribot.api.input.Mouse;
  19. import org.tribot.api.types.generic.Filter;
  20. import org.tribot.api.util.ABCUtil;
  21. import org.tribot.api2007.Banking;
  22. import org.tribot.api2007.Game;
  23. import org.tribot.api2007.Inventory;
  24. import org.tribot.api2007.WebWalking;
  25. import org.tribot.api2007.types.RSItem;
  26. import org.tribot.api2007.types.RSItemDefinition;
  27. import org.tribot.script.Script;
  28. import org.tribot.script.ScriptManifest;
  29. import org.tribot.script.interfaces.MessageListening07;
  30. import org.tribot.script.interfaces.Painting;
  31.  
  32. @ScriptManifest(authors = { "Netami" }, category = "Tools", name = "Single Dose Maker", version = 1.00, description = "Turns potions into single doses!", gameMode = 1)
  33.  
  34.  
  35. public class Decanter extends Script implements MessageListening07, Painting{
  36. public int twoDoseID = 123;
  37. public int threeDoseID = 121;
  38. public int fourDoseID = 2428;
  39. public static int vialID = 229;
  40. public static boolean runScript = true;
  41. public boolean GUI_COMPLETE = false;
  42. public boolean potionCreated = false;
  43. public static String potionToDecant = "";
  44. public static String fourDose;
  45. public static String threeDose;
  46. public static String twoDose;
  47. public int decantsPerformed = 0;
  48.  
  49. public ABCUtil abc = new ABCUtil();
  50.  
  51. @Override
  52. public void run() {
  53. Mouse.setSpeed(100);
  54. Decanter_GUI GUI = new Decanter_GUI();
  55. JFrame f = new JFrame();
  56. f.getContentPane();
  57. f.add(GUI);
  58. Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
  59. int screenW = (screensize.width) / 2;
  60. int screenH = (screensize.height / 2);
  61. f.setVisible(true);
  62. f.setLocation(screenW / 2, screenH / 2);
  63. f.setSize(425,250);
  64.  
  65. while(!GUI_COMPLETE){
  66. sleep(300);
  67. }
  68. f.setVisible(false);
  69.  
  70. fourDose = potionToDecant + "(4)";
  71. threeDose = potionToDecant + "(3)";
  72. twoDose = potionToDecant + "(2)";
  73. println("Time to decant - thanks for using my script!");
  74.  
  75. while(runScript){
  76. sleep(50,100);
  77. stateHandler();
  78. }
  79. }
  80.  
  81. public static boolean potionExists(String potionName){
  82. return getPotionsWithout(potionName,1,false).length > 0;
  83. }
  84.  
  85. enum State {
  86. CLICK_POTION,
  87. CLICK_VIAL,
  88. OPEN_BANK,
  89. WALK_TO_BANK,
  90. BANK_ITEMS
  91. }
  92.  
  93. private static State getState(){
  94. if (Banking.isInBank()) {
  95. if (potionExists(potionToDecant)) {
  96. if (Game.isUptext("Use")) {
  97. return State.CLICK_VIAL;
  98. } else {
  99. return State.CLICK_POTION;
  100. }
  101. } else {
  102. if (!Banking.isBankScreenOpen()) {
  103. return State.OPEN_BANK;
  104. } else {
  105. return State.BANK_ITEMS;
  106. }
  107. }
  108. } else {
  109. return State.WALK_TO_BANK;
  110. }
  111. }
  112.  
  113. public static void stateHandler(){
  114. switch (getState()) {
  115. case CLICK_POTION:
  116. Clicking.clickUsePotion(potionToDecant);
  117. break;
  118. case CLICK_VIAL:
  119. Clicking.usePotionOnVial();
  120. break;
  121. case BANK_ITEMS:
  122. Bank();
  123. break;
  124. case WALK_TO_BANK:
  125. WebWalking.walkToBank();
  126. break;
  127. case OPEN_BANK:
  128. Banking.openBank();
  129. break;
  130. }
  131. }
  132.  
  133.  
  134. public static RSItem[] getPotionsWithout(final String potionName, final int exceptedDose, boolean bank) {
  135. if(bank){
  136. return Banking.find(new Filter<RSItem>() {
  137. @Override
  138. public boolean accept(RSItem rsItem) {
  139. RSItemDefinition definition;
  140. String name;
  141. return rsItem != null
  142. && (definition = rsItem.getDefinition()) != null
  143. && (name = definition.getName()) != null
  144. && name.contains(potionName)
  145. && !name.contains(Integer.toString(exceptedDose));
  146.  
  147. }
  148. });
  149. }else{
  150. return Inventory.find(new Filter<RSItem>() {
  151. @Override
  152. public boolean accept(RSItem rsItem) {
  153. RSItemDefinition definition;
  154. String name;
  155. return rsItem != null
  156. && (definition = rsItem.getDefinition()) != null
  157. && (name = definition.getName()) != null
  158. && name.contains(potionName)
  159. && !name.contains(Integer.toString(exceptedDose));
  160.  
  161. }
  162. });
  163. }
  164. }
  165.  
  166. public static void withdraw(String dosage){
  167. General.sleep(200,2000);
  168. Banking.withdraw(0, vialID);
  169. General.sleep(200,2000);
  170. Banking.close();
  171. Antiban.AFK();
  172. }
  173.  
  174. public static void Bank(){
  175. General.sleep(200,500);
  176. Banking.depositAll();
  177. RSItem[] bankPotions;
  178. RSItem[] bankVials;
  179.  
  180. if((bankPotions = Banking.find(fourDose)).length > 0 && Banking.find(fourDose)[0].getStack() >= 7 && (bankVials = Banking.find(vialID)).length > 0 && Banking.find(vialID)[0].getStack() > 21){
  181. Banking.withdraw(7, fourDose);
  182. withdraw(fourDose);
  183. }else if((bankPotions = Banking.find(threeDose)).length > 0 && Banking.find(threeDose)[0].getStack() >= 9 && (bankVials = Banking.find(vialID)).length > 0 && Banking.find(vialID)[0].getStack() > 19){
  184. Banking.withdraw(9, threeDose);
  185. withdraw(threeDose);
  186. }else if((bankPotions = Banking.find(twoDose)).length > 0 && Banking.find(twoDose)[0].getStack() >= 11 && (bankVials = Banking.find(vialID)).length > 0 && Banking.find(vialID)[0].getStack() > 17){
  187. Banking.withdraw(11,twoDose);
  188. withdraw(twoDose);
  189. }else{
  190. General.println("Could not find specified potions/vials in bank!");
  191. runScript = false;
  192. }
  193. }
  194.  
  195. @SuppressWarnings("serial")
  196. public class Decanter_GUI extends javax.swing.JPanel {
  197.  
  198. /**
  199. * Creates new form Decanter_GUI
  200. */
  201. public Decanter_GUI() {
  202. initComponents();
  203. }
  204.  
  205. /**
  206. * This method is called from within the constructor to initialize the form.
  207. * WARNING: Do NOT modify this code. The content of this method is always
  208. * regenerated by the Form Editor.
  209. */
  210. @SuppressWarnings("unchecked")
  211.  
  212. private void initComponents() {
  213.  
  214. jLabel1 = new javax.swing.JLabel();
  215. jTextField1 = new javax.swing.JTextField();
  216. jLabel2 = new javax.swing.JLabel();
  217. jButton1 = new javax.swing.JButton();
  218.  
  219. jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 48)); // NOI18N
  220. jLabel1.setText("Netami's Decanter");
  221.  
  222. jTextField1.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N
  223.  
  224. jLabel2.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N
  225. jLabel2.setText("Potion: ");
  226.  
  227. jButton1.setFont(new java.awt.Font("Segoe UI", 0, 24)); // NOI18N
  228. jButton1.setText("Start");
  229. jButton1.addActionListener(new java.awt.event.ActionListener() {
  230. public void actionPerformed(java.awt.event.ActionEvent evt) {
  231. potionToDecant = jTextField1.getText().toString();
  232. if(!potionToDecant.endsWith(" potion")){
  233. potionToDecant = potionToDecant + " potion";
  234. }
  235. GUI_COMPLETE = true;
  236. }
  237. });
  238.  
  239. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  240. this.setLayout(layout);
  241. layout.setHorizontalGroup(
  242. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  243. .addGroup(layout.createSequentialGroup()
  244. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  245. .addGroup(layout.createSequentialGroup()
  246. .addContainerGap()
  247. .addComponent(jLabel1))
  248. .addGroup(layout.createSequentialGroup()
  249. .addGap(56, 56, 56)
  250. .addComponent(jLabel2)
  251. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  252. .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 207, javax.swing.GroupLayout.PREFERRED_SIZE)))
  253. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  254. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
  255. .addGap(0, 0, Short.MAX_VALUE)
  256. .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
  257. .addGap(134, 134, 134))
  258. );
  259. layout.setVerticalGroup(
  260. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  261. .addGroup(layout.createSequentialGroup()
  262. .addContainerGap()
  263. .addComponent(jLabel1)
  264. .addGap(18, 18, 18)
  265. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  266. .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  267. .addComponent(jLabel2))
  268. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  269. .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
  270. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  271. );
  272. }// </editor-fold>
  273.  
  274. // Variables declaration - do not modify
  275. private javax.swing.JButton jButton1;
  276. private javax.swing.JLabel jLabel1;
  277. private javax.swing.JLabel jLabel2;
  278. private javax.swing.JTextField jTextField1;
  279. // End of variables declaration
  280. }
  281. public void serverMessageReceived(String arg0) {
  282. if(arg0.contains("divide")){
  283. decantsPerformed = decantsPerformed + 1;
  284. }
  285. }
  286.  
  287. private Image getImage(String url) {
  288. try {
  289. return ImageIO.read(new URL(url));
  290. } catch(IOException e) {
  291. return null;
  292. }
  293. }
  294. private final Image img = getImage("http://www.runehq.com/image/geitems/v/vial.gif");
  295. Font font = new Font("Verdana", Font.BOLD, 14);
  296.  
  297. public void onPaint(Graphics g) {
  298. Graphics2D gg = (Graphics2D)g;
  299. gg.drawImage(img, 418, 355, null);
  300. g.setFont(font);
  301. g.setColor(new Color(44,44,44));
  302. g.drawString("Runtime: " + Timing.msToString(getRunningTime()), 248, 400);
  303. g.drawString("Decants Performed: " + decantsPerformed,248,420);
  304. }
  305.  
  306. public void clanMessageReceived(String arg0, String arg1) {
  307. }
  308. public void duelRequestReceived(String arg0, String arg1) {
  309. }
  310. public void personalMessageReceived(String arg0, String arg1) {
  311. }
  312. public void playerMessageReceived(String arg0, String arg1) {
  313. }
  314. public void tradeRequestReceived(String arg0) {
  315. }
  316.  
  317. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement