Skip to content

Commit dfd05ba

Browse files
add sliderbreak detection
1 parent 8714804 commit dfd05ba

1 file changed

Lines changed: 60 additions & 36 deletions

File tree

Program.cs

Lines changed: 60 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)