Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 32 additions & 10 deletions src/sections/RuneScapeGuideSection.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,23 @@
import org.osbot.rs07.script.MethodProvider;
import utils.CachedWidget;
import utils.Sleep;
import utils.WidgetActionFilter;

import java.util.Arrays;
import java.util.Collections;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;

public final class RuneScapeGuideSection extends TutorialSection {


private final CachedWidget nameAcceptedWidget = new CachedWidget(w -> w.getMessage().contains("Great!"));
private final CachedWidget nameRejectedWidget = new CachedWidget(w -> w.getMessage().contains("Sorry"));

private final CachedWidget suggestedNameWidget = new CachedWidget(new WidgetActionFilter("Set name"));

private final CachedWidget nameLookupWidget = new CachedWidget(w -> w.getMessage().contains("Look up name"));
private final CachedWidget nameInputWidget = new CachedWidget(w -> w.getMessage().contains("What name would you like to check"));
private final CachedWidget nameSetWidget = new CachedWidget("Set name");
private final CachedWidget nameScreenDetectionWidget = new CachedWidget("Choose display name");
private final CachedWidget nameWindowWidget = new CachedWidget("Choose display name");

private final CachedWidget creationScreenWidget = new CachedWidget("Head");
private final CachedWidget experienceWidget = new CachedWidget("What's your experience with Old School Runescape?");
Expand All @@ -47,7 +47,7 @@ public final void onLoop() throws InterruptedException {
case 0:
case 1:
case 2:
if (nameScreenDetectionWidget.get(getWidgets()).isPresent()) {
if (isNameScreenVisible()) {
setDisplayName();
} else if (isCreationScreenVisible()) {
createRandomCharacter();
Expand Down Expand Up @@ -87,28 +87,46 @@ private void setDisplayName() {
if (nameAcceptedWidget.get(getWidgets()).isPresent()) {
nameSetWidget.get(getWidgets()).ifPresent(rs2Widget -> {
if (rs2Widget.interact()) {
Sleep.sleepUntil(() -> !nameScreenDetectionWidget.get(getWidgets()).isPresent(), 8000, 600);
Sleep.sleepUntil(() -> !nameWindowWidget.get(getWidgets()).isPresent(), 8000, 600);
}
});
} else if (nameRejectedWidget.get(getWidgets()).isPresent()) {

RS2Widget suggestedWidget = suggestedNameWidget.get(getWidgets()).get();

int rootID = suggestedWidget.getRootId();
int secondLevelID = suggestedWidget.getSecondLevelId();
RS2Widget nameWidget = getWidgets().get(rootID, secondLevelID + random(0, 2));

if (nameWidget.interact()) {
Sleep.sleepUntil(() -> nameAcceptedWidget.get(getWidgets()).isPresent(), 12000, 600);

}

} else if (nameInputWidget.get(getWidgets()).isPresent()
&& nameInputWidget.get(getWidgets()).get().isVisible()
&& getKeyboard().typeString(generateRandomString(7, 12), true)) {
&& getKeyboard().typeString(generateRandomString(4), true)) {

final int configValue = getConfigs().get(1042);

Sleep.sleepUntil(() -> getConfigs().get(1042) != configValue, 8000, 600);
// sending request sleep
Sleep.sleepUntil(() -> getConfigs().get(1042) != configValue, 12000, 600);

//getting result sleep
Sleep.sleepUntil(() -> getConfigs().get(1042) == configValue || nameAcceptedWidget.get(getWidgets()).isPresent(), 8000, 600);

} else if (nameLookupWidget.get(getWidgets()).isPresent()
&& nameLookupWidget.get(getWidgets()).get().interact()) {
Sleep.sleepUntil(() -> nameInputWidget.get(getWidgets()).isPresent() && nameInputWidget.get(getWidgets()).get().isVisible(), 8000, 600);
}

}

private String generateRandomString(int min, int maxLength) {
private String generateRandomString(int maxLength) {
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789";
return ThreadLocalRandom.current().ints(ThreadLocalRandom.current().nextInt(min, maxLength + 1), 0, chars.length())
return new Random().ints(new Random().nextInt(maxLength) + 1, 0, chars.length())
.mapToObj(i -> "" + chars.charAt(i))
.collect(Collectors.joining());
}
Expand All @@ -117,6 +135,10 @@ private boolean isCreationScreenVisible() {
return creationScreenWidget.get(getWidgets()).filter(RS2Widget::isVisible).isPresent();
}

private boolean isNameScreenVisible() {
return nameWindowWidget.get(getWidgets()).isPresent();
}

private void createRandomCharacter() throws InterruptedException {
if (new Random().nextInt(2) == 1) {
getWidgets().getWidgetContainingText("Female").interact();
Expand Down