Leaderboard
Popular Content
Showing content with the highest reputation on 10/06/19 in Posts
-
NEW! Added Gemstone Crab! 81 Hours at Cows Brutal Black Dragon support Sulphur Nagua support Blue Dragon 99 ranged 99 Ranged at Gemstone Crab 81 Range F2p Safespotting Hill Giants Hotkey List // F1 = set cannon tile // F2 = hide paint // F3 = Set afk tile // F4 = reset afk tile // F6 = Set safespot tile // F7 = activate tile selector // F8 = Reset tile selector // F9 and F10 used by the client, EDIT: will re-assign as they are no longer used by client // F11 = Set breaks tile // F12 = Reset breaks tile User Interface Banking Tab Demo (handles everything with banking) You can copy inventory (to avoid adding individual items...), you can insert item names which have Auto-Fill (for you lazy folk!) and you can choose whether to block an item and avoid depositing it in bank, ideal for runes and ammo. Looting Tab Demo (From looting to alchemy, noted/stackable items too) You can choose whether to alch an item after looting it simply by enabling a checkbox, with a visual representation. All items are saved upon exiting the bot, for your convenience! Tasking Demo (Not to be confused with sequence mode, this is an individual task for leveling) You can set stop conditions, for example to stop the bot after looting a visage, you can have a leveling streak by changing attack styles and training all combat stats, you can have windows alert bubbles when an event occurs and an expansive layout for misc. options! Prayer Flick Demo (Just example, I made it faster after recording this GIF) There are two settings: Safe mode and efficient mode, this is safe mode: Fight Bounds Demo Allows you to setup the fight bounds easily! Simplified NPC chooser Either choose nearby (local) NPCs or enter an NPC name to find the nearest fight location! Simple interface, just click! Level Task Switch Demo (Switching to attack combat style after getting 5 defence) You can choose how often to keep levels together! e.g. switch styles every 3 levels Cannon Demo (Cannon is still experimental, beta mode!) Choose to kill npcs with a cannon, recharges at a random revolution after around 20-24 hits to make sure the cannon never goes empty too! Results Caged Ogres: How does this bot know where to find NPCs? This bot will find far-away npcs by simply typing the NPC name. All NPCs in the game, including their spawn points have been documented, the bot knows where they are. You can type 'Hill giant' while your account is in Lumbridge, and the bot will find it's way to the edgeville dungeon Hill giants area! Here is a visual representation of the spawn system in action (this is just a visual tool, map mode is not added due to it requiring too much CPU) Fight Area Example (How the bot searches for the npc 'Wolf') Walking System The script has 2 main walking options which have distinctive effects on the script. The walking system is basically a map with points and connections linking each point. It tells the script where to go, and decides the routes to take when walking to fightzones. Walking system 1 This uses a custom walking API written by myself and is constantly being updated as new fightzones are added. Pros: - Updates are instant, no waiting times - More fightzones are supported Cons: - Sometimes if an object is altered, the changes are not instant - Restarting the script too many times requires loading this webwalker each time which adds unnecessary memory (there is no way to make it only load at client startup since I don't control the client) Walking system 2 This is the default OSBot webwalking API - it is relatively new and very stable since the developers have built it, but is currently lacking certain fightzones (e.g. stronghold) and other high level requirement zones. It is perfect for normal walking (no object interactions or stairs, entrances etc) and never fails. Pros: - Stable, works perfect for normal walking - All scripters are giving code to improve the client webwalker - More efficient when restarting the script since it is loaded upon client start Cons: - No stronghold support yet - Some new/rare fightzones not supported yet - If there is a game-breaking update or an unsupported fightzone, it may take some time to add/repair (less than 24 hours usually) So which system should I choose? Whichever one suits your chosen fightzone best! There really shouldn't be any problems - the sole purpose of these options are for backup and emergency purposes, if the script ever messes up there is always the next option to select. Note: If the script ever fails, there will be immediate updates to fix the walking systems! Script Queue/Bot Manager: Script ID is 758, and the parameters will be the profile name that you saved in the fighter setup! Bug Report templates: New feature request - What is the new feature - Basic description of what the script should do - Basic actions for the script: 'Use item on item' etc. For when the script gets stuck on a tile (or continuous loop): - Which exact tile does the script get stuck on? (exact tile, not 'near the draynor village') - Plugin or normal script? - Did you try all 3 walking options? Script has a logic bug (e.g. dies while safespotting) or (cannon mode doesn't pickup arrows) - What is the bug - How did you make the bug happen - (optional) recommendation for the bug, e.g. 'make the script walk back' or something - Tried client restart? - Normal script or a plugin? - Which exact setup options are enabled? Afk mode, cannon mode, etc etc.2 points
-
NEW! supports new south + east shortcuts, new hopper (upstairs), and mouse invokes!!! (just like runelite!) 'the intelligent choice' By Czar 34-99 Mining on video!! Agility Shortcut Setup Window Preview 70 hours run time https://i.imgur.com/wiF6VPO.png1 point
-
CURRENT RECORD: 201 HOURS RUNTIME NEW: Sandstone mining + hopper support Humidify/water circlet/bandit unnote Ardy cloak tele support Setup Screen Preview Results 84 HOURS ON NEW LEVEL 20 ACCOUNT Suicided account with mirror mode near rock crabs, 81 mining! I will probably go for 99 Even supports Ancient Essence Crystal mining! Preview: Mine 1 drop 1 item drop pre-hover feature:1 point
-
i was fooling around and come up with this. works pretty well for speeding things up. for making Mahogany Tables. ;dose not interact with butler ----------------------------------------------------------------------------- ;AHK 2 Click: z:: Click Right sleep (500) MouseMove, 0, 54, 0, R sleep (800) Click sleep (800) send {6} return x:: Click Right sleep (500) MouseMove, 0, 54, 0, R sleep (500) Click sleep (800) send {1} MouseMove, 0, -100, 0, R --------------------------------------------------------------------- ;AHK Auto #MaxThreadsperHotkey 2 z:: toggle := !toggle loop { Click Right sleep (500) MouseMove, 0, 54, 0, R sleep (800) Click sleep (800) send {6} sleep (1800) Click Right sleep (500) MouseMove, 0, 54, 0, R sleep (500) Click sleep (800) send {1} MouseMove, 0, -88, 0, R break } return with the auto it makes and removes and you have to toggle again not fully auto. tell me what you guys think. thanks1 point
-
Molly's Thiever This script is designed to quickly and efficiently level your thieving! Check out the features below. Buy HERE Features: - Capable of 200k+ per hour and 30k+ exp/ph on mid-level thieving accounts. - Quickly reaches 38 thieving to get started on those master farmers for ranarr and snap seeds! - Fixes itself if stuck. - Hopping from bot-worlds. - Stun handling so the bot doesn't just continually spam click the npc. - Drops bad seeds if inventory is full at master farmers. - Eats any food at the hp of your choosing. Supports: -Lumbridge men -Varrock tea -Ardougne cake -Ardougne silk -Ardougne fur -Kourend Fruit Stalls -Ardougne/Draynor master farmer -Ardougne/Varrock/Falador guards -Ardougne knight -Ardougne paladin -Ardougne hero -Blackjacking bandits as well as Menaphite thugs, this has limitations, click the spoiler below to see them Setup: Select your option from the drop down menu, it will tell you the location where the target is located. Fill out the gui and hit start. Simple setup! Proggies: Proggy from an acc started at 38 theiving:1 point
-
Are you tired of getting banned botting hunter? Do you want a bot that can run for days at a time while keeping in-game time low & staying under the radar? First Farming additions have been made! This bot will soon be an AIO passive skill trainer Buy it here Like this post & comment for a free 24 hour trial DO NOT RUN THE SCRIPT WITHOUT READING THE REQUIREMENTS/GUI OPTIONS SECTION Video of a typical BH & Herb run (Herb run starts at 44 seconds) : Note that even with only 65 farming & several dead allotment plants, the bot still gets 196 snape grass and 20k farm xp from the farm run. You can get close to 40k exp per farm run if you do snape grass seeds with white lillies set up to protect them (turn off flower seeds so it doesn't pick the white lillies) Proof of Anti-ban potential : This video shows 6 accounts with 80+ hunter running the script for 10 hours straight. This is a custom version of the script which allows me to switch accounts once a run has been completed. So instead of 1 birdhouse run every 50 minutes, it does 6. You could actually do about 15 accounts with one client since it takes about 3 mins per trip on each account. Top 5 Botters as of 10/16 (Data Record Began 10/4) 5.5 day run (only 7.5 hrs in-game time) with Redwood Birdhouses 725k exp, 89-91 hunter, 1500 bird nests 6.3 day run (8.5 hours in-game) from 9 hunter to 68 hunter Features Custom Break Handling - Smart break handler logs you out as soon as you finish a trip & logs you back in when it's time to do another BH or Farming run -Minimizes in-game time so you can run the bot 24/7 -Very low ban-rate compared to other hunter methods (still never been banned while using mirror mode on 10+ accs) -Saves the times you last finished a BH or Farm run, so you can stop & restart the script at your will Birdhouse Trips -Empties and Resets all 4 birdhouse traps in about 2 minutes -Detects the best birdhouses/logs that you can use in your bank based on your Hunter & Crafting levels -Extremely good moneymaking with Bird Nests, Herb Seeds, & Clue scrolls -Can go from 9 to 60 hunter with only about 4 hours in-game time -Option to utilize Digsite Pendants -Option to empty all of the ring/seed nests in your bank -Option to buy hop seeds from Olivia in Draynor Market with world hopping Farming Trips -Currently supports Catherby, Falador, Ardougne, Morytania, & Hosidius patches -Supports all Allotment, Flower, & Herb seeds -Withdraws Ultracompost/Supercompost/Compost from Leprechaun as needed -Rakes Patches & Clears Dead Plants when needed -Option to cure diseased plants -Options to use Magic Secateurs, Amulets of bounty, and Xeric's Talisman Upcoming Farming Updates -First priority is Farming Contracts. It will be able to complete 1-5 farm contracts per trip based on luck -Will be adding a lot more teleport/transportation options -Addition of Troll Stronghold & Weiss Patches -Addition of Tree , Fruit Tree, & Hardwood Tree runs -Addition of other miscellaneous patches like Calquat, Cacti, Belladonna, & Bushes Requirements & GUI Option Explanations Please read this section carefully. Choosing an option without having the required items will most likely cause the script to stop working properly. I will go through each section one by one. This section enables Birdhouse runs. It will log in to do a run every 50 minutes after the fourth Birdhouse was set up. Must Haves: Level 5 Hunter Completion of Bone Voyage Quest 21 Construction for building Fossil Island bank chest (Hammer, 2 oak planks, iron bar, 5 nails) Plenty of birdhouses or logs (You can use the table to prepare the right amount of logs beforehand) Plenty of hops seeds (40 per run) If planning on using logs, you must have a hammer, chisel, & 8 clockwork in bank Digsite Pendants: Digsite Pendants are highly recommended (and required if doing farm runs as well) as they save a lot of time. You must have unlocked the Fossil Island Teleport (it takes like 2 mins) This section enables Farm runs. It will log in to do a run every 80 minutes (growth rate of herbs). Must Haves: YOU MUST HAVE RINGS OF DUELING TO USE FARMING - The script uses Castle Wars as a hub to re-gear for Farm Runs and BH Runs. This might change in the future. You must start the script in Castle Wars for now. If doing BH & Farm Runs, you must have Digsite Pendants as well. Seeds: You can choose specific seeds to use or choose the "Best in Bank" option. This option will automatically use the best seed in your bank which you can plant based on your farming level. If you want good exp, I recommend manually planting White Lilys in every patch (this protects all allotments). Then, turn off the flower seed option so you don't remove them and use a high level allotment seed like Snape Grass. Leprechaun: Here you can specify which type of compost you want to use (or none, but that would be dumb). Make sure your leprechaun has plenty of composts of the type you chose. Using the Plant cure option will make your player withdraw a Plant Cure from the leprchaun if he comes across a diseased patch which actually happens semi-frequently. Don't select this option if your leprechaun doesn't have plant cures. Equipment: Magic secateurs - Requires Fairy Tale Pt1, have in bank or equipped Amulets of bounty - These can save you some money if using snape grass seeds frequently, have a bunch in your bank if you choose this option Patches: Hosidius - Requires 31 Magic , a house in Hosidius, & House Tele runes OR you can select the Xeric's Talisman option which only requires a charged Talisman Camelot - 45 Magic & Camelot Tele Runes Ardougne - 51 Magic, Plague City Quest, Ardy Tele Runes Morytania - Ectophial, Ghost's Ahoy Quest Falador - 37 Magic , Fally Tele Runes There are going to be a lot more transportation options in the next release Other features: Empty Nests - this option will empty all of the ring/herb nests in your bank. Start next to any bank Buy hop seeds in Draynor - Buys Hops seeds from Olivia in Draynor and hops worlds. Have coins, 5 empty slots, & start in Draynor Market Required items & Start Location: The bottom of the GUI has a dynamic list of items & start locations that change based on your selected options It's quite simple: IF YOU DON'T HAVE OR RUN OUT OF ANY OF THESE ITEMS, THE BOT WILL PROBABLY HAVE SOME ISSUES. So stock up or turn options off based on what you have Known Issues & How to Fix Bot stops doing anything and logger has "java.lang.OutOfMemoryError: unable to create new native thread" Below are screenshots from 2 of my test accounts (both HC ironmen). All of the Hunter levels are from birdhouses (not a single trap set). Also, notice how low the slayer levels are which proves that I got the seeds from birdhouses and farming contracts only. The total money from tree seeds was actually a lot more but I used them for farming xp Uncut Video of Birdhouse Trip, Herb Run (8 Patches), and Farming contract in one script Paint is for testing purposes only (I'll make it much more aesthetic later) 2:36 Herb Run - 5:57 Farming contract Run This is what the final version of the bot will be like. Right now it is catered to my accounts so I need to make it more widely usable.1 point
-
Hey, This release brings the following features. API CHANGES: - Added Client#getInstanceTemplate() - Added MethodProvider#getGraphicObjects() - Added GraphicsObject API - Added GraphicObjects#getAll() - Added GraphicsObject debug - Added Projectiles debug FIXES: - Fixed onGameTick() not working. - Fixed an npe with Player#getName() - Fixed not being able to retrieve all npcs MISC: - Minor bug fixes. - The OSBot Team1 point
-
Hey, Just a quick bugfix for the banking issue. Download: http://osbot.org/devbuilds/osbot 2.5.59.jar FIXES: - Fixed Bank#isOpen() returning false when not on the main tab. MISC: - Minor bug fixes. - The OSBot Team1 point
-
mirror mode is better/safer and definitely worth it, but stealth injection is still good enough to use1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
This is the first script I have ever purchased that legitimately made as much gph that it advertised right out of the gate. When I let this thing run for 1 hour without breaks it consistently makes right around 300k/ph. I have had it running multiple times now with 0 issues. Even using frequent breaks it is still making 250k/ph on average. I have tried multiple different settings with this script and have yet to have a single issue with any configurations I have used. Thank you very much for this.1 point
-
1 point
-
@Czar I built the entire account through the proxy and didn't start botting the account until I hand trained 55 magic, as well as completed all the f2p quest as well as Monkey Madness. I typically stay hidden or bank standing GE in Full worlds. The bot was ran after an update, but I took the time and waited 2 days before attempting to play on it again. I believe the proxy might of just been dirty.1 point
-
1 point
-
Just purchased, I noticed when fletching broad bolts it has a 2-5 second delay In between EVERY 10 bolts. Is it supposed to do that or am I dumb and missing something? Thanks1 point
-
hey czar been a fan of your scrpits and took an interest in this one,think i could get a trial?1 point
-
Note: this is not how to make a GUI. This is how to implement one. The following is assumed: You have one file that contains your GUI code. You have one file that contains your script code. Your GUI code has a 'start' button which is public or has a getter function. Let's start with your script code: public class TestScript extends Script { @Override public void onStart() throws InterruptedException { } @Override public int onLoop() throws InterruptedException { return 250; } @Override public void onExit() throws InterruptedException { } } Simple code with three routines: onStart, onLoop and onExit. Here's what we're going to do: onStart Check the script parameters and store the values into Atomic variables. I'll explain why later. If we don't have script parameters, we then initialise the GUI and then show it. onLoop If our Atomic variables are empty, then have the script do some afk things (shake the mouse) until we do. If the user closes the GUI and our Atomic variables are empty, then stop the script. onExit If the GUI exists, then dispose of it. Okay, so now let's begin by declaring some variables: public class TestScript extends Script { private JFrame gui; private String params; private AtomicReference<String> treeName; private AtomicReference<String> axeName; private AtomicBoolean powerchop; private AtomicInteger stopAtLevel; @Override public void onStart() throws InterruptedException { initialiseVars(); } public void initialiseVars() { params = super.getParameters(); treeName = new AtomicReference<>(); axeName = new AtomicReference<>(); powerchop = new AtomicBoolean(); stopAtLevel = new AtomicInteger(); } @Override public int onLoop() throws InterruptedException { return 250; } @Override public void onExit() throws InterruptedException { } } Notice how I haven't instantiated the 'gui' variable? This is intentional. GUIs are inefficient and memory intensive. If the user has started the script with script parameters, then just use that. However, if the script parameters are wrong, then use the GUI as backup. Now let's check the script parameters and initialise the GUI. Note: how you check script parameters are valid is up to you. You can check out my CLI Support Made Easy API API, Script File (ini) API, and OSBot File API. public class TestScript extends Script { private JFrame gui; private String params; private AtomicReference<String> treeName; private AtomicReference<String> axeName; private AtomicBoolean powerchop; private AtomicInteger stopAtLevel; @Override public void onStart() throws InterruptedException { initialiseVars(); if (!checkScriptParameters()) { SwingUtilities.invokeLater(this::initialiseGUI()); } } private void initialiseVars() { params = super.getParameters(); treeName = new AtomicReference<>(); axeName = new AtomicReference<>(); powerchop = new AtomicBoolean(); stopAtLevel = new AtomicInteger(); } private boolean checkScriptParameters() { boolean valid = false; // TODO check script parameters // TODO put values into Atomic variables (parse them if need be) // TODO return true/false based on whether the parameters were correct return valid; } private void initialiseGUI() { // TODO gui stuff } @Override public int onLoop() throws InterruptedException { return 250; } @Override public void onExit() throws InterruptedException { } } So, about those Atomic variables. Notice the "SwingUtilities.invokeLater..." stuff? Well, you can read about Swing Utilities here. The short-form is: we're running the GUI on a separate thread. This means the following: The client won't freeze whilst the GUI is open (yay!). The Atomic variables are going to handle all that messy concurrency stuff that is now an issue because we're using a separate thread for stuff. Without Atomic variables, we'd need to add our own thread-safety. Why? Because if your script changes a variable at the exact same moment your GUI decides to update that variable, the script thread and GUI threads will conflict and things break. Praise be to Atomic variables! Also, if you're wondering what the :: is for, you can read about that here. The short and sweet: it's a way of referencing a method. Okay now, let's do GUI stuff! Right, we're going to need to add a method that grabs user input from GUI and stores it into the Atomic references. public class TestScript extends Script { private JFrame gui; private String params; private AtomicReference<String> treeName; private AtomicReference<String> axeName; private AtomicBoolean powerchop; private AtomicInteger stopAtLevel; @Override public void onStart() throws InterruptedException { initialiseVars(); if (!checkScriptParameters()) { SwingUtilities.invokeLater(this::initialiseGUI()); } } private void initialiseVars() { params = super.getParameters(); treeName = new AtomicReference<>(); axeName = new AtomicReference<>(); powerchop = new AtomicBoolean(); stopAtLevel = new AtomicInteger(); } private boolean checkScriptParameters() { boolean valid = false; // TODO check script parameters // TODO put values into Atomic variables (parse them if need be) // TODO return true/false based on whether the parameters were correct return valid; } private void initialiseGUI() { gui = new MySexyGUI(); gui.setLocationRelativeTo(bot.getCanvas()); gui.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { TestScript.super.stop(false); } }); gui.getStartButton().addActionListener(this::startButtonClicked); gui.setVisible(true); } private void startButtonClicked(ActionEvent e) { String treeName = gui.getTreeNameTextField().getText(); String axeName = gui.getAxeNameTextField().getText(); boolean powerChop = gui.getPowerChopCheckBox().isSelected(); int stopAtLevel = (int) gui.getStopAtLevelNumberSpinner().getValue(); if (treeName != null && !treeName.isEmpty() && axeName != null && !axeName.isEmpty()) { this.treeName.set(treeName); this.axeName.set(axeName); this.powerchop.set(powerChop); this.stopAtLevel.set(stopAtLevel); gui.setVisible(false); } else { // TODO let the user know there are problems in the GUI } } @Override public int onLoop() throws InterruptedException { return 250; } @Override public void onExit() throws InterruptedException { } } Once we've grabbed the information from the GUI, we need to make sure it's correct. For things such as tree names, axe names, or any other constants, I'd have an enumerator that contains those values and let the user pick out them values from a combo box. It's a safer bet as the user can't pick a "wrong" tree and the enumerator can be used in the checking of the script parameters. If our values are correct, we then store them into the Atomic variables and then hide the GUI. We could dispose of the GUI at this point. However, if the GUI has already been initialised, you may as well keep it around so the user can make real-time changes to the behaviour of the script. I've positioned the GUI relative to the bot's canvas and also added a WindowListener in the form of a WindowAdapter to the GUI that will stop the script if the user clicks on the close button. These are pretty expectant behaviour, so I'd figure I'd add them. To recap, we've achieved the following: onStart Check the script parameters and store the values into Atomic variables. If we don't have script parameters, we then initialise the GUI and then show it. But also, we've achieved this as well: onLoop If the user closes the GUI and our Atomic variables are empty, then stop the script. Because the GUI has a listener that listens to the close button. If that button is clicked, the script will then stop. But we're not done with our onLoop just yet! We're going to want to figure out what values we're currently working with. public class TestScript extends Script { private JFrame gui; private String params; private AtomicReference<String> treeName; private AtomicReference<String> axeName; private AtomicBoolean powerchop; private AtomicInteger stopAtLevel; @Override public void onStart() throws InterruptedException { initialiseVars(); if (!checkScriptParameters()) { SwingUtilities.invokeLater(this::initialiseGUI()); } } private void initialiseVars() { params = super.getParameters(); treeName = new AtomicReference<>(); axeName = new AtomicReference<>(); powerchop = new AtomicBoolean(); stopAtLevel = new AtomicInteger(); } private boolean checkScriptParameters() { boolean valid = false; // TODO check script parameters // TODO put values into Atomic variables (parse them if need be) // TODO return true/false based on whether the parameters were correct return valid; } private void initialiseGUI() { gui = new MySexyGUI(); gui.setLocationRelativeTo(bot.getCanvas()); gui.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { TestScript.super.stop(false); } }); gui.getStartButton().addActionListener(this::startButtonClicked); gui.setVisible(true); } private void startButtonClicked(ActionEvent e) { String treeName = gui.getTreeNameTextField().getText(); String axeName = gui.getAxeNameTextField().getText(); boolean powerChop = gui.getPowerChopCheckBox().isSelected(); int stopAtLevel = (int) gui.getStopAtLevelNumberSpinner().getValue(); if (treeName != null && !treeName.isEmpty() && axeName != null && !axeName.isEmpty()) { this.treeName.set(treeName); this.axeName.set(axeName); this.powerchop.set(powerChop); this.stopAtLevel.set(stopAtLevel); gui.setVisible(false); } else { // TODO let the user know there are problems in the GUI } } @Override public int onLoop() throws InterruptedException { String treeName = this.treeName.get(); String axeName = this.axeName.get(); if (treeName == null || treeName.isEmpty() || axeName == null || axeName.isEmpty()) { // TODO go afk } else { // TODO botty stuff } return 250; } @Override public void onExit() throws InterruptedException { } } The 'onLoop' should be happy as long as you programmed your 'checkScriptParameters' function works. Why? Because if the user enters in wrong script parameters, then the GUI should show up to save the day. If the GUI doesn't show up, that's because the user has entered in correct script parameters, so 'treeName' and 'axeName' should both be valid. Now, let's finish this by closing our GUI on the onExit: public class TestScript extends Script { private JFrame gui; private String params; private AtomicReference<String> treeName; private AtomicReference<String> axeName; private AtomicBoolean powerchop; private AtomicInteger stopAtLevel; @Override public void onStart() throws InterruptedException { initialiseVars(); if (!checkScriptParameters()) { SwingUtilities.invokeLater(this::initialiseGUI()); } } private void initialiseVars() { params = super.getParameters(); treeName = new AtomicReference<>(); axeName = new AtomicReference<>(); powerchop = new AtomicBoolean(); stopAtLevel = new AtomicInteger(); } private boolean checkScriptParameters() { boolean valid = false; // TODO check script parameters // TODO put values into Atomic variables (parse them if need be) // TODO return true/false based on whether the parameters were correct return valid; } private void initialiseGUI() { gui = new MySexyGUI(); gui.setLocationRelativeTo(bot.getCanvas()); gui.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { TestScript.super.stop(false); } }); gui.getStartButton().addActionListener(this::startButtonClicked); gui.setVisible(true); } private void startButtonClicked(ActionEvent e) { String treeName = gui.getTreeNameTextField().getText(); String axeName = gui.getAxeNameTextField().getText(); boolean powerChop = gui.getPowerChopCheckBox().isSelected(); int stopAtLevel = (int) gui.getStopAtLevelNumberSpinner().getValue(); if (treeName != null && !treeName.isEmpty() && axeName != null && !axeName.isEmpty()) { this.treeName.set(treeName); this.axeName.set(axeName); this.powerchop.set(powerChop); this.stopAtLevel.set(stopAtLevel); gui.setVisible(false); } else { // TODO let the user know there are problems in the GUI } } @Override public int onLoop() throws InterruptedException { String treeName = this.treeName.get(); String axeName = this.axeName.get(); if (treeName == null || treeName.isEmpty() || axeName == null || axeName.isEmpty()) { // TODO go afk } else { // TODO botty stuff } return 250; } @Override public void onExit() throws InterruptedException { if (gui != null) { SwingUtilities.invokeLater(gui::dispose); } } } Boom. If the user stops the script whilst the GUI is open, the GUI will be dismissed. We've used SwingUtilities again because the GUI is still running on a separate thread, so we should avoid the script from interacting with it directly. Have fun! Let me know if there are any problems. I wrote this adhoc so there were a few things I missed out, which include: Showing the GUI on 'initialiseGUI' (lol). Hiding the GUI when you click on 'startButtonClicked', but only once you've validated the input from the GUI.1 point
-
Don't bot on accounts you don't want to lose. You're always risking a ban when starting up a script. That is not a valid reason to advise others not to buy the script; bans are based on more factors then just the script itself1 point
-
For a 'FREE' service you must have at least 5m+ wealth for me to be able to do this and receive legit positive feedback from you. (osbot rule) For payed service which I am describing as 'cheap' it must be a min payment of 2M. (osbot rule) I am willing to do quests and skilling, if it's not a free service feel free to pick your price you would like to pay but it must be over 2m 07 gold. request something small if you have an idea and I'll let you know if I'm willing too. I can't always do this, it'll be in my spare time, give me a message and I'll let you know when I can do it. Please read osbot's global ToS My Tos 1. I will never bot your account it will be hand trained. 2. Must change password after service. 3. I am not responsible for any offences during or after the service. 4. Must leave feedback. 5. I can deny your request of service if it isn't to my liking. 6. The password for your account should be a temp password and not something you've ever used anywhere else before. 7. I will take pictures of the value on your account when I start the service for my own safety, please remove all valuables before I start a service, you will need to keep 5m total bank wealth if you are having a 'free' service. If you are paying please remove everything of value unless it is needed/helpful for the service which we would discuss. 8. You will provide all materials for the service to be done. 9. You MUST pay first if it's a payed service. My ONLY discord: buyinghcacc#40950 points
-
0 points