SRL Archive - Archive

hellbb88 - SRL Member Application Form


HellBoyz

2007-09-24 22:25:01

<!– BEGIN TEMPLATE: formanswers –>
hellbb88 - SRL Member Application Form
hellbb88

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
C++, Pascal

Other Communitys
Moderator on Aryan forum

How Long have You Played Runescape
9 years

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

I'm used to be a moderator, scripter and tester for aryan long ago before aryan gone exile. I have been learning script through scar long time ago before SRL came live.

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted


{/****************************************************************************//
// //
// Script Name : Hell Pottery Crafter //
// Created By : Hellbb //
// Category : Crafting / Mining //
// Location : Start at Varrock West bank //
// Description : Made All types of pottery at Varrock City West Bank //
// AutoColor : Yes - mostly in radial walk //
// AutoCheck : Yes - will check all your settings //
// Clay Type : Pot, Pie Dish, Bowl (Plant Pot not fully support) //
// Side Notes : Using Radial Walk in all part and almost flawless //
// //
//**************************** Instructions! *********************************//
// //
// 1. USE the DEFAULT Runescape Client with Low Detail, Very Bright. //
// 2. Set your Screen to 32 bit TRUE color. //
// 3. Place your army at Varrock WEST bank, with your pickaxe weilded //
// 4. Setup Constants at line 61-67 and Players at line 78-140 //
// 5. Setup SRL Stat ID and Pass or else the script won't run //
// 6. Total of 8 Players must be set in DeclarePlayers procedure //
// 7. Total of 4 empty bucket or water filled bucket needed in inventory //
// //
//************************ Function and Process ******************************//
// //
// 1. Start from Varrock West Bank //
// 2. Walk from Varrock West Bank to Varrock City Square //
// 3. Walk from Varrock City Square to Varrock West Mining Spot through //
// Varrock South Gate //
// 4. Mine FULL Loads of Clay Ore and back to Varrock City Square //
// 5. Made Soft Clay at Varrock City Square Fountain //
// 6. Walk to Barbarian Village for Crafting //
// 7. Walk back to Varrock West Bank for banking //
// //
//******************** Special Thanks and Credits to *************************//
// //
// 1. JAD - Mostly the whole scripting structure //
// 2. Nielsie95 - Teaching of AutoColor and other structure //
// 3. WT-Fakawi - Anti Randoms, Dynamic DTM Tutorial //
// 4. Bobbohobbp - RadialWalk and RadialRoadWalk Tutorial //
// 5. YoHoJo - DTM and Dynamic DTM Tutorial //
// 6. Freddy1990 - Latest Devs of SCAR DIVI //
// 7. SRL Devs - Greatest SRL Library ever found in univers //
// //
// Please let me know if i have miss out any people credits //
// //
//*************************** Version History ********************************//
// //
// 0.01 - The Beginning of nothing to everything //
// //
//****************************************************************************/}

program HellCrafter;
{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Mining.scar}

//****************************************************************************//
// Set setting below correctly before start //
//****************************************************************************//

const
SetSRLSTATSID = ''; // Stats ID.
SetSRLSTATSPASS = ''; // Stats Pass.
StartPlayer = 0; // Which Player to start
Loads = 1; // Total how many loads
RandomTimer = 50; // AntiRandom Timer (50-3000) set if lagging
HellDebug = False; // For Debug only

//****************************************************************************//
// Players Setup //
//****************************************************************************//

procedure DeclarePlayers;
begin
InitPlayerArray;
CurrentPlayer := StartPlayer;

Players[0].Name := ''; // User Name
Players[0].Nick := ''; // Nick Name
Players[0].Pass := ''; // Password
Players[0].Strings[0] := ''; // Bank pin if any
Players[0].Active := True; // Players active
Players[0].Loc := 'Bank'; // Location
Players[0].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[1].Name := ''; // User Name
Players[1].Nick := ''; // Nick Name
Players[1].Pass := ''; // Password
Players[1].Strings[0] := ''; // Bank pin if any
Players[1].Active := True; // Players active
Players[1].Loc := 'Bank'; // Location
Players[1].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[2].Name := ''; // User Name
Players[2].Nick := ''; // Nick Name
Players[2].Pass := ''; // Password
Players[2].Strings[0] := ''; // Bank pin if any
Players[2].Active := True; // Players active
Players[2].Loc := 'Bank'; // Location
Players[2].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[3].Name := ''; // User Name
Players[3].Nick := ''; // Nick Name
Players[3].Pass := ''; // Password
Players[3].Strings[0] := ''; // Bank pin if any
Players[3].Active := True; // Players active
Players[3].Loc := 'Bank'; // Location
Players[3].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[4].Name := ''; // User Name
Players[4].Nick := ''; // Nick Name
Players[4].Pass := ''; // Password
Players[4].Strings[0] := ''; // Bank pin if any
Players[4].Active := True; // Players active
Players[4].Loc := 'Bank'; // Location
Players[4].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[5].Name := ''; // User Name
Players[5].Nick := ''; // Nick Name
Players[5].Pass := ''; // Password
Players[5].Strings[0] := ''; // Bank pin if any
Players[5].Active := True; // Players active
Players[5].Loc := 'Bank'; // Location
Players[5].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[6].Name := ''; // User Name
Players[6].Nick := ''; // Nick Name
Players[6].Pass := ''; // Password
Players[6].Strings[0] := ''; // Bank pin if any
Players[6].Active := True; // Players active
Players[6].Loc := 'Bank'; // Location
Players[6].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

Players[7].Name := ''; // User Name
Players[7].Nick := ''; // Nick Name
Players[7].Pass := ''; // Password
Players[7].Strings[0] := ''; // Bank pin if any
Players[7].Active := True; // Players active
Players[7].Loc := 'Bank'; // Location
Players[7].Strings[1] := 'Pot' // Pot, Piedish, Bowl, Plantpot

LoadPlayerArray;
HowManyPlayers := Length(Players);

end;

//****************************************************************************//
// Variable //
//****************************************************************************//

const
VersionNumber = '0.01';
WaterColors = 12036740; //Change if necessary
ClayColors = 6269647; //Change if necessary
WheelColors = 10592686; //Change if necessary

var
WhichType : String;
x1, y1, x2, y2, Cx, Cy, Dx, Dy, Ex, Ey, Fx, Fy, Kx, Ky, Jx, Jy, Tx, Ty : Integer;
x, y, i, j, CheckLoad, TotalLoad, Tol, Area, VA, VB, VC, VD, VR, DoorColor : Integer;
Clay, SoftClay, fDTM, uDTM, EmptyBucket, WaterBucket : Integer;
UnFirePot, UnFirePie, unFireBowl, UnFirePlant, Pot, Pie, Bowl, Plant : Integer;
CountOre, CountClay, CountPot, CountPie, CountBowl, CountPlant : Integer;
CountUPot, CountUPie, CountUBowl, CountUPlant : Integer;
BankerDTM, GateDTM, FountainDTM : Integer;

//****************************************************************************//
// AutoColor //
//****************************************************************************//

function FindWaterColour: Integer;
var
GC, a, l, TestColor, Red, Green, Blue : integer;
var
P:array of Tpoint;
begin
if not(LoggedIn) then
exit;
GC := 12095356;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, MMX1, MMY1, MMX2, MMY2, 50);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
if rs_OnMinimap(P[a].x,P[a].y) then
begin
TestColor := GetColor(P[a].x,P[a].y);
if SimilarColors(TestColor,GC,50) then
begin
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Green - Red <= 22 then if Green - Red >= 18 then
if Blue - Red >= 55 then if Blue - Red <= 72 then
if Blue - Green >= 35 then if Blue - Green <= 52 then
if GetColor(P[a].x + 2, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 1, P[a].y + 1) = TestColor then
if GetColor(P[a].x, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 2, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 1) = TestColor then
if GetColor(P[a].x + 1, P[a].y) = TestColor then
if GetColor(P[a].x + 2, P[a].y + 1) = TestColor then
if GetColor(P[a].x + 1, P[a].y + 2) = TestColor then
begin
Result := TestColor;
WaterColor := TestColor;
if HellDebug then WriteLn('WaterColor = ' + IntToStr(TestColor));
Exit;
end;
end;
end;
end;
WriteLn('Could not find Water Color!');
Result := 0;
Logout;
end;

function FindVarrockColour: Integer;
var
GC, a, l, TestColor, Red, Green, Blue : integer;
var
P:array of Tpoint;
begin
if not(LoggedIn) then
exit;
GC := 7304312;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, MMX1, MMY1, MMX2, MMY2, 60);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
if rs_OnMinimap(P[a].x,P[a].y) then
begin
TestColor := GetColor(P[a].x,P[a].y);
if SimilarColors(TestColor,GC,60) then
begin
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Red - Blue <= 12 then if Red - Blue >= 8 then
if Red - Green <= 6 then if Red - Green >= -1 then
if Green - Blue <= 10 then if Green - Blue >= 4 then
if GetColor(P[a].x + 5, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 3) = TestColor then
if GetColor(P[a].x, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 5, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y) = TestColor then
if GetColor(P[a].x + 5, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 5) = TestColor then
begin
Result := TestColor;
if HellDebug then WriteLn('Varrock RoadColor = ' +
IntToStr(TestColor));
Exit;
end;
end;
end;
end;
WriteLn('Could not find Varrock Road Color!');
Result := 0;
Logout;
end;

function FindRoadColour: Integer;
var
GC, a, l, TestColor, Red, Green, Blue : integer;
var
P:array of Tpoint;
begin
if not(LoggedIn) then
exit;
GC := 6776942;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, MMX1, MMY1, MMX2, MMY2, 60);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
if rs_OnMinimap(P[a].x,P[a].y) then
begin
TestColor := GetColor(P[a].x,P[a].y);
if SimilarColors(TestColor,GC,60) then
begin
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Green - Blue <=4 then if Green <=115 then if Blue <=115 then
if Red - Green <= 10 then if Red - Green >= 5 then
if Red - Blue >= 5 then if Red - Blue <= 10 then
if GetColor(P[a].x + 12, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 3) = TestColor then
if GetColor(P[a].x, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 12, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y) = TestColor then
if GetColor(P[a].x + 12, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 5) = TestColor then
begin
Result := TestColor;
RoadColor := TestColor;
if HellDebug then WriteLn('RoadColor = ' + IntToStr(TestColor));
Exit;
end;
end;
end;
end;
WriteLn('Could not find Road Color!');
Result := 0;
Logout;
end;

function FindDoorColour: Integer;
var
Color, tmpx, tmpy, MinOfRange: Integer;
Length206, Length217, Length233, Length241: Integer;
Array206, Array217, Array233, Array241: TPointArray;
RangeOfOthers206, RangeOfOthers217, RangeOfOthers233, RangeOfOthers241: Integer;
tmpbool: Boolean;
begin
if not(LoggedIn) then
exit;
for Color := 200 to 254 do
begin
if not (((Color = 206) or (Color = 217) or (Color = 233) or (Color = 241))) then
begin
if FindColorCircle(tmpx, tmpy, Color, mmcx, mmcy, 70) then
begin
Result := Color;
if HellDebug then Writeln('Door Color = ' + inttostr(Color));
tmpbool := True;
end;
end;
if tmpbool then Break;
end;
if not (tmpbool) then
begin
//writeln('its a drop dot color');
FindColorsTolerance(Array206, 206, mmx1, mmy1, mmx2, mmy2, 0);
Length206 := getarraylength(Array206);
FindColorsTolerance(Array217, 217, mmx1, mmy1, mmx2, mmy2, 0);
Length217 := getarraylength(Array217);
FindColorsTolerance(Array233, 233, mmx1, mmy1, mmx2, mmy2, 0);
Length233 := getarraylength(Array233);
FindColorsTolerance(Array241, 241, mmx1, mmy1, mmx2, mmy2, 0);
Length241 := getarraylength(Array241);
RangeOfOthers206 := Max(Length233, Max(Length217, Length241)) - Min(Length233, Min(Length217, Length241));
RangeOfOthers217 := Max(Length233, Max(Length206, Length241)) - Min(Length233, Min(Length206, Length241));
RangeOfOthers233 := Max(Length206, Max(Length217, Length241)) - Min(Length206, Min(Length217, Length241));
RangeOfOthers241 := Max(Length233, Max(Length217, Length206)) - Min(Length233, Min(Length217, Length206));
MinOfRange := Min(RangeOfOthers206, Min(RangeOfOthers217, Min(RangeOfOthers233, RangeOfOthers241)));

////////Added in V2///////
if (Length206 = Length217) and (Length217 = Length233) and (Length233 = Length241) then
begin
Result := 0;
Exit;
end;
///////////////////////////

case MinOfRange of
RangeOfOthers206: Result := 206;
RangeOfOthers217: Result := 217;
RangeOfOthers233: Result := 233;
RangeOfOthers241: Result := 241;
end;
end;
end;

function FindDirtColour: Integer;
var
GC, a, l, TestColor, Red, Green, Blue : integer;
var
P:array of Tpoint;
begin
if not(LoggedIn) then
exit;
GC := 6721175;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, 595, 30, 700, 120, 60);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
if rs_OnMinimap(P[a].x,P[a].y) then
begin
TestColor := GetColor(P[a].x,P[a].y);
if SimilarColors(TestColor,GC,60) then
begin
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Red - Green >= 4 then if Red - Green <= 26 then if Red >=120 then
if Green - Blue >= 20 then if Green - Blue <= 45 then
if Blue >= 80 then if Red - Blue >= 35 then if Red - Blue <= 56 then
if GetColor(P[a].x + 2, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 1, P[a].y + 1) = TestColor then
if GetColor(P[a].x + 2, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 1, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 1) = TestColor then
begin
Result := TestColor;
if HellDebug then WriteLn('Dirt Road Color = ' + IntToStr(TestColor));
Exit;
end;
end;
end;
end;
WriteLn('Could not find Dirt Road Color!');
Result := 0;
Logout;
end;

function FindBridgeColour: Integer;
var
GC, a, l, TestColor, Red, Green, Blue, x, y: integer;
var
P:array of Tpoint;
begin
if not(LoggedIn) then
exit;
if WaterColor = 0 then WaterColor := FindWaterColour;
if not(FindColor(x, y, WaterColor, MMX1, MMY1, MMX2, MMY2)) then
WaterColor := FindWaterColour;
if WaterColor = 0 then
begin
WriteLn('No water on screen... aborting');
Result := 0;
Logout;
Exit;
end;
GC := 1389645;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, MMX1, MMY1, MMX2, MMY2, 50);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
if rs_OnMinimap(P[a].x,P[a].y) then
begin
TestColor := GetColor(P[a].x,P[a].y);
if SimilarColors(TestColor,GC,50) then
begin
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Red - Green >= 7 then if Red - Green <= 45 then if blue <=20 then
if Red - Blue >= 35 then if Red - Blue <= 77 then
if Green - Blue >= 18 then if Green - Blue <= 51 then
if GetColor(P[a].x + 2, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 1, P[a].y + 1) = TestColor then
if GetColor(P[a].x, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 2, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 2) = TestColor then
if GetColor(P[a].x + 1, P[a].y) = TestColor then
if GetColor(P[a].x + 2, P[a].y + 1) = TestColor then
if GetColor(P[a].x + 1, P[a].y + 2) = TestColor then
if FindColor(x, y, WaterColor, P[a].x - 5,
P[a].y - 5, P[a].x + 5, P[a].y + 5) then
begin
Result := TestColor;
if HellDebug then WriteLn('Bridge Color = ' +
IntToStr(TestColor));
Exit;
end;
end;
end;
end;
WriteLn('Could not find Bridge Color!');
Result := 0;
Logout;
end;

function FindBarbarianColour: Integer;
var
GC, a, l, TestColor, Red, Green, Blue : integer;
var
P:array of Tpoint;
begin
if not(LoggedIn) then
exit;
GC := 3888748;
Flag;
FindColorsSpiralTolerance(MMCX, MMCY, P, GC, MMX1, MMY1, MMX2, MMY2, 140);
l:=GetArrayLength(P);
for a:= 0 to l-1 do
begin
if rs_OnMinimap(P[a].x,P[a].y) then
begin
TestColor := GetColor(P[a].x,P[a].y);
if SimilarColors(TestColor,GC,140) then
begin
red := (TestColor mod 256);
green := ((TestColor / 256) mod 256);
blue := ((TestColor / 256) / 256);
if Red - Green <= 26 then if Blue >=45 then
if Red - Blue >= 35 then if Red - Blue <= 55 then
if Green - Blue >= 20 then if Green - Blue <= 45 then
if GetColor(P[a].x + 5, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 3) = TestColor then
if GetColor(P[a].x, P[a].y + 5) = TestColor then
if GetColor(P[a].x + 5, P[a].y) = TestColor then
if GetColor(P[a].x, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y) = TestColor then
if GetColor(P[a].x + 5, P[a].y + 3) = TestColor then
if GetColor(P[a].x + 3, P[a].y + 5) = TestColor then
begin
Result := TestColor;
if HellDebug then WriteLn('Barbarian Dirt Color = ' +
IntToStr(TestColor));
Exit;
end;
end;
end;
end;
WriteLn('Could not find Barbarian Dirt Road Color!');
Result := 0;
Logout;
end;

function FindMSColorCenterTol(var x, y: Integer; Color, Radius, Tolerance:Integer): Boolean;
var
a, c : Integer;
begin
if not(LoggedIn) then
exit;
if FindColorSpiralTolerance(x, y, Color, MSX1, MSY1, MSX2, MSY2, Tolerance) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (LoggedIn)) then
Break;
a := a + 1;
if (a = 1) then
c := c + 1;
if (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end;
if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end;
if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end;
if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if FindColorTolerance(x, y, Color, x1, y1, x2, y2, Tolerance) then
begin
Result := True;
Break;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;

//****************************************************************************//
// Declaration //
//****************************************************************************//

procedure DeclareItemDTM;
begin
EmptyBucket := DTMFromString('78DA632C6264605064400169FE920CFC401A2' +
'8C3F01F0818416A2419D000231209A4B3802C79026AB2812C0D02' +
'6A6A802C75026A6A812C39FC6A0030820869');

WaterBucket := DTMFromString('78DA6334616060A86540013535B319E480342' +
'310FF0702466320A394010D302291405A0F48941350A30D24EA09' +
'A8D10112CD44A8E924A0461F48F412506341841A1B20D141408D1' +
'D90A824A0C69C701802007F6E0D82');

Clay := DTMFromString('78DA63AC656460106340014B7AE218F881345' +
'086E13F1030360359220C6880118904D2354096100135E5409630' +
'116AC409A86900B22409A869226C0E0021DB09B7');

SoftClay := DTMFromString('78DA63FCC8C8C0A0C28002B2033919F881345' +
'086E13F1030BE02B26419D000231209A49F00595A04D480CC3120' +
'A0E63B116AFE02598A04D4FC00B264F0AB010067FC0C89');

UnFirePot := DTMFromString('78DA632C646460F062400155317C0CFC401A2' +
'8C3F01F0818B3802C7B0634C0884402E90C202B98801A905DE104' +
'D4D401594104D4D410E19E6220CB06BF1A0023680A2C');

UnFirePie := DTMFromString('78DA63D464646030644001914E1C0CFC401A2' +
'8C3F01F081815802C1D0634C0884402694520CB8A801A1322D498' +
'03590604D46803599AF8D500006EB806F0');

UnFireBowl := DTMFromString('78DA635CC9C8C090C380028AC37819F881345' +
'086E13F1030CE07B2E218D000231209A46703595904D4AC00B28A' +
'08A8D90E64651250B309C88AC5AF06009D460B59');

UnFirePlant := DTMFromString('78DA632C646460F062400155317C0CFC401A2' +
'8C3F01F0818B3802C7B0634C0884402E90C202B98801A905DE104' +
'D4D401594104D4D410E19E6220CB06BF1A0023680A2C');

Pot := DTMFromString('78DA632C646460F0624001B3B22C19F881345' +
'086E13F1030660159F60C6880118904D219405630013520BBC209' +
'A8A903B28208A8A921C23DC540960D7E350073AC0A85');

Pie := DTMFromString('78DA6394626060B06240018DC9560CFC409A1' +
'188FF0301A3009061CC8006189148200D52E340408D2A90B027A0' +
'461D489812502309240CF0AB0100AEA5072B');

Bowl := DTMFromString('78DA6374626260E061644006EB5BC518F8813' +
'448F43F10305A01D5FC6540038C4824903606AAE164C4AF06640E' +
'3F0135DE40357C04D40402D5B01150E349D8CD00B951097D');

Plant := DTMFromString('78DA6394666060906040018B63D519F881342' +
'310FF07024635204384010D302291401AA44194801A90BC160135' +
'0A404287801A752021835F0D0068DE06A3');
end;

procedure DeclareBankDDTM; //Credit to JAD for the idea

var
BankerMP: TDTMPointDef;
BankerSP: array[0..0] of TDTMPointDef;
BankerDTMSkel: TDTM;

begin
if not(LoggedIn) then
exit;

BankerMP.x := 657;
BankerMP.y := 54;
BankerMP.AreaShape := 0;
BankerMP.AreaSize := Area;
BankerMP.Tolerance := Tol;
BankerMP.Color := 62965;

BankerSP[0].x := 665;
BankerSP[0].y := 65;
BankerSP[0].AreaShape := 0;
BankerSP[0].AreaSize := Area;
BankerSP[0].Tolerance := 0;
BankerSP[0].Color := 0;

BankerDTMSkel.MainPoint := BankerMP;
BankerDTMSkel.SubPoints := BankerSP;
BankerDTM := AddDTM(BankerDTMSkel);

end;

procedure DeclareGateDDTM; //Credit to JAD for the idea

var
GateMP: TDTMPointDef;
GateSP: array[0..0] of TDTMPointDef;
GateDTMSkel: TDTM;

begin
if not(LoggedIn) then
exit;
VC := FindVarrockColour;

GateMP.x := 645;
GateMP.y := 140;
GateMP.AreaShape := 0;
GateMP.AreaSize := 1;
GateMP.Tolerance := 15;
GateMP.Color := VC;

GateSP[0].x := 655;
GateSP[0].y := 140;
GateSP[0].AreaShape := 0;
GateSP[0].AreaSize := 1;
GateSP[0].Tolerance := 0;
GateSP[0].Color := 0;

GateDTMSkel.MainPoint := GateMP;
GateDTMSkel.SubPoints := GateSP;
GateDTM := AddDTM(GateDTMSkel);

end;

Procedure DeclareFountainDDTM;
var
FountainMP: TDTMPointDef;
FountainSP: array[0..1] of TDTMPointDef;
FountainDTMSkel: TDTM;

begin
if not(LoggedIn) then
exit;
VC := FindVarrockColour;
DoorColor := FindDoorColour;

FountainMP.x := 626;
FountainMP.y := 60;
FountainMP.AreaShape := 0;
FountainMP.AreaSize := 1;
FountainMP.Tolerance := 15;
FountainMP.Color := DoorColor;

FountainSP[0].x := 630;
FountainSP[0].y := 60;
FountainSP[0].AreaShape := 0;
FountainSP[0].AreaSize := 1;
FountainSP[0].Tolerance := 15;
FountainSP[0].Color := VC;

FountainSP[1].x := 619;
FountainSP[1].y := 68;
FountainSP[1].AreaShape := 0;
FountainSP[1].AreaSize := 1;
FountainSP[1].Tolerance := 15;
FountainSP[1].Color := VC;

FountainDTMSkel.MainPoint := FountainMP;
FountainDTMSkel.SubPoints := FountainSP;
FountainDTM := AddDTM(FountainDTMSkel);

end;

//****************************************************************************//
// Clearing Declaration //
//****************************************************************************//

Procedure ClearDTM;
begin
FreeDTM(EmptyBucket);
FreeDTM(WaterBucket);
FreeDTM(Clay);
FreeDTM(SoftClay);
FreeDTM(UnFirePot);
FreeDTM(UnFirePie);
FreeDTM(unFireBowl);
FreeDTM(UnFirePlant);
FreeDTM(Pot);
FreeDTM(Pie);
FreeDTM(Bowl);
FreeDTM(Plant);
end;

Procedure ClearVars;
begin
for I := 0 to 19 do
ReportVars[I] := 0;
for I := 0 to 99 do
Players[CurrentPlayer].Integers[i] := 0;
end;

Procedure ClearChat;
begin
SetChat('On', 1)
SetChat('On', 1)
SetChat('Friends', 2)
SetChat('Friends', 2)
SetChat('Friends', 3)
SetChat('Friends', 3)
SetChat('Friends', 4)
SetChat('Friends', 4)
end;

//****************************************************************************//
// Function and Procedure //
//****************************************************************************//

procedure CheckRetaliate(AutoRet:Boolean);
begin
GameTab(1);
if AutoRet then
begin
If not FindColor(x, y, 1777020, 624, 385, 719, 396) then
begin
Mouse(666, 381, 8, 8, True);
end;
end;
if not AutoRet then
begin
If FindColor(x, y, 1777020, 624, 385, 719, 396) then
begin
Mouse(666, 381, 8, 8, True);
end;
end;
end;

function CheckPlayers:Boolean;
var
CorrectString: string;
begin
for i := 0 to HowManyPlayers - 1 do
begin
if (Players[i].Name = '') then
begin
Writeln('--');
Writeln('WARNING : Please fill in your username.');
Writeln('Warning occured with player : ' + inttostr(i));
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
if (Players[i].Pass = '') then
begin
Writeln('--');
Writeln('WARNING : Please fill in your password.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
if (Players[i].Nick = '') then
begin
Writeln('--');
Writeln('WARNING : Please fill in your nickname.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
if (Players[i].Nick <> LowerCase(Players[i].Nick)) then
begin
Writeln('--');
Writeln('WARNING : Please Uncapitalise your nickname.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
if (pos(Players[i].Nick, LowerCase(Players[i].Name)) = 1) then
begin
Writeln('--');
Writeln('WARNING : Dont use the first letter in your nick.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
if (pos(' ', Players[i].Nick) > 0) then
begin
Writeln('--');
Writeln('WARNING : Dont use spaces in your Nick.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
CorrectString := Capitalize(Players[i].Name);
if not (Pos(LowerCase(Players[i].Nick), CorrectString) > 0) then
begin
Writeln('--');
Writeln('WARNING : Nick does NOT match the name.');
if (Length(Players[i].Name) > 0) then
Writeln('Nick : ' + Players[i].Nick + ', does NOT match ' + Players[i].Name);
Writeln('For more information, visit http://www.villavu.com/forum/showthread.php?t=5410');
Result:=False;
Exit;
end;
if i >= (HowManyPlayers -1) then
begin
Result:=True;
Exit;
end;
end;
end;

function CheckSetting:Boolean;
var
CorrectString: string;
begin
for i := 0 to HowManyPlayers - 1 do
begin
if ((Players[i].Loc <> 'Bank')
and (Players[i].Loc <> 'Fountain')
and (Players[i].Loc <> 'CityGate')
and (Players[i].Loc <> 'Mining')
and (Players[i].Loc <> 'ToFountain')
and (Players[i].Loc <> 'SoftClay')
and (Players[i].Loc <> 'Pottery')
and (Players[i].Loc <> 'ToBank')
and (Players[i].Loc <> 'BankStuff')) then
begin
Writeln('--');
Writeln('WARNING : Please fill in your default location.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('Default Location must be set to < Bank > and your army at Varrock West Bank.');
Result:=False;
Exit;
end;
if (TotalLoad > 2) then
begin
Writeln('--');
Writeln('WARNING : Loads capacity exceeded.');
Writeln('Maximum Loads capacity should not exceed more then 2 loads.');
Result:=False;
Exit;
end;
CorrectString := LowerCase(Players[i].Strings[1]);
if ((CorrectString <> 'pot')
and (CorrectString <> 'piedish')
and (CorrectString <> 'bowl')
and (CorrectString <> 'plantpot')) then
begin
Writeln('--');
Writeln('WARNING : Strings[1] does not match.');
if (Length(Players[i].Name) > 0) then
Writeln('Warning occured with player : ' + Players[i].Name);
Writeln('Default Strings[1] must be set to Pot, Piedish, Bowl or Plantpot.');
Result:=False;
Exit;
end;

if i >= (HowManyPlayers -1) then
begin
Result:=True;
Exit;
end;
end;
end;

function HellFlag: Boolean;
var
timeout : Integer;
begin
if not(LoggedIn) then
exit;
if (FindColor(x, y, 255, MMX1, MMY1, MMX2, MMY2)) then
begin
Result := True;
repeat
FTWait(1);
timeout := timeout + 1;
until (not FindColor(x, y, 255, MMX1, MMY1, MMX2, MMY2)) or (timeout > 300);
end;
end;

Procedure HellRandomCompass;
var
i: Integer;
dir: string;
begin
if not(LoggedIn) then
exit;
case Random(4)+1 of
1: dir := 'wen';
2: dir := 'ewn';
3: dir := 'enw';
4: dir := 'wne';
end;
for i := 1 to 3 do
begin
MakeCompass(StrGet(dir, i))
FTWait(1);
end;
FTWait(4);
MakeCompass('N');
end;

procedure HellPlayer(Active: Boolean);
begin
if not Active then
Players[CurrentPlayer].Active := False;
Logout;
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
CurrentPlayer := 0;
while Players[CurrentPlayer].Active = False do
begin
CurrentPlayer := CurrentPlayer + 1;
if CurrentPlayer > HowManyPlayers - 1 then
begin
CurrentPlayer := 0;
if Players[CurrentPlayer].Active = False Then
begin
ClearDTM;
TerminateScript;
end;
end;
end;
SRL_Logs := SRL_Logs + 1;
WriteLn('NextPlayer');
LoginPlayer;
end;

function HellSetting:Boolean;
begin
for j := 1 to 3 do
begin
case j of
1: if SetSRLSTATSID = '' then
begin
Writeln('--');
Writeln('Please register your SRL stats at [url]http://www.stats.srl-forums.com/[/url] ');
Writeln('before using this script, Helping the community and helping yourself.');
Writeln('--');
Result := False;
Break;
end
2: if not(CheckPlayers) then
begin
Result := False;
Break;
end;
3: if not(CheckSetting) then
begin
Result := False;
Break;
end;
end;
if j>=3 then
begin
Result:=True;
exit;
end;
end;
if not(Result) then
TerminateScript;
end;

//****************************************************************************//
// Anti Random and Anti Ban //
//****************************************************************************//

procedure AntiBans;
begin
if not(LoggedIn) then
exit;
case Random(6) of
1: BoredHuman
2: PickUpMouse;
3: GameTab(1 + Random(13));
4: AlmostLogout;
5: HoverSkill('crafting', False);
6: HoverSkill('mining', False);
end;
end;

function FindFastRandoms: Boolean; //By WT-Fakawi.
begin
if not(LoggedIn) then
exit;
for i := 1 to 9 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
end;
8: begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
end;
//9: RC;
end;
wait(1);
GameTab(4);
end;
end;

Procedure FTWaitEx(Time : Integer); //By WT-Fakawi.
var
T : LongInt;
SST1, SST2, FindNormalRandomsTime, FindFastRandomsTime : LongInt;
Begin
if not(LoggedIn) then
exit;
try

T := (Time div 1000)+3;
for I := 1 to T do
begin
Wait ( 250 );
FindTalk;
end

except

begin
Wait ( Time );
FindTalk;
end;

end;

FindFastRandoms;
MarkTime(FindNorMalRandomsTime);
if FindNorMalRandomsTime-SST1 >(15000+Random(5000)) then
begin
Status('FindNorMalRandoms.');
FindNorMalRandoms;
MarkTime(SST1);
Status('FindNorMalRandoms took:'+IntToStr(SST1-FindNorMalRandomsTime)+' msec');
end;

MarkTime(FindFastRandomsTime);
if FindFastRandomsTime-SST2 >(1500+Random(1500)) then
begin
Status('FindFastRandoms.');
FindFastRandoms;
MarkTime(SST2);
Status('FindFastRandoms took:'+IntToStr(SST2-FindFastRandomsTime)+' msec');
end;
End;

//****************************************************************************//
// Walking Process //
//****************************************************************************//

Function WalkBank(Which:Integer):Boolean;
begin
if not(LoggedIn) then
exit;
case Which of
1: begin
if not(LoggedIn) then
exit;
J := 20;
VC := FindVarrockColour;
for I := 1 to 7 do
begin
if(J > 70) then
begin
Result := False;
Break;
end;
if(RadialWalk(VC,210,150,J,1,1))then
begin
HellFlag;
Result := True;
Break;
end else
J := J + 10;
end;
end
2: begin
if not(LoggedIn) then
exit;
for J := 1 to 5 do
begin
Tol := 15;
Area := 1;
for I := 1 to 5 do
begin
DeclareBankDDTM;
if(FindDTM(BankerDTM,x,y,MMX1,MMY1,MMX2,MMY2))then
begin
Result := True;
FreeDTM(BankerDTM);
Break;
end;
Tol := Tol + 5;
Area := Area + 1;
wait(75+random(50));
FreeDTM(BankerDTM);
end;
end;
if (Result) then
try
begin
Mouse(x-8, y, 2, 2, true);
HellFlag;
Exit;
end
except
begin
FindSymbol(x, y, 'bank');
Mouse(x, y, 2, 2, true);
HellFlag;
wait(400+random(500));
end;
end;
end
end;
if not(Result) then
begin
if HellDebug then Writeln('Banking'+inttostr(Which)+' process failed');
Players[CurrentPlayer].Loc := 'FailBank';
Players[CurrentPlayer].Active := False;
Logout;
end;
end;

Function WalkWater(Which:Integer): Boolean;
begin
if not(LoggedIn) then
exit;
case Which of
1:
begin
if not(LoggedIn) then
exit;
if not(RadialWalk(VC, 110, 70, 65, 0, -2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 110, 70, 65, 0, -2);
end;
HellFlag;
for I := 1 to 5 do
begin
DeclareFountainDDTM;
if(DTMRotated(FountainDTM,Fx,Fy,MMX1,MMY1,MMX2,MMY2))then
begin
Result := True;
x:=Fx+30;
y:=Fy+21;
FreeDTM(FountainDTM);
Break;
end;
wait(75+random(50));
FreeDTM(FountainDTM);
end;
if (Result) then
begin
Mouse(x, y, 2, 2, true);
HellFlag;
if FindMSColorCenterTol(x, y, WaterColors, 40 , 15) then
if LoggedIn Then Players[CurrentPlayer].Loc := 'Fountain'
if HellDebug then Writeln('Found Fountain');
end
end;
2:
begin
if not(LoggedIn) then
exit;
for I := 1 to 5 do
begin
DeclareFountainDDTM;
if(DTMRotated(FountainDTM,Fx,Fy,MMX1,MMY1,MMX2,MMY2))then
begin
Result := True;
x:=Fx;
y:=Fy+13;
FreeDTM(FountainDTM);
Break;
end;
wait(75+random(50));
FreeDTM(FountainDTM);
end;
if (Result) then
begin
Mouse(x, y, 2, 2, true);
HellFlag;
If LoggedIn Then Players[CurrentPlayer].Loc := 'ToBarbVilla'
if HellDebug then Writeln('To Craft Pottery');
end
if not(RadialWalk(VC, 250, 290, 70, 0, -2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 250, 290, 75, 0, -2);
end;
HellFlag;
if not(RadialWalk(VC, 290, 250, 55, 0, 2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 290, 250, 55, 0, 2);
end;
HellFlag;
if not(RadialWalk(VC, 220, 260, 65, 0, -2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 220, 260, 65, 0, -2);
end;
HellFlag;
if not(RadialWalk(VC, 200, 250, 45, 0, -2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 200, 250, 45, 0, -2);
end;
HellFlag;
if not(RadialWalk(VC, 300, 250, 45, 0, 2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 300, 250, 65, 0, 2);
end;
HellFlag;
if not(RadialWalk(VC, 320, 250, 35, 0, 2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 320, 250, 65, 0, 2);
end;
HellFlag;
VR := FindRoadColour;
RadialWalk(VR, 340, 250, 65, 0, 2);
HellFlag;
if not(RadialWalk(VR, 340, 250, 65, 0, 2)) then
begin
VR := FindRoadColour;
RadialWalk(VR, 250, 340, 65, 0, -2);
end;
HellFlag;
VB := FindBridgeColour;
RadialWalk(VB, 240, 300, 45, 0, -2);
HellFlag;
VA := FindBarbarianColour;
RadialWalk(VA, 250, 290, 70, 0, -2);
HellFlag;
if FindSymbol(x, y, 'pottery') and LoggedIn then
begin
Mouse(x, y, 6, 6, True);
HellFlag;
if FindMSColorCenterTol(x, y, WheelColors, 40 , 15) then
Result := True;
If LoggedIn Then
Players[CurrentPlayer].Loc := 'Pottery';
end else
Result := False;
end;
3:
begin
if not(LoggedIn) then
exit;
VA := FindBarbarianColour;
RadialWalk(VA, 10, 70, 66, 0, 2);
HellFlag;
VB := FindBridgeColour;
RadialWalk(VB, 60, 120, 50, 0, 2);
HellFlag;
if not(RadialWalk(VR, 110, 70, 65, 0, 0)) then
begin
VR := FindRoadColour;
RadialWalk(VR, 110, 70, 65, 0, 0);
end;
HellFlag;
if not(RadialWalk(VR, 120, 60, 65, 0, -2)) then
begin
VR := FindRoadColour;
RadialWalk(VR, 120, 60, 65, 0, -2);
end;
HellFlag;
VC := FindVarrockColour;
RadialWalk(VC, 110, 70, 50, 0, -2);
HellFlag;
if not(RadialWalk(VC, 85, 45, 55, 0, -2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 85, 45, 55, 0, -2);
end;
HellFlag;
if not(RadialWalk(VC, 60, 20, 65, 0, -2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 60, 20, 65, 0, -2);
end;
HellFlag;
if not(RadialWalk(VC, 70, 110, 45, 0, 2)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 70, 110, 45, 0, 2);
end;
HellFlag;
If LoggedIn Then
begin
Players[CurrentPlayer].Loc := 'BankStuff';
Result := True;
end;
end;
end;
if not(Result) then
begin
if HellDebug then Writeln('WalkWater'+inttostr(Which)+' process failed');
Players[CurrentPlayer].Loc := 'FailWaterWalk'+inttostr(Which);
Players[CurrentPlayer].Active := False;
Logout;
end;
end;

Function WalkCityGate(Which:Integer): Boolean;
begin
if not(LoggedIn) then
exit;
case Which of
1:
begin
if not(LoggedIn) then
exit;
if not(RadialWalk(VC, 200, 160, 50, 2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 200, 160, 50, 2, 0);
end;
HellFlag;
if not(RadialWalk(VC, 160, 200, 55, -2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 160, 200, 55, -2, 0);
end;
HellFlag;
if not(RadialWalk(VC, 160, 200, 55, -2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 160, 200, 55, -2, 0);
end;
HellFlag;
for I := 1 to 5 do
begin
DeclareGateDDTM;
if(DTMRotated(GateDTM,x,y,MMX1,MMY1,MMX2,MMY2))then
begin
Result := True;
FreeDTM(GateDTM);
Break;
end;
wait(75+random(50));
FreeDTM(GateDTM);
end;
if (Result) then
begin
Mouse(x, y, 2, 2, true);
HellFlag;
Wait(500);
If LoggedIn Then Players[CurrentPlayer].Loc := 'CityGate';
end
end;
2:
begin
if not(LoggedIn) then
exit;
if not(RadialWalk(VC, 380, 340, 50, -2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 380, 340, 50, -2, 0);
end;
HellFlag;
if not(RadialWalk(VC, 380, 340, 50, -2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 380, 340, 50, -2, 0);
end;
HellFlag;
if not(RadialWalk(VC, 340, 380, 50, 2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 340, 380, 50, 2, 0);
end;
HellFlag;
if not(RadialWalk(VC, 345, 375, 50, 2, 0)) then
begin
VC := FindVarrockColour;
RadialWalk(VC, 345, 375, 50, 2, 0);
end;
HellFlag;
for I := 1 to 5 do
begin
DeclareFountainDDTM;
if(DTMRotated(FountainDTM,Fx,Fy,MMX1,MMY1,MMX2,MMY2))then
begin
Result := True;
x:=Fx+18;
y:=Fy+18;
FreeDTM(FountainDTM);
Break;
end;
wait(75+random(50));
FreeDTM(FountainDTM);
end;
if (Result) then
begin
Mouse(x, y, 2, 2, true);
HellFlag;
if FindMSColorCenterTol(x, y, WaterColors, 40 , 15) then
if HellDebug then Writeln('Found Fountain');
If LoggedIn Then Players[CurrentPlayer].Loc := 'SoftClay';
end
end;
end;
if not(Result) then
begin
if HellDebug then Writeln('WalkCityGate'+inttostr(Which)+' process failed');
If LoggedIn Then Players[CurrentPlayer].Loc := 'FailCityGate'+inttostr(Which);
Players[CurrentPlayer].Active := False;
Logout;
end;
end;

Function WalkMine(Which:Integer): Boolean;
begin
if not(LoggedIn) then
exit;
case Which of
1:
begin
if not(LoggedIn) then
exit;
VD := FindDirtColour;
RadialWalk(VD, 200, 270, 65, -1, -1);
HellFlag;
if not(RadialWalk(VD, 200, 270, 45, -1, -1)) then
begin
VD := FindDirtColour;
RadialWalk(VD, 200, 270, 45, -1, -1);
end;
HellFlag;
if FindSymbol(x, y, 'mining spot') then
begin
Mouse(x, y-7, 5, 5, True);
Result := True
end
if Result then
begin
SetRun(True);
GameTab(4);
HellFlag;
If LoggedIn Then Players[CurrentPlayer].Loc := 'Mining';
end;
end;
2:
begin
if not(LoggedIn) then
exit;
if not(RadialWalk(VD, 120, 50, 65, -1, -1)) then
begin
VD := FindDirtColour;
RadialWalk(VD, 120, 50, 65, -1, -1);
end;
SetRun(False);
GameTab(4);
HellFlag;
if not(RadialWalk(VD, 120, 50, 55, -1, -1)) then
begin
VD := FindDirtColour;
RadialWalk(VD, 120, 50, 55, -1, -1);
end;
HellFlag;
for I := 1 to 5 do
begin
DeclareGateDDTM;
if(DTMRotated(GateDTM,x,y,MMX1,MMY1,MMX2,MMY2))then
begin
Result := True;
FreeDTM(GateDTM);
Break;
end;
wait(75+random(50));
FreeDTM(GateDTM);
end;
if (Result) then
begin
Mouse(x, y, 2, 2, true);
HellFlag;
If LoggedIn Then Players[CurrentPlayer].Loc := 'ToFountain';
end
end;
end;
if not(Result) then
begin
if HellDebug then Writeln('WalkMine'+inttostr(Which)+' process failed');
If LoggedIn Then Players[CurrentPlayer].Loc := 'FailWalkMine'+inttostr(Which);
Players[CurrentPlayer].Active := False;
Logout;
end;
end;

//****************************************************************************//
// Mining and Crafting //
//****************************************************************************//

function PotteryCoords(Which: Integer):TPoint;
begin
case Which of
1:
begin
Result.x := 75;
uDTM := UnFirePot;
fDTM := Pot;
end;
2:
begin
Result.x := 195;
uDTM := UnFirePie;
fDTM := Pie;
end;
3:
begin
Result.x := 315;
uDTM := UnFireBowl;
fDTM := Bowl;
end;
4:
begin
Result.x := 435;
uDTM := UnFirePlant;
fDTM := Plant;
end;
end;
case Which of
1, 2, 3, 4 : Result.y := 405;
end;
end;

function PotteryType(WhichType:String):TPoint;
begin
case LowerCase(WhichType) of
'pot' : Result:= PotteryCoords(1);
'piedish' : Result:= PotteryCoords(2);
'bowl' : Result:= PotteryCoords(3);
'plantpot' : Result:= PotteryCoords(4);
end;
end;

function OpenWheel:Boolean;
var Mark : LongInt;
begin
if not(LoggedIn) then
exit;
MarkTime(Mark);
repeat
if (not (LoggedIn)) then Break;
if not(FindColor(x, y, 16777215, 548, 209, 735, 459)) then
begin
if FindDTM(SoftClay, Cx, Cy, 548, 209, 735, 459) then
Mouse(Cx, Cy, 6, 6, True);
end;
if (FindMSColorCenterTol(Tx, Ty, WheelColors, 40, 15)) then
begin
MMouse(Tx, Ty, 6, 6);
if (IsUpText('heel')) then
begin
Mouse(Tx, Ty, 6, 6, True);
Result := True;
end;
end
Flag;
Wait((500) + Random(1000));
until ((FindColorTolerance(x, y, 1267813, 33, 368, 33, 368, 15)) or
(TimeFromMark(Mark) > (15000)));
end;

function OpenOven: Boolean;
var
Mark : LongInt;
begin
if not(LoggedIn) then
exit;
MarkTime(Mark);
repeat
if (not (LoggedIn)) then Break;
MakeCompass('S');
if (FindColorTolerance(x, y, 858758, MSX1, MSY1, MSX2, MSY2, 15)) then
begin
MMouse(x, y, 2, 2);
if (IsUpText('ire')) then
begin
Mouse(x + Random(15), y-10, 2, 2, True);
Result := True;
end;
end
Flag;
Wait((500) + Random(1000));
until ((FindColorTolerance(x, y, 1267813, 33, 368, 33, 368, 15)) or
(TimeFromMark(Mark) > (15000)));
end;

function OpenOption:boolean;
begin
repeat
if not(Loggedin) then
Exit;
wait(100+random(200));
Until (FindText(x, y, 'amount:', UpChars, MCX1, MCY1, MCX2, MCY2));
result:=true
end;

function CountDTM(DTM:Integer):Integer;
var Point: TPoint;
begin
for I := 1 to 28 do
begin
Point := ItemCoords(I);
for J := 1 to 3 do
begin
if(FindDTM(DTM,x,y,Point.x-35,Point.y-35,Point.x+35,Point.y+35))then
begin
Result := Result + 1;
Break;
end;
end;
end;
end;

function MineClay:Boolean;
var MeMark, TimeMark : LongInt;
begin
if not(LoggedIn) then
exit;
MarkTime(TimeMark);
for i := 1 to 6 do
begin
if (FindMSColorCenterTol(Cx, Cy, ClayColors, 40, 15)) then
begin
Mouse(Cx+24, Cy-5, 3, 3, True);
HellFlag;
HighestAngle;
FTwait(2);
break;
end else
LowestAngle;
end;
Repeat
if not(LoggedIn) then
exit;
if FindMSColorCenterTol(Cx, Cy, ClayColors, 40, 15) then
begin
MMouse(Cx, Cy, 0, 0);
Wait(50 + random(50));
if (IsUpText('ine')) then
begin
Mouse(Cx, Cy, 3, 3, True);
HellFlag;
MarkTime(MeMark);
Result := True;
end;
end;

if Result then
begin
Repeat
if not(LoggedIn) then
exit;
if FindGas(Cx, Cy) then
Mouse(643, 83, 0, 0, True);
if FindFight then
begin
RunAwayDirection('E');
FTWait(10);
RunBack;
end;
FindPick;
if ClickToContinue then break;
FTWaitEx(RandomTimer);
until not(FindText(x, y, 'swing', smallchars, 8, 442, 497, 459)) or (TimeFromMark(MeMark) > 12000);
ClickToContinue;
end;
Until (invfull) or (TimeFromMark(TimeMark) > 300000);
CountOre := CountDTM(Clay);
ReportVars[1] := ReportVars[1] + CountDTM(Clay);
HellRandomCompass;
end;

function MakeSoftClay:Boolean;
var
McMark : LongInt;
begin
if not(LoggedIn) then
exit;
MarkTime(McMark);
if FindMSColorCenterTol(Dx, Dy, WaterColors, 40 , 15) then
Repeat
if not(FindColor(x, y, 16777215, 548, 209, 735, 459)) then
begin
if FindDTM(EmptyBucket, Ex, Ey, 548, 209, 735, 459) then
Mouse(Ex, Ey, 0, 0, True);
end;
if FindMSColorCenterTol(Dx, Dy, WaterColors, 40 , 15) then
begin
MMouse(Dx, Dy, 0, 0);
Wait(50 + random(50));
if (IsUpText('ountain')) then
begin
Mouse(Dx, Dy, 6, 6, True);
HellFlag;
Result := True;
Repeat
FTWait(4);
i := i + 1;
until not(FindDTM(EmptyBucket, Ex, Ey, 548, 209, 735, 459)) or (I > 20);
i := 0;
end;
end;
if Result then
begin
if FindDTM(WaterBucket, Cx, Cy, 548, 209, 735, 459) then
begin
Mouse(Cx, Cy, 6, 6, True);
Wait(50 + Random(50));
if FindDTM(Clay, Kx, Ky, 548, 209, 735, 459) then
begin
Mouse(Kx, Ky, 6, 6, True);
Repeat
FTWait(4);
Until (FindColorTolerance(x, y, 1267813, 33, 368, 33, 368, 15))
MMouse(254, 410, 0, 0);
GetMousePos(x,y);
if IsUptext('Make') then
begin
Mouse(x, y, 6, 6, False);
ChooseOption('All');
Repeat
FTWait(4);
I := i + 1;
Until not(FindDTM(WaterBucket, Cx, Cy, 548, 209, 735, 459)) or (i > 20);
I:=0;
end;
end;
end;
end;
Until not(FindDTM(Clay, Kx, Ky, 548, 209, 735, 459)) or (TimeFromMark(McMark) > 300000);
CountClay := CountDTM(SoftClay);
ReportVars[2] := ReportVars[2] + CountDTM(SoftClay);
HellRandomCompass;
end;

function MakePottery(WhichType:String):Boolean;
var CountTotal : Integer;
var WaMark, LoMark : LongInt;
var T : TPoint;
begin
if not(LoggedIn) then
exit;
T := PotteryType(WhichType);
Repeat
if not(LoggedIn) then
exit;
if OpenWheel then
begin
MMouse(T.x, T.y, 6, 6);
Wait(50+random(50));
GetMousePos(Tx,Ty);
if IsUptext('Make') then
begin
Mouse(Tx, Ty, 6, 6, False);
ChooseOption('X');
OpenOption;
CountTotal := CountDTM(SoftClay);
SendText(inttostr(CountTotal)+Chr(13));
Result := True;
CountTotal := 0;
MarkTime(LoMark);
end;
end;
if Result then
begin
if not(LoggedIn) then
exit;
MarkTime(WaMark);
Repeat
if ClickToContinue then Break;
if (TimeFromMark(WaMark) > 40000) then
begin
AntiBans;
GameTab(Random(14));
MarkTime(WaMark);
end;
FTWaitEx(RandomTimer);
until not(FindDTM(SoftClay, x, y, 548, 209, 735, 459)) or (TimeFromMark(LoMark) > 300000);
ClickToContinue;
end;
Until not(FindDTM(SoftClay, x, y, 548, 209, 735, 459)) or (TimeFromMark(LoMark) > 300000);
case LowerCase(WhichType) of
'pot' :
begin
CountUPot := CountDTM(uDTM);
ReportVars[15] := ReportVars[15] + CountDTM(uDTM);
end;
'piedish' :
begin
CountUPie := CountDTM(uDTM);
ReportVars[16] := ReportVars[16] + CountDTM(uDTM);
end;
'bowl' :
begin
CountUBowl := CountDTM(uDTM);
ReportVars[17] := ReportVars[17] + CountDTM(uDTM);
end;
'plantpot' :
begin
CountUPlant := CountDTM(uDTM);
ReportVars[18] := ReportVars[18] + CountDTM(uDTM);
end;
end;
end;

function FirePottery(WhichType:String):Boolean;
var CountTotal : Integer;
var FiMark, LoMark : LongInt;
var T : TPoint;
begin
if not(LoggedIn) then
exit;
T := PotteryType(WhichType);
Repeat
if not(LoggedIn) then
exit;
if OpenOven then
begin
MMouse(T.x, T.y, 6, 6);
Wait(50+random(50));
GetMousePos(Tx,Ty);
if IsUptext('Make') then
begin
Mouse(Tx, Ty, 6, 6, False);
ChooseOption('X');
OpenOption;
CountTotal := CountDTM(uDTM);
SendText(inttostr(CountTotal)+Chr(13));
Result := True;
CountTotal := 0;
MarkTime(LoMark);
end;
end;
if Result then
begin
MarkTime(Fimark);
Repeat
if not(LoggedIn) then
exit;
if ClickToContinue then Break;
if (TimeFromMark(FiMark) > 40000) then
begin
Antibans;
GameTab(Random(14));
MarkTime(FiMark);
end;
FTWaitEx(RandomTimer);
until not(FindDTM(uDTM, x, y, 548, 209, 735, 459)) or (TimeFromMark(LoMark) > 300000);
ClickToContinue;
end;
Until not(FindDTM(uDTM, x, y, 548, 209, 735, 459)) or (TimeFromMark(LoMark) > 300000);
case LowerCase(WhichType) of
'pot' :
begin
CountPot := CountDTM(fDTM);
ReportVars[10] := ReportVars[10] + CountDTM(fDTM);
end;
'piedish' :
begin
CountPie := CountDTM(fDTM);
ReportVars[11] := ReportVars[11] + CountDTM(fDTM);
end;
'bowl' :
begin
CountBowl := CountDTM(fDTM);
ReportVars[12] := ReportVars[12] + CountDTM(fDTM);
end;
'plantpot' :
begin
CountPlant := CountDTM(fDTM);
ReportVars[13] := ReportVars[13] + CountDTM(fDTM);
end;
end;
HellRandomCompass;
If LoggedIn Then Players[CurrentPlayer].Loc := 'ToBank';
end;

function Banking:Boolean;
var Tries : Integer;
var J : TPoint;
begin
if not(LoggedIn) then
exit;
MakeCompass('E');
Wait(1000);
//LowestAngle;
Repeat
if not(LoggedIn) then
exit;
if(not(OpenBankGlass('vwb',False,False)))then
begin
HighestAngle;
if(not(OpenBankQuiet('vwb')))then
OpenBank3;
end else
HighestAngle;
Tries := Tries + 1;
Until ((BankScreen) Or (Tries > 4));
if(not(BankScreen)) then
begin
if HellDebug then Writeln('Could not find the bank booth');
Result := False;
LogOut;
Exit;
end else
Result := True;
if Result then
begin
MakeCompass('N');
FixBank;
for I := 1 to 28 do
begin
if(ExistsItem(I))then
begin
J := ItemCoords(I);
if (not(FindDTM(EmptyBucket,x,y,J.x-30,J.y-30,J.x+30,J.y+30)) and
not(FindDTM(WaterBucket,x,y,J.x-30,J.y-30,J.x+30,J.y+30)))then
begin
MMouse(J.x,J.y,2,2);
if(not(IsUpText('ucket')))then
begin
GetMousePos(Jx,Jy);
Mouse(Jx,Jy,0,0,false);
ChooseOption('All');
Wait(1200+random(500));
end;
end;
end;
end;
if BankScreen then CloseBank;
CheckLoad := CheckLoad + 1;
Banks := Banks + 1;
ReportVars[0] := ReportVars[0] + 1;
Players[CurrentPlayer].Banked := Players[CurrentPlayer].Banked + 1;
If LoggedIn Then Players[CurrentPlayer].Loc := 'Bank';
end;
end;

//****************************************************************************//
// Progress Report //
//****************************************************************************//

Procedure PlayerReport;
var Active: String;
Begin
For I := 0 to HowManyPlayers - 1 Do
Begin
If Players[i].Active=True Then Active := 'T' Else Active := 'F';
WriteLn(' '+(IntToStr(I))+' : '+Players[I].Nick+ ' = '+ Active
+'; Location = '+Players[I].Loc
+'; Banked: '+IntToStr(Players[I].Banked) + ' Loads'
+'; Worked: '+ IntToStr(Players[I].Worked) + ' min. ');
End;
Writeln(' _____________________________________________________________');
End;

Procedure ProgyReport;
begin
if Not(HellDebug) then ClearDebug;
if Not(HellDebug) then ClearReport;
PlayerCurTime := (GetSystemTime div 1000);
Players[CurrentPlayer].Worked := Players[CurrentPlayer].Worked + ((PlayerCurTime - PlayerStartTime) / 60);
Writeln(' _____________________________________________________________');
Writeln('/ \');
Writeln('| Hellbb Pottery Crafter ' + VersionNumber + ' < Progress Report > by Hellbb |');
Writeln('| |');
Writeln('| For More Information and Latest Updates Visit us at |');
Writeln('|http://www.villavu.com/forum/showthread.php?t=16912|');
Writeln('\_____________________________________________________________/');
Writeln('');
Writeln(' Worked for ' + TimeRunning);
if (Banks > 0)then
Writeln(' Bank ' + IntToStr(Banks) + ' Load[s]');
if(CountOre > 0)then
Writeln(' Mine ' + IntToStr(CountOre) + ' Clay Ore ');
if(CountClay > 0)then
Writeln(' Make ' + IntToStr(CountClay) + ' Soft Clay ');
if(CountUPot > 0)then
Writeln(' Make ' + IntToStr(CountUPot) + ' Unfire Pots ');
if(CountUPie > 0)then
Writeln(' Make ' + IntToStr(CountUPie) + ' Unfire Piedishs ');
if(CountUBowl > 0)then
Writeln(' Make ' + IntToStr(CountUBowl) + ' Unfire Bowls ');
if(CountUPlant > 0)then
Writeln(' Make ' + IntToStr(CountUPlant) + ' Unfire Plant Pots ');
if(CountPot > 0)then
Writeln(' Make ' + IntToStr(CountPot) + ' Pots ');
if(CountPie > 0)then
Writeln(' Make ' + IntToStr(CountPie) + ' Pie Dishs ');
if(CountBowl > 0)then
Writeln(' Make ' + IntToStr(CountBowl) + ' Bowls ');
if(CountPlant > 0)then
Writeln(' Make ' + IntToStr(CountPlant) + ' Plant Pots ');
Writeln(' _____________________________________________________________');
Writeln('');
PlayerReport;
SRLRandomsReport;
GameTab(4);
end;

//****************************************************************************//
// Main Setup //
//****************************************************************************//

Procedure PlayerSetup;
begin
if (LoggedIn) then
begin
ClearChat;
HighestAngle;
HellRandomCompass;
CheckRetaliate(False);
SetRun(False);
GameTab(4);
WhichType := Players[CurrentPlayer].Strings[1];
TotalLoad := Loads;
PlayerStartTime := (GetSystemTime div 1000);
ProgyReport;
end;
end;

Procedure Setup;
begin
ClearDebug;
ClearReport;
SetUpSRL;
ScriptID := '263';
DeclarePlayers;
ActivateClient;
wait(500+random(500));
if HellSetting then
begin
SRLID := SetSRLSTATSID;
SRLPassword := SetSRLSTATSPASS;
SetupMining;
ClearVars;
MouseSpeed := 15;
SymbolAccuracy := 0.5;
DeclareItemDTM;
LampSkill := 'crafting';
if not(LoggedIn) then
begin
LoginPlayer;
SetScreenName(Players[CurrentPlayer].Nick);
wait(500+random(500));
end;
end;
end;

//****************************************************************************//
// Main Loop //
//****************************************************************************//

begin
Setup;
Repeat
if not(LoggedIn) then
exit;
if not((CountDTM(EmptyBucket)+CountDTM(WaterBucket))=4) then
begin
Writeln('Please load 4 bucket in your inventory before start the script');
TerminateScript;
end else
PlayerSetup;
Repeat
if not(LoggedIn) then
break;
if Players[CurrentPlayer].Loc = 'Bank' then
begin
WalkBank(1);
WalkWater(1);
end;
if Players[CurrentPlayer].Loc = 'Fountain' then
WalkCityGate(1);
if Players[CurrentPlayer].Loc = 'CityGate' then
WalkMine(1);
if Players[CurrentPlayer].Loc = 'Mining' then
begin
MineClay;
WalkMine(2);
end;
if Players[CurrentPlayer].Loc = 'ToFountain' then
WalkCityGate(2);
if Players[CurrentPlayer].Loc = 'SoftClay' then
begin
MakeSoftClay;
WalkWater(2);
end;
if Players[CurrentPlayer].Loc = 'Pottery' then
begin
MakePottery(WhichType);
FirePottery(WhichType);
end;
if Players[CurrentPlayer].Loc = 'ToBank' then
WalkWater(3);
if Players[CurrentPlayer].Loc = 'BankStuff' then
begin
WalkBank(2);
Banking;
end;
ProgyReport;
until LoggedIn and (CheckLoad >= TotalLoad);
if LoggedIn then
begin
CheckLoad := 0;
SetChat('off',1);
wait(500);
repeat
FTwait(70);
Logout;
until not LoggedIn;
if HowManyPlayers = 1 then
FTWait(1400) else
FTWait(70);
HellPlayer(True);
FindPickHeadColor;
Gametab(4);
end;
if Not(LoggedIn) Then
begin
Wait(500+random(500));
HellPlayer(False);
end;
until(False);
end.

——————————————————
<!– END TEMPLATE: formanswers –>

Dark_Sniper

2007-09-24 22:30:54

hellbb looks nice so far im looking though the script so no answer yet :p


but where do you live.

HellBoyz

2007-09-24 22:32:16

Malaysia - small country like potato in world map. This is the first script i make and currently working on multiple ruins runescrafting process.

Edit : OOPS posted twice sorry

Dark_Sniper

2007-09-24 22:36:50

be more vague XD


your standards look pretty good

i personally do not like how it

If ... then
if ... then
if ... then

but I normally do not see if then all together like that

i would have done that differently to keep standards looking good.


EDIT:

you know you posted your app 2 times XD

thats bad.

HellBoyz

2007-09-24 22:40:21

well since this is my first attempt, will change to my other script in future. Thanks for the guideline.

MasterKill

2007-09-25 01:23:24

you use much auto coloring…
but,
you got evrything you need.

yes.

Rikje

2007-09-25 01:43:18

you have autocolor skills hé? but arent those allready in srl?.
but nice apply and good failaves. you got a yes from here.

nielsie95

2007-09-25 02:00:51

Why do you copy so many SRL-procedures to your script? Or do you adjust them?

Anyway, yes from me.

BobboHobbo

2007-09-25 02:11:46

Preety masive script esspecially for your first script and you have all the requirements ( If i looked good enough)

Good Job, yes from me.

HellBoyz

2007-09-25 02:52:26

yes all the autocolor was adjusted particular for the script usage only and the script look messy but mostly to prevent noobs to make stupid mistake on thread on and on going.

and thanks to all of you

Santa_Clause

2007-09-25 05:09:26

Yes!

HyperSecret

2007-09-25 09:55:42

the script looks good, but there are some places where there isnt credit giving ex: AutoRetaliate is fawakis (atleast its the same exact one as in my fighter and i got it from fawaki…) and you changed alot of the procedures already included in srl and then just added them to you script for the auto coloring…i feel something isnt full right sry…gonna say no…

Hugolord

2007-09-25 10:02:42

yes from me very good stuff there :D

HellBoyz

2007-09-25 10:26:12

I'm so sorry for the credits as most of the credits was put inside the public script as my description for the script was quite long but if your's need to see the credit i'll try to put it all in here.

n3ss3s

2007-09-25 11:21:44

Oh, it was not credited!

Like, when I read through the first couple functions I was sure they look too much dev material (I suspected nielsie xD) for a not SRL Member, was about to say that it is copied or the best app since Claw, so, are the first few leet procs from SRL?

But anyways was it from SRL or not, if he forgot to credit, if the first few functions wasnt his, the script looks overall fine so its yes from me.

EDIT: O.o if theyre from SRL he removed the credits :O

the scar noob

2007-09-25 17:12:35

Everythin gis said, as I've stated in te script's thread I like it and it shows a lot potential and enough to get into SRL Members group, that's my opinion.

yes!

-Stijn.

LordGregGreg

2007-09-25 17:34:06

yes… very good and well done. this is the stuff we need in srl. welcome, this is good, but expect better once your in.

very well done, this is a solid yes.

not to mention that you have all the semi colons, you need. and to me, that is an auto-yes

Negaal

2007-09-26 07:08:24

101% yes

Bourdou!

2007-09-26 08:23:35

And it compiles to! I give you a yes.

n3ss3s

2007-09-26 08:57:26

Man I forgot to vote, anyways, yes from me as I said ;)

Oh, you added the credits or was I just blind?

@ greg: Writeln('phr33 4u7035 pl4wkx?');

ShowerThoughts

2007-09-27 16:38:51

man he did so much for the forums thats a YES

hermpie

Harry

2007-09-27 16:48:36

I am suprised you are not in already :spot:

Yes! :D

HellBoyz

2007-10-10 23:50:29

thanks but i'm still waiting for the response

Santa_Clause

2007-10-11 00:19:14

Lmao…how long has this poll been closed?

HellBoyz

2007-10-11 00:31:31

not so sure i'm still waiting for the result

Santa_Clause

2007-10-11 00:33:50

Just private message an admin.

HellBoyz

2007-10-11 04:30:02

so which admin should i pm to?

Wizzup?

2007-10-11 04:53:14

In!
But are you also johnhellboy?