Skip to content
View in the app

A better way to browse. Learn more.

OSBot :: 2007 OSRS Botting

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (โ‹ฎ) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Leaderboard

Popular Content

Showing content with the highest reputation on 09/10/15 in Posts

  1. Hire a lawyer, would be easy to prove you were hacked/phished. You seem more concerned about your runescape account than the jail sentence. before denying claims, you may want to remove this video lmao.
  2. ๐Ÿ‘‘CzarScripts #1 Bots ๐Ÿ‘‘ ๐Ÿ‘‘ LATEST BOTS ๐Ÿ‘‘ If you want a trial - just post below with the script name, you can choose multiple too. ๐Ÿ‘‘ Requirements ๐Ÿ‘‘ Hit 'like' ๐Ÿ‘ on this thread
  3. Just made this real quick! hahaha inspired by Jauz
  4. The fact that you are even remotely caring about the status of your RS account when you're potentially facing prison makes me think there's something wrong in your head.
  5. HAI

    4 points
  6. no more afking guthans in NMZ you say
  7. I don't think you're understanding how serious this is. Jagex have sent people to jail before and you can't just hide behind a pixelated-safety net. You had the same I.P address as the opposed hacker? which makes your allegation VERY hard to prove. But, at least take a few steps in the right direction..... Delete all your youtube videos, esp the ones of you smoking pot and becoming a muslim lol? how do you think that makes you look to people? and lastly, delete this post. It is NOT doing you no favours. I hope if you are innocent, that a judge/lawyer can see that and help you out.
  8. I've requested @Kabana to post here. Why would you let someone even do services for you in the first place if you don't even know who he is on osbot?
  9. HAI

    3 points
    Welcome to OSBot! Be careful, most of these guys have never talked to a girl before.
  10. Holidays are coming up for uni! So what this means is i will be releasing a few money making scripts that i have been using privately for the public to purchase. Whilst the semester break is on i will be making a few new ones also if you have any requests that i can work on let me know. Also i will be completely fixing little problems with my current scripts.
  11. dont bot an account you dont want to risk
  12. its like a shortened link of youtube if you think its a malicious site
  13. Sold my guthans set yesterday at 14.5m..Feel bad for the guy who bought it l0l I just saw on reddit where people are buying them for 5-6m right now
  14. Sorry what did u say too distracted by that picture
  15. Prices 1.15-1.20/m (post below or pm!) Example (a $10 voucher. 10/1.15m = 8.7m)
  16. I wrote this object loader class to make a personal aio woodcutting script. I thought i'd share it with you guys Hope something can be learnt from this ObjectLoader class: import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.DefaultListModel; import javax.swing.JScrollPane; import javax.swing.JButton; import javax.swing.JList; import org.osbot.rs07.api.map.Position; import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.script.Script; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.ArrayList; import javax.swing.JLabel; import javax.swing.SwingConstants; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.JTextField; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; public class ObjectLoader extends JFrame { /** * @author Apaec */ private static final long serialVersionUID = 1L; private JPanel contentPane; private String interactionString; private int radius = 10; private final DefaultListModel<String> modelDesired = new DefaultListModel<String>(); private final DefaultListModel<String> modelLoaded = new DefaultListModel<String>(); private ArrayList<RS2Object> objectListDesired = new ArrayList<RS2Object>(); private ArrayList<RS2Object> objectListLoaded = new ArrayList<RS2Object>(); private ArrayList<Position> controlPos = new ArrayList<Position>(); private boolean isVisible = false; public ObjectLoader(final Script script, String defaultSearchString, int defaultRadius) { this.interactionString = defaultSearchString; this.radius = defaultRadius; } public void openLoader(final Script script) { setTitle("Object Loader"); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 450, 305); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); setAlwaysOnTop(true); setResizable(false); JLabel lblLoadObjectsWithin = new JLabel("Load objects within radius:"); JLabel lblLoadObjectsWith = new JLabel("Load objects with action:\r\n"); final JSpinner spinner = new JSpinner(); final JTextField txtChopDown = new JTextField(interactionString); JScrollPane scrollPane = new JScrollPane(); final JList<String> desiredtemsList = new JList<String>(modelDesired); JLabel lblDesiredObjects = new JLabel("Desired Objects"); JScrollPane scrollPane_1 = new JScrollPane(); final JList<String> loadedItemsList = new JList<String>(modelLoaded); JLabel lblNewLabel = new JLabel("Loaded Local Objects"); JButton btnNewButton = new JButton("<<"); JButton button = new JButton(">>"); JButton btnRefresh = new JButton("Refresh"); JButton btnSave = new JButton("Save"); lblLoadObjectsWithin.setBounds(10, 11, 193, 14); lblLoadObjectsWith.setBounds(10, 36, 193, 14); txtChopDown.setBounds(213, 33, 215, 20); btnNewButton.setBounds(192, 61, 54, 69); button.setBounds(192, 134, 54, 69); btnRefresh.setBounds(10, 214, 89, 42); btnSave.setBounds(109, 214, 319, 42); spinner.setBounds(213, 8, 215, 20); scrollPane.setBounds(10, 61, 178, 142); scrollPane_1.setBounds(250, 61, 178, 142); txtChopDown.setHorizontalAlignment(SwingConstants.CENTER); txtChopDown.setColumns(10); lblDesiredObjects.setHorizontalAlignment(SwingConstants.CENTER); lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER); scrollPane.setViewportView(desiredtemsList); scrollPane.setColumnHeaderView(lblDesiredObjects); scrollPane_1.setViewportView(loadedItemsList); scrollPane_1.setColumnHeaderView(lblNewLabel); spinner.setModel(new SpinnerNumberModel(radius, 1, 30, 1)); contentPane.add(lblLoadObjectsWithin); contentPane.add(spinner); contentPane.add(lblLoadObjectsWith); contentPane.add(txtChopDown); contentPane.add(scrollPane); contentPane.add(scrollPane_1); contentPane.add(btnNewButton); contentPane.add(button); contentPane.add(btnRefresh); contentPane.add(btnSave); setVisible(true); isVisible = true; spinner.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { radius = (int) spinner.getValue(); } }); txtChopDown.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { interactionString = txtChopDown.getText(); } public void insertUpdate(DocumentEvent arg0) { interactionString = txtChopDown.getText(); } public void removeUpdate(DocumentEvent arg0) { interactionString = txtChopDown.getText(); } }); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (loadedItemsList.getSelectedIndex() != -1) { modelDesired .addElement(convertObjectToString(objectListLoaded .get(loadedItemsList.getSelectedIndex()))); objectListDesired.add(objectListLoaded.get(loadedItemsList .getSelectedIndex())); objectListLoaded.remove(loadedItemsList.getSelectedIndex()); modelLoaded.removeElementAt(loadedItemsList .getSelectedIndex()); } } }); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (desiredtemsList.getSelectedIndex() != -1) { modelLoaded .addElement(convertObjectToString(objectListDesired .get(desiredtemsList.getSelectedIndex()))); objectListLoaded.add(objectListDesired.get(desiredtemsList .getSelectedIndex())); objectListDesired.remove(desiredtemsList.getSelectedIndex()); modelDesired.removeElementAt(desiredtemsList .getSelectedIndex()); } } }); btnRefresh.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { clearListsAndModels(); ArrayList<RS2Object> objectsAll = null; objectsAll = loadNearbyObjectsForActionAsList(script, getRadius(), getInteractionString(), true); if (objectsAll != null) { for (RS2Object o : objectsAll) modelLoaded.addElement(convertObjectToString(o)); objectListLoaded = objectsAll; } } }); btnSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { setVisible(false); isVisible = false; } }); } public String convertObjectToString(RS2Object o) { return o.getName() + " (" + o.getPosition().getX() + "," + o.getPosition().getY() + "," + o.getPosition().getZ() + ")"; } public String getInteractionString() { return interactionString; } public int getRadius() { return radius; } public void clearListsAndModels() { modelLoaded.clear(); modelDesired.clear(); objectListDesired.clear(); objectListLoaded.clear(); controlPos.clear(); } public boolean isOpen() { return isVisible; } public RS2Object[] getAllObjects() { if (objectListLoaded.size() > 0) { RS2Object[] objects = new RS2Object[objectListLoaded.size()]; for (RS2Object o : objectListLoaded) objects[objectListLoaded.indexOf(o)] = o; return objects; } else { return null; } } public RS2Object[] getDesiredObjects() { if (objectListDesired.size() > 0) { RS2Object[] objects = new RS2Object[objectListDesired.size()]; for (RS2Object o : objectListDesired) objects[objectListDesired.indexOf(o)] = o; return objects; } else { return null; } } private ArrayList<RS2Object> loadNearbyObjectsForActionAsList( Script script, int radius, String action, boolean clearLists) { if (clearLists) clearListsAndModels(); ArrayList<RS2Object> objects = new ArrayList<RS2Object>(); for (RS2Object r : script.objects.getAll()) { if (r != null && r.exists() && !r.getName().equals("null") && script.map.distance(r) <= radius && !controlPos.contains(r.getPosition())) { if (action.equals("")) { controlPos.add(r.getPosition()); objects.add(r); } else if (r.hasAction(action)) { controlPos.add(r.getPosition()); objects.add(r); } } } return objects.size() > 0 ? objects : null; } } >>apologies for the poor jframe code, used a gui builder. Did my best to tidy it up somewhat but I understand it's still a little messy. How to use it in an example script: import org.osbot.rs07.api.model.RS2Object; import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(name = "Object loader demo", author = "Apaec", version = 1.0, info = "Demo displayin object loader", logo = "") public class ObjectLoaderDemo extends Script { ObjectLoader loader; RS2Object[] desiredObjects = null; public void onStart() { loader = new ObjectLoader(this, "", 10); if (!loader.isOpen()) loader.openLoader(this); } public int onLoop() throws InterruptedException { while (loader.isOpen()) { sleep(400); desiredObjects = loader.getDesiredObjects(); } // visual debug: if (desiredObjects.length > 0) for (RS2Object o : desiredObjects) if (o != null && o.exists()) log(o.getName()); return 10; } public void onExit() { if (loader.isOpen()) loader.dispose(); } } Where desiredObjects is your array containing the objects configured by the user. Screenshots: Gif: If you're commenting on my code, please be constructive, and I understand it's a bit below-par in places. I know how it is tho when posting snippets x) how it helps apa
  17. Hey guys - I wanted to share a bit of pseudocode that I've successfully used on bots in the past and resulted in a ~<2% ban rate, even on highly populated areas and pretty easily detected scripts. This method does take a bit of processing time, and isn't always recommended for every click needed. Also, it's late and I've been drinking, so there are likely a ton of pseudocoding mistakes. First, let's pretend we have a 3x3 grid we want to click on in the format (x,y) where (1,1) is the top left corner and (3,3) is the bottom right corner. As far as I know, almost every clicking algorithm will click randomly on the 3x3 grid, resulting in a distribution over time of roughly 1/9 clicks on each square. This is not desirable, as human clicking will not provide a perfect distribution and will tend to fall closer to where the cursor is initially - that is, if my mouse is at -2,-2 (above and to the left of our 3x3 click target), I will tend to click more towards (1,1) than (3,3). The opposite is true if I my cursor is at (5,5) - I will tend to click more towards (3,3) than (1,1). At a location such as (2, 5), I may tend to click more towards (2,3), and often more towards the middle row than anything else. In order to follow these better click patterns, we need to first identify which direction our mouse is relative to the target. Because I'm lazy, I use the 8 cardinal directions - North (2,1), NorthEast (3,1), East (2,3), etc. to identify the path of the movement. So the first part of our script becomes: GetCursorLocation(){ dX = CursorX - TargetX (note that there should be logic to find the closest X and Y in the target grid) dY = CursorY - TargetY } Now that we know which direction we're going to move, we should figure out which "region" of clicking we should fall into: FindCardinalDirection(dx, dy){ // logic to define which click regime you're in // I like to use if dX or dY is greater than 3-4x the other to use NSEW instead of NE, SE, etc. return "North", "South", etc. } The next part is a little bit more difficult - How do we get a better click distribution? The answer is in statistics - namely Gaussian (for the most part). I'll offer a simple example for the North Case. If (FindCardinalDirection = North) then{ // for this code block, we're going to try to target the middle y row (x,2) the most, with the x row (1,y) the most likely vertical click location. LocationToActuallyClick(){ while (not 1<= Xclick <= 3){ Xclick = 1 Xclick = Xclick + rand(0,1)-rand(0,1) //where rand(0,1) is a random choice between 0 and 1 Xclick = Xclick+ rand(0,1)-rand(0,1) } Yclick = 2 Yclick = Yclick + rand(0,1) - rand (0,1) return (Xclick, Yclick) } } ClickMouseOn(Xclick,Yclick) The resulting Y distribution should be ~25% row 1, ~50% row 2, and ~50% row 3. The resulting X distribution should be about 57% row 1, ~29% row 2, and ~14% row 3. This should be a lot closer to "normal" human clicking. I prefer to use normal distributions with sigma between .2 and 1.5, depending on the application. Note that this does take a bit of runtime and can slow down computers a decent amount if running multiple bots or on older machines.
  18. Hey bro, I can't figure out how to trial your crab script , It keeps asking me to buy it when i try to add it , What am i suppose to do ?
  19. I tried and it doesn't work
  20. Apologies for not giving more info, I had aggressive mode set to max, but the last slider left as standard so it doesnt attack others crabs, I have been baby sitting it recently at wests, and i have caught it clicking over in the east patch so it just stands by the fence now, Thanks
  21. hello, just bought this script and it is also running south. How do i check what version i am running? here's an error log just in case: [iNFO][bot #2][09/10 02:13:35 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:35 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:35 PM]: Found unlocal edge! 13, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:35 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:35 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:35 PM]: Found unlocal edge! 14, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:35 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:35 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:35 PM]: Found unlocal edge! 14, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:35 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:35 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:36 PM]: Found unlocal edge! 14, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:36 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:36 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:36 PM]: Found unlocal edge! 14, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:36 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:36 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:36 PM]: Found unlocal edge! 14, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:36 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:36 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:36 PM]: Found unlocal edge! 12, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:36 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:36 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:37 PM]: Found unlocal edge! 12, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:37 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:37 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:37 PM]: Found unlocal edge! 12, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:37 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:37 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:37 PM]: Found unlocal edge! 12, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:37 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:37 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:37 PM]: Found unlocal edge! 12, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:38 PM]: true 2.2 ?? [iNFO][bot #2][09/10 02:13:38 PM]: [x=2724, y=3490, z=0] [iNFO][bot #2][09/10 02:13:38 PM]: Found unlocal edge! 11, Source [x=2662, y=3629, z=0] -> [x=2660, y=3624, z=0]., reverting... [iNFO][bot #2][09/10 02:13:38 PM]: true 2.2 ??
  22. I bet the only reason they did this is because they knew people would never vote in sailing if they didn't fix the shit that they messed up with other parts of the game.
  23. Shortcut is only used after banking, script isn't supporting returning through the tunnel.
  24. sold my smoke staff for 1.4m dem loss you cant afk 99 range tho ;) l0l i might even buy guthans for slayer if it's dropped a lot lol, i can afford it when its 14m, but i'd rather not lol
  25. "Fruity NMZ sales have seen a 200% increase due to this new jagex update" -confirmed by fruity
  26. will still work, but hey that's botting :P
  27. Wooooooooooww..... that paper is filthy. Should take better care of your legal documents.
  28. bro can i get a trial of this one pls ?
  29. Interested in trying this script out before purchasing. Would love a 24 hour trial. If its as flawless as your magic script it will be great!
  30. Good luck with official scripter status! Here are some tips to help improve your code: Use lambdas for your action and change listeners. It's less verbose and more efficient. Don't extend JFrame, as that floods the API of ObjectLoader with a bunch of irrelevant inherited methods (and ObjectLoader is not a frame, it has a frame). Return Collections, not arrays. This allows easy stream usage and implementation-specific looping through forEach. Although devs can use Arrays.stream(T[]), chances are they'd rather turn it into a collection and use it as such. Only use arrays if you want devs to be able to easily add items at a specific index (without needing to manually fill the collection up to that index). Do not return null. Read the null section of this thread (http://osbot.org/forum/topic/81558-some-java-tips/) Use forEach loops for implementation-specific loops: objectListLoaded.forEach(o -> objects[objectListLoaded.indexOf(o)] = o);No need for an isVisible variable, as JFrame has an isVisible() method.It seems you hide the frame, but never dispose it. Dispose it when it's no longer needed. Why do you pass Script to the constructor of ObjectLoader and openLoader? If you want some more tips, feel free to message me! If you don't understand anything I've said above, let me know
  31. Well i am doing nothing with it anymore.. So why not share it with others? Plus i have every right to give the osbot community a new method to try even if other people are doing the same thing. Plus that's what scriptwriters do they find new scripts that not many people know of or have and make it for purchase its called being creative. leeches = Humans just like you botting for their own personal reasons? therefor are you not a leecher?
  32. lol.. your sellers suck then xD Some sketchy untrustable scamming mofos
  33. Application: (Please post in the thread below, Do not pm this to me) Do you agree to the T.O.S: Yes Will you pay the deposit in full: Yes I can pay the full 11m. What position(s) are you applying for: Skilling, Questing How many hours are you available a week: 20+. Thursday and Friday afternoons/evenings are my most open times Your Skype: rs_goldseller420

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions โ†’ Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.