import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import org.rsbot.event.events.MessageEvent; import org.rsbot.event.lis]#]#]]]]]] import org.rsbot.event.listeners.PaintListener; import org.rsbot.script.Script; import org.rsbot.script.ScriptManifest; import org.rsbot.script.wrappers.RSItem; import org.rsbot.script.wrappers.RSObject; import org.rsbot.script.wrappers.RSPlayer; import org.rsbot.script.wrappers.RSTile; import org.rsbot.script.wrappers.RSTilePath; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.imageio.ImageIO; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JFrame; import javax.swing.JLabel; @ScriptManifest( authors = {"RuNnNy"}, version = 0.1, keywords = {"Alch", "banking", "money", "bank"}, description = "Alch anywhere!", name = "RuNnNy_Alch" ) public class RuNnNy_Alch extends Script implements PaintListener, MessageListener { ScriptManifest props = getClass().getAnnotation(ScriptManifest.class); int natureRID = 561; int itemID; int fireStaffID = 17005; int boothID = 0; int counter = 0; Point click = new Point(573, 372); int itemAlched = 0; int alchemyAnimation = 9633; long startTime; int expGained = 0; int startExp = 0; int amounthAlched = 0; int amountToAlch = 0; public boolean onStart(){ log ("Starting RuNnNy_Alch" + props.name() + " v" + props.version() + "!"); AlchGUI g = new AlchGUI(); g.setVisible(true); while (g.isVisible()) sleep(250); itemID = Integer.parseInt(g.jTextField1.getText()); mouse.setSpeed(5); startTime = System.currentTimeMillis(); startExp = skills.getCurrentExp(skills.MAGIC); return true; } @Override public int loop() { if (inventory.contains(itemID)) alch(); else stopScript(); return random(150, 600); } public void onFinish() { log ("Thank you for using " + props.name() + " v" + props.version() + "!"); } private final Color color1 = new Color(0, 0, 0, 174); private final Color color2 = new Color(0, 0, 0); private final Color color3 = new Color(51, 255, 0, 166); private final Font font1 = new Font("Arial", 1, 15); private final Font font2 = new Font("Arial", 1, 10); private void alch() { RSItem item = inventory.getItem(itemID); if (item != null) { magic.castSpell(59); sleep(100, 300); item.doClick(true); itemAlched++; sleep(100, 300); } } @Override public void messageReceived(MessageEvent e) { /*RSPlayer me = getMyPlayer(); if(me.getAnimation() == alchemyAnimation) { itemAlched++; }*/ } @Override public void onRepaint(Graphics g) { Graphics2D g1 = (Graphics2D)g; expGained = skills.getCurrentExp(skills.MAGIC) - startExp; long millis = System.currentTimeMillis() - startTime; long hours = millis / (1000 * 60 * 60); millis -= hours * (1000 * 60 *60); long minutes = millis / (1000 * 60); millis -= minutes * (1000 * 60); long seconds = millis / 1000; float xpsec = 0; if ((minutes > 0 || hours > 0 || seconds > 0) && expGained > 0) { xpsec = ((float) expGained)/(float)(seconds + (minutes*60)+ (hours*60*60)); } float xpmin = xpsec * 60; float xphour = xpmin * 60; float alchsec = 0; if ((minutes > 0 || hours > 0 || seconds > 0) && itemAlched > 0) { alchsec = ((float) itemAlched)/(float)(seconds + (minutes*60)+ (hours*60*60)); } float alchmin = alchsec * 60; float alchhour = alchmin * 60; g1.setColor(color1); g1.fillRect(338, 3, 178, 56); g1.setColor(color2); g1.drawRect(338, 3, 178, 56); g1.setFont(font1); g1.setColor(color3); g1.drawString("RuNnNy Alcher", 227, 17); g1.setFont(font2); g1.drawString("Runtime: " + hours + ":" + minutes + ":" + seconds , 341, 31); g1.drawString("Experience gained: " + expGained + " Exp/h: " + (int)xphour, 341, 43); g1.drawString("Items alched: " + itemAlched + " Alch/h: " + (int)alchhour, 341, 55); final int percent = skills.getPercentToNextLevel(skills.MAGIC); //change the MINING to the stat u want g.drawString("Percent till next level: ", 377, 10); g.setColor(Color.red); g.fillRoundRect(377, 13, 100, 10, 15, 15); //these must be on same cordinates g.setColor(Color.green); g.fillRoundRect(377, 13, percent, 10, 15, 15); //these must be on same cordinates g.setColor(Color.black); g.drawString("" + percent + "%", 423, 22); //this must be on the center of the bar g.drawRoundRect(377, 13, 100, 10, 15, 15); //these must be on same cordinates g.drawRoundRect(377, 13, percent, 10, 15, 15); //these must be on same cordinates } /** * * @author Hlynur */ public class AlchGUI extends javax.swing.JFrame { /** Creates new form AlchGUI */ public AlchGUI() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // private void initComponents() { jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N jLabel1.setForeground(new java.awt.Color(51, 255, 0)); jLabel1.setText("RuNnNy Alch"); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jLabel2.setText("Item ID"); jButton1.setText("Start Script"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(53, 53, 53) .addComponent(jLabel1)) .addGroup(layout.createSequentialGroup() .addGap(103, 103, 103) .addComponent(jLabel2)) .addGroup(layout.createSequentialGroup() .addGap(84, 84, 84) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE)))) .addContainerGap(62, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { this.hide(); } /** * @param args the command line arguments */ public void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new AlchGUI().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JTextField jTextField1; // End of variables declaration } }