Jump to content
News Ticker
  • New Forum Theme!
  • New Forum Chatbox (on the way)
  • Chatbox Mods Soon Needed
  • Suggest Forum Rank Colors
  • Forum Updates

DreamBot is the only Deadman Mode supported bot on the market!

Download the DreamBot client today!





Search the Community

Showing results for tags 'quester'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • 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
    • Scripting
    • Programming
  • Market
    • Middleman Services
    • Gold Exchange
    • Membership Sales
    • Account Sales
    • Item Exchange
    • Services
    • Graphics
    • Other
  • Management
    • Disputes
    • Appeals

Product Groups

  • Donator
  • VIP
  • Sponsor
  • Scripts
    • Agility
    • Combat
    • Construction
    • Cooking
    • Crafting
    • Farming
    • 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

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Discord


Skype


Location


Interests

Found 2 results

  1. Roma

    RQuester

    Don't forget that DreamBot only supports fixed mode and default zoom Fresh start must be enabled (client -> settings -> fresh start, restart the client) This script only works with the Grand Exchange, it won't collect the items for you If you run into issues please check the FAQ first This script isn't made to continue a quest that has been started manually. The bot won't bank if the quest has been started. The lamps that you get for completeing "Client of Kourend" can not be banked. If the next quest requires 27 or more inventory slots the bot will get stuck on a banking loop. The bot won't evade combat during dialogues. This will affect quests such as "Prince Ali rescue", "The Tourist Trap" if your combat is too low or if the bot happens to missclick. Death walking isn't supported. If the bot dies it will fully rely on DreamBot's webwalking. If any of the required items are lost the bot won't be able to continue with the quest. DreamBot's walking isn't perfect and I can not hardcode the whole map. It is recommended to monitor the bot from time to time, especially in locations with objets that you can't walk past (dead trees etc). If you're using a profile and are missing equipment the bot will buy it from the Grand exchange. Make sure that you save items that can be bought off the Grand exchange if you're planing to use the same profile on multiple accounts. It is recommended to save less consumable supplies (arrows, runes) than you have in the bank. Make sure that you don't save any unneeded items and consumable items (ring of recoil, charged glory etc). The script support all 3 combat styles on most quests. The bot will autocast the best available spell as long as you have a staff of air equipped and enough runes in your inventory. *Profiles are optional. If you don't load a profile the bot will use the current setup (inventory and equipment) on combat based quests. FAQ: Bug reports: Change logs:
  2. So I am currently working on some scripts and I have spent some time developing a quester for Cook's Assistant. Albeit simple, as of the moment this is the largest script I have been working on and I figured I'd share the code here for both critique and perhaps to help another Dreambot Novice. I have included all notes/references and what-have-you. I will paste the code here for archival reasons and because it isn't anything I'd link on my GitHub atm. This project absorbed some Areas, webwalking, and just overall reference from various places on the forum but I relied heavily on the implementation by @Before (The post). Different from Before's script, I provided functionality to gather items for the quest if you didn't have them already in your inventory. As a sort of a "Hello World" to the Dreambot API I have learned a lot from this exercise and I will improve upon it more based on any suggestions. I have some questions and or concerns that I was hoping someone would be able to speak more about: I had a lot of problems with conditional loops (while/do-while) running infinitely when the script was paused or stopped and I would have to just restart the client. I attempted to add a simple iteration count that would break the loop if it went on for too long but that didn't really prevent the issue from happening. Ultimately I decided to mostly avoid them. Because of issue 1 and my reluctance to develop very procedural code, I had the idea of in the future creating a subtask list where all i would need to do is call a tasknode in the onLoop method based on some condition. I feel as if it would be far cleaner than choosing methods from a switch statement or something similar. Not to mention that could possibly make it easier to randomize the order of the tasks. Thanks! Code: import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.map.Area; import org.dreambot.api.methods.quest.Quest; import org.dreambot.api.methods.tabs.Tab; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.script.Category; import org.dreambot.api.script.ScriptManifest; import org.dreambot.api.wrappers.interactive.GameObject; import org.dreambot.api.wrappers.items.GroundItem; import java.util.Random; @ScriptManifest( author = "Hitchhiker", description = "Completes Cook's Assistant. The script will gather all the items needed if you don't already have them in your inventory." + "ie. Bucket, Pot. Script will complete quicker if these items area already had so for maximum efficiency this " + "should be ran after the completion of Tutorial Island. Script can be started from anywhere in the world at ground level.", category = Category.QUEST, version = 0.01, name = "Cook's Assistant Quester (Free Edition)" ) public class Main extends AbstractScript { public Random Rand = new Random(); public Area cookArea = new Area(3207,3217,3210,3212,0); public Area wheatArea = new Area(3162,3289,3166,3285,0); public Area windmillArea = new Area(3165,3300,3168,3302,0); public Area cookBasementArea = new Area(3208,9618,3210,9615); public Area eggArea = new Area(3227,3300,3230,3298); public Area dairyCowArea = new Area(3254,3278,3259,3273); public Area bucketArea = new Area(3213, 9624, 3216, 9622); public static final String COOK = "Cook"; public static final String DAIRYCOW = "Dairy cow"; public boolean StartCooksAssistant() { /* TravelTo(cookArea); if (!getDialogues().inDialogue() && !getLocalPlayer().isMoving()) { getNpcs().closest(COOK).interact("Talk-to"); } while (getDialogues().canContinue()) { getDialogues().clickContinue(); } getDialogues().chooseOption(1); //there should be a total of 2 dialogs each of which is option 1 */ getTabs().openWithMouse(Tab.QUEST); if (!getQuests().isStarted(Quest.COOKS_ASSISTANT)) { TravelTo(cookArea); getNpcs().closest(COOK).interact("Talk-to"); getDialogues().continueDialogue(); sleep(600+Rand.nextInt(600)); getDialogues().chooseOption(getDialogues().getOptionIndexContaining("What's wrong?")); sleep(600+Rand.nextInt(600)); for (int i = 0; i < 3; i++) { getDialogues().continueDialogue(); sleep(600+Rand.nextInt(600)); } getDialogues().chooseOption(getDialogues().getOptionIndexContaining("I'm always happy to")); for (int i = 0; i < 3; i++) { getDialogues().continueDialogue(); sleep(600+Rand.nextInt(600)); } } return true; } public boolean GetEgg() { if (!getInventory().contains("Egg")) { TravelTo(eggArea); GetGroundItemIfNeeded("Egg"); } return true; } public boolean GetPot() { if (!getInventory().contains("Pot")) { TravelTo(cookArea); GetGroundItemIfNeeded("Pot"); } return true; } public boolean GetBucket() { if (!getInventory().contains("Bucket")) { TravelTo(cookArea); int tryCount = 0; /*while (getLocalPlayer().getZ() == 0 || tryCount < 5){*/ ClosestSpecifiedGameObjectInteract("Trapdoor","Climb-down"); //sleepWhile( () -> !cookBasementArea.contains(getLocalPlayer()), Calculations.random(3000, 4000)); //} sleep(Calculations.random(4000,5000)); //Walk to bucket TravelTo(bucketArea); GetGroundItemIfNeeded("Bucket"); //Walk to ladder TravelTo(cookBasementArea); sleep(Calculations.random(2000,3000)); ClimbClosestLadder(1,true); } return true; } public boolean GetMilk() { TravelTo(dairyCowArea); if (!getInventory().contains("Bucket of milk")) { getGameObjects().closest(DAIRYCOW).interact("Milk"); sleepWhile( () -> !getInventory().contains("Bucket of Milk"), Calculations.random(35000, 40000)); } return true; } public boolean GetGrain() { if (!getInventory().contains("Grain")) { TravelTo(wheatArea); sleepUntil(() -> getLocalPlayer().isStandingStill(), Rand.nextInt(6000)); while (!getInventory().contains("Grain")) { ClosestSpecifiedGameObjectInteractConditional("Gate", "Open", "Open", true); sleepUntil(() -> getLocalPlayer().isStandingStill(), 1000+Rand.nextInt(500)); GameObject wheat = getGameObjects().closest("Wheat"); if (wheat.hasAction("Pick") && wheat != null) { wheat.interact("Pick"); sleep(5000 + Rand.nextInt(500)); } } //In case it has been closed ClosestSpecifiedGameObjectInteractConditional("Gate", "Open", "Open", true); sleepUntil(() -> getLocalPlayer().isStandingStill(), 1000+Rand.nextInt(500)); } return getInventory().contains("Grain"); } public boolean GetFlour() { if (getInventory().contains("Flour")) { log("Flour Acquired!"); return true; } else { if (!getInventory().contains("Pot")) { GetPot(); } else { if (!getInventory().contains("Grain")) GetGrain(); TravelTo(windmillArea); sleep(Calculations.random(1000,2000)); while (getGameObjects().closest("Large Door").hasAction("Open")) { ClosestSpecifiedGameObjectInteractConditional("Large Door", "Open", "Open", true); } //TravelTo(flourMill); ClimbClosestLadder(2,true); GameObject hopper = getGameObjects().closest("Hopper"); if (hopper != null) { getInventory().get("Grain").useOn(hopper); log("Put grain in hopper"); } sleep(Calculations.random(4000,5000)); ClosestSpecifiedGameObjectInteract("Hopper controls", "Operate"); sleep(Calculations.random(4000,5000)); ClimbClosestLadder(2,false); while (!getInventory().contains("Pot of flour") && getGameObjects().closest("Flour bin").hasAction("Empty")) { ClosestSpecifiedGameObjectInteract("Flour bin", "Empty"); } sleep(Rand.nextInt(600) + 1000); } } log("We got flour"); return true; } public boolean CompleteCooksAssistant() { TravelTo(cookArea); getNpcs().closest(COOK).interact("Talk-to"); for (int i = 0; i < 9; i++) { getDialogues().continueDialogue(); sleep(600+Rand.nextInt(600)); } return true; } public void GetGroundItemIfNeeded(String itemToGet) { while (!getInventory().contains(itemToGet)) { GroundItem item = getGroundItems().closest(itemToGet); if (item != null) { item.interact("Take"); //this sleepwhile could be broken by something interupting the grabbing action //for instance if the item is out of reach it wont try again to grab it //found here: https://dreambot.org/forums/index.php?/topic/7671-how-to-correctly-wait-until-actions-have-happend/ sleepWhile( () -> !getInventory().contains(itemToGet), Calculations.random(35000, 40000)); } } } public void TravelTo(Area destination) { //clicks really frequently when close to location //think i fixed this by changing this //getWalking().walk(destination.getCenter()); from getRandom() //https://dreambot.org/forums/index.php?/topic/4512-walking-a-path-with-doors/ /* while (!destination.contains(getLocalPlayer())) { getWalking().walk(destination.getCenter()); sleepUntil(() -> getWalking().getDestination().distance() < Calculations.random(5, 7) , Calculations.random(3400, 4250)); sleep(Calculations.random(300, 600)); sleepUntil( () -> !getLocalPlayer().isMoving() || getLocalPlayer().distance( getClient().getDestination()) < Calculations.random( 7, 12), Calculations.random(5000, 6666)); } */ //Walking algorithm modified from Before's Cooks Assistant quest bot //issues: since this will sleep until the user has stopped moving + some random time there is a lot of standing around //however it does not have the issue of spam clicking once you get close to the destination while (!destination.contains(getLocalPlayer()) && !destination.contains(getWalking().getDestination())) { getWalking().walk(destination.getRandomTile()); //sleep(2000+Rand.nextInt(1000)); sleepUntil(() -> getLocalPlayer().isStandingStill(), Rand.nextInt(6000)); } } public boolean ClimbClosestLadder(int floors, boolean isUp) { //add a z change counter and return true only if zchange == floors String directionToClimb = ""; if (isUp == true) directionToClimb = "Climb-up"; else directionToClimb = "Climb-down"; for (int i = 0; i < floors; i++) { int zStart = getLocalPlayer().getZ(); GameObject ladder = getGameObjects().closest("Ladder"); if (ladder != null) { int attempts = 0; while (zStart == getLocalPlayer().getZ() /*&& !getLocalPlayer().isInCombat()*/ && attempts < 10) { attempts++; ladder.interact(directionToClimb); sleepUntil(() -> getLocalPlayer().isStandingStill(), Rand.nextInt(6000)); } } } return true; } public boolean ClosestSpecifiedGameObjectInteract(String gameObjectName, String interactOption) { //I feel like a sleep for until is not animating would be sufficeint but if that doesnt work i could do a sleep based on how far the player is from the game object GameObject closestSpecifiedGameObject = getGameObjects().closest(gameObjectName); if (closestSpecifiedGameObject != null) { closestSpecifiedGameObject.interact(interactOption); //sleepUntil(() -> getLocalPlayer().isStandingStill(), Rand.nextInt(6000)); sleep(Calculations.random(2000,3000)); return true; } else return false; } public boolean ClosestSpecifiedGameObjectInteractConditional(String gameObjectName, String interactOption, String interactConditionalOption, boolean hasOption) { GameObject closestSpecifiedGameObject = getGameObjects().closest(gameObjectName); if (closestSpecifiedGameObject != null) { if (hasOption == true) { if (closestSpecifiedGameObject.hasAction(interactConditionalOption)) { closestSpecifiedGameObject.interact(interactOption); sleepUntil(() -> getLocalPlayer().isStandingStill(), Rand.nextInt(6000)); return true; } } else { if (!closestSpecifiedGameObject.hasAction(interactConditionalOption)) { closestSpecifiedGameObject.interact(interactOption); sleepUntil(() -> getLocalPlayer().isStandingStill(), Rand.nextInt(6000)); return true; } } } return false; } @Override public void onStart() { getTabs().openWithMouse(Tab.QUEST); if (getQuests().isFinished(Quest.COOKS_ASSISTANT)) { log("Quest is already completed"); stop(); } } @Override public int onLoop() { log("Starting Cook's Assistant..."); StartCooksAssistant(); log("Getting pot..."); GetPot(); log("Getting bucket..."); GetBucket(); log("Getting egg..."); GetEgg(); log("Getting milk..."); GetMilk(); log("Getting flour..."); GetFlour(); log("Finishing Quest..."); CompleteCooksAssistant(); log("Terminating Script"); stop(); return 0; } }
×