SRL Archive - SRL Member Goodies

WaterFiends Incomplete.


Brandon

2012-02-01 14:54:52

For anyone that wants to work on a waterfiender:
Almost all procedures needed are written.. just needs timings and order and yeah..
Had to post it here compared to public because there is summoning.. and ppl will use that in flight's script so that's a no-no.

SPS Maps (RUNESCAPE_SURFACE)
http://i.imgur.com/Xn9Gg.png
http://i.imgur.com/PBJXy.png


program WFK;
{$DEFINE SRL5}
{$DEFINE CRASHSMART}
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i SPS/sps.simba}
{$i srl/srl/skill/fighting.simba}
{$i SRL/SRL/skill/summoning.simba}
{$I SRL/SRL/Misc/Debug.Simba}

const
NOB = 3; //Number of bunyip's to withdraw..
NOP = 9; //Number of prayer potion(4) to withdraw..
NOS = 100; //Minimum number of scrolls to have at all times..
NOF = 8; //Number of Food to withdraw..
WTE = 600; //When to Eat/What HP Level to eat at..
CBT = 7; //Current Bank Tab that contains all Items Needed..

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := '';
Pass := '';
Pin := '';

Strings := ['shark']; //Since this is a beta script, ONLY choose ONE type of food.. Any type; just one!

BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_RuneCrafting;
Active := True;
end;
end;

var
SaveMe: Boolean;

type
FoodStruct = record
Item: Integer;
Uptext: TStringArray;
end;

Procedure Shutdown(Reason: String);
begin
Logout;
writeln(Reason);
TerminateScript;
end;

Function FoundSymbol(Ident: Integer; var X, Y, Dist: Integer): Boolean;
var
B: TBox;
TPA: TPointArray;
L,i,CTS: Integer;
ATPA,ATPA2: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsTolerance(TPA, 12632256, MMX1, MMY1, MMX2, MMY2, 5);
ColorToleranceSpeed(CTS);
if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, 10, 10);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[i]);
with B do
begin
if (Ident = 1) then
FindColorsTolerance(ATPA2[i], 1796060, B.X1, B.Y1, B.X2, B.Y2, 5) //Fairy Ring Symbol.
else if(Ident = 2) then
FindColorsTolerance(ATPA2[i], 14630407, B.X1, B.Y1, B.X2, B.Y2, 5); //Water Symbol..

Result := (Length(ATPA2[i]) > 0);
if Result then
begin
MiddleTPAEx(ATPA2[i], X, Y);
Dist := Distance(MMCX, MMCY, X, Y);
Exit;
end;
end;
end;
end;

Function OpenBankZanaris :Boolean;
var
B: TBox;
TPA: TPointArray;
ATPA, ATPA2: T2DPointArray;
CTS, L, X, Y, I, T: Integer;
begin
Result := (LoggedIn and BankScreen);
if (Result) then
Exit
else
if (Length(Players) > 0) then
if ((PinScreen) and (Players[CurrentPlayer].Pin <> '')) then
InPin(Players[CurrentPlayer].Pin);

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.15, 0.50);
FindColorsTolerance(TPA, 9872045, MSX1, MSY1, MSX2, MSY2, 5); //Bank Booth color..
SetColorSpeed2Modifiers(0.2, 0.2);

if Length(TPA) < 1 then
Exit;
ATPA := TPAtoATPAEx(TPA, 20, 20);
L := High(ATPA);
SetArrayLength(ATPA2, L+1);
for i := 0 to L do
begin
B := GetTPABounds(ATPA[I]);
with B do
begin
ColorToleranceSpeed(2);
begin
SetColorSpeed2Modifiers(0.02, 3.08);
FindColorsTolerance(ATPA2[I], 7920871, B.X1, B.Y1, B.X2, B.Y2, 9); //Yellow Colour on booth..
ColorToleranceSpeed(CTS);
end;
ColorToleranceSpeed(CTS);

Result := (Length(ATPA2[i]) > 0);
if Result then
begin
MiddleTPAEx(ATPA2[i], X, Y);
MMouse(X, Y, 0, 0);
wait(500);
if isUptextMultiCustom(['Bank', 'Booth', 'ank', 'ooth']) then
begin
ClickMouse2(MOUSE_RIGHT);
ChooseOptionMulti(['ank Bank booth', 'ank Ba', 'ank Bank bo']);
t := (GetSystemTime + 5000);
repeat
if (BankScreen) or (PinScreen) then
begin
Result := true;
Break;
end;
Wait(50);
until(GetSystemTime > t);

if (Length(Players) > 0) then
if ((PinScreen) and (Players[CurrentPlayer].Pin <> '')) then
InPin(Players[CurrentPlayer].Pin);

Result := (BankScreen) or (PinScreen);
end;
Exit;
end;
end;
end;
end;

Function SummonPoints: Integer;
var
ColourString: String;
begin
Result:= GetMMLevels('summon', ColourString);
end;

Function SummoningRenew(PouchToSummon: integer): Boolean;
var
Pouch, X, Y, tries, Summoning: Integer;
begin
Case PouchToSummon of
0:
exit;
1:
Pouch := DTMFromString('m1gAAAHic42JgYDjIxMBwjAlC70PCIP4RKD4JxJyMDAxcQMwLxSA+GxIGiXEAcWFJPENxeSKDv78tGOcXxzIUlMQxFJUlMGSkhYDFyqqSGbiAdhODGYnECAAAECwT5g=='); //Bunyip

2:
Pouch := DTMFromString('mbQAAAHicY2VgYDjEBMH7gPgAEJ8H4gpGBoYSIC4D4hogrgTilopUhqbyFIbiVF8wZmBgYuACkuiYEQsGAwBb6Qt+'); //Unicorn
end;

Summoning := DTMFromString('mWAAAAHicY2FgYHBigmBXIPYEYn1GBgYrILaE4vz8Ega5a3cZZC/dBKpmYkgBkuxImBENgwAAgewHaA=='); //Potion to drink.
//UniScroll := DTMFromString('mwQAAAHic42RgYDjIxMCwjwlCHwbiY0B8FIh3Q8WPALEeIwODFhCrQ2kYWxuI9aG4vjiRoaM8iiEicj4YR0YtBGOQGEhuWm8TAxfQPkKYkQgMBwBcExUb');


Gametab(Tab_Inv);
if(FindDTM(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) and FindDTM(Summoning, x, y, MIX1, MIY1, MIX2, MIY2)) then
if(SummonPoints < 20) then
begin
writeln('Need to Refill Summoning Points.');
if(FindDTM(Summoning, X, Y, MIX1, MIY1, MIX2, MIY2)) then
begin
MMouse(X, Y + 5, 0, 0);
if(WaitUptextMulti(['ummoning', 'potion'], 500)) then
begin
ClickMouse2(False);
ChooseOptionMulti(['rink', 'Drink', 'rink Summoning', 'Drink Summoning']);
wait(2000);
end;
end;
end;

if (SummonPoints < 20) then
begin
FreeDTM(Pouch);
FreeDTM(Summoning);
exit;
end;

tries := 0;
if(FindDtm(Pouch, x, y, MIX1, MIY1, MIX2, MIY2) and (SummonPoints >= 20)) then
Repeat
if(not Loggedin) then
LoginPlayer;
if UsingFamiliar then
break;
FindNormalRandoms;
MMouse(x, y, 5, 5);
wait(500);
ClickMouse2(false);
wait(500);
ChooseOption('Summon');
if(FindBlackChatMessage('follower')) then
break;
tries:= tries + 1;
if(tries > 10) then
begin
FreeDTM(Pouch);
FreeDTM(Summoning);
exit;
end;
Until(UsingFamiliar = true);

wait(1500);

Result:= UsingFamiliar;

FreeDTM(Pouch);
FreeDTM(Summoning);
end;

Function MidPoint(A, B: TPoint): TPoint;
begin
Result:= Point(((A.X + B.X) div 2), ((A.Y + B.Y) div 2));
end;

Function NearZFairyRing: Boolean;
var
X, X2, Y, Y2, Dist: Integer;
MidP: TPoint;
begin
FoundSymbol(1, X, Y, Dist); //Find Transport Symbol.
if Not FoundSymbol(2, X2, Y2, Dist) then //Water Symbol.
begin
MMouse(X, Y, 0, 0);
ClickMouse2(MOUSE_LEFT);
FFlag(0);
While isMoving do
wait(1);
wait(1000);
end;
FoundSymbol(2, X2, Y2, Dist);
MidP:= MidPoint(Point(X, Y), Point(X2, Y2));
Result:= (Distance(MidP.X, MidP.Y, MMCX, MMCY) < 20);
if Result then
Exit;

MMouse(MidP.X, MidP.Y, 0, 0);
ClickMouse2(MOUSE_LEFT);
FFlag(0);
While IsMoving do
wait(1);
wait(1000);
Result:= (Distance(MidP.X, MidP.Y, MMCX, MMCY) < 20);
end;

Function UseZFairyRing: Boolean;
var
CTS, X, Y: Integer;
TPA: TPointArray;
TLog: String;
begin
TLog:= GetTextAtExWrap(604, 210, 682, 233, 0, 5, 2, 2070783, 10, 'CharsNPC');
Result:= ExecRegExpr('Log', TLog);
if Result then
exit;
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 3.21);
if FindColorsTolerance(TPA, 14019239, MSX1, MSY1, MSX2, MSY2, 10) then
begin
MiddleTPAEx(TPA, X, Y);
MMouse(X, Y, 0, 0);
if IsUptextMultiCustom(['Use', 'se Fai', 'Fairy ri', 'airy rin', 'ry rin', 'Fairy ring']) then
ClickMouse2(MOUSE_LEFT)
else
begin
ClickMouse2(MOUSE_RIGHT);
WaitOptionMulti(['Use', 'se Fai', 'se Fairy', 'Use Fairy ring', 'Use Fairy ri'], 1000);
Wait(1000);
TLog:= GetTextAtExWrap(604, 210, 682, 233, 0, 5, 2, 2070783, 10, 'CharsNPC');
Result:= ExecRegExpr('Log', TLog);
end;
end;
end;

Function UseWaterfiendsRing: Boolean;
var
CTS, X, Y, Dist, T: Integer;
TPA: TPointArray;
begin
Result:= (FoundSymbol(1, X, Y, Dist) and FoundSymbol(2, X, Y, Dist));
if Result then
Exit;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(1.91, 2.42);
if FindColorsTolerance(TPA, 8972683, MSX1, MSY1, MSX2, MSY2, 11) then
begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
MiddleTPAEx(TPA, X, Y);
MMouse(X, Y, 0, 0);
if IsUptextMultiCustom(['Use', 'se Fai', 'Fairy ri', 'airy rin', 'ry rin', 'Fairy ring']) then
ClickMouse2(MOUSE_LEFT)
else
begin
ClickMouse2(MOUSE_RIGHT);
WaitOptionMulti(['Use', 'se Fai', 'se Fairy', 'Use Fairy ring', 'Use Fairy ri'], 1000);
T:= 0;
MarkTime(T);
While (FoundSymbol(1, X, Y, Dist) and (Not FoundSymbol(2, X, Y, Dist)) and (TimeFromMark(T) < 5000)) do
wait(1000);

Wait(1000);
Result:= (FoundSymbol(1, X, Y, Dist) and FoundSymbol(2, X, Y, Dist));
end;
end;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;

Function RingOfLifeCheck: boolean;
begin
Result:= False;
GameTab(tab_equip);
if WearingItem(11) then
begin
MouseEquippedItem('ring', 3);
Wait(RandomRange(175, 350));
if (Not isUptextMultiCustom(['ing of life', 'life', 'of life', 'g of l', 'ng of li'])) then
begin
Shutdown('No Ring Of Life Equipped.');
end;
end else
Result := true;
end;

Function FairyRingText(Which: String): Boolean;
var
X, Y: Integer;
TLog: String;
begin
TLog:= GetTextAtExWrap(604, 210, 682, 233, 0, 5, 2, 2070783, 10, 'CharsNPC');
if (Not ExecRegExpr('Log', TLog)) then
exit;

Case LowerCase(Which) Of
'ancient cavern', 'ancient cav':
begin
Result:= IsUptext('B J Q');
if Result then exit;

HoldMouse(725, 456, MOUSE_LEFT);
while (Not FindTextTPAEx(2070783, 10, 547, 234, 735, 465, X, Y, 'cavern', 'SmallChars', Nothing)) do
wait(700);
ReleaseMouse(725, 456, MOUSE_LEFT);
wait(1000);
FindTextTPAEx(2070783, 10, 547, 234, 735, 465, X, Y, 'cavern', 'SmallChars', Nothing);
MMouse(X, Y, 0, 0);
Result:= WaitUptext('B J Q', 700);
if (Not Result) then
begin
MMouse(473, 37, 0, 0);
if(WaitUptext('lose', 700)) then
ClickMouse2(MOUSE_LEFT)
else
exit;
TLog:= GetTextAtExWrap(604, 210, 682, 233, 0, 5, 2, 2070783, 10, 'CharsNPC');
Result:= (Not ExecRegExpr('Log', TLog));
if Result then
UseZFairyRing;
end;
end;
end;
end;

Function HPLevel: Integer;
var
ColourString: String;
begin
Result:= GetMMLevels('HP', ColourString);
end;

Function ReturnFoodInfo(Food: String): FoodStruct;
begin
Case LowerCase(Food) of
'shark':
begin
Result.Item:= DTMFromString('mlwAAAHicY2dgYChkYmAoB+IqIK4B4gYoOxOIZRkZGKSBWB6IlYBYG4h1gFgNiEMdDRimVacy9JcmMHQXxTG4m2kwxHmYMvDx8TFwAc3FhRnxYCgAAFFKC0Y=');
Result.Uptext:= ['Shark', 'hark', 'ark'];
end;
'lob', 'lobs', 'lobster', 'lobby', 'lobbies':
begin
Result.Item:= DTMFromString('mlwAAAHicY2dgYJjPxMCwGIoXAvFMIF4AxEuAuJ8RgicB8XQg7oLiDiDm4+NjKLcRZJjtJ86wJVqaYV2EFMP8AHGGbTHSDFxAc3FhRjwYCgD3pg8b');
Result.Uptext:= ['Lob', 'obster', 'bster'];
end;
'tuna':
begin
Result.Item:= DTMFromString('mggAAAHicY2NgYPBkYmDwA+JgKO0OxVsYGRg2QvFWIN4JZadGhjPEBAUwRPj5MOQmxDHw8fGB+VxAs7BhRhwYAgDSsAuu');
Result.Uptext:= ['Tuna', 'una'];
end;
'sardine':
begin
Result.Item:= DTMFromString('mWAAAAHicY2FgYDjOxMBwBIhPAvEZIFZmZGBQBWJ5IJYD4urcLIYFfd0MqZHhDNnxsQxcQD3ImBENgwAADhkJKQ==');
Result.Uptext:= ['ardine', 'Sardine', 'dine'];
end;
'rocktail', 'rock', 'tail':
begin
Result.Item:= DTMFromString('mlwAAAHicY2dgYDjFxMBwAYrPAPFZID4GxIeBWJGRgUEOiJWBWBOIpaB8ResultC21eVkSA4NY1gzdRrDzgWLGPSV2BmMVNkZtqVnM3ABzcWFGfFgKAAAuZsObg==');
Result.Uptext:= ['ocktail', 'tail', 'ockta', 'Rocktail'];
end;
'cake':
begin
Result.Item:= DTMFromString('mrAAAAHic42BgYChhYmAoAOIqKC4G4gYmiHg1ELswQrAjELsCsR0QuwGxFxTv376d4czhwwwTu7sZ5s+YwbB+xQoGNTlWhsIoAYYYYV4GLqAd+DAjAQwDAJ8PEe0=');
Result.Uptext:= ['ake', 'Cake'];
end;
'bass':
begin
Result.Item:= DTMFromString('mggAAAHicY2NgYJjFxMAwD4pnAvF8IF4MxD6MEOwBxO5A7ArFfHx8DGed5BjKvZ0ZNltJMcw3FgdjLqBZ2DAjDgwBALd+CvI=');
Result.Uptext:= ['ass', 'Bass'];
end;
'sword', 'swordy', 'swordfish', 'swords',
'swordies', 'sword fish':
begin
Result.Item:= DTMFromString('mbQAAAHicY2VgYMhjYmDIAOIsIC4G4kIg9mZkYPAHYi8g9gViTyDuTJzIUBXWyFAUWAmmc32LGbiA+tExIxYMBgDAPgpw');
Result.Uptext:= ['Swordfis', 'wordfis', 'ordfis', 'Swordfish'];
end;
'monk', 'monkfish', 'monk fish', 'monks':
begin
Result.Item:= DTMFromString('mlwAAAHicY2dgYDjIxMCwB4h3AfFOID4AxEeheBYjBE8H4nlAPA2IZwDxHCAWEuJgiApwZQjxcmDI9nRncDTVZtBWVWRwtDBi4AKaiwsz4sFQAAANlg6I');
Result.Uptext:= ['Monkfi', 'onkfish', 'onkfis', 'Monkfish'];
end;
'cave', 'cavefish', 'cave fish':
begin
Result.Item:= DTMFromString('mlwAAAHicY2dgYJjCxMAwGYinAfEMKLsfiCcAMTcjAwMHELNCaRYozQvEpX4RDAuz8xhmpWcyrC4qZTDQ02NYlJPPcKChmYELaC4uzIgHQwEALJsOBw==');
Result.Uptext:= ['avefi', 'Cavefish', 'avefish', 'avefish'];
end;
'pizza', 'meat pizza':
begin
Result.Item:= DTMFromString('m1gAAAHic42JgYChhYmCoA+JKIC4F4kImiFg+VLwJiKuBuIeRgaEPiDuAuBOK+4F4EhBPBeJeIG4F4uVLJRnKJQXBGMYG0f1xokDbmOCYC0gSgxmJxAgAAEAWEdw=');
Result.Uptext:= ['Pizza', 'eatpiz'];
end;
'turtle', 'sea', 'sea turtle', 'squirtle':
begin
Result.Item:= DTMFromString('mlwAAAHicY2dgYJjCxMAwEYhnAPEsIJ4KxHOAuB+IpzMCxYB4BhBPhuKFQDwfiH09nBj8vVzA2NXRhsHD2Y4h15+fIdGNj4ELaC4uzIgHQwEAvecOTA==');
Result.Uptext:= ['turtle', 'Seaturtle', 'Sea-turtle', 'urtle', 'ea-tur', 'eaturle'];
end;
'manta', 'ray', 'manta ray', 'mantaray':
begin
Result.Item:= DTMFromString('mggAAAHicY2NgYMhlYmAoBOIcIM4E4mIgzgDi3YwMDDuBeBsQ7wPivVB+hLMhg5eFJkOUixEYg9jJ3uYMXECzsGFGHBgCAAfwC+4=');
Result.Uptext:= ['manta', 'Manta', 'antaray', 'MantaRay', 'Manta-ray', 'ntara'];
end;
end;
end;

Procedure HealPlayer(Food: TStringArray);
var
I, X, Y: Integer;
TPA: TPointArray;
FS: FoodStruct;
begin
if (HPLevel <= WTE) then
begin
GameTab(Tab_Inv);
wait(1000);
For I:= 0 To High(Food) do
begin
FS:= ReturnFoodInfo(Food[I]);


GameTab(Tab_Inv);
wait(500);
SetLength(TPA, 200);
if FindDTM(FS.Item, X, Y, MIX1, MIY1, MIX2, MIY2) then
repeat
FindDTM(FS.Item, X, Y, MIX1, MIY1, MIX2, MIY2);
FindDTMs(FS.Item, TPA, MIX1, MIY1, MIX2, MIY2);
MMouse(X, Y, 5, 5);
WaitUptextMulti(['at', 'eat', 'Eat'], 500);
ClickMouse2(true);
wait(1000);
Until((HPLevel > WTE) or (FindDTMs(FS.Item, TPA, MIX1, MIY1, MIX2, MIY2) = False) or (FindDTM(FS.Item, X, Y, MIX1, MIY1, MIX2, MIY2) = False));

GameTab(Tab_Inv);
if((HPLevel <= WTE) and ((Not FindDTM(FS.Item, X, Y, MIX1, MIY1, MIX2, MIY2)) or (Length(TPA) = 0))) then
SaveMe:= True;

FreeDTM(FS.Item);
end;
end;
end;

Function FromBank: Boolean;
var
Pouch, Prayer, Scrolls, X, Y, I, T, Tries, NOBC, NOPC, NOFC, NOSC: Integer;
BP: TPoint;
FS: FoodStruct;
begin
Result:= False;
OpenBankZanaris;
DepositAll;
BankTab(CBT);
Pouch := DTMFromString('m1gAAAHic42JgYDjIxMBwjAlC70PCIP4RKD4JxJyMDAxcQMwLxSA+GxIGiXEAcWFJPENxeSKDv78tGOcXxzIUlMQxFJUlMGSkhYDFyqqSGbiAdhODGYnECAAAECwT5g==');
Prayer:= DTMFromString('mQwAAAHicY2ZgYJjKyMAwC4inAXEOkF8ExFVAbLmzm0GrNRnIYmJgB5IwzIiEgQAAB8EFzQ==');
Scrolls := DTMFromString('mWAAAAHicY2FgYPjAyMDwB4h/AvF7IP4MFHsHxH+A+DsQe3oYAEkmMI6Ims/ADmQhY0Y0DAIAeJ4J5w==');

Tries:= 0;

NOBC:= ItemAmount('inv', 'dtm', Pouch, []);
while ((NOBC < NOB) or (Tries < 5)) do
begin
if (NOBC < NOB) then
if FindDTM(Pouch, X, Y, MBX1, MBY1, MBX2, MBY2) then
begin
MMouse(X, Y, 0, 0);
if (WaitUptextMulti(['yip pouch', 'unyip', 'Bunyip pouch', 'yip po'], 1200)) then
begin
BP:= MSTPointToBankPoint(Point(X, Y));
WithdrawEx(BP.X, BP.Y, NOB, ['yip pouch', 'unyip', 'Bunyip pouch', 'yip po']);
end;
end;
Inc(Tries);
T:= 0;
MarkTime(T);
while (TimeFromMark(T) < 2000) and (ItemAmount('inv', 'dtm', Pouch, []) < NOB) do
wait(1);

NOBC:= ItemAmount('inv', 'dtm', Pouch, []);
if (NOBC >= NOB) then
break;
end;

Tries:= 0;

NOSC:= ItemAmount('inv', 'dtm', Pouch, []);
while ((NOSC < NOS) or (Tries < 5)) do
begin
if (NOSC < NOS) then
if FindDTM(Scrolls, X, Y, MBX1, MBY1, MBX2, MBY2) then
begin
MMouse(X, Y, 0, 0);
if (WaitUptextMulti(['wallow', 'allow wh', 'ow wh', 'low whole', 'wallow whole', 'hole scr'], 1200)) then
begin
BP:= MSTPointToBankPoint(Point(X, Y));
WithdrawEx(BP.X, BP.Y, (NOS - NOSC), ['wallow', 'allow wh', 'ow wh', 'low whole', 'wallow whole', 'hole scr']);
end;
end;
Inc(Tries);
T:= 0;
MarkTime(T);
while (TimeFromMark(T) < 2000) and (ItemAmount('inv', 'dtm', Scrolls, []) < NOS) do
wait(1);

NOSC:= ItemAmount('inv', 'dtm', Scrolls, []);
if (NOSC >= NOS) then
break;
end;

tries:= 0;

NOPC:= ItemAmount('inv', 'dtm', Prayer, []);
while ((NOPC < NOP) or (Tries < 5)) do
begin
if (NOPC < NOP) then
if FindDTM(Prayer, X, Y, MBX1, MBY1, MBX2, MBY2) then
begin
MMouse(X, Y, 0, 0);
if (WaitUptextMulti(['ayer pot', 'yer po', 'Prayer potion', 'raper pot'], 1200)) then
begin
BP:= MSTPointToBankPoint(Point(X, Y));
WithdrawEx(BP.X, BP.Y, NOP, ['ayer pot', 'yer po', 'Prayer potion', 'raper pot']);
end;
end;
Inc(Tries);
T:= 0;
MarkTime(T);
while (TimeFromMark(T) < 2000) and (ItemAmount('inv', 'dtm', Prayer, []) < NOP) do
wait(1);
NOPC:= ItemAmount('inv', 'dtm', Prayer, []);
if (NOPC >= NOP) then
break;
end;

tries:= 0;

while ((NOFC < NOF) or (Tries < 5)) do
begin
For I:= 0 To High(Players[CurrentPlayer].Strings) do
begin
FS:= ReturnFoodInfo(Players[CurrentPlayer].Strings[I]);
NOFC:= ItemAmount('inv', 'dtm', FS.Item, []);
if (NOFC < NOF) then
if FindDTM(FS.Item, X, Y, MBX1, MBY1, MBX2, MBY2) then
begin
MMouse(X, Y, 0, 0);
BP:= MSTPointToBankPoint(Point(X, Y));
WithdrawEx(BP.X, BP.Y, NOF, FS.Uptext);
end;
end;
Inc(Tries);
T:= 0;
MarkTime(T);
while (TimeFromMark(T) < 2000) and (ItemAmount('inv', 'dtm', FS.Item, []) < NOF) do
wait(1);
NOFC:= ItemAmount('inv', 'dtm', FS.Item, []);
FreeDTM(FS.Item);
if (NOFC >= NOF) then
break;
end;

FreeDTM(Pouch);
FreeDTM(Prayer);
FreeDTM(Scrolls);

if ((NOBC < NOB) or (NOPC < NOP) or (NOFC < NOF)) then
begin
CloseBank;
Shutdown('Could Not Withdraw All Items.');
end;
end;

Function ToAndFroBank(Direction: String): Boolean;
var
Path: TPointArray;
begin
Path:= [Point(90, 90), Point(94, 90), Point(102, 97),
Point(108, 101), Point(113, 105), Point(117, 109),
Point(123, 112), Point(130, 116), Point(137, 118),
Point(145, 121), Point(151, 124), Point(158, 128),
Point(164, 130), Point(172, 134), Point(179, 136),
Point(186, 141), Point(188, 147), Point(193, 155),
Point(195, 166), Point(196, 172), Point(197, 180)];

Case LowerCase(Direction) Of
'bank':
begin
InvertTPA(Path);
Result:= SPS_WalkPath(Path);
end;

'transporter':
begin
Result:= SPS_WalkPath(Path);
end;
end;
end;

Function FindPrayerPot: Boolean;
var
DTM, X, Y: Integer;
begin
DTM:= DTMFromString('mWAAAAHicY2GAAHYgZmZAAC4o5gbi/PwSIMnEYLGtA4xToOphmBENgwAA13kE6w==');
Result:= FindDTM(DTM, X, Y, MIX1, MIY1, MIX2, MIY2);
if Result then
MMouse(X, Y, 0, 0);
FreeDTM(DTM);
end;

Function ZanarisCombinationDial: boolean;
var
B, J, Q, X, Y, T: Integer;
Acc: Extended;
begin
Result:= False;
B := BitmapFromString(16, 24, 'meJyd0mmWgjAMAGCONMjS0oUdrB' +
'QRQb3/USYdFDMMONW+/OCVr2lIcJwPl9qJgydtZO1yCMCNH2s/fo2' +
'Lr6h0WeUy5cl/8byqncnfBomlrz3RBHEbppZ+7wsdJEdi65UvdZh2' +
'NLP1UAxJTzS39IcwPpKsjwpL34RJR/OeWXti/JmV884gKhxXobDXJ' +
'O0i4wdu3p55iWP8OfLat+w+O3joWA47N6mwP0UF+MW92I/oitmvft' +
'27/m9Jk7/w/Ub/HJNf1jg/JN/y93qQn5q/6p9d/Z3/0Z/lkQkvNic' +
'PMXBzBLoKUxgfg1stUtPnETzlrQ7AamkGHv66npX9Bv4GX31ppQ==');

J := BitmapFromString(11, 17, 'meJzVkc0KhEAMg+etptPKqmNVcP' +
'ypyr7/q2xREBW6ng255SOHxLmLBihHiIclVOe083nyRYKih1I9hWp' +
'GdoYegSFEQV6oNgGMQrxkJjBinInXVwErNRag4+vgFuC2dxT4Uvsf' +
'uDXohnu663hQ3xFUs9D9o8ZT67MOPimo83P0A0osOGI=');

Q := BitmapFromString(14, 17, 'meJyt0ksSgyAMAFAuJRK05SfaUa' +
'FI6/2v0owsrGKnLmRYwSOBBEI2wzMVwUZuZ96RozEUYqCyo1VPRV8' +
'Kz7QH/QST5sjUFxO7sz27O1CBN+tKIVwp8ywYx4GeqlU6KgNrcpkC' +
'hq2MzP6SsV638IaHMQM3ufSlmmCPUcbKbqVEiTV8Q/vibQCT6pPkf' +
'Hvk6Q5jnpbNXP+XWE/E10rs5uWSLI86KcnSU/wnjuuRiw+byEA4');

MarkTime(T);
while ((Not Result) and (TimeFromMark(T) < 5000)) do
begin
if FindDeformedBitmapToleranceIn(B, X, Y, 68, 197, 113, 236, 2, 0, false, Acc) and
FindDeformedBitmapToleranceIn(J, X, Y, 235, 197, 287, 239, 2, 0, false, Acc) and
FindDeformedBitmapToleranceIn(Q, X, Y, 407, 196, 457, 240, 2, 0, false, Acc) then
Result:= True;
if (Result or (TimeFromMark(T) >= 5000)) then
break;
end;

FreeBitmap(B);
FreeBitmap(J);
FreeBitmap(Q);
end;

Function ZanarisDialTeleport: Boolean;
var
X, Y, Dist, T: Integer;
begin
if FindTextTPAEx(8256, 10, 180, 275, 344, 293, X, Y, 'Teleport', 'CharsNPC', Nothing) then
begin
MMouse(X, Y, 0, 0);
Result:= WaitUptextMulti(['Teleport', 'eleport', 'lepo'], 1200);
if Result then
ClickMouse2(MOUSE_LEFT);
end;

T:= 0;
MarkTime(T);
if Result then
while (FoundSymbol(2, X, Y, Dist) and (TimeFromMark(T) < 5000)) do
wait(1000);

wait(1000);
Result:= (FoundSymbol(1, X, Y, Dist) and (Not FoundSymbol(2, X, Y, Dist)));
end;

Function FightWaterfiends: Boolean;
var
CTS, X, Y, I: Integer;
TP: TPoint;
TPA: TpointArray;
ATPA: T2DPointArray;
//FiendBox: TBox;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.40, 2.35);

FindColorsTolerance(TPA, 5456159, MSX1, MSY1, MSX2, MSY2, 8);
if (Length(TPA) < 1) then
begin
Result:= False;
Exit;
end;

ATPA:= TPAToATPAEx(TPA, 50, 50);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
For I:= 0 To High(ATPA) do
begin
//FiendBox:= GetATPABounds(ATPA);
//MouseBox(FiendBox.X1, FiendBox.Y1, FiendBox.X2, FiendBox.Y2, MOUSE_MOVE);
MiddleTPAEx(ATPA[I], X, Y);
if IsFightAt(X, Y) then
DeleteValueInATPA(ATPA, I);
SortATPAFrom(ATPA, Point(MSCX, MSCY));
end;
MiddleTPAEx(ATPA[0], X, Y);
MMouse(X, Y, 0, 0);
TP:= Point(MSCX, MSCY);
Result:= isUptextMultiCustom(['Waterfiend', 'aterfien', 'terfie', 'aterfiend', 'erfiend']);
if Result then
ClickMouse2(MOUSE_LEFT);
Result:= InFight;
end;

Function CrossedTheLine: Boolean;
var
TP, GPS, SP: TPoint;
Dist: Integer;
begin
TP:= Point(50, 520);
GPS:= SPS_GetMyPos;
FoundSymbol(1, SP.X, SP.Y, Dist);
Result:= (((GPS.X >= TP.X) and (GPS.Y >= TP.Y)) or ((SP.X < GPS.X) or (SP.Y < GPS.Y) and (Dist > 5)));
//If East/SouthEast of symbol -- OR -- East/SouthEast of Point.
end;

Function ProtectFromDragons: Boolean;
var
GPS, TP: TPoint;
Dist: Integer;
begin
TP:= Point(10, 10);
if CrossedTheLine then
SPS_WalkToPos(TP);
Sleep(1000);
GPS:= SPS_GetMyPos;
Dist:= Distance(TP.X, TP.Y, GPS.X, GPS.Y);
Result:= ((Dist < 10) or (Not(CrossedTheLine)));
end;

Procedure MainLoop;
begin
{RingOfLifeCheck;
FromBank;
ToAndFroBank('transporter');
NearZFairyRing;
UseZFairyRing;
FairyRingText('ancient cavern');
writeln(GetUptext);
ClickMouse2(MOUSE_LEFT);
ZanarisCombinationDial;
ZanarisDialTeleport;
FightWaterfiends;
}
end;

begin
Smart_Server := 72;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetupSRL;
DeclarePlayers;
SPS_Setup(RUNESCAPE_SURFACE, ['0_0', '0_01']);
SPS_Continue := True;
cleardebug;
MainLoop;
end.

Sin

2012-02-01 16:31:33

Wow, so what exactly is wrong with it?
As in, what's missing?

Brandon

2012-02-01 16:59:33

^ Only thing it needs it being put together and the timers.. That's about it.. I'll do it later if no one else does.. atm I'm going to run Home's MA script to get that ring! :)

Hero

2012-02-01 22:20:59

Convert to SPS1.5 and then you will have the map support? All dungeons with a runescape world map drop down option are mapped.