From: Trent!
But you don't offer the same thing. It's still detectable, end of story. I'd rather pay less than 6 and a half cents per hour and know I can reach 2496 total level (by the time RiD makes a bot for all skills) without receiving an offense than use a free script. I'd love to see that feat accomplished with Simba. Again, it is possible with Simba, however the work required to give you an equivalent product is extremely large.
To give you an idea, the core of RiD's bots about 30,000 lines. All bots before the fisher added together was around 100,000 lines of code. So since they both work using color, and you can program AI, and almost all of the other features RiD has with Simba, it is possible, however it would just be a very large task.
Lol I got my first 99 with SCAR i guess back in 08 also I've been botting 6 hours a day on multiple accounts using simba since the bot nuke and have not recieved a ban. Jagex can't detect someone clicking on colors lol and also everything used in a simba script, even someones first script, is way more lines than you think for example…..
(*
Object Finding
==============
.. note::
Remove?:
- Several FindObj*() functions?
*)
//-----------------------------------------------------------------//
//-- SRL Resource Library --//
//-- ? ObjectFinding Routines --//
//-----------------------------------------------------------------//
// * function FindAllObjsRecord(var Objects: TPointArray; AutoInfo: TAutoColorInfo; x1, y1, x2, y2: Integer; QuickSorting, RGBXYZCheck: Boolean): Boolean; // By Sumilion
// * function FindObjRecordEx(var fx, fy: Integer; AutoInfo: TAutoColorInfo; QuickSorting, RGBXYZCheck: Boolean): Boolean; // By Sumilion
// * function FindObjRecord(var fx, fy: Integer; AutoInfo: TAutoColorInfo): Boolean; // By Sumilion
// * function FindObjEx(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol, CenterX, CenterY: Integer; Step: Extended; xs, ys, xe, ye: Integer): Boolean; // By Starblaster100
// * function FindObj(var cx, cy: Integer; Text: string; Color, Tol: Integer): Boolean; // By Starblaster100
// * function FindObjCustom(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol: Integer): Boolean; // By Starblaster100
// * function FindObjectDeformed(var ObjX, ObjY :integer; UpText1, UpText2: String; BMP, a, b, c, d: integer): Boolean; // By WT-Fakawi
// * function FindObjTPA(Var x, y: Integer; color, tol, cts, ObjWidth, ObjHeight, minCount: Integer; UpText: string): Boolean; // By Wizzup
// * function FindObjTPAMulti(var X, Y: integer; Color: TIntegerArray; Tol, CTS, ObjWidth, ObjHeight, minCount :Integer; UpText: TStringArray): Boolean; // By: Torrent of Flame based on FindObjTPA
// * Function FindObjThroughMM(var x, y: Integer; Kind: String; Colors, Tol: TIntegerArray; UpText: TStringArray; Width, Height: Integer): boolean; // By N1ke!
(*
FindAllObjsRecord
~~~~~~~~~~~~~~~~~
.. code-block:: pascal
function FindAllObjsRecord(var Objects: TPointArray; AutoInfo: TAutoColorInfo; x1, y1, x2, y2: Integer; QuickSorting, RGBXYZCheck: Boolean): Boolean;
Finds an Object using a TAutoColorInfo record, returns the center of the found
objects.
.. note::
by Sumilion
Example:
.. code-block:: pascal
*)
function FindAllObjsRecord(var Objects: TPointArray; AutoInfo: TAutoColorInfo; x1, y1, x2, y2: Integer; QuickSorting, RGBXYZCheck: Boolean): Boolean;
var
arP, arAP: TPointArray;
arC, arUC: TIntegerArray;
ararP: T2DPointArray;
i, j, arL, arL2, tmpCTS: Integer;
R, G, B: Integer;
X, Y, Z: Extended;
arLC: Integer;
begin
with AutoInfo do
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(HueMod, SatMod);
if not(FindColorsTolerance(arP, Color, x1, y1, x2 - 3, y2 - 3, LumTol)) then
begin
//Writeln('Failed to find the object.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
Result := True;
if RGBXYZCheck then
begin
arC := GetColors(arP);
arUC := arC;
ClearSameIntegers(arUC);
arL := High(arUC);
arL2 := High(arC);
for i := 0 to arL do
begin
ColorToRGB(arC[i], R, G, B);
if (R >= MinR) and (R <= MaxR) and (G >= MinG) and (G <= MaxG) and (B >= MinB) and (B <= MaxB) then
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= MinX) and (X <= MaxX) and (Y >= MinY) and (Y <= MaxX) and (Z >= MinZ) and (Z <= MaxZ) then
begin
SetLength(arAP, arL2 + 1);
for j := 0 to arL2 do
if (arUC[i] = arC[j]) then
begin
arAP[arLC] := arP[j];
Inc(arLC);
end;
SetLength(arAP, arLC);
end;
end;
end;
end else
arAP := arP;
if QuickSorting then
ararP := TPAtoATPA(arAP, MaxDist)
else
ararP := SplitTPA(arAP, MaxDist);
arL := High(ararP);
SetLength(Objects, arL + 1);
arLC := 0;
for i := 0 to arL do
begin
if (Length(ararP[i]) < MinCount) then Continue;
if (Length(ararP[i]) > MaxCount) and (MaxCount > 0) then Continue;
Objects[arLC] := MiddleTPA(ararP[i]);
Inc(arLC);
end;
SetLength(Objects, arLC);
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
end;
(*
FindAllObjsRecordEx
~~~~~~~~~~~~~~~~~~~
.. code-block:: pascal
function FindObjRecordEx(var fx, fy: Integer; AutoInfo: TAutoColorInfo; QuickSorting, RGBXYZCheck: Boolean): Boolean;
Finds an Object using a TAutoColorInfo record with extra options.
.. note::
by Sumilion
Example:
.. code-block:: pascal
*)
function FindObjRecordEx(var fx, fy: Integer; AutoInfo: TAutoColorInfo; x1, y1, x2, y2: Integer; QuickSorting, RGBXYZCheck: Boolean): Boolean;
var
arP: TPointArray;
i, arL: Integer;
begin
with AutoInfo do
begin
if FindAllObjsRecord(arP, AutoInfo, x1, y1, x2, y2, QuickSorting, RGBXYZCheck) then
begin
SortTPAFrom(arP, Point(MSCX, MSCY));
arL := High(arP);
if UpText <> '' then
begin
i := Length(UpTextMulti);
SetLength(UpTextMulti, i + 1);
UpTextMulti[i] := UpText;
end;
for i := 0 to arL do
begin
if (Distance(arP[i].x, arP[i].y, MSCX, MSCY) > MaxDistCenter) and (MaxDistCenter > 0) then Continue;
MMouse(arP[i].x, arP[i].y, 5, 5);
Wait(100 + Random(100));
if (Length(UpTextMulti) > 0) then
if WaitUpTextMulti(UpTextMulti, 300) then
begin;
Result := True;
Break;
end;
end;
if (i = arL + 1) then
begin
//Writeln('FindObjRecord could not find the object.');
Exit;
end;
GetMousePos(fx, fy);
end;
end;
end;
(*
FindObjRecord
~~~~~~~~~~~~~
.. code-block:: pascal
function FindObjRecord(var fx, fy: Integer; AutoInfo: TAutoColorInfo): Boolean;
Finds an Object using a TAutoColorInfo record.
.. note::
by Sumilion
Example:
.. code-block:: pascal
*)
function FindObjRecord(var fx, fy: Integer; AutoInfo: TAutoColorInfo): Boolean;
begin
Result := FindObjRecordEx(fx, fy, AutoInfo, MSX1, MSY1, MSX2, MSY2, False, True);
end;
(*
FindObjEx
~~~~~~~~~
.. code-block:: pascal
function FindObjEx(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray;
Tol, Step, xs, ys, xe, ye: Integer): Boolean;
Searches for an object using an array of colors and texts within the area
you specify. Will start searching from the middle and returns true if found.
Parameters:
- cx, cy: Coordinate Position of object if result is true
- Text: Array of string you want to search for
- Color: Array of colors you want to search for
- Tol: Tolerance of the colors you will allow
- Step: How big you want to make the search squares.
50 = Default. 30-70 Recommended
- xs, ys, xe, ye: Bounds you want to search in
.. note::
by Starblaster100
Example:
.. code-block:: pascal
*)
function FindObjEx(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray;
Tol, Step, xs, ys, xe, ye: Integer): Boolean;
var
CurX, CurY, a, b, c, i: Integer;
Start: Boolean;
begin
for b := 0 to (GetArrayLength(Color)-1) do
begin
if (FindColorSpiralTolerance(cx, cy, color[b], xs, ys, xe, ye, Tol)) then
begin
Start := True;
Break;
end;
end;
if (Start) then
begin
CurX := Round((xs + xe) div 2);
CurY := Round((ys + ye) div 2) - Step;
i := 1;
repeat
for c := 1 to i do
begin
case a of
0: begin //To allow for beginning offset and loop
a := a + 1;
i := 0;
CurY := CurY + Step;
end;
1: CurX := CurX + Step;
2: CurY := CurY - Step;
3: CurX := CurX - Step;
4: CurY := CurY + Step;
end;
if (CurX >= xs) and (CurX <= xe) and (CurY >= ys) and (CurY <= ye) then
begin
try
for b := 0 to (GetArrayLength(Color)-1) do
begin
if (FindColorTolerance(cx, cy, Color[b], CurX-(Step div 2), CurY-(Step div 2), CurX+(Step div 2), CurY+(Step div 2), Tol)) then
begin
MMouse(cx, cy, 3, 3);
If (WaitUptextMulti(Text, 300)) then
begin
GetMousePos(cx, cy);
Result := True;
Exit;
end;
end;
end;
except
end;
end;
end;
a := a + 1;
if a mod 5 = 0 then a := 1;
if (a = 1) or (a = 3) then i := i + 1;
until (Result) or ((CurX > xe) and (CurY > ye))
end;
end;
(*
FindObj
~~~~~~~
.. code-block:: pascal
function FindObj(var cx, cy: Integer; Text: string; Color, Tol: Integer): Boolean;
Finds Object
.. note::
by Starblaster100
Example:
.. code-block:: pascal
*)
function FindObj(var cx, cy: Integer; Text: string; Color: Integer; Tol: Integer): Boolean;
begin
Result := FindObjEx(cx, cy, [Text], [Color], Tol, 50, MSX1, MSY1, MSX2, MSY2);
end;
(*
FindObjCustom
~~~~~~~~~~~~~
.. code-block:: pascal
function FindObjCustom(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol: Integer): Boolean;
Finds Object with custom amount of colors and custom amount of Uptext
.. note::
by Starblaster100
Example:
.. code-block:: pascal
FindObjCustom(x, y, ['att', 'ack'], [123456, 345678], 5);
*)
function FindObjCustom(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol: Integer): Boolean;
begin
Result := FindObjEx(cx, cy, Text, Color, Tol, 50, MSX1, MSY1, MSX2, MSY2);
end;
(*
FindObjectDeformed
~~~~~~~~~~~~~~~~~~
.. code-block:: pascal
function FindObjectDeformed(var ObjX, ObjY: Integer; UpText1, UpText2: String; BMP, a, b, c, d: Integer): Boolean;
Finds Object in Box a,b,c,d, specified by BitMap and Uptext1 or Uptext2
Returns coords in ObjX and ObjY.
Uses Deformed Bitmap. FindObjectDeformed will gradually lower Tol and reduce
Accuracy.
Functon can cause severe Lag when using bitmaps bigger than 16 pixels.
Works but lags.
.. note::
by WT-Fakawi
Example:
.. code-block:: pascal
*)
function FindObjectDeformed(var ObjX, ObjY: Integer; UpText1, UpText2: string;
BMP, a, b, c, d: Integer): Boolean;
var
acc, ref: Extended;
XT, YT, times, tol: Integer;
begin
ref := 0.9;
tol := 0;
for times := 1 to 50 do
begin
FindDeformedBitmapToleranceIn(BMP, XT, YT, a, b, c, d, tol, 2, True, acc);
if (acc >= ref) then
begin
MMouse(XT, YT, 0, 0);
if (WaitUptextMulti([UpText1, UpText2], 300)) then
begin
ObjX := XT;
ObjY := YT;
Result := True;
Exit;
end;
end;
if times mod 5 = 0 then
begin
ref := ref - 0.1;
tol := tol + 10;
end;
Wait(1);
end;
end;
(*
FindObjTPA
~~~~~~~~~~
.. code-block:: pascal
function FindObjTPA(var x, y: integer; color, tol, cts, ObjWidth, ObjHeight, minCount :Integer; UpText: tstringarray): Boolean;
Finds object using WizzyPlugin functions. Starts with a Spiral from x and y.
Put in the color, Tolerance and ColorToleranceSpeed.
If you don't know what colortolerancespeed to choose, put in -1.
ObjWidth and ObjHeight are the parameters TPAToATPAEx uses, thus filtering
the MS's FindColorsSpiralTolerance points in boxes defined by
ObjWidth and ObjHeigth.
minCount is the amount of colors it should at least find in a Object box.
UpText, is ofcourse the text the object should have. In the Multi variant the
UpText is a string array.
.. note::
by Wizzup?
Example:
.. code-block:: pascal
*)
function FindObjTPA(var X, Y: Integer; Color, Tol, CTS, ObjWidth, ObjHeight, minCount: Integer; UpText: TStringArray): Boolean;
var
I, tCTS: Integer;
myPoint: TPoint;
Points: TPointArray;
aPoints: T2DPointArray;
begin
Result := False;
if not LoggedIn then exit;
tCTS := GetColorToleranceSpeed;
CTS := Integer(CTS * 9 mod 3 <> 0);
ColorToleranceSpeed(CTS);
FindColorsSpiralTolerance(X, Y, Points, Color, MSX1, MSY1, MSX2, MSY2, Tol);
if Length(Points) = 0 then
begin
ColorToleranceSpeed(tCTS);
Exit;
end;
ColorToleranceSpeed(1);
aPoints := TPAtoATPAEx(Points, ObjWidth, ObjHeight);
SetLength(Points, 0);
for I := 0 to High(aPoints) do
begin
if Length(aPoints[i]) < minCount then
Continue;
myPoint := MiddleTPA(aPoints[i]);
MMouse(myPoint.X, myPoint.Y, 0, 0);
if WaitUpTextMulti(UpText, 300) then
begin
GetMousePos(X, Y);
Result := True;
ColorToleranceSpeed(tCTS);
Exit;
end;
end;
ColorToleranceSpeed(tCTS);
end;
(*
FindObjTPAMulti
~~~~~~~~~~~~~~~
.. code-block:: pascal
function FindObjTPAMulti(var X, Y: integer; Color: TIntegerArray; Tol, CTS, ObjWidth, ObjHeight, minCount :Integer; UpText: TStringArray): Boolean;
This is a modification of FindObjTPA, which uses a TIntegerArray for the Colors.
.. note::
by Torrent of Flame based on FindObjTPA
Example:
.. code-block:: pascal
*)
function FindObjTPAMulti(var X, Y: Integer; Colour: TIntegerArray; Tol, CTS, ObjWidth, ObjHeight, minCount: Integer; UpText: TStringArray): Boolean;
var
i, tCTS: Integer;
myPoint: TPoint;
aPoints: T2DPointArray;
ATPA: T2DPointArray;
TPA: TPointArray;
begin
Result := False;
if not LoggedIn then exit;
tCTS := GetColorToleranceSpeed;
CTS := Integer(CTS * 9 mod 3 <> 0);
ColorToleranceSpeed(CTS);
SetLength(ATPA, Length(Colour));
for i := 0 to High(Colour) do
begin
FindColorsSpiralTolerance(x, y, ATPA[i], Colour[i], MSX1, MSY1, MSX2, MSY2, Tol);
end;
TPA := MergeATPA(ATPA);
if Length(TPA) = 0 then
begin
ColorToleranceSpeed(tCTS);
Exit;
end;
ColorToleranceSpeed(1);
aPoints := TPAtoATPAEx(TPA, ObjWidth, ObjHeight);
for I := 0 to High(aPoints) do
begin
if Length(aPoints[i]) < minCount then
Continue;
myPoint := MiddleTPA(aPoints[i]);
MMouse(myPoint.x, myPoint.y, 0, 0);
if WaitUpTextMulti(UpText, 300) then
begin
GetMousePos(X, Y);
Result := True;
ColorToleranceSpeed(tCTS);
Exit;
end;
end;
ColorToleranceSpeed(tCTS);
end;
(*
FindObjThroughMM
~~~~~~~~~~~~~~~~
.. code-block:: pascal
function FindObjThroughMM(var x, y: Integer; Kind: string; Colors, Tol: TIntegerArray; UpText: TStringArray; Width, Height: Integer): boolean;
Finds a object with the given parameters.
Uses minimap dots to get locations of objects.
Will put the matching areas first in the TPA array,so it hovers those
first.
.. note:: It still searches the whole screen, but it puts items first in
the array.
Valid kinds are:
- npc/yellow
- item/red
- player/white
.. note::
by N1ke!
Example:
.. code-block:: pascal
*)
function FindObjThroughMM(var x, y: Integer; Kind: string; Colors, Tol: TIntegerArray; UpText: TStringArray; Width, Height: Integer): boolean;
var
ATPA: T2DPointArray;
TPA, TPA2, TPA3: TPointArray;
I, II, H, HH, ArrC: Integer;
begin
SetLength(ATPA, Length(Colors));
H := High(Colors);
for I:= 0 to H do
FindColorsTolerance(ATPA[i], Colors[i], MSX1, MSY1, MSX2, MSY2, Tol[i]);
TPA := MergeATPA(ATPA);
ATPA := TPAToATPAEx(TPA, Width, Height);
SetLength(TPA, GetArrayLength(ATPA));
H := High(TPA);
for i:= 0 to H do
TPA[i] := MiddleTPA(ATPA[i]);
TPA2 := GetMiniMapDots(Kind);
H := High(TPA2);
for I:=0 to H do
TPA2[i] := MMToMS(TPA2[i]);
H := High(TPA);
HH := High(TPA2);
SetArrayLength(TPA3, GetArrayLength(TPA));
for I:=0 to H do
for II:=0 to HH do
If IntInBox(TPA[i].X, TPA[i].Y, IntToBox(TPA2[II].X-55, TPA2[II].Y-55, TPA2[II].X+55, TPA2[II].Y+55)) then
begin
TPA3[ArrC] := TPA[i];
Inc(ArrC);
Break;
end;
SetArrayLength(TPA3, ArrC);
ClearTPAFromTPA(TPA, TPA3);
TPA := CombineTPA(TPA3, TPA);
SortTPAFrom(TPA, Point(MSCX, MSCY));
H := High(TPA);
for I:=0 to H do
begin
MMouse(TPA[i].X, TPA[i].Y, 4, 4);
If WaitUptextMulti(UpText, 250+Random(100))then
begin
GetMousePos(X, Y);
Result := True;
Exit;
end;
end;
end;
thats just for objects
also quality over guantity.
if I get a 99 for free with 100 lines of code I'd be way more happy than paying $20 for that…
Now to get back on topic..
Good luck S1N I think it's a cool goal :redface: