Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/16/18 in all areas

  1. β™”CzarScripts #1 Bots β™” Proven the #1 selling, most users, most replies Script Series on the market. Big THANK YOU to all our wonderful users and supporters over the 8 years, we couldn't have done it without you. Czar Bots have always been the Best and the most Feature-rich bots available with the most total sales in OSBot history. Come and find out why everyone is choosing Czar Bots today. β™” LATEST BOTS β™” If you want a trial - just post the script name and it will be activated after I hit 'like' on your post Requirements: hit 'like' on this thread
    3 points
  2. Aye. Beat my old record by a single minute lol. Mith gloves from tut island in 3h 56m. This run would have been 3h 45m most likely but I severely fucked up 3 times during Pirate Pete subquest (forgetting kelp costing me like 3-4 minutes) and during Fishing Contest (not finishing Pirate Pete so couldnt start quest, did this 2 times in a row and then not having fishing pass with me, costing me like 5-6 minutes)
    3 points
  3. Ability to set custom Magic and Ranged armour sets βœ“ No limits on Kills per trip βœ“ Using a mix of user inputs and built-in logic, the script will determine if you have enough supplies for another kill without banking. Options to decide how much food you’re like to take into the next fight as a minimum. Customisable Stop Conditions Stop after 'x' kills Stop after 'x' profit Stop after 'x' runtime Stop after 'x' consecutive deaths Efficient Zulrah Fight Executor βœ“ Knows what have, is and will happen Longrange mode, gain defence XP passively with no time loss βœ“ Multiple Travel Routines Zul-Andra teleport scrolls VIA Clan Wars βœ“ Zul-Andra Teleports VIA PoH βœ“ Charter Travel βœ“ Caterby charter [via Camelot teleports] Fairy Rings βœ“ Ability to select staff to use or not use one at all for fairy rings βœ“ Summer Pie Support (72+ Agility recommended) βœ“ Fairy ring via Slayer Ring βœ“ Fairy ring via House Teleport βœ“ Ornate pool support βœ“ Jewellery box Support βœ“ Mounted Glory Support βœ“ Construction Cape Support βœ“ Ability to select Magic Only βœ“ Changes Rotations and Phases for the best possible fight experience. No need to quest for Ava’s or Level range. Swaps prayers & equipment efficiently βœ“ Option to use quick switch mode, removes mouse travel time for even faster switching Prayer Flicking on Jad Phases βœ“ Supports Raids Prayers βœ“ 55 Prayer βœ“ 74 Prayer βœ“ 77 Prayer βœ“ Options to Dynamically pray against Snakelings when Zulrah is not focused on player. βœ“ Calculates: Total loot value βœ“ Total cost of supplies used βœ“ Profit after costs βœ“ Ability to sell all your loot when you run out of supplies βœ“ Ability to top up your supplies if you run out with auto-exchange βœ“ Death-walking βœ“ Safe death boss Rechargeable item support Trident of Seas βœ“ Trident of Swamp βœ“ Blowpipe βœ“ Dynamically detects darts used (Must start with darts inside the blowpipe for it to work!) Serpentine Helm βœ“ Ring of suffering βœ“ Barrows Repairing βœ“ Using Lumbridge teleports or the Home teleport, the script will withdraw coins, travel to Bob and repair your armour then continue to run. Potion Decanting βœ“ Efficiently decants all types of potions allowing FruityZulrah to run for longer. Inventory Organising βœ“ Organises your inventory to minimise mouse movement, increasing time spent elsewhere. Combo eating Karambwams βœ“ Will combo eat karambwams to help prevent death from Zulrah and Snakelings stacks Supports blowpipe special attack βœ“ Uses the Blowpipe special attack to help replenish HP Multiple stat boosts supported Prayer βœ“ Super Restore βœ“ Magic βœ“ Ranging βœ“ Bastion βœ“ Stamina βœ“ Anti-venom+ βœ“ Imbued Heart βœ“ Supports Lunars β€˜Cure Me’ spell to cure Venom βœ“ Requires: 1 2 2 Ability to use rune pouch Level 71 Magic Lunars Quest Ideal for Ironman accounts with no access to anti-venom+ Supports Lunars Vengeance spell βœ“ Requires: 2 4 10 Perfectly times vengeance casts to Magic Phase ranged attacks for best results. Ability to use rune pouch Level 94 Magic World hopping support βœ“ Options to hop world between x and x minutes. will randomly select a time every hop. Ability to skip rotations by Hopping worlds Ability to decide on your own custom world list or just to hop to any P2P world Grand Exchange Add-on βœ“ Add-on script for free Save/load buy/sell presets Ability to dump all zulrah loot in 2 clicks Command Line Support βœ“ Start the script on multiple accounts with a single click Script ID - 903 Command: -script "903:profile=Test hours_limit=10 kills_limit=5 deaths_limit=5 profit_limit=1m" profile = saved profile name, if you've been using CLI to run the script, this will need to be updated to suit. hours_limit = Complete after 'x' run hours. kills_limit = Complete after 'x' zulrah kills deaths_limit = Complete after 'x' deaths. profit_limit = Complete after 'x' accumulated profit Pro-active calculations βœ“ Calculates next mouse position for next action whilst first action is being performed Asynchronous actions βœ“ Can perform multiple tasks at once saving time Banks Pet drops βœ“ Loot table βœ“ http://fruityscripts.com/zulrah/loot/ Displays total loot as well as a live feed of drops Hiscores βœ“ http://fruityscripts.com/zulrah/hiscores/ Compare and compete against other users Dynamic Signatures βœ“ Show off your gains with FruityZulrah url: http://fruityscripts.com/zulrah/signature/signature.php?username={USERNAME} Replace {USERNAME} with your username http://fruityscripts.com/zulrah/signature/signature.php Notifications Get Notifications for: Valuable drops βœ“ Deaths βœ“ On Exit βœ“ Timely Data dumps (GP, GP/HR, Kills, Kills/HR, Deaths, Runtime) βœ“ Types of Notifications Email βœ“ Discord ~ Desktop βœ“ βœ“ Implemented into the script ~ Work in progress View a collection of Screenshots posted by FruityZulrah users showing their progress with the script. Watch a collection of FruityZulrah videos below If you have a video you'd like to be added to the Playlist, send me a pm with a link. Videos must of course include the FruityZulrah script. If you wish to purchase FruityZulrah VIA PayPal, please follow the store link below: If you'd like to purchase FruityZulrah using OSRS GP, SEND ME A PM and i can give you my current $$:GP Rates! Discord Community: https://discord.gg/WzXRk2bWTV Trial bot has been implemented (100 post count required if you're not VIP/Sponsor!) @fruityscripts on Discord
    2 points
  4. I suggest trying to recover it and ruin the account and suicide bot it if he gave you any information or report the username to mod weath.
    2 points
  5. 2 points
  6. NEW 2024: supports new south + east shortcuts, new hopper (upstairs), and mouse invokes!!! (just like runelite!) 'the intelligent choice' By Czar 63 Hours Runtime!! Agility Shortcut 70 hours run time https://i.imgur.com/wiF6VPO.png
    1 point
  7. This is a simple afker script. The script clicks between inventory and skill tabs at random intervals to prevent logout. The intervals are 3-4,5 minutes. Put the jar file to C:\Users\USERNAME\OSBot\Scripts and the script should appear on your script list in the client. Download: StyxAfker.jar v1.01 Source: Credits: Thanks to Apaec for the beginners guide on OSBot scripting: A Beginners Guide to Writing OSBot Scripts (where to get started!) by Apaec Thanks to Explv for the paint tutorial: Explv's Dank Paint Tutorial changelog:
    1 point
  8. Title. Not going first unless I deem you trusted enough, includes doing paypal. Leave your offer or PM me, no I won't add your Skype. Note: selling all of it in one go.
    1 point
  9. I can do €.85/m via iDeal(ING Bank). Skype = Flax.TB edit: sold him the goodies! ty mate
    1 point
  10. Buying 50M, verified paypal, skrill or ideal/bank transfer I have 200+ offsite vouches but will go first if your trusted here. add me on skype if interested: Johan95PB
    1 point
  11. Script is not working. This is what i got from logger: [INFO][Bot #1][02/16 09:48:19 PM]: Loaded 2 built-in random solvers! [INFO][Bot #1][02/16 09:48:21 PM]: Definitions loaded: 22288 [INFO][Bot #1][02/16 09:48:21 PM]: 23 APIs loaded [INFO][Bot #1][02/16 09:48:21 PM]: "force_web" changed to "1" [INFO][Bot #1][02/16 09:48:21 PM]: "force_path" changed to "1" [INFO][Bot #1][02/16 09:48:23 PM]: Banks added: [43] [INFO][Bot #1][02/16 09:48:24 PM]: Floors added: [13] [INFO][Bot #1][02/16 09:48:24 PM]: Scenery added: [2] [INFO][Bot #1][02/16 09:48:24 PM]: Entrances added: [48] [INFO][Bot #1][02/16 09:48:24 PM]: Carpet rides added: [4] [INFO][Bot #1][02/16 09:48:24 PM]: Ships added: [5] [INFO][Bot #1][02/16 09:48:24 PM]: Agility shortcuts added: [10] [INFO][Bot #1][02/16 09:48:24 PM]: Fairy teleport added: [38] [INFO][Bot #1][02/16 09:48:24 PM]: Teleport items added: [36] [INFO][Bot #1][02/16 09:48:25 PM]: Teleport spells added: [12] [INFO][Bot #1][02/16 09:48:25 PM]: Stronghold added [INFO][Bot #1][02/16 09:48:25 PM]: NPC teleports added: [1] [INFO][Bot #1][02/16 09:48:25 PM]: Added al-kharid gate (free) [INFO][Bot #1][02/16 09:48:25 PM]: Added 11500 nodes to graph in [2410ms]. [ERROR][Bot #1][02/16 09:48:25 PM]: Error in script onStart(): Perfect Woodcutting java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source) at java.util.concurrent.ConcurrentHashMap.put(Unknown Source) at java.util.Collections$SetFromMap.add(Unknown Source) at org.osbot.rs07.Bot.addMouseListener(un:434) at b.a.a.nuL.onStart(ph:186) at org.osbot.rs07.event.ScriptExecutor.IiiiiiiiIiIi(hj:160) at org.osbot.rs07.event.ScriptExecutor.start(hj:195) at org.osbot.cB.run(kf:112) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) [INFO][Bot #1][02/16 09:48:25 PM]: Terminating script Perfect Woodcutting... [ERROR][Bot #1][02/16 09:48:25 PM]: Error in script onExit(): Perfect Woodcutting java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.replaceNode(Unknown Source) at java.util.concurrent.ConcurrentHashMap.remove(Unknown Source) at java.util.Collections$SetFromMap.remove(Unknown Source) at org.osbot.rs07.Bot.removeMouseListener(un:467) at b.a.a.nuL.onExit(ph:694) at org.osbot.rs07.event.ScriptExecutor.IiiiiiiiIiIi(hj:34) at org.osbot.rs07.event.ScriptExecutor.stop(hj:246) at org.osbot.rs07.event.ScriptExecutor.stop(hj:116) at org.osbot.rs07.event.ScriptExecutor.start(hj:28) at org.osbot.cB.run(kf:112) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) [INFO][Bot #1][02/16 09:48:25 PM]: Script Perfect Woodcutting has exited!
    1 point
  12. Thanks for the reply, your comment really makes me want to fix this free script immediately as it's such an easy bug to fix, i've got nothing else to do in my life and giving free scripts out to people is my top priority edit: I'm getting around to it... (:
    1 point
  13. Their magic defence is so shitty that it doesn't matter what you wear, it'll be like using a flame thrower with your Charizard on a little Bulbasaur.
    1 point
  14. put full ancestral on it and a twisted bow and go make that 3m/H
    1 point
  15. hmm I'll make changes to the prices asap. ^^ Activated all trials gl guys
    1 point
  16. Try this link: https://support.runescape.com/hc/en-gb/articles/115002238729 - I can't remember where to exactly find it on www.runescape.com but it's there somewhere. I've got a few accounts unbanned using it.
    1 point
  17. Glad this could be resolved, closing this now.
    1 point
  18. looks like a snowflake, not worried in the slightest
    1 point
  19. 1 point
  20. Only 18m mining xp? What a fucking noob.
    1 point
  21. What i think is abit unfair is, we the people who pay for the service are left with out and the only working instance is the one for the people who dont pay for vip. shouldn't the people who contribute be there priority? instead the people who just leach the free use are sweet to keep botting. and this isn't the first time osbot has been down to mirror mode and stealth is still working. why not make the people who are paying money to use something the priority? osbot is great, but i pay for premium on other clients and there is never this issue, there priority is the people who contribute... maybe im wrong but if i was running a shop or a company of any kind id be looking after the people buying stuff not the one out side begging for more free shit.
    1 point
  22. Thanks for the report, if Viston ever wishes to stop creating ban evader accounts and actually return he'll need to refund you the full cost of the account. Sorry for your loss.
    1 point
  23. Hello sir, could I try this out please?
    1 point
  24. Could i get a trial? Thanks
    1 point
  25. From what i heard this is a private script play normal on home ip for some time doing quest and so on Then bot on proxies there are alot of people who can sell you some proxies in this community. Hope this helps:)
    1 point
  26. Most definitely is asking for a ban, I don't have to explain myself if you know you know. And thanks for the link.
    1 point
  27. You should ask @Eagle Scripts or others who make private scripts, there is a whole section on the forum dedicated to private scripting.
    1 point
  28. I know that @Alek will probably not like us implementing muling features into SDN scripts, nor do I think that should be done. If an individual would like an automated muling system he/she could contact one of the many private scripters.
    1 point
  29. Loving the script so far but for some reason, the gp/h for the paint isn't being accurate. For example, the profit per hour usually says I'm making around 2k/h when each full inventory is around 9k.
    1 point
  30. petition to implement antiban
    1 point
  31. Hi can i have trial. loved your other scripts
    1 point
  32. I'll take a trial, looking for an AIO fishing script.
    1 point
  33. Just purchased your fishing script, would love a trial for this script before I buy though! Love your work.
    1 point
  34. Hey may i try a trial before i purchase?
    1 point
  35. Hey im new on the osbot community i want to try trial motherload mine and will give you a feedback
    1 point
  36. import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.graphics.Point; Your problem is that OSBot doesn't come packaged with the SWT ("org.eclipse.swt") library. Your solutions are either: Ask a @Zach or @Alek to see if they can add the library into OSBot. This is unlikely due to it being more overhead for something that's likely to be very niche. Find the library's source code and include that into your script. Use the Swing ("javax.swing") library, because that is packaged with Java by default. You can look into JOptionPane to achieve what it is you're after, but in quite literally one line of code. I'd chose no.3 just because it's the easiest and doesn't add any additional overhead. You can literally just do: String[] trees = { "normal", "oak", "willow" }; Object input = JOptionPane.showInputDialog(bot.getCanvas(), "Select a tree", "Woodcutter", JOptionPane.QUESTION_MESSAGE, null, trees, trees[0]); String tree = null; if (input != null) { tree = input.toString(); }
    1 point
  37. Yeah not in lumbridge no quests started sounds good, I know this is a free script and I don't understand how it's written, but if randomisation of quest order could be implemented would be perfect. Although I already use this script alot and despite a few of it's issues which you've said you're working on (the mugger one and coffin one still an issue sometimes) it's free and is incredibly useful even with just slight manual interaction and script resets sometimes. Goodluck on fixing the issues and again, thanks for the script. Edit again - I have found the issue I believe, the door works if script is ran from beginning, if it's paused and it can't open a door (which as people are buying the tuts that start in varrock, I assume they are manually teleporting to lumby and then unpausing, it gets stuck in a loop spamming walking in logger and will stay stuck at that tile, restarting script and it's fine. Hope I was helpful and not just talking nonsense Sorry for any grammar or if I don't make sense I'm what one may call crossfaded fucking millionth edit, i lied ignore everything I say maybe idk why its getting stuck, stuck at coffin again too, I'll stop wasting everyones time with my posts lol. Mad Caspar v2
    1 point
  38. Because Jagex is going to release trading posts in the near future, I decided to dump the source code form my zybez mercher. I used java because I wanted to implement it into a merching script. //Main.java package aiomercher.util.zybez; import aiomercher.util.zybez.stages.Login; import aiomercher.util.zybez.stages.Offer; import aiomercher.util.zybez.utils.ZybezOffer; /** * Created by Xerion on 19-8-2014. */ public class Main { static Login login; public static void main(String args[]) throws Exception{ long time = System.currentTimeMillis(); login = new Login("***","****"); System.out.println("Logged-in in " + (System.currentTimeMillis() - time + 1) + " ms"); //You can add extra stuff here. For example adding an offer. } } Stages//Login.java package aiomercher.util.zybez.stages; import aiomercher.util.zybez.utils.Requests; import aiomercher.util.zybez.utils.Character; import aiomercher.util.zybez.utils.ZybezOffer; import aiomercher.util.zybez.utils.OfferType; import java.net.*; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Xerion on 19-8-2014. */ public class Login { public static boolean debug = false; private String username,password; /*Zybez Cookies*/ private String __cfduid,z_session_id,network_cookie,z_rteStatus,z_member_id,z_pass_hash; public Login(String Username, String Password){ try { /*Set Cookie manager*/ CookieManager manager = new CookieManager(); manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault(manager); /*Login - Change this to post request for safety*/ Requests.sendGet("http://forums.zybez.net/index.php?app=curseauth&module=global&section=login&do=process?auth_key=" + getAuth() + "&rememberMe=1&ips_username=" + URLEncoder.encode(Username, "UTF-8") + "&ips_password=" + URLEncoder.encode(Password, "UTF-8") + "&submit=Login"); //Requests.sendPost("http://forums.zybez.net/index.php?app=curseauth&module=global&section=login&do=process","auth_key=" + getAuth() +"&rememberMe=1&ips_username=" + URLEncoder.encode(username, "UTF-8") + "&ips_password=" + URLEncoder.encode(password, "UTF-8") + "&submit=Login"); /*Fake this cookie*/ this.z_rteStatus = "rte"; /*Set all the variables*/ CookieStore cookieJar = manager.getCookieStore(); List<HttpCookie> cookies = cookieJar.getCookies(); for (HttpCookie cookie: cookies) { if (cookie.getDomain().contains((".zybez.net"))) { if(cookie.getName().equals("__cfduid")){ __cfduid = cookie.getValue(); }else if(cookie.getName().equals("z_session_id")){ z_session_id = cookie.getValue(); }else if(cookie.getName().equals("network_cookie")){ network_cookie = cookie.getValue(); }else if(cookie.getName().equals("z_member_id")) { z_member_id = cookie.getValue(); }else if(cookie.getName().equals("z_pass_hash")){ z_pass_hash = cookie.getValue(); }else{ if(debug) System.out.println("Unknown cookie : " + cookie.getName() + "\t" + cookie.getDomain()); } }else{ if(debug) System.out.println("Unknown website : " + cookie.getName() + "\t" + cookie.getDomain()); } } }catch (Exception ex){ ex.printStackTrace(); } if(z_member_id == null || z_pass_hash == null){ throw new RuntimeException("Failed to login!"); } } private String getAuth() throws Exception{ String pattern = "<input type='hidden' name='auth_key' value='"; String response = Requests.sendGet("http://forums.zybez.net/index.php?app=curseauth&module=global&section=login"); int beginIndex = response.indexOf(pattern) + pattern.length(); int endIndex = response.indexOf("' />", beginIndex); return response.substring(beginIndex, endIndex); } public String getCookie(){ StringBuilder sb = new StringBuilder(); sb.append("__cfduid=" + __cfduid + "; "); sb.append("network_cookie=" + network_cookie + "; "); sb.append("z_rteStatus=" + z_rteStatus + "; "); sb.append("z_member_id=" + z_member_id + "; "); sb.append("z_pass_hash=" + z_pass_hash + "; "); sb.append("z_session_id" + z_session_id + "; "); return sb.toString(); } public Character[] getCharacters(){ List<Character> character = new LinkedList<>(); try { String response = Requests.sendGet("http://forums.zybez.net/runescape-2007-prices/274-water-rune", getCookie()); Matcher matcher = Pattern.compile("<option value=\"(.+?)\">(.+?)</option>$",Pattern.MULTILINE).matcher(response); while (matcher.find()) { if(debug) System.out.println("Found character : " + matcher.group(1) + " " + matcher.group(2)); character.add(new Character(Integer.parseInt(matcher.group(1)),matcher.group(2))); } return character.toArray(new Character[character.size()]); }catch (Exception e){ e.printStackTrace(); } return null; } public ZybezOffer[] getCurrentOffers(){ List<ZybezOffer> zybezOffers = new LinkedList<>(); try { String response = Requests.sendGet("http://forums.zybez.net/runescape-2007-prices", getCookie()); int beginIndex = response.indexOf("My Offers"); int endIndex = response.indexOf("</table>", beginIndex); //System.out.println(response.substring(beginIndex,endIndex)); Matcher matcher = Pattern.compile("<tr>\\s*<td class=\"nowrap\"><h3><a href=\"(.*?)\">(.*?)<.*?$\\s*.*\\s*.*title=\"(.*?)\" class.*?\\s*.*?>(.*?)<\\/.*$\\s*(.*?) for (.*?) GP\\s*.*\\s*.*\\s*.*?title=\"(.*?)\">(.*?)<\\/span><\\/td>\\s*.*?\">(.*?) GP<\\/td>\\s*<td>\\s*<a href=\"(.*?)\"><img src=\"(.*?)\" title=\"Delete\" \\/><\\/a>\\s*<a href=\"(.*?)\"><img src=\"(.*?)\" title=\"Mark this offer complete\" \\/><\\/a>\\s*<\\/td>\\s*<\\/tr>",Pattern.MULTILINE).matcher(response.substring(beginIndex,endIndex)); while (matcher.find()) { if(debug) System.out.println("Found offer : " + matcher.group(1) + " " + matcher.group(2) + " " + matcher.group(3) + " for " + matcher.group(4) + "GP\t" + matcher.group(5) + "\t" + matcher.group(6)); zybezOffers.add(new ZybezOffer(matcher.group(2),matcher.group(3),matcher.group(1),matcher.group(3).equals("Selling") ? OfferType.SELL : OfferType.BUY,Integer.parseInt(matcher.group(5).replaceAll(",", "")),Integer.parseInt(matcher.group(6).replaceAll(",", "")),matcher.group(7),1,matcher.group(8),matcher.group(12))); } return zybezOffers.toArray(new ZybezOffer[zybezOffers.size()]); }catch (Exception e){ e.printStackTrace(); } return null; } public ZybezOffer[] getCompleteOffers(){ List<ZybezOffer> zybezOffers = new LinkedList<>(); try { String response = Requests.sendGet("http://forums.zybez.net/runescape-2007-prices", getCookie()); int beginIndex = response.indexOf("My Offers"); int endIndex = response.indexOf("</table>", beginIndex); Matcher matcher = Pattern.compile("<tr class=\"done\">\\s*<td class=\\\"nowrap\\\"><h3><a href=\"(.*?)\">(.*?)<.*?$\\s*.*\\s*.*title=\"(.*?)\" class.*?\\s*.*?>(.*?)<\\/.*$\\s*(.*?) for (.*?) GP\\s*.*\\s*.*\\s*.*?title=\\\"(.*?)\\\">(.*?)<\\/span><\\/td>\\s*.*?\\\">(.*?) GP<\\/td>\\s*<td>\\s*<a href=\\\"(.*?)\\\"><img src=\\\"(.*?)\\\" title=\\\"Delete\\\" \\/><\\/a>\\s*<a href=\\\"(.*?)\\\"><img src=\\\"(.*?)\\\" title=\\\"Mark this offer complete\\\" \\/><\\/a>\\s*<\\/td>\\s*<\\/tr>",Pattern.MULTILINE).matcher(response.substring(beginIndex,endIndex)); while (matcher.find()) { if(debug) System.out.println("Found offer : " + matcher.group(1) + " " + matcher.group(2) + " " + matcher.group(3) + " for " + matcher.group(4) + "GP\t" + matcher.group(5) + "\t" + matcher.group(6)); zybezOffers.add(new ZybezOffer(matcher.group(2),matcher.group(3),matcher.group(1),matcher.group(3).equals("Selling") ? OfferType.SELL : OfferType.BUY,Integer.parseInt(matcher.group(5).replaceAll(",", "")),Integer.parseInt(matcher.group(6).replaceAll(",", "")),matcher.group(7),1,matcher.group(10),matcher.group(12))); } return zybezOffers.toArray(new ZybezOffer[zybezOffers.size()]); }catch (Exception e){ e.printStackTrace(); } return null; } } //Stages//Offer.java package aiomercher.util.zybez.stages; import aiomercher.util.zybez.utils.*; import aiomercher.util.zybez.utils.Character; import java.net.URLEncoder; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Xerion on 19-8-2014. */ public class Offer { Login login; public Offer(Login login){ this.login = login; } /** * Add an offer to Zybez * * @param id Item ID * @param offerType The Offer type (buy or sell) * @param quantity The amount you want to buy/sell * @param price The price you want to buy/sell the item for * @param character The character you want to appear in the offer * @param contactMode The contact mode you want to specify (PM or CC) * @return True if the offer is placed on Zybez */ public boolean createOffer(int id,OfferType offerType,int quantity, int price, Character character, ContactMode contactMode){ return createOffer(getAuth(id),id,offerType.getValue(),quantity,price,character.getId(),contactMode.getValue(),"",login.getCookie()); } /** * Add an offer to Zybez * * @param id Item ID * @param offerType The Offer type (buy or sell) * @param quantity The amount you want to buy/sell * @param price The price you want to buy/sell the item for * @param character The character you want to appear in the offer * @param contactMode The contact mode you want to specify (PM or CC) * @param notes The Notes you want to add in the offer * @return True if the offer is placed on Zybez */ public boolean createOffer(int id,OfferType offerType,int quantity, int price, Character character, ContactMode contactMode, String notes){ return createOffer(getAuth(id),id,offerType.getValue(),quantity,price,character.getId(),contactMode.getValue(),notes,login.getCookie()); } private boolean createOffer(String auth, int id, int type, int quantity, int price, int characterId, int contact, String notes, String Cookie){ String url = "http://forums.zybez.net/index.php?app=priceguide&module=public&section=action&do=trade-add"; System.out.println("auth: "+(auth!=null?auth:"null")+", id: "+id+", type: "+type+", price: "+price+", charId: "+characterId+", contact: "+contact+", note: "+notes+", cookie: "+(Cookie!=null?Cookie.toString():"null")); try{ String urlParameters = "auth=" + URLEncoder.encode(auth, "UTF-8") + "&id=" + URLEncoder.encode(Integer.toString(id), "UTF-8") +"&type=" + URLEncoder.encode(Integer.toString(type), "UTF-8") + "&qty=" + URLEncoder.encode(Integer.toString(quantity), "UTF-8") +"&price=" + URLEncoder.encode(Integer.toString(price), "UTF-8") + "&character_id=" + URLEncoder.encode(Integer.toString(characterId), "UTF-8") +"&contact=" + URLEncoder.encode(Integer.toString(contact), "UTF-8")+ "&notes=" + URLEncoder.encode(notes, "UTF-8"); if(Requests.sendGet(url + "?" + urlParameters,Cookie).contains("Your trade has been added to the system.")){ return true; } return false; }catch (Exception ex){ ex.printStackTrace(); return false; } } public String getAuth(int id){ try{ String response = Requests.sendGet(getSite(id),login.getCookie()); Matcher matcher = Pattern.compile("<input type=\"hidden\" name=\"auth\" value=\"(.+?)\" />").matcher(response); if (matcher.find()){ return (matcher.group(1)); }else{ throw new RuntimeException("Failed to find the auth"); } }catch (Exception e){ e.printStackTrace(); } return null; } private String getSite(int id){ try{ String response = Requests.sendGet("http://forums.zybez.net/index.php?app=priceguide&module=public&section=list"); Matcher matcher = Pattern.compile("<a href=\"(http://forums.zybez.net/runescape-2007-prices/" + id + "-.*?)\">").matcher(response); if (matcher.find()){ return matcher.group(1); }else{ throw new RuntimeException("ID is invalid!"); } }catch (Exception e){ e.printStackTrace(); } return null; } /* public static String getItemName(int id){ try{ String response = Requests.sendGet("http://forums.zybez.net/runescape-2007-prices/api/item/" + id); Matcher matcher = Pattern.compile("name\":\"(.+?)\",\"type").matcher(response); if (matcher.find()){ String result = matcher.group(1); //System.out.println(result); //result = result.replace(' ', '-'); //result = result.replace("(", "").replace(")", ""); //System.out.println(result); return result; }else{ throw new RuntimeException("Cannot find item name!"); } }catch (Exception e){ e.printStackTrace(); } return null; } */ public static enum OfferType { BUY(0), SELL(1); private final int value; private OfferType(int value) { this.value = value; } public int getValue() { return value; } } public static enum ContactMode { PM(1), CC(3); private final int value; private ContactMode(int value) { this.value = value; } public int getValue() { return value; } } } //utils/Character.java package aiomercher.util.zybez.utils; /** * Created by Xerion on 19-8-2014. */ public class Character { private int id; private String accountName; /** * * @param id ZYbez account id * @param accountName Runescape account name */ public Character(int id, String accountName){ this.id = id; this.accountName = accountName; } public int getId() { return id; } public String getAccountName() { return accountName; } @Override public String toString(){ return this.accountName; } } //utils//OfferType.java package aiomercher.util.zybez.utils; /** * Created by Xerion on 25-8-2014. */ public enum OfferType { BUY(0), SELL(1); private final int value; private OfferType(int value) { this.value = value; } public int getValue() { return value; } @Override public String toString() { return this.name().substring(0, 1).toUpperCase() + this.name().substring(1).toLowerCase(); } } //utils//Requests.java package aiomercher.util.zybez.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Created by Xerion on 19-8-2014. */ public class Requests { public static boolean debug = false; public static String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"; public static String sendGet(String targetURL) throws Exception { return sendGet(targetURL,null); } public static String sendGet(String targetURL, String cookie) throws Exception { String url = targetURL; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // optional default is GET con.setRequestMethod("GET"); //add request header con.setRequestProperty("User-Agent", USER_AGENT); //add cookie if(cookie != null) con.setRequestProperty("Cookie" , cookie); int responseCode = con.getResponseCode(); if(debug) { System.out.println("\nSending 'GET' request to URL : " + url); System.out.println("Follow redirects: " + con.getInstanceFollowRedirects()); System.out.println("Response Code : " + responseCode); } BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); response.append("\n"); } in.close(); if(debug) { for (String s : con.getHeaderFields().get("Set-Cookie")) { System.out.println(s); } } //return result return response.toString(); } } //utils//ZybezOffer.java package aiomercher.util.zybez.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Xerion on 25-8-2014. */ public class ZybezOffer { private int amount, price; private String itemName, itemLink, itemOwner; private long epoch; private OfferType offerType; private String completeUrl, deleteUrl; private int place; public ZybezOffer(String ItemName,String owner, String Link , OfferType OfferType, int Amount, int Price, String Time, int place) throws ParseException { this.itemName = ItemName; this.itemLink = Link; this.itemOwner = owner.replace("Verified owner of ", ""); this.offerType = OfferType; this.amount = Amount; this.price = Price; this.place = place; this.epoch = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz").parse(Time).getTime(); } public ZybezOffer(String ItemName,String owner, String Link , OfferType OfferType, int Amount, int Price, String Time, int place, String CompleteUrl, String DeleteUrl) throws ParseException { this.itemName = ItemName; this.offerType = OfferType; this.itemLink = Link; this.itemOwner = owner.replace("Verified owner of ", "");; this.amount = Amount; this.price = Price; this.place = place; this.epoch = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz").parse(Time).getTime(); this.completeUrl = CompleteUrl; this.deleteUrl = DeleteUrl; } public int getPrice() { return price; } //public int getPlace(){ return place; } public int getAmount() { return amount; } public String getItemName() { return itemName; } public long getEpoch() { return epoch; } public OfferType getOfferType() { return offerType; } public Date getDate(){ return new Date(epoch); } public void completeOffer(String Cookie){ try { System.out.println(completeUrl); System.out.println(Cookie); Requests.sendGet(completeUrl, Cookie); }catch (Exception e){ e.printStackTrace(); } } public void deleteOffer(String Cookie){ try { System.out.println(deleteUrl); System.out.println(Cookie); Requests.sendGet(deleteUrl, Cookie); }catch (Exception e){ e.printStackTrace(); } } public int getPlace(){ try { String response = Requests.sendGet(this.itemLink); int beginIndex = response.indexOf("<table class=\"ipb_table topic_list\">"); int endIndex = response.indexOf("</table>", beginIndex); //System.out.println(response.substring(beginIndex,endIndex)); Matcher matcher = Pattern.compile("<tr>\\s*<td class=\"nowrap\">\\s*.*?title=\"(.*?)\" class.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*\\s*.*?<span title=\"(.*?)\">", Pattern.MULTILINE).matcher(response.substring(beginIndex,endIndex)); int place = 1; while (matcher.find()) { if(this.itemOwner.equals(matcher.group(1).replace("Verified owner of ", "")) && new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz").parse(matcher.group(2)).getTime() == this.epoch){ return place; }else{ place++; } //System.out.println(matcher.group(1) + "\t" + matcher.group(2)); } }catch (Exception e){ e.printStackTrace(); } return -1; } @Override public String toString() { return offerType + "ing " + getAmount() + " Γ— "+ itemName + " for " + getPrice() + "ea"; } } You are free to use the source code in anyway you like if you give credits to me. Constructive feedback is welcome. However I'm probably not going to change it.
    1 point
Γ—
Γ—
  • Create New...