Jump to content

bthebrave

Members
  • Posts

    8
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by bthebrave

  1. bthebrave

    NMZ Flicker

    I suggest you change the code from if (skills.getDynamic(Skill.HITPOINTS) == 51 && !prayer .isActivated(PrayerButton.RAPID_HEAL) && sipAbsortption == 0) to if (skills.getDynamic(Skill.HITPOINTS) >= 51 && !prayer .isActivated(PrayerButton.RAPID_HEAL) && sipAbsortption == 0) This ensures that if (for whatever, unforeseeable reason), you somehow get to 2+hp, the script will still drink overloads and absorbs EDIT: I leveled up in hitpoints, and it brought me to 2 hp, but the script kept running because of the change I made
  2. The getPrice(), getAverageBuyOffer(), and getAverageSellOffer() methods are incorrect. String[] data will always be length 5, not length 3, so those methods will always return 0. For a simple fix, you may be able to change it to data.length==5 or just delete that parameter overall. Also, it's fairly simple to split each index of the array by the ":" because the second half will be the price you want and the first half will be the description. For example, if you go to the link for iron ore (https://api.rsbuddy.com/grandExchange?a=guidePrice&i=440), you can see that the stream is: {"overall":54,"buying":54,"buyingQuantity":125855,"selling":53,"sellingQuantity":103603} Split up in the getData() method, It looks like this String[] data = { ""overall":54", ""buying":54", ""buyingQuantity":125855", ""selling":53", ""sellingQuantity":103603" } If you split by colon, data[0].split(":") returns the array {""overall"", 54}. then, returning the parse of index 1 gives you 54. Furthermore, the getter methods would return the wrong values, because data[2] is actually the buying quantity, not the selling price. It is important to change the return statement of getAverageSellOffer() to use data[3]. Here are the changes I made: public static int getPrice(int itemID) { String[] data = getData(itemID); if (data != null && data.length == 5) { return Integer.parseInt(data[0].split(":")[1]); } return 0; } public static int getAverageBuyOffer(int itemID) { String[] data = getData(itemID); if (data != null && data.length == 5) { return Integer.parseInt(data[1].split(":")[1]); } return 0; } public static int getAverageSellOffer(int itemID) { String[] data = getData(itemID); if (data != null && data.length == 5) { return Integer.parseInt(data[3].split(":")[1]); } return 0; }
  3. I'm trying to make a simple blast furnace script for myself and friends to use, i.e. no paint & bare bones code. When it talks to the foreman, I just hard-coded a simple 3-second sleep after every command. Is there a method in the API that can tell when the next dialogue has not yet appeared and it's still waiting for the next one? My current code is like so: dialogues.clickContinue(); sleep(3000); dialogues.selectOption("What?"); sleep(3000); dialogues.clickContinue(); sleep(3000); dialogues.clickContinue(); sleep(3000); dialogues.selectOption("Can I use the furnace to smelt ore?"); sleep(3000); I would prefer it to be like this: dialogues.clickContinue(); while(/*is waiting for the next prompt*/){ sleep(250); } dialogues.selectOption("What?"); while(/*is waiting for the next prompt*/){ sleep(250); } dialogues.clickContinue(); while(/*is waiting for the next prompt*/){ sleep(250); } dialogues.clickContinue(); while(/*is waiting for the next prompt*/){ sleep(250); } dialogues.selectOption("Can I use the furnace to smelt ore?"); while(/*is waiting for the next prompt*/){ sleep(250); } Thanks, BTheBrave
  4. Wow. I made the changes so the distance between tiles was shorter, and it worked. That gave me so much pain... Mr. Guru, do you have any advice for the GroundItem issue?
  5. I'm working on my first script, a wine of zamorak grabber. Whenever the wine spawns, it calls this block of code: GroundItem wine = groundItems.closest("Wine of zamorak"); if(wine != null){ magic.castSpellOnEntity(Spells.NormalSpells.TELEKINETIC_GRAB, wine); sleep(random(400,600)); } Whenever a wine spawns, however, it first tries to click underneath the table and then clicks the wine in the second run-through. How can I fix this? I also have trouble when trying to walk from the bank to the temple. Whenever the program decides that the user is not in the temple and does not have a full inventory, it calls: Position[] pathToWine = { new Position(2954,3378,0), new Position(2965,3389,0), new Position(2962,3404,0), new Position(2955,3417,0), new Position(2949,3431,0), new Position(2947,3447,0), new Position(2945,3461,0), new Position(2942,3477,0), new Position(2940,3493,0), new Position(2941,3508,0), new Position(2931,3515,0) }; localWalker.walkPath(pathToWine); The walker, however, only manages to get to one of the positions then clicks at its feet once before stopping. What am I doing wrong? Thank you, BTheBrave
×
×
  • Create New...