import 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=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",""},{"Fletch","String"},{"Grind","Mix",""},{""},{""},{""}}; 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))"}}, {{""},{""},{""}},{{""}},{{""}},{{""}}}; 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) { } }