Enslaved
2013-05-24 23:49:00
How Long have You Played Runescape?
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
My forte: VBA, Python, Perl, C++ + Autohotkey(if it counts)
also have experience in Pascal script, JS, PHP, Java
Most of my programming experience was gained from making physics simulations for material science related tasks ( very maths oriented). as well as making autohotkey applets that make my life easier, i will enclose a sample of my latest thing i made for economics.
about 8 years in total Programming experience.
Are you a member of any other communities?
None of any relevance to programming, SRL or Runescape
Tell us about yourself…
Edit: My Guides: MultiDimensional Arrays (1st and only) – Lape
Please show us one (or multiple) of your scripts.
cooking guilder
Enslaved humidity
5 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
My forte: VBA, Python, Perl, C++ + Autohotkey(if it counts)
also have experience in Pascal script, JS, PHP, Java
Most of my programming experience was gained from making physics simulations for material science related tasks ( very maths oriented). as well as making autohotkey applets that make my life easier, i will enclose a sample of my latest thing i made for economics.
about 8 years in total Programming experience.
Are you a member of any other communities?
None of any relevance to programming, SRL or Runescape
Tell us about yourself…
From: Enslaved
I am fairly active on they skype chat, and used to be on here, but due to Finals, I took a year off runescape + related, with the exception of loitering in the maths/ science help section. But now I am back.
I enjoy helping people most of the time and like to know others honest opinions on me. As well as contributing to a community.
and thats about it
Edit: My Guides: MultiDimensional Arrays (1st and only) – Lape
Please show us one (or multiple) of your scripts.
//My main submission is going to be an experimental script I made today. which features:
//DDTM,Radial,SPS walking + walking Fail Safes
//basic banking
//custom object finding
//Randomised banking location.
//Edited SPS system - randomised
For examples that I can do the basics: please refer to my legacy scripts:
http://villavu.com/forum/showthread.php?p=1063131
http://villavu.com/forum/showthread.php?t=88506
http://villavu.com/forum/showthread.php?t=89257
attachments not working;
Script for application :Air Runner
DB RAW of submission:http://goo.gl/CayZk
DB DL:http://goo.gl/yVXb2
Autohotkey Sample: https://www.dropbox.com/s/he1mei1wo4pkhbz/FastEcon.zip
I am unable to provide samples of my research as I do not solely own the publication rights for it( group + sponsored projects)Air Runner: - new versprogram EnslavedAirRUnnerV05;
{$define Smart8} //This is a trial loop system + misses out many of the basics
{$i Srl/Srl.simba}//For applied use of basics please refer to my legacy scripts made a year ago
{$i SPS/SPS.Simba}//including my fletcher and cooker
{$IFDef Smart8}
{$I SRL/SRL/Misc/SmartGraphics.Simba}{$ENDIF}
const
Ess_Row = 2;
Ess_Col = 10;
TripExp = 1; // how much exp a trip
var
//globals
BankDTMAnchor, ReturnCol, ESSDTM, WalkDTM, G_RoadColor, G_WhiteColor, G_RedColor, Runs, ExpGained: Integer;
start: boolean;
aFound: Extended;
Task: procedure;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
Pin := '';
Active := True;
end;
end;
function MousePos: TPoint;
var
x, y: Integer;
begin
GetMousePos(x, y);
Result := Point(x, y);
end;
//All Mouse Functions By Bedland100 and flight , modified by ashman to shift mouse speeds after every step (From Ashman's LRC)
procedure SuperWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY, MSP, W: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2 := sqrt(2);
sqrt3 := sqrt(3);
sqrt5 := sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist := hypot(xs - xe, ys - ye);
wind := minE(wind, dist);
if dist >= targetArea then
begin
windX := windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY := windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end
else
begin
windX := windX / sqrt2;
windY := windY / sqrt2;
if (maxStep < 3) then
begin
maxStep := random(3) + 3.0;
end
else
begin
maxStep := maxStep / sqrt5;
end;
end;
veloX := veloX + windX;
veloY := veloY + windY;
veloX := veloX + gravity * (xe - xs) / dist;
veloY := veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist := maxStep / 2.0 + random(round(maxStep) div 2);
veloMag := sqrt(veloX * veloX + veloY * veloY);
veloX := (veloX / veloMag) * randomDist;
veloY := (veloY / veloMag) * randomDist;
end;
lastX := Round(xs);
lastY := Round(ys);
xs := xs + veloX;
ys := ys + veloY;
case Random(50) of
1..25: W := (MSP + (Random((MSP / 4))));
26..50: W := (MSP - (RandomRange((MSP / 2), MSP - 1)));
end;
if (W < 1) then
W := 1;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step := hypot(xs - lastX, ys - lastY);
wait(W);
lastdist := dist;
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X, Y, X2, Y2, j, Dist, MP: integer;
begin
j := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist / 150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX - (j * MP), eX + (j * MP));
Y2 := RandomRange(eY - (j * MP), eY + (j * MP));
SuperWindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := j;
end;
function SPS_WalkPathRnd(Path: TPointArray): boolean;//Edited by me to randomised sps mouse positioning
var
H, I, T, D, Fails: integer;
P, MM, MMF: TPoint;
begin
if (not SPS_IsSetup) then
begin
writeln('SPS ERROR: SPS_Setup was never called');
exit;
end;
T := GetSystemTime + 20000 + Random(5000);
Fails := 0;
H := High(Path);
while (not Result) and (GetSystemTime < T) and (Fails < 5) do
begin
if (not LoggedIn()) then
Exit;
RunEnergy(20);
P := SPS_GetMyPos();
for I := H downto 0 do
begin
MM := RotatePoint(Point(MMCX + Path[I].X - P.X, MMCY + Path[I].Y - P.Y), 0 - rs_GetCompassAngleRadians, MMCX, MMCY);
if MM = MMF then
Inc(Fails);
D := Distance(MM.X, MM.Y, MMCX, MMCY);
MM.X := MM.X + RandomRange( - 3, 3);
MM.Y := MM.Y + RandomRange( - 3, 3);
if (D < 10) then
break
else if (D < 70) then
begin
if (SPS_MultiMouse) then
MultiMouse(MM.X, MM.Y, 25, 3, false)
else
Mouse(MM.X, MM.Y, 5, 5, mouse_Left);
MMF := MM;
FFlag(5 + (Integer(I <> H) * 15));
T := getSystemTime + 20000 + Random(1000);
Break;
end;
end;
Result := (I = H);
end;
end;
function SPS_BlindWalkRnd(P: TPoint): Boolean;
var
Tries: Integer;
M: TPoint;
ctrlPoints: TPointArray;
begin
if (not SPS_IsSetup) then
begin
writeln('SPS ERROR: SPS_Setup was never called');
exit;
end;
repeat
if (not LoggedIn()) then
Exit;
M := SPS_GetMyPos();
if (M.X = - 1) then
Continue;
if (Length(ctrlPoints) = 0) then
ctrlPoints := TPABetweenPoints(Point(M.X, M.Y), Point(P.X, P.Y), 20 + Random(15), 10);
Inc(Tries);
if (Tries > 20) then
Exit;
Result := SPS_WalkPathRnd(ctrlPoints);
until (Result);
end;
procedure SPSFailSafeWalk(po: integer);
begin
case po of
1:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4538, 2876))); end;
2:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4497, 2888))); end;
3:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4457, 2904))); end;
4:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4429, 2926))); end;
5:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4395, 2934))); end;
6:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4353, 2968))); end;
7:begin repeat FFlag(0); until (SPS_BlindWalk(Point(4309, 2998))); end;
end;
end;
function Radial_WalkPP(po, dir: integer): boolean;
var
rev: integer;
begin
if (dir = - 1) then
begin
rev := 180;
end
else
rev := 0;
case Po of
1: Result := RadialWalk(G_RoadColor, 180 - rev, 225 - rev, 60, 4, 4);
2..3: Result := RadialWalk(G_RoadColor, 237 - rev, 256 - rev, 60, 4, 4);
4: Result := RadialWalk(G_RoadColor, 240 - rev, 265 - rev, 60, 4, 4);
5: Result := RadialWalk(G_RoadColor, 240 - rev, 265 - rev, 20, 4, 4);
6..7: Result := False;
end;
end;
Function TPDist(P1,P2:TPoint):Integer;
begin
Result := Distance(P1.x,P1.y,P2.x,P2.y);
end;
Function MultiColorDist(Colors,Tol,Maxdist:Array of LongInt;x1,y1,x2,y2:Integer):TpointArray; // Main Color to look for followed by surrounding colors
//Written by Enslaved
Var
i,j,k:integer;
TPAMain, ReturnTPA: TPointArray;
ColTPAA: Array of TPointArray;
TPACount : Array of Integer;
Begin
If High(Colors) <> High(tol) then
Begin
Writeln('Uneven array lengths');
Result := [];
Exit;
end;
If (High(Colors) <> (High(MaxDist) + 1)) then
Begin
Writeln('Make sure that the length of Max Dist is 1 less that of the colors');
Writeln('Current MaxDist Length:' + IntToStr(Length(MaxDist)));
Writeln('Current Color Items:' + IntToStr(Length(Colors)));
Result := [];
Exit;
end;
If (High(colors) = 0) then
begin
Writeln('Please search for more than 1 color');
result := [];
Exit;
End;
If FindColorsSpiralTolerance(Round((X1+x2)/2),Round((Y1+Y2)/2),TPAMain,Colors[0],x1,y1,x2,y2,Tol[0]) then
Begin
SetLength(TPACount,Length(TPAMain));
SetLength(ColTPAA,Length(Colors));
For i := 1 To High(Colors) do
FindColorsSpiralTolerance(Round((X1+x2)/2),Round((Y1+Y2)/2),ColTPAA[i],Colors[i],x1,y1,x2,y2,Tol[i]);
For i := 0 To High(TPAMain) do
Begin
For j := 1 to High(ColTPAA) do
Begin
For k := 0 to High(ColTPAA[j]) do
Begin
If (TPDist(ColTPAA[j][k],TPAMain[i]) <= MaxDist[j-1]) then
Begin
TPACount[i] := TPACount[i] + 1;
Break;
End;
End;
End;
If (TPACount[i] = High(ColTPAA)) Then
begin
TPACount[i] := 1;
end else
TPACount[i] := 0;
end;
End;
j := 0;
For i := 1 to High(TPAMain) do
Begin
If (TPACount[i] = 1) then
Begin
SetLength(ReturnTPA,(j + 1));
ReturnTPA[j] := TPAMain[i];
end;
End;
Result := ReturnTPA;
End;
(* Old method
procedure CalibrateRoad; //Picks colors after login to calibrate road color
var
i, j, k, Color, Size: integer;
TPA: TPointArray;
ATPA: T2DPointArray;
MTP: TPoint;
CheckCol: Boolean;
begin
Size := 3;
if FindColorsTolerance(TPA, 8750992, MMX1, MMY1, MMX2, MMY2, 15 ) then
begin
ATPA := SplitTpa(TPA, 5);
SortATPASIZE(ATPA, True);
Smart_DebugATPA(True,ATPA);
for i := 0 to high(ATPA) do
begin
MTP := MiddleTPA(ATPA[i]);
CheckCol := True;
Color := GetColor(MTP.X, MTP.Y);
for j := 1 to Size do
begin
for k := 1 to Size do
begin
if (color <> GetColor(Round(MTP.X - Round(Size / 2) + j), Round(MTP.Y - Round(Size / 2) + k))) then
CheckCol := False;
if not CheckCol then
Break;
end;
if not CheckCol then
Break;
end;
if CheckCol then
begin
G_RoadColor := color;
writeln('Road Color Calibrated to:' + inttostr(Color));
Exit;
end;
end;
end;
Writeln('Unable to find Road Color, Terminating script');
TerminateScript;
end;
*)
Function Calibrate(Color,Tol,size:LongInt; LowR,HighR:Extended): Boolean; //Picks colors after login to calibrate road color
var
i, j, k, PColor: integer;
TPA: TPointArray;
MTP: TPoint;
MatchR, CountY, CountN: Extended;
begin
if FindColorsSpiralTolerance( MMCX, MMCY, TPA, Color, MMX1, MMY1, MMX2, MMY2, tol) then
begin
{$IFDEF Smart8}
SMART_ClearCanvas;
Smart_DebugTPA(True,TPA);
Smart_DrawDotsEx(False,TPA,9639531);
{$ENDIF}
For i:= 0 to High(TPA) Do
Begin
MTP := TPA[i];
CountY := 0;
CountN := 0;
PColor := GetColor(MTP.X, MTP.Y);
for j := 0 to Size do
begin
for k := 0 to Size do
begin
if (Pcolor = GetColor(Round(MTP.X - Round(Size / 2) + j), Round(MTP.Y - Round(Size / 2) + k))) then
Begin
CountY := CountY + 1;
End Else
CountN := CountN + 1;
end;
End;
MatchR := (CountY / (CountY + CountN)*100);
WriteLn('Found ' + Floattostr(CountY) + ', Out Of ' + FloatToStr(CountN + CountY) + ' Giving matchrate of:' + floatTostr(MatchR));
If (MatchR >= LowR) and (MatchR <= HighR) then
begin
ReturnCol := PColor;
writeln(ReturnCol);
//wait(1500);
Result := True;
Exit;
end;
End;
end;
Result := False;
end;
Procedure CalibrateRoad;
var
col:LongInt;
begin
Col := 8750992;
If Calibrate(col,15,3,90,100) then
Begin
G_RoadColor := ReturnCol;
writeln('Road Color Calibrated to:' + IntToStr(ReturnCol));
wait(500);
end else
Begin
Writeln('UnableToFind Road, Dying');
terminateScript;
End;
End;
Procedure CalibrateDoor;
var
col:LongInt ;
begin
Col:= 131311;
If Calibrate(col,15,2,4,60) then
Begin
G_RedColor := ReturnCol;
writeln('Red Color Calibrated to:' + IntToStr(ReturnCol));
wait(500);
end else
Begin
Writeln('UnableToFind Door, Dying');
terminateScript;
End;
End;
Procedure CalibrateWalls;
var
col:LongInt;
begin
col:= 15724786
If Calibrate(col,20,2,10,40) then
Begin
G_WhiteColor := ReturnCol;
writeln('White Walls Color Calibrated to:' + IntToStr(ReturnCol));
wait(500);
end else
Begin
Writeln('UnableToFind Walls, Dying');
terminateScript;
End;
End;
Function FindThings(color, tol,dist :Array of integer; Text:string):boolean; // custom obj find
var
TPA: TPointArray;
ATPA: T2DPointArray;
x, y, i: Integer;
tmp:Variant;
begin
Writeln('Finding Things');
Result := false;
TPA:= MulticolorDist(color,tol,dist,MSX1,MSY1,MSX2,MSY2);
If (TPA[0] <> Point(0,0)) then
begin
Writeln(TPA);
ATPA := TPAtoATPA(TPA, 30);
sortATPASize(ATPA, true);
for i := 0 to high(Atpa) do
begin
MiddleTPAEx(ATPA[i], x, y);
HumanMMouse(x, y, 3, 3);
if WaitUpTextMulti([text], 1500) then
begin
CLickMouse2(true);
writeln('inaltar')
Result := True;
Exit;
end
end;
end else begin SPSFAILSAFEWALK(7); end;
end;
function SetDDTM(dtmno: integer): Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..2] of TDTMPointDef;
TempTDTM: TDTM;
begin
case Dtmno of
1:
begin
dtmMainPoint.x := 628;
dtmMainPoint.y := 145;
dtmMainPoint.AreaSize := 4;
dtmMainPoint.AreaShape := 1;
dtmMainPoint.Color := G_RoadColor;
dtmMainPoint.Tolerance := 100;
dtmSubPoints[0].x := 616;
dtmSubPoints[0].y := 131;
dtmSubPoints[0].AreaSize := 1;
dtmSubPoints[0].AreaShape := 1;
dtmSubPoints[0].Color := G_RedColor;
dtmSubPoints[0].Tolerance := 5;
dtmSubPoints[1].x := 606;
dtmSubPoints[1].y := 139;
dtmSubPoints[1].AreaSize := 1;
dtmSubPoints[1].AreaShape := 1;
dtmSubPoints[1].Color := G_WhiteColor;
dtmSubPoints[1].Tolerance := 11;
dtmSubPoints[2].x := 590;
dtmSubPoints[2].y := 168;
dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[2].AreaShape := 1;
dtmSubPoints[2].Color := G_RedColor;
dtmSubPoints[2].Tolerance := 5;
end;
2:
begin
dtmMainPoint.x := 20;
dtmMainPoint.y := 22;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := G_RoadColor;
dtmMainPoint.Tolerance := 100;
dtmSubPoints[0].x := 0;
dtmSubPoints[0].y := 40;
dtmSubPoints[0].AreaSize := 1;
dtmSubPoints[0].AreaShape := 1;
dtmSubPoints[0].Color := G_RedColor;
dtmSubPoints[0].Tolerance := 10;
dtmSubPoints[1].x := 28;
dtmSubPoints[1].y := 0;
dtmSubPoints[1].AreaSize := 1;
dtmSubPoints[1].AreaShape := 1;
dtmSubPoints[1].Color := G_RedColor;
dtmSubPoints[1].Tolerance := 10;
dtmSubPoints[2].x := 16;
dtmSubPoints[2].y := 6;
dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[2].AreaShape := 1;
dtmSubPoints[2].Color := G_WhiteColor;
dtmSubPoints[2].Tolerance := 11;
end;
3:
begin
dtmMainPoint.x := 22;
dtmMainPoint.y := 25;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := G_RoadColor;
dtmMainPoint.Tolerance := 50;
dtmSubPoints[0].x := 8;
dtmSubPoints[0].y := 33;
dtmSubPoints[0].AreaSize := 1;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := G_WhiteColor;
dtmSubPoints[0].Tolerance := 11;
dtmSubPoints[1].x := 42;
dtmSubPoints[1].y := 36;
dtmSubPoints[1].AreaSize := 1;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := G_RedColor;
dtmSubPoints[1].Tolerance := 10;
dtmSubPoints[2].x := 0;
dtmSubPoints[2].y := 0;
dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := G_RedColor;
dtmSubPoints[2].Tolerance := 10;
end;
4:
begin
dtmMainPoint.x := 27;
dtmMainPoint.y := 9;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := RoadColor;
dtmMainPoint.Tolerance := 100;
dtmSubPoints[0].x := 0;
dtmSubPoints[0].y := 22;
dtmSubPoints[0].AreaSize := 1;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := G_RedColor;
dtmSubPoints[0].Tolerance := 10;
dtmSubPoints[1].x := 30;
dtmSubPoints[1].y := 22;
dtmSubPoints[1].AreaSize := 1;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := G_WhiteColor;
dtmSubPoints[1].Tolerance := 11;
dtmSubPoints[2].x := 33;
dtmSubPoints[2].y := 0;
dtmSubPoints[2].AreaSize := 1;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := G_WhiteColor;
dtmSubPoints[2].Tolerance := 11;
end;
5:
begin
dtmMainPoint.x := 40;
dtmMainPoint.y := 123;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 8421506;
dtmMainPoint.Tolerance := 255;
dtmSubPoints[0].x := 40;
dtmSubPoints[0].y := 117;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 8421506;
dtmSubPoints[0].Tolerance := 255;
dtmSubPoints[1].x := 40;
dtmSubPoints[1].y := 69;
dtmSubPoints[1].AreaSize := 0;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 4278894;
dtmSubPoints[1].Tolerance := 15;
dtmSubPoints[2].x := 52;
dtmSubPoints[2].y := 125;
dtmSubPoints[2].AreaSize := 0;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 2239789;
dtmSubPoints[2].Tolerance := 20;
end;
6:
begin
dtmMainPoint.x := 60;
dtmMainPoint.y := 115;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 2840914;
dtmMainPoint.Tolerance := 255;
dtmSubPoints[0].x := 60;
dtmSubPoints[0].y := 115;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 2840914;
dtmSubPoints[0].Tolerance := 255;
dtmSubPoints[1].x := 90;
dtmSubPoints[1].y := 115;
dtmSubPoints[1].AreaSize := 0;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 15435904;
dtmSubPoints[1].Tolerance := 20;
dtmSubPoints[2].x := 90;
dtmSubPoints[2].y := 115;
dtmSubPoints[2].AreaSize := 0;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 15435904;
dtmSubPoints[2].Tolerance := 15;
end;
7:
begin
dtmMainPoint.x := 587;
dtmMainPoint.y := 167;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 65536;
dtmMainPoint.Tolerance := 255;
dtmSubPoints[0].x := 587;
dtmSubPoints[0].y := 167;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 65536;
dtmSubPoints[0].Tolerance := 255;
dtmSubPoints[1].x := 587;
dtmSubPoints[1].y := 151;
dtmSubPoints[1].AreaSize := 0;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 1657409;
dtmSubPoints[1].Tolerance := 20;
dtmSubPoints[2].x := 573;
dtmSubPoints[2].y := 147;
dtmSubPoints[2].AreaSize := 0;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 1923149;
dtmSubPoints[2].Tolerance := 15;
end;
end;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
writeln(Result);
end;
procedure FindNPCs;
var
TFNPC: TPointArray;
ATNPC: T2DPointArray;
x, y, i, startspot: Integer;
begin
FindMMColorsSpiralTolerance(TFNPC, 648677, 37);
FilterPointsPie(TFNPC, - 60, 70, 30, 55, MMCX, MMCY);
SortTPAFrom(TFNPC, Point(MMCX, MMCY));
ATNPC := SplitTPAEx(TFNPC, 3, 3);
{$IFDEF SMART8}
smart_DebugATPA(true, ATNPC);
{$ENDIF}
while ( - 1 = High(ATNPC)) do
begin
SPSFailSafeWalk(1);
FFlag(0);
startspot := SetDDTM(1);
if FindDTMRotated(WalkDTM, x, y, MMX1, MMY1, MMX2, MMY2, - Pi / 2, Pi / 2, Pi / 30, aFound) then
begin
HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(100);
FFlag(3);
end;
FreeDTM(startspot);
FindMMColorsSpiralTolerance(TFNPC, 648677, 37);
FilterPointsPie(TFNPC, - 60, 70, 30, 55, MMCX, MMCY);
SortTPAFrom(TFNPC, Point(MMCX, MMCY));
ATNPC := SplitTPAEx(TFNPC, 3, 3);
{$IFDEF SMART8}
smart_DebugATPA(true, ATNPC);
{$ENDIF}
end;
(* Testing TPAs
for i := 0 to High(ATNPC) do
begin
MiddleTpaEx(ATNPC[i],x,y);
HumanMMouse(x,y,3,3);
wait(1000);
end;
*)
i := RandomRange(0, High(ATNPC));
MiddleTpaEx(ATNPC[i], x, y);
x := x + RandomRange( - 2, 2);
y := y + RandomRange( - 2, 2);
HumanMMouse(x, y, 3, 3);
ClickMouse2(True);
end;
Function FindBanker:Boolean;
begin
Result := FindThings([5203573,13487300],[66,17],[20],'Bank');
end;
procedure DDTM_WALK(step: integer);
var
x, y, fin, i, j: Integer;
RunFailSafe: Boolean;
begin
i := 1;
fin := 7;
if (step = - 1) then// reversible
begin
i := i xor fin;//bitshift variable swap
fin := i xor fin;
i := i xor fin;
end;
while (i <> (fin + step)) do
begin
WalkDTM := SetDDTM(i);
j := 1 RunFailSafe := False;
while (j < 10) do
begin
if FindDTMRotated(WalkDTM, x, y, MMX1, MMY1, MMX2, MMY2, - Pi / 2, Pi / 2, Pi / 30, aFound) then
begin
HumanMMouse(X, Y, 2, 2);
ClickMouse2(True);
Wait(100);
FFlag(2);
Writeln('Point ' + inttostr(i) + ' done');
Break;
end;
Writeln('Not found Point ' + inttostr(i) + ', ' + inttostr(j) + 'time(s)');
wait(RandomRange(300,500));
Inc(j);
if (j = 4) then
begin
Writeln('Begining radial walk failsafe point :' + inttostr(i));
if Radial_WalkPP(i, step) then
begin
Writeln('Radial point :' + inttostr(i) + ' Successful, resuming path');
end
else
begin
Writeln('SPS Failsafe point :' + inttostr(fin));
SPSFAILSAFEWALK(fin);
exit;
end;
end;
end;
FreeDTM(WalkDTM);//free before new load
i := i + step
end;
end;
procedure WalkBank;
begin
DDTM_WALK( - 1);
end;
procedure Leave;
var
TPA: TPointArray;
ATPA: T2DPointArray;
t, x, y, i: Integer;
begin
MarkTime(t);
repeat
Wait(100);
until ((TimefromMark(t) > 3000) or (FindColorsspiralTolerance(MSCX, MSCY, TPA, 5804691, MSX1, MSY1, MSX2, MSY2, 20)));
if ((TimeFromMark(t) > 3000) and (GetTimeRunning > 60000)) then
terminateScript;
ATPA := TPAtoATPA(TPA, 30);
sortATPASize(ATPA, true);
for i := 0 to high(Atpa) do
begin
MiddleTPAEx(ATPA[i], x, y);
HumanMMouse(x, y, 3, 3);
if WaitUpTextMulti(['nter', 'orta', 'ortal'], 1500) then
begin
CLickMouse2(true);
break;
end
end;
FFlag(0);
end;
Procedure Report;
begin
ExpGained := (Runs * TripExp);
Writeln('#################Enslaved-AirRunner V0.3#################');
WriteLn('Time Running: '+TimeRunning);
Writeln('Exp Gained: ' + IntToStr(ExpGained));
Writeln('Exp/Hour: ' + IntToStr(Round((EXpGained/(GetTimeRunning/3600000.0)))));
Writeln('Runs: ' + IntToStr(Runs));
Writeln('Runs/Hour: ' + IntToStr(Round(( Runs/(GetTimeRunning/3600000.0)))));
//Writeln('Please Post Proggies');
end;
procedure Craft;
var
t:integer;
begin
marktime(t);
repeat
wait(100);
if (timefrommark(t)>30000) then
Exit;
Until (FindThings([7630706,4737867], [5,25],[30], 'lter'));
Inc(Runs);
Report;
end;
procedure EnterAltar;
var
t:integer;
begin
marktime(t);
repeat
wait(100);
if (timefrommark(t)>10000) then
Exit;
Until (FindThings([15119744,6250849], [40,46],[20] , 'ysterious'));
end;
procedure WalkAltar;
begin
DDTM_WAlk(1);
end;
procedure BankProc;
(*
not req
var
i, x, y: integer;
*)
begin
//EssDTM := SetEssDTM; not inuse
DepositAll;
WithdrawEx(Ess_Col, Ess_Row, 0, ['une', 'ssence']);
CloseBank;
if (InvCount <> 28) then
TerminateScript;
end;
Procedure BankFailSafe;
var
t:integer;
Begin
FindNPCs;
ClickMouse2(True);
FFlag(10);
Marktime(t)
Repeat
If (TimeFromMark(t)>30000) Then
TerminateScript;
Until FindBanker;
End;
procedure Bank;
var
p, x, y ,t: Integer;
begin
FindNPCs;
ClickMouse2(True);
FFlag(10);
(*BankDTMAnchor := SetDDTM(1);
if FindDTMRotated(BankDTMAnchor, x, y, MMX1, MMY1, MMX2, MMY2, - Pi / 2, Pi / 2, Pi / 30, aFound) then
begin
p := (MMCX - x) / iAbs(MMCX - x);
end
else
p := 0;
case p of
0:begin Writeln('Cannot Find Anchor');end;
1:begin Writeln('Anchor found, you are on East Side'); end;
- 1:begin Writeln('Anchor found, you are on the West Side'); end;
end;
FreeDTM(BankDTMAnchor);*)
Marktime(t);
repeat
OpenBankNPC;
If (TimeFromMark(t)>30000) then
Begin
writeln('cannot Bank, FailSafeMethod');
BankFailsafe;
end;
until Bankscreen;
end;
begin
Setupsrl;
SPS_Setup(RUNESCAPE_SURFACE, ['10_6', '10_7', '11_6', '11_7']);
SPS_Debug := True;
DeclarePlayers;
Start := TRUE;
{$IFDEF SMART8}
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
{$ENDIF}
LoginPLayer;
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
togglexpbar(True);
ExitSquealOfFortune;
CalibrateDoor;
CalibrateWalls;
CalibrateRoad;
SPSFAILSAFEWALK(1);
Bank;
Repeat
BankProc;
walkAltar;
EnterAltar;
Craft;
Leave;
WalkBank;
Bank;
Until AllPlayersInactive;
end.Others( outdated since last year):cooking guilder
program CookingGuilder;
{$DEFINE SMART}
{$i srl/srl.simba}
(*
{=====================================Change Log v0.4 ====================================}
//Edited Banking Detection
//Reverted back to object detection, colorspiraltolerance not working great
//Error fix
{=====================================Change Log v0.3 ====================================}
//Edited Failsafe system
//Added Option to speed up range and inv selection as requested
//Changed Inv Uptext Search Method to WaitUpText instead of IsUpText to stop looping bug
{=====================================Change Log v0.2 ====================================}
// Failsafes added (If Range not clicked will hop worlds),
// breaking system added - Made By Flight - slightly edited variable names
*)
//======================================Intro========================================
//I made this script as a semi stable Script that coos at the cooking guild
//It is fairly basic as i just bashed this together
//=======================================Setup========================================
//Just fill in the details of what you want to cook etc.
//currently works with any food that has the first option use and can be 1 click consumed
//Please post proggies and also some suggestions and errors
//
//===========================Declare Login Details here==============================
Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //Enter Username here
Players[0].Pass := ''; // Type Password Here
Players[0].Nick := ''; // Nickname = 3-4 lowercase letters of character name
Players[0].Active:= True; // Type True or dont bother running
Players[0].Pin := ''; // Leave Blank if none
end;
Const
{=========================Declare Settings Here=====================================}
{=========================General Settings=====================================}
Debug = True ;//True For details on where script is when its fucking up
RandomInvFoodSelect = True; // True if you want it to pick out a random item to use on range
//If True, Please state slots to start and end selection
StartInvSlot = 1 ;
EndInvSlot = 28 ;
//If False, Please state slot to Pick Item From
ItemSlot = 1 ;
//_____________________________________________________________________________
SimpleType = False ;(* True = 1st click without checking option - will be the faster option
False = Moves Mouse there and checks uptext- will be slightly slower*)
{=========================Banking Settings=====================================}
Tab = 1; //What Bank Tab is Your Stuff in? Keep all items in one.
RowNo = 0; //This is the row number where you food is, starting at 0 for first row
ColNo = 9;//This is the column number where you food is, starting at 0 for first column
FoodExp = 120;// Exp per food Cooked
FoodName = 'Lobster';//Just for Proggy purposes (Lobster, Tuna, Swordfish, etc.)
{=========Made color detection at first but was buggy so relies on uptext=======================}
{RawCol = 2112617; //Raw Food Color
RawTol = 15; // Raw Color Tolerance (leave it be if you don't even know what it is)
CookCol= 1594796 ; //Cooked food color
CookTol = 39; //Tolerance for cooked food color}
{================================Break settings============================================}
Breaking = True; //Are we going to take Breaks ( True / False )
SwitchWorlds = True; //Are we going to Hop worlds after breaks? ( True / False )
BreakIn = 140; //How long before we take a break? (minutes)
BreakFor = 30; //How long will we break for? (minutes)
Bir = 15; //Random minutes to add/subtract from how long until we break
Bfr = 15; //Random minutes to add/subjtract from break duraction
{**************************************************************************************************
Do Not Touch Below Or Risk Fucking It Up
***************************************************************************************************}
Version = 0.3 ;
var
x , y, Loads, ExpGained, Cooked: integer;
//Break variables
wb,xb,yb,zb,RealBTime,CurrentBTime,
BreakRounds,TotalBreaks: Integer;
//Failsafe vars
RangeClicked,Reset:boolean;
Rangemiss:integer;
{*******************************************************************************
Procedure HumanMMouse(eX, eY: Integer);
By: Flight
Description: Human-like miss-and-correct mouse movement
*******************************************************************************}
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;
{*******************************************************************************
Procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
By: Flight
*******************************************************************************}
procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist: extended;
lastX,lastY,MSP,W,maxStep,D: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
repeat
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
D := Random((Round(dist)/3));
if (D > 100) then
D := RandomRange(90, 100);
if (D < 5) then
D := RandomRange(5, 8);
maxStep := D;
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
If Dist>0 then //sorts out The divide by 0 error (and the world imploding every time it crashes)
begin
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
end;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
W := (Random(100/MSP))*3;
if (W < 5) then
W := 5;
wait(W);
lastdist:= dist;
until(hypot(xs - xe, ys - ye) < 1)
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
{*******************************************************************************
Procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
By: Flight
*******************************************************************************}
procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y: integer;
begin
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
GetMousePos(X, Y);
BrakeWindMouse(X, Y, eX, eY, 9, 15, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed);
end;
{*******************************************************************************
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
His Breaking system
By: Flight
*******************************************************************************}
Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
Var
h,m,s,timeleft: integer;
begin
if not LoggedIn then Exit;
if (HowManyPlayers = 1) then
begin
timeleft:=(wb) + (yb) - GetTimeRunning ;
ConvertTIME(Timeleft,H,M,S);
Writeln('Time Until Break: '+IntToStr(h)+' Hours, '+Inttostr(m)+' Minutes and '+ IntToStr(s)+' Seconds');
if (GetTimeRunning < ((wb) + (yb) + BreakRounds)) then Exit
else
if (GetTimeRunning > ((wb) + (yb) + BreakRounds)) then
begin
RealBTime := ((xb+zb)/60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((xb+zb)-TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
until(TimeFromMark(CurrentBTime)>(xb+zb));
Writeln('Logging in.');
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (wb) + (xb));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
wb := (BreakIn * 60000);
xb := (BreakFor * 60000);
yb := RandomRange(-Bir * 60000, Bir * 60000);
zb := RandomRange(-Bfr * 60000, Bfr * 60000);
end;
end;
end;
procedure AntiBan();
begin
if(not(LoggedIn))then Exit;
FindNormalRandoms;
//If Debug then Writeln('AntiBan');
case (Random(1000)) of
0 : BrakeMMouse(RandomRange(MSX1,MSX2),RandomRange(MSY1,MSY2),4,4);
1 : HoverSkill('random', False);
2 : ExamineInv;
3 : MouseSpeed := (RandomRange(9,15));
4 : begin HoverSkill('Cooking', False); Wait(RandomRange(2000, 4000)); end;
5 : begin PickUpMouse; SleepAndMoveMouse(1500 + Random(500)); end;
6 : begin GameTab(tab_Stats); Wait(1500 + Random(500)); GameTab(tab_Inv); end;
7 .. 50 : begin BoredHuman; SetAngle(SRL_ANGLE_HIGH); end;
51 : Wait(RandomRange(750, 2000));
end;
end;
Procedure SelectFood;
begin
If SimpleType then
begin
If RandomInvFoodSelect then
InvMouse(ItemSlot,1)
else
InvMouse(RandomRange(StartInvSlot,EndInvSlot),1);
end else
Begin
repeat
if (GetCurrentTab <> 25) then
Gametab(tab_inv);
if RandomInvFoodSelect then
InvMouse(RandomRange(StartInvSlot,EndInvSlot),3)
else
InvMouse(ItemSlot,3);
if WaitUpText('Use',500) or FindNormalRandoms then
begin
ClickMouse2(true);
If Debug then Writeln('Food Clicked');
Break;
end else
ClickMouse2(False);
until chooseoption('se') ;
end;
end ;
Procedure Bank;
var
count:integer;
begin
SetAngle(SRL_ANGLE_HIGH);
//MakeCompass('w');
count := 0 ;
repeat
repeat
FindNormalRandoms;
if FindObjTPA(x, y, 5931683, 12, -1, 10, 10, 60, ['ank', 'oth']) or FindNormalRandoms then //6063011 tol 5 for client
begin
BrakeMMouse(x,y,4,4);
if WaitUpText('ank Bank',400) or FindNormalRandoms then
begin
ClickMouse2(true);
If Debug then Writeln('Bank Single Clicked');
end else
begin
repeat
HumanMMouse(x,y,4,4);
WaitUptext('ank Bank',3000);
ClickMouse2(False);
until ChooseOption('ank') or FindNormalRandoms ;
If Debug then Writeln('Bank Menu Clicked');
end;
end else MakeCompass('w');
wait(3000);
if Pinscreen or FindNormalRandoms then
begin
InPin(Players[currentplayer].Pin);
If Debug then Writeln('PinEntered');
end;
until BankScreen ;
DepositAll;
If Debug then Writeln('Deposited all');
Banktab(tab);
WithDraw(ColNo,Rowno,28);
If Debug then Writeln('Food Withdrawn');
CloseBank;
wait(1000);
Inc(count);
If (Count > 1) then If Debug then Writeln('Withrawing is fucking up, trying again');
if (Count > 3) then
TerminateScript;
until (Invcount = 28);
end;
procedure Afkcook;
begin
if(not(LoggedIn))then Exit;
FindNormalRandoms;
Case (Random(10)) of
1 : begin wait(1500+random(3000)); writeln('Afking'); end;
end;
end;
Procedure WorldHop;
begin
repeat
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False));
until not loggedin;
LoginPlayer;
repeat until loggedin;
end;
Procedure Cook;
var
Found: boolean;
Fail: integer;
begin
repeat
SetAngle(SRL_ANGLE_HIGH);
If FindObjTPAMulti(x, y, [1977558, 1581995, 1581993], 27, -1, 5, 5, 10, ['aw', 'nge']) or FindNormalRandoms then
//If FindColorSpiralTolerance(x,y,1845443,354,74,398,190,30) or FindNormalRandoms then
begin
Found := true;
RangeClicked := False;
If Debug then Writeln('Range Found');
BrakeMMouse(x, y, 3, 3);
If WaitUptext('Range',500) or FindNormalRandoms then
begin
ClickMouse2(true);
MouseBox(250, 410, 261, 425, 2);
if WaitUpTextMulti(['ook', 'll'], 2500) or FindNormalRandoms then
begin
ClickMouse2(true);
RangeClicked := True;
If Debug then Writeln('Range Click Option Chosed');
end;
end else
begin
ClickMouse2(false);
ChooseOption('ange');
wait(1000 + random(300));
MouseBox(250, 410, 263, 425, 2);
if WaitUpTextMulti(['ook', 'll'], 2500) or FindNormalRandoms then
begin
ClickMouse2(true);
RangeClicked := True;
If Debug then Writeln('Range Menu Option Chosen');
end ;
end;
end else
begin
AntiBan;
Inc(Fail);
If Fail > 3 then
begin
Break;
If Debug then Writeln('YOU HAVE FUCKED UP THE SCRIPT-AKA range not found');
Playsound('D:\Simba\alarm.mp3'); //not working atm
TerminateScript;
end;
end;
until(Found);
wait(400+random(300));
end;
Procedure Cooking;
var
ts,Count:integer;
begin
count:=0;
MarkTime(ts);
GameTab(tab_Inv);
repeat
LevelUp;
if (count<10) then
AntiBan
else
FindNormalRandoms;
wait(2000 + random(600));
inc(count);
If Debug then Writeln('Count : '+IntToStr(Count));
if (GetCurrentTab <> 25) then
Gametab(tab_inv);
if (TimeFromMark(ts) > RandomRange(90000,110000)) then
Break;
if (Count>15) then
InvMouse(27,3);
FindNormalRandoms;
until WaitUpText('Eat',300) and ( TimeFromMark(ts) > 65000 ) ;
If Debug then Writeln('Load Done');
FindNormalRandoms;
//Afkcook;
inc(Loads);
Writeln('Loads: ' + ToStr(Loads) + ' Cooked' );
end;
Procedure Report;
begin
Cooked := Loads * 28;
ExpGained := (Cooked * FoodExp);
Writeln('#################Cooking Guilder-v0.5#################');
WriteLn('Time Running: '+TimeRunning);
Writeln('Exp Gained: ' + IntToStr(ExpGained));
Writeln('Exp/Hour: ' + IntToStr(Round((EXpGained/(GetTimeRunning/3600000.0)))));
Writeln(FoodName + ' Cooked: ' + IntToStr(Cooked));
Writeln(FoodName + 'Cooked/Hour: ' + IntToStr(Round(( Cooked/(GetTimeRunning/3600000.0)))));
Writeln('Please Post Proggies');
end;
Procedure Setup;
begin
{$IFDef Smart}
SRL_SixHourFix:= True;
{$ENDIF}
MouseSpeed := 12
wb := (BreakIn * 60000);
xb := (BreakFor * 60000);
yb := RandomRange(-Bir * 60000, Bir * 60000);
zb := RandomRange(-Bfr * 60000, Bfr * 60000);
ClearDebug;
SetupSRL;
DeclarePlayers;
//ChangeWorld(RandomWorld(True, False));
LoginPlayer;
end;
Label
STARTPOINT;
begin
Setup;
StartPoint:
Reset := false
ExitSquealOfFortune;
repeat
if not loggedin then
loginplayer;
until loggedin;
Writeln('Logged In');
repeat
Bank;
togglexpbar(True);
repeat
RangeMiss := 0;
repeat
SelectFood;
Cook;
if ( RangeMiss > 0 ) then Writeln('We Have Failed '+ IntToStr(RangeMiss) + ' Times');
if ( RangeMiss > 10 ) then
begin
Repeat
WorldHop;
Until Loggedin;
Reset:= True;
end;
inc(RangeMiss)
If Reset then Break;
FindNormalRandoms;
if not RangeClicked then
Case Random(4) of
1: MakeCompass('w');
2: MakeCompass('e');
3: MakeCompass('s');
3: MakeCompass('n');
end;
Until RangeClicked;
If Reset then Break;
InvMouse(1,3);
FindNormalRandoms;
until WaitUpText('Eat',1000);
If Reset then Break;
If Debug then Writeln('Found Started Cooking');
Cooking;
Report;
if breaking then BreakHandler(BreakIn,BreakFor,Bir,Bfr);
until not loggedin;
If Reset then Goto StartPoint;
end.
Fletching refined:
program EnslavedFletcher;
{$DEFINE SMART}
{$i srl/srl.simba}
var
BowDTM, Fletched, Counter,LogDTM , BowStringDTM, KnifeDTM, StartXP, CurrentXp: integer;
wb, xb, yb, zb, RealBTime, CurrentBTime, BreakRounds, TotalBreaks: Integer;
const
//What banktab is the fletching stuff stored in?
WatBankTab = 9;
//What banking method would you like to use?
BankStyle = 'Set' ;
//( 'Find' / 'Set' )
// 'Set' bankstyle: withdraws from a set location
// 'Find' bankstyle: Finds the item DTM make sure there is only one Log type in that tab
// (not recommended for stringing as it might mix up strung from unstrung)
//
// What Are you doing?
Action = 'Fletch';
//( 'Fletch' / 'String' )
//
// What type of bow are you making?
Bowtype = 'Long';
//( 'Long' / 'Short' ) Longbows or shortbows
{=====Fill out If Bankstyle set to 'Set'=====}
FirstItemCol = 1;
FirstItemRow = 0;
BowStringCol = 0;
BowStringRow = 0;
//Show Debug text?
Debug = True;
//Exp Bar row- one of the options must be total exp or fletch exp
XpBar = 1;
{===================================SRL Stats==============================================}
SRLStats_Username = ''; // ***Leave blank if you don't have a stats account***
SRLStats_Password = '';
{================================Break settings============================================}
Breaking = False ; //Are we going to take Breaks ( True / False )
SwitchWorlds = True; //Are we going to Hop worlds after breaks? ( True / False )
BreakIn = 140; //How long before we take a break? (minutes)
BreakFor = 30; //How long will we break for? (minutes)
Bir = 15; //Random minutes to add/subtract from how long until we break
Bfr = 15; //Random minutes to add/subjtract from break duraction
{========First inv slot Co-ordinates do not touch=========}
MIX3 = 600;
MIY3 = 300;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Pin := '';
Players[0].Active := True;
end;
Function FindDTMRotate(DTM:Integer; var x, y:integer; sx, sy, ex, ey:integer):boolean;
var
aFound:extended;
begin
result := finddtmrotated(DTM, x, y, sx, sy, ex, ey, - Pi, Pi, Pi / 30, aFound);
end;
procedure AntiBan();
begin
if (not (LoggedIn)) then
Exit;
FindNormalRandoms;
case (Random(1000)) of
0: MMouse(RandomRange(MSX1, MSX2), RandomRange(MSY1, MSY2), 4, 4);
1: HoverSkill('random', False);
2..3: ExamineInv;
4:
begin
HoverSkill('Fletching', False);
Wait(RandomRange(2000, 4000));
end;
5:
begin
PickUpMouse;
SleepAndMoveMouse(1500 + Random(500));
end;
6:
begin
GameTab(tab_Stats);
Wait(1500 + Random(500));
GameTab(tab_Inv);
end;
7..50:
begin
BoredHuman;
SetAngle(SRL_ANGLE_HIGH);
end;
51: Wait(RandomRange(750, 2000));
end;
end;
procedure WaitFinnish;
var
x, y : integer;
begin
if (Action = 'Fletch') then
begin
wait(randomrange(1000, 2000));
Marktime(Counter);
LogDTM:= DTMFromString('mwQAAAHic42RgYNBkZGAwAmJzIDYAYnUgVgBiaSCWBGIZII4FqotigNCpQJwOxBlAnAYVCwdiMwMBIMmEF6cwEAaMRGA4AAAltQXB');
while Existsitemdtm(LogDTM, x, y) do
begin
case random(100) of
1..9: Sleepandmovemouse(Randomrange(500, 1000));
10..15: Antiban;
end;
if timefrommark(Counter) > 60000 then
begin
FreeDTM(LogDTM);
Exit;
end;
end;
FreeDTM(LogDTM);
end
else
begin
wait(randomrange(1000, 2000));
Marktime(Counter);
BowstringDTM:= DTMFromString('mfgEAAHicrc5NCkBQFIbhcy3BAizFJkytUAyUnxRyI0T+duSVO1CGfPV0Buc7dWwRySyREho1CiSIESFAjgodBjSml5peiF6JjJixYMX2sOMwrt2k7psOLbSZvufylfWZI/9E/eSdE/G+HLQ=');
while Existsitemdtm(BowStringDTM, x, y) do
begin
case random(100) of
1..9: Sleepandmovemouse(Randomrange(500, 1000));
10..15: Antiban;
end;
if timefrommark(Counter) > 30000 then
begin
FreeDTM(BowStringDTM);
Exit;
end;
end;
FreeDTM(BowStringDTM);
end;
end;
function ChooseOptionDTM(DTM: Integer): boolean;
var
x, y: integer;
begin
wait(randomrange(200,500));
if FindDTMRotate(DTM, x, y,MCX1,MCY1,MCX2,MCY2) then
begin
MMouse(x, y, 7, 7);
ClickMouse2(true);
if Debug then
WriteLn('Option Chosen');
result := true;
exit;
end;
end;
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
var
h, m, s, timeleft: integer;
begin
if not LoggedIn then
Exit;
if (HowManyPlayers = 1) then
begin
timeleft := (wb) + (yb) - GetTimeRunning;
ConvertTIME(Timeleft, H, M, S);
Writeln('Time Until Break: ' + IntToStr(h) + ' Hours, ' + Inttostr(m) + ' Minutes and ' + IntToStr(s) + ' Seconds');
if (GetTimeRunning < ((wb) + (yb) + BreakRounds)) then
Exit
else if (GetTimeRunning > ((wb) + (yb) + BreakRounds)) then
begin
RealBTime := ((xb + zb) / 60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((xb + zb) - TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: ' + IntToStr(h) + ':' + IntToStr(m) + ':' + IntToStr(s));
until (TimeFromMark(CurrentBTime) > (xb + zb));
Writeln('Logging in.');
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (wb) + (xb));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
wb := (BreakIn * 60000);
xb := (BreakFor * 60000);
yb := RandomRange( - Bir * 60000, Bir * 60000);
zb := RandomRange( - Bfr * 60000, Bfr * 60000);
end;
end;
end;
procedure Fletch;
var
t:integer;
begin
wait(randomrange(200, 300));
Invmouse(1, 3);
if Debug then
WriteLn('mouse moved to 1st inv slot');
if waituptext('Craft',5000) then
begin
clickmouse2(true);
KnifeDTM := DTMFromString('mKgEAAHicnc27CoAwDIXh1FpEwWrxMjiIuPoWff+H8g9m0UX0wDckkJMoIjUCvFzxNuu+QYsOA0YkRExYsWPDghm93VQorTNYl/bkQ5uLz5L9fnqL++meE/9qAow=');
while (t<6000) do
begin
ChooseOptionDTM(KnifeDTM);
if ChooseOptionDTM(BowDTM) then
begin
freeDTM(KnifeDtm);
exit;
End;
end;
FreeDTM(KnifeDTM);
end;
end;
procedure StringBows;
var
x, y,t: integer;
begin
wait(randomrange(200, 300));
if ExistsItemDTM(BowDTM, x, y) then
begin
MMouse(x, y, 7, 7);
wait(200);
BowstringDTM:= DTMFromString('mfgEAAHicrc5NCkBQFIbhcy3BAizFJkytUAyUnxRyI0T+duSVO1CGfPV0Buc7dWwRySyREho1CiSIESFAjgodBjSml5peiF6JjJixYMX2sOMwrt2k7psOLbSZvufylfWZI/9E/eSdE/G+HLQ=');
if ExistsItemDTM(BowStringDTM, x, y) then
begin
FreeDTM(BowStringDTM);
MMouse(x, y, 7, 7);
wait(200);
ClickMouse2(True);
end;
FreeDTM(BowstringDTM);
end ;
while (timefrommark(t)<2000) do
ChooseOptionDTM(BowDTM);
end;
procedure Bank;
var
x, y, chestDTM, failcount: Integer;
aFound: Extended;
begin
ChestDTM := DTMFromString('mQwAAAHicY2ZgYOBkZmDgBWJhIFZmZGBQAmI5IM6MDWDITw5luHHuHAMHUB0MMyJhIAAAu7wFaA==');
while not (bankscreen) and not (pinscreen) do
begin
Writeln('Time To Bank');
if (finddtmrotated(ChestDTM, x, y, MSX1, MSY1, MSX2, MSY2, - Pi, Pi, Pi / 30, aFound)) then
begin
mmouse(x, y, 10, 10);
if (WaitUpText('hest', 1000)) then
Clickmouse2(True);
end
else
begin
ClickNorth(SRL_ANGLE_HIGH);
case (random(4)) of
1: MakeCompass('E');
2: MakeCompass('N');
3: MakeCompass('S');
4: MakeCompass('W');
end;
inc(failcount);
end;
if failcount > 3 then
terminatescript;
end;
freeDTM(ChestDtm);
repeat
if (PinScreen) then
(InPin(Players[0].Pin));
until (BankScreen);
wait(randomrange(400, 800));
Quickdeposit(SRL_DEPOSIT_ALL);
if (CurrentBankTab <> Watbanktab) then
Banktab(Watbanktab);
end;
procedure WithdrawFletch;
var
x, y: Integer;
begin
Case lowercase(bankstyle) of
'find':
begin
LogDTM:= DTMFromString('mwQAAAHic42RgYNBkZGAwAmJzIDYAYnUgVgBiaSCWBGIZII4FqotigNCpQJwOxBlAnAYVCwdiMwMBIMmEF6cwEAaMRGA4AAAltQXB');
if Debug then
WriteLn('Withdraw log DTM Loaded');
if FindDTMRotate(LogDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
freeDTM(logDTM);
if Debug then
WriteLn('Log DTM found');
MMouse(x, y, 7, 7);
clickmouse2(false);
waitoption('All' , 1000);
Fletched := Fletched + 28;
wait(randomrange(400, 600));
end;
Closebank;
end;
'set':
begin
if (currentbanktab <> WatBankTab) then Banktab(WatBankTab);
withdraw(FirstItemCol ,FirstItemRow ,28);
if Debug then
WriteLn('Withdrew logs');
Fletched := Fletched + 28;
end;
end;
end;
procedure Withdrawstring;
var
x, y: Integer;
begin
Case lowercase(bankstyle) of
'find':
begin
if Debug then
WriteLn('Bank DTM Load');
if FindDTMRotate(BowDTM, x, y, MSX1,MSY1,MSX2,MSY2) then
begin
if Debug then
WriteLn('BowDTM Found');
ClickMouse2(False);
WaitOption('Withdraw-X' ,1500);
wait(randomrange(200 , 700));
Typesend('14');
BowstringDTM:= DTMFromString('mfgEAAHicrc5NCkBQFIbhcy3BAizFJkytUAyUnxRyI0T+duSVO1CGfPV0Buc7dWwRySyREho1CiSIESFAjgodBjSml5peiF6JjJixYMX2sOMwrt2k7psOLbSZvufylfWZI/9E/eSdE/G+HLQ=');
if FindDTMRotate(BowstringDTM, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
FreeDTM(BowstringDTM);
if Debug then
WriteLn('String DTM Found');
ClickMouse2(False);
WaitOption('Withdraw-X' , 1500);
wait(randomrange(200 , 700));
Typesend('14');
end;
FreeDTM(BowstringDTM);
wait(randomrange(400 , 600));
Fletched := Fletched + 14;
end;
Closebank;
if Debug then
end;
'set':
begin
if (currentbanktab <> WatBankTab) then Banktab(WatBankTab);
withdraw(FirstItemCol,FirstItemRow,14);
withdraw(BowstringCol,bowstringRow,14);
if Debug then
WriteLn('Withdrew Bows and Strings');
Fletched := Fletched + 14;
end;
end;
end;
function SkillStarted: boolean;
var
x, y, t: Integer;
begin
case lowercase(action) of
'Fletch':
begin
if (invcount<14) then
exit;
Marktime(t);
if Debug then
WriteLn('Checking Started');
while (timefrommark(t) < 10000) do
begin
if (FindDTM(BowDTM, x, y, MIX1, MIY1, MIX3, MIY3)) then
begin
if Debug then
WriteLn('Started');
Result := True;
Exit;
end;
WriteLn('Not Started');
Result := False;
end;
end;
'string':
begin
if (invcount<14) then
exit;
Marktime(t);
if Debug then
WriteLn('Checking Started');
while (timefrommark(t) < 10000) do
begin
if (invcount<28) then
begin
if Debug then
WriteLn('Started');
Result := True;
Exit;
end;
//WriteLn('Not Started');
Result := False;
end;
end;
end;
end;
procedure InvCheck;
var
Failcount: integer;
begin
if Debug then
WriteLn('checking Inv');
while (Invcount < 28) and (Failcount < 3) do
begin
Bank;
case Action of
'String': WithdrawString;
'Fletch': WithdrawFletch;
end
inc(failcount);
end;
if (Failcount >= 3) then
terminatescript;
end;
procedure Proggy;
var
xp: integer;
begin
XP := GetXpBar(XpBar) - Startxp;
CurrentXP := Xp - CurrentXp;
Writeln('********************************');
WriteLn('Time Running = '+TimeRunning);
Writeln('Exp Gained = ' + IntToStr(Xp));
Writeln('Exp/Hour = ' + IntToStr(Round((xp/(GetTimeRunning/3600000.0)))));
Writeln('Fletched/Hour = ' + IntToStr(Round(( Fletched/(GetTimeRunning/3600000.0)))));
Writeln('Items Done = ' + IntToStr(fletched));
Writeln('AIO Fletcher by EnSlaved ');
Writeln('********************************');
Writeln('Post Feedback and Proggies On Forum Thread Please!');
Stats_IncVariable('Fletching EXP (Gained)',currentXp);
end;
procedure DoString;
var
failed: integer;
begin
repeat
If not loggedin then
loginplayer;
Bank;
WithdrawString;
StringBows;
if SkillStarted then
begin
Failed := 0;
WaitFinnish;
Proggy;
if breaking then
BreakHandler(BreakIn, BreakFor, Bir, Bfr);
end
else
begin
inc(Failed) if (failed > 3) then
TerminateScript;
end;
until (AllPlayersInactive);
end;
procedure DoFletch;
var
failed: integer;
begin
repeat
Bank;
WithdrawFletch;
Fletch;
if SkillStarted then
begin
Failed := 0;
WaitFinnish;
Proggy;
if breaking then
BreakHandler(BreakIn, BreakFor, Bir, Bfr);
end
else
begin
inc(Failed) if (failed > 3) then
TerminateScript;
end;
until (AllPlayersInactive);
end;
begin
{$IFDef Smart}
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
SetupSrl;
If (SRLStats_Username = '') Then
SetupSRLStats(1231, 'Anonymous', 'anon1337')
Else
SetupSRLStats(1231, SRLStats_Username, SRLStats_Password);
Declareplayers;
while not (loggedin) do
Loginplayer;
MakeCompass('E');
SetAngle(0);
if not (IsXPBarOpen) then
ToggleXpBar(True);
StartXp:= GetXPBar(XPbar);
Case lowercase(Bowtype) of
'short' : BowDTM:= DTMFromString('m1gAAAHic42JgYPgHxCyMDAzsQMwIxL+hYp+A+D0QfwXiH0AcB8QRQBwFZScBcSIQpwBxKpSdwAACTERi4gAjkRgBAEzmCrg=');
'long' : BowDTM:= DTMFromString('mwQAAAHic42RgYGAHYlYozQXE/EAsCMW8DBDADqVZoGweIBYAYjGoekawLBMRmDBgJALDAQB4lADU');
end;
ExitSquealOfFortune;
case Action of
'String': DoString;
'Fletch': DoFletch;
end;
end.
Enslaved humidity
program EnslavedHumidity;
{$DEFINE SMART}
{$i srl/srl.simba}
var
failed,Rounds: integer;
wb, xb, yb, zb, RealBTime, CurrentBTime, BreakRounds, TotalBreaks: Integer;
const
//What banktab is the fletching stuff stored in?
What = 0; //0 for vials 1 for clay
WatBankTab = 4;
Debug = True;
PerInv = 27; // how may items in a inv are you doing
ItemProfit = 100 ; //GP PerItem
{================================Break settings============================================}
Breaking = False ; //Are we going to take Breaks ( True / False )
SwitchWorlds = True; //Are we going to Hop worlds after breaks? ( True / False )
BreakIn = 140; //How long before we take a break? (minutes)
BreakFor = 30; //How long will we break for? (minutes)
Bir = 15; //Random minutes to add/subtract from how long until we break
Bfr = 15; //Random minutes to add/subjtract from break duraction
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Pin := '';
Players[0].Active := True;
end;
Function FindDTMRotate(DTM:Integer; var x, y:integer; sx, sy, ex, ey:integer):boolean;
var
aFound:extended;
begin
result := finddtmrotated(DTM, x, y, sx, sy, ex, ey, - Pi, Pi, Pi / 30, aFound);
end;
{*******************************************************************************
Procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
By: Flight
*******************************************************************************}
procedure BrakeWindMouse(xs, ys, xe, ye, gravity, wind, minWait, maxWait, targetArea: extended);
var
veloX,veloY,windX,windY,veloMag,dist,randomDist,lastDist: extended;
lastX,lastY,MSP,W,maxStep,D: integer;
sqrt2,sqrt3,sqrt5: extended;
begin
MSP := MouseSpeed;
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
repeat
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
D := Random((Round(dist)/3));
if (D > 100) then
D := RandomRange(90, 100);
if (D < 5) then
D := RandomRange(5, 8);
maxStep := D;
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
If Dist>0 then //sorts out The divide by 0 error (and the world imploding every time it crashes)
begin
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
end;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
W := (Random(100/MSP))*3;
if (W < 5) then
W := 5;
wait(W);
lastdist:= dist;
until(hypot(xs - xe, ys - ye) < 1)
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
MouseSpeed := MSP;
end;
{*******************************************************************************
Procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
By: Flight
*******************************************************************************}
procedure BrakeMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y: integer;
begin
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
GetMousePos(X, Y);
BrakeWindMouse(X, Y, eX, eY, 9, 15, 10.0 / randSpeed, 15.0 / randSpeed, 10.0 * randSpeed);
end;
function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
var
h, m, s, timeleft: integer;
begin
if not LoggedIn then
Exit;
if (HowManyPlayers = 1) then
begin
timeleft := (wb) + (yb) - GetTimeRunning;
ConvertTIME(Timeleft, H, M, S);
Writeln('Time Until Break: ' + IntToStr(h) + ' Hours, ' + Inttostr(m) + ' Minutes and ' + IntToStr(s) + ' Seconds');
if (GetTimeRunning < ((wb) + (yb) + BreakRounds)) then
Exit
else if (GetTimeRunning > ((wb) + (yb) + BreakRounds)) then
begin
RealBTime := ((xb + zb) / 60000);
Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
Logout;
MarkTime(CurrentBTime);
repeat
Wait(21000);
ConvertTime((xb + zb) - TimeFromMark(CurrentBTime), h, m, s);
ClearDebug;
Writeln('Breaktime left: ' + IntToStr(h) + ':' + IntToStr(m) + ':' + IntToStr(s));
until (TimeFromMark(CurrentBTime) > (xb + zb));
Writeln('Logging in.');
if SwitchWorlds then
if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False))
else
LoginPlayer;
Wait(4000);
Result := LoggedIn;
ClickNorth(SRL_ANGLE_HIGH);
IncEx(BreakRounds, (wb) + (xb));
Inc(TotalBreaks);
Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
wb := (BreakIn * 60000);
xb := (BreakFor * 60000);
yb := RandomRange( - Bir * 60000, Bir * 60000);
zb := RandomRange( - Bfr * 60000, Bfr * 60000);
end;
end;
end;
Procedure Depositvial;
var
x,y,WaterVDTM:integer;
begin
case What of
1:WaterVDTM := DTMFromString('mAAEAAHic42FgYJjKxMCwCIiXQukFQDwPiKcB8WQg7gfiLiDuBOJuIJZkZGDgB2JhIBYHYmkglgNiRSQswwhRJwrEUY48QFuYiMZcDKQBRhIxMgAA3bwJTg==');
0:WaterVDTM := DTMFromString('mAAEAAHiclcoxCoAwEETRjbX3SxS1SUDMfTxSIKAiWojH8Rdb2O7Am2mmFZGIhBlZd0IHj4AeA0YcKNhx4cGre+PEhqq/uKx0Y2CLM/rnA9faD7Q=');
end;
if FindDtmRotate(WaterVDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
BrakeMMouse(x,y,7,7);
Clickmouse2(false);
Waitoption('All',3000);
end else
begin
FreeDTM(WaterVDTM);
writeln('Cannot bank water vial , exiting script');
terminatescript;
end;
FreeDTM(WaterVDTM);
end ;
procedure Bank;
var
x, y, chestDTM, failcount: Integer;
aFound: Extended;
begin
ChestDTM := DTMFromString('mQwAAAHicY2ZgYOBkZmDgBWJhIFZmZGBQAmI5IM6MDWDITw5luHHuHAMHUB0MMyJhIAAAu7wFaA==');
while not (bankscreen) and not (pinscreen) do
begin
Writeln('Time To Bank');
if (finddtmrotated(ChestDTM, x, y, MSX1, MSY1, MSX2, MSY2, - Pi, Pi, Pi / 30, aFound)) then
begin
mmouse(x, y, 10, 10);
if (WaitUpText('hest', 1000)) then
Clickmouse2(True);
end
else
begin
ClickNorth(SRL_ANGLE_HIGH);
case (random(4)) of
1: MakeCompass('E');
2: MakeCompass('N');
3: MakeCompass('S');
4: MakeCompass('W');
end;
inc(failcount);
end;
if failcount > 3 then
terminatescript;
end;
freeDTM(ChestDtm);
repeat
if (PinScreen) then
(InPin(Players[0].Pin));
until (BankScreen);
wait(randomrange(400, 800));
end;
Procedure WithdrawV;
var
VialDTM,x,y:integer;
begin
if (CurrentBankTab <> Watbanktab) then
Banktab(Watbanktab);
Case what of
1:VialDTM := DTMFromString('m6wAAAHic42ZgYMhmYmDIBOI8IC6E0iCxDCBOBeIkIE4G4jQglmRkYBAFYhEglgBiGSCWg2IQWwqIxaFq2gq8gaYzEYW5GIgHjCRgJAAAU9UHLw==');
0:VialDTM := DTMFromString('mAAEAAHiclchBCkBQFEbhy8BAdiKSokjW8QaKsleJnmIgy3kn3YEZ/vruqRuJSIEKNVo0SBBrU2TIUcJiwoIdpzqwYcWsvwvGdFz/VT+Md0P5tkDr/fScA11IDpM=')
end;
if FindDtmRotate(VialDTM,x,y,MBX1,MBY1,MBX2,MBY2) then
begin
BrakeMMouse(x,y,7,7);
Clickmouse2(false);
Waitoption('All',3000);
end else
begin
freeDTM(VialDTM);
writeln('Cannot find empty vial in bank, exiting script')
terminatescript;
end;
FreeDTM(VialDTM);
CLosebank;
end;
Function Humidify:boolean;
var
SpellDTM,X,Y:integer;
begin
Gametab(tab_Magic);
SpellDTM := DTMFromString('mFQEAAHic42VgYIhgYmAIB+JYIE4E4hQoBrFjmCDy/kDsB8SBQBwExAaMDAyaQKwDxLpAbAjEJkBsDsVmUGwExPpQdbJ5q4G2MZKERRhIB6TZAMEoAABm0gig');
if FindDtmRotate(SpellDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
BrakeMMouse(x,y,7,7);
if waitUpTextMulti(['Ca','ast'],2000) then
Clickmouse2(true);
result := True;
Inc(Rounds);
end ;
FreeDTM(SpellDTM);
end;
procedure Proggy;
begin
Writeln('********************************');
WriteLn('Time Running = '+TimeRunning);
Writeln('Exp Gained = ' + IntToStr(Rounds*65));
Writeln('Exp/Hour = ' + IntToStr(Round(((Rounds*65)/(GetTimeRunning/3600000.0)))));
Writeln('Rounds Done = ' + IntToStr(Rounds));
Writeln('Rounds/Hour = ' + IntToStr(Round(( Rounds/(GetTimeRunning/3600000.0)))));
Writeln('Items Done = ' + IntToStr(Rounds*PerInv));
Writeln('Profit Gained = ' + IntToStr(ItemProfit*Rounds*PerInv));
Writeln('Profit/Hour = ' + IntToStr(Round((ItemProfit*Rounds*PerInv/(GetTimeRunning/3600000.0)))));
Writeln('Humidifier by EnSlaved ');
Writeln('********************************');
Writeln('Post Feedback and Proggies On Forum Thread Please!');
Stats_IncVariable('Magic EXP (Gained)',(Rounds*65));
end;
begin
{$IFDef Smart}
SRL_SixHourFix := True;
Smart_FixSpeed := True;
{$ENDIF}
SetupSrl;
Declareplayers;
Loginplayer;
MakeCompass('E');
SetAngle(0);
Bank;
REPEAT
WithdrawV;
Humidify;
if breaking then
BreakHandler(BreakIn, BreakFor, Bir, Bfr);
Proggy;
wait(randomrange(2000,2600));
Failed:=0
repeat
Bank;
Inc(failed);
Wait(RandomRange(500,800));
If (failed>8) then
Terminatescript;
until (bankscreen)
DepositVial;
until(allplayersinactive);
end.