Leaderboard
Popular Content
Showing content with the highest reputation on 09/28/18 in all areas
-
Welp its my birthday on the 29th so might as well do something to celebrate. I'll be giving away 5x bonds for you to use or to disappear into a mule for when you next rwt. Like this post or comment to enter, draw will be in roughly 24 hours. No limit on number of wins/person9 points
-
import org.osbot.rs07.api.ui.RS2Widget; import org.osbot.rs07.api.util.CachedWidget; import org.osbot.rs07.script.MethodProvider; import org.osbot.rs07.utility.ConditionalSleep; public class BankQuantity extends MethodProvider { private static final int CONFIG_ID = 1666; private static final int BANK_WIDGET_ROOT_ID = 12; private CachedWidget quantityLabelWidget; /* 1666: 0 -> ONE 1666: 4 -> FIVE 1666: 8 -> TEN 1666: 12 -> X 1666: 16 -> ALL */ public Quantity getQuantity() { return Quantity.values()[getConfigs().get(CONFIG_ID) / 4]; } public boolean setQuantity(final Quantity quantity) { if (quantity == getQuantity()) { return true; } if (!getWidgets().isVisible(BANK_WIDGET_ROOT_ID)) { return false; } if (quantityLabelWidget == null || !quantityLabelWidget.initialized()) { quantityLabelWidget = new CachedWidget(this, w -> w != null && w.getMessage().equals("Quantity:"), BANK_WIDGET_ROOT_ID); quantityLabelWidget.cache(); } if (quantityLabelWidget.initialized()) { int rootID = quantityLabelWidget.getRootId(); int secondLevelID = quantityLabelWidget.getSecondLevelId(); if (quantity == Quantity.ONE) { secondLevelID += 1; } else { secondLevelID += (quantity.ordinal() + 1) * 2; } RS2Widget quantityWidget = getWidgets().get(rootID, secondLevelID); if (quantityWidget != null && quantityWidget.interact()) { new ConditionalSleep(1800, 600) { @Override public boolean condition() throws InterruptedException { return getQuantity() == quantity; } }.sleep(); return true; } } return false; } enum Quantity { ONE, FIVE, TEN, X, ALL } } Usage: import org.osbot.rs07.script.Script; import org.osbot.rs07.script.ScriptManifest; @ScriptManifest(author = "Explv", name = "Example", version = 0.1, logo = "", info = "") public class Example extends Script { private BankQuantity bankQuantity = new BankQuantity(); @Override public void onStart() { bankQuantity.exchangeContext(getBot()); } @Override public int onLoop() throws InterruptedException { if (!getBank().isOpen()) { getBank().open(); } else if (bankQuantity.getQuantity() != BankQuantity.Quantity.ALL) { bankQuantity.setQuantity(BankQuantity.Quantity.ALL); } else { getBank().withdrawAll("Yew logs"); } return 600; } } @Alek add to API?8 points
-
Alot of people are wrong here. @Juggles and @IDontEB are correct about the residential ip's,but if you are lucky some datacenter proxies will work too. After last weeks update,they implemented new kind of locking which destroyed 95% of all datacenter proxies.4 points
-
Created this as a learning tool more than anything so the code is anything but perfect but it works. I've removed some proxy options should anyone like to pick this up have a look and see if you can add them back AccountCreator Class: import com.google.gson.JsonObject; import com.google.gson.JsonParser; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import java.io.*; import java.net.URL; import java.util.Random; import java.util.Scanner; import java.util.concurrent.TimeUnit; public class AccountCreator { private static final String RUNESCAPE_URL = "https://secure.runescape.com/m=account-creation/create_account"; private static final String RANDGEN_URL = "https://randomuser.me/api/?nat=gb"; private static final String USER_AGENT = "Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0"; private static String CAPTCHA_SOLVER = "anticaptcha"; private static String token = null; private static File accountFile = new File("accounts.txt"); private static JsonObject account; public static void main(String[] args) throws Exception { System.out.println("Enter number of accounts to make:"); Scanner sc = new Scanner(System.in); int accountsToMake = sc.nextInt(); for(int x = 1; x <= accountsToMake; ++x) { System.out.println("Creating Account #" + x); account = getAccountDetails(); int attempts = 0; while (token == null) { if (attempts < 5) { switch (CAPTCHA_SOLVER) { case "anticaptcha": AntiCaptcha antiCaptcha = new AntiCaptcha(); token = antiCaptcha.solveCaptcha(RUNESCAPE_URL); break; case "twocaptcha": // TODO: 2Captcha Support break; } attempts++; } else { System.out.println("Captcha Solver Failed 5 Times - Stopping"); System.gc(); System.exit(0); } } postForm(token, account); writeFile(account.get("email").getAsString() + ":" + account.get("password").getAsString() + ":" + account.get("displayname").getAsString()); if (accountsToMake > 1) { System.out.println("Waiting 10 Seconds Before Next Account..."); TimeUnit.SECONDS.sleep((long)10); } } System.out.println("Created All Accounts - Stopping"); System.gc(); System.exit(0); } private static void waitForLoad(WebDriver driver) { ExpectedCondition<Boolean> pageLoadCondition = new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { return ((JavascriptExecutor) driver).executeScript("return document.readyState").equals("complete"); } }; WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(pageLoadCondition); } private static void postForm(String gresponse, JsonObject account) throws UnsupportedEncodingException, InterruptedException { System.setProperty("webdriver.chrome.driver", "chromedriver"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); boolean created = false; boolean captchaFailed = false; while(!created && !captchaFailed) { driver.get(RUNESCAPE_URL); waitForLoad(driver); WebElement dobDay = driver.findElement(By.name("day")); WebElement dobMonth = driver.findElement(By.name("month")); WebElement dobYear = driver.findElement(By.name("year")); WebElement email = driver.findElement(By.name("email1")); WebElement displayname = driver.findElement(By.name("displayname")); WebElement password = driver.findElement(By.name("password1")); WebElement textarea = driver.findElement(By.id("g-recaptcha-response")); WebElement submit = driver.findElement(By.name("submit")); dobDay.sendKeys("01"); dobMonth.sendKeys("01"); dobYear.sendKeys("1990"); email.sendKeys(account.get("email").getAsString()); displayname.sendKeys(account.get("displayname").getAsString()); password.sendKeys(account.get("password").getAsString()); JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("arguments[0].style.display = 'block';", textarea); textarea.sendKeys(gresponse); driver.switchTo().defaultContent(); jse.executeScript("window.scrollBy(0,250)", ""); TimeUnit.SECONDS.sleep(3); submit.sendKeys(Keys.ENTER); TimeUnit.SECONDS.sleep(3); waitForLoad(driver); if (driver.findElements(By.className("m-character-name-alts__name")).size() != 0) { System.out.println("Username In Use - Trying another"); WebElement newUsername = driver.findElement(By.className("m-character-name-alts__name")); account.remove("displayname"); account.addProperty("displayname", newUsername.getText()); newUsername.click(); waitForLoad(driver); submit.sendKeys(Keys.ENTER); TimeUnit.SECONDS.sleep(3); } else if (driver.findElements(By.className("google-recaptcha-error")).size() != 0) { captchaFailed = true; } waitForLoad(driver); if (driver.findElements(By.id("p-account-created")).size() != 0) { created = true; System.out.println("Account Created"); } else { System.out.println("Failed To Create Account - Retrying"); } token = null; } driver.quit(); } private static JsonObject getAccountDetails() throws Exception { String json = readUrl(RANDGEN_URL); JsonParser jsonParser = new JsonParser(); JsonObject firstNameObject = jsonParser.parse(json).getAsJsonObject().getAsJsonArray("results").get(0).getAsJsonObject().getAsJsonObject("name"); String firstNameString = firstNameObject.get("first").getAsString(); JsonObject lastNameObject = jsonParser.parse(json).getAsJsonObject().getAsJsonArray("results").get(0).getAsJsonObject().getAsJsonObject("name"); String lastNameString = lastNameObject.get("last").getAsString(); Random randMail = new Random(); int setMail = randMail.nextInt(90) + 10; String mail = firstNameString + "." + lastNameString + setMail + "@gmail.com"; Random rendpass = new Random(); int setpass = rendpass.nextInt(70) + 10; String PASS_STRING = firstNameString.concat(String.valueOf(setpass)); JsonObject usernames = jsonParser.parse(json).getAsJsonObject().getAsJsonArray("results").get(0).getAsJsonObject().getAsJsonObject("login"); String user = usernames.get("username").getAsString(); if (user.length() > 14) { Random randNum = new Random(); int setNum = randNum.nextInt(90) + 10; user = user.substring(0, Math.min(user.length(), 10)) + setNum; } if (PASS_STRING.length() > 10) { Random randNum = new Random(); int setNum = randNum.nextInt(90) + 10; PASS_STRING = PASS_STRING.substring(0, Math.min(user.length(), 10)) + setNum; } JsonObject account = new JsonObject(); account.addProperty("email", mail); account.addProperty("displayname", user); account.addProperty("password", PASS_STRING); return account; } private static void writeFile(String account) { BufferedWriter writer = null; if (accountFile.exists()) { try(FileWriter fw = new FileWriter(accountFile, true); BufferedWriter bw = new BufferedWriter(fw); PrintWriter out = new PrintWriter(bw)) { out.println(account); } catch (IOException e) { } } else { try { File logFile = new File( "accounts.txt"); writer = new BufferedWriter(new FileWriter(logFile)); writer.write(account + "\r\n"); } catch (Exception e) { e.printStackTrace(); } finally { try { writer.close(); } catch (Exception e) { } } } } private static String readUrl(String urlString) throws Exception { BufferedReader reader = null; try { URL url = new URL(urlString); reader = new BufferedReader(new InputStreamReader(url.openStream())); StringBuilder buffer = new StringBuilder(); char[] chars = new char[1024]; int read; while((read = reader.read(chars)) != -1) { buffer.append(chars, 0, read); } String var7 = buffer.toString(); return var7; } finally { if (reader != null) { reader.close(); } } } } AntiCaptcha Class: import com.anti_captcha.AnticaptchaBase; import com.anti_captcha.Api.NoCaptcha; import com.anti_captcha.Api.NoCaptchaProxyless; import java.net.MalformedURLException; import java.net.URL; public class AntiCaptcha { private static String ANTICAPTCHA_KEY = "YOUR_KEY_HERE"; private String token = null; public String solveCaptcha(String RUNESCAPE_URL) throws MalformedURLException, InterruptedException { NoCaptchaProxyless api = new NoCaptchaProxyless(); api.setClientKey(ANTICAPTCHA_KEY); api.setWebsiteUrl(new URL(RUNESCAPE_URL)); api.setWebsiteKey("6LccFA0TAAAAAHEwUJx_c1TfTBWMTAOIphwTtd1b"); System.out.println("Sending Task To AntiCaptcha"); if (!api.createTask()) { System.out.println(api.getErrorMessage()); } else if (!api.waitForResult()) { System.out.println("Failed To Solve Captcha"); } else { System.out.println("AntiCaptcha Task Complete"); token = api.getTaskSolution().getGRecaptchaResponse(); } return token; } } All libs are in the attached zip, be sure to add the com.anti_captcha library to your src when you compile. I'm running on a mac so if you're on another OS be sure to download the correct version of Chrome Driver and update the following in the AccountCreator class: System.setProperty("webdriver.chrome.driver", "chromedriver"); For example if you downloaded the windows version you would change to this: System.setProperty("webdriver.chrome.driver", "chromedriver.exe"); Also note that the chrome driver file has to be in the same directory as your compiled Jar. You can run this using the following: java -jar YOUR_COMPILED_JAR_NAME.jar Download the libs here: https://www.mediafire.com/file/44z4zl9t7x54hf2/AccountCreatorPackaged.zip/file Can't upload to here them as they're larger than the max size however feel free to source the libs yourself.2 points
-
Possibly. I wasn't aware Jagex had an API for it - that must be fairly new. You could use a string split regex, to group things by levels. However, I'm not entirely sure on the format until I compare it with the hiscores. You should redo your API using Jagex's API - it'd save so much overhead.2 points
-
Want to buy with OSGP? Contact me on Discord! Important Info/Tricks - There is a very high chance of acc locks/banns on stealth mode (Use mirror whenever you can) - Using proxies while making accounts will get your account locked most of the times - If using proxies make sure to CREATE and BOT it on the same IP. Else they will receive banns, you will still experience locks though. - If using mirror mode, scale the original client smaller than the osbot game area, this will the blue screen go away at the start. - When Using Mass mode, make sure to have the first account added to osbot and you are NOT using the Default account. How to use CLI parameters: - Example Usage: -script 591:SAVEFILE SAVEFILE = Saved Filename - SAVEFILE: Save file can be created in the GUI. Navigate to the tab you want to run and press "Save As CLI file". Please choose your filename wisely (No special characters) - Final form: -script 591:AccProfile11 point
-
by Czar Buy now (only $8.99!) 143 HOURS IN ONE GO!!!!! update: this bot is now featured on the front page of osbot! More reviews than every other fishing bot combined! 100 hour progress report!!! How to use Script Queue: ID is 552, and the parameters will be the profile name that you saved in setup! This process is really simple, just to save you headache1 point
-
────────────── PREMIUM SUITE ────────────── ─────────────── FREE / VIP+ ─────────────── ──────────────────────────────────────────────────────────── ⌠ Sand crabs - $4,99 | Rooftop Agility - $5,99 | AIO Smither - $4,99 | AIO Cooker - $3,99 | Unicow Killer - £3,99 | Chest Thiever - £2,99 | Rock crabs - $4,99 | Rune Sudoku - $9,99 ⌡ ⌠ AIO Herblore - FREE & OPEN-SOURCE | Auto Alcher - FREE | Den Cooker - FREE | Gilded Altar - FREE | AIO Miner - VIP+ ⌡ ──────────────────────────────────── What is a trial? A trial is a chance for you to give any of my scripts a test run. After following the instructions below, you will receive unrestricted access to the respective script for 24 hours starting when the trial is assigned. Your trial request will be processed when I log in. The trial lasts for 24 hours to cater for time zones, such that no matter when I start the trial, you should still get a chance to use the script. Rules: Only 1 trial per user per script. How to get a trial: 'Like' this thread AND the corresponding script thread using the button at the bottom right of the original post. Reply to this thread with the name of the script you would like a trial for. Your request will be processed as soon as I log in. If i'm taking a while, i'm probably asleep! Check back in the morning Once I process your request, you will have the script in your collection (just like any other SDN script) for 24 hours. Private scripts: Unfortunately I do not currently offer private scripts. ________________________________________ Thanks in advance and enjoy your trial! -Apaec.1 point
-
Ordered another quest to be done across 6 accounts1 point
-
1 point
-
Quest order speaking with u on discord cooks assistantimp catcherdorics questknight swordwitchs potionDrawf cannon witchs housewaterfall1 point
-
I guess that you are doing it the wrong way. I think that other people can also affirm this1 point
-
1 point
-
No, minnows have a "flying fish [that] gobbles up the player's minnow". http://oldschoolrunescape.wikia.com/wiki/Minnow1 point
-
1 point
-
Nice release! I'm sure this will come in handy at some point.1 point
-
If you have multiple scripts in that directory with the same manifest name, you can expect some weird behaviour - try removing (albeit temporarily) all other scripts from the folder, so that you are just left with this script. Then try - this will allow you to further pinpoint where the issue lies. Let me know how it goes Apa1 point
-
This is definitely possible. I could make this for you. You can click on my 3rd signature to read more about my Private Scripting Service .1 point
-
Oh I see what you mean. I've done something similar with grabbing the second closest NPC. You can try to filter out the first item Something like f->f.getName.equals(NAME) && f!=firstItem I don't have my IDE so i can't test right now but you can try that1 point
-
I would listen to us three. We've ran over 1k bots at a time combined so I think we know a little bit about botting tut ?1 point
-
I have residential IPs and it stopped me from getting locked. If I run on random proxies they always get locked1 point
-
1 point
-
1 point
-
1 point
-
Forsure, thanks man Appreciate the 12 hours, I get home in about 3 hours from this reply so that works out! Just wanted to test out the features and if it works for what I need it to do, but i do have some of your other scripts so I'm sure it's gonna be great1 point
-
I'd first start with just the cursing, then you can add alching later. Starting with both at the same time might be a little complicated for now. The benefit of the API is it abstracts away all the specific mouse movement and co-ordinate stuff, so you should take full advantage of this. You're going to want to use the Magic API and the Interaction API. Off the top of my head, it will be something along these lines: getMagic().castSpell(NormalSpells.CURSE); Remeber to check that you have the required runes etc. Good luck! Apa1 point
-
Have you imported java.utils.Arrays? You will need this for the static asList method. Other than that, your code should work fine. The bot would click those tiles, yes. But not necessarily all of the tiles in the path. I like to have my paths with a very small tile interval (I use a script to record paths for me) to guarentee that the next tile will always be reachable. You can always try and experiment with the method and see how it behaves / notice its limitations - i'd suggest this! Good luck Apa1 point
-
1 point
-
1 point
-
Amazing quester! Did Dragon Slayer 2 and Dream Mentor for me super fast and for a good price! A+++1 point
-
Make sure to buy the item prior at the GE before starting the bot by looking for the needed items on Questing guide websites. After that do keep an eye out since some times things can go wrong. And don't bot longer than 2 hours a day 10 a week. There is a whole thread about it I did all quests using this scripts (all the ones it provide). Still no ban, I did had to act upon some bug happening when it got stuck in a never ending loop.1 point
-
Well you did an amazing job once again! Made 20 accounts for me from scratch to a 300 total level and an amount of quests. Make him Verified allready!1 point
-
1 point
-
Asked Divergent to create a Pure quest+skilling bundle for pking wise and he recommended these with very creative reasonings. It was decently fast considering all he had to do. Thank you again and appreciate all the efforts. 50-82 Magic 26-53 Thieving 20-50 Firemaking 20-50 Magic 1-10 Herb 9-20 Smithing 1-63 Construction Desert Treasure QUEST LINE Monkey Madness QUEST LINE The Eyes of Glouphie1 point
-
nice mod logic. Let me follow 17 threads and read every single post. that sounds soooo effecient. this is a major update thats going to have major impact on nearly every script...... doesnt make much sense to go about it like that but thanks for your suggestion0 points