Jump to content

Explv

Scripter II
  • Posts

    2313
  • Joined

  • Last visited

  • Days Won

    6
  • Feedback

    100%

Everything posted by Explv

  1. If I recall correctly, you do not need to disable randoms. You can override the break manager in isolation: getBot().getRandomExecutor().overrideOSBotRandom(customBreakManager) (Docs - https://osbot.org/api/org/osbot/rs07/event/RandomExecutor.html#overrideOSBotRandom-org.osbot.rs07.script.RandomSolver- ) Where your custom break manager might look something like: https://github.com/Explv/Explvs-AIO/blob/master/src/main/java/tasks/break_task/CustomBreakManager.java There is no way to get passwords through the API, as it would be a security risk. You have to consider local scripts as well as SDN scripts.
  2. Read section 13 of this tutorial to learn about configs Funnily enough, it actually covers attack style as the example. Screenshots are a bit out of date and the OSBot UI has changed, but there is still a config debug view in the settings. TLDR: Config 43.
  3. Fixed in latest version (v3.2.7). Available on GitHub now, or on SDN whenever a refresh happens.
  4. Just pushed an update to the SDN & GitHub SDN will be available whenever it's refreshed GitHub working now Will look at other reported issues and fix now too.
  5. I would say it's more likely to be a scam than not. There's barely any information about it online, aside from their website (which makes some ridiculous claims)
  6. You're either missing the onLoop function which is required, or it has the wrong signature. See section 2 of the following: https://osbot.org/forum/topic/115124-explvs-scripting-101/
  7. Your Test class is importing a log function from a package that is blocked by OSBot's permissions. That's not the log function you want anyway, you want the one from the OSBot API. Remove that import and either pass an instance of MethodProvider to the constructor of your class, or have your class extend MethodProvider and call exchangeContext. See section 5 in this tutorial:
  8. "the problem is that I use: IF IF IF, ELSE ELSE ELSE but need to use if else, else if." At the risk of sounding rude, that's pretty nonsensical. I would highly recommend following some Java tutorials until you have a basic understanding of programming and logical constructs. You'll find that it's much faster to learn that way rather than waiting for replies on here. The best way to learn programming in my opinion, is to follow some tutorials, make things, Google when you get stuck, fix things yourself. Perhaps try writing out some pseudocode, so you can get a clearer idea how this should be structured. For example: If my inventory is full: If I am not in the bank: Then walk to the bank Else if the bank is not open Then open the bank Else if.... Etc. Else if I am not at the stalls: Then walk to the stalls Etc.
  9. getInventory().contains(item1, item2) Returns true if either item1 or item2 is in the inventory. getInventory().interact("Eat", item1, item2) Uses the interaction "Eat" on either item1 or item2 depending on which item it finds in the inventory first. If you want to eat a Swordfish followed by a Pizza, you need to be explicit in your logic, i.e If not eaten swordfish Then eat swordfish Else Eat pizza To track whether you have eaten a swordfish, just store a boolean value in a variable, e.g. hasEatenSwordfish, and set it to true when the "Eat" interaction on the swordfish is successful. Set it back to false when you eat the pizza
  10. The OSBot app is a swing app, so you have to embed your JavaFX content within swing. You can do so using a JFrame + JFXPanel. For example: https://docs.oracle.com/javafx/2/swing/swing-fx-interoperability.htm Or: https://stackoverflow.com/questions/40110175/how-to-run-javafx-stage-scene-in-swing-application
  11. Hello old bean Are you trying to just walk to said tile? If so you can do it with a WalkingEvent: WalkingEvent walkingEvent = new WalkingEvent(new Position(3299, 3273, 0)); walkingEvent.setMinDistanceThreshold(0); execute(walkingEvent); Could you please also elaborate on what you mean by "neither of these methods work"? Does it not hover the tile? Does it hover but not click?
  12. Remove this: final Bank bank = new Bank() You don't instantiate `Bank`, it's already instantiated for you and provided via the MethodProvider. If you are in your main Script class, you can access it using getBank() Have a read through my tutorial if you haven't already, it might help you out a bit: https://osbot.org/forum/topic/115124-explvs-scripting-101/
  13. It's a free open source piece of software. You're more than welcome to modify it to work how you want to. It closes the client when the script exits, this is to support script chaining. If you want to change it, there's nothing stopping you.
  14. You can just set a boolean flag when you enter the house. For example: public class YourScript extends Script { private boolean hasEnteredHouse; @Override public int onLoop() throws InterruptedException { if (!inHouse()) { // If we're not in the house, enter it enterHouse(); } else { // We are inside the house, so we can set hasEnteredHosue to true // so that next time we enter the house, we can use the last visit functionality hasEnteredHouse = true; } return 600; } public boolean enterHouse() { if (hasEnteredHouse) { // We have entered the house before, use the last visit functionality } else { // We have not entered the house before, use the search } } } Or alternatively, set a different flag when you see the "You haven't visited anyone this session." message. For example: public class YourScript extends Script { private boolean visitedPlayerHouse = true; @Override public int onLoop() throws InterruptedException { if (!inHouse()) { // If we're not in the house, enter it enterHouse(); } else { // We have entered the house, so we set visitedPlayerHouse to true // so that next time we go to enter a house, we know that we can use the // last visit functionality visitedPlayerHouse = true; } return 600; } public boolean enterHouse() { if (visitedPlayerHouse) { // We have entered the house before, use the last visit functionality } else { // We have not entered the house before, use the search } } @Override public void onMessage(Message message) { if (message.getType() != MessageType.GAME) { return; } // When we see this GAME message if (message.getMessage().contains("You haven't visited anyone this session.")) { // We set visitedPlayerHouse to false // So that we know to use the search functionality to enter the house next time visitedPlayerHouse = false; } } } Note I have not tested any of the above code, but it should give you an idea how to do it.
  15. Note that this is not related to switching OSBot scripts, so is not quite the same thing as what OP wants.
  16. Nice idea. You can kind of already do this yourself using a custom bash script, however it would involve restarting the whole client to load the next script.
  17. Thanks for the report, I actually just fixed this in the latest change (v3.2.5), it's already available on GitHub, but I'm guessing the SDN has not updated yet. If you mean up to date with the GitHub version, then yes pretty much. The GitHub version is sometimes maybe 1 change ahead, just because it's faster to release to GitHub than the SDN. But yes they're basically the same now, and all changes I'm pushing to GitHub are also pushed to the SDN Thanks I can also reproduce this, but I did not have time to fix it yet, issue isn't immediately obvious. An easy fix here is to make the script turn off "remember last item", but I'm not sure that's ideal. I'll take a look at it as soon as I can
  18. Add the -debug flag. Without the -debug flag the process will detach.
  19. This would be a bit cleaner, allowing for types other than just NPC, and filters other than just entity name: public <T extends Entity> Optional<T> closestToPosition(final Position position, final List<T> entities) { return entities.stream().min(Comparator.comparingInt(e -> position.distance(e.getPosition()))); } Example Usage: Position pos = new Position(1, 2, 3); Optional<NPC> rat = closestToPosition(pos, getNpcs().filter(new NameFilter<>("Rat"))); Note that `position.distance()` is the *straight line* distance, it does not take into account any obstacles. This doesn't matter in your specific use-case, but if you wanted to account for it, then you should use getMap().realDistance(). For example: public <T extends Entity> Optional<T> closestToPosition(final Position position, final List<T> entities) { return entities.stream().min(Comparator.comparingInt(e -> getMap().realDistance(position, e.getPosition()))); } Or you can support both options using: public <T extends Entity> Optional<T> closestToPosition(final Position position, final List<T> entities, final boolean realDistance) { final ToIntFunction<T> distanceFunc = (T e) -> ( realDistance ? getMap().realDistance(position, e.getPosition()) : position.distance(e.getPosition()) ); return entities.stream().min(Comparator.comparingInt(distanceFunc)); } If you want to include further filtering abilities within the helper function itself, that can also be achieved using: public <T extends Entity> Optional<T> closestToPosition(final Position position, final List<T> entities, final boolean realDistance, final Filter<T>... entityFilter) { final ToIntFunction<T> distanceFunc = (T e) -> ( realDistance ? getMap().realDistance(position, e.getPosition()) : position.distance(e.getPosition()) ); final Predicate<T> aggregatedEntityFilter = e -> Stream.of(entityFilter).allMatch(filter -> filter.match(e)); return entities.stream().filter(aggregatedEntityFilter).min(Comparator.comparingInt(distanceFunc)); } Example usage: Position pos = new Position(1, 2, 3); Optional<NPC> rat = closestToPosition(pos, getNpcs().getAll(), true, new NameFilter<>("Rat"));
  20. Tutorial Island is always a risky thing to bot, probably worse if you're doing it on a commonly used IP
  21. Thanks. Fixed in the latest GitHub version. I've also pushed all script updates to the SDN, so hopefully that version will be updated in the near future Thanks fixed these in latest GitHub version. Also pushed to the SDN, which will be available whenever that script gets rebuilt
  22. Fixed in the latest GitHub version, cheers
×
×
  • Create New...