Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Make sure you have Java 8 installed
  • 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 gold? You can purchase vouchers from other users
  • Try asking for help in the chatbox
OSRS Gambling

Interested in advertising your business? Reach out today!

Download the DreamBot client today!

Search the Community

Showing results for tags 'script'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Requests
  • DreamBot
    • Announcements
    • Client Support
    • Site Support
  • Community
    • General Discussion
    • Runescape
    • Spam
    • Applications
  • Scripts
    • SDN Scripts
    • Local Scripts
    • Local Plugins
    • Private Scripting Shops
    • Script Requests
    • Script Management
  • Development
  • Market
  • Management

Product Groups

  • Donator
  • VIP
  • Sponsor
  • Scripts
    • Agility
    • Combat
    • Construction
    • Cooking
    • Crafting
    • Fletching
    • Firemaking
    • Fishing
    • Herblore
    • Hunter
    • Magic
    • Mining
    • Mini-Games
    • Money Making
    • Other
    • Prayer
    • Quests
    • Ranged
    • Runecrafting
    • Slayer
    • Smithing
    • Thieving
    • Woodcutting

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL





Found 69 results

  1. Manly Agility It is possible to leave this script alone with auto progress enabled and it will automatically go to the best course available. However, make sure to read the bugs section to see where auto progress will not work. Courses supported: Gnome Stronghold Draynor Varrock Canafis Falador Seers' Village Need accounts with high agility levels to add more courses. PM me. Instructions: Make sure you have not started the course yet or you have just finished an obstacle Choose your course in the GUI and whether you want to bank for food or not. If you do, put your food ID into the text field. Enable auto progress depending if you want the script to auto go to the best course. Toggle spam clicking. Check whether you want the script to move the mouse to the screen after walking using the minimap. Press the OK button Features: Waiting for health when it is below 4. Fast Paint Camera rotations Good logic - knows which obstacle is next Picks up marks of grace Enables run Walks to course if not nearby Can survive course failures Banking for food - script will stop once food runs out in bank Auto progression - Will go to the best course automatically once available World hopping - When someone near you speaks. Toggle spam clicking Bugs: For the Gnome Stronghold course, it might try to get in the pipe when someone is already in there, but it will recover. It can't auto progress from gnome stronghold to draynor. It can't find its way to the gnome stronghold course. The script can get your character to die possibly depending on the path it takes when walking from one course to another when auto progress is enabled. Sometimes it can mess up walking to the next course because of dreambot's web. Progress Reports: Trials: Upvote this post, ask for a trial in the thread, and I will give you a trial for 24 hours. Price: $5.99 One Time Purchase Purchase here:
  2. Hi All, I've been trying to write a script that is able to launch other scripts using the ScriptManager.start function. My current code has it starting the other script, but I want to be able to pass parameters to this newly launched script. This is the current code used to launch the new script: ScriptManager mg = new ScriptManager(getClient().getInstance()); mg.start("IronMiner", "args", "test1", "test2"); However, the new script does not seem to receive these arguments and only executes the onStart function that does not take arguments. Any help with this would be appreciated.
  3. Intro Hi, I'm Nex. I've been making rs scripts for over a year. I can code anything rs related. I have coded a personal fully operational bot farm and have made well over 100 private scripts. All tho I specialize in combat scripts, I'm open for any request! Contact Discord: https://discord.gg/sSFqZJ5 Pricing Will be discussed depending on the feature's T.O.S. -1. You cannot cancel a ongoing order. -2. You will provide a valid "tester" account with supplies. -3. I will offer bug fixes but add-ons and extra's will cost you. -4. You will pay 100% of the script price upfront. -5. You are not allowed to resell/share any scripts purchased, Unless agreed upon. -6. Free bug fixes last up to 2 weeks after purchase. (After it will cost a small fee) -7. By using my service you automaticly agree to these terms.
  4. Overview B14's Potato Farmer is a simple script that focuses on player and ban evasion using simple functions to increase the usage of this script and reduce the possibility of your bot account being detected or flagged. Features Player evasion functionality If a player comes near your while you are farming potatoes, you will automatically evade the player by swapping worlds. This is to reduce the chance of you being reported/detected. World hopping This script will automatically hop between 50 low activity worlds when necessary World limits This bot determines how many potatoes it will pick in a single world before it swaps worlds. Combined with the DreamBot break feature, this should help the evasion of detection quite a bit. Automatic Camera Movement The script will occasionally adjust the camera to help evade automatic bot detection Auto running Once you are over 5% running energy, the bot will toggle running on to help increase the efficiency of this bot Auto banking All potatoes collected will be ran and deposited to the nearest bank Dedicated farming area Currently the bot will automatically travel to a specific potato field and will only function there. This may change in the future. Detailed paint Your screen will display the current action of the script, the rough amount of total potatoes collected, the rough amount of potatoes collected in your current world, and the maximum amount of potatoes allowed to be collected in your current world This is my first script so in the script's current state (Version 1.0) most of the functionality is bare bones. I would like to eventually advance the logic in the script to improve it's evasion techniques as well as improve it's efficiency. Released for free on the SDN Repository
  5. Hello, I just paid for VIP and a script with BTC. However, that was an hour ago. I sent the BTC to the address given, resulting in a green checkmark that brought me back to my orders page. Nothing has changed since then and the order is still awaiting payment. The payment was sent a little over an hour ago. Btc payments should occur within 10-20 mins, i think . I got confirmation email after BTCPay Invoice said my transaction went through. Image of my payment withdrawal from my wallet. https://imgur.com/a/WrADCxl Image of my confirmation email stating it should take about 15 minutes. https://imgur.com/a/A0OJh0F Thank you very much, -BoxofTruth
  6. SHOP CLOSED SHOP CLOSED SHOP CLOSED Man16's Private Script Shop About me: Hi. I've been in the botting scene for about 10 years and have been scripting for ~7 years on and off. I make scripts which belong to the 'Manly' series. My scripts are often known for how flawless they are. I can make almost any script in RS. Prices: If you don't need a script or need some software made, message me privately instead. Prices are subject to change depending on script idea and my opinion. Price is given after you give me details of what you want. STRICTLY NO TIME WASTERS. I DONT GIVE SCRIPT IDEAS, YOU COME TO ME WITH WHAT YOU WANT. Payment Methods: I take OSRS GP - Rate is specified when we talk. I take BTC - You pay all fees which include me converting to real currency + withdrawal. Terms of Service: You automatically accept these terms once you place an order with me. No refunds after I have received the payment under any circumstances. You pay before receiving the script. I only start work once I receive payment. I support the script for 1 month. This includes ONLY bug fixes, and no additional features. Additional features can be added to the script afterwards for a price at my discretion. You are not allowed to decompile the script. The script is solely for you to use, otherwise stated. Script stays between me & you, unless permission is given. I reserve the right to refuse any request. I will not take any non-unique requests i.e. a script which already exists on the SDN. Script will be written according to features specified BEFORE I have started writing it. If I don't have a RS Account with the required stats to write the script, you will provide one. Rude customers will be disregarded and support will be withdrawn if they have purchased a script already. If these terms are broken, I have the right to withdraw all support provided to you as well as blacklisting you from my services. Reviews: Contact Me: Please tell me what the script's purpose is + what is has to do + other features. Do not add me on multiple contact lines. Please make sure you are NOT talking to a fake. Discord: Man16#4811. Make sure you add me as a friend so I can message you back. Very active here. Forums - PM Me.
  7. Can somebody make a custom script for me so i can use it independently with a low chance of getting banned? we can negotiate prices.
  8. Hi I am new at writing scripts trying to learn I have write a basic goblin script that just attacks goblins but I won’t to 1 set up a level cap so like when it has 10 attack Strength and defence I want it to change to a different NPC how to I put it into Code formAnd where would I put it in the codeAnd I wanted to swap from attack to strength to defence so we can level each one
  9. 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://dreambot.org/sdn/scripterpanel-repo.php 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 yourOwnUsername@ssh.dreambot.org: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://dreambot.org/sdn/scripterpanel-newscript.php 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. Manly Chopper AIO Woodcutting Script includes dropping, shift dropping, banking, bird's nests Features: Supports any tree, any location. Supports all web banks and (shift) dropping logs. Works in a confined area. Walks back to woodcutting area if no trees found nearby. Bird nest looting Flawless Doesn't bank/drop axe. Paint Quick start GUI Instructions: You will need to set the script's settings via quick start or using the GUI. When banking, it will go to the closest bank available in the web. GUI: If the script has trouble detecting which tree you are trying to chop/log you are trying to drop, make sure you entered them correctly in the GUI, case sensitive. Quick Start Parameters: There are 5 parameters in total. Tree name, case sensitive Log name, case sensitive Mode. Either drop or bank, not case sensitive Work radius. How far the trees have to be from the starting location to chop. Looting bird nests. True if you want to loot them, not case sensitive. By default, it will not loot them. Progress Reports: Price: VIP
  11. hi, i'm looking for a script to autotype and accept trade and exchange item for gold example is "selling bones 5 gp ea" *noob has sent a trade request and then it trades x amount of bones for x amount of gp also wondering how much it would be if i were to buy it
  12. Greetings, I have a problem with comparing 2 names. One got with grandChild.getText() the other friend.getName(). The thing is the comparison returns FALSE if both names are the same but have spaces in them. If there are no spaces in the names it works fine. This is the code: if(vars.gChildM.getText().contentEquals(vars.addedPlayers.get(vars.iterator).getName())) { so: if(grandChild.getText().contentEquals(listOfFriendObjects.get(indexOfList).getName())) { Checking with .equals() also doesn't work
  13. After being frustrated and banned on an account on another bot client that I wont name, I decided to migrate to Dream bot. I learned the Dream bot API 6 hours ago and this is the product I created. Simplistic and a one sided script but I hope you guys like it as my first script release. Roughly 276 Red Dyes made per hour, Either 82k - 192k depending on how much you sell them for. I've sold plenty at 700 each and lowest 300 each on a bad day. Try leaving it in the grand exchange over night at a higher price. I made roughly 5000 dyes without getting banned with a few breaks in between on 4 accounts. Use at your own risk though Start the bot anywhere with Redberries and enough coins in your bank. Code: package dev.zedomega.dyemaker; import java.awt.Graphics; import java.util.concurrent.ThreadLocalRandom; import org.dreambot.api.methods.container.impl.Inventory; import org.dreambot.api.methods.container.impl.bank.Bank; import org.dreambot.api.methods.dialogues.Dialogues; import org.dreambot.api.methods.map.Area; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.script.Category; import org.dreambot.api.script.ScriptManifest; import org.dreambot.api.script.listener.PaintListener; import org.dreambot.api.wrappers.interactive.Player; @ScriptManifest(author = "Zedomega", category = Category.MONEYMAKING, name = "Dye Maker", version = 0.5) public class Main extends AbstractScript implements PaintListener { private String script = "[Dye Maker]:"; private final Area draynorVillage = new Area(3108, 3227, 3081, 3271); private final Area aggiesRoom = new Area(3083, 3256, 3088, 3261); private final Area outsideAggiesRoom = new Area(3094, 3262, 3089, 3257); private final Area draynorBank = new Area(3094, 3242, 3092, 3245); private State state = State.WALKING_TO_DRAYNOR; private int dyes = 0; private int randomNumber(int min, int max) { return min + ThreadLocalRandom.current().nextInt(max - min); } private void withdrawSupplies(Bank bank, Inventory inventory) { bank.depositAllExcept(995); if (inventory.count(995) >= 50) { // log(script + " Withdrew supplies from bank."); bank.withdrawAll(1951); bank.close(); } else { if (bank.count("Coins") > 0 && bank.count("Redberries") > 0) { // log(script + " Withdrew supplies from bank."); bank.withdraw(995, 1000); bank.withdrawAll(1951); bank.close(); } else { log(script + " Stopped script, ran out of coins / berries."); stop(); } } } @Override public int onLoop() { int nextCycle = randomNumber(675, 1630); Player player = getLocalPlayer(); Inventory inventory = getInventory(); if (player.isInCombat()) { state = State.COMBAT; log(script + " Combat detected! Attempting to run to safe spot."); getWalking().walk(outsideAggiesRoom.getRandomTile()); sleepUntil(() -> !player.isInCombat(), randomNumber(7250, 11275)); } if (getWalking().getDestinationDistance() >= 3) { // Make sure we don't click when we don't need to sleep(nextCycle); } if (!draynorVillage.contains(player)) { // Walk to Draynor this.state = State.WALKING_TO_DRAYNOR; getWalking().walk(draynorBank.getRandomTile()); } else { // In Draynor Village. if (inventory.isEmpty()) { if (!draynorBank.contains(player)) { // Walk to Bank state = State.RESUPPLYING; getWalking().walk(draynorBank.getRandomTile()); } else { // In Draynor Bank if (!getBank().isOpen()) { getBank().open(); } else { // Bank is Open state = State.SUPPLYING; withdrawSupplies(getBank(), inventory); } } } else { // Inventory is not Empty if (inventory.count(995) < 5 || inventory.count(1951) < 3) { // Inventory doesn't have enough supplies / Finished making dyes if (!draynorBank.contains(player)) { // Walk to Draynor state = State.RESUPPLYING; getWalking().walk(draynorBank.getRandomTile()); } else { if (!getBank().isOpen()) { getBank().open(); } else { // Bank is open state = State.SUPPLYING; withdrawSupplies(getBank(), inventory); } } } else { // Inventory has Supplies to make dye if (!aggiesRoom.contains(player)) { if (!outsideAggiesRoom.contains(player)) { // Walk to the outside of Aggie's room state = State.SUPPLYING; getWalking().walk(outsideAggiesRoom.getRandomTile()); } else { // Enter Aggie's house getWalking().walk(aggiesRoom.getRandomTile()); } } else { // In Aggies Room state = State.CRAFTING; Dialogues dialogues = getDialogues(); if (!dialogues.inDialogue()) { // Not talking to Aggie inventory.interact(1951, "Use"); getNpcs().closest("Aggie").interact(); sleepUntil(() -> dialogues.inDialogue(), nextCycle); } else { // Talking to Aggie if (dialogues.canContinue()) { if (dialogues.getNPCDialogue().equals("What can I help you with?")) { inventory.interact(1951, "Use"); getNpcs().closest("Aggie").interact(); sleep(randomNumber(1630, 1700)); } else if (dialogues.getNPCDialogue().equals("Ok make me some red dye please.")) { dialogues.clickContinue(); } else { // Add 1 to the total Dye count dyes ++; dialogues.clickContinue(); } } else { // Walk around in Aggie's room (To avoid bugs) getWalking().walk(aggiesRoom.getRandomTile()); } } } } } } return nextCycle; } @Override public void onPaint(Graphics g) { g.drawString("Status: " + state.getName(), 10, 35); g.drawString("Dyes Made: " + dyes, 10, 50); } private enum State { WALKING_TO_DRAYNOR("Walking to Draynor"), RESUPPLYING("Grabbing supplies from Bank"), SUPPLYING("Bringing supplies to Aggie"), CRAFTING("Making dyes with Aggie"), COMBAT("Escaping combat"); private String description; private State(String name) { description = name; } public String getName() { return description; } } } Download: https://www.mediafire.com/file/m3aagy6ms16f89k/DyeMaker.zip/file Pictures: Also a thanks to @thatbellguy for helping me start out and learn a few basic things with the dreambot API
  14. When I press play script on any of then, it just walks a few steps and presses on options and then advanced options. Can anyone help with this please? Do I have something in my settings wrong? Thanks!!!!
  15. Im new to dream bot and just trying to learn how it all works. unfortunately every script i try to run never works. It logs into a world just fine, but then every script just opens "advanced options" and walks 5 steps and repeats. Is there something i am doing wrong or not enabling? Please help
  16. If we are all using the same api, how different can 2 scripts really be? If its something simple like cooking food, you withdraw the food, use on fire, delay until inv is done, bank, repeat. Where in this would there be a difference between an experienced scripter and a new scripter?
  17. SourB Cow Hide Looter Hello! This is my first script so go easy I guess? I decided to make a cow hide looter, simply because the cow hide looters available aren't quite up to scratch and I don't think I can handle to many more tutorials. So, I've come to ask for some help from you guys! If you's could help me with a few things I would be SO thankful. Current features ✔️ Collects cowhides ✔️ Banks ✔️ Returns to cow pen and repeats To do list : To add : - Add a 'Information Panel' with things such as : * Cowhides collected, time running, estimated GP value, cowhides per hour and GP per hour. - Add anti-ban of some kind -Add stop after certain time option (not important) To fix : - Fix speed (make the script pick up more cowhides per hour by smoothing code) Current progress : package org.dreambot.sourb; import org.dreambot.api.methods.container.impl.bank.BankLocation; import org.dreambot.api.methods.map.Area; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.script.Category; import org.dreambot.api.script.ScriptManifest; import org.dreambot.api.wrappers.items.GroundItem; @ScriptManifest(author = "SourB", category = Category.MONEYMAKING, description = "Collects cow hides from the cow pen northeast of Lumbridge, collects till full inventory then goes and banks. It'll return and repeat. Check forum post for more details!", name = "SourB Cow Hide Collector v1.2", version = 1.0) public class Main3 extends AbstractScript { public static final String Cowhide = "Cowhide"; private final Area collectingArea = new Area(3265, 3255, 3249, 3298); @Override public int onLoop() { if (collectingArea.contains(getLocalPlayer()) && !getLocalPlayer().isMoving()) { if (!getInventory().isFull()) { //Picks up cowhides if in 'collectingArea' and doesn't have a full inventory GroundItem Cowhide = getGroundItems().closest("Cowhide"); if (Cowhide != null) { Cowhide.interact("Take"); } } } else if (!collectingArea.contains(getLocalPlayer()) && !getInventory().isFull()) { //If player is not in the collecting area and does not have a full inventory go to collecting area getWalking().walk(collectingArea.getRandomTile()); } if (getInventory().isFull()) { //Is the bank open? if (getBank().isOpen()) { //If the bank is open deposit all cowhides getBank().depositAll(Cowhide); //Waits a bit sleep(250); //Closes bank and continues getBank().close(); } else { //If the bank is not open, go open it getBank().open(BankLocation.LUMBRIDGE); } } return 1000; } } Download link : SourB Cow Hide Looter.jar Notes : The purpose of this script is for the entire community to use and to contribute to. My idea behind this is to not only get better at coding but to help all the people who need a script for quick starting money in F2P. I know the amount of times I thought how the cow hide collecting scripts could be done better. Currently, most of the 'To fix' list is complete and I believe I can start on some of the . If you would like to contribute please comment below, whether with code to paste in or helping me to understand anything to do with the code needed. Links to tutorials are also very helpful, thank you for reading and especially thank you for contributing if you do. I also plan to update this as I fix/work on it. I eventually I will call it done and either hand it on or just let it float around the forums. But, I'll decide when that day comes. -SourBear Patch Notes : V1.1 - 19/10/2018 Fixed the way the script picks up cowhides V1.1 - 19/10/2018 Fixed banking, now closes bank before trying to return to cow pen v1.0 - 18/10/2018 Initial release onto forums
  18. I'm still pretty new when it comes to writing scripts (learned this past week thanks to some of the tutorials here). Ive been trying my hand at making my own scripts without the help of others so I can learn more. I'm currently writing a script that just tans hides in Al Kharid, I got everything to work up to the point where the script needs to find the shop widget and tan the hides. I cant seem to find any tutorials that include the use of widgets so this has been quite hard. Below is what I currently have written. After adding in the WidgetChild line every time I go into the client to test the script, I press start on it and nothing happens. Nothing comes up in the debug console, theres no mouse movement, not even the script selection interface goes away. previously the bot would run up to the point of opening the trade option with the tanner and then stop as it had no further instruction on what to do. If I could get any help it would be much appreciated. If you need more info to help let me know, or if theres a currently existing tutorial on making a hide tanner or anything else that interacts with widgets that you could link, let me know. package BasicHideTanner; import javafx.scene.Parent; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.container.impl.bank.BankLocation; import org.dreambot.api.methods.filter.Filter; import org.dreambot.api.methods.map.Area; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.script.Category; import org.dreambot.api.script.ScriptManifest; import org.dreambot.api.wrappers.interactive.NPC; import org.dreambot.api.wrappers.widgets.WidgetChild; @ScriptManifest(category = Category.MONEYMAKING, author = "Jacob", name = "BasicHideTanner", description = "Tans Hides in Al Kharid", version = 1.0) public class MainClass extends AbstractScript { Area tanningArea = new Area(3277,3189,3270,3193,0); Area bankArea = new Area(3269,3170,3272,3164,0); public static final int GOLD = 995; public static final int HIDES = 1739; public static final int LEATHER = 1741; public static final String TANNER = "Ellis"; public static final String BANKER = "Banker"; public static final Filter<NPC> BANK_FILTER = npc -> npc != null && npc.getName().equals(BANKER) && !npc.isHealthBarVisible(); public static final Filter<NPC> TANNER_FILTER = npc -> npc !=null && npc.getName().equals(TANNER); public WidgetChild TanInterface = getWidgets().getWidgetChild(324); @Override public int onLoop() { if (getBank().isOpen()); if (getInventory().isFull() && !getInventory().contains(HIDES,GOLD)){ getBank().depositAllExcept(GOLD,HIDES); }else if (getInventory().contains(GOLD)){ getBank().withdrawAll(HIDES); }else { getBank().withdrawAll(GOLD); } if (!getBank().isOpen() && !getInventory().contains(HIDES,GOLD)) { getBank().open(BankLocation.AL_KHARID); } if (getInventory().isFull() && getInventory().contains(HIDES,GOLD)){ getWalking().walk(tanningArea.getRandomTile()); if (tanningArea.contains(getLocalPlayer())){ NPC TANNER = getNpcs().closest(npc -> npc != null && npc.hasAction("Trade")); if (TANNER.interact("Trade")){ if (sleepUntil(() -> getShop().isOpen(), 9000)); if (getWidgets().getWidget(324) != null){ if (TanInterface != null && TanInterface.isVisible()){ TanInterface.interact("Tan All"); } } } } } return (Calculations.random(500,2000));} }
  19. What script would you like to see on the SDN for free? Please use common sense when requesting a script-- i.e., don't ask for zulrah.
  20. for any purchase i get the error code: 2S100/6
  21. think that a script for Ankous in the stronghold of security would be decent. you can get good exp there a long with making some money. Some nice features would be to be able to select loot to have picked up (mainly stackables) Also supporting bones to peaches tabs.
  22. i tried to buy a script and it just came up as an error. tried on alot more scripts and just all the same error
  23. I built a little script for myself, that will take copper and iron from my bank and smelt them at a furnace (in lumbridge). The problem is that suddenly, when I build the artifact it will not start when I press the start script button on the script panel in the dreambot client. I am really confused as to what it might be... Note: It did work before when it just walked to the bank... (The script below is not done yet, I just want to test if it works with the current code) import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.container.impl.bank.BankLocation; import org.dreambot.api.methods.map.Area; import org.dreambot.api.methods.map.Tile; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.script.Category; import org.dreambot.api.script.ScriptManifest; import org.dreambot.api.utilities.impl.Condition; import org.dreambot.api.wrappers.interactive.Entity; import org.dreambot.api.wrappers.interactive.GameObject; import org.dreambot.api.wrappers.interactive.NPC; @ScriptManifest(name = "PimsLumbridgeSmelter", version = 1.0, description = "Lumbridge Smelting", category = Category.SMITHING, author = "Pims") public class MainClass extends AbstractScript { Area bankArea = BankLocation.getNearest(getLocalPlayer()).getArea(2); Tile smeltery = new Tile(3227, 3255); //walk to nearest bank //take 14 tin and 14 copper //walk to furnace //smelt bronze //walk to nearest bank //bank bars private boolean startScript = true; @Override public void onStart() { log("starting up"); } @Override public int onLoop() { //walk to nearest bank if (startScript) { if (getInventory().onlyContains(item -> item != null && item.getName().contains(" ore"))) { if (getLocalPlayer().getTile().equals(smeltery)) { Smelt(); } else { WalkToSmelter(); } } if ((getInventory().isFull() && !getInventory().onlyContains(item -> item != null && item.getName().contains("ore"))) || getInventory().onlyContains(item -> item != null && item.getName().contains(" bar"))) { if (bankArea.contains(getLocalPlayer())) { Bank(); } else { WalkToBank(); } } } return 600; } public void WalkToSmelter() { if (getWalking().walk(smeltery.getTile())) { sleep(Calculations.random(3000, 6000)); } } public void WalkToBank() { if (getWalking().walk(bankArea.getCenter())) { sleep(Calculations.random(3000, 6000)); } } public void Smelt(){ GameObject furnace = getGameObjects().closest(gameObject -> gameObject != null && gameObject.getName().equals("Furnace") && gameObject.hasAction("Smelt")); if(furnace != null && furnace.interact("Smelt")){ log("Smelting bars"); if(sleepUntil(() -> (getWidgets().getWidget(270) != null), 8000)){ log("okay"); } log("not okay"); log("Done sleeping for Furnace"); } } public void Bank() { NPC banker = getNpcs().closest(npc -> npc != null && npc.hasAction("Bank")); if (getBank().isOpen() || (banker != null && banker.interact("Bank") && sleepUntil(() -> !getInventory().isFull(), 9000))) { if (getBank().depositAllItems()) { if (sleepUntil(() -> !getInventory().isFull(), 8000)) { if (getBank().withdraw(item -> item != null && item.getName().equals("Tin ore"), 14) && getBank().withdraw(item -> item != null && item.getName().equals("Copper ore"), 14)) { if (sleepUntil(() -> getInventory().isFull(), 8000)) { if (getBank().close()) { sleepUntil(() -> !getBank().isOpen(), 8000); } } } } } } } }
  24. (NOTE: Not sure if this is wrong section for projects but if s then please move it, thanks) Hello DreamBot community So I've recently just come back to OSRS and you know how it is... bot bot bot lol! Anyway OT, I've stared making a script to kill the Aviansie within the Wilderness Godwars area and spent about 2-3 hours writing it so far; its not a lot but HOWEVER, one of the main reason I'm writing this is to learn the Dreambot API whilst learning a bit more Java(Not touched programming in over 3 years!). So I will be posting my source code here for people to give constructive criticism to help me eventually get better with the API. Also eventually you guys can have the script.jar file also for you who just want the script, not the code Start:conditions: Player must have a amulet of glory with at-least two charges(Req'd to start script!). It will also be recommended to have a decent range weapon+bolts/arrows(DUH?) and have a Armadyl+Zamarok item equipped. Also a looting bag, prayer potions(15-20) and range potions(2) within their inventory. Basic script functionality: (WHILST IN WILD ALWAYS CHECK FOR PKERS AND TELEPORT IF SEEN; END SCRIPT) 1)Start by teleporting to Edge using a glory IF the player has a glory with 2 or more charges. 2)Walk to wilderness ditch and cross over it 3)Walk to Wilderness GWD cave entrance and enter it 4)Interact with boulder and cross over it then enter the GWD area. 5)Find a suitable Aviansie(combat levels 69, 71, 79, 81(lower levels to increase GP gain p/h)) to attack and attack it. 6)IF there are addy bars, grimmy rannar, rune daggers, rune limbs or Aviansie heads on the floor then pick them up. 7)IF player has grimmy rannar, rune daggers, rune limbs or Aviansie heads within their inventory then place them into the looting bag. 8)Drink a prayer potion when the player needs prayer points. 9)Drink range potion if range level equals current_range_level plus 5. 10)When player runs out of prayer potions teleport to edge using a glory. 11)Got to bank and Deposit all inventory items(depositing looting bag contents also?). 12)withdraw 20 prayer potions, 2 ranging potions and the looting bag. 13)IF the player has items mention in above step restart script from step 2 ELSE end script. Well thats pretty much everything that the script will contain hopefully. I've only really got concerns about emptying the looting bag contents within the bank and figuring out if there's a Pking on the prowl but I'll try my best to work them out when I get to it. So far I've done 1-5 in the list above and would like so comments on if the code is bad, then why and how could I improve it (NOTE: I've done this in a Node based framework so there's no point me pasting Main.java) TaskFrame.java: package com; import org.dreambot.api.methods.MethodContext; import org.dreambot.api.methods.map.Area; import org.dreambot.api.methods.map.Tile; public abstract class TaskFrame { protected MethodContext c; protected Area gwdArea() { Area gwdArea = Area.generateArea(7, new Tile(3025, 10160)); return gwdArea; } protected boolean atGWD() { return gwdArea() != null && gwdArea().contains(c.getLocalPlayer().getTile()); } public int priority () { return 0; } public TaskFrame(MethodContext context) { this.c = context; } public abstract boolean validate(); public abstract int execute(); } Walk.java package Tasks; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.MethodContext; import org.dreambot.api.methods.container.impl.equipment.EquipmentSlot; import org.dreambot.api.methods.map.Tile; import org.dreambot.api.wrappers.interactive.NPC; import com.Main; import com.TaskFrame; public class Walk extends TaskFrame { private int walkStage = 2; public Walk(MethodContext c) { super(c); } private boolean walkInteract(Tile tile, int objectID, String option) { if (c.getLocalPlayer().getTile().distance(tile) > 5) { c.getWalking().walk(tile); MethodContext.sleepUntil(() -> c.getLocalPlayer().getTile().distance(tile) > 5, Calculations.random(2500) + 3000); return false; } else { c.getGameObjects().closest(objectID).interact(option); walkStage++; return true; } } @Override public boolean validate() { return !atGWD(); } @Override public int priority() { return 1; } @Override public int execute() { MethodContext .log("Walk stage: " + walkStage + " Player coords: X: " + c.getLocalPlayer().getTile().getX() + " Y: " + c.getLocalPlayer().getTile().getY() + " Z: " + c.getLocalPlayer().getTile().getZ()); switch (walkStage) { case 0: if (c.getEquipment().slotContains(EquipmentSlot.AMULET.getSlot(), "Amulet of glory(4)") || c.getEquipment().slotContains(EquipmentSlot.AMULET.getSlot(), "Amulet of glory(3)") || c.getEquipment().slotContains(EquipmentSlot.AMULET.getSlot(), "Amulet of glory(2)")) { MethodContext.log("Player has glory; Teleporting to Edgeville!"); c.getEquipment().open(); MethodContext.sleepUntil(() -> c.getEquipment().open(), Calculations.random(7500) + 5000); c.getEquipment().getItemInSlot(EquipmentSlot.AMULET.getSlot()).interact("Edgeville"); walkStage++; } else { Main.log("Need amulet of glory with atleast 2 charges equiped to start!"); } break; case 1: Main.log("Walking to wilderness ditch"); walkInteract(new Tile(3089, 3521, 0), 23271, "cross"); break; case 2: Main.log("Walking to gwd entrance!"); walkInteract(new Tile(3016, 3738, 0), 26766, "Enter"); break; case 3: Main.log("walking to boulder"); Tile nextToBoulderTile = new Tile(3055, 10165, 3); c.getWalking().walk(nextToBoulderTile); MethodContext.sleepUntil(() -> c.getLocalPlayer().getTile().distance(nextToBoulderTile) >= 1, Calculations.random(2500) + 1000); if (c.getLocalPlayer().getTile().distance(new Tile(3055, 10165, 3)) <= 1) { walkStage++; } break; case 4: NPC boulder = c.getNpcs().closest(6621); if (boulder != null && boulder.isOnScreen() && boulder.interactForceLeft("Move")) { Main.log("interacting(moving) with boulder"); MethodContext.sleep(4000, 5000); walkStage++; } break; case 5: Main.log("interacting with crevice -> Enter gwd!"); c.getGameObjects().closest(26767).interactForceLeft("Use"); walkStage++; break; case 6: c.getWalking().walk(new Tile(3026, 10163)); break; } return Calculations.random(500, 2000); } } Attack.java package Tasks; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.MethodContext; import org.dreambot.api.wrappers.interactive.NPC; import com.TaskFrame; public class Attack extends TaskFrame { private NPC avToAttack; private boolean inCombat = false; public Attack(MethodContext context) { super(context); } @Override public boolean validate() { return c.getLocalPlayer().canAttack() && atGWD(); } @Override public int execute() { int aviansieID[] = { 3169, 3177, 3181, 3179 }; NPC attackbleAvs[] = new NPC[aviansieID.length]; for (int i = 0; i < aviansieID.length; i++) { attackbleAvs[i] = c.getNpcs().closest(aviansieID[i]); } avToAttack = attackbleAvs[Calculations.random(4)]; inCombat = avToAttack != null && avToAttack.isOnScreen() && !avToAttack.isInCombat() && avToAttack.interactForceLeft("Attack"); MethodContext.sleepUntil(() -> !inCombat, Calculations.random(1500) + 3000); return 1159; } }
  • Create New...