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
    2. Upvote
      yeeter reacted to elusivestudio 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]   
      Flag was a misnomer, its actually variables that are prefixed with "cdc_" (specifically chrome driver, different drivers have different specific variables) and loaded into the document as javascript (which bot detection programs look for). Since the driver is open source this can be changed in the source and recompiled.. or alternatively can be changed with a hex editor 
    3. Upvote
      yeeter got a reaction from m4rr3co in How to upload to the SDN with command line Git   
      What is git?
      Git is a version control system for files.  It can be used for an array of things but is most commonly used with programming.  Some media companies use git as a way to revise, edit, and archive written articles before publishing them.  Git allows for easy version control, feature management, and collaboration with other developers. 
      Where to get git?
      You can download git from here -> https://git-scm.com/ download and install it for your desired operating system.  If you are running linux sometimes it is preinstalled so I would check that.
      Getting Started
      Once installed open up a command line (I am using Git Bash) and type the command below to check that git was installed correclty.
      git --version Requesting an SDN Git Repo
      This part only applies if you are looking to publish scripts on the SDN.  All of these commands will work with other services such as Github and GitLab.  I personally use Github for personal projects and my private scripts.
      So now that we have git up and running in our development environment we need a way to store our SDN scripts so that they can be published.  Head over to the Dreambot’s SDN page and you can find the request form under Scripter Panel -> Git Repo Request (or click this link) .https://sdn.dreambot.org/scripters/repo
      This page is where you request your git repository for the SDN.  This process can take a couple of days so request it sooner rather than later.  You can check the status of this by looking at Scripter Panel -> Requests and it should list the status of your repo there.  Once it is created you will be sent a URL, and a password for the repository.  Don’t lose them.
      Setting up the repository
      Navigate to where you want to place the repository Dreambot has provided you.  In my case I have a folder on my desktop called mySDNScripts.  Since this is an existing repository we will want to do what is called a “clone”.  Which simply copies an existing git repository to another location.  We will need that URL and password provided to us in the SDN request.  The command will look like this.
      git clone [email protected]:yourOwnUsername.git Smash that enter key and it may ask a question about authenticity just type “yes”.  You will then be prompted for the password you were assigned.  Copy paste that into the password field.
      *Side note - Iif you don’t have a ton of linux experience password fields in linux will not show an * or dot while filling them out.  It will be invisible.  Just hit enter after you type/copy it.*
      And BOOM!  We have cloned our repository from the Dreambot git server to our computer!
      Adding a script to your repository.
      Opening the repository (in my case Yeeter01) this is where you will create your scripts.  Each script will be its own subfolder in Yeeter01.  So in my case the only two scripts I have actively publish on the SDN at the moment are my AccountYEETER and YEETPicker AIO.  These subfolders are referred to as “Modules”.  
      *Side note - These modules do not have to match the name of the published script ex.) aiopicker is YEETPicker AIO.  It is probably best practice to make those match tho.*
      *Second side note - Make sure your module names have no spaces or special characters.*
      So I wrote an example script called “YEETGitTut” that I would like published to the SDN.  I create a folder (module) in my repository Yeeter01 called YEETGitTut.  Inside this folder is my src folder.  This is where my code will be stored.  
      This script is a simple script consisting of one file in YEETGitTut/src called MyLeetScript.java.  For larger scripts all your packages, resources would also be listed under your src/ folder.
      These changes however are not yet saved.  Going back up to the root of your git directory (Yeeter01) and checking the status will return a list of created, deleted, and modified files or folders.
      git status  So you can see everything under YEETGitTut/ needs “staged” or in other words selected to be added to the next commit.  This is done in order to allow users to select the files they want to commit.  If you are working on multiple scripts at once this prevents you from tying multiple scripts to a single commit.  Super handy incase one of them breaks in the future and you need to rollback the changes.  
      git add --all  
      We have added the files to the staging area for our next commit so we must now commit these files. To our local git repository with a message we can refer to in the future using the -m param.
      git commit -m "Inital commit for YEETGitTut" After committing you can recheck the status of the repository and you will notice that we are 1 commit ahead of the git repository Dreambot host on their servers also referred to as the “Origin”.  This means we need to provide them with the changes we made on our “master” by pushing the code back to them.
       git push origin master Checking git status afterwards we can see that both copies of our git repository are up to date!  The hard part is now over!
      Publishing your script!
      So we wrote the script, committed and pushed the script the Dreambot’s git repository what's left?!?!?!
      Well now you need to make a forum post for the script you are wanting to publish.  This is the place you should go into detail about what your script does, any features it has etc etc.  Publish this forum thread under the sub section of the forum called “SDN Scripts” and find the section that your script falls under.  Once completed hit publish.  It will be hidden until approved.
      Now go to Dreambot’s SDN page -> Scripter Panel -> New Script (or click the link) https://sdn.dreambot.org/scripters/scripts/new This is the form for publishing your script.
      Script Form
      Name and Category - This should just match what you put in your ScriptManifest.
      Gallery - Lets users see a preview of your script.  I just reuse the images I put in my forum thread for this.
      ThreadUrl - Copy paste the URL of the forum thread you just made and pate it here.  This allows users to view the additional information and features of your script you wrote in the thread.
      Type - Unless you are ranked Scripter+ or above you can ONLY PUBLISH FREE SCRIPTS.  Read more about the ranks and how to obtain them here -> https://dreambot.org/forums/index.php?/topic/4892-list-of-forum-ranks/
      Repository Name - This is the name you requested it to be called.  When you clone your repository it is that root folder we worked in.  In my case Yeeter01.
      Module Name - This is the script you want to publish.  In my examples case we created a script called “YEETGitTut” put that name exactly in that folder.
      Just like that we are DONE!  SMASH that submit button!
      At this point you can check the progress of your script being published in the Scripter Panel -> Request area.  This process can take a couple of days due to code review.  
      While this might sound complicated once its set up the work flow is basically boiled down to -> Edit Script -> "git add" all the files you want to commit -> "git commit -m" all the files you added -> "git push origin master" to send your code to the Dreambot git server(origin).  The biggest pro of git in my personal book is it allows me to transfer code from computer to computer with ease.  Traveling for work and using multiple computers this can be a pain but with git and services such as Github/GitLab as well as Dreambot's SDN I can work on projects/code form anywhere on any machine I can install git on.
      More resources~
      This was long winded and I really glanced over a lot of the capabilities of git.  If you would like more in depth knowledge I HIGHLY suggest watching this crash course.  It covers the fundamentals and breaks down things really well and gets into some cool git usages. 
      Git Crash Course - YouTube video (30ish mins reallllllly good)
      https://www.youtube.com/watch?v=SWYqp7iY_Tc
       
       SDN Upload Guidelines 
       
      Guide by apec using SmartGit GUI 
       
      Git is a highly used tool if you need assistance or have any errors be sure to just google it first.  Chances are 1000000000 other people have ran into the same error you are having.  If you need any direct assistance feel free to hit me up on Discord (username can be found on my profile) or on the forum.
       
      * I wrote this in one go if I screwed anything up lmk will edit to correct it. *
    4. Like
      yeeter got a reaction from Jus4RS in YEETPicker AIO   
      Script is updated for DreamBot 3.  Sorry for the delay.  Should be ready to use once Hashtag approves the update (generally under 24 hours).
    5. Like
      yeeter reacted to Jus4RS in YEETPicker AIO   
      Oh No worries, its understandable. i dont have dreambot 2, im on dreambot 3.2.9, but i dont mind waiting  would you kindly let me know when it has been fixed, thanks bro 
    6. Upvote
      yeeter reacted to Ben in Need DICE bot With Slots/dice/Jackpot/diceduel etc   
      Competition dice bot farms get Targeted by the owners of the big farms, so good luck with the harassment
    7. Upvote
      yeeter reacted to Pandemic in Official DreamBot Scripter Guidelines   
      Hello everyone,
      This has been a long time coming, but we're finally going to lay out our guidelines in a more clear way so that they can be unambiguous.
      In these initial stages, everything will not be listed, and things may change in the future. Let's get started.
      ---
      By submitting a script to our SDN or pushing commits to your DreamBot provided repos you agree to follow all of our guidelines.
      Failure to follow these guidelines can result in your scripts being removed, your account being banned, or other punishments.
      ---
      1. SDN Scripts
      1.1 Branding
      1.1.1 Information
      Scripts can only make claims that are provably true. This includes in the script's name, description, thread, and anywhere else that's linked to the script.
      Non-compliant examples:
      Script Name: Best Woodcutter! Script Description: Lowest/no bans ever! Script Thread: Always Updated! If script descriptions or threads claim some type of profit/hr, the amounts should be maintained. If we receive a report on inaccurate/outdated/unrealistic claims, the profit/hr portion will be removed by staff and you will be asked to update the rest of your scripts to comply with this guideline.
      1.1.2 Branding
      Scripts (and collections of scripts) can optionally be branded using any of the following:
      Your name, as long as it doesn't break any other guidelines Any brand name that's not actively in use (see thread) as long as it's not too similar to avoid customer confusion. This thread can be viewed after you have obtained your scripter role. 1.2 Quality
      Scripts must be of a certain quality and value to the community. While we can't really quantify this, our staff will make the final determination and you'll be able to get a reason why it wasn't accepted.
      1.2.1 Functionality Expectations
      Scripts are expected to have a certain degree of base functionality. The expected requirements for free vs paid scripts are more relaxed. Where available, it's highly encouraged for free scripts to meet as many of the requirements as possible, but that is not always a reasonable ask for a free script.
      The base functionality includes but may not be limited to:
      Dynamic Start Position - Scripts should be able to be started from nearly anywhere in the OSRS world. if they start at a place our web cannot handle, it is not expected to get to where it needs to be. Logs should be used to show this error. In most cases, using home tele is enough to get them to a location that does work. Automatic Restocking - All scripts should have automatic restocking via the Grand Exchange implemented. This would include selling products and purchasing required ingredients/equipment. Premium only unless it's a general necessary part of the script. Automatic Skill Progression (within reason, premium only) - Scripts are expected to be able to automatically progress. EG: Woodcutters should automatically progress from normal trees->oaks->willow, crafters should auto progress from arrow shafts->gloves->etc. Some scripts may not have this functionality readily available, fighting is a case where an auto progression doesn't have one singular path. In cases like these, the scripter should put effort to allow the user to specify a progression. Automatic Item Progression (within reason, premium only) - Similarly to automatic skill progression, but equipment based. Upgrading axes, weapons, armor, etc. General Functionality - If there is an extra functionality that is commonly used by players/other scripts, it should be implemented (within reason) an example being coal bag in Blast Furnace. Without the coal bag, BF's functionality drops significantly on higher ores. Requirements are more relaxed on free scripts. All existing scripts are currently in a stance of "We highly encourage you to update your scripts to follow these new guidelines." this stance may change in the future. If scripts are reported to be poor quality, we may review them and if the changes look trivial to update, we will give you a requirement that they are updated or will be removed. This would be things like "You have to start the script at Varrock bank with X equipped or it will stop" walking to the bank is trivial, getting equipment from a bank is trivial, purchasing required equipment from the GE is trivial.
      1.3 Security
      1.3.1 In Game Account Information
      Scripts must not send any identifiable information about any in game account to any third party service, including services operated by you. You can send certain non-private information when hashed using an approved hashing algorithm. Currently we allow any hashes generated from the SHA-2 family.
      1.3.2 Analytics and Other Data
      Scripts are allowed to send script analytics as long as it's useful to the user running the script and is to be used to improve the script. All information sent must follow 1.3.1, and you shouldn't be able to identify the character running the script.
      Data collection of any other kind must be opt-in (the user has to enable the feature, with the default being off).
      1.4 Communications
      1.4.1 Script Review Requests
      Your scripts can ask for store reviews and/or ratings as long as there is no attempt to divert negative reviews to another channel of communication. It's also against our guidelines to incentivize or reward users for giving reviews. A few examples of an incentive or reward include: real money, in game currency, store credit, or access to other paid scripts. This guideline is to ensure the integrity of given reviews, to make sure they're as unbiased as possible so prospective customers can accurately make a purchasing decision.
      1.4.2 Tips / Donations
      Your scripts can have donation or tip links and/or buttons, however it cannot be required in order to use the script and cannot offer anything in return for the donation.
      1.5 Rights
      By committing, pushing, or submitting an SDN script to us you agree that you have all rights to use anything included in those pushes including but not limited to code, copy, and images uploaded. Furthermore, with anything that you push to your repositories or submit to us via our SDN you grant us (DreamBot) a perpetual, irrevocable, non-exclusive license to use anything submitted for any reason necessary to provide our services. We will not sell or transfer your information to any third party, and it will strictly be used to provide our services (including but not limited to displaying it in our store, on the SDN pages, compiling and distributing the script to users of the client).
      2. Private Scripts
      2.1 Definition
      Private scripts are local JAR or compiled class files that can be loaded when placed in our Scripts folder.
      2.2 Sales
      You are free to sell private scripts to other users, however you cannot advertise it on any of our platforms unless you have the Scripter+ rank active.
      Scripts available on the SDN (even with minor changes) cannot be sold privately or authorized by the script writer in exchange for anything of value. All SDN script sales must go through the store, if they can't make the purchase themselves using their payment method they can purchase a voucher.
      Private scripts (even with minor changes) cannot be resold to multiple people. If you plan on selling multiple copies of the same script, it should always be done through our SDN.
      While you are free to sell scripts on other platforms, you cannot steer our users to another platform or alternative store that also sells scripts.
      ---
      If your scripts are found not to be compliant, you'll be contacted to make them compliant. If you can't do that in a reasonable amount of time, we'll hide the script from the SDN and the store if applicable.
      Once these are more fleshed out, we will convert it to a doc page for our Guides section.
      Let me know if you'd like us to clear up any of the guidelines listed, or if you'd like to see new guidelines added.
      Thanks!
      The Dream Team
    8. Upvote
      yeeter reacted to holic in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Fightaholic - The scrappy AIO fightin' script


       
       

      Bug Reports - READ THIS FIRST
      To submit a bug report, please do the following. Failing to do so may result in being ignored all together. These are simple requests
      Ensure you're on the latest version first Explain your problem as clearly and concise as possible Share the error Share what settings you are using by setting up the script, saving your config to a file and pasting it here or PM me.  
       
       
      Description
      Fights shit, like anything, eats, banks, loots, buries bones, switches combat styles, etc. Very easy to setup but a complex script nonetheless.
      Setup
      Selecting your NPC(s) is required. All other options are optional. Click Refresh to auto-fill the form and get available NPCs Click Start Troubleshooting
      StackoverflowError: Give more memory to DreamBot on launch (slider above "Launch" button) Images failed to download: Manually download them below this post and extract the files to "~/DreamBot/Scripts/Fightaholic" Chinese users will almost certainly need to download these Main features
      Extremely simple setup: simple GUI that auto-fills the fields for you as much as possible. Combat switching: supports all combat types (ie Melee, Range and Magic) Click on-screen "Switch" to switch styles whenever Right-click on-screen "Switch" to manually choose which style to use Buys missing items from GE: if any equipment, food, runes, arrows, potions or required items are missing, it will walk to the GE and attempt to buy them Script will end if you lack the resources to afford your items Script will buy equipment upgrades when specified. Sells loot at GE: select looted items to sell in the "Loot" tab. Will attempt to sell items first for cash before buying missing items Script will only show loot options in the list, to add custom items edit the .ini file manually. Level targets: stops training combat style when your desired level is reached Drinks potions: don't include the number of doses ("Strength potion", not "Strength potion(4)"), won't use Prayer potions until your prayer is almost drained Add antivenom potion to your inventory or required items and it will automatically cure you when necessary. Optional: Check drop vials to get rid of them Uses prayer: Select one or many prayers to use. Quick prayers and quick prayer setup supported Dungeons supported: Edgeville (with or without Brass key, add key to required items), Dwarven Mines, Asgarnian Ice Dungeon, Karamja Dungeon, Varrock Sewers Equipment switching: supports switching equipment when changing combat style Withdraws equipment if missing Upgrades equipment when specified (either have it in your bank or select "Buy upgradeable equipment"), use "^" as the upgrade wildcard. "^ scimitar" or "^ shortbow". DOESN'T WORK FOR ALL ITEMS. High Alch support: choose what to loot and in the opposite column choose which items to alch and the script will take care of the rest Multiple loot options: change the frequency of looting, style of looting and what to loot Supports options like loot by price and blacklist Ironman loot option: loot only what your NPC drops Features item blacklist to prevent looting the wrong items when looting by a price threshold Death walking / Grave looting: handles deaths by returning, collecting your grave, re-equipping equipment and continuing Still zero deaths to date with this script but will handle it once it happens Option to logout on death so you can handle it yourself Collects and equips arrows: makes sure you don't run out of arrows, checks your bank for more if needed. Safe spotting: set your "Target area" to below 3 and the script will automatically safe-spot Aggro support: check the "Aggro mode" checkbox when dealing with monster like Rock Crabs, who will become tame and impossible to fight after a certain amount of time. This will do its best to leave the area, rest and return to continue the fight. GIVE IT TIME TO DO ITS THING. This will not prefer AFK training over active training but will still allow for AFK training. Buries bones: all bones supported, you can also specify to bury only certain bones. Eats food: what kind of fighter would this be if it didn't eat when necessary, right? Bones to Peaches: experimental but should work. If it isn't, please screen record it or at least share the error from your console with me. Bones to Bananas: experimental but should work. If it isn't, please screen record it or at least share the error from your console with me. Customize bank locations: set the bank you'd like to use, or just set it to the closest and let the script handle it for you. Custom random-event handler: Talks to Genie, Old-Man, Drunken Dwarf , Frog, Freaky Forester and Rick Turpentine to collect their goodies and a delay for all other randoms to be more human-like Lamps will be used to increase your current combat skill Random handler will only fire if you have selected "Dismiss Randoms" in DreamBot's settings Anti-Ban: Bunch of features to keep your accounts safe Comprehensive obstacle handler:  meaning you can start this script just about anywhere and the script will navigate Gielinor to your specified area Quickstart support: Parameters: "path\to\config.ini" Example: Windows: java -jar C:\Users\USERNAME\DreamBot\BotData\client.jar -script Fightaholic -params "C:\Users\USERNAME\Desktop\CONFIG.ini" Linux:
      java -jar ~/BotData/client.jar -script Fightaholic -params "C:/Users/USERNAME/CONFIG.ini"  
      More to be included in this list that are already in the script.


      *Temporarily disabled Script information
      Click "Refresh" once logged in to see NPCs and auto-fill the script. Select the NPCs you want, and their potential drops will be listed below This is the only required setting. Select the loot you want. Click "Add" to add combat level targets, these skills will be trained until the specified target is reached. If you want to set a Magic level target, you can only do that with the first level target currently (because I'm lazy). If you want to use different equipment, fill out and select "Use" per equipment setup Arrows, bows, staves, melee weapons, shield and food should automatically be detected and filled out in their respective textfields Check "Use bank" to bank when inventory is full or out of food/arrows/runes Your target area will be set to the tile you are standing on when you click the "Start" button if no tile is set.
      OR you can set the tile in the "Optional" tab and have the script walk there next time on start (provided you save the info) Set your target area to below 3 and the script will automatically safe-spot All other setup options have explanatory tool-tips (if you hover over them) and aren't required.
        Item Support
      These are items that will be automatically recognized in your settings

      GUI
      As of version 0.941

      Progress Reports
      27 hours                                        3 days                                                  all using overnight+1hr breaks
        

        
       
        Changelog (For updates beyond version 1.0, please search this topic for "SDN Bot")
       




      Fightaholic images.zip
       
       

    9. Upvote
      yeeter got a reaction from Pixel_Life in How to upload to the SDN with command line Git   
      What is git?
      Git is a version control system for files.  It can be used for an array of things but is most commonly used with programming.  Some media companies use git as a way to revise, edit, and archive written articles before publishing them.  Git allows for easy version control, feature management, and collaboration with other developers. 
      Where to get git?
      You can download git from here -> https://git-scm.com/ download and install it for your desired operating system.  If you are running linux sometimes it is preinstalled so I would check that.
      Getting Started
      Once installed open up a command line (I am using Git Bash) and type the command below to check that git was installed correclty.
      git --version Requesting an SDN Git Repo
      This part only applies if you are looking to publish scripts on the SDN.  All of these commands will work with other services such as Github and GitLab.  I personally use Github for personal projects and my private scripts.
      So now that we have git up and running in our development environment we need a way to store our SDN scripts so that they can be published.  Head over to the Dreambot’s SDN page and you can find the request form under Scripter Panel -> Git Repo Request (or click this link) .https://sdn.dreambot.org/scripters/repo
      This page is where you request your git repository for the SDN.  This process can take a couple of days so request it sooner rather than later.  You can check the status of this by looking at Scripter Panel -> Requests and it should list the status of your repo there.  Once it is created you will be sent a URL, and a password for the repository.  Don’t lose them.
      Setting up the repository
      Navigate to where you want to place the repository Dreambot has provided you.  In my case I have a folder on my desktop called mySDNScripts.  Since this is an existing repository we will want to do what is called a “clone”.  Which simply copies an existing git repository to another location.  We will need that URL and password provided to us in the SDN request.  The command will look like this.
      git clone [email protected]:yourOwnUsername.git Smash that enter key and it may ask a question about authenticity just type “yes”.  You will then be prompted for the password you were assigned.  Copy paste that into the password field.
      *Side note - Iif you don’t have a ton of linux experience password fields in linux will not show an * or dot while filling them out.  It will be invisible.  Just hit enter after you type/copy it.*
      And BOOM!  We have cloned our repository from the Dreambot git server to our computer!
      Adding a script to your repository.
      Opening the repository (in my case Yeeter01) this is where you will create your scripts.  Each script will be its own subfolder in Yeeter01.  So in my case the only two scripts I have actively publish on the SDN at the moment are my AccountYEETER and YEETPicker AIO.  These subfolders are referred to as “Modules”.  
      *Side note - These modules do not have to match the name of the published script ex.) aiopicker is YEETPicker AIO.  It is probably best practice to make those match tho.*
      *Second side note - Make sure your module names have no spaces or special characters.*
      So I wrote an example script called “YEETGitTut” that I would like published to the SDN.  I create a folder (module) in my repository Yeeter01 called YEETGitTut.  Inside this folder is my src folder.  This is where my code will be stored.  
      This script is a simple script consisting of one file in YEETGitTut/src called MyLeetScript.java.  For larger scripts all your packages, resources would also be listed under your src/ folder.
      These changes however are not yet saved.  Going back up to the root of your git directory (Yeeter01) and checking the status will return a list of created, deleted, and modified files or folders.
      git status  So you can see everything under YEETGitTut/ needs “staged” or in other words selected to be added to the next commit.  This is done in order to allow users to select the files they want to commit.  If you are working on multiple scripts at once this prevents you from tying multiple scripts to a single commit.  Super handy incase one of them breaks in the future and you need to rollback the changes.  
      git add --all  
      We have added the files to the staging area for our next commit so we must now commit these files. To our local git repository with a message we can refer to in the future using the -m param.
      git commit -m "Inital commit for YEETGitTut" After committing you can recheck the status of the repository and you will notice that we are 1 commit ahead of the git repository Dreambot host on their servers also referred to as the “Origin”.  This means we need to provide them with the changes we made on our “master” by pushing the code back to them.
       git push origin master Checking git status afterwards we can see that both copies of our git repository are up to date!  The hard part is now over!
      Publishing your script!
      So we wrote the script, committed and pushed the script the Dreambot’s git repository what's left?!?!?!
      Well now you need to make a forum post for the script you are wanting to publish.  This is the place you should go into detail about what your script does, any features it has etc etc.  Publish this forum thread under the sub section of the forum called “SDN Scripts” and find the section that your script falls under.  Once completed hit publish.  It will be hidden until approved.
      Now go to Dreambot’s SDN page -> Scripter Panel -> New Script (or click the link) https://sdn.dreambot.org/scripters/scripts/new This is the form for publishing your script.
      Script Form
      Name and Category - This should just match what you put in your ScriptManifest.
      Gallery - Lets users see a preview of your script.  I just reuse the images I put in my forum thread for this.
      ThreadUrl - Copy paste the URL of the forum thread you just made and pate it here.  This allows users to view the additional information and features of your script you wrote in the thread.
      Type - Unless you are ranked Scripter+ or above you can ONLY PUBLISH FREE SCRIPTS.  Read more about the ranks and how to obtain them here -> https://dreambot.org/forums/index.php?/topic/4892-list-of-forum-ranks/
      Repository Name - This is the name you requested it to be called.  When you clone your repository it is that root folder we worked in.  In my case Yeeter01.
      Module Name - This is the script you want to publish.  In my examples case we created a script called “YEETGitTut” put that name exactly in that folder.
      Just like that we are DONE!  SMASH that submit button!
      At this point you can check the progress of your script being published in the Scripter Panel -> Request area.  This process can take a couple of days due to code review.  
      While this might sound complicated once its set up the work flow is basically boiled down to -> Edit Script -> "git add" all the files you want to commit -> "git commit -m" all the files you added -> "git push origin master" to send your code to the Dreambot git server(origin).  The biggest pro of git in my personal book is it allows me to transfer code from computer to computer with ease.  Traveling for work and using multiple computers this can be a pain but with git and services such as Github/GitLab as well as Dreambot's SDN I can work on projects/code form anywhere on any machine I can install git on.
      More resources~
      This was long winded and I really glanced over a lot of the capabilities of git.  If you would like more in depth knowledge I HIGHLY suggest watching this crash course.  It covers the fundamentals and breaks down things really well and gets into some cool git usages. 
      Git Crash Course - YouTube video (30ish mins reallllllly good)
      https://www.youtube.com/watch?v=SWYqp7iY_Tc
       
       SDN Upload Guidelines 
       
      Guide by apec using SmartGit GUI 
       
      Git is a highly used tool if you need assistance or have any errors be sure to just google it first.  Chances are 1000000000 other people have ran into the same error you are having.  If you need any direct assistance feel free to hit me up on Discord (username can be found on my profile) or on the forum.
       
      * I wrote this in one go if I screwed anything up lmk will edit to correct it. *
    10. Like
      yeeter got a reaction from Hmm in Anyone ever actually bought a main account that wasn't recovered?   
      A lot of times people who are done playing for awhile will sell their accounts to someone buying any and every account.  Then when the come back they recover it.  Or the seller is a POS and recovering to resell under a different name. 

      Not a ton you can really do about this sadly =/

      My suggestion would be to create and train your own accounts with bots or vennys.  Find someone selling training services and just make sure you mule anything of value off the account to prevent a sticky finger'ed venny from lifting it.  Generally speaking it will be more expensive but if you don't provide them the recovery information you can recover your own account.
      Sadly because Jagex can't do anything correctly account recovery is a fucking joke, it is extremely easy to mass recover accounts and resell for a profit then rinse and repeat once enough time has passed to fend off the negative feedback you leave on the seller.
       
      tldr: not much you can do, create and train/pay to train your accounts to avoid account recovery.  Anyone who says they are legit and has good reviews you still run the risk of recovery from the original owner.
    11. 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. 
       
       
    12. Like
      yeeter got a reaction from Hmm 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. 
       
       
    13. Upvote
      yeeter got a reaction from Pseudo in DreamBot Guides: Help Needed!   
      This is right up my ally 
    14. Like
      yeeter got a reaction from Pandemic in DreamBot Guides: Help Needed!   
      This is right up my ally 
    15. Like
      yeeter reacted to Pandemic in DreamBot Guides: Help Needed!   
      Hello everyone,
      As we push towards making DreamBot easier to use, we've started a new guides section for user and scripter guides. We think it's a good idea to have up to date guides all centralized in one place, instead of making people search the forums and hope the content is still relevant.
      You can find the start of the docs here: https://dreambot.org/guides.
      What I'd like to know from you guys is what kind of guides or information you'd like to see added here. We don't want to overflow it with too much stuff, but still would like to have all of the essentials covered. Stuff where people can learn best botting practices, troubleshoot script issues without needing to make (yet another) post on the forums, etc.
      Interested in Contributing?
      We have a private Github repo for the docs, if you'd be interested in contributing please PM me directly with your Github name or email and I can invite you ASAP
      There is a ton of great content on our forums already, if you think it'd be fitting please let us know by posting below. These docs are built using Markdown, so if that's something you're familiar with, and would like to help us expand these docs, feel free to let us know which posts you'd like to help convert. If we agree that it'd be a nice addition, you could then convert it and send it to me directly. Once we've done whatever editing is necessary I'll have it added to the docs with you credited as the author / convertor. We may add a forum rank for regular contributors, or offer store credit per page, I'm not really sure yet.
      ---
      Thanks!
      The Dream Team
    16. Like
      yeeter got a reaction from Pandemic in DrawMouseUtil - Draw mouse trails and custom cursors   
      fuckin mint
    17. Like
      yeeter got a reaction from Stoned in DrawMouseUtil - Draw mouse trails and custom cursors   
      fuckin mint
    18. Upvote
      yeeter reacted to holic in DrawMouseUtil - Draw mouse trails and custom cursors   
      I made a nifty little mouse utility for drawing custom cursors and trails that I thought I would pass onto the community. Some of the trails are meh but I think the final product is still great and it's very straightforward to use.
      Credits:
      DarkMagican for the original mouse trails & rainbow source ENFILADE for MousePathPoint Setup functions
      void setCursorColor(Color cursorColor) Manually set the cursor's colour, default white void setCursorStroke(BasicStroke cursorStroke) Manually set the cursor's stroke thickness, default 2 void setTrailColor(Color trailColor) Manually set the trail's colour, default white void setRainbow(boolean RAINBOW) Set the mouse cursor & trail colour to be rainbow void setRandomColor() Set the mouse cursor & trail colour to be random, possibly rainbow Mouse functions
      void drawRandomMouse(Graphics g) Draws the randomly selected mouse graphic. void drawPlusMouse(Graphics g) Draws a "+" for the mouse, with shadow. void drawCrossMouse(Graphics g) Draws a "x" for the mouse, with shadow. void drawCircleMouse(Graphics g) Draws a circle for the mouse, with shadow. void drawDotMouse(Graphics g) Draws a dot for the mouse, with shadow. void drawRotatingCrossMouse(Graphics g) Draws an "x" for the mouse that rotates, with shadow. void drawRotatingCircleMouse(Graphics g) Draws a circle with rotating pie slices, with shadow. Trail functions
      void drawTrail(Graphics g) Draws a typical line-based mouse trail, varying size line width void drawZoomTrail(Graphics g) Draws a "ZOOM" for a trail, varying case and size void drawTextTrail(Graphics g, String trail) Draws your specified text for a trail, could work for script status? void drawDotTrail(Graphics g) Draws a series of dots as a trail, varying sizes void drawCircleTrail(Graphics g) Draws a series of circles as a trail, varying sizes void drawPlusTrail(Graphics g) Draws a series of "+" as a trail, varying sizes void drawRotatingSlashTrail(Graphics g) Draws a series of "/" as a trail that rotate, varying sizes void drawRotatingCrossTrail(Graphics g) Draws a series of "x" as a trail that rotate, varying sizes Usage example
      First, add DrawMouseUtil to your project by copying and pasting it into a file name DrawMouseUtil.java and importing it into your project
      Second, create a variable for DrawMouseUtil so you have consistency in your setup and calls.
      private DrawMouseUtil drawMouseUtil = new DrawMouseUtil();  
      Third, set your desired settings and add it to onStart. For this example we will be setting up the mouse randomly:
      @Override public void onStart() { drawMouseUtil.setRandomColor(); //Set a random colour and leave the stroke setting at default ..... }  
      Fourth, call your desired mouse cursor and trail in onPaint. For this example we will be using random settings:
      @Override public void onPaint(Graphics g) { drawMouseUtil.drawRandomMouse(g); drawMouseUtil.drawRandomMouseTrail(g); }  
      My favourite combination currently is either
      drawMouseUtil.drawRotatingCrossMouse(g) drawMouseUtil.drawRotatingCrossTrail(g) or
      drawMouseUtil.drawRotatingCircleMouse(g); drawMouseUtil.drawDotTrail(g);  
       
      DrawMouseUtil.java:
      /** DrawMouseUtil by holic **/ import org.dreambot.api.Client; import org.dreambot.api.methods.Calculations; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Arc2D; import java.awt.geom.Line2D; import java.util.LinkedList; import static org.dreambot.api.methods.MethodProvider.log; public class DrawMouseUtil { LinkedList<MousePathPoint> mousePath = new LinkedList<MousePathPoint>(); private boolean RAINBOW = false; private int STROKE = 2; private int mX, mY; private long angle; private BasicStroke cursorStroke = new BasicStroke(STROKE); private int randomMouse = Calculations.random(5); private int randomMouseTrail = Calculations.random(7); private Color cursorColor = Color.WHITE; private Color trailColor = cursorColor; private Color[] cursorColors = {new Color(78, 216, 255), new Color(90, 222, 98), new Color(215, 182, 77), new Color(232, 134, 124), new Color(215, 120, 124), new Color(183, 138, 215), Color.WHITE}; private AffineTransform oldTransform; private int r = 0, g = 0, b = 0, duration = 650; public DrawMouseUtil() { Client.getInstance().setDrawMouse(false); } public void setRainbow(boolean RAINBOW) { if (RAINBOW) { g = 255; } else { g = 0; } this.RAINBOW = RAINBOW; } public void setRandomColor() { if (Calculations.random(2) != 1) { log("Rainbow mouse!"); setRainbow(true); } else { setRainbow(false); cursorColor = getRandomColour(); trailColor = cursorColor; } } private Color getRandomColour() { return cursorColors[Calculations.random(cursorColors.length - 1)]; } public void setCursorStroke(BasicStroke cursorStroke) { this.cursorStroke = cursorStroke; } public void setCursorColor(Color cursorColor) { this.cursorColor = cursorColor; } public void setTrailColor(Color trailColor) { this.trailColor = trailColor; } public void drawRandomMouse(Graphics g) { switch (randomMouse) { case 0: drawPlusMouse(g); break; case 1: drawCrossMouse(g); break; case 2: drawCircleMouse(g); break; case 3: drawDotMouse(g); break; case 4: drawRotatingCrossMouse(g); break; case 5: drawRotatingCircleMouse(g); break; } } public void drawRandomMouseTrail(Graphics g) { switch (randomMouseTrail) { case 0: drawTrail(g); break; case 1: drawZoomTrail(g); break; case 2: drawPlusTrail(g); break; case 3: drawCircleTrail(g); break; case 4: drawDotTrail(g); break; case 5: drawRotatingSlashTrail(g); break; case 6: drawRotatingCrossTrail(g); break; case 7: drawTextTrail(g, "your text here"); break; } } /** * * ** ** ** ** * Mouse cursor * * ** ** ** ** **/ public void drawPlusMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; int s = 4; Point cP = Client.getMousePosition(); int cX = (int) cP.getX(); int cY = (int) cP.getY(); g2.setColor(Color.BLACK); g2.setStroke(cursorStroke); /* + Cursor */ g2.drawLine(cX - s + 1, cY + 1, cX + s + 1, cY + 1); g2.drawLine(cX + 1, cY - s + 1, cX + 1, cY + s + 1); g2.setColor(cursorColor); g2.drawLine(cX - s, cY, cX + s, cY); g2.drawLine(cX, cY - s, cX, cY + s); g2.setStroke(new BasicStroke(1)); } public void drawCrossMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; int s = 3; Point cP = Client.getMousePosition(); int cX = (int) cP.getX(); int cY = (int) cP.getY(); g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); /* X Cursor */ g2.drawLine(cX - s + 1, cY - s + 1, cX + s + 1, cY + s + 1); g2.drawLine(cX - s + 1, cY + s + 1, cX + s + 1, cY - s + 1); g2.setColor(cursorColor); g2.drawLine(cX - s, cY - s, cX + s, cY + s); g2.drawLine(cX - s, cY + s, cX + s, cY - s); g2.setStroke(new BasicStroke(1)); } public void drawCircleMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); g2.drawOval(mX - 1, mY - 1, 4, 4); g2.setColor(cursorColor); g2.drawOval(mX - 2, mY - 2, 4, 4); g2.setStroke(new BasicStroke(1)); } } public void drawDotMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); g2.drawOval(mX - 1, mY - 1, 4, 4); g2.setColor(cursorColor); g2.drawOval(mX - 2, mY - 2, 4, 4); g2.setStroke(new BasicStroke(1)); } } public void drawRotatingCircleMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.drawOval(mX - 2, mY - 2, 4, 4); g2.setColor(cursorColor); g2.rotate(Math.toRadians(angle += 6), mX, mY); g2.draw(new Arc2D.Double(mX - 6, mY - 6, 12, 12, 330, 60, Arc2D.OPEN)); g2.draw(new Arc2D.Double(mX - 6, mY - 6, 12, 12, 151, 60, Arc2D.OPEN)); g2.setTransform(oldTransform); g2.setStroke(new BasicStroke(1)); } } public void drawRotatingCrossMouse(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); Point cP = Client.getMousePosition(); int cX = (int) cP.getX(); int cY = (int) cP.getY(); int s = 4; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); if (mX != -1) { g2.setStroke(cursorStroke); g2.setColor(Color.BLACK); //g.rotate(Math.toRadians(angle+=1), mX, mY); Line2D lineShadow = new Line2D.Double(cX - s + 1, cY + 1, cX + s + 1, cY + 1); Line2D lineShadow2 = new Line2D.Double(cX + 1, cY - s + 1, cX + 1, cY + s + 1); AffineTransform atS = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), cX + 1, cY + 1); AffineTransform atS2 = AffineTransform.getRotateInstance( Math.toRadians(angle), cX + 1, cY + 1); g2.draw(atS.createTransformedShape(lineShadow)); g2.draw(atS2.createTransformedShape(lineShadow2)); g2.setColor(nextCursorColor()); Line2D line = new Line2D.Double(cX - s, cY, cX + s, cY); Line2D line2 = new Line2D.Double(cX, cY - s, cX, cY + s); AffineTransform at = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), cX, cY); AffineTransform at2 = AffineTransform.getRotateInstance( Math.toRadians(angle), cX, cY); // Draw the rotated line g2.draw(at.createTransformedShape(line)); g2.draw(at2.createTransformedShape(line2)); g2.setStroke(new BasicStroke(1)); } } /** * * ** ** ** ** * Mouse trails * * ** ** ** ** **/ public void drawTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); int mX = Client.getMousePosition().x; mY = Client.getMousePosition().y; g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int tmpcursorStroke = STROKE; if (STROKE > 1) tmpcursorStroke = (a.getAlpha() > 175 ? STROKE : STROKE - 1); g2.setStroke(new BasicStroke(tmpcursorStroke)); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawLine(a.x, a.y, lastPoint.x, lastPoint.y); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawZoomTrail(Graphics g) { String zoom = "zoom zoom "; int zoomIndex = 0, zoomIndexStart = -1; Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setFont(new Font("default", Font.BOLD, 12)); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (zoomIndex >= zoom.length()) zoomIndex = 0; String toDraw = String.valueOf(zoom.toCharArray()[zoomIndex]); if (lastPoint != null) { Color c = nextTrailColor(); toDraw = a.getAlpha() > 175 ? toDraw.toUpperCase() : toDraw; g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawString(toDraw, a.x, a.y + 5); } lastPoint = a; zoomIndex++; } g2.setFont(new Font("default", Font.PLAIN, 12)); } public void drawTextTrail(Graphics g, String trail) { int zoomIndex = 0, zoomIndexStart = -1; Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setFont(new Font("default", Font.BOLD, 12)); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawString(trail, a.x, a.y); } lastPoint = a; zoomIndex++; } g2.setFont(new Font("default", Font.PLAIN, 12)); } public void drawDotTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 6 : a.getAlpha() > 150 ? 5 : a.getAlpha() > 100 ? 4 : a.getAlpha() > 50 ? 3 : 2; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.fillOval(a.x, a.y, size, size); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawCircleTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 6 : a.getAlpha() > 150 ? 5 : a.getAlpha() > 100 ? 4 : a.getAlpha() > 50 ? 3 : 2; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawOval(a.x, a.y, size, size); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawPlusTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 5 : a.getAlpha() > 150 ? 4 : a.getAlpha() > 100 ? 3 : a.getAlpha() > 50 ? 2 : 1; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color g2.drawLine(a.x - size + 1, a.y + 1, a.x + size + 1, a.y + 1); g2.drawLine(a.x + 1, a.y - size + 1, a.x + 1, a.y + size + 1); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawRotatingSlashTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 5 : a.getAlpha() > 150 ? 4 : a.getAlpha() > 100 ? 3 : a.getAlpha() > 50 ? 2 : 1; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color Line2D line = new Line2D.Double(a.x - size, a.y, a.x + size, a.y); Line2D line2 = new Line2D.Double(a.x, a.y - size, a.x, a.y + size); AffineTransform at = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), a.x, a.y); g2.draw(at.createTransformedShape(line)); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void drawRotatingCrossTrail(Graphics g) { Graphics2D g2 = (Graphics2D) g; oldTransform = g2.getTransform(); g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); while (!mousePath.isEmpty() && mousePath.peek().isUp()) mousePath.remove(); Point clientCursor = Client.getMousePosition(); MousePathPoint mpp = new MousePathPoint(clientCursor.x, clientCursor.y, duration * 2); if (mousePath.isEmpty() || !mousePath.getLast().equals(mpp)) mousePath.add(mpp); MousePathPoint lastPoint = null; for (MousePathPoint a : mousePath) { if (lastPoint != null) { Color c = nextTrailColor(); int size = a.getAlpha() > 200 ? 5 : a.getAlpha() > 150 ? 4 : a.getAlpha() > 100 ? 3 : a.getAlpha() > 50 ? 2 : 1; g2.setStroke(cursorStroke); g2.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), a.getAlpha())); //trail color Line2D line = new Line2D.Double(a.x - size, a.y, a.x + size, a.y); Line2D line2 = new Line2D.Double(a.x, a.y - size, a.x, a.y + size); AffineTransform at = AffineTransform.getRotateInstance( Math.toRadians(angle += 4), a.x, a.y); g2.draw(at.createTransformedShape(line)); g2.draw(at.createTransformedShape(line2)); g2.setStroke(new BasicStroke(1)); } lastPoint = a; } } public void nextRGB() { if (r == 255 && g < 255 & b == 0) { g++; } if (g == 255 && r > 0 && b == 0) { r--; } if (g == 255 && b < 255 && r == 0) { b++; } if (b == 255 && g > 0 && r == 0) { g--; } if (b == 255 && r < 255 && g == 0) { r++; } if (r == 255 && b > 0 && g == 0) { b--; } } public Color currentCursorColor() { if (!RAINBOW) { return cursorColor; } else { return new Color(r, g, b); } } public Color currentTrailColor() { if (!RAINBOW) { return trailColor; } else { return new Color(r, g, b); } } public Color nextCursorColor() { nextRGB(); return currentCursorColor(); } public Color nextTrailColor() { if (!RAINBOW) //Don't call this if it is set to rainbow so we're not double calling nextRGB() nextRGB(); return currentTrailColor(); } public class MousePathPoint extends Point { private long finishTime; private double lastingTime; private int alpha = 255; public MousePathPoint(int x, int y, int lastingTime) { super(x, y); this.lastingTime = lastingTime; finishTime = System.currentTimeMillis() + lastingTime; } public int getAlpha() { int newAlpha = ((int) ((finishTime - System.currentTimeMillis()) / (lastingTime / alpha))); if (newAlpha > 255) newAlpha = 255; if (newAlpha < 0) newAlpha = 0; return newAlpha; } public boolean isUp() { return System.currentTimeMillis() >= finishTime; } } }  
      Enjoy falsely tricking people into thinking your script is better than it is!
    19. Like
      yeeter got a reaction from Pandemic in DreamBot 3 Miner Tutorial, Part 1   
      perfect!
    20. Like
      yeeter reacted to Pandemic in DreamBot 3 Miner Tutorial, Part 1   
      Hello everyone, this will be a series of short tutorials expanding on a miner for the DreamBot 3 client, starting with a simple script that just mines and drops, eventually compounding to a fully complete miner that has antiban methods, banking, a GUI, and whatever else I think of
      This initial tutorial will be very brief, I won't be explaining every line of code, however future parts may be more in depth.
      Prerequisites
      This is meant to be for people who are somewhat familiar with Java or similar languages, and new to DreamBot or OSRS bot making. I won't be discussing setting up Java or your development software for building the script's output. This will assume you already have a basic knowledge of Java programming and an IDE ready to go. If you need help with that, check out this guide to get a basic setup ready:
      Project Layout
      To start, create a new project in your IDE and call it anything you'd like. Inside your project folder, create a folder layout and create the three starting classes, it should look like this:

      The 'src' folder is important if you ever decide to upload a script to our SDN.
      The Script
      Let's start with what the script should be able to do by the end of Part 1:
      Mine any rocks, just whatever is closest If the inventory is full, drop all of the ore Show a basic paint letting us know how much experience we've gained For this script, I've decided to go with a node or task setup. Basically we'll make simple, self contained tasks that the client will run whenever they're ready to be ran. We can optionally set a priority so more important tasks will run first, but we'll save that for a later tutorial.
      Miner.java, the script's main class
      For this basic setup, here's the simple starting class for our miner:
      Points of Interest:
      @ScriptManifest: This is an annotation that helps us show your script in the script manager. extends TaskScript: TaskScript is a subclass of AbstractScript that handles the basic task/node logic so we can focus on creating discrete tasks. onStart(): This method is called whenever someone starts the script through DreamBot. onPaint(Graphics g): This method is called on every frame render, usually 60 times per second. For performance reasons, you want to minimize the amount of processing you do in this method. The Tasks
      Now that the script's main class is added, let's make the mining task.
      Mining
      Now we need to figure out how to know which rocks are mine-able. Load into the game and walk by any rocks you can mine.
      Now you can enable the Developer Mode in the settings panel:

      Then in the menu bar that shows up, open the Game Explorer:

       
      Go to the "Game Objects" tab and choose the closest rock to you so we can see if anything changes when a rock is mined:

      After mining the rock, press refresh and select the same rock again:

      As you can see, a few things did change: the rock's ID, model colors, modified colors, and index. To avoid hardcoding any specific rock ids, since we don't care what type of rock it is, I think we should just check for non-null model colors.
      MiningTask.java
      Points of Interest:
      accept(): This is used by DreamBot to decide if it should run this task's execute method. execute(): This is the method called whenever the task runs. Dropping the Inventory
      With the mining task finished, it'll mine until the inventory is full, then just sit around waiting. If you enable input and drop a few ore, the script will pick right back up where it was and mine until it's full again.
      Dropping our entire inventory is pretty easy to do, so our task's class file is really simple:
      DropTask.java
       
      We're Done!
      With that, everything should now compile. Make sure your script's output goes to the (USER_HOME)/DreamBot/Scripts/ folder, then run the script in the client and it should start working, paint and all:

       
       
      You can find all of the source files attached in case you had trouble setting it up correctly
      If you have any questions or have anything you'd like to see included for the end result, please post it below.
      Thanks for reading!
      Miner.zip
      Part Two:
       
    21. Upvote
      yeeter reacted to Ben in Unlimited Gmail Accounts   
      u can just do test@gmail , test+1@gmail, test+2@gmail etc
    22. Upvote
      yeeter reacted to Yattas in Yatta's Cow Bone Collector   
      Yattas Cow Bone Collector
      Features:
      Picks up Bones in Lumbridge Cow Farm
      Buries bones once inventory is full
      Run from anywhere
      Easy Prayer experience
       
      Bug Reports:
      Send me a message on Discord if you want to see features added or if you find a bug
       
       
    23. Like
      yeeter got a reaction from Peso in I am gods chosen programmer, I am the best programmer on the planet   
      Terry Davis is the only god of programming in my book. R I P 
    24. Like
      yeeter got a reaction from tjet in I am gods chosen programmer, I am the best programmer on the planet   
      Terry Davis is the only god of programming in my book. R I P 
    25. Upvote
      yeeter reacted to scalawag in Life is weird   
      But really though....feels like we're in some simulation...this life isint real
    ×
    ×
    • 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.