Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Try following our getting started guide
  • Still not working? Try downloading and running JarFix
  • Help! My bot doesn't do anything! Enable fresh start in client settings and restart the client
  • How to purchase with PayPal/OSRS/Crypto gold? You can purchase vouchers from other users
  • yeeter

    Global Moderator
    • Posts

      974
    • Joined

    • Last visited

    • Days Won

      39

    Reputation Activity

    1. Like
      yeeter reacted to Pandemic in Do NOT Run SDN Scripts Sent to You!   
      Hello everyone.
      Earlier today a user messaged other users about a link to a download of a local version of an SDN script for free / small payment (Dreamy AIO Skiller Elite in this case, but this applies to ALL scripts).
      This particular script when ran would decrypt and send your saved game accounts to their servers to steal. All PM's have been deleted, but if you downloaded and ran the script in question, we'd recommend changing your game passwords immediately and delete the script from your PC.
      NEVER download or run any programs or scripts from someone you don't trust. If something sounds too good to be true, it probably is.
      The only safe way to run our premium scripts is to purchase them through our store and run them through our SDN.
      Stay safe,
      The Dream Team
    2. Like
      yeeter reacted to Bonfire in [FREE] bonIdler 🔥 AFK for hours on end!   
      "AFK for hours on end!"

       
      Hello everyone! I'm happy to announce my second free script for DreamBot, bonIdler.
      This script attempts to idle and keep itself logged into the game for as long as you'd like to run the script. Start the script to idle. Stop the script to stop idling. It's that simple. Perfect for meeting the 20-hour trade restriction requirement for newly created Free-to-Play accounts!
      Features
      Keeps the player logged in Comes equipped with log-normal distribution randomization to have very realistic interaction timings that are unique to each player This allows the player to very rarely logout due to being too idle. This is done on purpose to appear more human-like, as humans cannot be logged in 100% of the time Performs a variety of human-like actions to keep itself logged in, including: Panning the camera Clicking on random tabs Pressing keyboard keys Hovering over random skills Prevents common failure states by doing the following: Closing dialogues Closing widgets Turning off "Accept Aid" (to prevent Tele-Other) Handling and accepting OldSchool Bonds that are offered to the player 😛 Moves the mouse off-screen to simulate the user having the game out of focus Logs the total idling time to the console when the script has been stopped Preview
      Changelog
      Current Version: v1.03
      User Reviews
      Here's what some of bonIdler's users have to say about the script:
    3. Like
      yeeter got a reaction from camelCase in WINDOWS | DreamBot Automated Install/Setup   
      Automating the Install and Setup Process of DreamBot
            Thought I would throw a quick tutorial together about the approach I am taking to automatically install/setup/start the initial instance(s) of DreamBot for my newest farm.  One major concern with my newest farm was time spent actually setting up VMs and bots.  My previous farms all closed up shop eventually due to horrible time management on my part.  So I am a major proponent for automation of repetitive task.  I personally am using Docker instances and have scripts similar to the ones I have posted below run on creation of the docker instance so the farm is ready to go the moment I sign into the docker instance.  
      *** Disclaimer *** Not saying this is the best way  to do it, this is just what I ended up botching together to save me 10 minutes each time I spool a new instance up. 
       
      What's it do tho?
            This will vary depending on your setup but the base command I will be showing will download the DreamBot launcher (DBLauncher.jar), run the first time setup/update, kill this launcher instance, then startup your bot instance(s).  This script is using the built in windows commands this could also be done in PowerShell, and for other operating systems that I might make guides for in the future but my primary botting environment uses Windows so Windows it is.
      Going to breakdown the script section by section then show an example put together.
       
      Creating a place to store my DreamBot things
            For consistency sake I store any data output such as screenshots, accounts, reports, heatmaps, spreadsheets etc in a folder on my desktop called "DreamBot" across all my VMs.  This is where I also store bot client launchers because I currently use multiple clients.  Just keeps everything contained and clean.  
      mkdir %HOMEPATH%\Desktop\DreamBot && cd %HOMEPATH%\Desktop\DreamBot I create the DreamBot folder to store my shit in using the mkdir %HOMEPATH%\Desktop\DreamBot this command creates the folder on the VMs desktop.  Using && to execute the following cd command to change directories to the directory I just created.  Ez Pz.
       
      Downloading the DreamBot Launcher
            The DreamBot launcher can be downloaded from this link -> https://dreambot.org/DBLauncher.jar (This can be checked by clicking the download link in the forum header).  We will be using cURL a tool built into Windows to allowing us to grab the DBLauncher.jar from DreamBots website.
       
      curl -O https://dreambot.org/DBLauncher.jar Please note that -O is an UPPERCASE O.  Using the uppercase -O will automatically name the downloaded file its original name.  While using a lowercase -o you will need to provide your own output name.  I wasted a lot of time not noticing that while debugging my initial test runs of this. 
      This will download DBLauncher.jar to whatever the current directory is pointed at (ideally the DreamBot folder on the desktop I just made).
       
      First Time Launch/Update and kill
            So now that we have DBLauncher.jar on our system we need to execute it so we can pull the latest client.jar and other DreamBot resources.  Once this is done we can use QuickStart functionality to launch bot instances via CLI or a bot manager.  We need to use the "start" command so that the launching of the DBLauncher.jar does not suspend our script.  Without the start command the remaining commands will not be executed until DBLauncher.jar is manually closed.  Using start will allow execution of the script to continue while DBLauncher.jar does its thing. 
      start java -jar DBLauncher.jar We want to assure we give the DreamBot launcher enough time to complete its setup/updates so we will call the timeout command to wait a few seconds before we kill the launcher instance.  The length of the timeout will vary depending on your setup so adjust it how you see fit.   
      timeout 5 && taskkill /f /im java.exe Using the timeout command we can wait X amount of seconds I generally just do 5.  Hopefully within those 5 seconds the DreamBot launcher did whatever it needs to do because we then kill java.exe shutting anything Java related down.  (again with probably not the best way to do this but nothing should be running on my VMs at this point so just killing Java isn't going to hurt anything else).
       
      Initial setup is complete!
            At this point DreamBot is ready for botting!  Anything after this point is just using DreamBots QuickStart feature to create bot instances.  Not going to rewrite Nezz's entire QuickStart tutorial so just take a glance at his original thread its a great tool.
       
      Signing into the client with QuickStart
            Like I said not going to redo Nezz's entire QuickStart tutorial but thought I would throw in a simple example of signing into the client once the setup is complete so you can run the command and come back to a ready to go botting environment.
      java -jar %homepath%\DreamBot/BotData/client.jar -username yourOwnUsername -password yourOwnPassword If you look into QuickStart you can do a LOOOOOT of cool things with it.  Super useful tool to abuse when you are trying to save as much time as you can running a farm. 
       
      Full command!
            You can add a lot of extra functionality to a command or script like this such as pulling resources your farm might need if you throw them on a local web server and use cURL to transfer them to the VMs during the execution of the script.  Again with there are probably sections of this that are sub-optimal or botched to all hell but it was simple and quick for me to throw together and will save me time in the future.  
      mkdir %HOMEPATH%\Desktop\DreamBot && cd %HOMEPATH%\Desktop\DreamBot && curl -O https://dreambot.org/DBLauncher.jar && start java -jar DBLauncher.jar && timeout 5 && taskkill /f /im java.exe && java -jar %homepath%\DreamBot/BotData/client.jar -username yourOwnUsername -password yourOwnPassword  
      Any questions/issues/suggestions just shoot me a message.  I do plan on making a version of this for Linux as well because at some point I would like to go back to using Linux OS's for botting.  I just had Windows server keys so I have been using them.  
      If anyone does this differently I would love to hear how you guys do this.  I start and kill docker instances a lot due to my servers being used for more than just botting so depending on resource consumption I might have to nuke some docker instances for a bit then spin them back up later or spin up new ones. 
       
       
    4. Like
      yeeter reacted to Articron in 👋   
      fight me
    5. Like
      yeeter reacted to nocheatingcsg in Dreambot in Docker / Dreambot in Browser - Easiest Dreambot setup   
      Dreambot in Docker / Dreambot in Browse
       
       
      I have created a Docker image for everyone to use. Most people won't ever need this (or want). But for some it might be easier then going through the hassle of installing Java and trying fix various errors while getting the Dreambot client up and running.
      Everything you need is explained in the README
       
      You will:
      Never have to mess with Java again Have to update the client manually Figure out why the Dreambot client is not starting  
      Example image of Dreambot in your browser:

       
       
      Some technical details for those interested:
      Started from existing and proven to work image with vnc support Override entrypoint from that image  to start the vnc server etc.. to start the dreambot launcher Github repo for you to look at Github Actions to automatically deploy new images to public Docker Hub repository  
      If this is useful, enjoy! Comments, suggestions, criticism, post here. Pull requests appreciated.
    6. Upvote
      yeeter reacted to Hmm in DreamBot Utility Classes - MinigameTeleporter   
      Hi All,
      I am wanting to share my implementation of Utility classes for DreamBot which are not available through the DreamBot API. The first one I am going to share is the MinigameTeleporter class. 
      This class is useful for allowing the local player to use the minigame teleports in the grouping tab. Below is the source code and how to use in your project.
      ALL AVAILABLE CLASSES CAN BE FOUND AT: https://github.com/HMM7777/DreamBotUtility
      SOURCE CODE
      HOW TO USE IN YOUR PROJECT
      The MinigameTeleporter is easy to use. The MinigameTeleporter class contains the method teleportMinigame(String minigameName). The teleportMinigame method takes a String parameter. This String literal is the name of the minigame you wish to teleport to. Note: the String literal has to be spelt appropriately in accordance with the widget text value in the minigame tab.
      Below is an example of teleporting to Clan Wars using the minigame teleports via the grouping tab.
      MinigameTeleporter.teleportMinigame("Clan Wars");  
      ADDITIONAL NOTES
      The sleep times used can be changed to your convenience. The sleep times I used were made quickly for my test environment. The MinigameTeleporter does not check if your minigame teleport is available (cooldown 20 minutes). You can wrap the teleportMinigame with a boolean checker to see if the teleport is on cooldown or not. I did play with Varbit 8354 which is the counter for the minigame teleport. Most minigames are made available in the grouping tab and are selectable within the interface however some of these minigames do not have a teleport. Be weary of this. This class will most likely be used for F2P accounts or niche use cases.  
      Please let me know how it goes. Any constructive criticism will be appreciated.
      Regards,
      Hmm.
       
      MinigameTeleporter.java
    7. Like
      yeeter got a reaction from Nergion in Metal Thread   
      Metal isn't my first choice of music but you can never go long with some Pantera 
      https://www.youtube.com/watch?v=i97OkCXwotE&list=RDGMEM_v2KDBP3d4f8uT-ilrs8fQ&index=4
       
    8. Upvote
    9. Like
      yeeter got a reaction from gastro in Botting Is Dead, They Make More Off You Buying Their Scripts   
      1.) You went with someone with no rank on DreamBot scripting.  DreamBot host private script shops for Scripter+ and above approved Scripters.  These Scripters have past some standardized testing to assure they are quality.  Not a guarantee it will he perfect but it can help.
       
      2.) Botting isn't dead just because you had a poor experience.  YOUR botting might be dead but tons of people still have solid experiences skilling or farming gold.
       
      3.) Glhf with whatever you do next but it sounds like your mindset and problem solving abilities might not fit botting.  Maybe try another game?
    10. Like
      yeeter got a reaction from Riprekt in Botting Is Dead, They Make More Off You Buying Their Scripts   
      1.) You went with someone with no rank on DreamBot scripting.  DreamBot host private script shops for Scripter+ and above approved Scripters.  These Scripters have past some standardized testing to assure they are quality.  Not a guarantee it will he perfect but it can help.
       
      2.) Botting isn't dead just because you had a poor experience.  YOUR botting might be dead but tons of people still have solid experiences skilling or farming gold.
       
      3.) Glhf with whatever you do next but it sounds like your mindset and problem solving abilities might not fit botting.  Maybe try another game?
    11. Like
      yeeter got a reaction from Ben in Botting Is Dead, They Make More Off You Buying Their Scripts   
      1.) You went with someone with no rank on DreamBot scripting.  DreamBot host private script shops for Scripter+ and above approved Scripters.  These Scripters have past some standardized testing to assure they are quality.  Not a guarantee it will he perfect but it can help.
       
      2.) Botting isn't dead just because you had a poor experience.  YOUR botting might be dead but tons of people still have solid experiences skilling or farming gold.
       
      3.) Glhf with whatever you do next but it sounds like your mindset and problem solving abilities might not fit botting.  Maybe try another game?
    12. Like
      yeeter got a reaction from LostVirt in Botting Is Dead, They Make More Off You Buying Their Scripts   
      1.) You went with someone with no rank on DreamBot scripting.  DreamBot host private script shops for Scripter+ and above approved Scripters.  These Scripters have past some standardized testing to assure they are quality.  Not a guarantee it will he perfect but it can help.
       
      2.) Botting isn't dead just because you had a poor experience.  YOUR botting might be dead but tons of people still have solid experiences skilling or farming gold.
       
      3.) Glhf with whatever you do next but it sounds like your mindset and problem solving abilities might not fit botting.  Maybe try another game?
    13. Like
      yeeter got a reaction from Bonfire in Botting Is Dead, They Make More Off You Buying Their Scripts   
      1.) You went with someone with no rank on DreamBot scripting.  DreamBot host private script shops for Scripter+ and above approved Scripters.  These Scripters have past some standardized testing to assure they are quality.  Not a guarantee it will he perfect but it can help.
       
      2.) Botting isn't dead just because you had a poor experience.  YOUR botting might be dead but tons of people still have solid experiences skilling or farming gold.
       
      3.) Glhf with whatever you do next but it sounds like your mindset and problem solving abilities might not fit botting.  Maybe try another game?
    14. Like
    15. Like
      yeeter reacted to SubCZ in Sub Quester - Advanced [118 Quests] [Diaries] [Gear Customization] [Advanced Antiban] [Human Mouse] [Quick Start/CLI] [Quest Queueing] [DB3]   
      Diaries
      ● Ardougne Easy                                                   ● Ardougne Medium
      Long/Very Long
      ● A Tail of Two Cats                                                ● One Small Favour
      ● Desert Treasure                                                    ● Regicide
      ● Eadgar's Ruse                                                       ● Shilo Village
      ● Dragon Slayer I                                                     ● Tai Bwo Wannai Trio
      ● Fairytale I - Growing Pains                                  ● The Dig Site
      ● Ghost's Ahoy                                                        ● The Fremennik Trials
      ● Icthlarin's Little Helper                                        ● The Giant Dwarf
      ● Legend's Quest                                                    ● Underground Pass
      ● Lunar Diplomacy                                                 ● Watchtower
      Medium
      ● Alfred Grimhand's Barcrawl                               ● Priest in Peril
      ● Animal Mangetism                                              ● RFD - Freeing Pirate Pete
      ● Biohazard                                                              ● RFD - Freeing Scrach Uglogwee
      ● Bone Voyage                                                        ● RFD - Freeing Sir Amik Varze
      ● Client of Kourend                                                 ● Roving Elves
      ● Contact                                                                  ● Scorpion Catcher
      ● Demon Slayer                                                       ● Shadow of the Storm
      ● Death Plateau                                                       ● Sheep Herder
      ● Enakhra's Lament                                                ● Spirits of the Elid
      ● Enlightened Journey                                           ● Temple of Ikov
      ● Holy Grail                                                              ● The Golem
      ● King's Ransom                                                     ● The Grand Tree
      ● The Knight's Sword                                             ● The Hand in the Sand
      ● Making History                                                    ● The Tourist Trap
      ● Merlin's Crystal                                                   ● Tower of Life
      ● Mountain Daughter                                            ● Troll Romance
      ● Nature Spirit                                                        ● Troll Stronghold
       ● Observatory Quest                                            ● Waterfall Quest
      ● Olaf's Quest                                                         ● What Lies Below
                                                                                        ● Zogre Flesh Eaters
      Short
      ● A Porcine of Interest                                         ● Misthalin Mystery
      ● Big Chompy Bird Hunting                                 ● Monk's Friend
      ● Black Knight's Fortress                                    ● Murder Mystery
      ● Clock Tower                                                       ● Natural History Quiz
      ● Cook's Assistant                                               ● Pirate's Treasure
      ● Creature of Fenkenstrain                                 ● Plague City
      ● Doric's Quest                                                     ● Prince Ali Rescue
      ● Druidic Ritual                                                    ● RFD - Another Cook's Quest
      ● Dwarf Cannon                                                  ● RFD - Freeing the Goblin Generals
      ● Elemental Workshop I                                     ● RFD - Freeing the Lumbridge Guide
      ● Enter the Abyss                                                ● RFD - Freeing the Mountain Dwarf
      ● Ernest the Chicken                                          ● Restless  Ghost
      ● Fight Arena                                                       ● Romeo & Juliet
      ● Fishing Contest                                                ● Rune Mysteries
      ● Getting Ahead                                                  ● Sea Slug
      ● Gertrude's Cat                                                  ● Shades of Mort'ton
      ● Goblin Diplomacy                                            ● Sheep Shearer
      ● Hazeel Cult                                                       ● Tears of Guthix
      ● Horror from the Deep                                     ● The Corsair Curse
      ● Imp Catcher                                                     ● The Queen of Thieves
      ● In Search of the Myreque                              ● Tree Gnome Village
      ● Jungle Potion                                                  ● Vampyre Slayer
      ● Lost City                                                           ● Witch's House
                                                                                    ● Witch's Potion
       
       

      1. Log in (or let the script log you in).
      2. Use the graphical interface to select quests:

      GREEN  = Ready to be completed
      ORANGE = Missing recommendations (e.g. low combat level - use your own judgement)
      RED = Missing requirements
      Note: To start members quests, you need to be on a members world. 
      3. Hit "Run".
      Gear Customization
      The gear customization interface allows you to choose a custom gear set for any situation and any quest. By dragging & dropping a list of gear items, you can specify their priority. The script will use this list to choose its gear and automatically upgrade based on the order of the items you added.
      ALL equipment in the game is supported, including fashionscape and degradable items like Blowpipe and Barrows. Blend in with real players by creating unique sets of equipment that no other botters are using.
      If you choose a degradable item like the Blowpipe or Barrows equipment, the script will automatically notice when it degrades, and repair/recharge it!
       
      Default Configurations
      To always run the current configuration automatically without opening the GUI on startup, press the "Save as default" button, tick the "Always use default" checkbox, and hit "Run".
       
       

      Human Mouse
      All Sub™ scripts implement a unique, privately developed human mouse movement algorithm based on modified Bernstein polynomials. Mouse movement is calibrated using real human data to be fluid, natural, and efficient.
      Human Interactions
      Instead of using DreamBot's default methods of interaction, all Sub™ scripts implement a privately developed set of custom client interactions that distinguish it from all other public scripts. The goal is to make the signature of the script as unique as that of a private client.
      Behavioral Randomization
      With advanced reaction time distributions, data driven behavioral patterns, Gaussian walking, and banking/GE randomization, each script execution becomes unique.
       
       

      Quick Start / CLI Instructions
      1. Save a default configuration (see instructions above). On Windows it will be saved to C:\Users\<YourName>\DreamBot\SubQuester\default.txt
      2. You can save as many configurations as you like by renaming the default.txt file after saving.
      3. Supply the path of a configuration text file as the last command line parameter using -params "path/to/config.txt"
      For a full guide on setting up and using Quick Start / CLI, see here.
       


    16. Upvote
      yeeter reacted to BagelChef in Behavior Trees For Dummies - Basic Woodcutting Script   
      Behavior Trees For Dummies
      I'm not a pro at anything and take everything I say with a grain of salt. I have no idea what i'm doing and my opinions here are mostly preference. Make your own decisions, disagree with me, tell me why, and lets make better bots. Also, can't take credit for the idea of behavior trees in bots. I read @jgs95's post about them a week ago.
      Introduction
      The most popular type of scripts I have found during my time scripting is the `Node` based system. Node based systems split up their code into sections called Nodes (duh). Each Node is comprised of a condition that checks whether or not the node should run, and a action to perform if the condition passes. If you don't yet know about Node based systems I highly suggest checking out This post. You should know about other methodologies of bot scripting so you can weigh the pros and cons of both for yourself.
      Code That A Computer Can Read Is Useless.
      At a very high level Behavior Trees are used to handle triggering actions based on conditions. Sound a lot like the Node system mentioned earlier? Both methodologies are just ways to handle triggering actions based on conditions. That's what most if not all bots do. So why choose Behavior Trees? There are two things that need to be able to understand your code. The computer, and humans (yourself included). Writing code that the computer understands is easy. Take a look at the following JavaScript code.
      var _0x49e6=['1JEFwRC','5222dXsJWJ','92FVLqzU','1365284gtsOMo','1614886gtbOhP','3648908RUJhLp','Hello\x20World!','74944THxNfO','412769AyhqCE','log','1402906gnphcE'];(function(_0xf7574b,_0x59a0fa){var _0x3a1092=_0x3bf3;while(!![]){try{var _0x2ce5f6=parseInt(_0x3a1092(0x182))+parseInt(_0x3a1092(0x185))*parseInt(_0x3a1092(0x184))+parseInt(_0x3a1092(0x17f))+parseInt(_0x3a1092(0x186))+-parseInt(_0x3a1092(0x183))*parseInt(_0x3a1092(0x180))+parseInt(_0x3a1092(0x187))+-parseInt(_0x3a1092(0x17d));if(_0x2ce5f6===_0x59a0fa)break;else _0xf7574b['push'](_0xf7574b['shift']());}catch(_0x46c630){_0xf7574b['push'](_0xf7574b['shift']());}}}(_0x49e6,0xd60df));function hi(){var _0x221f00=_0x3bf3;console[_0x221f00(0x181)](_0x221f00(0x17e));}function _0x3bf3(_0x3c1132,_0x58570b){_0x3c1132=_0x3c1132-0x17d;var _0x49e678=_0x49e6[_0x3c1132];return _0x49e678;}hi(); This runs. The computer is absolutely fine with this. But what about the poor sap that has to maintain this code? Or what if you need to go back and change something. I guarantee if you even step away to shit after writing this you will comeback and have no fucking idea what this does and probably blame someone else for writing it insisting they are an idiot and should be killed immediately (personal experience). This is why coding for humans is more important that coding for the computers. Take a look at the following code that does the exact same thing as the above example.
      function helloWorld() { console.log("Hello World!"); } Tell me that doesn't make one thousand times more sense than the other example. Clean, readable code is the backbone of a good program. How fast, or efficient it is should be the second thing you think about. You can always go back and optimize. It's much harder to go back and make it understandable. If the topic of clean code has given you a boner/wet vagina I highly suggest reading Clean Code by Robert C. Martin. Now that we understand that we should prioritize writing code that humans can understand we can start looking at why we should choose Behavior Trees over everything else.
      Why Choose Behavior Trees Over Everything Else?
      Lets take a look at a node based wood chopper main script class. This is based off of This really great tutorial on the Node system by @GoldenGates. Great read, go read it if you aren't that solid with the node system yet.
      public class WoodChopper extends AbstractScript { private final Node[] array = new Node[] { new WalkToTrees(this), new ChopWood(this), new WalkToBank(this), new OpenBank(this), new DepositLogs(this) }; @Override public int onLoop() { for (final Node node : array) if (node.activate()) { node.execute(); } return Calculations.random(250, 500); } } The main con I have for the Node based system is how it reads, reuse, and how you handle more complex conditions. Correctly naming your Node instances is a great start. but we are left wondering what conditions do these nodes run on. If we wanted to get a bit more flexible we could abstract out our conditions and actions using two new classes. a `Action` class and a `Condition` class. Then our main script class would look like this.
      public class WoodChopper extends AbstractScript { private final Node[] array = new Node[] { new Node(new ShouldMoveToTrees(), new WalkToTrees()), new Node(new ShouldChopWood(), new ChopWood()), new Node(new ShouldWalkToBank(), new WalkToBank()), new Node(new ShouldOpenBank(), new OpenBank()), new Node(new ShouldDepositLogs(), new DepositLogs()) }; @Override public int onLoop() { for (final Node node : array) if (node.activate()) { node.execute(); } return Calculations.random(250, 500); } } This is pretty good. The logic flow is pretty obvious and its clear what conditions trigger what actions, in what order. For a basic script id be happy with this assuming your conditions and actions names aren't complete trash. Lets pretend that we want to chop trees behind Lumbridge castle and there is that obnoxious asshole mugger back there that attacks us all the time. We need to add some combat nodes to our Node array. Lets take a look at what that might look like now.
      public class WoodChopper extends AbstractScript { private final Node[] array = new Node[] { new Node(new IsUnderAttackWithEnoughHealth(), new FightBack()), new Node(new IsUnderAttackWithoutEnoughHealthAndHasFood(), new Eat()), new Node(new IsUnderAttackWithoutEnoughHealthAndDoesNotHaveFood(), new RunAway()), new Node(new ShouldMoveToTrees(), new WalkToTrees()), new Node(new ShouldChopWood(), new ChopWood()), new Node(new ShouldWalkToBank(), new WalkToBank()), new Node(new ShouldOpenBank(), new OpenBank()), new Node(new ShouldDepositLogs(), new DepositLogs()) }; @Override public int onLoop() { for (final Node node : array) if (node.activate()) { node.execute(); } return Calculations.random(250, 500); } } We can see now that our conditions start to contain a lot of the same wording and logic. All of our combat nodes check to see if the player is under attack. Then we make a decision about the current health of our player. Then we make a decision on if we have food or not. It's as if each of these decisions are sub decisions. Sounds a whole lot like a tree to me. Now you could only have a `IsUnderAttack` condition and then have your other conditions inside the `FightBack` action but then we are hiding logic that someone might miss while also making it harder to dynamically add more behaviors, and also adding conditions to an action which goes against the name of "action". Actions should only be exactly what they are, actions. So what are we going to do about this? JESUS CHRIST GET TO BEHAVIOR TREES ALREADY YOU FUCK. Fine here we go.

      First off, Watch the following Videos if you have never heard of behavior trees or have no idea how they work.
      Data structures: Introduction to Trees - mycodeschool
      Introduction To Behavior Trees - Holistic3d
      What is a Behavior Tree and How do they work? (BT intro part 1) - Peter Ogren
      How to create Behavior Trees using Backward Chaining (BT intro part 2) - Peter Ogren
      Here is how we would create the same script with a behavior tree. After looking at this i'll go over why I think it is more readable/cleaner/flexible. 
      public class WoodChopper extends AbstractScript { Node bankTree = new TreeBuilder() .sequence() .oncePerSequenceCompletion() .condition(new PlayerShouldBank()) .finish() .oncePerSequenceCompletion() .action(new MoveToBank()) .finish() .action(new DepositLogs()) .finish() .buildTree(); Node chopTree = new TreeBuilder() .sequence() .oncePerSequenceCompletion() .action(new MoveToTrees()) .finish() .action(new ChopTree()) .condition(new PlayerShouldBank()) .finish() .buildTree(); Node tree = new TreeBuilder() .selector() .appendTree(bankTree) .appendTree(chopTree) .buildTree(); @Override public int onLoop() { tree.tick(); return Calculations.random(250, 500); } } Separation of Concerns
      Behavior trees let us split up our logic into small, clean, chunks of code that only have to do with what they are doing. We have a tree dedicated to handling banking, a tree dedicated to handling chopping wood, and a tree dedicated to putting other trees together.
      Readability
      The biggest advantage I think behavior trees have over the node system is that the code reads basically in plain English. If we look at the "chopTree" above and read line by line we fully understand what it is doing without having to go anywhere, look into any of the classes etc. To really drive my point home on this ill show you some pseudocode for the "chopTree" and you can compare it to the actual code above.
      To chop a tree we must do the following in sequence if we have not already moved to the tree location move to the location of the trees chop down a tree if we have more inventory room repeat this sequence Adaptability
      Finally, our ability to add to our bots behavior is incredibly easy. Lets add our combat behavior to our behavior tree like we did to the node based system. We just create our combat tree, and add it to our root tree. We don't care about anything else in the code base. Since we want to prioritize combat we make sure to put this tree earlier in our root sequence.
      Node combatTree = new TreeBuilder() .selector() .sequence() .condition(new HasMoreThanHalfHealth()) .action(new Retaliate()) .selector() .sequence() .condition(new HasFood()) .action(new EatFood()) .action(new RunAway()) .buildTree() Node root = new TreeBuilder() .selector() .appendTree(combatTree) .appendTree(bankTree) .appendTree(chopTree) .buildTree(); Small Conditions and Actions 
      Another lovely side effect of using a behavior tree over a node system is our conditions will only be checking a maximum of one thing. Remember earlier when we had the god awful "IsUnderAttackWithoutEnoughHealthAndDoesNotHaveFood" condition? Lots of code duplication, and not very reusable as it has been so tightly written to go along with the certain action it was originally meant to. Now look at our new conditions. "HasMoreThanHalfHealth", "HasFood", these conditions could be reused in other places, and also are way less prone to bugs as they are simpler.
      Code Sharing
      Another pro of re-usability/adaptability is how easy it makes it to share between multiple projects. Lets say you write an incredible combat tree that handles eating, switching styles, praying, running away, etc. All you gotta do is pull that hoe into your new bot and append it to your root tree. (you can do this with nodes too just want to plant brain seeds).
      Conclusion
      Library/Framework
      If any of these reasons for using behavior trees made sense to you and you agree with them you might be asking if there is a pre-made framework for behavior trees you can use, and there is, I wrote one. But your not getting it. Implementing it yourself will really drive home all the ideas and pitfalls of this structure. The videos I posted above should be a good enough starting point for figuring out how to write your own implementation. Try to resist just googling for implementations because they are out there. It will make you a better developer if you pain through this and just do it. You'll learn a lot.
      When to still use Node Systems
      Like I said earlier I think there is no perfect tool for every job. You just need to know the tools at your disposal and implement what you think is most appropriate. If your bot just walks from Lumbridge to Edgeville don't implement a whole ass behavior tree. The overhead would just be ridiculous. If your building a PVP bot that also banks, switches PVP load outs etc, a behavior tree is probably a better fit. Basically, behavior trees are great for handling bots that handle a lot of behaviors. If your bot doesn't meet this criteria it's probably fine just remember my rant about readable, clean code.
      Alright,
      Bye

       
    17. Upvote
      yeeter reacted to Pandemic in DreamBot Now Supports Instance Limited Scripts!   
      Hello everyone,
      I'm excited to announce that we now fully support instance limited scripts on our client and store!
      In case you're not aware, "Instance Limited Scripts" are scripts that are sold on our store that can only be ran on a set limit of clients at a time. If you purchase an instanced script with 2 active instances, that means you can run the script on up to 2 clients at the same time. Instances are not attached to your in game characters, just actively running clients.
      We believe this is a fantastic addition that should allow for both maximizing the value for script writers and minimize the initial investment end users should need to spend to access a normally very expensive script. We think that instance limited scripts will allow for a whole new category of scripts now that scripters can release them without worrying about too many accounts running it at once which should allow for less bans.
      We hope scripters can feel comfortable releasing "high end" scripts that they previously wouldn't have even though about due to our unlimited pricing. The system has been designed to be tamper proof and offers an extended protection model over standard SDN scripts.
      You can find an example of an instanced script on our store here.
      User FAQ:
      Does this mean DreamBot will be flooded with overpriced scripts that do menial tasks?
      Absolutely not! We do not want to become like other clients that penny pinch you guys for every little thing you do and every script you want to run. We have a strict approval process for instance limited scripts that ensures that the community will benefit from the pricing arrangement, and it's generally reserved for big time money makers, boss scripts, certain questing scripts, and others on a case to case basis. We will continue to offer scripts using our existing pricing models that offer lifetime, unlimited access for standard scripts.
      What if I purchased the script before it became instance limited? Will I have to repurchase it?
      All existing customers will remain on whatever purchase terms they setup at the time of the original purchase. If you bought a lifetime purchase of a script then it goes instanced, you will continue to have the script unlimited, and should still receive regular updates by the script writer as it's from the same source. If you purchased a script at a certain monthly price, it will continue being active until you stop paying that renewal. The price will not change, and you will not be forced to purchase the new script plans. However, if the script is materially different (complete rework, tons of additions, or something like that), it might be treated as a completely new script so you would need to purchase it again if you want those changes. You would still have access to the current version that you have however.
      If I purchase a 5/10/25/50 Active Instance script, do I need VIP?
      Purchasing any script does not allow you to avoid our client's instance limits, so if you plan on running more than 2 instances at a time you will need to purchase one of our subscriptions. Purchasing a higher package of an instanced script will not remove that requirement.
      What if I need more than 50 active instances?
      Instance limited script purchases stack, so you can purchase a 50 instance, and a 25 instance of the same script and your limit would be raised to 75. This goes for all instanced scripts, and any number of purchases.
      Can I upgrade/downgrade my instanced purchases?
      Unfortunately at this time you cannot change your purchase after you place it, but you can always cancel renewals if it has a monthly payment. You can also always just purchase more if that's the concern, but we cannot offer any discounts for moving up from 10 to 25 for instance due to various factors.
      Scripter FAQ:
      If my script is instanced and I enable automated trials, are they limited at all?
      Yes, any instanced script has a forced limitation of one instance during any trials.
      Can I convert my existing script to an instanced script?
      To ensure that existing purchasers of your script continue having unlimited access, you'll need to send in a request for a new script and ask the staff to hide your existing script. We expect you'll use the same repo/module so you can continue offering support and updates to your existing customers.
       
      I hope that clears up any questions you might have, feel free to ask more below if you have any concerns.
      Thanks!
      The Dream Team
    18. Like
      yeeter reacted to Pandemic in DreamBot Logo / Forum Rank Images Contest! [$100+$100 PRIZE]   
      Hello everyone,
      We're excited to open up this little contest to see what our community's artists have to offer
      What we're looking for:
      [$100 CREDIT] Updated DreamBot Logo and VIP/Sponsor/Lifetime Sponsor/Donator product images
      We think our logo is fairly recognizable, so we're looking for a minor update/refreshing that still should resemble our current logo for the most part Product images for our subscriptions and donor products in the store For this contest we'll only need you to showcase what you are thinking and we ask you to make the logo itself, and the VIP product image If you win the contest with what you provide, before being paid you'll need to finish the job and make the rest of the product images (list will be provided) [$100 CREDIT] New Forum Rank Logos
      As most of you can tell, our forum rank logos are a bit outdated, plus some of the newer ones aren't an exact match, which makes the issue even worse! For this contest we'll only need you to showcase what you are thinking and we ask you to make two forum rank logos, VIP and Sponsor If you win the contest with the two that you provide, before being paid you'll need to finish the job and make all of the logos for our current ranks (list will be provided) How to Enter
      If you're interested in entering in either of the two options, please make a new thread in this subforum:
      https://dreambot.org/forums/index.php?/forum/109-gallery/
      With [CONTEST] in the title so we can know where to look
      We'll keep it going until we receive enough entries, then we'll choose the top 3 we like, and then will have a public vote to see which wins!
      You can enter only one or the other, and you can make as many (unique) entries as you'd like.
      Rules and Terms
      The winner(s) will provided DreamBot account credit which can be used, or sold to other users in whatever currency / payment method you'd like (we don't have PayPal so it'd be difficult to setup a direct payment, sorry!) You do not need to do both, if you'd like to only try one, that's fine You can and are encouraged to make multiple entries, there isn't a limit You must use images / icons that are either CC licensed or licensed to you for commercial use If you win, you'll need to send the art and any source files (PSD, AI, etc) to our email with an explicit section transferring any and all copyrights from yourself to us (message will be provided) for anything provided to us Thanks,
      The Dream Team
    19. Upvote
      yeeter reacted to Zawy in 👑Dreamy Magic 👑| Restocking | Task system | Teleporting | Alching | Stringing jewellery | Humidify | Planking | Splashing | Superheating | Stop settings | Degrime |   
      | Teleporting | Alching | Stringing jewellery | Humidify | Planking | Splashing | Superheating | Stop settings | Degrime |
      Instructions:
      All methods have restocking, if your script stops and it says 'Out of items' enable restocking and the script will purchase everything.
      You can task different methods, the script will automatically change the spellbook if needed.
       
      Features:
      Restocking Task system Automatically spellbook swapping Teleporting Alching 1 Tick enchanting Stringing jewellery Humidify Planking Splashing Superheating Degrime  
      Quickstart:
      CLI example:
      start java -jar C:\Users\YOUR_USER\DreamBot\BotData\client.jar -script "Dreamy Magic" -params "profile_name"
    20. Upvote
    21. Thonking
    22. Like
    23. Thonking
    24. Upvote
      yeeter reacted to Hashtag in [DB3] # AIO Crabs [ACTIVE SUPPORT] [SMART REAGGRO] [AMMONITE CRABS] [SAND CRABS] [ROCK CRABS] [SWAMP CRABS]   
      Click here for your 1 hour free trials!
      Following scripts are included
      # Rock Crabs # Sand Crabs # Ammonite Crabs # Swamp Crabs Smart Aggro The script's Smart Aggro option emulates the powerful RuneLite plugin for resetting your aggressivity the smart way. No more running a mile away from the crabs just to get them to attack you again. Instead, the script detects the nearest tile that resets the aggressivity of the crabs.
          Quickstart form: -params "path to config file.json" rock/sand/ammonite For example: -params "C:/Users/You/DreamBot/Scripts/# AIO Crabs/RockCrabsProfile.json" rock  
    25. Like
      yeeter reacted to UberJason in RS_AccountFire NEW v2.0-beta! Multi-function website account creator tool with opt for making email verified accounts (Both Proxy and VPN modes available) [FREE]   
      Nah, what'll happen at the moment if you don't verify your email within that 7 days is you'll simply need to either set a different email or following the link in the same email they gave you, you'll need to request a new one
    ×
    ×
    • Create New...

    Important Information

    We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.