@@ -43,7 +43,6 @@ void HandleDeviceRemoved(object aObj, DeviceRemovedEventArgs aArgs) {
4343 await client . ConnectAsync ( new ButtplugWebsocketConnector ( new Uri ( "ws://127.0.0.1:12345" ) ) ) ;
4444
4545
46-
4746 // Here's the scanning part. Pretty simple, just scan until the user
4847 // hits a button. Any time a new device is found, print it so the
4948 // user knows we found it.
@@ -70,16 +69,12 @@ async Task ControlDevice() {
7069 // (which is why we can't just use an array index).
7170
7271 // Of course, if we don't have any devices yet, that's not gonna work.
73- while ( true )
74- {
75- if ( ! client . Devices . Any ( ) )
76- {
72+ while ( true ) {
73+ if ( ! client . Devices . Any ( ) ) {
7774 // Scan for devices before we get to the main menu.
7875 await ScanForDevices ( ) ;
7976 Console . WriteLine ( "No devices available. Please scan for a device." ) ;
80- }
81- else
82- {
77+ } else {
8378 break ;
8479 }
8580 await Task . Delay ( 10 ) ;
@@ -93,18 +88,15 @@ async Task ControlDevice() {
9388
9489 Console . WriteLine ( "Choose a device: " ) ;
9590 uint deviceChoice ;
96- while ( true )
97- {
91+ while ( true ) {
9892 var userinput = Console . ReadLine ( ) ;
9993 var validchoice = uint . TryParse ( userinput , out deviceChoice ) ;
100- if ( ! validchoice || ! options . Contains ( deviceChoice ) )
101- {
94+ if ( ! validchoice || ! options . Contains ( deviceChoice ) ) {
10295 Console . WriteLine ( "Invalid choice, Try again:" ) ;
103- }
104- else
105- {
96+ } else {
10697 var selectedDevice = client . Devices . First ( d => d . Index == deviceChoice ) ;
10798 Console . WriteLine ( $ "Device { selectedDevice . Name } selected") ;
99+
108100 break ;
109101 }
110102 await Task . Delay ( 10 ) ;
@@ -115,14 +107,17 @@ async Task ControlDevice() {
115107
116108 ushort previousMisscount = 0 ;
117109 ushort misscount = 0 ;
110+ ushort maxCombo = 0 ;
111+ ushort previousCombo = 0 ;
112+ ushort Combo = 0 ;
113+ ushort sliderBreak = 0 ;
114+ ushort previousSB = 0 ;
118115 var processList = Process . GetProcessesByName ( "osu!" ) ;
119116 var baseAddresses = new OsuBaseAddresses ( ) ;
120117 StructuredOsuMemoryReader . GetInstance ( new ProcessTargetOptions ( "osu!" ) ) ;
121118 var badGirlWarning = false ;
122- while ( true )
123- {
124- if ( processList . Length > 0 && ! processList [ 0 ] . HasExited )
125- {
119+ while ( true ) {
120+ if ( processList . Length > 0 && ! processList [ 0 ] . HasExited ) {
126121 //i really wanted to keep this in, but this would just keep printing forever because it's inside the while loop
127122 //*might* move it outside so i can still have it print to console
128123 //Console.WriteLine("osu's open. good girl :3");
@@ -133,37 +128,67 @@ async Task ControlDevice() {
133128 osuReader . TryRead ( baseAddresses . BanchoUser ) ;
134129 osuReader . TryRead ( baseAddresses . Player ) ;
135130 misscount = baseAddresses . Player . HitMiss ;
131+ Combo = baseAddresses . Player . Combo ;
132+ maxCombo = baseAddresses . Player . MaxCombo ;
136133
137- if ( misscount < previousMisscount )
138- {
134+ if ( misscount < previousMisscount ) {
139135 // Reset detected (e.g. player retried song)
140136 previousMisscount = 0 ;
141137 Console . WriteLine ( $ "misscount reset { misscount } ") ;
142138 }
143139
144- if ( previousMisscount < misscount )
145- {
140+ if ( previousMisscount < misscount ) {
146141 Console . WriteLine ( $ "misscount { misscount } ") ;
147142 Console . WriteLine ( $ "previous misscount { previousMisscount } ") ;
148- try
149- {
143+ try {
150144 await device . VibrateAsync ( 0.5 ) ;
151145 await Task . Delay ( 1000 ) ;
152146 await device . VibrateAsync ( 0 ) ;
153147 }
154- catch ( Exception e )
155- {
148+ catch ( Exception e ) {
156149 Console . WriteLine ( $ "Problem vibrating: { e } ") ;
157150 }
158151 previousMisscount = misscount ;
159152 }
160- }
161- else
162- {
163- try
164- {
165- if ( ! badGirlWarning )
166- {
153+ if ( previousCombo < Combo ) {
154+ previousCombo = Combo ;
155+ }
156+ if ( previousCombo > maxCombo ) {
157+ previousCombo = 0 ;
158+ }
159+ if ( previousCombo > Combo && misscount == previousMisscount ) {
160+ previousCombo = Combo ;
161+ sliderBreak += 1 ;
162+ Console . WriteLine ( $ "sliderbreak count:{ sliderBreak } ") ;
163+ }
164+ if ( previousSB < sliderBreak ) {
165+ try {
166+ await device . VibrateAsync ( 0.5 ) ;
167+ await Task . Delay ( 1000 ) ;
168+ await device . VibrateAsync ( 0 ) ;
169+ }
170+ catch ( Exception e ) {
171+ Console . WriteLine ( $ "Problem vibrating: { e } ") ;
172+ }
173+ previousSB = sliderBreak ;
174+ }
175+ if ( sliderBreak < previousSB ) {
176+ previousSB = 0 ;
177+ }
178+ //128 is the number for relax
179+ /*
180+ if (baseAddresses.GeneralData.Mods.Equals(128) && baseAddresses.GeneralData.OsuStatus == OsuMemoryStatus.Playing ) {
181+ Console.WriteLine("someone's scared :3");
182+ }
183+ */
184+
185+ // if (baseAddresses.GeneralData.Mods.Equals(1) && baseAddresses.GeneralData.OsuStatus == OsuMemoryStatus.Playing) {
186+ // Console.WriteLine("nice try :3");
187+ //
188+ // }
189+ } else {
190+ try {
191+ if ( ! badGirlWarning ) {
167192 Console . WriteLine ( "osu is not open. bad girl" ) ;
168193 await device . VibrateAsync ( 0.5 ) ;
169194 await Task . Delay ( 5000 ) ;
@@ -175,8 +200,7 @@ async Task ControlDevice() {
175200 baseAddresses = new OsuBaseAddresses ( ) ;
176201 StructuredOsuMemoryReader . GetInstance ( new ProcessTargetOptions ( "osu!" ) ) ;
177202 }
178- catch ( Exception e )
179- {
203+ catch ( Exception e ) {
180204 Console . WriteLine ( $ "Problem vibrating: { e } ") ;
181205 }
182206 }
0 commit comments