All pastes #2065751 Raw Edit

Stuff

public text v1 · immutable
#2065751 ·published 2011-05-20 14:34 UTC
rendered paste body
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<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)
    {
    }
}