Skip to content

Commit 3b46e64

Browse files
committed
Added Make Antibans
Tested a few hundred times and everything is working well.
1 parent 3853a82 commit 3b46e64

File tree

2 files changed

+120
-11
lines changed

2 files changed

+120
-11
lines changed

osrs/antiban/antibantasks.simba

Lines changed: 91 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,95 @@ procedure TAntiban.HoverMakeItem();
162162
var
163163
boxes: TBoxArray;
164164
begin
165-
if not Bank.IsOpen() then Exit;
166-
WriteLn GetDebugLn('Antiban', 'Hovering a random make item button');
165+
if not Make.IsOpen() then Exit;
166+
WriteLn GetDebugLn('Antiban', 'Hovering a random make item');
167167
boxes := Make.GetItemBoxes();
168+
if boxes = [] then Exit;
169+
Mouse.Move(boxes.Random());
170+
end;
171+
172+
procedure TAntiban.HoverMakeQuantity();
173+
var
174+
boxes: TBoxArray;
175+
begin
176+
if not Make.IsOpen() then Exit;
177+
if not Make.ClearQuantityHint() then Exit;
178+
WriteLn GetDebugLn('Antiban', 'Hovering a random make quantity button');
179+
boxes := Make.GetQuantityBoxes();
180+
if boxes = [] then Exit;
168181
Mouse.Move(boxes.Random());
182+
Biometrics.Sleep(500, 2000, ERandomDir.LEFT);
183+
end;
184+
185+
procedure TAntiban.ReadMakeItemHint();
186+
var
187+
boxes: TBoxArray;
188+
begin
189+
if not Make.IsOpen() then Exit;
190+
WriteLn GetDebugLn('Antiban', 'Reading a random make item hint');
191+
boxes := Make.GetItemBoxes();
192+
if boxes = [] then Exit;
193+
Mouse.Move(boxes.Random());
194+
if Make.WaitHint(2000) then
195+
begin
196+
Biometrics.Sleep(1000, 3000, ERandomDir.LEFT);
197+
Make.CloseHint();
198+
end;
199+
end;
200+
201+
procedure TAntiban.ToggleMakeQuantity();
202+
var
203+
randomBtn: TRSMakeQuantityButton;
204+
quantityBtns: array of TRSMakeQuantityButton;
205+
currentBtn, customQuantity, i: Integer;
206+
begin
207+
if not Make.IsOpen() then Exit;
208+
if not Make.ClearQuantityHint() then Exit;
209+
WriteLn GetDebugLn('Antiban', 'Toggling make quantity buttons');
210+
211+
quantityBtns := Make.FindQuantityButtons;
212+
if quantityBtns = [] then Exit;
213+
currentBtn := Make.GetCurrentQuantity();
214+
randomBtn := quantityBtns[Random(Length(quantityBtns))];
215+
216+
if randomBtn.UpText = 'Other' then
217+
begin
218+
for i := 0 to High(quantityBtns) do
219+
if (quantityBtns[i].Quantity = ERSItemQuantity.CUSTOM)
220+
and (quantityBtns[i].UpText <> 'Other') then
221+
begin
222+
customQuantity := StrToInt(quantityBtns[i].UpText);
223+
end;
224+
225+
Make.SetQuantity(Random(1, 27));
226+
Biometrics.Sleep(1000, 3000, ERandomDir.LEFT);
227+
228+
if customQuantity > 0 then
229+
begin
230+
Make.SetQuantity(customQuantity);
231+
Biometrics.Sleep(1000, 3000, ERandomDir.LEFT);
232+
end;
233+
end
234+
else
235+
begin
236+
// Just click the random button
237+
randomBtn.Button.Enable();
238+
Biometrics.Sleep(1000, 3000, ERandomDir.LEFT);
239+
end;
240+
241+
// Restore original
242+
if Make.IsOpen() then
243+
Make.SetQuantity(currentBtn);
244+
end;
245+
246+
procedure TAntiban.RandomMakeTask();
247+
begin
248+
case Random(0, 10) of
249+
0..3: Self.HoverMakeItem();
250+
4..6: Self.HoverMakeQuantity();
251+
7..8: Self.ReadMakeItemHint();
252+
9..10: Self.ToggleMakeQuantity();
253+
end;
169254
end;
170255

171256
//Chatbox antiban
@@ -893,6 +978,10 @@ const
893978
['HoverSkills', @Antiban.HoverSkills],
894979
['OpenSkills', @Antiban.OpenSkills],
895980
['HoverMakeItem', @Antiban.HoverMakeItem],
981+
['HoverMakeQuantity', @Antiban.HoverMakeQuantity],
982+
['ReadMakeItemHint', @Antiban.ReadMakeItemHint],
983+
['ToggleMakeQuantity', @Antiban.ToggleMakeQuantity],
984+
['RandomMakeTask', @Antiban.RandomMakeTask],
896985
['ChatScrolling', @Antiban.ChatScrolling],
897986
['RandomChatTab', @Antiban.RandomChatTab],
898987
['ToggleChatTab', @Antiban.ToggleChatTab],

osrs/interfaces/chat/make.simba

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,33 @@ begin
408408
Result := SleepUntil(not Self.HasHint(), RandomMode(100, 50, 1500), 600);
409409
end;
410410

411+
(*
412+
## Make.ClearQuantityHint
413+
```pascal
414+
function TRSMake.ClearQuantityHint(): Boolean;
415+
```
416+
Checks if a hint tooltip is covering the quantity buttons and closes it if so.
417+
Returns True if the quantity buttons are accessible (no hint, or hint was closed).
418+
Example:
419+
```pascal
420+
if not Make.ClearQuantityHint() then
421+
WriteLn('Failed to clear hint covering quantity buttons');
422+
```
423+
*)
424+
function TRSMake.ClearQuantityHint(): Boolean;
425+
var
426+
hintPt: TPoint;
427+
begin
428+
if not Self.HasHint() then
429+
Exit(True);
430+
431+
hintPt := Self.GetHintBox().TopRight;
432+
if (hintPt.Y > Self.QuantityButtonBoxes[5].Y2) or (hintPt.X < Self.QuantityButtonBoxes[5].X1) then
433+
Exit(True);
434+
435+
Result := Self.CloseHint();
436+
end;
437+
411438
(*
412439
## Make.QuantityButtons
413440
The quantity buttons are dynamic there can be anywhere from 1 to 6 available.
@@ -454,19 +481,12 @@ end;
454481
*)
455482
function TRSMake.FindQuantityButton(amount: Integer): TRSMakeQuantityButton;
456483
var
457-
hintPt: TPoint;
458484
idx: Integer;
459485
quantity: ERSItemQuantity;
460486
quantitybtns: array of TRSMakeQuantityButton;
461487
begin
462-
if Self.HasHint() then
463-
begin
464-
hintPt := Self.GetHintBox().TopRight;
465-
if (hintPt.Y <= Self.QuantityButtonBoxes[5].Y2) and (hintPt.X >= Self.QuantityButtonBoxes[5].X1) then
466-
467-
if not Self.CloseHint() then
468-
raise GetDebugLn('Make', 'Failed to close the tooltip which is covering the quanitty buttons');
469-
end;
488+
if not Self.ClearQuantityHint() then
489+
raise GetDebugLn('Make', 'Failed to close the tooltip which is covering the quantity buttons');
470490

471491
quantitybtns := Self.FindQuantityButtons();
472492
quantity := ERSItemQuantity.Integer2Quantity(amount);

0 commit comments

Comments
 (0)