SCAR Code:
procedure FastDropExcept(A : TIntegerArray);
var
Arr: TIntegerArray;
I, J, MS : Integer;
TP : TPoint;
begin
MS := MouseSpeed;
MouseSpeed := 25 + Random(5);
Arr := [1, 5, 9, 13, 17, 21, 25,
2, 6, 10, 14, 18, 22, 26,
3, 7, 11, 15, 19, 23, 27,
4, 8, 12, 16, 20, 24, 28];
for J := 0 to High(A) do
for I := 0 to 27 do
if (A[J] = Arr[i]) then
Arr[i] := 0;
for I := 0 to 27 do
begin
if (Arr[i] = 0) then
Continue;
if not ExistsItem(Arr[i]) then
Continue;
TP := ItemCoords(Arr[i]);
Mouse(TP.x, TP.Y, 0, 0, False);
ChooseOptionMultiEx(['rop'], True);
end;
MouseSpeed := MS;
end;
procedure FastDrop;
begin
FastDropExcept([]);
end;
USE: FastDrop; or FastDropExcept([1, 2, 3, 28]);
This function will drop your logs/ores/anything with 3 options (Use, Drop, Examine) like a human would do it.
I did some comparing and this is the result I got:
SCAR Code:
FastDrop: 27937ms
DropAll: 44438ms
For this to work as fast as possible, you should have this procedure:
SCAR Code:
function ChooseOptionMultiEx(Text: TStringArray; ClickUnder : Boolean): Boolean;
var
B: TBox;
TPA: TPointArray;
X, Y, I, C: Integer;
P: TPoint;
begin
Result := False;
GetClientDimensions(B.X2, B.Y2);
B.X1 := 0;
B.Y1 := 0;
FindColorsTolerance(TPA, 4674653, B.X1, B.Y1, B.X2, B.Y2, 0);
If Length(TPA) < 10 Then
Exit;
B.X2 := 0;
B.Y2 := 0;
P := TPA[0];
For I := 0 To High(TPA) - 1 Do
If TPA[i].X = TPA[I+1].X - 1 Then
Begin
If C > 5 Then
Begin
B.X1 := P.X;
B.Y1 := P.Y;
Break;
End Else
C := C + 1;
End
Else
Begin
P := TPA[I + 1];
C := 0;
End;
If I = Length(TPA) Then
Begin
WriteLn('Choose Option Menu Getting Failed');
Exit;
End;
InvertTPA(TPA);
C := 0;
P := TPA[0];
For I := 0 To High(TPA) - 1 Do
If TPA[i].X = TPA[I+1].X + 1 Then
Begin
If C > 5 Then
Begin
B.X2 := P.X;
B.Y2 := P.Y;
Break;
End Else
C := C + 1;
End Else
Begin
P := TPA[I + 1];
C := 0;
End;
If I = Length(TPA) Then
Begin
WriteLn('Choose Option Menu Getting Failed');
Exit;
End;
For i:=0 To High(Text) do
If FindText(X, Y, Text[i], upchars, B.X1, B.Y1, B.X2, B.Y2) Then
Begin
Result := True;
if ClickUnder then
Mouse(B.X1 + 58, y + 3, 4, 0, True)
else
Mouse(B.X1 + 5, y + 1, B.X2 - B.X1 - 5, 13, True);
Exit;
End;
MMouse(B.X1 - 50, B.Y1 - 50, 40, B.Y2 - B.Y1);
Wait(200 + Random(100));
end;
USE: ChooseOptionMultiEx(['rop'], True);. ChooseOptionMultiEx(['rop'], False); would be the same as ChooseOptionMulti(['rop']);
This function clicks at 'Drop' without any randomness.
I honestly think it should be added to SRL 
EDIT: I added some more information .