rendered paste bodyimport 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.listeners.MessageListener;
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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
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();
}// </editor-fold>
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
}
}