SRL Archive - Archive

fre - SRL Member Application


fre

2012-02-17 17:25:30

How Long have You Played Runescape?
10 Year(s)


Are you affilated in anyway with Jagex LTD?
Nope

Were you Referred to SRL?



What is your general programming knowledge?
Pascal(delphi, scar, simba, ..), little HTML, labview(program, dunno what program lang this is)


Are you a member of any other communities?
I am not an active member of any other RS or hacking related communities.


Tell us about yourself…
From: fre
I am 23 years old, i live in Europe.
I study for P.E teacher or something in the outdoor/fitness world.
If any of you need a training schedule feel free to pm me.
Going 4 times a week to the gym.
Living with friends in a house atm.
My interests are: (in top of importance)
Girlfriend
friends
sport
computer
music
guitare playing

Back in 2008 i tried applying for members i got denied. Now i realise back then i knew nothing. I think i am now worthy of becoming members.
Since my scripts are pretty good imo :)



Please show us one (or multiple) of your scripts.
Almos every scritp is flawless since i let them run for several hours without babysitting.

You can find my Air crafter and birdcatcher in the release section.

This is my most recent script.
Red chinchompa hunter.
Set up traps in a cross (not a line like every other bot)

[SIMBA]
program Red_Chinchompa_Hunter;
{$DEFINE SRL5}
{$DEFINE SMART}

{$IFDEF SRL5}

{$i srl/srl.simba}
{$ELSE}
{$i srl/srl.simba}
{$ENDIF}
{$i sps/sps.simba}
{$i srl\srl\misc\paintsmart.simba}


var
EndRound, TrapsAtStart, MainSpot, TrapSetTime, ScriptStart, RoundTime, StartChinsAmmount : Integer;
Const

ScriptTime = 200; //Time for script to restart in minutes

Procedure DeclarePlayers;
var
i: integer;
begin
NumberOfPlayers(1);
CurrentPlayer := 0;

for i := 0 to HowManyPlayers - 1 do


with Players[0] do
begin
Name :='';
Pass :='2';
Nick :='';
Pin := '';
Active := True;
Integers[1] := 4; //ammount of traps u can setup;
Integers[6]:= 20; //time to run every round in minutes
end;

end;

function MSI_Conversation(texts: TStringArray; clickCont: TBooleanArray): boolean;
var
i, x, y: integer;
begin
if (not loggedIn) then
exit;

if (length(texts) <> length(clickCont)) then
begin
exit;
end;

for i := 0 to high(texts) do
begin
if (findText(x, y, texts[i], NPCChars, MCX1, MCY1, MCX2, MCY2)) then
begin
if (clickCont[i]) then
clickContinue(true, true)
else begin
mouse(x, y, 2, 2, true);
chatWait();
end;

result := (i = high(texts));
end;

wait(100 + random(300))
end;
end;


Procedure ClickChatBoxIntro; //clicks on green arrow in chatbox
var
x, y : integer;
begin
While findcolorspiraltolerance(x, y, 1403199, 223, 460, 293, 474, 15) do
begin
Mouse(230, 465, 50, 5, true);
wait(350+random(500));
end;
end;

Procedure SetupScript;
begin

Smart_Server := 135;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
SPS_Setup(RUNESCAPE_SURFACE, ['4_10', '5_10', '4_12', '5_12', '4_13', '3_13']);
MarkTime(ScriptStart);
end;

Procedure Proggy;
var
I: Integer;
begin

ClearDebug;
Players[CurrentPlayer].Integers[3] := GetAmountBox(InvBox(28)) - StartChinsAmmount;
IncEX(Players[CurrentPlayer].Integers[2], Players[CurrentPlayer].Integers[3]);
Players[CurrentPlayer].Integers[5] := TimeFromMark(RoundTime);
IncEX(Players[CurrentPlayer].Integers[4], Players[CurrentPlayer].Integers[5]);

Writeln('|****************************************************************************************|');
Writeln(Padr('| Red Chinchompa Hunter, By Fre | Currently Running: ' + Players[CurrentPlayer].Name, 90) +
'|');
Writeln('|****************************************************************************************|');
Writeln('| Nick | Total Chins | Chins catched This Login| Time this round | Total Time ran | ');
Writeln('|*************** ************* ************************* **************** ***************|');
for I := 0 to HowManyPlayers - 1 do
Writeln('|' + Padr(Players[I].Nick, 15)
+ '|' + Padr(inttostr(Players[i].Integers[2]), 13)
+ '|' + Padr(inttostr(Players[i].Integers[3]), 24)
+ '|' + Padr(MsToTime((Players[i].Integers[5]), Time_bare), 16)
+ '|' + Padr(MsToTime((Players[i].Integers[4]), Time_bare), 16)
+ '|' );
Writeln('This script has been running for ' + TimeRunning + '.')
Writeln('|***************************************************************************************|');
Writeln('|Wow that is amazing, Fre is the GodKing! |');
Writeln('|***************************************************************************************|');
end;

Function SpotTaken: Boolean;
var
BoxesTPA : TPointArray;
BoxTPA : T2DPointArray;
i, x, y : Integer;
begin
FindColorsSpiralTolerance(100, 100, BoxesTPA, 8168378, MSX1, MSY1, MSX2, MSY2, 20);
BoxTPA := SplitTPA(BoxesTPA, 1);
for i := 0 to high(BoxTPA) do
begin
if GetArrayLength(BoxTPA[i]) > 100 then
begin
MiddleTPAEx(BoxTPA[i], x, y);
MMouse(x, y, 2, 2);
wait(500+random(200));
Result := IsUpText('ox trap');
If Result then
Exit;
end;
end;
end;

Procedure SetupPlayer;
begin
FindNormalRandoms;
If not LoggedIn then
LoginPlayer;
FindNormalRandoms;
ClickChatBoxIntro;
SetAngle(0);
if SpotTaken then
begin
if ChangeWorld(RandomWorld(true, false)) then
SetupPlayer;
end;
MarkTime(RoundTime);
EndRound:= GetSystemTime + (Players[CurrentPlayer].Integers[6]* 60* 1000) + random(1* 60* 1000);
TrapsAtStart := InvCount;
StartChinsAmmount := GetAmountBox(InvBox(28));
ToggleMoneyPouch(false);
end;

Procedure AntiBan;
var
RanTab, HowLong, I, Time : Integer;
b : Boolean;
begin
Case random(1000) of
0:RandomRClick;
1:HoverSkill(Skill_Attack,False);
2:HoverSkill(Skill_strength,False);
3:HoverSkill(Skill_defence,False);
4:HoverSkill(Skill_hitpoints,False);
5:HoverSkill(Skill_hunter,False);
6:HoverSkill(Skill_woodcutting,False);
7:HoverSkill(Skill_runecrafting,False);
8:HoverSkill(Skill_cooking,False);
9:HoverSkill(Skill_magic,False);
10:PickUpMouse;
11:SetScreenMouse('n',10);
12:MissMouse(100,100);
13:
begin
RandomMovement;
SetAngle(0);
end;
14:BoredHuman;
15:
begin
RandomAngle(0);
SetAngle(0);
end;
16:MSI_Conversation(['blablabla'], [false]);
17:
begin
HowLong:=(Random(10000));
Case HowLong Of
0..2000:
Case Random(4) Of
0 : SleepAndMoveMouse(HowLong + Random(HowLong/10));
1 : Begin
RanTab := RandomRange(TAB_Combat, TAB_LogOut);
GameTab(RanTab);
Wait(HowLong + Random(HowLong/10));
GameTab(tab_Inv);
End;
2 : RandomRClick;
3 : begin
b := IsXPBarOpen;
ToggleXPBar(not b);
end;
End;

2001..5000:
Case Random(4) Of
1 : PickUpMouse;
2 : SleepAndMoveMouse(HowLong + Random(HowLong/10));
3 : If Random(4) = 2 Then
For I := 0 To Round(HowLong/800) Do
If I Mod 2 = 0 Then ExamineInv;
End;

5001..10000:
If Random(2) = 1 Then
RandomMovement
else
Wait(100);

10001..20000:
case Random(3) Of
1 : BoredHuman;
2 : RandomAngle(1);
End;

20001..999999:
begin
Time := GetSystemTime + HowLong;
while (Time > GetSystemTime) do
begin
wait(random(5000));
end;
end;
end;
end;
end;
MakeCompass('N');
SetAngle(0);
GameTab(tab_inv);
end;

function GoMMLocation: Boolean; //True if found water
var
WaterColor : TPointArray;
MMLake : T2DPointArray;
i: Integer;
MSLocation :Tbox;
begin
begin
FindColorsSpiralTolerance(MSX2/2, MSY2/2, WaterColor, 10325892, MMX1, MMY1, MMX2, MMY2, 25);
MMLake := SplitTPA(WaterColor,2);
SortATPASize(MMLake, true);
for i := 0 to high(MMLake) do
begin
if GetArrayLength(MMLake[i]) > 1000 then
begin
Result := True;
MSLocation := GetTPABounds(MMLake[i]);
Mouse(MSLocation.x2 + 11, MSLocation.y2 - 2, 4, 4, True);
Flag;
Wait(1000 + random(500));
Exit;
end;
end;
end;
end;

Function GoToStartPositionCross: Boolean;
var
DTMStartPositionMS, x, y, T, Tries : Integer;
Angle : Extended;
begin
writeln('Checking start position');
Case random(2) of
0:
begin
writeln('spot 1');
DTMStartPositionMS := DTMFromString('m1gAAAHic42JgYJBlZGDgAGJOIGYE4hlAvBKIpwDxIiBmAuI0IF4CVFsGxIlAHAzEC4B4BRBfBuJ7QJwJxL1AHN6iwRDroMGQ6akHxo0JFgyZ/noM3h0+DAETAxmyvSHs/0C1/ERgoNUMzERgBAAAcYMUXQ==');
MainSpot:= 1;
end;
1:
begin
writeln('spot 2');
DTMStartPositionMS := DTMFromString('mbQAAAHicY2VgYIhgZWBIAuKzQJwDxN+B2ICRgeEqUO4TEB8AYikg3yPHgCHP15DBt9OPIcfHgGF6kTPDf6AcPxoGKmVgRsNgAABQZgxM');
MainSpot:= 2;
end;
end;
T := GetSystemTime + 10000 + random(1000);
repeat
if (T < GetSystemTime) then
Break;
Result:= FindDTMRotatedAlternating(DTMStartPositionMS, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/30, Pi/30, Pi/Pi, Angle);
If not Result then
begin
writeln('we cant find the start location on MS.');
GoMMLocation;
Flag;
Inc(Tries);
if Tries > 3 then
begin
FreeDTM(DTMStartPositionMS);
Exit;
end;
end;
until(Result);
if Result then
writeln('Found the start location, going to setup traps.');
FreeDTM(DTMStartPositionMS);
end;

function FindMainPlant(var P:TPoint):Boolean;
var
i, x, y: integer;
Plants: TPointArray;
Plant: T2DPointArray;

begin
if findcolorsspiraltolerance(MSX2/2, MSY2/2, Plants, 5146957, MSX1 + 100, MSY1, MSX2 - 100, MSY2, 20)then
begin
Plant := SplitTPA(Plants, 4);
for i := 0 to high(Plant) do
if Length(Plant[i]) > 100 then
begin
Result := True;
wait(400 + random(100));
MiddleTPAEx(Plant[i], x, y);
P:= Point(x - 13, y - 10);
end;
end;
if Result then
begin
writeln('Found the plant to set traps arround!');
end else
writeln('Did not found the plant to set traps arround!');
end;

function FindMainPoint: Boolean;
var
T, x, y, Tries, DTMStartPositionMM: integer;
P: TPoint;
Angle: Extended;
begin
Result := FindMainPlant(P);
if Result then
Exit;

writeln('could not find MainPoint');
T := GetSystemTime + 10000 + random(1000);
repeat
if (T < GetSystemTime) then
Break;
begin
DTMStartPositionMM := DTMFromString('mwQAAAHic42RgYJjBxsCwDYj3A3EnEJcBcTsQLwPiOUBcC8TmjAwMekDsDsSBQGzHCBFzBmIlIJYFYu9KC4YWbx6GLAchhgh7WTAN4oPYILq9fy7Df6B9/AQw0CgGZgIYDgBvqxE/');
if FindDTMRotatedAlternating(DTMStartPositionMM, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Mouse(x - 1, y - 1, 2, 2, true);
Flag;
Result := FindMainPlant(P);
Exit;
end;
Inc(Tries);
wait(1000 + random(1000));
if Tries > 3 then
begin
FreeDTM(DTMStartPositionMM);
Result := FindMainPlant(P);
Exit;
end;
FreeDTM(DTMStartPositionMM);
end;
Result := FindMainPlant(P);
until(false);
Result := FindMainPlant(P);
end;

function TakeTrapFast: Boolean; Forward;
function TakeTrapFastReverse: Boolean; Forward;

Function LayTrap(SearchFallenBox: Boolean): Boolean; //search for fallen traps
var
Trap, x, y : Integer;
begin
Trap := BitmapFromString(13, 9, 'meJzzTy/zSSnyTioAIs/EPI/4HCA' +
'JFGFABRA1QCmIGvfYLNfoDCADTRlQDUQWosAlMs05IgVIoikDGgJR' +
'AFHjGJbkEJIARGjKIGqAJgARRI1dUJy1XyTD0AEANs0p3Q==');
Result := FindBitmapToleranceIn(Trap, x, y, MIX1, MIY1, MIX2, MIY2 , 20);
if Result then
begin
Mouse(x - 5, y - 5 , 10, 10, true);
Flag;
end else
begin
writeln('We did not found box traps in our inventory');
FreeBitmap(Trap);
EndRound := GetSystemTime;
Exit;
end;
if SearchFallenBox then
begin
MarkTime(TrapSetTime);
case random(2) of
0:TakeTrapFast;
1:TakeTrapFastReverse;
end;
end else
wait(4000+random(1000));
end;

Procedure RenewTrap;
var
x, y, TrapCount, T : Integer;
begin
GetMousePos(x, y);
//checking if we are already on the tile with the box on that needs to be renewed
//if (x > 270) or (x < 245) then
Mouse(x - 2, y + 5, 4, 4, false);
TrapCount := InvCount + 1;
T:= GetSystemTime + 2000 + random(1000);
While ((InvCount < TrapCount) and (T > GetSystemTime)) do
wait(50 + random(50));
if not (T < GetSystemTime) then
begin
ChooseOption('alk here');
Flag;
wait(random(100));
if TrapCount >= InvCount then
LayTrap(true);
end else
MMouse(MSX1, MSY1, MSX2, MSY2);

end;

Function FindColorsSpiralToleranceOutBox(x, y: integer; var TPA: TPointArray; Color:integer; X1, Y1, X2, Y2, XX1, YY1, XX2, YY2, tol: integer): Boolean;
var
TPA1, TPA2, TPA3, TPA4: TPointArray;
begin
FindColorsSpiralTolerance(x, y, TPA1, color, X1, Y1, X2, YY1, 30)
TPA := CombineTPA(TPA, TPA1);

FindColorsSpiralTolerance(x, y, TPA2, color, X1, Y1, XX1, Y2, 30)
TPA := CombineTPA(TPA, TPA2);

FindColorsSpiralTolerance(x, y, TPA3, color, X1, YY2, X2, Y2, 30)
TPA := CombineTPA(TPA, TPA3);

FindColorsSpiralTolerance(x, y, TPA4, color, XX2, Y1, X2, Y2, 30)
TPA := CombineTPA(TPA, TPA4);

ClearDoubleTPA(TPA);
if (length(TPA) > 0) then
Result := true;
end;


procedure PickTrapOnMyTile; //Also lays trap
var
T, TrapCount: Integer;
begin
TrapCount := InvCount + 1;
Flag;
wait(500 + random(300));
T := GetSystemTime + 2000 + random(1000);
repeat
if T < GetSystemTime then
Break;
MMouse(250, 170, 12, 12);
wait(200+ random(200));
until(IsUpText('ox'));
if IsUpText('ox') then
ClickMouse2(True);
T := GetSystemTime + 2000 + random(1000);
While ((InvCount < TrapCount) and (T > GetSystemTime)) do
wait(50 + random(50));
if not (T < GetSystemTime) then
begin
if TrapCount >= InvCount then
LayTrap(true);
end else
MMouse(MSX1, MSY1, MSX2, MSY2);
end;

Function TakeTrapFast: Boolean; //fallen box color.
var
i, T: integer;
BoxColor: TPointArray;
Box: T2DPointArray;
MSLocation: TBox;
P: TPoint;
begin //6590356 = fallen box
writeln('Checking fast for traps !!!!');
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, BoxColor, 6590356, MSX1 + 50 , MSY1 + 30 , MSX2 - 50 , MSY2 - 30, 50) then
begin
Box := SplitTPA(BoxColor, 1);

for i := 0 to high(Box) do
begin
FilterPointsDist(Box[i], 30, 200, 258, 176); //don't lay box we are setting up
if (length(Box[i]) > (150)) and (length(Box[i]) < (500)) then
FilterPointsDist(Box[i], 0, 10, MiddleTPA(Box[i]).x, MiddleTPA(Box[i]).y); //filter out TPA that are bigger then radius 10
if (length(Box[i]) > (100)) and (length(Box[i]) < (300)) then
begin
wait(100);
Result := true;
MSLocation := GetTPABounds(Box[i]);
T := GetSystemTime + 1000 + random(1000);
P := MiddleTPA(Box[i]);
repeat
Mmouse(P.x - 5, P.y - 5, 10, 10);
wait(200 + random(100));
if T < GetSystemTime then
break;
until(IsUpText('ox'));
if IsUpText('ox') then
begin
writeln('setting up fast trap');
if (TimeFromMark(TrapSetTime) < 2000) then
begin
if IsUpText('ake') then
begin
ClickMouse2(false);
While (TimeFromMark(TrapSetTime) < 1550) do
wait(50 + random(500));
if ChooseOption('ay') then
begin
MarkTime(TrapSetTime);
wait(800 + random(100));
TakeTrapFast;
Exit;
end;
end;
if IsUpText('ox') then
begin
While (TimeFromMark(TrapSetTime) < 1550) do
wait(50 + random(500));
Clickmouse2(true);
RenewTrap;
end;
end;
end;
While (TimeFromMark(TrapSetTime)) < 4000 do
wait(50 + random(500));
Exit;
end;
end;
end;
While (TimeFromMark(TrapSetTime)) < 4000 do
wait(50 + random(500));
Exit;
end;

Function TakeTrapFastReverse: Boolean; //fallen box color.
var
i, T: integer;
BoxColor: TPointArray;
Box: T2DPointArray;
MSLocation: TBox;
P: TPoint;
begin //6590356 = fallen box
writeln('Checking fast for traps !!!!');
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, BoxColor, 6590356, MSX1 + 50 , MSY1 + 30 , MSX2 - 50 , MSY2 - 30, 50) then
begin
Box := SplitTPA(BoxColor, 1);

for i := 0 to high(Box) do
begin
FilterPointsDist(Box[i], 30, 200, 258, 176); //don't lay box we are setting up
if (length(Box[i]) > (150)) and (length(Box[i]) < (500)) then
FilterPointsDist(Box[i], 0, 10, MiddleTPA(Box[i]).x, MiddleTPA(Box[i]).y); //filter out TPA that are bigger then radius 10
if (length(Box[i]) > (100)) and (length(Box[i]) < (300)) then
begin
wait(100);
Result := true;
MSLocation := GetTPABounds(Box[i]);
T := GetSystemTime + 1000 + random(1000);
P := MiddleTPA(Box[i]);
repeat
Mmouse(P.x - 5, P.y - 5, 10, 10);
wait(200 + random(100));
if T < GetSystemTime then
break;
until(IsUpText('ox'));
if IsUpText('ox') then
begin
writeln('setting up fast trap');
if (TimeFromMark(TrapSetTime) < 2000) then
begin
if IsUpText('ake') then
begin
ClickMouse2(false);
While (TimeFromMark(TrapSetTime) < 1550) do
wait(50 + random(500));
if ChooseOption('ay') then
begin
MarkTime(TrapSetTime);
wait(800 + random(100));
TakeTrapFast;
Exit;
end;
end;
if IsUpText('ox') then
begin
Clickmouse2(False);
While (TimeFromMark(TrapSetTime) < 1550) do
wait(50 + random(500));
ChooseOption('alk here');
PickTrapOnMyTile;
end;
end;
end;
While (TimeFromMark(TrapSetTime)) < 4000 do
wait(50 + random(500));
Exit;
end;
end;
end;
While (TimeFromMark(TrapSetTime)) < 4000 do
wait(50 + random(500));
Exit;
end;


Function TakeTrap: Boolean; //check, dismantle and fallen box.
var
i, T: integer;
BoxColor: TPointArray;
Box: T2DPointArray;
MSLocation: TBox;
P: TPoint;
begin //7575211 = box color
writeln('Checking for traps that need to be reset');
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, BoxColor, 7575211, MSX1 + 50 , MSY1 + 30 , MSX2 - 50 , MSY2 - 30, 50) then
begin
Box := SplitTPA(BoxColor, 1);
for i := 0 to high(Box) do
begin
if (length(Box[i]) > (150)) and (length(Box[i]) < (500)) then
FilterPointsDist(Box[i], 0, 10, MiddleTPA(Box[i]).x, MiddleTPA(Box[i]).y);
if (length(Box[i]) > (150)) and (length(Box[i]) < (500)) then
begin
Result := true;
MSLocation := GetTPABounds(Box[i]);
T := GetSystemTime + 2000 + random(1000);
repeat
P := MiddleTPA(Box[i]);
Mmouse(P.x - 5, P.y - 5, 10, 10);
wait(200 + random(100));
if T < GetSystemTime then
break;
until(IsUpText('ox'));
if IsUpText('ake') then
begin
ClickMouse2(false);
if ChooseOption('ay') then
begin
MarkTime(TrapSetTime);
wait(800 + random(100));
TakeTrapFast;
Exit;
end;
end;
if IsUpText('ox') then
begin
ClickMouse2(true);
RenewTrap;
end;
Exit;
end;
end;
end;
end;


Function TakeTrapReverse: Boolean; //check, dismantle and fallen box.
var
i, T: integer;
BoxColor: TPointArray;
Box: T2DPointArray;
MSLocation: TBox;
P: TPoint;
begin //7575211 = box color
writeln('Checking for traps that need to be reset');
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, BoxColor, 7575211, MSX1 + 50 , MSY1 + 30 , MSX2 - 50 , MSY2 - 30, 50) then
begin
Box := SplitTPA(BoxColor, 1);
for i := 0 to high(Box) do
begin
if (length(Box[i]) > (150)) and (length(Box[i]) < (500)) then
FilterPointsDist(Box[i], 0, 10, MiddleTPA(Box[i]).x, MiddleTPA(Box[i]).y);
if (length(Box[i]) > (150)) and (length(Box[i]) < (500)) then
begin
Result := true;
MSLocation := GetTPABounds(Box[i]);
T := GetSystemTime + 2000 + random(1000);
repeat
P := MiddleTPA(Box[i]);
Mmouse(P.x - 5, P.y - 5, 10, 10);
wait(200 + random(100));
if T < GetSystemTime then
break;
until(IsUpText('ox'));
if IsUpText('ake') then
begin
ClickMouse2(false);
if ChooseOption('ay') then
begin
MarkTime(TrapSetTime);
wait(800 + random(100));
TakeTrapFast;
Exit;
end;
end;
if IsUpText('ox') then
begin
ClickMouse2(False);
ChooseOption('alk here');
PickTrapOnMyTile;
end;
Exit;
end;
end;
end;
end;



Procedure PickUpAllTraps; //Picks up boxes to logout.
var
BoxesTPA : TPointArray;
BoxTPA : T2DPointArray;
i, x, y, T : Integer;
begin
writeln('Gonna Pick up all boxes!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
T := GetSystemTime + 30000 + random(10000);
While FindColorSpiralTolerance(x, y, 8168378, MSX1, MSY1, MSX2, MSY2, 30) do
begin
if (pos('t your trap',GetBlackChatMessage) <> 0) then
GoMMLocation;
if T < GetSystemTime then
Exit;
repeat
begin
FindColorsSpiralTolerance(MSX2/2, MSY2/2, BoxesTPA, 8168378, MSX1, MSY1, MSX2, MSY2, 30);
BoxTPA := SplitTPA(BoxesTPA,5);
SortATPASize(BoxTPA, true);
for i := 0 to high(BoxTPA) do
begin
if GetArrayLength(BoxTPA[i]) > 10 then
begin
MiddleTPAEx(BoxTPA[i], x, y);
MMouse(x-5, y-5, 10, 10);
wait(300+random(200));
if IsUpText('ox') or IsUpText('ake') then
begin
ClickMouse2(true);
if (pos('t your trap',GetBlackChatMessage) <> 0) then
wait(2000 + random(1000));
end;
end;
end;
end;
until((InvCount = TrapsAtStart) or (T < GetSystemTime));
if T < GetSystemTime then
Exit;
end;
end;




Function SetTopCross: Boolean;
var
MainPoint, x, y : Integer;
Angle : Extended;
begin
if MainSpot = 1 then
MainPoint := DTMFromString('m1gAAAHic42JgYJBlZGDgAGJOIGYE4hlAvBKIpwDxIiBmAuI0IF4CVFsGxIlAHAzEC4B4BRBfBuJ7QJwJxL1AHN6iwRDroMGQ6akHxo0JFgyZ/noM3h0+DAETAxmyvSHs/0C1/ERgoNUMzERgBAAAcYMUXQ==');
if MainSpot = 2 then
MainPoint := DTMFromString('mbQAAAHicY2VgYIhgZWBIAuKzQJwDxN+B2ICRgeEqUO4TEB8AYikg3yPHgCHP15DBt9OPIcfHgGF6kTPDf6AcPxoGKmVgRsNgAABQZgxM');
if FindDTMRotatedAlternating(MainPoint, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Result:= True;
writeln('Setup Top box');
MMouse(x , y - 35, 15, 15);
wait(200 + random(100));
If IsUpText('alk') then
begin
ClickMouse2(true);
end else
ClickMouse2(false);
ChooseOption('alk');
Flag;
wait(random(200));
LayTrap(false);
end;
end;

Function SetBottomCross: Boolean;
var
MainPoint, x, y : Integer;
Angle : Extended;
begin
if MainSpot = 1 then
MainPoint := DTMFromString('m1gAAAHic42JgYJBlZGDgAGJOIGYE4hlAvBKIpwDxIiBmAuI0IF4CVFsGxIlAHAzEC4B4BRBfBuJ7QJwJxL1AHN6iwRDroMGQ6akHxo0JFgyZ/noM3h0+DAETAxmyvSHs/0C1/ERgoNUMzERgBAAAcYMUXQ==');
if MainSpot = 2 then
MainPoint := DTMFromString('mbQAAAHicY2VgYIhgZWBIAuKzQJwDxN+B2ICRgeEqUO4TEB8AYikg3yPHgCHP15DBt9OPIcfHgGF6kTPDf6AcPxoGKmVgRsNgAABQZgxM');
if FindDTMRotatedAlternating(MainPoint, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Result:= True;
writeln('Setup Bottom box');
MMouse(x , y + 40, 15, 15);
wait(200 + random(100));
If IsUpText('alk') then
begin
ClickMouse2(true);
end else
ClickMouse2(false);
ChooseOption('alk');
Flag;
wait(random(200));
LayTrap(false);
end;
end;

Function SetLeftCross: Boolean;
var
MainPoint, x, y : Integer;
Angle : Extended;
begin
if MainSpot = 1 then
MainPoint := DTMFromString('m1gAAAHic42JgYJBlZGDgAGJOIGYE4hlAvBKIpwDxIiBmAuI0IF4CVFsGxIlAHAzEC4B4BRBfBuJ7QJwJxL1AHN6iwRDroMGQ6akHxo0JFgyZ/noM3h0+DAETAxmyvSHs/0C1/ERgoNUMzERgBAAAcYMUXQ==');
if MainSpot = 2 then
MainPoint := DTMFromString('mbQAAAHicY2VgYIhgZWBIAuKzQJwDxN+B2ICRgeEqUO4TEB8AYikg3yPHgCHP15DBt9OPIcfHgGF6kTPDf6AcPxoGKmVgRsNgAABQZgxM');
if FindDTMRotatedAlternating(MainPoint, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Result:= True;
writeln('Setup Left box');
MMouse(x - 35, y , 15, 15);
wait(200 + random(100));
If IsUpText('alk') then
begin
ClickMouse2(true);
end else
ClickMouse2(false);
ChooseOption('alk');
Flag;
wait(random(200));
LayTrap(false);
end;
end;

Function SetRightCross: Boolean;
var
MainPoint, x, y : Integer;
Angle : Extended;
begin
if MainSpot = 1 then
MainPoint := DTMFromString('m1gAAAHic42JgYJBlZGDgAGJOIGYE4hlAvBKIpwDxIiBmAuI0IF4CVFsGxIlAHAzEC4B4BRBfBuJ7QJwJxL1AHN6iwRDroMGQ6akHxo0JFgyZ/noM3h0+DAETAxmyvSHs/0C1/ERgoNUMzERgBAAAcYMUXQ==');
if MainSpot = 2 then
MainPoint := DTMFromString('mbQAAAHicY2VgYIhgZWBIAuKzQJwDxN+B2ICRgeEqUO4TEB8AYikg3yPHgCHP15DBt9OPIcfHgGF6kTPDf6AcPxoGKmVgRsNgAABQZgxM');
if FindDTMRotatedAlternating(MainPoint, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Result:= True;
writeln('Setup Right box');
MMouse(x + 40, y, 15, 15);
wait(200 + random(100));
If IsUpText('alk') then
begin
ClickMouse2(true);
end else
ClickMouse2(false);
ChooseOption('alk');
Flag;
wait(random(200));
LayTrap(false);
end;
end;

function Check4Traps: boolean;
var
x, y, MainPoint: Integer;
Angle: Extended;
PointsBox: TBox;
begin
if MainSpot = 1 then
MainPoint := DTMFromString('m1gAAAHic42JgYJBlZGDgAGJOIGYE4hlAvBKIpwDxIiBmAuI0IF4CVFsGxIlAHAzEC4B4BRBfBuJ7QJwJxL1AHN6iwRDroMGQ6akHxo0JFgyZ/noM3h0+DAETAxmyvSHs/0C1/ERgoNUMzERgBAAAcYMUXQ==');
if MainSpot = 2 then
MainPoint := DTMFromString('mbQAAAHicY2VgYIhgZWBIAuKzQJwDxN+B2ICRgeEqUO4TEB8AYikg3yPHgCHP15DBt9OPIcfHgGF6kTPDf6AcPxoGKmVgRsNgAABQZgxM');
if FindDTMRotatedAlternating(MainPoint, x, y, MSX1, MSY1, MSX2, MSY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
writeln('Found mainpoint!');
Result := True;
PointsBox.x1 := x;
PointsBox.y1 := y - 35;
PointsBox.x2 := x + 20;
PointsBox.y2 := y - 15;
if not FindColorSpiralTolerance(x, y, 7575211, PointsBox.x1, PointsBox.y1, PointsBox.x2, PointsBox.y2, 30) then
SetTopCross;
PointsBox.x1 := x;
PointsBox.y1 := y + 40;
PointsBox.x2 := x + 20;
PointsBox.y2 := y + 60;
if not FindColorSpiralTolerance(x, y, 7575211, PointsBox.x1, PointsBox.y1, PointsBox.x2, PointsBox.y2, 30) then
SetBottomCross;
PointsBox.x1 := x - 35;
PointsBox.y1 := y;
PointsBox.x2 := x - 15;
PointsBox.y2 := y + 20;
if not FindColorSpiralTolerance(x, y, 7575211, PointsBox.x1, PointsBox.y1, PointsBox.x2, PointsBox.y2, 30) then
SetRightCross;
PointsBox.x1 := x - 35;
PointsBox.y1 := y;
PointsBox.x2 := x - 15;
PointsBox.y2 := y + 20;
if not FindColorSpiralTolerance(x, y, 7575211, PointsBox.x1, PointsBox.y1, PointsBox.x2, PointsBox.y2, 30) then
SetLeftCross;
end else
writeln('Did not found mainpoint!');

FreeDTM(MainPoint);
end;



Procedure CheckingTraps;
begin
Case random(2) of
0:
begin
if not TakeTrap then
if not Check4Traps then
AntiBan;
end;
1:
begin
if not TakeTrapReverse then
if not Check4Traps then
AntiBan;
end;
end;
end;

Function RandomizeTrapSetup:TIntegerArray;
var
TrapsLocations: TIntegerArray;
i : Integer;
begin
SetLength(TrapsLocations, Players[CurrentPlayer].Integers[1]);

for i := 0 to (Players[CurrentPlayer].Integers[1] - 1) do //chooses 3 or 4 random locations(numbers)
begin
TrapsLocations[i]:= Random(4);
end;
ClearSameIntegers(TrapsLocations); // checks if the same numbers (box location) appear twice.

While not ((High(TrapsLocations) + 1) = (Players[CurrentPlayer].Integers[1])) do //if not yet enough box location add more
begin
for i := (High(TrapsLocations) + 1) to (Players[CurrentPlayer].Integers[1] - 1) do
begin
SetLength(TrapsLocations, Players[CurrentPlayer].Integers[1]);
TrapsLocations[i]:= random(4);
ClearSameIntegers(TrapsLocations);
end;
end;
Result:= TrapsLocations;
end;


Procedure CheckInv;
var
x, y : Integer;
begin
if FindColorSpiralTolerance(x, y, 930145, 550, 200, 723 ,390, 15) then
begin
MMouse(x - 2, y - 2, 5, 5);
wait(500 + random(500));
if IsUpText('ed chin') then
begin
GetMousePos(x, y);
DragMouse(x, y, 0, 0, 711, 442, 5, 5);
end;
end;
end;

function sps_WindPath(xs, ys, xe, ye, gravity, wind, maxStep, targetArea: extended): TPointArray;
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
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 + 5) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 5) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 15) then
begin
maxStep:= random(15) + 15;
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) / 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;
SetArrayLength(Result, GetArrayLength(Result) + 1);
Result[ High(Result) ] := Point(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
lastdist:= dist;
end;
end;

function SPS_WalkToPosEx(P: TPoint; FlagDist: Integer): boolean;
var
MM: TPoint;
begin
if not LoggedIn then Exit;
MM := SPS_PosToMM(P);
if (MM.X > 0) then
begin
Mouse(MM.X-2, MM.Y-2, 4, 4, True);
Wait(200+Random(300));
FFlag(FlagDist);
Result := True;
end;
end;

function sps_WindWalk(T: TPoint): Boolean;
var
I, Tries,Tries2,Tries3: Integer;
M, P: TPoint;
CTRLPoints: TPointArray;
begin
P := T;
RunEnergy(20);
repeat

if Length(CtrlPoints)=0 then
begin
M := SPS_GetMyPos;
CtrlPoints := sps_WindPath(M.x, M.y, P.X, P.Y, 22.5, 12.5, 40, 20);
writeln('length ' + tostr(length(ctrlpoints)));
while ((length(CtrlPoints) > 500) and (Tries2 < 5) ) do
begin
SetArrayLength(CTRLPoints,0);
CtrlPoints := sps_WindPath(M.x, M.y, P.X, P.Y, 22.5, 12.5, 40, 20);
Inc(Tries2);
end;
if (Tries2 > 4) then
Exit;
Inc(Tries);
if(Tries > 3)then
Exit;
end;
Inc(Tries3);
if Tries3 > 5 then
Exit;
for I:= High(CtrlPoints) downto 0 do
begin
if sps_WalkToPosEx(CtrlPoints[i], 60) then
begin
Result := I = High(CtrlPoints);
Break;
end;
end;
until(Result);
end;


procedure OpenCastleWarsDoor;
var
x, y, i, MMDoor: Integer;
DoorColors: TPointArray;
Door: T2DPointArray;
Angle: Extended;
begin
MMDoor:= DTMFromString('mbQAAAHicY2VgYDBnY2AwZIPQ/kAcDMRXgeLrgfgmEJ8C4vtAnJ2TzvCVhRmMW/tng/F/oDg/FEtCMSMQM6NhMAAAX14NWw==');
if FindDTMRotatedAlternating(MMDoor, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Mouse(x, y, 1, 1, true);
Flag;
FreeDTM(MMDoor);
wait(1000+random(1000));
end;
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, DoorColors, 3227466, MSX1, MSY1, MSX2, MSY2, 15) then
begin
Door := SplitTPA(DoorColors, 5);
for i := 0 to high(Door) do
if high(Door[i]) > 5 then
begin
MiddleTPAEx(Door[i], x, y);
Mmouse(x, y, 1, 1);
wait(500+random(100));
if IsUpText('lose') then
begin
Writeln('CW door is already open');
Exit;
end;
if IsUpText('pen') then
begin
Clickmouse2(True);
Flag;
writeln('Opened CastleWars door!');
Exit;
end;
end;
end;
end;

procedure OpenYanilleDoors(ReLocate: Boolean);
var
x, y, i, MMDoor: Integer;
DoorColors: TPointArray;
Door: T2DPointArray;
Angle: Extended;
begin
if ReLocate then
begin
MMDoor:= DTMFromString('mWAAAAHicY2FgYFBhY2CwAWInILYF4udAsXtA/AyI3wNxUacew1dmVjj+DxTjR8KMQMyMhEEAABJuCew=');
if FindDTMRotatedAlternating(MMDoor, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Mouse(x, y, 1, 1, true);
Flag;
FreeDTM(MMDoor);
wait(1000+random(1000));
end;
end;
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, DoorColors, 3561082, MSX2/2, MSY1, MSX2, MSY2, 25) then
begin
Door := SplitTPA(DoorColors, 5);
if high(Door) = 0 then
begin
FindColorsSpiralTolerance(MSX2/2, MSY2/2, DoorColors, 3561082, MSX2/2, MSY1, MSX2, MSY2, 40);
Door := SplitTPA(DoorColors, 5);
end;
for i := 0 to high(Door) do
if (high(Door[i]) > 500) and (high(Door[i]) < 1300) then
begin
MiddleTPAEx(Door[i], x, y);
Mmouse(x, y, 1, 1);
wait(500+random(100));
if IsUpText('lose') then
begin
Writeln('Yanille door is already open');
Exit;
end;
if IsUpText('pen') then
begin
Clickmouse2(True);
writeln('Opened Yanille door!');
Exit;
end;
end;
end;
end;


procedure OpenHunterShopDoors;
var
x, y, i, MMDoor: Integer;
DoorColors: TPointArray;
Door: T2DPointArray;
Angle: Extended;
begin
MMDoor:= DTMFromString('mWAAAAHicY2FgYChjYmCIgmIXIA4DipUAcS0QBwNxfpU2wwdWdjj+DxTjR8KMQMyMhEEAALpqCFM=');
if FindDTMRotatedAlternating(MMDoor, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
begin
Mouse(x, y, 1, 1, true);
Flag;
FreeDTM(MMDoor);
wait(2000+random(1000));
end;
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, DoorColors, 936293, MSX2/2, MSY1, MSX2, MSY2, 15) then
begin
Door := SplitTPA(DoorColors, 5);
for i := 0 to high(Door) do
begin
MiddleTPAEx(Door[i], x, y);
Mmouse(x, y, 1, 1);
wait(500+random(100));
if IsUpText('lose') then
begin
Writeln('Shop door is already open');
Exit;
end;
if IsUpText('pen') then
begin
Clickmouse2(True);
writeln('Opened huntershop door!');
Exit;
end;
end;
end;
end;

procedure BuyBoxTraps;
var
x, y, i, T: Integer;
AleckColors: TPointArray;
Aleck: T2DPointArray;
begin
T := GetSystemTime + 60000 + random(10000);
While not InvFull do
begin
ClickNorth(2);
if T < GetSystemTime then
Break;
if FindColorsSpiralTolerance(MSX2/2, MSY2/2, AleckColors, 6720182, MSX1, MSY1, MSX2, MSY2, 25) then
begin
Aleck := SplitTPA(AleckColors, 3);
for i := 0 to high(Aleck) - 1 do
if (length(Aleck[i]) > 5) and (length(Aleck[i]) < 100) then
begin
MiddleTPAEx(Aleck[i], x, y);
Mmouse(x, y, 1, 1);
wait(100+random(100));
if IsUpText('leck') then
begin
ClickMouse2(False);
ChooseOption('rade');
Flag;
Wait(1000 + random(1000));
Mouse(295, 60, 15 ,15, False);
ChooseOption('50');
SetAngle(0);
wait(1000 + random(1000));
if PinScreen then
InPin(Players[CurrentPlayer].Pin);
MMouse(483, 15, 5, 5);
wait(300 + random(200));
if IsUpText('lose') then
Clickmouse2(True);
Exit;
end;
end;
end;

writeln('round');

end;
end;

procedure GetNewRing(where: string);forward;

function InCastleBank: Boolean; //Checks for a water color vertical longer then 130 pixels.
var
x,y :integer;
TPA: TPointArray;
WaterFlow: T2DPointArray;
B: TBox;

begin
if findcolorsspiraltolerance(x, y, TPA, 10326148, MMX1, MMY1, MMX2, MMY2, 30) then
begin
WaterFlow := SplitTPA(TPA, 15);
SortATPASize(WaterFlow, True);
B := GetTPABounds(WaterFlow[0]);
wait(5000);
writeln('We found a water flow with the length of = ' + (tostr(B.y2 - B.y1)) +'. If this is longer then 100 then we are at Castle Wars bank');
Result := (B.y2 - B.y1) > 100
end;
end;

function DuelRingTele(where :string):Boolean;
begin
Result := WearingItem(11);
if not Result then
Exit;
if where = 'ars' then
begin
if InCastleBank then
Exit;
end;
MouseEquippedItem('ring', 0);
ClickMouse2(False);
if OptionsExist(['1'], False) then
begin
GetNewRing(where);
MouseEquippedItem('ring', 0);
end else
begin
Result := ChooseOption(where);
end;
Wait(5000 + random(2000));
end;

procedure Bank;
var
x, y, i, CastleBankDTM: Integer;
Angle: Extended;
begin
writeln('depositing valuables!');
DuelRingTele('ars');
GameTab(25);
CastleBankDTM := DTMFromString('mWAAAAHicY2FgYJBiY2CQAWJ5KJ4CFAsF4nIgrgPihKQohp+sDHD8HyjGj4QZgZgJCYMAAITeB7g=');
if FindDTMRotatedAlternating(CastleBankDTM, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
Mouse(x - 1, y - 1, 2, 2, true);
Flag;
wait(1000+random(1000));
OpenBankChest(21);
for i := 0 to 28 do
begin
if ExistsItem(i) then
if GetAmountBox(InvBox(i)) > 2 then
if InvMouse(i, 0) then
ChooseOption('All');
end;
Case random(2) of
0:CloseBank;
end;
end;



function GoToHunterShop: Boolean;
var
x, y, i: Integer;
Angle: Extended;
TPA,CWToYannileDoors, ToHunterShopDoor: TPointArray;
Water: T2DPointArray;
B: Tbox;
begin
Bank;// safety measure incase you die
While InvCount < 10 do
begin
OpenCastleWarsDoor;
writeln('Going to walk to hunter shop');
if FindColorsSpiralTolerance(x, y, TPA, 10390662, MMX1, MMY1, MMX2, MMY2, 25) then
begin
writeln('found water');
Water := SplitTPA(TPA, 1);
SortATPASize(Water, True);
B := GetTPABounds(Water[0]);
MMouse(B.x2 - 4, B.y2 - 4, 2, 2);
GetMousePos(x, y);
While not IsUpText('alk here') do
begin
MMouse(x - i, y - i, 0, 0);
Inc(i);
wait(100 + random(100));
end;
ClickMouse2(True);
Flag;
end;
FindNormalRandoms;
CWToYannileDoors := [Point(1671, 4376), Point(1680, 4376), Point(1690, 4376),
Point(1700, 4376), Point(1711, 4378), Point(1721, 4379), Point(1732, 4381),
Point(1740, 4381), Point(1749, 4381), Point(1761, 4383), Point(1771, 4383),
Point(1781, 4383), Point(1791, 4383), Point(1802, 4383), Point(1814, 4384),
Point(1828, 4384), Point(1843, 4385), Point(1857, 4389), Point(1870, 4392),
Point(1880, 4392), Point(1894, 4392), Point(1906, 4392), Point(1921, 4388),
Point(1933, 4384), Point(1940, 4379), Point(1948, 4368), Point(1956, 4359),
Point(1960, 4348), Point(1960, 4336), Point(1962, 4326), Point(1964, 4314),
Point(1966, 4302)];
SPS_WalkPath(CWToYannileDoors);
FindNormalRandoms;
OpenYanilleDoors(True);
wait(2000 + random(1000));
Mouse(696, 83, 1, 1, true);
Flag;
wait(1000 + random(1000));
OpenYanilleDoors(False);
ToHunterShopDoor := [Point(2049, 4314), Point(2056, 4319), Point(2066, 4323),
Point(2073, 4327), Point(2080, 4331), Point(2086, 4338), Point(2089, 4339)];
SPS_WalkPath(ToHunterShopDoor);
Flag;
wait(1000 + random(1000));
OpenHunterShopDoors;
wait(2000 + random(1000));
FindNormalRandoms;
Mouse(414, 275, 15, 15, true);
Flag;
wait(1000 + random(1000));
BuyBoxTraps;
Result := InvCount > 10;
end;
end;



procedure GetNewRing(where:string);
var
CastleBankDTM, RingDTM, x, y: Integer;
Angle: Extended;
begin
RingDTM := DTMFromString('mQwAAAHicY2ZgYLjBzMBwHYgvAXEfkD8diOcCMU8QH8OLE0oMa6ZIMvAD+TDMjISBAABleQgd');
ChooseOption('ars');
Wait(4000 + random(1000));
CastleBankDTM := DTMFromString('mWAAAAHicY2FgYJBiY2CQAWJ5KJ4CFAsF4nIgrgPihKQohp+sDHD8HyjGj4QZgZgJCYMAAITeB7g=');
if FindDTMRotatedAlternating(CastleBankDTM, x, y, MMX1, MMY1, MMX2, MMY2, -Pi/30, Pi/30, Pi/Pi, Angle) then
Mouse(x - 1, y - 1, 2, 2, true);
Flag;
wait(1000+random(1000));
OpenBankChest(21);
if InvFull then
Deposit(1,1,true);
While not FindColorSpiralTolerance(x, y, 1341457, MSX1, MSY1, MSX2, MSY2, 15) do
FixBankTab;
begin
MMouse(x - 10, y, 10, 10);
wait(500 + random(500));
if IsUpText('uell') then
ClickMouse2(True);
wait(500+ random(500));
end;
CloseBank;
GameTab(25);
if FindColorSpiralTolerance(x, y, 1341457, MIX1, MIY1, MIX2, MIY2, 15) then
begin
MMouse(x - 10, y, 10, 10);
wait(300 + random(500));
if IsUpText('uell') then
ClickMouse2(True);
wait(500+ random(500));
end;
DuelRingTele(Where);
FreeDTM(RingDTM);
FreeDTM(CastleBankDTM);
end;




procedure TeleAndWalkToStartPosition;forward;

procedure GetMoreBoxTraps;
begin
writeln('Not enough box traps in inventory, going to get more!');
if DuelRingTele('ars') then
GoToHunterShop;
RestUntil(95);
TeleAndWalkToStartPosition;
end;



procedure TeleAndWalkToStartPosition;
var
HuntingGroundPath: TPointArray;
begin
if SPS_WalkToPos(Point(2073, 5005)) then
Exit;
writeln('Repositiong by teleing!');
DuelRingTele('obilising');
wait(5000 + random(2000));
FindNormalRandoms;
HuntingGroundPath := [Point(1494, 5291), Point(1508, 5292), Point(1525, 5292),
Point(1540, 5291), Point(1553, 5291), Point(1569, 5291), Point(1582, 5292),
Point(1592, 5292), Point(1614, 5292), Point(1626, 5292), Point(1642, 5292),
Point(1659, 5292), Point(1674, 5292), Point(1689, 5292), Point(1707, 5292),
Point(1725, 5292), Point(1743, 5292), Point(1760, 5291), Point(1777, 5291),
Point(1797, 5287), Point(1808, 5283), Point(1820, 5280), Point(1838, 5274),
Point(1851, 5268), Point(1865, 5261), Point(1880, 5255), Point(1893, 5250),
Point(1909, 5240), Point(1923, 5226), Point(1936, 5215), Point(1944, 5208),
Point(1953, 5197), Point(1963, 5187), Point(1972, 5178), Point(1979, 5169),
Point(1987, 5157), Point(1991, 5143), Point(1998, 5131), Point(2000, 5111),
Point(2005, 5094), Point(2005, 5079), Point(2011, 5065), Point(2015, 5053),
Point(2018, 5040), Point(2029, 5031), Point(2040, 5031), Point(2050, 5020),
Point(2060, 5011), Point(2073, 5005)];
if not SPS_WalkPath(HuntingGroundPath) then
SPS_WalkPath(HuntingGroundPath);

end;

Function TrapsCross(TrapSetup:TIntegerArray): Boolean;
var
i : Integer;
begin
Result := false;
if not GoToStartPositionCross then
TeleAndWalkToStartPosition;
Flag;
wait(1000 + random(1000));
for i := high(TrapSetup) Downto 0 do
begin
if TrapSetup[i] = 0 then
SetRightCross;
if TrapSetup[i] = 1 then
SetTopCross;
if TrapSetup[i] = 2 then
SetBottomCross;
if TrapSetup[i] = 3 then
SetLeftCross;
end;
Result := (TrapsAtStart > InvCount );
end;

Function Setuptraps: Boolean;
begin
Case random(2) of
0:Result := TrapsCross(RandomizeTrapSetup);
1:Result := TrapsCross(RandomizeTrapSetup);
end;
end;

procedure MainLoop;
begin
if not loggedIn then
LoginPlayer;
FindNormalRandoms;
if InvCount < 9 then
GetMoreBoxTraps;
if SetupTraps then
begin
While EndRound > GetSystemTime do
begin
if not LoggedIn then
LoginPlayer;
FindNormalRandoms;
CheckingTraps;
ChooseOption('ancel');
CheckInv;
end;
end;
PickUpAllTraps;
Proggy;
end;





begin
SetupScript;
SetupPlayer;
repeat
MainLoop;
NextPlayer(true);
SetupPlayer;
until(TimeFromMark(ScriptStart) > (ScriptTime * 60 * 1000));
Logout;
OpenWebPage('C:\Program Files (x86)\AutoHotkey\RestartSimba1');
end.
[\SIMBA]

I can post more script is that is needed.
I also made a pizza maker.
Bought ingredients in food shop made pizza banked in draynor (deposit box at entrana monks was not out when i made this script)

I started on a dungeoneering script but i gave up :s
Also made a diamond bolt maker
Also a power miner
A tanner in al-kharid
A few years ago i made a mage training arena script.
I did all the chambers except the telekenetic one. (don't have this script anymore)

Next project abyss crafter


I hope to see you guys soon :-)

Hunter lvl of the accs is in the high 60.
Better lvl would get more succesfull catches and would result in a higher ratio of chins catched / hr.
[BANANA]
|****************************************************************************************|
| Red Chinchompa Hunter, By Fre | Currently Running: [email]xxxxxxxxxxxxxxxxxxxxxxxxx[/email] |
|****************************************************************************************|
| Nick | Total Chins | Chins catched This Login| Time this round | Total Time ran |
|*************** ************* ************************* **************** ***************|
|xxx |132 |2 |00:04:32 |01:07:27 |
|xxxx |202 |4 |00:05:36 |02:36:03 |
|xxx |195 |4 |00:04:13 |02:04:35 |
This script has been running for 6 Hours, 2 Minutes and 7 Seconds.
|***************************************************************************************|
|Wow that is amazing, Fre is the GodKing! |
|***************************************************************************************|[/BANANA]

PatDuffy

2012-02-17 17:51:25

Well I must say…I am loving the code.

Your logic is impressive, and combined with your use of TPA's is something I haven't seen in an app in a while. I see TPA's, DTM's(and Rotating DTM's), and clean standards to make everything nice and easy to read even!

You are a good person in the community also.

Yes from me! And one of the few yes's I have given in the past months.

E: Well, it will be a yes if you can supply a proggy showing your script actually works :p

fre

2012-02-17 17:54:18

Alright i run it now.
I ll post a proggie next morning.
But oh actually i have a rather weird botting method.
I bot for 2-3 hrs then i have autohotkey close simba.
Open another one and restart that one.
(because sometimes my wireless fails and then simba/SMART stops)
But i ll post a proggie no matter what :)

PatDuffy

2012-02-17 17:57:30

From: fre
Alright i run it now.
I ll post a proggie next morning.
But oh actually i have a rather weird botting method.
I bot for 2-3 hrs then i have autohotkey close simba.
Open another one and restart that one.
(because sometimes my wireless fails and then simba/SMART stops)
But i ll post a proggie no matter what :)


The only reason I even asked is so that I could see if you effectively handled this difficult script :p

I might get to running it myself to see how good it works, if I have time. You currently have a yes though, just didn't vote yet.

[XoL]

2012-02-17 18:03:31

You have released two scripts to the general public, ask for help, and proven your scripting knowledge.

Yes from me, honestly one of the most deserving.
Great work, keep it up!

Griff

2012-02-17 18:15:56

Wow, looks really good. Definite yes from me :)

Flight

2012-02-17 22:39:21

Wow you're a like me irl. :p I'm 22, I'll be 23 in August, I also live with a friend (now on the other side of the globe), I'm also athletic, but I have my own small gym here in my new house. Exercise (especially bike-riding) comes first to me, I spend hours a day here on the computer, mostly messing with Simba/Villavu, and also like you music is a big deal to me. I'm in the process of teaching myself to play the guitar; I know a few tunes I've picked up from like Songsterr.com and what not. :)

Meh I got off on stating similarities there lol. Anyways, you're active, you're a Jr Member, you've been here a long time, and your script looks great. Yes from me. :)

Er1k

2012-02-17 22:47:24

Scripts are solid. Your public releases are received well. There's no reason to give a no :)

Hence yes.

Sin

2012-02-17 22:57:25

I'm thinking we have a new SRL Member here ;o

fre

2012-02-18 04:31:12

Ty all for the positive comments.

See top post for proggie.

Forgot to mention this:
I study for P.E teacher or something in the outdoor/fitness world.
If any of you need a training schedule feel free to pm me.

WT-Fakawi

2012-02-18 05:14:52

Fawki-Code! I like this. Finally code I can comprehend. Reads like a good book. Yes from me!

Mat

2012-02-18 07:21:12

Yes. <3

cycrosism

2012-02-18 07:23:10

Would like to see some fail safes on the walking, do not rely on just SPS. Make some of your own walking procedures. What if SPS fails? Your whole script will stop working.

fre

2012-02-18 07:29:59

From: cycrosism
Would like to see some fail safes on the walking, do not rely on just SPS. Make some of your own walking procedures. What if SPS fails? Your whole script will stop working.


If sps walking fail once it ll go back to start point (tele)
If it keep failing it will indeed stop working.

What do you suggest?
I don't rely on DTM walking because MM changes to much.

the scar noob

2012-02-19 11:38:02

Yes!
But I don't know why you should forward functions tbh.

P1nky

2012-02-19 12:00:07

Activity is perfect; Code is perfect; Your perfect ;); Yes!

Hobbit

2012-02-23 13:00:36

In!

Welcome :)