10
10
import org .osbot .rs07 .script .MethodProvider ;
11
11
import utils .CachedWidget ;
12
12
import utils .Sleep ;
13
+ import utils .WidgetActionFilter ;
13
14
14
15
import java .util .Arrays ;
15
16
import java .util .Collections ;
16
17
import java .util .Random ;
17
- import java .util .concurrent .ThreadLocalRandom ;
18
18
import java .util .stream .Collectors ;
19
19
20
20
public final class RuneScapeGuideSection extends TutorialSection {
21
-
22
-
23
21
private final CachedWidget nameAcceptedWidget = new CachedWidget (w -> w .getMessage ().contains ("Great!" ));
24
22
private final CachedWidget nameRejectedWidget = new CachedWidget (w -> w .getMessage ().contains ("Sorry" ));
25
23
24
+ private final CachedWidget suggestedNameWidget = new CachedWidget (new WidgetActionFilter ("Set name" ));
25
+
26
26
private final CachedWidget nameLookupWidget = new CachedWidget (w -> w .getMessage ().contains ("Look up name" ));
27
27
private final CachedWidget nameInputWidget = new CachedWidget (w -> w .getMessage ().contains ("What name would you like to check" ));
28
28
private final CachedWidget nameSetWidget = new CachedWidget ("Set name" );
29
- private final CachedWidget nameScreenDetectionWidget = new CachedWidget ("Choose display name" );
29
+ private final CachedWidget nameWindowWidget = new CachedWidget ("Choose display name" );
30
30
31
31
private final CachedWidget creationScreenWidget = new CachedWidget ("Head" );
32
32
private final CachedWidget experienceWidget = new CachedWidget ("What's your experience with Old School Runescape?" );
@@ -47,7 +47,7 @@ public final void onLoop() throws InterruptedException {
47
47
case 0 :
48
48
case 1 :
49
49
case 2 :
50
- if (nameScreenDetectionWidget . get ( getWidgets ()). isPresent ()) {
50
+ if (isNameScreenVisible ()) {
51
51
setDisplayName ();
52
52
} else if (isCreationScreenVisible ()) {
53
53
createRandomCharacter ();
@@ -87,28 +87,46 @@ private void setDisplayName() {
87
87
if (nameAcceptedWidget .get (getWidgets ()).isPresent ()) {
88
88
nameSetWidget .get (getWidgets ()).ifPresent (rs2Widget -> {
89
89
if (rs2Widget .interact ()) {
90
- Sleep .sleepUntil (() -> !nameScreenDetectionWidget .get (getWidgets ()).isPresent (), 8000 , 600 );
90
+ Sleep .sleepUntil (() -> !nameWindowWidget .get (getWidgets ()).isPresent (), 8000 , 600 );
91
91
}
92
92
});
93
+ } else if (nameRejectedWidget .get (getWidgets ()).isPresent ()) {
94
+
95
+ RS2Widget suggestedWidget = suggestedNameWidget .get (getWidgets ()).get ();
96
+
97
+ int rootID = suggestedWidget .getRootId ();
98
+ int secondLevelID = suggestedWidget .getSecondLevelId ();
99
+ RS2Widget nameWidget = getWidgets ().get (rootID , secondLevelID + random (0 , 2 ));
100
+
101
+ if (nameWidget .interact ()) {
102
+ Sleep .sleepUntil (() -> nameAcceptedWidget .get (getWidgets ()).isPresent (), 12000 , 600 );
103
+
104
+ }
105
+
93
106
} else if (nameInputWidget .get (getWidgets ()).isPresent ()
94
107
&& nameInputWidget .get (getWidgets ()).get ().isVisible ()
95
- && getKeyboard ().typeString (generateRandomString (7 , 12 ), true )) {
108
+ && getKeyboard ().typeString (generateRandomString (4 ), true )) {
96
109
97
110
final int configValue = getConfigs ().get (1042 );
98
111
99
- Sleep .sleepUntil (() -> getConfigs ().get (1042 ) != configValue , 8000 , 600 );
112
+ // sending request sleep
113
+ Sleep .sleepUntil (() -> getConfigs ().get (1042 ) != configValue , 12000 , 600 );
114
+
115
+ //getting result sleep
100
116
Sleep .sleepUntil (() -> getConfigs ().get (1042 ) == configValue || nameAcceptedWidget .get (getWidgets ()).isPresent (), 8000 , 600 );
117
+
101
118
} else if (nameLookupWidget .get (getWidgets ()).isPresent ()
102
119
&& nameLookupWidget .get (getWidgets ()).get ().interact ()) {
103
120
Sleep .sleepUntil (() -> nameInputWidget .get (getWidgets ()).isPresent () && nameInputWidget .get (getWidgets ()).get ().isVisible (), 8000 , 600 );
104
121
}
122
+
105
123
}
106
124
107
- private String generateRandomString (int min , int maxLength ) {
125
+ private String generateRandomString (int maxLength ) {
108
126
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
109
127
+ "abcdefghijklmnopqrstuvwxyz"
110
128
+ "0123456789" ;
111
- return ThreadLocalRandom . current ().ints (ThreadLocalRandom . current ().nextInt (min , maxLength + 1 ) , 0 , chars .length ())
129
+ return new Random ().ints (new Random ().nextInt (maxLength ) + 1 , 0 , chars .length ())
112
130
.mapToObj (i -> "" + chars .charAt (i ))
113
131
.collect (Collectors .joining ());
114
132
}
@@ -117,6 +135,10 @@ private boolean isCreationScreenVisible() {
117
135
return creationScreenWidget .get (getWidgets ()).filter (RS2Widget ::isVisible ).isPresent ();
118
136
}
119
137
138
+ private boolean isNameScreenVisible () {
139
+ return nameWindowWidget .get (getWidgets ()).isPresent ();
140
+ }
141
+
120
142
private void createRandomCharacter () throws InterruptedException {
121
143
if (new Random ().nextInt (2 ) == 1 ) {
122
144
getWidgets ().getWidgetContainingText ("Female" ).interact ();
0 commit comments