Jump to content
×
×
  • Create New...

Leaderboard

Popular Content

Showing content with the highest reputation since 09/17/21 in all areas

  1. Hello Powbot users. This guide is meant for people who have already installed the bot and have basic knowledge on how to use it. (please note: Bluestacks is optional and not a requirement. and might not work the same as on ldplayer) If you haven't installed Powbot yet I recommend you to follow my other guide here: Step 1. Downloading and installing Bluestacks 5 First off we need to install bluestacks. you can download Bluestacks from the official website: here Going trough the installation process is straightforward. Step 2. Creating Bluestacks instances: once you have installed Bluestacks open the multi instance manager. one in the multi instance manager you want to create your first instance and configure it we will clone it later for more instances. Select new instance to make a new instance: Then select fresh instance: As your android version you want to select the latest 64 bit option: For the settings please copy mine as follows: if you have enough resources on your pc i can really recommend putting the cores to 4 and ram to 4 for much better performance. the current settings are the minimum settings. Press create and install your instance. Step 3. Instance settings. Start your created instance and open the settings in the instance. * While configuring the settings you may have to restart the instance multiple times when you have the settings menu opened please copy my settings as follows: IF you want to run multiple instances you can now clone this instance in the multi instance manager and it copies all settings. this is the cloning button: you can select the number of instances you want. when you press create it should create all the instances you need. Step 4. Connecting ADB and injecting Powbot Now we need to connect the ADB devices so the Powbot installer recognizes them. First off start all your Bluestacks instances you want to connect. if you are using multiple instances start them all in advance of this step. Now we will create a simple batfile that will connect all the adb devices. (if you don't know how to create a Batfile you can go to step 5 of my getting started guide) Copy the following commands into the batfile: cd %homepath%\.powbot\android\platform-tools adb connect 127.0.0.1:5555 cd %homepath%\.powbot\android\platform-tools adb connect 127.0.0.1:5565 cd %homepath%.powbot\android\platform-tools adb connect 127.0.0.1:5575 cd %homepath%\.powbot\android\platform-tools adb connect 127.0.0.1:5585 cd %homepath%\.powbot\android\platform-tools adb connect 127.0.0.1:5595 cd %homepath%\.powbot\android\platform-tools adb connect 127.0.0.1:5605 if you are running more than 6 instances you only need to add 10 to the port number so for example number 7 should be 5615. otherwise you can find your port number in the advanced settings of your instance. Now run this batfile as administrator WHILE your instances are running. Now when you start your powbot launcher bluestacks should show up under the ADB tab like follows: you can now run Powbot like you usually would. Congratulations you successfully installed Bluestacks 5 Make sure you join the Official Discord if you haven't already. Feel free to ask questions in the Help channel you might find me there. thanks to @Kebab King for helping with the guide.
    3 points
  2. I've made a few bots now and have documented various functions of the API on the official documentation. I decided to create a Hunter bot as there was no Hunter bots available at Powbot and thought it would be a challenge managing the state of the different traps and ensuring we're only interacting with our own traps. The plan is to extend the bot to support multiple different types of hunting so I've accounted for that in the code. https://github.com/036/MultiHunt Edit: Just pushed an update to manage lizard hunting... next stop red chins(when my account has a high enough level)
    1 point
  3. @ApolloWe'll have a new guide up soon, for now jump on discord.
    1 point
  4. @DanHave made some changes, let me know if you still hit this.
    1 point
  5. Hello Mr. Dan, first of all I want to thank you because I solved my problem, it was something as simple as downloading the new jar, and I could tell since I actually had the jar of version 1.7, therefore all my attempts to start the client failed even installing all the components from scratch including restoring my operating system to zero LOL, I am very impressed because the moderators of this Powbot community are very attentive to people, it is the first time that I am in a community of bots where they attend very effectively, keep it up, every day they are improving a lot, and this mobile bot is super effective, thanks again and my congratulations to all the Powbot team !!!
    1 point
  6. You’re using an old installer, don’t use bat files as they’re pointing to the wrong file. Download the file from site and open the jar.
    1 point
  7. Step 1) Registering a forum account To start using PowBot you need a forum account, so let's get that started first. Open the registration form by clicking HERE, or using the Sign up button in the top right of this page. Fill out the form with a valid e-mail address, as you'll need to verify it to continue. After registration, your forum account will be used to log in to the PowBot client and script repository, and you'll be able to participate in community discussions. Step 2) Installing OpenJDK 11 from AdoptOpenJDK In order to run PowBot on your computer, you will have to install Java 11. You can download Java 11 for free from AdoptOpenJDK.net. Install it by opening the downloaded installer, and using the default settings provided. Once it's installed proceed to the next step. (Also make sure your OS is x64!) If you get stuck during this process don’t be afraid to ask questions in the help channel in the official Discord Step 3) Installing the emulator Here you have 2 options installing LDplayer or running it with hyperv. I recommend you use ld player so you can use multiple instances continue the guide if you do. If you want to continue using Hyperv follow step 1 of my V1 guide HERE you should download the latest version of LDplayer. You can find it here: https://www.ldplayer.net/blog/download-64-bit-android-emulator-for-64bit-required-games.html Go trough the standard installation process for question or information the LDplayer support site (with videos and tutorials if needed): https://www.ldplayer.net/support/ Step 4) Downloading the bot Now we have gotten to the point where you want to download the actual botclient. you can find the client download here: https://powbot.org/community/index.php?/forum/56-downloads/ Select Client V2 subforum and it should start downloading. (for updates you might have to re download the bot and replace the powbot-install.jar file) Step 5) Starting the bot Simply open the java file. If opening it doesn't show the Stable/Development window as shown below, try settin your java home with this useful tool https://johann.loefflmann.net/en/software/jarfix/index.html However, if you're having trouble installing and you want to see more details on what might be going wrong, you can run usign the command line. To do this you will have to use the following command: java -jar "%USERHOME%\Downloads\powbot-install.jar" When the bot starts you will be asked to choose the version select stable. now it will ask for operating mode. if you installed ld player select ldplayer otherwise select emulator. if you selected emulator it should start right away. if you started with LD player you will be shown a menu where you can choose between instances like this: select "create" to make a new instance it should look like the picture above. you can now select start to start the instance it should start loading up LD player and the bot this can take a bit.. if you want to run multiple instances create another instance and re run your command or .bat file and select the other instance. when everything is loaded up you will be asked to login to your Powbot account like shown here: enter your account information and press login Step 6) Running scripts and adding accounts adding a account to the bot is not required but its recommended so the bot will automatically login if it disconnects. to add a account open the account menu by pressing the accounts button as pictured below: When the accounts menu is open like below press add and enter your account info. After this press save. now to start scripts. you can start scripts by pressing the play button. you will see the following menu. select your account and start a script by clicking on the script name. Congratulations you now have successfully installed the bot! Make sure to join the official Discord for questions and update announcements.
    1 point
  8. 1 point
  9. Hi all, with the new upcoming release of V2 we have changed the process from using Java GUI's to native android GUI's. In an effort to make this easier for scripters we have changed the way of doing this by using annotations. @ScriptConfiguration Using the @ScriptConfiguration tag you can now configure your script as required to make it simple to setup. There are currently 6 OptionType's you can use to setup your data which can correspond to different types of controls used to get that data. String Integer Double Boolean GameObjects Npcs Examples Singular @ScriptConfiguration( name = "Tree", description = "Pick which tree type you want to cut", defaultValue = "Tree", allowedValues = ["Tree", "Oak"], optionType = OptionType.STRING, // Default enabled = true, // Default visible = true, // Default ) class TreeKiller : AbstractScript() { override fun onStart() { var tree = getOption<String>("Tree") } } Multiple configurations @ScriptConfiguration.List( [ ScriptConfiguration( name = "Tree", description = "Pick which tree type you want to cut", allowedValues = ["Tree", "Oak"] ), ScriptConfiguration( name = "Powercut", description = "Tick this to drop logs when your inventory is full", optionType = OptionType.BOOLEAN, defaultValue = "true", ) ] ) Controls When entering data you naturally will need different controls for different things, here is a list of the current ones we support. If you have any more feel free to suggest them and give an example use case Drop down list Must be string type Must have multiple allowed values This will most likely be the most common one you would be using, it starts at the default value and the complete list contains all the allowed values Text Fields This is a field where users can enter data they want, depending on the type you specify it will restrict the characters allowed to be entered. String(no/empty allowed values) Any character allowed Double type 0-9 and . Integer 0-9 only Checkbox This is a simple field which will return true/false depending whether the checkbox is ticked. Only for Boolean OptionType. Npc This is a special field which allows you to select a list of NPC's and return relevant information relating to them in a List<NpcOption> format. GameObject This is another field just like the one above although this one returns in a List<GameObjectOption> format @ValueChanged This annotation much like the name suggests lets you get notified when the value is changed. You can use one of these for each of the script configurations that you have setup above, combined with the functionality to update the values this allows you to create much more dynamic user interfaces. Example In the example below I have two script configurations for when I want to chop wood Location and Tree. The predicament is that Draynor does not have access to all the trees that Seers or Edgeville does so if I was to add all the trees below and invalid configuration would be possible. Using @ValueChanged we can solve that by listening for when the user changes the Location and update the list of values the user is allowed to select. @ScriptConfiguration.List( [ ScriptConfiguration( name = "Location", description = "Pick a location to cut the tree at", defaultValue = "Draynor", allowedValues = ["Draynor", "Edgeville", "Lumbridge", "Nearby", "Seers"] ), ScriptConfiguration( name = "Tree", description = "Pick which tree type you want to cut", allowedValues = ["Tree", "Oak"] ), ] ) class x : AbstractScript() { @ValueChanged("Location") fun locationUpdated(updatedValue: String) { // Select list of tree's based on the location val updatedList = when (updatedValue) { "Lumbridge" -> arrayOf("Tree", "Oak") "Draynor" -> arrayOf("Tree", "Oak", "Willow") "Edgeville" -> arrayOf("Yew") "Nearby" -> arrayOf("Tree", "Oak", "Willow", "Maple", "Yew", "Magic") "Seers" -> arrayOf("Tree", "Oak", "Willow", "Maple", "Yew", "Magic") else -> arrayOf() } // Update the list of allowed trees for the field named "Tree" updateAllowedOptions("Tree", updatedList) } } Other methods which do similar things are as follows // Gets the value of the data from the name. T is the type returned depending on the field(EG String/Boolean) getOption<T>(name: String) // Updates the list of allowed options for a field. updateAllowedOptions(name: String, options: Array<String>) // Updates the value depends on the type of field EG Boolean/String updateOption(name: String, value: T?, type: OptionType) // Updates whether the field is hidden or shown updateVisibility(name: String, visibility:Boolean) // Updates whether the field is enabled/disabled updateEnabled(name: String, enabled: Boolean) Hopefully this helps you understand what we are trying to accomplish and how to use these changes. Any suggestions are welcome or any requests for other fields etc.
    1 point
  10. Hi all, It's been a little under a year since we first started PowBot after RSBot shut it's doors. Over the course of the year we have tried our best to change the botting landscape and innovate but with the established alternative communities out there we haven't managed to grow quite as much as we wanted. As a result we will be making some changes to refocus our development efforts, improve quality of the service and cancel distractions so we can focus on bringing you the best product possible. Sunsetting of the desktop client Many of you will have seen this coming with our push into the OSRS Mobile arena. We will no longer be working on the desktop client going forward. There are several reasons for this but by far the biggest one is that we want to focus all our efforts on making PowBot Mobile a success. Our initial idea was to combine desktop and mobile into a single platform, and we've done that with varying success in version 1 of the mobile bot. Over time it's become clear to us that mobile is the big winner and having it tied to the desktop version of PowBot is just adding more restrictions rather than bringing benefits. We're going all-in on mobile I think it's fair to say the v1 beta was hugely successful, several people managed to get their 99s without getting carpal tunnel. Now it's time to double down and make mobile into the best client it can be. For the past few weeks we have been building on version 2 of the client - a complete rewrite of the mobile bot - with some amazing new features: Can run entirely self-contained on an Android device Paint and UIs are fully integrated into the game (no more separate windows and desktop apps!) Real-time callbacks making it possible to do tick-sensitive things like Jad, Zulrah and more Real-time input finally making clicks, drags and keystrokes more accurate. Tons of bugfixes and performance enhancements with over 10x speed improvement. Development with auto-reload upon recompilation- right from your IDE. What happens to the scripts? We will work with all our (willing) Script Writers to help port their scripts over to the next version of the mobile bot. Scripts that aren't being ported over will be rebuilt by the PowBot team. Subscriptions to scripts that are not being ported over will be automatically cancelled before they renew. Does this mean PowBot will no longer be free? Correct, PowBot Mobile will only be available to users with a VIP subscription and Script Writers. Users with an interest of scripting for our platform can contact us here on the forum, or on Discord, to get temporary access to develop their scripts and apply for the Script Writer rank. Additionally, we will be limiting the total amount of instances that can be ran in order to prevent raising too many flags and risking bans. This means we will not continue selling VIP subscriptions if the total instance cap is reached. Instances will be available on a first-come first-served basis. More details on pricing for the various subscription levels will be made available soon. So when is the new mobile client coming out? Definitely by the end of August 2021, but the exact date is uncertain. Our internal roadmap is as follows: 16-08-2021: Script Writers get access, we start porting scripts 23-08-2021: VIP users get access, minimal amount of scripts will be supported at this point. 30-08-2021: New subscriptions and instance limits apply, most scripts should be supported at this point. Of course we are partially dependent on our SWs helping us achieve these goals, so the amount of scripts we may launch with can vary. Our longer term goal is to build a library with at least one script per skill by the end of the year, but we don't want to sacrifice quality for quantity. With the new client we're also making some API changes that particularly make scripting with Kotlin easier. We want to make scripting accessible even for people with limited programming experience, as the best way to ensure diversity and low ban rates is by having more people writing scripts for personal use. Look forward to more documentation and tutorials in the near-future on this subject. New developers As part of our renewed effort to develop a great mobile bot we've enlisted the help of some great PowBot-ians. Please join me in welcoming @Pty , @Krulvis , @Toma and @Cov to the development team. They'll all be responsible for different things, so here's the setup: @Pty and @Krulvis will be working on all aspects of the client core and API, delivering new and exciting features for all our members to benefit from directly. @Toma has been working on smoothing out our client update process and making improvements to the walking web. @Cov is in charge of building the desktop-based Manager application, that allows you to start, control and coordinate all your mobile bots from a single view on your computer making it easy-peasy to manage larger botting setups. That's all, folks Thank you for your support over the last year, we're glad we managed to create a small but loyal userbase to take on this new journey and we hope you'll be with us for a while longer 🙂 Cheers, Your PowBot team @_Rick @const_ @Yoshiki @Dan @Toma @Pty @Krulvis
    1 point
  11. 1) Intro This is the first part of my Hill Giants tutorial script. The focus will be on making a working F2P hill giants script first, and then adding p2p functionalities (ex. potions). I will assume that you have successfully finished setting up your local script repository. If not, please go do that first. I will also assume that you have SOME experience in Java/programming. I won't be explaining every little detail. Create new project and set it up. I named it "GiantSlayer". First of all, further down the line, when you will creating scripts yourself, if you don't know how classes connect or if you wanna see if there's a certain method in the API, you can always look at the PowBot API documentation - https://powbot.org/docs/ Also, there's a PowBot discord. There's a lot of nice people that are ready to help you with any problem that you might have - https://discord.com/invite/aBG7YqtXeF So with that out of the way, lets start. 2) Creating a base class First, lets create a package. Right click "src" folder and create new package. I will name it "toma". Now right click on the new package/folder and create another package with the name of your script. I named it "giantslayer". Create new java class in that package and name it "GiantSlayer". You should have a new empty class. Lets extend our class with a custom powbot class PollingScript. PollingScript gives us a basic game loop through poll() method which is called every frame while the game is running. It also gives us access to ClientContext through a variable ctx. ClientContext is a class that gives us access to all of the API classes, pretty much everything we need to interact with the game; be it bank, inventory, skills, magic, npcs, etc. TIP: In IntelliJ , if you see that a class name or variable is colored red that probably means that you're missing an import or that you need to implement required methods. You can easily do that by hovering over said name and clicking "alt+enter", a context menu will open from which you can choose to import a missing class or implement methods. Add missing imports You can also add additional overridden method "public void start()". Override simply means that we're replacing or overriding the method that was defined in the parent class (PollingScript). Method start() is called only once when script is started, while poll() gets called every frame. Everything that needs to be defined when the script starts will be defined in start(). Ok, so now we have this. Before we continue lets also add Script.Manifest so we can actually run the script. Add the following code right before the class definition (under imports) @Script.Manifest( name = "GiantSlayer", description = "Kills Hill Giants", version = "0.0.1" ) Now lets create a basic attack and heal functionality. 3) Stream API (new API) A quick word about the new API that PowBot is using. It's been made in the likeness of Java Stream API so if you don't already know about it I'd advice you to read about it first (Java Stream Tutorial). So how the API works is you use ClientContext to get a "stream" of ground objects, NPCs, inventory items (or other objects that you want to manipulate is some way) and then you use methods on that stream to sort, filter, map or do whatever you want to do, to end up with the desired object(s). Most of the stream operations are intermediate. That means that they return a (usually) changed stream (e.g. sorted by some predicate) . And that is pretty cool because we can then chain many different operations on the same stream without creating new variables. So if we want to find the nearest npc with the name "Hill Giant" we would do this: ctx.npcs.toStream().name("Hill Giant").nearest().first(); most of the api calls will start with "ctx.typeOfStream.toStream()", now you have a stream of objects that you can manipulate so ctx.npcs.toStream() returns all npcs around us (that are loaded), as a stream .name("Hill Giants") filters only npcs with a given name .nearest() sorts all npcs by distance to player (low to high) so now we have a stream of npcs we need to actually get the first one in the stream (closest to player), and for that we use .first() 4) Attack and heal functionality 4.1) Attack Alright, lets finally implement attack and heal. Create a new method private void attack() in GiantSlayer class. First, we need to actually find an npc to attack. For that we will of course use our stream api. Find the closest npc, check if it's valid, and then attack, but lets also check if we are not already interacting with this npc. You might have to import the Npc class. public void attack() { // First we find the npc Npc giant = ctx.npcs.toStream().name("Hill Giant").nearest().first(); // Check if it's valid and we're not already attacking him if (giant.valid() && !giant.interacting().equals(ctx.players.local())) { giant.interact("Attack"); } } We use .valid() to check if we actually got an npc from the stream (maybe there are no giants around?) .interacting() is a method of actors (npcs, players) that returns an actor that is interacting with our actor (in this case Hill Giant). So we check if that giant is not already interacting with our character You can now call attack() function in poll(). Compile + run the program. You should be able to see the script in File->Run. Alright, it's kinda working, but it spam clicks a bit too much before it gets into combat. Lets add a conditional sleep (or wait). Conditional wait is your best friend. You will use it pretty much everywhere. Condition.wait(Condition) will wait until you have met the condition (limited by number of tries and frequency. It will return true if we're interacting with an npc. First number (450) says how long to wait before it calls the condition, aka frequency ( in ms), and the second one is the number of tries ( 3 in our case). So it will wait for the maximum of 450x3 = 1350 ms = 1.35 seconds before it continues. public void attack() { // First we find the npc Npc giant = ctx.npcs.toStream().name("Hill Giant").nearest().first(); // Check if it's valid and we're not already attacking him if (giant.valid() && !giant.interacting().equals(ctx.players.local())) { // Attack the giant giant.interact("Attack"); // Wait until we have started interacting Condition.wait(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return giant.interacting().equals(ctx.players.local()); } },450,3); } } Ok, so now it's not spamming as much. Lets implement healing. 4.2) Heal Create a new fuction private void heal() Before you do anything else create a new int variable in the GiantSlayer class. We will need it for the food id. private final static int FOOD_ID = 361; 361 is the ID of "Tuna". To find item IDs you must have them in the inventory and then go to View->Items. Ok, now add this code to the function. We will also use Condition.wait(), but this time we will wait for script to click on the item, we can use it like that because food.interact() returns a boolean (true if clicked, false otherwise) private void heal() { // Find food in inventory Item food = ctx.inventory.toStream().id(FOOD_ID).first(); // Wait until we have successfully clicked on the item Condition.wait(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return food.interact("Eat"); } }, 350, 4); } 4.3) Combining heal and attack Now when we're done with the heal() function we can integrate everything together in the poll() function. First we check if we're out of food. If we are, stop the script. Then we check if health percentage is lower than some value (60% in this case). If it is, call heal() function, if not call attack() function. public void poll() { // First check if there's any food, if there's not, stop the script (hope we don't die) if (ctx.inventory.toStream().id(FOOD_ID).isEmpty()) { ctx.controller.stop(); } // If our health is under 60% we should heal if (ctx.players.local().healthPercent() <= 60) { heal(); } // Otherwise we can attack else { attack(); } } This is the final script. Now compile and run the script. It should now attack the nearest giant, switch to another one when the current one dies and heal when low on health. Congratulations if you have managed to successfully complete everything till now. This is gonna be it for this part. In the next part we will restructure our script in a better way, refine existing functionalities and add new ones. Thanks for reading. See you in the next part!
    1 point
  12. It is safe to say that OP died
    0 points