Jump to content

Butters

Lifetime Sponsor
  • Posts

    650
  • Joined

  • Last visited

  • Feedback

    100%

Everything posted by Butters

  1. @The Undefeated @HeyImJamie You both are correct. If you write a script properly, it shouldn't really need much maintenance apart from slight content changes. If you want to expand it - that's a different case. Now it depends greatly if you're developing it as a hobby or as a way to make money. In my opinion, script prices are rather low, so unless you want to make some nice $ probably impossible to do with 1-2 scripts. Probably no one here is trying to make a living from developing scripts (check software developer salaries). It's probably a hobby to some extent. Regarding customers - naturally they have the right to be pissed if the script they paid for for an agreed price doesn't work. Especially due to some minor bugs/changes like one extra option in tutorial island dialogue. Takes a maximum of 30 minutes to check, code, test and push. If you got bored developing a certain script (it's a hobby) and it eventually requires a ton of maintenance (due to content changes and not cause it didn't work to begin with) I do understand the scrripter not giving a f for a few bucks. Pretty hard to balance out being ethical and "being a slave"
  2. Howdy ho, Was wondering how you guys draw fancy stuff around entities, say monsters? Atm using something as simple as g2.draw(npc.getPosition().getPolygon(getBot()); Naturally, this draws a square of 1x1 around the entity. Say the entity takes up two grids. Anyway to find that out and draw it? Thanks
  3. Need someone with a doctorate in memes to explain
  4. First of all, nowadays botting isn't that profitable. Bans are crazy and most item prices are low. Secondly, at least in my experience, chain banning isn't really a big thing. Might be wrong though.
  5. Lol sorry but laughed my ass off when saw the topic
  6. Always fun to do this. Best of luck
  7. You need to launch OSBot at least once in order for it to create the folders. Probably done that. The folders are in your home directory, e.g. C:\Users\TheHooter\OSBot\Scripts /home/TheHooter/Osbot/Scripts for Mac/Linux
  8. configs.get(43) Here you go my friend. Each config value means something different. I do believie that 0 - Attack 1 - Strength 3 - Defence Might be wrong, once you check those feel free to post the correct values
  9. Who knows really? Though if it's just simple fishing, the problem is in implementation
  10. What's really wrong with isAnimating(), or to be exact isMoving()? A good check to do in order not to click around too much, Would do it more or less like this and not worry about stuff (untested). Finds closest spot and interacts with it. Would be good to add additional check to be sure that the fishing spot is good, like if it has the required action, is reachable and etc public void fish() { NPC fishingSpot = getNpcs().closest("Fishing spot"); // Or whatever it is called. Don't use ids if (fishingSpot != null) { fishingSpot.interact("Bait"); new ConditionalSleep(5000, 250) { @Override public boolean condition() throws InterruptedException { return !myPlayer().isMoving() && myPlayer().isAnimating(); } }; getMouse().moveOutsideScreen(); } }
  11. Thank you guys for the replies. I ended up using JSON minimal https://eclipsesource.com/blogs/2013/04/18/minimal-json-parser-for-java/ At least the writers claim that it has better performance than others. Example code if someones interested private final static String RSBUDDY_URL = "https://rsbuddy.com/exchange/summary.json"; public static HashMap<String, Integer> getPriceMap(List<String> items) { HashMap<String, Integer> priceMap = new HashMap<>(); try { URL url = new URL(RSBUDDY_URL); BufferedReader jsonFile = new BufferedReader(new InputStreamReader(url.openStream())); JsonObject priceJSON = JsonObject.readFrom(jsonFile.readLine()); Iterator<Member> iterator = priceJSON.iterator(); while (iterator.hasNext()) { JsonObject itemJSON = priceJSON.get(iterator.next().getName()).asObject(); String itemName = itemJSON.get("name").asString(); if (items.contains(itemName)) { priceMap.put(itemName, itemJSON.get("buy_average").asInt()); } } } catch (Exception e) { log("Failed to grab item prices!"); } return priceMap; } Usage List<String> itemList = Arrays.asList("Rune platebody", "Bronze axe", "Gold bar", "Air rune", "Fire rune", "Amulet of strength"); getPriceMap(itemList); P.S. total count of RS buddy item data is 3412. Are there really only that many items in osrs?
  12. Ah so RSBuddy likes to change property indexes, but not property names? If that's true then great. Thanks
  13. Thanks! Didn't know about this. Couple of questions though: 1) What do you mean by "JSON is dynamic"? Is the structure bound to change? 2) Any provider which searches by item names and not ids? 3) Are RSbuddy prices accurate? Saw somewhere said that they're not. Nah always want to have the latest price, though if not, still a lot of checking.
  14. Was wondering if there's a good way to load a ton of item prices from websites in a speedy manner. Actually dunno if it's even possible without just checking the website whenever absolutely needed. Hosting my own price database and refreshing it every now and then really isn't a decent option unless there's no other way. (say DB crashes) Naturally, caching isn't an option here, cause prices change. Say I want to load a 100 item prices on script start. Atm using something like final URL url = new URL("http://2007.runescape.wikia.com/wiki/Exchange:" + item.replaceAll(" ", "_")); BufferedReader file = new BufferedReader(new InputStreamReader(url.openStream())); // Parsing stuff It takes more than a minute to load a ton of items, and probably would take longer on slow connections. I remember when I used Perfect Fighter (script on SDN) it looked like it did price grabbing for loot rather quickly, though didn't test with a ton of items. So, being naive here, but any reliable ways to do this and fast?
  15. @Lemons thanks a lot! Checking your Quantum API atm to see how it's done form A to Z and honestly, I'm getting wet just by reading your code. Awesome.
  16. Payment issues, proxy went down? OSBot really doesn't use anything fancy for proxies (at least that i know of). If OSBot doesn't load when using proxies - proxy issue and end of story
  17. Tested this time and time again and only one conclusion: Your proxy is bad or badly setup Either it's too slow to use or you're not authorized to use it (ip or login/pass)
  18. Check on your provider dashboard. Should have a FAQ how to setup correctly and use
  19. 1) You didn't authorize you machine ip for the proxy (the one your using OSBot on) or did't provide correct login/pass for proxy if required. 2) Your proxy is veyr slow or just plain bad
  20. Dunno if this is in the right section, but posting in regards of a bunch of noob questions and general information. So I was snooping around and found this thread Khaleesi posted a nice solution for the given problem static final int UNWALKABLE = 256 | 0x200000 | 0x40000; public static boolean isWalkable(int flag) { return (flag & (UNWALKABLE)) == 0; } XClippingPlane[] clippingPlanes = script.client.accessor.getClippingPlanes(); int[][] map = clippingPlanes[script.myPlayer().getZ()].getTileFlags(); for(int i = 0; i < map.length;i++){ for(int j = 0; j < map[i].length; j++){ if(isWalkable(map[i][j])) //store in list? } } I tried playing around with this, but didn't succeed in the end. My extremely nooby questions would be (spare the flame ): 1) What the hell are these clipping planes and how can I use the given information for my benefit? 2) What are tile/clipping plane flags? 3) What are tiles exactly in OSRS (in depth). A NxN size polygon of points? 4) In the given code above there's a comment "//store in list?". First thing that comes to mind is to store each tile POSITION and there you have - you know where you can walk and where you can't. Didn't suceed in this. 5) How does a tile map to a position exactly?
  21. As Explv said, you need to use InteractionEvent "directly" and not the "slimmed down" version which is the interact method. InteractionEvent interactionEvent = new InteractionEvent(entity, action); interactionEvent.setOperateCamera(false); execute(interactionEvent); RS2Object.interact() uses the same thing, just with some default parameters. I think it's mentioned in the API what those default values are.
  22. Not really an issue but more like a question. Does WebWalkEvent consider home teleport (the one to lumby) as a viable teleport to shorten the path? Did a test run like 10 times, always walked there. Code: WebWalkEvent event = new WebWalkEvent(area); PathPreferenceProfile profile = new PathPreferenceProfile(); profile.setAllowTeleports(true); event.setPathPreferenceProfile(profile); s.execute(event); And yes, the teleport is not on "cool down" and can be cast.
  23. Lol absolutely true. "Investing" in crypto can be a pain, but "playing the game" can bring you serious $$$
×
×
  • Create New...