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
——————————————————
<!– END 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 –>