rendered paste bodyimport java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import javax.swing.border.*;
import org.rsbot.event.events.*;
import org.rsbot.event.listeners.*;
import org.rsbot.script.*;
import org.rsbot.script.methods.*;
import org.rsbot.script.wrappers.*;
@ScriptManifest(authors = { "Necrolyte" }, keywords = "Auto", name = "InsaneSWC", version = 1.0, description = "Options in GUI")
public class InsaneSWC extends Script implements MessageListener, PaintListener, MouseMotionListener {
int starting_level,current_level,gained_level,level_percent;
long start_time,starting_exp,current_exp,gained_exp,exp_per_hour,made_per_hour,made;
String script_name="InsaneSWC";
Font myfont = new Font("Times New Roman", Font.BOLD, 14);
boolean use_paint=false;
TrayIcon tray=null;
boolean using_tray=false;
Image tray_image=null;
int skill_id;
int skill;
int task_id;
int item1_id;
int item2_id;
int result_id;
int bank_id=42192;
int interface_id=905;
int component_id;
int delay;
long timeout;
long timeoutmax;
int step;
int lastcount=0;
int fails=0;
RSObject bankobj=null;
Rectangle GUI=new Rectangle(0,0,0,0);
boolean gui_on=true;
int antiban=0;
long antibantime;
char key[]={(char) KeyEvent.VK_RIGHT,(char) KeyEvent.VK_LEFT};
void Withdraw(int itemid, int count)
{
timeout=System.currentTimeMillis();
while(bank.getItem(itemid)==null)
{
if(System.currentTimeMillis()-timeout>30000)
{
log("Could not find "+itemid+" in bank.");
stopScript(true);
return;
}
sleep(1);
}
RSItem item=bank.getItem(itemid);
while(!item.isComponentValid())
{
}
if(item.getStackSize()<=count)
{
log("Not enough "+itemid+" in bank.");
stopScript(true);
return;
}
RSItem itemr=bank.getItem(itemid);
timeout=System.currentTimeMillis();
while(itemr.getComponent().getAbsoluteY()==interfaces.getComponent(762, 93).getAbsoluteY())
{
itemr=bank.getItem(itemid);
if(System.currentTimeMillis()-timeout>30000)
{
log(itemid+" is on another tab");
stopScript(true);
return;
}
sleep(1);
}
if(count==1)
{
itemr.doClick(true);
}
else
{
itemr.doClick(false);
String acts[] = menu.getActions();
while(acts.length<5)
{
Point m=mouse.getLocation();
m.translate(0,-30);
mouse.move(m);
itemr.doClick(false);
acts = menu.getActions();
}
if(acts[3].equals("Withdraw-"+count))
{
menu.clickIndex(3);
}
else
{
menu.clickIndex(4);
sleep(1000);
keyboard.sendTextInstant(String.valueOf(count), true);
}
}
}
int GetInt(String str, int def)
{
int i=0,len=str.length();
int start=-1,end=-1;
while(i<len)
{
char a=str.charAt(i);
if(a>=48&&a<=57)
{
if(start==-1)
{
start=i;
}
}
else
{
if(start!=-1)
{
end=i;
break;
}
}
i++;
}
if(start!=-1)
{
if(end==-1)
{
end=len;
}
return Integer.parseInt(str.substring(start,end));
}
return def;
}
JCheckBox GUICheck(String name,boolean checked,JPanel panel)
{
JCheckBox check = new JCheckBox();
JLabel label= new JLabel(name);
JPanel subpanel=new JPanel();
check.setSelected(checked);
subpanel.add(label);
subpanel.add(check);
panel.add(subpanel);
return check;
}
JTextField GUIText(String name, String def, int len,JPanel panel)
{
JTextField textfield = new JTextField(def,len);
JLabel label= new JLabel(name);
JPanel subpanel=new JPanel();
subpanel.add(label);
subpanel.add(textfield);
panel.add(subpanel);
return textfield;
}
JComboBox GUICombo(String name, String[] strings, int def, boolean editable, JPanel panel)
{
//String[] xspeeds = {"1","2","4","5","10","20","25","50","100"};
JComboBox combo = new JComboBox(strings);
JLabel label = new JLabel(name);
JPanel subpanel = new JPanel();
combo.setSelectedIndex(def);
combo.setEditable(editable);
subpanel.add(label);
subpanel.add(combo);
panel.add(subpanel);
return combo;
}
@Override
public boolean onStart() {
JFrame frame = new JFrame(script_name);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
JPanel mainpanel = new JPanel(new BorderLayout(0, 1));
Border border = BorderFactory.createTitledBorder("Script Options");
mainpanel.setBorder(border);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JCheckBox traychat= GUICheck("Chat Notifications",false,panel);
JCheckBox usegui= GUICheck("Use Paint",true,panel);
JTextField mousespeedt = GUIText("Mousespeed(1-10):","1",2,panel);
JTextField timeoutt = GUIText("Timeout for retry(in ms):","1000",3,panel);
JTextField delayt = GUIText("Delay time(in ms):","0",3,panel);
String skillnames[]={"Crafting","Fletching","Herblore","Magic","Prayer","No Skill"};
int skillids[]={12,9,15,6,5,25};
String tasks[][]={{"Gems","String","<none>"},{"Fletch","String"},{"Grind","Mix","<none>"},{""},{""},{""}};
String item1s[][][]={{{""}},{{"946(Knife)"},{"1777(Bow String)"}},{{""}},{{""}},{{"Grimy ID"}},{{""}}};
String item2s[][][]={{{""}},
{{"1511(Normal logs)","1521(Oak logs)","1519(Willow logs)","1517(Maple logs)","1515(Yew logs)","1513(Magic logs)"},{"48(Longbow(u))","56(Oak longbow(u))","58(Willow longbow(u))","62(Maple longbow(u))","66(Yew longbow(u))","70(Magic longbow(u))"}},
{{""},{""},{"<none>"}},{{""}},{{""}},{{""}}};
String results[][][]={{{""}},
{{"48(Longbow(u))","56(Oak longbow(u))","58(Willow longbow(u))","62(Maple longbow(u))","66(Yew longbow(u))","70(Magic longbow(u))"},{"839(Longbow)","845(Oak longbow)","847(Willow longbow)","851(Maple longbow)","855(Yew longbow)","859(Magic longbow)"}},
{{""},{""},{"Clean ID"}},{{""}},{{""}},{{""}}};
String componentids[][][]={{{""}},{{"15","16"},{"14"}},{{""},{""},{""}},{{""}},{{""}},{{""}}};
int d=1;
JComboBox skillc = GUICombo("Skill", skillnames,d,false,panel);
JComboBox task = GUICombo("Task:", tasks[d],0,false,panel);
JComboBox item1 = GUICombo("Item 1 ID:", item1s[d][0],0,true,panel);
JComboBox item2 = GUICombo("Item 2 ID:", item2s[d][0],4,true,panel);
JComboBox result = GUICombo("Result ID:", results[d][0],4,true,panel);
JComboBox componentc = GUICombo("Component ID:", componentids[d][0],0,true,panel);
mainpanel.add(panel);
JButton button = new JButton("Start");
Container contentPane = frame.getContentPane();
contentPane.add(mainpanel, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.SOUTH);
frame.pack();
Dimension sc = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((sc.width/2)-(frame.getWidth()/2),(sc.height/2)-(frame.getHeight()/2));
frame.setVisible(true);
int lastskill=d,lasttask=0,lastitem1=0,lastitem2=4,lastresult=4;
while(true)
{
if(!button.getModel().isPressed())
{
int i1 = skillc.getSelectedIndex();
if(i1!=lastskill)
{
task.setModel(new DefaultComboBoxModel(tasks[i1]));
item1.setModel(new DefaultComboBoxModel(item1s[i1][0]));
item2.setModel(new DefaultComboBoxModel(item2s[i1][0]));
result.setModel(new DefaultComboBoxModel(results[i1][0]));
componentc.setModel(new DefaultComboBoxModel(componentids[i1][0]));
lastskill=i1;
lasttask=0;
lastitem1=0;
lastitem2=0;
lastresult=0;
}
int i2 = task.getSelectedIndex();
if(i2!=lasttask)
{
item1.setModel(new DefaultComboBoxModel(item1s[i1][i2]));
item2.setModel(new DefaultComboBoxModel(item2s[i1][i2]));
result.setModel(new DefaultComboBoxModel(results[i1][i2]));
componentc.setModel(new DefaultComboBoxModel(componentids[i1][i2]));
lasttask=i2;
lastitem1=0;
lastitem2=0;
lastresult=0;
}
int i3 = item2.getSelectedIndex();
if(i3!=lastitem2)
{
result.setSelectedIndex(i3);
if(lastskill==1)
{
if(lasttask==1)
{
}
else
{
if(i3==0)
{
componentc.setSelectedIndex(1);
}
else
{
componentc.setSelectedIndex(0);
}
}
}
lastitem2=i3;
lastresult=i3;
}
int i4=result.getSelectedIndex();
if(i4!=lastresult)
{
if(lastskill==1)
{
if(lasttask==1)
{
}
else
{
if(i3==0)
{
componentc.setSelectedIndex(1);
}
else
{
componentc.setSelectedIndex(0);
}
}
}
lastresult=i4;
}
sleep(1);
}
else
{
break;
}
}
frame.setVisible(false);
frame.dispose();
if(traychat.isSelected())
{
if(!SystemTray.isSupported())
{
JOptionPane.showMessageDialog(null, "SystemTray not supported");
}
else
{
try
{
tray_image=Toolkit.getDefaultToolkit().getImage(new URL("http://img228.imageshack.us/img228/8536/82263904.png"));
if(tray_image==null)
{
JOptionPane.showMessageDialog(null, "Could not get tray icon");
}
else
{
tray=new TrayIcon(tray_image.getScaledInstance(SystemTray.getSystemTray().getTrayIconSize().width,SystemTray.getSystemTray().getTrayIconSize().height,0),script_name);
SystemTray.getSystemTray().add(tray);
using_tray=true;
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
}
if(using_tray)
{
tray.displayMessage(script_name,"Using Chat Notifications!",TrayIcon.MessageType.INFO);
}
if(usegui.isSelected())
{
use_paint=true;
}
mouse.setSpeed(GetInt(mousespeedt.getText(),1));
timeoutmax=GetInt(timeoutt.getText(),1);
delay=GetInt(delayt.getText(),0);
skill_id=skillc.getSelectedIndex();
skill=skillids[skill_id];
task_id=task.getSelectedIndex();
item1_id=GetInt(item1.getSelectedItem().toString(),0);
item2_id=GetInt(item2.getSelectedItem().toString(),0);
result_id=GetInt(result.getSelectedItem().toString(),0);
component_id=GetInt(componentc.getSelectedItem().toString(),0);
starting_exp = skills.getCurrentExp(skill);
starting_level = skills.getCurrentLevel(skill);
current_level=starting_level;
if(!game.isLoggedIn())
{
JOptionPane.showMessageDialog(null, "You must be logged in to start this script");
return false;
}
if (game.getCurrentTab() != Game.TAB_INVENTORY)
{
game.openTab(Game.TAB_INVENTORY,true);
}
camera.setPitch(true);
start_time = System.currentTimeMillis();
return true;
}
@Override
public int loop() {
if(step==0)
{
if(bankobj==null)
{
bankobj=objects.getNearest(bank_id);
if(bankobj==null)
{
log("Could not find bank");
stopScript(true);
}
}
bankobj.doClick();
step=1;
timeout=System.currentTimeMillis();
}
else if(step==1)
{
if(bank.isOpen()&&interfaces.getComponent(762,93).isValid())
{
step=2;
}
else if(System.currentTimeMillis()-timeout > timeoutmax)
{
step=0;
fails++;
}
}
else if(step==2)
{
if(task_id==0)
{
RSComponent depositem= interfaces.getComponent(763,0).getComponent(1);
if(depositem.getComponentID()==result_id)
{
depositem.doClick(false);
menu.clickIndex(3);
}
if(inventory.getCountExcept(item1_id,result_id)>0)
{
bank.depositAll();
Withdraw(item1_id,1);
}
else if(!inventory.contains(item1_id))
{
Withdraw(item1_id,1);
}
Withdraw(item2_id,27);
}
if(task_id==1)
{
bank.depositAll();
Withdraw(item2_id,14);
Withdraw(item1_id,14);
}
sleep(delay);
bank.close();
step=3;
timeout=System.currentTimeMillis();
}
else if(step==3)
{
if(task_id==0)
{
if(inventory.getCount(item1_id)==1&&inventory.getCount(item2_id)==27)
{
step=4;
}
else if(timeout>timeoutmax)
{
fails++;
step=0;
}
}
if(task_id==1)
{
if(inventory.getCount(item1_id)==14&&inventory.getCount(item2_id)==14)
{
step=4;
}
else if(System.currentTimeMillis()-timeout>timeoutmax)
{
fails++;
step=0;
}
}
}
else if(step==4)
{
if(task_id==0)
{
inventory.getItem(item1_id).doClick(true);
inventory.getItem(item2_id).doClick(true);
}
if(task_id==1)
{
RSItem item1=inventory.getItemAt(13);
if(item1.getID()!=item2_id)
{
step=0;
fails++;
}
else
{
item1.doClick(true);
inventory.getItem(item1_id).doClick(true);
}
}
step=5;
timeout=System.currentTimeMillis();
}
else if(step==5)
{
if(interfaces.get(interface_id).isValid())
{
step=6;
}
else if(System.currentTimeMillis()-timeout>timeoutmax)
{
fails++;
step=4;
}
}
else if(step==6)
{
if(interfaces.getComponent(interface_id,component_id).doClick())
{
step=7;
timeout=System.currentTimeMillis();
}
}
else if(step==7)
{
if(!interfaces.get(interface_id).isValid())
{
step=8;
timeout=System.currentTimeMillis();
}
else if(System.currentTimeMillis()-timeout>timeoutmax)
{
fails++;
step=6;
}
}
else if(step==8)
{
if(!players.getMyPlayer().isIdle())
{
step=9;
}
else if(System.currentTimeMillis()-timeout>timeoutmax)
{
fails++;
step=4;
}
}
else if(step==9)
{
int count=inventory.getCount(result_id);
made+=count-lastcount;
lastcount=count;
if(inventory.getCount(item2_id)==0)
{
keyboard.releaseKey(key[0]);
keyboard.releaseKey(key[1]);
antiban=0;
step=0;
lastcount=0;
}
if(interfaces.get(740).isValid())
{
keyboard.releaseKey(key[0]);
keyboard.releaseKey(key[1]);
antiban=0;
step=4;//need change
}
if(antiban==0)
{
int i=random(0,1000);
if(i==0)
{
int ang=camera.getAngle();
if(ang<180)
{
keyboard.pressKey(key[0]);
antiban=1;
}
else
{
keyboard.pressKey(key[1]);
antiban=2;
}
antibantime=System.currentTimeMillis();
}
}
else
{
long time=(antibantime-System.currentTimeMillis())+2000;
if(time<0)
{
time=0;
}
int i=random(0,(int)time);
if(i==0)
{
keyboard.releaseKey(key[antiban-1]);
antiban=0;
}
}
}
sleep(1);
return 1;
}
@Override
public void onFinish()
{
if(using_tray)
{
SystemTray.getSystemTray().remove(tray);
}
}
@Override
public void onRepaint(Graphics g) {
if(!use_paint)
{
return;
}
Graphics2D g2d = (Graphics2D) g;
long hours,minutes,seconds,milli,millis;
milli = System.currentTimeMillis() - start_time;
millis=milli;
if(millis<=0){millis=1;}
hours = millis / (1000 * 60 * 60);
millis -= hours * (1000 * 60 * 60);
minutes = millis / (1000 * 60);
millis -= minutes * (1000 * 60);
seconds = millis / 1000;
current_exp = skills.getCurrentExp(skill);
gained_exp = (current_exp - starting_exp);
current_level = skills.getCurrentLevel(skill);
gained_level = (current_level-starting_level);
level_percent = skills.getPercentToNextLevel(skill);
if(milli<=0){milli=1;}
made_per_hour=(made*3600000)/milli;
exp_per_hour=(gained_exp*3600000)/milli;
GUI = interfaces.getComponent(137,0).getArea();
int x=GUI.x;
int y=GUI.y;
g2d.setColor(new Color(0,0,0,255));
//client.getLocation();
//mouse.getX();
int alpha=255;
//FontMetrics fm = g2d.getFontMetrics(myfont);
//String xpto=level_percent + "% - " + skills.getExpToNextLevel(skill) + "exp to " + (current_level + 1)+" "+skills.SKILL_NAMES[skill];
//int width = fm.stringWidth(xpto);
if(!gui_on)
{
return;
}
g2d.setColor(new Color(217,199,163,alpha));
g2d.fillRect(x, y, GUI.width,GUI.height);
g2d.setColor(new Color(0,0,0,alpha));
g2d.setFont(myfont);
g2d.drawString("Time running: " + hours + ":" + minutes + ":" + seconds + ".", x+5, y+15);
g2d.drawString("Made: " + made, x+5, y+30);
g2d.drawString("Made/Hr: " + made_per_hour, x+5, y+45);
g2d.drawString("EXP Gained: " + gained_exp, x+5, y+60);
g2d.drawString("EXP/Hr: " + exp_per_hour, x+5, y+75);
g2d.drawString("Percent to next level: " + level_percent+"% :"+ skills.getExpToNextLevel(skill)+" EXP", x+5, y+90);
g2d.drawString("Retries: " + fails, x+5, y+105);
/*g2d.setColor(new Color(255, 0, 0, alpha));
g2d.fillRect(0, 460, 519, 15);
g2d.setColor(new Color(0, 255, 0, alpha));
g2d.fillRect(0, 460, Math.round((float)5.19*perc), 15);
g2d.setColor(new Color(0,0,0,alpha));
g2d.drawString(xpto, (519-width)/2, 475);*/
}
@Override
public void messageReceived(MessageEvent e) {
int id=e.getID();
if(using_tray&&id!=MessageEvent.MESSAGE_CLIENT&&id!=MessageEvent.MESSAGE_SERVER&&id!=MessageEvent.MESSAGE_ACTION)
{
tray.displayMessage(e.getSender(),e.getMessage(),TrayIcon.MessageType.INFO);
}
}
public void mouseMoved(MouseEvent e)
{
Point p=e.getPoint();
if(GUI.contains(p))
{
gui_on=false;
}
else
{
gui_on=true;
}
}
public void mouseDragged(MouseEvent e)
{
}
}