okokokok
2013-06-17 06:04:48
Update information: You need to add the following SPS map (SafetyPointVar, see it down below) to the same directory as the other SPS maps! This map is included in the zip file from now on!
Hello guys,
At first I wanted to keep this script private, but I've changed my mind.
For now the script isn't fully released. Mainly due to walking issues.
So if you have any tips on walking. Go ahead! (No DDTMs walking please, doesn't work on 07 when you log in the next day).
Features of the script (*** = updated/newly added feature:
- *** Combat vs Giants;
- Anti Random measures;
- Looting;
- *** Teleport & Banking (Banking has been improved!);
- *** SPS Walking (Should be failproof now! Inform me if it isn't!);
- *** Food Support (Supports Tuna, Salmon, Lobster and Swordfish!);
- *** Different styles for looting (Fighting and Looting (withdraws only 5 food), Fighting with Looting and Burying (Withdraws 15 food) and Fighting without Looting (Full inv Food);
- *** Progress Report (Hopefully it works, couldn't test it yet!)
Future Features of the script:
- Maybe a bigger loot support than big bones.
- Maybe teleportation via tabs
- Improving the script in general
Instructions:
START AT GIANTS.
I'd recommend you are at least 60+ combat with 40+ defence.
There are different looting styles available. Since I'm for some reason not able to create a working form I will need to make some instructions:
To adjust the script, scroll down to the bottom untill you see the following procedure: Banking. It's almost at the bottom.
The different styles to choose from are: Fighting without looting, Fighting with looting and burying and Fight with looting.
Too choose between the style pick the according const.
This is the end of the instructions for the different styles.
SPS information:
Now since the script uses SPS to walk you will need to install/add a few things to Simba.
Start with adding SPS for OSR. To do this take a look at the following thread: http://villavu.com/forum/showthread.php?t=98324
After you have done this, you will need to add some custom SPS maps. You can find these in the zip file attached to this thread.
Download the zip file and upack it in the following directory: C:/SIMBA/Includes/SPS/img/runescape_surface07
This is the end of the SPS instructions.
Inventory:
Have a brass key and varrock teleport runes anywhere in your inventory.
PS: It's been a long time since I've scripted alot and this isn't too bad of a release for me at the moment. Some patience with the updates please.
************************************************************************************
Update History
- 19-6-2013 GiantKillerV5_2_PublicRelease
Improved the following features!
- SPSWalking (Added some failsafes and improved it in general!);
- Banking (Added some failsafes when opening the bank!);
- Removed the unneeded writeln etc.
The Script should run pretty smooth now!
- 19-6-2013 GiantKillerV5_1_PublicRelease:
Added some features and fixed some code.
- Proggy report added! (Not sure if it works. Too tired and too late to test it!)
- Food Support fixed and expanded! Now supports TUNA, SWORDFISH, LOBSTER AND SALMON!
- Fixed the fighting function with the right teleports etc.
- 18-6-2013 GiantKillerV5:
Alot of code has been rewritten.
Also added the following features:
- SPS Walking has been added.
- Food support has been added.
- Different looting styles have been added.
************************************************************************************
Forum version:
Enjoy OkOkOkOk
Donations for OSR are always welcome. These will be used to create more scripts
Hello guys,
At first I wanted to keep this script private, but I've changed my mind.
For now the script isn't fully released. Mainly due to walking issues.
So if you have any tips on walking. Go ahead! (No DDTMs walking please, doesn't work on 07 when you log in the next day).
Features of the script (*** = updated/newly added feature:
- *** Combat vs Giants;
- Anti Random measures;
- Looting;
- *** Teleport & Banking (Banking has been improved!);
- *** SPS Walking (Should be failproof now! Inform me if it isn't!);
- *** Food Support (Supports Tuna, Salmon, Lobster and Swordfish!);
- *** Different styles for looting (Fighting and Looting (withdraws only 5 food), Fighting with Looting and Burying (Withdraws 15 food) and Fighting without Looting (Full inv Food);
- *** Progress Report (Hopefully it works, couldn't test it yet!)
Future Features of the script:
- Maybe a bigger loot support than big bones.
- Maybe teleportation via tabs
- Improving the script in general
Instructions:
START AT GIANTS.
I'd recommend you are at least 60+ combat with 40+ defence.
There are different looting styles available. Since I'm for some reason not able to create a working form I will need to make some instructions:
To adjust the script, scroll down to the bottom untill you see the following procedure: Banking. It's almost at the bottom.
The different styles to choose from are: Fighting without looting, Fighting with looting and burying and Fight with looting.
Too choose between the style pick the according const.
Const
HpToEat = 46; // enter the amount of hitpoints where you want to eat at, example: HpToEat = 35;
HpToTeleport = 30; //Enter the amount of hitpoints to teleport
FoodType = 'salmon'; //tuna, salmon, lobster, swordfish
FightVari = 'NoLoot'; //Choose between NoLoot, LootAndBank, Bury
BankVari = 'BankNoLoot'; //Choose between BankNoLoot, BankLootAndBank, BankBury
CheckVari = 'CheckNoLoot'; //Choose between CheckNoLoot, CheckLootAndBank, CheckBury
// NoLoot is fighting without Looting, pick BankNoLoot and CheckNoLoot with these!
// LootAndBank is fighting with looting a full inventory and banking it! Pick BankLootAndBank and CheckLootAndBank with this const!
// Bury is fighting, picking up the bones and burying them! Pick BankBury and CheckBury with this const!
This is the end of the instructions for the different styles.
SPS information:
Now since the script uses SPS to walk you will need to install/add a few things to Simba.
Start with adding SPS for OSR. To do this take a look at the following thread: http://villavu.com/forum/showthread.php?t=98324
After you have done this, you will need to add some custom SPS maps. You can find these in the zip file attached to this thread.
Download the zip file and upack it in the following directory: C:/SIMBA/Includes/SPS/img/runescape_surface07
This is the end of the SPS instructions.
Inventory:
Have a brass key and varrock teleport runes anywhere in your inventory.
PS: It's been a long time since I've scripted alot and this isn't too bad of a release for me at the moment. Some patience with the updates please.
************************************************************************************
Update History
- 19-6-2013 GiantKillerV5_2_PublicRelease
Improved the following features!
- SPSWalking (Added some failsafes and improved it in general!);
- Banking (Added some failsafes when opening the bank!);
- Removed the unneeded writeln etc.
The Script should run pretty smooth now!
- 19-6-2013 GiantKillerV5_1_PublicRelease:
Added some features and fixed some code.
- Proggy report added! (Not sure if it works. Too tired and too late to test it!)
- Food Support fixed and expanded! Now supports TUNA, SWORDFISH, LOBSTER AND SALMON!
- Fixed the fighting function with the right teleports etc.
- 18-6-2013 GiantKillerV5:
Alot of code has been rewritten.
Also added the following features:
- SPS Walking has been added.
- Food support has been added.
- Different looting styles have been added.
************************************************************************************
Forum version:
program GiantKillerV5_2_Public_Release;
{$DEFINE SMART8}
{$I SRL-OSR/SRL.Simba}
{$i SRL-OSR\SRL\misc\debug.simba}
{$I SPS/sps-osr.simba}
Const
HpToEat = 46; // enter the amount of hitpoints where you want to eat at, example: HpToEat = 35;
HpToTeleport = 30; //Enter the amount of hitpoints to teleport
FoodType = 'salmon'; //tuna, salmon, lobster, swordfish
FightVari = 'NoLoot'; //Choose between NoLoot, LootAndBank, Bury
BankVari = 'BankNoLoot'; //Choose between BankNoLoot, BankLootAndBank, BankBury
CheckVari = 'CheckNoLoot'; //Choose between CheckNoLoot, CheckLootAndBank, CheckBury
Var
FoodDTM,x,y,XPGainSTR,XPGainSTRPH,XPGainATT,XPGainATTPH: Integer;
XPGainDEF,XPGainDEFPH,XPGainHP,XPGainHPPH,XPGainPRAY,XPGainPRAYPH,TimeDone: Integer;
CurrentXPHP, CurrentXPATT,CurrentXPSTR,CurrentXPDEF,CurrentXPPRAY: Integer;
OriginalXPHP, OriginalXPATT,OriginalXPSTR,OriginalXPDEF,OriginalXPPRAY,TimeDoneMin: Integer;
MyLoc, SafetyPoint: TPoint;
Path_ToBank, Path_ToHut1, Path_ToHut2,Path_ToGiants1, Path_ToGiants2: TPointArray;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= 0;
Players[0].Name := '';
Players[0].Pass := '';
Players[0].Nick := '';
Players[0].Pin := '';
Players[0].Active:= True;
Players[0].LampSkill := Skill_Prayer;
end;
////////////////////////////////////////////
/////////// AntiBan Procedure ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure AntiBan;
begin
FindNormalRandoms;
Case Random (1500) of
0..15: RandomRClick;
50..65: PickUpMouse;
90..105: RandomRClick;
115..120: RandomMovement;
160..180: ExamineInv;
230..250:
begin
HoverSkill('random', false);
sleepandmovemouse(276 + Random(100));
PickUpMouse;
ChooseOption('Cancel');
SetAngle(SRL_ANGLE_HIGH);
end;
300..320: BoredHuman;
350..390: PickUpMouse;
420..450: RandomRClick;
280..299: RandomMovement;
460..480: SleepAndMoveMouse(3000 + Random(500));
end;
end;
////////////////////////////////////////////
///////// Colouring Functions /////////
///////// Made by OkOkOkOk /////////
///////// Made with AutoColorAid /////////
////////////////////////////////////////////
function GiantColor1: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.05, 0.40);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 4414586, MSX1, MSY1, MSX2, MSY2, 24);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 1.76) and (X <= 34.03) and (Y >= 1.65) and (Y <= 34.69) and (Z >= 0.92) and (Z <= 28.21) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
function GiantColor2: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.52);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 5274014, MSX1, MSY1, MSX2, MSY2, 27);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 3.92) and (X <= 53.22) and (Y >= 3.81) and (Y <= 53.76) and (Z >= 1.88) and (Z <= 39.48) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
function BoneColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.13, 0.10);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 11974591, MSX1, MSY1, MSX2, MSY2, 19);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;
arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);
for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);
if (X >= 24.39) and (X <= 78.12) and (Y >= 24.53) and (Y <= 81.84) and (Z >= 25.26) and (Z <= 88.77) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;
////////////////////////////////////////////
/////////// FoodOption Procedure ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure SetDTM(const FoodType : String);
begin
Case FoodType of
'tuna' : begin
FoodDTM := DTMFromString('m6wAAAHic42ZgYDgDxIeB+BAQnwDi80B8BYhvAPE1IL4AVQOSmwvE84B4ERAvBeIlUP5sIJ4OxNOgNIjfUZDNMKG8mGFBSz3DjNpKhkmVJUBRRobWvCyG7IgwhryocIb0kCCGsoRYBn6gDLGYkQSMBABfpB2r');
end;
'salmon' : begin
FoodDTM := DTMFromString('mWAAAAHicY2FgYLgAxGegGMR+AcQvgfgZED8Bsf1lGe57SzEstxBhWGouwsAFFEPGjGgYBACw9wuA');
end;
'lobster' : begin
FoodDTM := DTMFromString('mWAAAAHicY2FgYKhnYmCoBuI6IG4CYm1GBgYtIFYHYg0g3p8qzrAoTJBhS7wIw6MKKQYuoB5kzIiGQQAAqDEHug==');
end;
'swordfish' : begin
FoodDTM := DTMFromString('mWAAAAHicY2FgYFjOxMCwGIhXA/EyIFZnhGBVIFYG4gVFKxg6EycwtMf3MSS7pTNwAfUgY0Y0DAIA/vEJJg==');
end;
end;
end;
procedure FreeFoodDTM;
begin
FreeDTM(FoodDTM);
end;
////////////////////////////////////////////
/////////// Proggy Report ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure ProgressReport;
begin
ClearDebug;
TimeDone := (GetTimeRunning/1000);
TimeDoneMin := (TimeDone/60);
CurrentXPHP := GetXP('hitpoints');
CurrentXPATT := GetXP('attack');
CurrentXPSTR := GetXP('strength');
CurrentXPDEF := GetXP('defence');
CurrentXPPRAY := GetXP('prayer');
OriginalXPHP := GetXP('hitpoints');
OriginalXPATT := GetXP('attack');
OriginalXPSTR := GetXP('strength');
OriginalXPDEF := GetXP('defence');
OriginalXPPRAY := GetXP('prayer');
XPGainHP := (CurrentXPHP - OriginalXPHP);
XPGainATT := (CurrentXPATT - OriginalXPATT);
XPGainSTR := (CurrentXPSTR - OriginalXPSTR);
XPGainDEF := (CurrentXPDEF - OriginalXPDEF);
XPGainPRAY := (CurrentXPPRAY - OriginalXPPRAY);
XPGainHPPH :=(3600*(XPGainHP))/((TimeDone));
XPGainATTPH :=(3600*(XPGainATT))/((TimeDone));
XPGainSTRPH :=(3600*(XPGainSTR))/((TimeDone));
XPGainDEFPH :=(3600*(XPGainDEF))/((TimeDone));
XPGainPRAYPH :=(3600*(XPGainPRAY))/((TimeDone));
begin
Writeln('**************************************************************************************************************************************************');
Writeln('******************** OkOkOkOk Hill Giant Killer - Edgeville Dungeon ******************************************************************************');
Writeln('**************************************************************************************************************************************************');
Writeln('--------------------------------------------------------------------------------------------------------------------------------------------------');
Writeln('-------------------- Proggy for the player: ' + Players[0].Nick + '-------------------------------------------------------------------------------');
Writeln('-------------------- Time running: ' + IntToStr(GetTimeRunning/60000) + 'Minutes -----------------------------------------------------------------');
Writeln('-------------------- We have gained: ' + IntToStr(XPGainHP) + ' Hitpoints xp / Thats ' + IntToStr(XPGainHPPH) + ' Hitpoints xp per hour ----------');
Writeln('-------------------- We have gained: ' + IntToStr(XPGainATT) + ' Attack xp / Thats ' + IntToStr(XPGainATTPH) + ' Attack xp per hour --------------');
Writeln('-------------------- We have gained: ' + IntToStr(XPGainSTR) + ' Strength xp / Thats ' + IntToStr(XPGainSTRPH) + ' Strength xp per hour ----------');
Writeln('-------------------- We have gained: ' + IntToStr(XPGainDEF) + ' Defence xp / Thats ' + IntToStr(XPGainDEFPH) + ' Defence xp per hour ------------');
Writeln('-------------------- We have gained: ' + IntToStr(XPGainPRAY) + ' HP xp / Thats ' + IntToStr(XPGainPRAYPH) + ' HP xp per hour --------------------');
Writeln('--------------------------------------------------------------------------------------------------------------------------------------------------');
Writeln('--------------------------------------------------------------------------------------------------------------------------------------------------');
Writeln('--------------------------------------------------------------------------------------------------------------------------------------------------');
end;
end;
////////////////////////////////////////////
/////////// Looting Procedure ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure Looting;
var x,y,BoneCount,t,Timeout: Integer;
begin
FindNormalRandoms;
SetAngle(SRL_ANGLE_HIGH);
BoneCount:= InvCount + 1
MarkTime(t);
Timeout := RandomRange(2000, 3000);
repeat
begin
FindNormalRandoms;
If FindObjCustom(x,y,['ake'],[BoneColor],5) then
begin
FindNormalRandoms;
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + Random(50));
FindNormalRandoms;
if ChooseOptionMulti(['bone','law']) then
begin
FindNormalRandoms;
Wait(1450 + Random(50));
end
else
Wait(1000 + random(200));
FindNormalRandoms;
Wait(1000);
FindNormalRandoms;
end;
end;
until (InvCount = BoneCount) or (TimeFromMark(t) > TimeOut)
end;
////////////////////////////////////////////
/////////// Fighting Functions ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
Function CombatCheck: Boolean;
var
PBox: TBox;
begin
PBox := IntToBox(245, 130, 285, 195);
Result := (AveragePixelShift(PBox, 250, 500) > 250);
end;
{*******************************************************************************
Function FindNPC
By: Nemesis3X
Description: Finds a NPC in a mnore effective way than FindObjCustom etc.
*******************************************************************************}
Function FightingGiants: Boolean;
Var
X,Y: Integer;
TPAA: T2DPointArray; // The Variables of the Functions
TPA: TPointArray;
CTS, I, Retry,Count: Integer;
Begin
repeat
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, GiantColor1, MSX1, MSY1, MSX2, MSY2, 3); // Enter the Color and Tolerance Here at the Right place.
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 25,15); //Put the Width and Heigh here
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 2 Then // Set How Much Points you need for your function to take Action
Begin
repeat
inc(Retry);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
if (IsUpTextMultiCustom(['ill', 'iant'])) then // Enter The name of Your NPC or Monster
Begin
Result := True;
GetMousePos(X, Y);
mouse(x,y,3,3,false);
wait(100 + random(200));
ChooseOption('ttack');
Count:=0;
wait(300 + random(300));
Break;
End;
until (Retry = 2);
Break;
end;
Break;
until (CombatCheck = True);
end;
{*******************************************************************************
Function FindNPC
By: Nemesis3X
Description: Finds a NPC in a mnore effective way than FindObjCustom etc.
*******************************************************************************}
Function FightingGiants2: Boolean;
Var
X,Y: Integer;
TPAA: T2DPointArray; // The Variables of the Functions
TPA: TPointArray;
CTS, I, Retry,Count: Integer;
Begin
repeat
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, GiantColor2, MSX1, MSY1, MSX2, MSY2, 3); // Enter the Color and Tolerance Here at the Right place.
ColorToleranceSpeed(CTS);
TPAA := TPAToATPAEx(TPA, 25,15); //Put the Width and Heigh here
SortATPASize(TPAA, True);
For I := 0 To High(TPAA) Do
If GetArraylength(TPAA[i]) > 2 Then // Set How Much Points you need for your function to take Action
Begin
repeat
inc(Retry);
MiddleTPAEx(TPAA[i], X, Y);
MMouse(X, Y, 3, 3);
if (IsUpTextMultiCustom(['ill', 'iant'])) then // Enter The name of Your NPC or Monster
Begin
Result := True;
GetMousePos(X, Y);
mouse(x,y,3,3,false);
wait(100 + random(200));
ChooseOption('ttack');
Count:=0;
wait(300 + random(300));
Break;
End;
until (Retry = 2);
Break;
end;
Break;
until (CombatCheck = True);
end;
////////////////////////////////////////////
/////////// Teleport Procedures ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
Procedure OpenSpellBook;
var x,y,SpellBookDTM: Integer;
begin
SpellBookDTM := DTMFromString('m1gAAAHic42JgYHjNxMDwA4h/AfE3Jgj/CRA/hOLnQPwZiC8D1Z4D4ttA/BCIHwPxAyC+DsSngfgIEB8D4lmlJgxeLtYMjjamDDqaKgyGepoMznYWDKGO+gxdNZkMdYWJDME+TgzEAkYiMQIAAMj1GpA=');
If FindDTM(SpellBookDTM,x,y,0,0,765,505) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,true);
Wait(150 + random(50));
end;
FreeDTM(SpellBookDTM);
end;
procedure TeleportToVarrockClick;
var x,y,TeleportDTM: Integer;
begin
TeleportDTM := DTMFromString('mrAAAAHic42BgYIhgYmCIheJoIA4H4kAoBvEtGRkYzIHYGojtgdgByjYGYkMgZmBgZBAR1GeoqvoJpmEYJA7B+AEjAQwDAMSfB/M=');
If FindDTM(TeleportDTM,x,y,MIX1, MIY1, MIX2, MIY2) then
begin
MMouse(x,y,0,0);
Wait(250 + Random(50));
Mouse(x,y,0,0,true);
Wait(350 + Random(50));
Wait(2000 + random(500));
FindNormalRandoms;
end;
FreeDTM(TeleportDTM);
end;
Procedure TeleportFailCheck;
var x,y,i: Integer;
CheckDTM: Array [0..2] of Integer;
begin
CheckDTM[0] := DTMFromString('mlwAAAHicY2dgYNjFxMBwCIj3A/FmIF4FxJuAeC8QVwDlS4G4AYhbgbgeyi8C4tjoYJwYH2DEg6EAAFQ4D8k=');
CheckDTM[1] := DTMFromString('mwQAAAHic42RgYLjMxMBwDYivAvElIL4AxZeg4jeAuA6orgGIm6EYxK5BwiB5JVcGBttgNgY3N0UwBgEQDRLXjmCAixECjERgOAAAS9IQpg==');
CheckDTM[2] := DTMFromString('m6wAAAHic42ZgYFjKxMCwHIhXIeElQLwAiOcA8WwgngcVywCqz2KA0ElAHAfEsUCcAMTJQJwGlQfhz9/eMMRGBxPEjIyMDKQARhIwEgAAy6sXww==');
For i := 0 to 2 do
If not(FindDTM(CheckDTM[i],x,y,607,81,755,193)) then
begin
OpenSpellBook;
TeleportToVarrockClick;
end
else
begin
Break;
end;
FreeDTM(CheckDTM[0]);
FreeDTM(CheckDTM[1]);
FreeDTM(CheckDTM[2]);
end;
Procedure TeleportToVarrock;
begin
OpenSpellBook;
TeleportToVarrockClick;
end;
Procedure EmergencyTeleport;
begin
If GetSkillInfo('hitpoints', true) < HpToTeleport then
begin
OpenSpellBook;
TeleportToVarrockClick;
end;
end;
////////////////////////////////////////////////////////
/////////// Health Procedures & Functions ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////////////////
procedure OutOfFoodDetect;
var x,y: Integer;
begin
SetDTM(FoodType);
Gametab(Tab_Inv);
If FindDTM(FoodDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
Writeln('Food left');
end
else
begin
EmergencyTeleport;
end;
end;
procedure HealthRestore;
var x,y: Integer;
begin
SetDTM(FoodType);
If GetSkillInfo('hitpoints', true) < HpToEat then
Gametab(Tab_Inv);
If FindDTM(FoodDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,true);
Wait(350 + random(50));
end
else
begin
OutOfFoodDetect;
end;
end;
////////////////////////////////////////////////////////
/////////// Bury Procedures ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////////////////
Procedure BuryBones;
var x,y,BoneDTM: Integer;
begin
BoneDTM := DTMFromString('m1gAAAHic42JgYNjExMCwC4h3APEKIF4OxKuBeA0TRG4HVF6fkYHBDIgtgdgEiI2AWBuINYFYB4oNgHj/9m0MN69cZjBQUGCQkZRkyIiLY4gPC2M4uncvw5aVKxmmdXQwxIaGMBALGInECAAAw+kXiw==');
If FindDTM(BoneDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
MMouse(x,y,0,0);
Wait(100 + random(50));
Mouse(x,y,0,0,true);
Wait(300 + random(50));
Wait(1800 + random(50));
end
else
begin
Writeln('Nothing to bury');
end;
FreeDTM(BoneDTM);
end;
////////////////////////////////////////////////////////
/////////// Banking Procedures & Functions ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////////////////
Function PinCheck: Boolean;
var x,y,ChestDTM, CoinsDTM: Integer;
begin
ChestDTM := DTMFromString('m1gAAAHic42JgYNjMyMAwA4hXA/FOID4AxTugYnOBeDYQ7weq3Q7EW6D4EBCfBuILQHwRiC8B8UEgzkvnY9CTF2FIcDBmcNNTYWBhYmSQE+VgmNojARZ3tGZniA3nYmAFqiUGMxKJEQAAQwgUhg==');
CoinsDTM := DTMFromString('m1gAAAHic42JgYLjJyMBwAogvAvEdIL4PxG+A+BEQXwPiI0C8DYjfAdU+A+L7QHwHyn4FxN+BmAUozwDEP4FUagQ3Q1EKD5gGYUVZfjAfRi+dJMEQ6s3LwApUSwxmJBIjAAASYReF');
If FindDTM(ChestDTM,x,y,MSX1,MSY1,MSX2,MSY2) or
FindDTM(CoinsDTM,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
Result := True;
end;
end;
Procedure WithdrawFoodWithLooting;
var x,y: Integer;
begin
SetDTM(FoodType);
If FindDTM(FoodDTM,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('raw 5') then
begin
CloseBank;
end;
end;
end;
Procedure WithdrawFoodWithBury;
var x,y: Integer;
begin
SetDTM(FoodType);
If FindDTM(FoodDTM,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('raw 10') then
begin
Wait(500 + random(50));
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('raw 5') then
begin
Wait(300 + random(50));
CloseBank;
end;
end;
end;
end;
Procedure WithdrawFoodNoLootingNoBury;
var x,y: Integer;
begin
SetDTM(FoodType);
If FindDTM(FoodDTM,x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('raw All') then
begin
CloseBank;
end;
end;
end;
procedure OpenBankBooth;
var x,y,r,RopeDTM: Integer;
BankDTM: Array [0..2] of Integer;
begin
If FindSymbol(x,y,'bank') then
begin
MakeCompass('E');
BankDTM[0] := DTMFromString('mggAAAHicY2NgYGBnZGD4DaT/AzEbkM3LCBGLB/ID0XAqEMcHajP0thUxdDXnM7TUZjE0VKYxRPvIM3AB5bBhRhwYAgC6owvc');
BankDTM[1] := DTMFromString('mlwAAAHicY2dgYNgHxFuAeD8QnwDiM0C8E4gPAnE8EEcCcTgUJwJxGhBnAnF6tCVDfUUaQ0pCGEN6UjhDUog2Q5SvFkO0jzwDF1AeF2bEg6EAABjcDzQ=');
BankDTM[2] := DTMFromString('mggAAAHicY2NgYFgPxKuBeCMQbwfi3UC8D4iNgFgTiDWgtC4QGwNxfIAiQ7S3CENnUx5DcV4cQ2GCBkNSiDYDF1AOG2bEgSEAAPFCC6w=');
RopeDTM := DTMFromString('mWAAAAHicY2FgYFjByMCwGIjXAPF8IF4PFNsAxSC2d7Ejg3WmPhg7pVsycAHFkDEjGgYBABtiCRA=');
For r := 0 to 2 do
If FindDTM(BankDTM[r],x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('ank') then
Wait(5250 + random(50));
end
else
If not(FindDTM(BankDTM[r],x,y,MSX1,MSY1,MSX2,MSY2)) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,true);
Wait(2000 + random(200));
If FindDTM(BankDTM[r],x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('ank') then
Wait(2250 + random(50));
end;
end;
FreeDTM(BankDTM[0]);
FreeDTM(BankDTM[1]);
FreeDTM(BankDTM[2]);
FreeDTM(RopeDTM);
end;
end;
Procedure OpenBankCheck;
begin
Wait(3000);
If not(BankScreen) then
begin
OpenBankBooth;
Wait(150 + random (50));
end;
end;
procedure DepositBones;
var x,y,BoneDTM: Integer;
begin
BoneDTM := DTMFromString('mwQAAAHic42RgYMhlYmBIB+ISIC6F4kIgTgHiJCBOBeK1jAwMy4B4JRCvA+ItQLwdiDdC+SDx/du2MhzcsQNoIiNDbGgIw80rlxk42NgYtDU0GPZs3sRQkJbKwAqUJYQZicBwAACp7BYT');
If (PinCheck = True) then
InPin(Players[0].Pin);
If FindDTM(BoneDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(450 + random(50));
If ChooseOption('re All') then
Wait(150 + random (50));
CloseBank;
If InvFull then
begin
OpenBankBooth;
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(450 + random(50));
If ChooseOption('re All') then
Wait(150 + random (50));
CloseBank;
end;
end;
FreeDTM(BoneDTM);
end;
procedure DepositBonesWithFood;
var x,y,BoneDTM: Integer;
begin
BoneDTM := DTMFromString('mwQAAAHic42RgYMhlYmBIB+ISIC6F4kIgTgHiJCBOBeK1jAwMy4B4JRCvA+ItQLwdiDdC+SDx/du2MhzcsQNoIiNDbGgIw80rlxk42NgYtDU0GPZs3sRQkJbKwAqUJYQZicBwAACp7BYT');
If (PinCheck = True) then
InPin(Players[0].Pin);
If FindDTM(BoneDTM,x,y,MIX1,MIY1,MIX2,MIY2) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(450 + random(50));
If ChooseOption('re All') then
Wait(150 + random (50));
If InvFull then
begin
OpenBankBooth;
MMouse(x,y,0,0);
Mouse(x,y,0,0,false);
Wait(450 + random(50));
If ChooseOption('re All') then
Wait(150 + random (50));
end;
end;
FreeDTM(BoneDTM);
end;
Procedure InsideBankCheckWithFood;
begin
If InvFull then
begin
DepositBonesWithFood;
Wait(150 + random(50));
end;
end;
Procedure InsideBankCheck;
begin
If InvFull then
begin
DepositBones;
Wait(150 + random(50));
end;
end;
Procedure InsideBankCheckWithoutFood;
begin
If InvEmpty then
begin
WithdrawFoodNoLootingNoBury;
Wait(150 + random(50));
end;
end;
////////////////////////////////////////////
/////////// Random Procedure ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure GetBackToMonsters;
var x,y: Integer;
begin
begin
If FindColorSpiralTolerance(x,y,195836,MMX1,MMY1,MMX2,MMY2,5) then
begin
MMouse(x,y,0,0);
Mouse(x,y,0,0,true);
Wait(4000 + random(100));
end;
end;
end;
///////////////////////////////////////////////////////
/////////// Combat Procedures & Functions ///////////
/////////// Made by OkOkOkOk ///////////
///////////////////////////////////////////////////////
procedure FightWithoutLootingOrBury;
Var Count: Integer;
begin
FindNormalRandoms;
SetAngle(SRL_ANGLE_HIGH);
AntiBan;
FindNormalRandoms;
repeat
begin
If GetSkillInfo('hitpoints', true) < HpToEat then
HealthRestore;
FindNormalRandoms;
repeat
Inc(Count);
If (FightingGiants) or
(FightingGiants2) then
FindNormalRandoms;
If (CombatCheck = True) then
begin
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
If GetSkillInfo('hitpoints', true) < HpToEat then
HealthRestore;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Break;
end;
If (Count > 3) then
begin
FindNormalRandoms;
GetBackToMonsters;
Count:=0;
Wait(2000 + random(100));
end;
FindNormalRandoms;
until (CombatCheck = False);
end;
ProgressReport;
until (InvCount < 7);
end;
procedure FightOnlyLooting;
Var Count: Integer;
begin
FindNormalRandoms;
SetAngle(SRL_ANGLE_HIGH);
AntiBan;
FindNormalRandoms;
repeat
begin
If GetSkillInfo('hitpoints', true) < HpToEat then
HealthRestore;
FindNormalRandoms;
repeat
Inc(Count);
If (FightingGiants) or
(FightingGiants2) then
FindNormalRandoms;
If (CombatCheck = True) then
begin
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
If GetSkillInfo('hitpoints', true) < HpToEat then
HealthRestore;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Break;
Count:=0;
end;
If (Count > 3) then
begin
FindNormalRandoms;
GetBackToMonsters;
Count:=0;
Wait(2000 + random(100));
end;
FindNormalRandoms;
until (CombatCheck = False);
Looting;
end;
ProgressReport;
until (InvFull);
end;
procedure FightWithBury;
Var Count, BoneCount,x,y: Integer;
begin
FindNormalRandoms;
SetAngle(SRL_ANGLE_HIGH);
AntiBan;
FindNormalRandoms;
BoneCount := InvCount + 1;
repeat
begin
If GetSkillInfo('hitpoints', true) < HpToEat then
HealthRestore;
FindNormalRandoms;
repeat
Inc(Count);
If (FightingGiants) or
(FightingGiants2) then
FindNormalRandoms;
If (CombatCheck = True) then
begin
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
If GetSkillInfo('hitpoints', true) < HpToEat then
HealthRestore;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Wait(300 + Random(400));
FindNormalRandoms;
Break;
Count:=0;
end;
If (Count > 3) then
begin
FindNormalRandoms;
GetBackToMonsters;
Count:=0;
Wait(2000 + random(100));
end;
FindNormalRandoms;
until (CombatCheck = False);
Looting;
BuryBones;
end;
ProgressReport;
until (InvCount < 7);
end;
////////////////////////////////////////////
/////////// SPS&stuff ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
{*******************************************************************************
Function GenerateWallDTM(WallType, WallLength: Integer): Integer;
By: Flight
Description: Creates a DTM of a perfectly straight wall.
-WallType : 1 for vertical, 2 for horizontal
-WallLength: Length of the DTM to be generated
*******************************************************************************}
function GenerateWallDTM(WallType, WallLength: Integer): Integer;
var
i: Integer;
TempTDTM: TDTM;
mPnt: TDTMPointDef;
sPnts: array of TDTMPointDef;
begin
SetArrayLength(sPnts, (WallLength-1));
mPnt.x := 0;
mPnt.y := 0;
mPnt.AreaSize := 0;
mPnt.AreaShape := 0;
mPnt.Color := 16119287;
mPnt.Tolerance := 40;
for i:=0 to High(sPnts) do
begin
case WallType of
1:
begin
sPnts[i].x := 0;
sPnts[i].y := i+1;
end;
2:
begin
sPnts[i].x := i+1;
sPnts[i].y := 0;
end;
end;
sPnts[i].AreaSize := 0;
sPnts[i].AreaShape := 0;
sPnts[i].Color := 16119287;
sPnts[i].Tolerance := 40;
end;
TempTDTM.MainPoint := mPnt;
TempTDTM.SubPoints := sPnts;
Result := AddDTM(TempTDTM);
end;
{*******************************************************************************
Function GetLongestWallLength(WallType: Integer): Integer;
By: Flight
Description: Determines the longest wall on your MM at any compass angle.
-WallType: 1 for vertical walls, 2 for horizontal walls
*******************************************************************************}
function GetLongestWallLength(WallType: Integer): Integer;
var
B: TBox;
TPA: TPointArray;
ATPA: T2DPointArray;
begin
ColorToleranceSpeed(1);
FindColorsSpiralTolerance(MMCX, MMCY, TPA, 16119287, MMX1, MMY1, MMX2, MMY2, 40);
if (Length(TPA)<1) then
Exit;
RAaSTPA(TPA, 1);
if (WallType = 1) then
SplitTPAExWrap(TPA, 2, 3, ATPA)
else
SplitTPAExWrap(TPA, 3, 2, ATPA);
SortATPASize(ATPA, True);
B := GetTPABounds(ATPA[0]);
if (WallType = 1) then
Result := (B.Y2-B.Y1)
else
Result := (B.X2-B.X1);
end;
{*******************************************************************************
Function ForceMapNorth: Boolean;
By: Flight
Description: Using auto-generated wall DTMs, this function will attempt to
rotate the compass to near-perfect north. Should it fail it will revert
back to default north.
*******************************************************************************}
Function ForceMapNorth: Boolean;
var
Left: Boolean;
StartAngle: Extended;
X,Y,DTM_VertWall,
DTM_HorWall,T,F,L1,L2: Integer;
label
Start,FuncEnd;
begin
Result := False;
L1 := GetLongestWallLength(1);
L2 := GetLongestWallLength(2);
if (L1 > 50) then
L1 := 50;
if (L2 > 50) then
L2 := 50;
DTM_VertWall := GenerateWallDTM(1, Round(L1*0.85)); //Create a DTM 85% of the length of the longest vertical wall
DTM_HorWall := GenerateWallDTM(2, Round(L2*0.85)); //Create a DTM 85% of the length of the longest horizontal wall
if (FindDTM(DTM_VertWall, X, Y, MMx1, MMy1, MMx2, MMy2) or
FindDTM(DTM_HorWall, X, Y, MMx1, MMy1, MMx2, MMy2)) then
begin
Result := True;
GoTo FuncEnd;
end;
StartAngle := (rs_GetCompassAngleDegrees);
Left := (Round((360 - StartAngle)) mod 360 <= Round((StartAngle + 360)) mod 360);
Start:
if (F > 0) then
MakeCompass('N');
MarkTime(T);
Repeat
TypeByte((Ord(not Left) * 2) + 37); //No holding down, actually press the arrow key
if (FindDTM(DTM_VertWall, X, Y, MMx1, MMy1, MMx2, MMy2) or
FindDTM(DTM_HorWall, X, Y, MMx1, MMy1, MMx2, MMy2)) then
break;
Until(TimeFromMark(T) >= 1000)
FuncEnd:
if ((not FindDTM(DTM_VertWall, X, Y, MMx1, MMy1, MMx2, MMy2)) and
(not FindDTM(DTM_HorWall, X, Y, MMx1, MMy1, MMx2, MMy2))) then
begin
Inc(F);
StartAngle := (rs_GetCompassAngleDegrees);
Left := (Round((360 - StartAngle)) mod 360 <= Round((StartAngle + 360)) mod 360);
if (F < 2) then
GoTo Start;
end else if ((X > 1) and (Y > 1)) then
Result := True;
if not Result then
MakeCompass('N');
FreeDTM(DTM_VertWall);
FreeDTM(DTM_HorWall);
end;
procedure SPSToBank;
begin
SPS_Tolerance := 450.0
SPS_MatchesPercent := 0.1
ForceMapNorth;
SPS_Setup(runescape_surface, ['vwbankpath']);
Path_ToBank := [Point(286, 250), Point(278, 251), Point(271, 246), Point(264, 240), Point(257, 235), Point(248, 232), Point(238, 231), Point(230, 231), Point(219, 231), Point(210, 231), Point(200, 231), Point(188, 230), Point(182, 225)]
SPS_WalkPath(Path_ToBank);
SymbolAccuracy := 0.5;
If FindSymbol(x,y,'bank') then
begin
Mouse(x,y,0,0,true);
FFlag(0);
Wait(1000 + random(100));
end;
SymbolAccuracy := 0.8;
end;
procedure SPSToHut1;
begin
SPS_Tolerance := 450.0
SPS_MatchesPercent := 0.3
ForceMapNorth;
SymbolAccuracy := 0.5;
If FindSymbol(x,y,'anvil') then
begin
Mouse(x,y,0,0,true);
FFlag(0);
Wait(1000 + random(100));
end;
SymbolAccuracy := 0.8;
SPS_Setup(runescape_surface, ['HutPathOne']);
Path_ToHut1 := [Point(275, 234), Point(267, 222), Point(247, 221), Point(227, 224), Point(212, 225), Point(199, 224)];
SPS_WalkPath(Path_ToHut1);
end;
procedure SPSSafetyPoint;
var SafetyPoint: TPoint;
begin
SPS_Tolerance := 350.0
SPS_MatchesPercent := 0.5
ForceMapNorth;
SPS_Setup(runescape_surface, ['SafetyPointVar']);
SafetyPoint := (Point(232, 252));
SPS_WalkToPos(SafetyPoint);
end;
procedure SPSToHut2;
begin
SPS_Tolerance := 450.0
SPS_MatchesPercent := 0.5
ForceMapNorth;
SPS_Setup(runescape_surface, ['HutPathTwo']);
Path_ToHut2 := [Point(381, 255), Point(364, 258), Point(349, 267), Point(339, 285), Point(323, 296), Point(303, 305), Point(285, 299), Point(283, 282), Point(272, 269), Point(267, 252), Point(260, 236), Point(269, 223), Point(246, 209), Point(229, 203), Point(212, 200), Point(195, 195), Point(179, 190), Point(166, 186), Point(150, 174)];
SPS_WalkPath(Path_ToHut2);
end;
procedure SPSToGiants1;
begin
SPS_Tolerance := 450.0
SPS_MatchesPercent := 0.3
ForceMapNorth;
SPS_Setup(runescape_surface, ['PathToGiantsOne']);
Path_ToGiants1 := [Point(240, 233), Point(237, 242), Point(235, 253), Point(235, 264), Point(235, 275), Point(234, 283), Point(231, 290), Point(230, 298), Point(229, 309)]
SPS_WalkPath(Path_ToGiants1);
end;
procedure SPSToGiants2;
begin
SPS_Tolerance := 450.0
SPS_MatchesPercent := 0.3
SPS_Setup(runescape_surface, ['PathToGiantsTwo']);
Path_ToGiants2 := [Point(243, 234), Point(243, 243), Point(241, 254), Point(234, 265), Point(234, 272), Point(229, 284)]
SPS_WalkPath(Path_ToGiants2);
end;
////////////////////////////////////////////////////////
/////////// Walking Procedures & Functions ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////////////////
Procedure OpenHutDoor;
var x,y,t: Integer;
HutDoorDTM: Array [0..1] of Integer;
begin
HutDoorDTM[0] := DTMFromString('mbQAAAHicY2VgYJjLyMAwkxFCLwLieUC8ggGC1wDxKiBeCMSTC1UZ6pMUGJpTFcDsilg5Bi6gODpmxILBAABe1Avq');
HutDoorDTM[1] := DTMFromString('mrAAAAHic42BgYFjAyMAwG4hnAPE0IJ4PxEuAeCkQLwTiFUA184B4KRCvBeINQLwaiBdCxfOC+BhyQ6QZ+vNVGdrSlRg6M5UYmlMVGKaVqDKkenMycAHV4MOMBDAMAABPkxJt');
For t := 0 to 1 do
If FindDTM(HutDoorDTM[t],x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Wait(200 + random(50));
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('Open') then
Wait(2200 + random(50));
end
else
If not(FindDTM(HutDoorDTM[t],x,y,MSX1,MSY1,MSX2,MSY2)) then
begin
SPSSafetyPoint;
Wait(3000 + Random(100));
If FindDTM(HutDoorDTM[t],x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Wait(200 + random(50));
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('Open') then
Wait(2200 + random(50));
end
else
If not(FindDTM(HutDoorDTM[t],x,y,MSX1,MSY1,MSX2,MSY2)) then
begin
SPSSafetyPoint;
Wait(3000 + Random(100));
If FindDTM(HutDoorDTM[t],x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Wait(200 + random(50));
Mouse(x,y,0,0,false);
Wait(150 + random(50));
If ChooseOption('Open') then
Wait(2200 + random(50));
end;
end;
end;
FreeDTM(HutDoorDTM[0]);
FreeDTM(HutDoorDTM[1]);
end;
Procedure GoDownLadder;
var x,y,g: Integer;
LadderDTM: Array [0..2] of Integer;
begin
LadderDTM[0] := DTMFromString('mlwAAAHicY2dgYDBnZGBwBmIXKNaAYm0grgTKFzNA6CYgLgPiOiBuA+IMX1UGUSEhrJgLKI8LM+LBUAAA/PoHag==');
LadderDTM[1] := DTMFromString('mggAAAHicY2NgYDBjZGDQhmITILYHYlcgbmGA4BogroRiED8vVI5BVEgIjHMC5eFsLqAcNsyIA0MAAGsMBy4=');
LadderDTM[2] := DTMFromString('mlwAAAHicY2dgYDBgZGAwAWI9INaCYkMgNgPiOqB8CxC3AXEDEFcAcQkQVwKxqJAQQ46/OphGxiAxLqA8LsyIB0MBABSjB/c=');
For g := 0 to 2 do
If FindDTM(LadderDTM[g],x,y,MSX1,MSY1,MSX2,MSY2) then
begin
MMouse(x,y,0,0);
Wait(150 + random(50));
Mouse(x,y,0,0,false);
Wait(250 + random(50));
If ChooseOption('mb-do') then
Wait(2200 + random(50));
end;
end;
////////////////////////////////////////////
/////////// Option Procedures ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure FightVar;
begin
Case FightVari of
'NoLoot' : begin
FightWithoutLootingOrBury;
end;
'LootAndBank' : begin
FightOnlyLooting;
end;
'Bury' : begin
FightWithBury;
end;
end;
end;
procedure WithdrawBank;
begin
Case BankVari of
'BankNoLoot' : begin
WithdrawFoodNoLootingNoBury;
end;
'BankLootAndBank' : begin
WithdrawFoodWithLooting;
end;
'BankBury' : begin
WithdrawFoodWithBury;
end;
end;
end;
procedure BankCheck;
begin
Case CheckVari of
'CheckNoLoot' : begin
InsideBankCheckWithFood;
end;
'CheckLootAndBank' : begin
InsideBankCheckWithoutFood;
end;
'CheckBury' : begin
InsideBankCheck;
end;
end;
end;
////////////////////////////////////////////
/////////// Final Procedures ///////////
/////////// Made by OkOkOkOk ///////////
////////////////////////////////////////////
procedure Banking;
begin
OpenBankBooth;
OpenBankCheck;
BankCheck;
WithdrawBank;
HealthRestore;
end;
Procedure WalkingAndBanking;
begin
SPSToBank;
Banking;
SPSToHut1;
SPSToHut2;
OpenHutDoor;
GoDownLadder;
SPSToGiants1;
SPSToGiants2;
end;
procedure OneRun;
begin
repeat
AntiBan;
FindNormalRandoms;
FightVar;
TeleportToVarrock;
WalkingAndBanking;
until (not(LoggedIn));
end;
begin
DeclarePlayers;
SetupSRL;
LoginPlayer;
SPS_Setup(RUNESCAPE_SURFACE, ['6_8','5_8']);
SPS_AnyAngle := False;
MyLoc := sps_getMyPos;
writeln('SPS returns ' + inttostr(myloc.x) + ',' + inttostr(myloc.y));
SRL_CombatRandoms := False;
ClearDebug;
begin
repeat
OneRun;
until(false);
end;
end.Enjoy OkOkOkOk
Donations for OSR are always welcome. These will be used to create more scripts