SRL Archive - Archive

Enslaved - SRL Member Application


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…
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 vers
program 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.

Justin

2013-05-24 23:52:40

Please post your scripts in SIMBA tags.

Thanks

Enslaved

2013-05-25 00:04:04

FastEcon - autohotkey example, quick economics notetaking and formatting, expandable shortcut library, so customisable to replace any sequence of symbols with desired text

#Persistent
#NoEnv
#SingleInstance
SetBatchLines, -1
SendMode, Input
SetKeyDelay ,1
SetControlDelay, -1

IconFile := A_ScriptDir . "\Icon.ico"
_HS_File := A_ScriptDir . "\Strings.dat"
_HS_Ini := A_ScriptDir . "\FastEcon.ini"
_TITLE := "Economics KW replace - Enslaved"
_FILE := ""
_STRINGS := "`n"
_CHANGED := False
_SEARCH := ""
_MATCH := 0
IfNotExist,%_HS_FILE%
{
FileAppend,
(
:r*:CE..::Consumer Expenditure
:r*:RGDP..::Real GDP
:r*:QD..::Quantity Demanded
:r*:PL..::Price Level
:r*:D..::Demand
:r*:P..::Price
:r*:Q..::Quantity
:r*:FP..::Fiscal Policy
:r*:MP..::Monetary Policy
:r*:Y..:Income
:r*:S..::Supply
:r*:BOP..::Balance of Payments
:r*:CAD..::Current Account Deficit
:r*:CAS..::Current Account Surplus
:r*:CA..::Current Account
:r*:ER..::Exchange Rates
:r*:ROI..::Rate of Interest
:r*:DPI..::Demand-pull Inflation
:r*:CS..::Consumer Surplus
:r*:PS..::Producer Surplus
:r*:TC..::Total Cost
:r*:AC..::Average Cost
:r*:ULC..::Unit Labour Cost
:r*:MC..::Marginal Cost
:r*:MB..::Marginal Benefit
:r*:TR..::Total Revenue
:r*:AR..::Average Revenue
:r*:MR..::Marginal Revenue
:r*:SR..::Short-run
:r*:LR..::Long-run
:r*:AE..::Allocative Efficiency
:r*:PE..::Productive Efficiency
:r*:DE..::Dynamic Efficiency
:r*:LS..::Labour supply
:r*:SRLS..::Short-run labour supply
:r*:LRLS..::Long-run labour supply
:r*:HC..::Human Capital
:r*:FOP..::Factors of Production
:r*:OC..::Opportunity Cost
:r*:PPC..::Production Possibility Curve
:r*:PPF..::Production Possibility Frontier
:r*:PES..::Price Elasticity of Supply
:r*:YED..::Income Elasticity of Demand
:r*:PED..::Price Elasticity of Demand
:r*:XED..::Cross Elasticity of Demand
:r*:EC..::External Cost
:r*:SC..::Social Cost
:r*:EB..::External Benefit
:r*:PC..::Private Cost
:r*:PB..::Private Benefit
:r*:MSC..::Marginal Social Cost
:r*:MSB..::Marginal Social Benefit
:r*:NE..::Negetive Externality
:r*:PE..::Positive Externality
:r*:POI..::Provision of Information
:r*:AFC..::Average Fixed Cost
:r*:CBA..::Cost Benefit analysis
:r*:CP..::Ceterus Paribus
:r*:IF..::Information Failure
:r*:CPI..::Consumer Price Index
:r*:CP.I..::Cost Push Inflation
:r*:AD..::Aggregate Demand
:r*:AS..::Aggregate Supply
:r*:LRAS..::Long Run Aggregate Supply
:r*:SRAS..::Short Run Aggregate Supply
),%_HS_FILE%
Reload
}
IfNotExist,%_HS_Ini%
{
IniWrite,ON,%_HS_Ini%,Formatting,Subtext
IniWrite,ON,%_HS_Ini%,Formatting,Supertext
IniWrite,ON,%_HS_Ini%,Replace,Main
IniWrite,ON,%_HS_Ini%,Replace,Case
}
IniRead,toggle,%_HS_Ini%,Formatting,Supertext,ON
IniRead,toggle1,%_HS_Ini%,Formatting,Subtext,ON
IniRead,quickreplace,%_HS_Ini%,Replace,Main,ON
IniRead,qrcase,%_HS_Ini%,Replace,Case,ON
Menu, Tray, NoStandard
Menu, Tray, Add, About, Msg
menu, tray, add, Help, msg1
Menu, Tray, Add, KW Replace Help, msg2
Menu, tray, Add
Menu, Tray, Add, Toggle Supertext `(%toggle%`), Toggler
Menu, Tray, Add, Toggle Subtext `(%toggle1%`),Toggler1
Menu, Tray, add
Menu, Tray, Add, KW Replace`(%quickreplace%`),KWtogg
Menu, Tray, Add, KW Case Sensitive `(%qrcase%`),casetogg
Menu, Tray, Add, Edit Replace List,EList
Menu, tray, add
Menu, Tray, add, R&eload, reloadapp
Menu, Tray, Add, E&xit , EndApp
menu, tray, Icon, %Iconfile%
menu, tray, Tip, FastEcon - Michael Lin
Gui, font, s10 Arial
Gui, Color, F7F0FC
Gui, Margin, 10, 10
Gui, Add, Button, x15 y381 w67 h25 , &Edit
Gui, Add, Button, x102 y381 w67 h25 , &Delete
Gui, Add, Button, x12 y430 w70 h30 , &Save
Gui, Add, Button, x92 y430 w70 h30 , &Close
Gui, Add, Button, x172 y430 w70 h30 , &Quit
Gui, Add, GroupBox, x12 y10 w330 h200, Edit Replace List:
Gui, Add, GroupBox, xp+10 yp+18 w300 h50 Section, Abrv.:
Gui, Add, Edit, xs+10 ys+18 w150 h20 vED_1
Gui, Add, GroupBox, xm+10 ys+60 w320 h100 Section, Phrase to replace
Gui, Add, Edit, xs+10 ys+18 w300 h70 vED_2 WantTab WantReturn
Gui, Add, Button, xs+10 y+20 w67 h25 vBT_Add, &Add
Gui, Add, Button, x+20 yp w67 h25 Disabled vBT_Repl, &Replace
Gui, Add, Button, x+20 yp w67 h25 vBT_Clear, &Clear
Gui, Add, Groupbox, xm ys+150 h185 w330 Section, HotStrings:
Gui, Add, ListView, xp+10 yp+18 w300 h120 vLV_1 Sort ReadOnly Grid NoSortHdr -Multi HwndLV_ID ; changed, added "-Multi"
, Brief|Text
Gui, Add, Button, x15 y381 w67 h25 , &Edit
Gui, Add, Button, x102 y381 w67 h25 , &Delete
Gui, Add, Button, x12 y430 w70 h30 , &Save
Gui, Add, Button, x92 y430 w70 h30 , &Close
Gui, Add, Button, x172 y430 w70 h30 , &Quit

;Gui, Add, Button, xs+10 y+10 w67 h25 , &Edit ;buttons modified
;Gui, Add, Button, x+20 yp w67 h25 , &Delete
;Gui, Add, Button, xm ys+200 w67 h30 , &Save
;Gui, Add, Button, xs+280 yp w67 h30, &Close
;Gui, Add, Button, xs+560 yp w67 h30, &Quit

Return
; ------------------------------------------------------------------------------
; Gui's Hotkey
; ------------------------------------------------------------------------------
EList: ;;browse hotstrings
GoSub, Read_File
Gui, Show, , %_TITLE%
Return
; ------------------------------------------------------------------------------
; Subroutines
; ------------------------------------------------------------------------------
Read_File:
LV_Delete()
FileRead, _FILE, %_HS_File%
StringReplace, _FILE, _FILE, `r`n, `n, All
Loop, Parse, _File, `n, `r
{
If RegExMatch(A_LoopField,"^:(.*):(.*)::(.*)", HS_) {
If (HS_3) {
LV_Add("",HS_2, HS_3)
_STRINGS .= HS_2 . "`n"
}
}
}
_FILE := "`n" . _File
If (SubStr(_FILE, StrLen(_FILE), 1) <> "`n") {
_FILE .= "`n"
}
StringTrimRight,_STRINGS, _STRINGS, 1
LV_ModifyCol(1, "AutoHdr")
Return
; ------------------------------------------------------------------------------
; Gui Subroutines
; ------------------------------------------------------------------------------

; ------------------------------------------------------------------------------
ButtonAdd:
; Add new hotstring
Gui, Submit, NoHide
If (!RegExMatch(ED_1, "\S+") Or !RegExMatch(ED_2, "\S+")) {
Return
}
ED_1 := To_Raw(ED_1)
while (substr(ED_1,1,1) = " ")
{
ED_1:= SubStr(ED_1,2)
}
While (substr(ED_1,(strlen(ED_1)),1) == ".")
{
ED_1 := substr(ED_1,1,Strlen(ED_1)-1)
}
StringUpper, ED_1, ED_1
;ED_1:= " " . ED_1 . ".."
ED_1:= ED_1 . ".."
LV_Add("", ED_1, ED_2)
_HS := ":r`*:" . ED_1 . "::" . ED_2
_FILE .= _HS . "`n"
_CHANGED := True
Gosub, ButtonClear
Return
; ------------------------------------------------------------------------------
ButtonEdit:
; Edit selected hotstring
_Row := LV_GetNext()
If (!_Row) {
Return
}
Loop, % LV_GetCount("Col")
{
LV_GetText(ED_%A_Index%, _Row, A_Index)
}
_HS := ":r`*:" . ED_1 . "::" . ED_2
ED_1 := To_Raw(ED_1)
while (substr(ED_1,1,1) = " ")
{
ED_1:= SubStr(ED_1,2)
}
ED_1 := Substr(ED_1,1,(StrLen(ED_1)-2))
While (substr(ED_1,(strlen(ED_1)-1),1) == ".")
{
ED_1 := substr(ED_1,1,Strlen(ED_1)-1)
}
ED_2 := From_Raw(ED_2)
GuiControl, Disable, BT_Add
GuiControl, Enable, BT_Repl
GuiControl, Disable, BT_Find
GuiControl, , ED_1, % ED_1
GuiControl, , ED_2, % ED_2
Return
; ------------------------------------------------------------------------------
ButtonDelete:
; Delete selected hotstring
_Row := LV_GetNext()
If (!_Row) {
Return
}
Loop, % LV_GetCount("Col")
{
LV_GetText(ED_%A_Index%, _Row, A_Index)
}
_HS := ":r`*:" . ED_1 . "::" . ED_2
LV_Delete(_Row)
StringReplace, _FILE, _FILE, `n%_HS%`n, `n
GuiControl, Enable, BT_Add
GuiControl, Disable, BT_Repl
GuiControl, Enable, BT_Find
_CHANGED := True
Return
; ------------------------------------------------------------------------------
ButtonSave:
; Save hotstring file
Gui, +OwnDialogs
If (FileExist(_HS_FILE . "_New")) {
FileDelete, %_HS_FILE%_New
If (ErrorLevel) {
MsgBox, 16, %_TITLE%, Couldn't delete %_HS_FILE%_New
Return
}
}
FileAppend, % SubStr(_FILE, 2, StrLen(_FILE) -2), %_HS_FILE%_New
If (ErrorLevel) {
MsgBox, 16, %_TITLE%, Couldn't write to %_HS_FILE%_New
Return
}
FileMove, %_HS_FILE%_New, %_HS_FILE%, 1
If (ErrorLevel) {
MsgBox, 16, %_TITLE%, Couldn't overwrite %_HS_FILE%
}
_CHANGED := False
Reload
Return
; ------------------------------------------------------------------------------
ButtonReplace:
; Replace hotstring
Gui, Submit, NoHide
If (!RegExMatch(ED_1, "\S+") Or !RegExMatch(ED_2, "\S+")) {
Return
}
ED_1 := To_Raw(ED_1)
while (substr(ED_1,1,1) = " ")
{
ED_1:= SubStr(ED_1,2)
}
While (substr(ED_1,(strlen(ED_1)),1) == ".")
{
ED_1 := substr(ED_1,1,Strlen(ED_1)-1)
}
ED_1 := To_Raw(ED_1)
StringUpper, ED_1, ED_1
;ED_1:= (" " . ED_1 . "..")7
ED_1:= (ED_1 . "..")
ED_2:= To_Raw(ED_2)
LV_Modify(_Row, "",ED_1, ED_2)
StringReplace, _FILE, _FILE, `n%_HS%`n, `n:r`*:%ED_1%::%ED_2%`n
_CHANGED := True
Gosub, ButtonClear
Return
;----------------------------------------------------------------------------------
ButtonClear:
; Clear edit area
GuiControl, Enable, BT_Add
GuiControl, Disable, BT_Repl
GuiControl, , ED_1 ; reset to blank
GuiControl, , ED_2 ; reset to blank
Return

ButtonQuit:
ButtonClose:
GuiClose:
GuiEscape:
Gui, +OwnDialogs
If (_CHANGED) {
MsgBox, 36, %_TITLE%,
(LTrim
You've changed your hotstrings!

Do you want to save the changes?
)
IfMsgBox, Yes
{
Gosub, ButtonSave
}
}
Gui, Hide
Return
Reloadapp:
Reload
return
; ------------------------------------------------------------------------------
; Functions
; ------------------------------------------------------------------------------
Find_Next(String, LastRow)
{
; Search next match for string in lestview's column 3
Global
Local Options := ""
Local Text := ""
Local End := LV_GetCount()
Local Row := LastRow + 1
If (Row > End) {
MsgBox, 64, %_TITLE%, No (more) matches for`n%String%
Return 0
}
Loop
{
LV_GetText(Text, Row, 2)
Text := From_Raw(Text)
If (InStr(Text, String)) {
Return Row
}
Row++
If (Row > End) {
MsgBox, 64, %_TITLE%, No (more) matches for`n%String%
Return 0
}
}
}
; ------------------------------------------------------------------------------
To_Raw(String)
{
StringReplace, String, String, ``, ````, All
; Using `r works better than `n in MS Word, etc.
StringReplace, String, String, `r`n, ``r, All
StringReplace, String, String, `n, ``r, All
StringReplace, String, String, %A_Tab%, ``t, All
StringReplace, String, String, `;, ```;, All
Return String
}
; ------------------------------------------------------------------------------
From_Raw(String)
{
; Reverse translation from To_Raw() (see above)
StringReplace, String, String, ``r, `r`n, All
StringReplace, String, String, ``t, %A_Tab%, All
StringReplace, String, String, ```;, `;, All
StringReplace, String, String, ````, ``, All
Return String
}
;==================================
;Formating starts here
msg1:
MsgBox, 4128, Help|FastEcon - Enslaved (c) 2013, Use CTRL + Arrow keys to insert arrow symbols.`n`nUse '' (double apostrophe`, not speech marks) for superscript`nUse `,`,(Double Comma) for Subscript`n`nThe super/sub script will end after a space is pushed or 5 seconds has passed`n`nYED`,XED`,PED`,PES will automatically be superscripted`n`nTo use the auto abbreeviation`, type the abbreviation followed by a double full stop.`nNote that this is case sensitive by default`, but may be toggled in the tray menu. `n`nCustom Additions may be added via the "Edit Replace list". and will be saved in the String.dat file.`n`nThe list will then be saved in the same folder as the location of this program.`nIf you need write permissions to write to this folder`, please run as administrator`,
return
msg:
MsgBox, 64, About|FastEcon - Enslaved (c) 2013, This is a tool made by: ens`nIt is used for quick arrow inserts and Sub`/superscript formatting and quick keyword replacement`n made in 2013
return
Msg2:
MsgBox, 64, Help- KW Replacement| FastEcon - Enslaved (c) 2013, This is the help document for the Key-Word Replacer`nTo replace key words`, just type the abbreviation followed by 2 full stops and it automatically replace it for you. `nYou can also add to the list of replacements by using the editor found in the tray menu.`nto keep your changes`, make sure you have Strings.dat in the same folder as your program.
return
Toggler1:
ptoggle1:=toggle1
If (toggle1 == "ON")
toggle1 := "OFF"
else
toggle1 := "ON"
Menu, Tray, Rename,Toggle Subtext `(%ptoggle1%`),Toggle Subtext `(%toggle1%`)
IniWrite,%toggle1%,%_HS_Ini%,Formatting,Subtext
return
Toggler:
ptoggle:=toggle
If (toggle == "ON")
toggle := "OFF"
else
toggle := "ON"
Menu, Tray, Rename,Toggle Supertext `(%ptoggle%`),Toggle Supertext `(%toggle%`)
IniWrite,%toggle%,%_HS_Ini%,Formatting,Supertext
return
EndApp:
ExitApp
return
Ctrl & Up::
Send {u+2191}
return
Ctrl & Down::
Send {u+2193}
return
Ctrl & Right::
send {u+2192}
return
Ctrl & Left::
send {u+2190}
return
:?*:''::
if (toggle1 == "ON")
{
Input,lastkey,T4,{Space}.
If (lastkey != ".")
{
Send, {SHIFTDOWN}{CTRLDOWN}={CTRLUP}{SHIFTUP}
Send %lastkey%
Send, {SHIFTDOWN}{CTRLDOWN}={CTRLUP}{SHIFTUP}
}
}
return

:?*:,,::
if (toggle == "ON")
{
Input,lastkey,T4,{Space}.
If (lastkey != ".")
{
Send, {CTRLDOWN}={CTRLUP}
Send %lastkey%
Send {CTRLDOWN}={CTRLUP}
}
}
return
:cb0:YED::
:cb0:XED::
:cb0:PED::
:cb0:PES::
Send {Left}{SHIFTDOWN}{LEFT}{SHIFTUP}{CTRLDOWN}{SHIFTDOWN}={SHIFTUP}{CTRLUP}{RIGHT}{RIGHT}
Return

casetogg:
pqrcase:=qrcase
If (qrcase == "ON")
{
qrcase := "OFF"
}
else
{
qrcase := "ON"
}
IniWrite,%qrcase%,%_HS_Ini%,Replace,Case
Menu, Tray, Rename,KW Case Sensitive `(%pqrcase%`),KW Case Sensitive `(%qrcase%`)
return
kwtogg:
pqr:=quickreplace
If (quickreplace == "ON")
quickreplace := "OFF"
else
quickreplace := "ON"
IniWrite,%quickreplace%,%_HS_Ini%,Replace,Main
Menu, Tray, Rename,KW Replace`(%pqr%`),KW Replace`(%quickreplace%`)
return

#If ((quickreplace == "ON") and (qrcase == "OFF"))
#Hotstring c1
#IncludeAgain *i Strings.dat
#If
return
#If ((quickreplace == "ON") and (qrcase == "ON"))
#Hotstring c
#IncludeAgain *i Strings.dat
return

Olly

2013-05-25 00:46:58

Can't work out why you use DDTM's you dont edit them or anything, would be far better in string form.

King

2013-05-25 00:49:43

Activity is good, however the script (air rune runner) does not compile, you should look into why, if you get stuck feel free to PM any of us, Im just pretty busy right now and don't have time to go through them all, however do not fear, I will go through the entire script(s) before voting and post a nice long response(:

From: Ollybest
Can't work out why you use DDTM's you dont edit them or anything, would be far better in string form.


^Olly is right, you should AutoColor the DDTM's, and play with them a bit more, maybe watch my video on how to use them, it's in the siggy :)

Enslaved

2013-05-25 01:06:02

copy paste + DB error on my end, try again, sorry. The reason i kept them like that is i am trying to play about with them at the moment

King

2013-05-25 01:20:05

From: Enslaved
copy paste + DB error on my end, try again, sorry. The reason i kept them like that is i am trying to play about with them at the moment


Left the User and Pass in the script, may want to remove that ;)

I will look through it in the morning

Enslaved

2013-05-25 11:59:22

there we go autocolor added

program EnslavedAirRUnnerV03; //v0.3, Entire thing made in 10 hours non-stop from 15:00PM 24/06/2013 - 1:00Am 26/06/2013
{$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
{$I SRL/SRL/Misc/SmartGraphics.Simba}

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;
(* 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
SMART_ClearCanvas;
Smart_DebugTPA(True,TPA);
Smart_DrawDotsEx(False,TPA,9639531);
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: integer; Text:string):boolean; // custom obj find
var
TPA: TPointArray;
ATPA: T2DPointArray;
x, y, i: Integer;
begin
Result := false;
If FindColorsspiralTolerance(MSCX, MSCY, TPA, Color, MSX1, MSY1, MSX2, MSY2, tol) then
begin
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);
smart_DebugATPA(true, ATNPC);
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(0);
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);
smart_DebugATPA(true, ATNPC);
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;

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(300);
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)>10000) then
Exit;
Until (FindThings(7828085, 5, '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, 40, '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 Bank;
var
p, x, y: 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);*)
repeat
OpenBankNPC;
until Bankscreen;
end;


begin
Setupsrl;
SPS_Setup(RUNESCAPE_SURFACE, ['10_6', '10_7', '11_6', '11_7']);
SPS_Debug := True;
DeclarePlayers;
Start := TRUE;
SRL_SIXHOURFIX := TRUE;
SMART_FIXSPEED := TRUE;
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.

King

2013-05-26 01:00:46

Having read through the script, these are my thoughts.

I do see a serious problem that is constant, you use static wait times throughout the script. This is not a good practice at all, and is one of the main reasons I was denied my first application, this should ALWAYS be present, it shows consideration of not being detected along with being a very basic rule to follow.

Functions with static waits (to show a few)

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
SMART_ClearCanvas;
Smart_DebugTPA(True,TPA);
Smart_DrawDotsEx(False,TPA,9639531);
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;

and here is one more

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);
smart_DebugATPA(true, ATNPC);
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(0);
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);
smart_DebugATPA(true, ATNPC);
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;

Because the static waits are constantly used, it leads me to believe you don't really understand why we need them. These can all easily be fixed by using
wait(RandomRange(500, 1000));
in the place of whatever wait time you want, even if it only varies slightly, it is 100x better than a static wait.

Another thing I would like to see is a bit more dynamic main-loop perhaps? This script to me seems to be a bit 1 2 3…What if it messes up in the middle of running or an error occurs? Will it correct itself? I see you put in fail safes with walking, which is good, however I dont see them used throughout the script.

Another problem, creating an infinite loop..

procedure Bank;
var
p, x, y: 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);*)
repeat
OpenBankNPC;
until Bankscreen;
end;

Can you see where it is? This can cause a script to be infinitely stuck, this can be a really really big issue.

Another thing I would like to see is more debugging, and making it optional, can you think of a way to write a procedure that will debug only when set to? It is immensely helpful at finding where the script is off at. I suggest adding it after uptext failures, this will help you know what it is not finding.

I would also like to see a bit more complex TPA usage, I see you use TPA's and sort them, but you dont really do much with them. I believe you have the concept, but I would like to see more.

Function FindThings(color, tol: integer; Text:string):boolean; // custom obj find
var
TPA: TPointArray;
ATPA: T2DPointArray;
x, y, i: Integer;
begin
Result := false;
If FindColorsspiralTolerance(MSCX, MSCY, TPA, Color, MSX1, MSY1, MSX2, MSY2, tol) then
begin
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;

While custom object finding is good, this seems a bit too simple in terms of TPA usage, I would really like to see you make this a bit more advanced, it would go a long way towards showing me you have the knowledge of them, I suggest reading this tutorial for those, helped me a ton in using them, they are now my favorite coding tool.


I really do not want you to take this as me being overly harsh, or trying to tear you down. I had issues on my application, trust me, very silly issues. What really helped me was the responses like this, That showed me what to fix and why I should fix them. I hated seeing a no vote without a reason.

So a summary of what I think:

Static waits must go, you have to change them. If you dont change them, then it has to be a no from me.
Same as the above for infinite loops.
I would like to see a more dynamic main-loop, meaning it can fix itself ect, not a 1 2 3 script.
Debugging, while not necessary to script function, is necessary to script writing, I would like to see some of what I suggested.
I would like you to show me your knowledge of TPA/ATPAs, beef up the finding function to be a bit mroe accurate and robust by reading the tutorial I linked you too and applying it.

Without these changes I am leaning towards a no vote, because while you activity and attitude down, I believe these are some issues that must be addressed.

I will hold my vote until closer to the end, when you make any of the above changes feel free to mention me :)

To get a yes vote from me, just follow what I said. I believe you can and will change them, so I urge you too, I rather vote yes than no ;)

Ian

2013-05-26 01:06:44

@King
Many of the static waits you mentioned are in functions like this:

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;
Static waits are fine in places like this because there is no interaction with the client, so Jagex doesn't know that it was a static wait.

King

2013-05-26 01:24:13

From: BMWxi
@King
Many of the static waits you mentioned are in functions like this:

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;
Static waits are fine in places like this because there is no interaction with the client, so Jagex doesn't know that it was a static wait.


I just picked the top 3-4 I saw in the script, they persist throughout the script, I will edit my post to contain the ones that do impact it :)

Enslaved

2013-05-26 06:58:49

that was mearly for a debug purpose, they function perfectly without the waits, i was using it to check that the functions work as i was drawing to the smart canvas, static waits give me time to see what colors were being picked, as for the findNPCs, you can see that it is directly followed by a flag wait, therefore it will still be rather random

Enslaved

2013-05-26 12:43:32

Alternate Color Function added… Featuring MultiDimensional Arrays - (One and only tutorial on them in my siggy)

program EnslavedAirRUnnerV03; //v0.3, Entire thing made in 10 hours non-stop from 15:00PM 24/06/2013 - 1:00Am 26/06/2013
{$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.

King

2013-05-26 13:42:40

From: Enslaved
that was mearly for a debug purpose, they function perfectly without the waits, i was using it to check that the functions work as i was drawing to the smart canvas, static waits give me time to see what colors were being picked, as for the findNPCs, you can see that it is directly followed by a flag wait, therefore it will still be rather random


As I said, the waits are static throughout, I would like to see them changed, calibrates are fine, and possiblely the NPC finding. I will update my post when I get on the computer, did you address the Infinite loop? I am also looking through the coloring function.

E* Much better on TPA usage. I really would like to see the mainloop updated as well. Any errors will stop the script in its tracks.

I'm glad to see you updating, but I would like the issues I posted addressed. Also something that really bugs me, you said you threw this together in a matter of hours, after talking on Skype with some of the other members, I really feel you rushed this and could have made a knock out app. I believe this script is far under what you are capable of, I really wished you had put more time into this considering all of your other programming experience. I believe that membership is just as much a community rank, at this current time I do not think if you are accepted with this script you will value the acceptance as much as you should, which in turn makes me believe you may fall by the wayside and end up leaving rather shortly.

So after much discussion and thought, it is going to have to be a no from me.

I want to see something with effort and testing. I believe you have the ability but blew it off by applying with a rushed script. It's like seeing a Ferrari go 15Kmph down a race track, there is so much more ability in you. I wish you the best of luck with this and if any, future apps!

StickToTheScript

2013-05-26 18:50:28

I have seen you around the forums and talked with you on skype and I believe that you are a good person to have as a Member. Yes from me. :D

The Mayor

2013-05-26 21:54:42

From: King
you said you threw this together in a matter of hours, after talking on Skype with some of the other members, I really feel you rushed this and could have made a knock out app … I really wished you had put more time into this considering all of your other programming experience


My thoughts exactly.

It is a nice script but it is rushed (it didn't even compile). We like to see the blood, sweat and tears that have gone into an application; it shows us that you really want the member title. Hell, it took me 3 weeks to write, test and refine my membership script ;)

Le Jingle

2013-06-03 22:33:42

Yes from the guy who always dies someway, somehow! :p
Gl on exams,

Lj

BobboHobbo

2013-06-29 09:02:52

From: King
Activity is good, however the script (air rune runner) does not compile, you should look into why, if you get stuck feel free to PM any of us, Im just pretty busy right now and don't have time to go through them all, however do not fear, I will go through the entire script(s) before voting and post a nice long response(:



^Olly is right, you should AutoColor the DDTM's, and play with them a bit more, maybe watch my video on how to use them, it's in the siggy :)


I really like how your DDTM Tutorial is not a rip off of my DDTM tutorial at all.. cause mine was written 5 years ago at the age of 13 lol. And you're really replying to Enslaves application as you are the 'God' of Simba/SRL, like okay, its great to point out weakness'es in the scripts his made, but please dont be a douche.


I will hold my vote until closer to the end, when you make any of the above changes feel free to mention me <— As if your vote is far supperior to every other member here at SRL.

To get a yes vote from me, just follow what I said. I believe you can and will change them, so I urge you too, I rather vote yes than no <— Dick of a comment.


Sorry, but I find your Application treating methods quite irritating.

Ontopic now, I believe Enslaved is Competent of scripting obviously, Yes he has places which he can improve on, no one is perfect but he has the foundations down right and he can always move forward and improve. Voting Yes, goodluck.

EDIT* Well, i would vote yes if the poll was still open :tongue:

Sin

2013-06-29 09:22:28

Where was I when this poll started???? YES YES YES YES YES!

The Mayor

2013-06-30 06:24:23

If this was still open it would have been 9/8 in favour of yes ;)

King

2013-06-30 12:39:18

From: BobboHobbo
I really like how your DDTM Tutorial is not a rip off of my DDTM tutorial at all.. cause mine was written 5 years ago at the age of 13 lol. And you're really replying to Enslaves application as you are the 'God' of Simba/SRL, like okay, its great to point out weakness'es in the scripts his made, but please dont be a douche.




Sorry, but I find your Application treating methods quite irritating.

Ontopic now, I believe Enslaved is Competent of scripting obviously, Yes he has places which he can improve on, no one is perfect but he has the foundations down right and he can always move forward and improve. Voting Yes, goodluck.

EDIT* Well, i would vote yes if the poll was still open :tongue:



Dick of a comment? I told him what to change to get a yes from me. I really don't care if you find my applications methods irritating. I try and give an in depth response because I feel like people deserve it. I don't just vote without giving an answer.

Far superior vote? I don't imply that, nor do I want anybody to feel that way.


Rip off of your tutorial? Yours was a video showing how to do it? Sorry, didnt see it. Sorry for trying to explain it in a video for people, most did not understand how to use them so I figured I would help. If you feel it is a rip of yours, feel free to message someone to have it removed.

I'll make sure just to post a yes or no with no reason. I moldled my script response after an amazing one I got from Kevin because it really really helped me in the process of applying and I learned a lot.


Next time feel free to message me if you have a problem instead of hijacking the thread for an application.

Justin

2013-07-01 09:19:47

Could an Admin please look at this and make a decision on this application as it is a close one!
@Daniel; - @Hobbit;

Daniel

2013-07-01 09:53:03

I have extended the poll by another week.

My vote is a yes, also :)

EDIT: Also, sorry guys. For the past couple of weeks I have had exams, and Hobbit has been away for work, so not much time for the forums. Rest assured, that is now mostly over :)
@Enslaved;

rj

2013-07-01 10:58:12

I would like to change my vote to yes, as the scripts have been updated and look great :)

But I/others want to see more activity @Enslaved

Daniel

2013-07-01 11:06:37

From: Officer Barbrady
I would like to change my vote to yes, as the scripts have been updated and look great :)

But I/others want to see more activity @Enslaved


Done.

Sin

2013-07-01 11:08:48

…And he's in!

Vinyl Scratch

2013-07-01 14:09:58

Voted yes, I've talked to you plenty on skype, and seen you around the forums. You're a cool guy, and to me and several other people, you deserve members. You should work on taking more time on the scripts, though. It took my a little while to get mine (It was off and on work, too.)

From the looks of it, you're getting in! Good luck, man.

Enslaved

2013-07-01 18:04:39

Thanks , but apart from offering my services to tutor people for free. I am kind of tied up with research at the moment, but it will be something I will do. So do not expect a great increase in activity until about september time when I will have hopefully submitted the research results for publishment approval from my supervisor.

King

2013-07-01 19:10:30

Change mine as well, have talked to him much since this and he is more than member material, partly didnt know him, partly rushed, all fixed so please change it? :D @Daniel

Daniel

2013-07-03 01:43:26

From: King
Change mine as well, have talked to him much since this and he is more than member material, partly didnt know him, partly rushed, all fixed so please change it? :D @Daniel


Done.

NKN

2013-07-03 01:54:14

Votes yes. Don't know if it matters he obviously got in.

CynicRus

2013-07-04 03:01:11

Yes from me.

Daniel

2013-07-04 06:58:23

Well, I don't think I need to wait three more days!

Welcome to da club, @Enslaved;!