lol_marcus
-
Posts
4 -
Joined
-
Last visited
Content Type
Profiles
Forums
Articles
Store
Posts posted by lol_marcus
-
-
Made a script that collects grain @ GE, takes it to the cooking guild and turns it into Pot of Flours (to try and make more profit). Still barely doing 20k gp p/h. Not worthwhile at all.
-
13 hours ago, Proto said:
No need to add sleeps after every action 😛 Most functions return you a boolean based on if it was successful or not.
I'd also add some more checks, for example, if you lag for a sec, you'll be missing steps and you're not confirming your functions actually succeeded or not, waiting 5 seconds between each one because it's not doing what the code is expecting etc
The lambda expression would solve the lag example. That`s why I have it wait 5 seconds. If the condition doesn't happen after 5 seconds, it should loop again, no?
Anyway, it's just something quick that I wrote up for the guy who asked for the specific script. Ran it for about an hour and it was fine. 😛
It wouldn't be something I would submit to the script repository.
-
Enjoy.
import com.epicbot.api.shared.APIContext; import com.epicbot.api.shared.GameType; import com.epicbot.api.shared.script.LoopScript; import com.epicbot.api.shared.script.ScriptManifest; import com.epicbot.api.shared.util.paint.frame.PaintFrame; import com.epicbot.api.shared.util.time.Time; import java.awt.*; @ScriptManifest(name = "Pie Sheller", gameType = GameType.OS) public class PieSheller extends LoopScript { private long startTime; @Override public boolean onStart(String... strings) { startTime = System.currentTimeMillis(); return true; } @Override protected int loop() { if (!getAPIContext().inventory().contains("Pastry dough", "Pie dish")) { bank(); } else { combine(); } return 700; } private void bank() { if (!getAPIContext().bank().isOpen()) { getAPIContext().bank().open(); Time.sleep(5_000, () -> getAPIContext().bank().isOpen()); } else if (getAPIContext().bank().isOpen()) { getAPIContext().bank().depositInventory(); Time.sleep(5_000, () -> getAPIContext().bank().isOpen()); getAPIContext().bank().withdraw(14, "Pastry dough"); Time.sleep(5_000, () -> getAPIContext().inventory().contains("Pastry dough")); getAPIContext().bank().withdraw(14, "Pie dish"); Time.sleep(5_000, () -> getAPIContext().inventory().contains("Pie dish")); getAPIContext().bank().close(); } } private void combine() { if (getAPIContext().inventory().contains("Pastry dough", "Pie dish")) { getAPIContext().inventory().selectItem("Pastry dough", "Use"); Time.sleep(5_000, () -> getAPIContext().inventory().isItemSelected()); getAPIContext().inventory().selectItem("Pie dish"); Time.sleep(5_000, () -> !getAPIContext().dialogues().isChatOpen()); getAPIContext().keyboard().sendText(" ", true); Time.sleep(30_000, () -> getAPIContext().localPlayer().isAnimating() || !getAPIContext().inventory().contains("Pastry dough", "Pie dish")); } } @Override protected void onPaint(Graphics2D g, APIContext ctx) { PaintFrame pf = new PaintFrame(); pf.setTitle("Pie Sheller Script by Marcus"); pf.addLine("Runtime: ", Time.getFormattedRuntime(startTime)); pf.draw(g, 0, 90, ctx); } }
- 1
Issue with dialogue continuation
in Software & Script Development Discussion
Posted
I can't find anything on the API to simplify NPC dialogue continuation.
Here's a snippet, which flags an error on the last line.
selectOption doesn't allow for multiple entries, I guess?