kobesmind 0 Share Posted April 19, 2021 package mainpkg; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.dialogues.Dialogues; import org.dreambot.api.methods.input.Camera; import org.dreambot.api.methods.interactive.Players; import org.dreambot.api.methods.item.GroundItems; import org.dreambot.api.methods.magic.Magic; import org.dreambot.api.methods.magic.Normal; import org.dreambot.api.methods.tabs.Tabs; import org.dreambot.api.methods.widget.Widgets; import org.dreambot.api.methods.world.Worlds; import org.dreambot.api.methods.worldhopper.WorldHopper; import org.dreambot.api.script.AbstractScript; import org.dreambot.api.script.ScriptManifest; import org.dreambot.api.script.Category; import org.dreambot.api.utilities.Timer; import org.dreambot.api.wrappers.interactive.Player; import org.dreambot.api.wrappers.items.GroundItem; import java.awt.*; @ScriptManifest(author = "Kobesmind", name = "Kobe's Wildy Natgrabber", version = 0.1, description = "Telegrabs nature runes and hops, logs out if people are nearby", category = Category.MONEYMAKING) public class main extends AbstractScript { String status = "BEGINNING SCRIPT"; enum taskState { TELEGRAB, SEARCH, IDLE, HOP } taskState currentTask = taskState.SEARCH; Player otherPlayer; GroundItem natRune1 = null; GroundItem natRune2 = null; Timer timer = new Timer(100000); public void onStart() { timer.formatTime(10000); timer.setRunTime(10000); } public void onExit() { } @Override public int onLoop() { otherPlayer = Players.closest(plr -> plr != null && !plr.equals(getLocalPlayer()) && plr.distance() > 1); if(otherPlayer != null) { status = "PLAYER NEARBY. LOGGING OUT..."; Tabs.logout(); } if(Dialogues.canContinue()) { Dialogues.spaceToContinue(); currentTask = taskState.SEARCH; } switch(getState()) { case TELEGRAB: status = "TELEGRABBING.."; if(natRune1 != null) { Magic.castSpellOn(Normal.TELEKINETIC_GRAB, natRune1); sleepUntil(() -> Magic.canCast(Normal.TELEKINETIC_GRAB), 1000000); sleep(2000); } if(natRune2 != null) { Magic.castSpellOn(Normal.TELEKINETIC_GRAB, natRune2); sleepUntil(() -> Magic.canCast(Normal.TELEKINETIC_GRAB), 1000000); sleep(2000); } currentTask = taskState.HOP; break; case SEARCH: natRune1 = GroundItems.closest(item -> item != null && item.getAmount() == 4); natRune2 = GroundItems.closest(item -> item != null && !item.equals(natRune1)); if(natRune1 != null || natRune2 != null) { status = "FOUND"; currentTask = taskState.TELEGRAB; } break; case IDLE: status = "IDLE"; sleepUntil(() -> getLocalPlayer().exists(), 10000000); currentTask = taskState.SEARCH; break; case HOP: status = "HOPPING"; WorldHopper.hopWorld(Worlds.getRandomWorld(wld -> wld != null && wld.isF2P() && !wld.isPVP() && wld.getMinimumLevel() == 0)); currentTask = taskState.IDLE; break; } return Calculations.random(500, 600); } public taskState getState() { return currentTask; } @Override public void onPaint(Graphics g) { Color gCol = new Color(180, 180, 180, 180); g.setColor(gCol); g.fillRect(Widgets.getWidgetChild(162, 0).getX(), Widgets.getWidgetChild(162, 0).getY(), Widgets.getWidgetChild(162, 0).getWidth(), Widgets.getWidgetChild(162, 0).getHeight()); g.setColor(Color.BLACK); g.drawString("Status: " + status, 10, Widgets.getWidgetChild(162, 0).getY()+20); g.drawString(timer.formatTime(), 10, Widgets.getWidgetChild(162, 0).getY()+40); } } there are two problems here: 1. after it hops worlds, the script stops working properly. 2.it wont check for players, i tried many different methods and looked on forum posts for solutions Link to comment Share on other sites More sharing options...
Fjiddi 7 Share Posted April 19, 2021 I used to use if (Players.all().size() > 1) {log("More than 1 player");} Link to comment Share on other sites More sharing options...
Fjiddi 7 Share Posted April 19, 2021 if (!getLocalPlayer().exists() || !Client.isLoggedIn()) { log("Not logged in"); return Calculations.random(3000, 6000); } also you posted in the wrong section Link to comment Share on other sites More sharing options...
flipjazz 13 Share Posted April 19, 2021 You should add a `MethodProvider.log("State: " + stateYouAreIn)` log statement to help you debug in each switch statement. This will help you figure out where the script gets stuck. For #1: If I had to guess, your code probably gets stuck here: sleepUntil(() -> getLocalPlayer().exists(), 10000000); . Maybe you can try a different condition to check, like Client.isLoggedIn(). But not completely sure, I would double check that your code doesn't get stuck in any sleepUntil. For #2: You can follow Fjiddi's advice about Players.all(). Look at the Players API for how to get the number of players around you: https://dreambot.org/javadocs/org/dreambot/api/methods/interactive/Players.html Link to comment Share on other sites More sharing options...
kobesmind 0 Author Share Posted April 19, 2021 i accidentally duped my reply, sorry, it's down below VVV Link to comment Share on other sites More sharing options...
kobesmind 0 Author Share Posted April 19, 2021 Hey! thanks for the advice regarding the player problem, it fixed it although, i still have issues with checking if the world loads i have a money making scripts that hops worlds after it does what it has to do, and checking if client is logged in, if local player exists, or other usual conditions, i use sleep(7000), but that breaks randomly, how can i fix it? if i try to use "Client.isLoggedIn()", for example, it resumes the script even if the world hasn't finished loading, i tried very many alternatives, looked at other scripts on github, and using their methods yields the same result. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.