SRL Archive - Senior Scripts and Snippets

Sorceress' Garden Script


n3ss3s

2011-11-12 02:07:23

(it's for the summer garden btw, herb mode only, dats wer da gp at)

It had more of supposedly more secure finding of shit by use of TPAs, but PascalScript gobbles up 2mb ram for every FindColorsTolerance call so I went for some lighter solutions… Enjoy the misleading and uninformational debugs. Some things have room for improvement, e.g bank finder takes a few hovers. Walking could be smoother with use of DTMs, cbf. Probably needs more FNR calls too.

Also read the commented part on top.

{******************************************************************************}
{******************************* SuperSorceress *******************************}
{********************************* By n3ss3s **********************************} {
Some info, aight. The script is written from a more defensive point of view,
meaning that instead of looking for every window to pass an elemental it'll
save time by fucking up less. So if you're babysitting it, sometimes you might
feel you would've taken the shot. It is also designed to be ran with one
player, so there might be a few spots where instead of safely returning to
the main loop in the even of a fuckup it'll just timeout log in an infinite
loop where a typical "army script" would call NextPlayer. }


program SuperSorceress;
{$DEFINE SMART}
{$I SRL/SRL.scar}


Type TraceFunction = Function(): Boolean;

var
Tracers: Array [0..5] of TraceFunction;
Brown, Last, Gate, First, Second, Third, Four, LTOP, LBOT, FTOP, FBOT, STOP, COCK: Integer;
DTMs: TIntegerArray;
DTMNames: TStringArray;
xCaught: Boolean;

Procedure SetupSMART;
begin
Smart_Server := 12;
Smart_Members := True;
Smart_SuperDetail := False;
end;

Procedure DeclarePlayers;
begin
NumberOfPlayers(1);
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Skill := '';
Players[0].Active := True;
end;

Function Caught: Boolean;
var
S: String;
a: Integer;
begin
a := CountColorTolerance(8918410, MSCX - 30, MSCY - 30, MSCX + 30, MSCY + 30, 35);
Result := a >= 4;
//Result := True;
if (Result) then
begin
GetLastChatText(S);
if (Pos('been spotted by', S) < 12) then
Result := True
else
Result := False;
end;
end;

Function Teleported: Boolean;
var
X, Y: Integer;
begin
if (FindColorTolerance(x, y, 460778, MMCX - 15, MMCY - 30, MMCX + 15, MMCY - 5, 25)) then
begin
Writeln('We been busted!');
xCaught := False;
Mouse(x, y, 2, 2, True);
FFlag(0);
Result := True;
end;
end;

Function FlagC: Boolean;
var
Tx, Ty, M, D1, D2, C: Integer;
begin
Result := True;
M := GetSystemTime;
while (FindColor(Tx, Ty, FlagColor, MMX1, MMY1, MMX2, MMY2)) do
begin
if (Caught) then
begin
xCaught := True;
Writeln('We were caught!');
Result := False;
Break;
end;
D1 := Distance(Tx, Ty + 14, MMCX, MMCY);
if (D1 <= 0) then
begin
Result := True;
Break;
end;
Wait(25);
if (Caught) then
begin
xCaught := True;
Writeln('We were caught!');
Result := False;
Break;
end;
if (GetColor(6, 6) <> clWhite) then
if (GetSystemTime - M > 5000) then
begin
if (D1 = D2) then Exit;
D2 := D1;
M := GetSystemTime;
end;
Wait(25);
// if (Random(20) = 0) then IdleTime(100, 300, 0.01);
// if SRL_Procs[SRL_AntiBan] <> nil then
// SRL_Procs[SRL_AntiBan]();
end;
Writeln('Out of loop');
M := GetSystemTime;
if (Result) then
while (IsMoving) do
begin
if (Caught) then
begin
xCaught := True;
Result := False;
Break;
end;
if (Teleported) then
begin
Result := False;
Break;
end;
Wait(15);
end;
if (Result) then
for C := 0 To 100 do
if (Caught) then
begin
xCaught := True;
Result := False;
Break;
end;
Writeln('Stopped checking');
end;

Procedure MapFlag(Dir: String);
begin
MakeCompass(Dir);
FFlag(2);
end;

Function InBeginning: Boolean;
var
ssx, ssy, cx, cy: Integer;
b: Boolean;
begin
//FindSymbol(ssx, ssx, 'transportation');
cx := MMCX;
cy := MMY1;
b := FindColorSpiralTolerance(cx, cy, 66797, MMCX - 20, MMCY - 70, MMCX + 20, MMCY - 20, 20);
Result := b and (Distance(MMCX, MMCY, cx, cy) > 25);
if (Result) then
Writeln('In beginning!');
// if (Result) then
// if (b) then
// Result := Distance(MMCX, MMCY, cx, cy) > 10;
end;

Function DukeNukem: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
T, Y, A, C: Integer;
P: TPoint;
B: Boolean;
begin
Writeln('Clicking Around The Fence');
FindColorsSpiralTolerance(MSX2, MSY2, TPA, 11066877, MSCX, MSCY, MSX2, MSY2, 25);
if (Length(TPA) < 1) then
begin
Writeln('No greeny');
Exit;
end;
writeln('Splitting');
TPAA := SplitTPA(TPA, 3);
writeln('Sorting');
SortATPASize(TPAA, False);
P := MiddleTPA(TPAA[0]);
for Y := P.y downto (P.y - 50) do
begin
A := CountColorTolerance(9097374, P.x - 100, Y, p.x, Y + 1, 35);
Writeln('Color count: '+IntToStr(A));
if (A > 100) then
B := True;
if ((A < 40) and B) then
C := C + 1;
if (C > 5) then
begin
Mouse(P.x - 5, Y, 4, 4, True);
Result := FlagC;
Exit;
end;
end;
end;

Function WholeOrdeal: Boolean;
begin {
if (ClickNorthage) then
begin
FlagC;
MakeCompass('w');
Wait(450 + Random(300));
Result := ClickSouthage;
MapFlag('n');
end; }
Result := DukeNukem;
end;

Function FindHouse(var x, y: Integer): Boolean;
var
TPA: TPointArray;
A, ER: Extended;
P: TPoint;
begin
if (FindColorsToleranceOptimised(TPA, 15068138, MMX1, MMY1, MMX2, MMY2, 25)) then
begin
A := 360 - rs_GetCompassAngleDegrees;
ER := 90 + A;
if (ER > 360) then
ER := ER - 360;
FilterPointsPie(TPA, A, ER, 2, 75, MMCX, MMCY);
P := MiddleTPA(TPA);
Result := True;
x := P.x;
y := P.y;
end;
end;


Function FindBrown: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
begin
if (FindColorsToleranceOptimised(TPA, 1588814, MMCX, MMCY, MMCX + 50, MMCY + 20, 25)) then
begin
TPAA := TPAToATPA(TPA, 20);
SortATPASize(TPAA, True);
P := MiddleTPA(TPAA[0]);
Mouse(P.x + 2, P.y + 1, 0, 0, True);
Result := FlagC;
if (Result) then
Wait(250 + Random(250));
end;
end;

Function RadialTPAWalk(Color: Integer; MinPix, SR, ER, MinD, MaxD, M: Integer): Boolean;
Var
TPAA: Array of TPointArray;
X, Y, Z, I, S, E: Integer;
TPA: TPointArray;
Begin
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Color, MMX1, MMY1, MMX2, MMY2, 20);
FilterPointsPie(TPA, 0, 359, MinD, MaxD, MMCX, MMCY);
TPAA := TPAToATPA(TPA, Round(Sqrt(MinPix)));
S := SR + Round(Rs_GetCompassAngleDegrees);
E := ER + Round(Rs_GetCompassAngleDegrees);
If S > 360 Then S := S - 315;
If E > 360 Then E := E - 315;
For I := High(TPAA) DownTo 0 Do
Begin
MiddleTPAEx(TPAA[i], X, Y);
If M <> 1 Then
Begin
Z := Round(Degrees(ArcTan2(MMCY - Y, MMCX - X))) - 90;
If Z < 0 Then
Z := Z + 360;
End Else
Z := Round(Degrees(ArcTan2(MMCY - Y, MMCX - X))) - 90;
If Z > SR Then
If Z < ER Then
Begin
Mouse(X, Y, 2, 2, True);
FFlag(0);
Result := True;
Exit;
End;
End;
End;

Function ConfirmClick(Text: String; X, Y, RX, RY: Integer; Left: Boolean): Boolean;
var
NX, NY: Integer;
begin
MMouse(X, Y, RX, RY);
Wait(45 + Random(20));
if (IsUpText(Text)) then
begin
GetMousePos(NX, NY);
Mouse(NX, NY, 0, 0, Left);
Result := True;
end;
end;

Function Teleport: Boolean;
var
Fl, Gray: TPointArray;
Head: TPoint;
Bounds: TBox;
t: Integer;
begin
MarkTime(t);
while (not(Result)) do
begin
FindColorsToleranceOptimised(Fl, 8428736, MSX1, MSY1, MSX2, MSY2, 10);
if (length(Fl) > 1) then
begin
Bounds := GetTPABounds(Fl);
FindColorsSpiralTolerance(MSCX, MSCY, Gray, 9538941, MSX1, MSY1, MSX2, MSY2, 10);
if (Length(Gray) < 1) then
Continue;
Head := Gray[0];
if (ConfirmClick('ppren', Head.X, Head.Y, 2, 2, False)) then
Result := ChooseOption('eleport');
end;
if (TimeFromMark(t) > 20000) then
begin
Result := False;
Break;
end;
end;
end;

Function ClickDTM(Name: String): Boolean;
var
x, y, i, c, z: Integer;
a: Extended;
b: Boolean;
begin
Writeln('Clicking DTM :'+Name);
for i := 0 to High(DTMNames) do
if (DTMNames[i] = Name) then
begin
for z := 0 to 4 do
if (FindDTMRotated(DTMs[i], x, y, MMX1, MMY1, MMX2, MMY2, 0.0, 359.0, 1.0, a)) then
begin
b := True;
Break;
end;
if (not(b)) then
Break;
if (Name = 'Cock') then
begin
x := x + 1;
y := y + 2;
end;
if (Name = 'Third') then
begin
x := x + 1;
y := y - 1;
end else
if (Name = 'First') then
y := y + 2
else if ((Name = 'Four') or (Name = 'Last')) then
begin
x := x + 2;
y := y - 1;
end;
MarkTime(c);
while ((not FlagPresent) and (TimeFromMark(c) < 2000)) do
begin
Mouse(x, y, 0, 0, True);
Wait(100 + Random(50));
end;
Result := True;
MarkTime(c);
if (not(FlagC)) then
Result := False;
Wait(50 + Random(25));
Exit;
end;
end;

Function CantReach: Boolean;
var
S: String;
begin
GetLastChatText(S);
Result := Pos('reach', S) > 0;
end;

Function FindGanja: Boolean;
var
I, T, X, Y: Integer;
P: TPoint;
Green: TPointArray;
begin
Wait(500 + Random(250));
Writeln('Finding herbs');
MarkTime(T);
x := MMCX;
y := MMCY;
repeat
FindColorSpiralTolerance(x, y, 1587781, MMX1, MMY1, MMX2, MMY2, 25);
if (Distance(MMCX, MMCY, x, y) > 3) then
Exit;
FindColorsSpiralTolerance(MSCX, MSCY, Green, 606743, MSX1 + 100, MSY1 + 100, MSX2 - 100, MSY2 - 100, 20);
for i := 0 to High(Green) do
begin
P := Green[i];
if (InBeginning or Teleported) then
Exit;
if (ConfirmClick('ick', P.x, P.y, 4, 4, False)) then
begin
if (ChooseOption('erbs')) then
begin
Wait(2000 + Random(1000));
if (CantReach) then
Break;
Result := True;
Exit;
end;
end;
end;
if (TimeFromMark(T) > 10000) then
Break;
until(Result);
end;

Function AutoBots_RollOut: Boolean;
var
x, y, cx, cy, q: Integer;
begin
x := MMCX;
for y := MMCY downto MMCY - 15 do
for x := MMCX downto MMCX - 3 do
if SimilarColors(GetColor(x, y), 535350, 20) then
for x := MMCX downto MMCX - 20 do
begin
if not SimilarColors(GetColor(x, y), 535350, 20) then
q := q + 1;
if (q = 3) then
begin
Mouse(x + 1, y + 2, 0, 0, True);
Result := True;
FFlag(0);
Exit;
end;
end;
end;

Function ClickGate: Boolean;
var
I, B, X, Y: Integer;
TPA: TPointArray;
begin
Writeln('Clicking gate');
for B := 0 to 19 do
begin
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5997476, MSCX - 10, MSCY - 20, MSCX + 10, MSCY, 20);
for i := 0 to High(TPA) do
if (ConfirmClick('pen', TPA[i].x, TPA[i].y, 0, 0, False)) then
if (ChooseOption('pen')) then
begin
Writeln('Clicked gate');
Result := True;
FFlag(0);
Wait(1000 + Random(500));
X := MSCX;
Y := MSCY;
Result := AutoBots_RollOut;
Exit;
end;
Wait(500 + Random(500));
end;
end;

Function TraceFirstElemental: Boolean;
var
x1, y1, x2, y2, c, PX, PY, BX, BY: Integer;
P: TPoint;
d, a, od: Extended;
b, g: Boolean;
begin
Wait(500 + Random(550));
b := False;
g := False;
if (FindDTMRotated(FTOP, x1, y1, MMX1, MMY1, MMX2, MMY2, 0.0, 359.0, 1.0, a) and
FindDTMRotated(FBOT, x2, y2, MMX1, MMY1, MMX2, MMY2, 0.0, 359.0, 1.0, a)) then
begin
c := 0;
repeat
PX := BX;
PY := BY;
if (FindColorSpiralTolerance(BX, BY, 195836, x1, y1, x2, y2, 20)) then
begin
od := d;
d := Distance(BX, BY, MMCX, MMCY);
if (not(od = 0.0)) then
if (d < od) then
b := True;
if (b) then
if (d > od) then
g := True;
if (g) then
Result := True;
end;
until(Result);
end;
end;



Function EpicTrace: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
BX, BY: Integer;
D: Extended;
Uno, Dos: Boolean;
begin
BX := MMCX;
BY := MMCY;
Uno := False;
Dos := False;
repeat
FindColorsSpiralTolerance(BX, BY, TPA, 195836, MMCX, MMCY - 8, MMCX + 10, MMCY, 20);
TPAA := SplitTPA(TPA, 1);
if (Length(TPAA) > 0) then
begin
SortATPAFrom(TPAA, Point(BX, BY));
P := MiddleTPA(TPAA[0]);
BX := P.x;
BY := P.y;
D := Distance(MMCX, MMCY, BX, BY);
if (D = 3) then
Uno := True;
if (Uno) then
if (D = 8) then
Dos := True;
if (Dos) then
if (D = 3) then
begin
Result := True;
Break;
end;
end;
until(False);
end;

Function DownTrace: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
BX, BY, PX, PY: Integer;
Uno, Dos: Boolean;
begin
BX := MMCX;
BY := MMCY;
Uno := False;
Dos := False;
repeat
//FindColorsSpiralTolerance(BX, BY, TPA, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20);
//TPAA := TPAToATPA(TPA, 4);
PX := BX;
PY := BY;
if (FindColorSpiralTolerance(BX, BY, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20)) then
begin
if (not(PY = MMCY)) then
if (BY > PY) then
if ((BY > MMCY - 4) and (BY < MMCY)) then
begin
Result := True;
Break;
end;
end;
until(False);
end;

Function DownTraceB: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
BX, BY, PX, PY: Integer;
Uno, Dos: Boolean;
begin
BX := MMCX;
BY := MMCY;
Uno := False;
Dos := False;
repeat
//FindColorsSpiralTolerance(BX, BY, TPA, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20);
//TPAA := TPAToATPA(TPA, 4);
PX := BX;
PY := BY;
if (FindColorSpiralTolerance(BX, BY, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20)) then
begin
Writeln(BY - MMCY);
if (not(PY = MMCY)) then
if (BY > PY) then
if (BY - MMCY = -5) then
begin
Result := True;
Break;
end;
end;
until(False);
end;
{ Using TPA functions with PascalScript makes the script gobble up
2mb of ram per call, DO NOT WANT
Function DownTraceB: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
BX, BY, PX, PY: Integer;
Uno, Dos: Boolean;
begin
BX := MMCX;
BY := MMCY;
Uno := False;
Dos := False;
repeat
FindColorsSpiralTolerance(BX, BY, TPA, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20);
TPAA := TPAToATPA(TPA, 4);
if (Length(TPAA) > 0) then
begin
SortATPAFrom(TPAA, Point(BX, BY));
P := MiddleTPA(TPAA[0]);
PX := BX;
PY := BY;
BX := P.x;
BY := P.y;
if (not(PY = MMCY)) then
if (BY > PY) then
if (BY - MMCY = -3) then
begin
Result := True;
Break;
end;
end;
until(False);
end; }
{
Function UpTrace: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
BX, BY, PX, PY: Integer;
D: Extended;
Uno, Dos: Boolean;
begin
Wait(1000);
BX := MMCX;
BY := MMCY;
Uno := False;
Dos := False;
repeat
FindColorsSpiralTolerance(BX, BY, TPA, 195836, MMCX, MMCY - 8, MMCX + 4, MMCY + 10, 20);
TPAA := TPAToATPA(TPA, 4);
if (Length(TPAA) > 0) then
begin
SortATPAFrom(TPAA, Point(BX, BY));
P := MiddleTPA(TPAA[0]);
PX := BX;
PY := BY;
BX := P.x;
BY := P.y;
if (not(PY = MMCY)) then
if (BY < PY) then
if ((BY < MMCY + 2) and (BY > MMCY - 2)) then
begin
Result := True;
Wait(250);
Break;
end;
end;
until(False);
end; }

Function UpTrace: Boolean;
var
TPA: TPointArray;
TPAA: T2DPointArray;
P: TPoint;
BX, BY, PX, PY: Integer;
Uno, Dos: Boolean;
begin
BX := MMCX;
BY := MMCY;
Uno := False;
Dos := False;
repeat
//FindColorsSpiralTolerance(BX, BY, TPA, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20);
//TPAA := TPAToATPA(TPA, 4);
PX := BX;
PY := BY;
if (FindColorSpiralTolerance(BX, BY, 195836, MMCX, MMCY - 6, MMCX + 6, MMCY + 10, 20)) then
begin
if (not(PY = MMCY)) then
if (BY < PY) then
if (InRange(BY, MMCY + 5, MMCY + 6)) then
begin
Result := True;
Wait(250);
Break;
end;
end;
until(False);
end;

Function NiggerTrigger: BooleaN;
var
X, Y, DX, DY: Integer;
a: Extended;
begin
FFlag(0);
while (IsMoving) do
Wait(25);
Wait(250 + Random(100));
if (FindDTMRotated(STOP, DX, DY, MMX1, MMY1, MMX2, MMY2, 0.0, 359.0, 1.0, a)) then
begin
repeat
if (FindColorToleranceOptimised(X, Y, 195836, DX + 2, DY, DX + 6, DY + 5, 20)) then
begin
Result := True;
Wait(750);
Break;
end;
until(False);
end;
end;

Function TraceLastElemental: Boolean;
var
TPA: TPointArray;
P: TPoint;
d, od: Extended;
b: Boolean;
begin
b := False;
repeat
FindColorsToleranceOptimised(TPA, 195836, MMCX, MMCY - 10, MMCX + 15, MMCY + 2, 20);
P := MiddleTPA(TPA);
od := d;
d := Distance(MMCX, MMCY, P.x, P.y);
Writeln(d);
if (od > d) then
b := True;
if ((b) and (d > od)) then
begin
Result := True;
Break;
end;
Wait(50);
until(false);
end;


Procedure Initialize;
begin
Tracers[0] := @TraceFirstElemental;
Tracers[1] := @DownTrace;
Tracers[2] := @DownTraceB;
Tracers[3] := @UpTrace;
Tracers[4] := @NiggerTrigger;
Tracers[5] := @TraceLastElemental;
Brown := DTMFromString('mKgEAAHic42NgYNjMxMCwGog3AvEWIF4HxCeA+DQQXwPiw0C8FIhbgLgDiHuAeAIQMzIyMLACMRsQszBC+F+B5nEBaQkgfghknwLin2g41FmKwcdGnMHTSozBz04CgktMwTjOkQ/OttDlQsFyQL3kYKBTGJjQMAsRGBUAAM8mG5s=');
Last := DTMFromString('m5wEAAHicE2dgYDjNxMCwHIg3APEWIN4LxAeB+CgQn0XCZ4B4GRSD1N8D4sdA/ACIbwPxNSBuAeJmKC4C4v9A838g4e9I+CUQPwXih0B8A4jvA/EtIH4DxH+B+B8QszAyMDAxQmhpIOaDskFmyTnxMljocpGMAxwkGcJdpRk8rcQY/OwkGHxsxBkWL1mGguVA5tMIA53PwEwlzIKGcQAAOns09A==');
Gate := DTMFromString('mwQAAAHic42RgYHjMxMDAz8zA8AFIHwHi/0AsAuQfBNKHoNiDkYEhA4inAHEpEC8GYicg9gdieyBOBuI37CwoONFNkMHZSoJh7pIVcCwHtI8QBlrHwEoAwwEAfUsV0A==');
First := DTMFromString('m/AEAAHick2BgYLjGhMC3gPgeFN+H4jNAvB+Kj0LxESDeBMSCzBAsBMQMQMwDxM+A4r+B+D8QywH5rIwMDExAzA3Ev4DKvgHxJyB+C8QvoRjE/gPEokA1akBsAdXzHij2GYgZgGwOKBYBYgkglmSEqE8qU2Iw1eZgkHbgBtPo2LvIGI7nLViMgmFqcOn1tBJlkANaT0sM9AIDExGYmUyMCwAAPP8vHw==');
Second := DTMFromString('m0gEAAHicE2NgYHjOxMDwDIhfAPEFKGZnZmC4xoTAB4F4JxCvA+LfWLACMwIrQjETIwPDf6D5v4GYGcgWAuKHQLYxkNYGYmUglkDDIkAswAjR8x2IBYFsXiDmAGIWIGYA4sw6FQZTbQ4GaQduBu8iYziet2AxVgxSSwyWAxpPCwxyNhMSZqYSxg4AGm4rzA==');
Third := DTMFromString('mAAEAAHic42FgYFBnZmBQwoN10bAzIwODERCbA7E9ELsBsTcQBwFxFBAbA7E1EDsBsRcQq0SKMdjZcDOY6/DDMUgMmY+M5YBuIgUDrWBgJgEjAwB9Xwxf');
Four := DTMFromString('mVAEAAHicE2BgYLjOxMDAyszAwA3EgkD8Asg/CMTbgHgrEO8F4jVQ+hYQ3wPiR0D8DIjfArEdIwODCxA7ALE9EDMAsQwQ6wOxAhAHAbEJEMcCsRkWLGHLz2BvJM7gbiHJ4GklxeCRb46C58xbDsdGGjwYWA5oJSUY5GRmCjA6AAAovB3I');
LTOP := DTMFromString('mVAEAAHicpc4xC0VgAIXh8yUbZVFK2b5BkUQxyHZvubMfYTP49QblvSZscupZ304gaXCkD743FilylKjRosOIGRNCI/lwYbDRXBGZq/TEooBQZd5jvz7WsDSHhMwb/xvOC/ftt1IRxw==');
LBOT := DTMFromString('mPwEAAHic42dgYIhkZmDIBeICIM4C4nAg9gRiFSDWAGJdIDYEYlMgdkPDcowMDKJArAfEjED8EGjeCyCWYMTEvEDMCsQMQPwHSBnr8DB4FptjYJA4ISwH1E8uBjmBmUyMBgAUrBML');
FTOP := DTMFromString('mkwEAAHicE2ZgYNjMBMGrgHgOEM8F4sVAvAiIJwLxSSC+CMRXgfgWEN8D4kdA/Bwqh4xFGBkYFIH4F9Dc/0DMD2RrAbEnI0ROEg/mBWJ2IGZmhOg11uEBY89icziev2QlHMPksWGFSGEUvhzQPGphoPMYmKmEsQAA0DgjpA==');
FBOT := DTMFromString('mVAEAAHicE2BgYIhjZmBIAeIMIM4F4kIgLgXiKiCuA+ImIG4DYmckbALENkDsBcSxjAwMAUTgZCDOB+IqIPYBYlMgNgRioyABBjMtDoJ40aKlKNin0BiMRYB+oAQDncDARAFGBwAi2Bqb');
STOP := DTMFromString('mKgEAAHic42NgYMhnZmCYAMTpQGwKxUpArA/EBkBsA8QNSDgaivczMjCcAuJmIL4JxG+AeBcQbwPipUC8AIg3AfEqIF4GxAuBeCUQW2pwMPhZiDH45xszLJ63BI5BfBgGqUHHckC3koOBVjIwk4FRAQDmex0t');
Cock := DTMFromString('mKgEAAHic42NgYDjLxMBwEYivAvFNJggfGW/FghmYGRh2M6Di7UC8GYjXA/FqKP8gEJ8C4utA/AiI9wGxmTYHXrxg4WIM7GYuwiAH1EsOZoQ4l2SMCgC12CO3');
SetLength(DTMs, 13);
DTMs[0] := Gate;
DTMs[1] := First;
DTMS[2] := Second;
DTMs[3] := Third;
DTMs[4] := Four;
DTMs[5] := Last;
DTMs[6] := Brown;
DTMs[7] := LTOP;
DTMS[8] := LBOT;
DTMs[9] := FTOP;
DTMs[10] := FBOT;
DTMs[11] := STOP;
DTMs[12] := Cock;
DTMNames := ['Gate', 'First', 'Second', 'Third', 'Four', 'Last', 'Brown', 'LTOP', 'LBOT', 'FTOP', 'FBOT', 'Cock'];
end;

Function ToGarden: Boolean;
var
x, y, t: Integer;
begin
if (RadialTPAWalk(3035526, 3, 0, 90, 50, 75, 2)) then
if (FindHouse(x, y)) then
begin
Mouse(x, y, 2, 2, True);
FFlag(0);
Result := Teleport;
if (Result) then
begin
MarkTime(T);
while (not(InBeginning)) do
if (TimeFromMark(T) > 20000) then
begin
Result := False;
Break;
end else
Wait(3000 + Random(1000));
end;
end;
end;

Function DrinkFountain: Boolean;
var
X, Y, T: Integer;
TPA: TPointArray;
begin
Result := FindObjTPA(X, Y, 14014674, 20, 2, 10, 10, 50, ['rink']);
if (Result) then
begin
Mouse(X, Y, 4, 4, True);
FFlag(0);
SetLength(TPA, 1000);
MarkTime(T);
while (Length(TPA) > 400) do
begin
FindColorsToleranceOptimised(TPA, 1398052, MMX1, MMY1, MMX2, MMY2, 25);
FilterPointsPie(TPA, 0, 360, 1, 75, MMCX, MMCY);
Writeln(Length(TPA));
Wait(500 + Random(500));
if (TimeFromMark(T) > 10000) then
begin
Result := False;
Break;
end;
end;
end;
end;

Function WalkBack: Boolean;
var
x, y: Integer;
begin
if (not(DrinkFountain)) then
Exit;
Writeln('Out of garden');
if (RadialTPAWalk(3233671, 3, 180, 270, 50, 75, 2)) then
begin
SymbolAccuracy := 0.5;
Result := FindSymbol(x, y, 'Bank');
SymbolAccuracy := 0.8;
if (Result) then
begin
Mouse(x, y, 2, 2, True);
FFlag(0);
while (IsMoving) do
Wait(500 + Random(500));
end;
end;
end;

Function OpenShantayBank: Boolean;
var
TPA, TPA1: TPointArray;
TPAA: T2DPointArray;
I, T: Integer;
P: TPoint;
B: TBox;
begin
MarkTime(T);
while (not(Result)) do
begin
if (TimeFromMark(T) > 10000) then
Break;
FindColorsSpiralTolerance(MSCX, MSY2, TPA, 2500136, MSCX - 100, MSCY - 150, MSX2, MSY2, 25);
TPAA := TPAToATPAEx(TPA, 25, 35);
SortATPAFrom(TPAA, Point(MSCX, MSY2));
for I := 0 To High(TPAA) do
begin
Writeln(Length(TPAA[i]));
if (Length(TPAA[i]) < 100) then
Continue;
B := GetTPABounds(TPAA[i]);
FindColorsToleranceOptimised(TPA1, 5793651, B.x1, B.y1, B.x2, B.y2, 25);
if (Length(TPA1) > 20) then
begin
P := MiddleTPA(TPA1);
if (ConfirmClick('hest', P.x, P.y, 2, 2, False)) then
Result := ChooseOption('pen');
if (Result) then
begin
Writeln('Clicked bank');
repeat
Wait(25);
until(BankScreen);
Break;
end;
end;
end;
end;
end;

Function ImANerd: Boolean;
var
x, y: Integer;
begin
X := MMCX;
Y := MSY1;
Result := FindColorSpiralTolerance(X, Y, 66797, MMCX - 20, MMCY - 70, MMCX + 20, MMCY - 20, 20);
if (Result) then
begin
MouseFlag(X, Y, 2, 2, 0);
Wait(500 + Random(500));
end;
end;

Procedure FreeDTMs;
begin
FreeDTM(Gate);
FreeDTM(First);
FreeDTM(Second);
FreeDTM(Third);
FreeDTM(Four);
FreeDTM(Last);
FreeDTM(Brown);
FreeDTM(LTOP);
FreeDTM(LBOT);
FreeDTM(FTOP);
FreeDTM(FBOT);
FreeDTM(STOP);
FreeDTM(Cock);
end;

var
I, Time: Integer;
Success, Con: Boolean;
Wat: String;

begin
SetupSMART;
SetupSRL;
MouseSpeed := MouseSpeed + 2;
Initialize;
DeclarePlayers;
Repeat
while (InvCount < 27) do
begin
Success := False;
Con := False;
MakeCompass('N');
SetAngle(True);
if (InBeginning) then
begin
ImANerd;
end else
Teleported;
if (ClickGate) then
begin
for I := 0 to 5 do
begin
FindNormalRandoms;
SetRun(true);
if (GetMMLevels('Run', Wat) < 20) then
RestUntil(100);
if (I = 2) then
Wait(500 + Random(500));
Success := False;
MarkTime(Time);
while (not(Success) and not(xCaught)) do
if (TimeFromMark(Time) > 30000) then
Break
else
if (Tracers[i]()) then
begin
if (I = 2) then
Success := DukeNukem;
if (I = 5) then
Success := FindBrown;
if ((not(I = 2)) and (not(I = 5))) then
if (ClickDTM(DTMNames[I + 1])) then
Success := True;
end;
if (not(Success)) then
Break;
end;
end else
begin
Writeln('Lick my pickle and call me schlomo!');
TerminateScript;
end;
if (Success) then
begin
FindGanja;
while (not(InBeginning) and (not(Teleported))) do
Wait(1000);
end;
Wait(1000 + Random(1000));
end;
FindNormalRandoms;
if (not(WalkBack)) then
Break;
if (not(OpenShantayBank)) then
Break;
DepositAll;
CloseBank;
ToGarden;
Until(False);
FreeDTMs;
end.

YoHoJo

2011-11-12 02:10:33

Heard of this before but it's members only :/.
How much gp/hour does this make, I hear it's good stuff.
What are the skill requirements?

n3ss3s

2011-11-12 02:14:32

About 300k/h, skill reqs = 65 thieving

YoHoJo

2011-11-12 02:21:10

Oh, I thought it was more than that, but 300k/hr is nothing to scoff at, awesome!!
Does crowd matter at all? More people = slower profit?

n3ss3s

2011-11-12 02:22:53

No, crowd doesn't matter… + there's 0 crowd right now since bots r goan.

NCDS

2011-11-13 23:17:40

Seems you forgot a LoginPlayer; as the script never logs in.

Turns out I don't have high enough thieving, so that was the extent of my testing, lol.

n3ss3s

2011-11-14 15:00:14

From: NCDS
Seems you forgot a LoginPlayer; as the script never logs in.

Turns out I don't have high enough thieving, so that was the extent of my testing, lol.


Log in urself fat bastard :D