PDA

View Full Version : FULL RELEASE Hill Giant Killer and Looter - Edgeville Dungeon [SPS-WALKING]



okokokok
06-17-2013, 10:04 AM
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.

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,XPGain ATTPH: Integer;
XPGainDEF,XPGainDEFPH,XPGainHP,XPGainHPPH,XPGainPR AY,XPGainPRAYPH,TimeDone: Integer;
CurrentXPHP, CurrentXPATT,CurrentXPSTR,CurrentXPDEF,CurrentXPPR AY: Integer;
OriginalXPHP, OriginalXPATT,OriginalXPSTR,OriginalXPDEF,Original XPPRAY,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+BAQnwDi80B8BY hvAPE1IL4AVQOSmwvE84B4ERAvBeIlUP5sIJ4OxNOgNIjfUZDN MKG8mGFBSz3DjNpKhkmVJUBRRobWvCyG7IgwhryocIb0kCCGso RYBn6gDLGYkQSMBABfpB2r');
end;

'salmon' : begin
FoodDTM := DTMFromString('mWAAAAHicY2FgYLgAxGegGMR+AcQvgfgZED 8Bsf1lGe57SzEstxBhWGouwsAFFEPGjGgYBACw9wuA');
end;

'lobster' : begin
FoodDTM := DTMFromString('mWAAAAHicY2FgYKhnYmCoBuI6IG4CYm1GBg YtIFYHYg0g3p8qzrAoTJBhS7wIw6MKKQYuoB5kzIiGQQAAqDEH ug==');
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+DsSngfgIEB8D4lmlJgxeLtYMjjamDDqaKgyGepo MznYWDKGO+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('mrAAAAHic42BgYIhgYmCIheJoIA4H4kAoBv EtGRkYzIHYGojtgdgByjYGYkMgZmBgZBAR1GeoqvoJpmEYJA7B +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/FmIF4FxJuAeC8QVwDlS4G4AYhbgbgeyi8C4tjoYJwYH2DEg6EA AFQ4D8k=');
CheckDTM[1] := DTMFromString('mwQAAAHic42RgYLjMxMBwDYivAvElIL4AxZ eg4jeAuA6orgGIm6EYxK5BwiB5JVcGBttgNgY3N0UwBgEQDRLX jmCAixECjERgOAAAS9IQpg==');
CheckDTM[2] := DTMFromString('m6wAAAHic42ZgYFjKxMCwHIhXIeElQLwAiO cA8WwgngcVywCqz2KA0ElAHAfEsUCcAMTJQJwGlQfhz9/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('m1gAAAHic42JgYNjExMCwC4h3APEKIF4OxK uBeA0TRG4HVF6fkYHBDIgtgdgEiI2AWBuINYFYB4oNgHj/9m0MN69cZjBQUGCQkZRkyIiLY4gPC2M4uncvw5aVKxmmdXQwxI aGMBALGInECAAAw+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/FOID4AxTugYnOBeDYQ7weq3Q7EW6D4EBCfBuILQHwRiC8B8UEg zkvnY9CTF2FIcDBmcNNTYWBhYmSQE+VgmNojARZ3tGZniA3nYm AFqiUGMxKJEQAAQwgUhg==');
CoinsDTM := DTMFromString('m1gAAAHic42JgYLjJyMBwAogvAvEdIL4PxG +A+BEQXwPiI0C8DYjfAdU+A+L7QHwHyn4FxN+BmAUozwDEP4FU agQ3Q1EKD5gGYUVZfjAfRi+dJMEQ6s3LwApUSwxmJBIjAAASYR eF');

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/ID0XAqEMcHajP0thUxdDXnM7TUZjE0VKYxRPvIM3AB5bBhRhwY AgC6owvc');
BankDTM[1] := DTMFromString('mlwAAAHicY2dgYNgHxFuAeD8QnwDiM0C8E4 gPAnE8EEcCcTgUJwJxGhBnAnF6tCVDfUUaQ0pCGEN6UjhDUog2 Q5SvFkO0jzwDF1AeF2bEg6EAABjcDzQ=');
BankDTM[2] := DTMFromString('mggAAAHicY2NgYFgPxKuBeCMQbwfi3UC8D4 iNgFgTiDWgtC4QGwNxfIAiQ7S3CENnUx5DcV4cQ2GCBkNSiDYD F1AOG2bEgSEAAPFCC6w=');
RopeDTM := DTMFromString('mWAAAAHicY2FgYFjByMCwGIjXAPF8IF4PFN sAxSC2d7Ejg3WmPhg7pVsycAHFkDEjGgYBABtiCRA=');

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+ISIC6F4kIgTg HiJCBOBeK1jAwMy4B4JRCvA+ItQLwdiDdC+SDx/du2MhzcsQNoIiNDbGgIw80rlxk42NgYtDU0GPZs3sRQkJbKwAq UJYQZicBwAACp7BYT');

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+ISIC6F4kIgTg HiJCBOBeK1jAwMy4B4JRCvA+ItQLwdiDdC+SDx/du2MhzcsQNoIiNDbGgIw80rlxk42NgYtDU0GPZs3sRQkJbKwAq UJYQZicBwAACp7BYT');

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('mbQAAAHicY2VgYJjLyMAwkxFCLwLieUC8gg GC1wDxKiBeCMSTC1UZ6pMUGJpTFcDsilg5Bi6gODpmxILBAABe 1Avq');
HutDoorDTM[1] := DTMFromString('mrAAAAHic42BgYFjAyMAwG4hnAPE0IJ4PxE uAeCkQLwTiFUA184B4KRCvBeINQLwaiBdCxfOC+BhyQ6QZ+vNV GdrSlRg6M5UYmlMVGKaVqDKkenMycAHV4MOMBDAMAABPkxJt') ;

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('mlwAAAHicY2dgYDBnZGBwBmIXKNaAYm0grg TKFzNA6CYgLgPiOiBuA+IMX1UGUSEhrJgLKI8LM+LBUAAA/PoHag==');
LadderDTM[1] := DTMFromString('mggAAAHicY2NgYDBjZGDQhmITILYHYlcgbm GA4BogroRiED8vVI5BVEgIjHMC5eFsLqAcNsyIA0MAAGsMBy4= ');
LadderDTM[2] := DTMFromString('mlwAAAHicY2dgYDBgZGAwAWI9INaCYkMgNg PiOqB8CxC3AXEDEFcAcQkQVwKxqJAQQ46/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

Roqua
06-17-2013, 10:20 AM
Testing now.

Shatterhand
06-17-2013, 11:01 AM
Nice project. :)

kllj
06-18-2013, 02:00 AM
Exception in Script: Unable to find file 'SRL-OSR/SRL.Simba' used from 'C:\Simba\Scripts\HoodzFighter_osr-srl17browser (3).simba'
Please help, was able to download the oldschool smart v8 and open it like yoho did in his video guide but i am not able to run scripts

okokokok
06-18-2013, 06:37 AM
Exception in Script: Unable to find file 'SRL-OSR/SRL.Simba' used from 'C:\Simba\Scripts\HoodzFighter_osr-srl17browser (3).simba'
Please help, was able to download the oldschool smart v8 and open it like yoho did in his video guide but i am not able to run scripts


You didn't install the old school runescape SRL yet.

http://villavu.com/forum/showthread.php?t=99992

You should find your answer here.

okokokok
06-18-2013, 08:21 AM
UPDATE INFORMATION: The next update will include a proggy report, fixed walking, better banking and some clean up of the code (removal of all the writeln, unneeded code etc.)

Please give me feedback, so I can fix that in the next update too!

connorh999
06-18-2013, 05:17 PM
First off, i'd like to say thank you for releasing this script! There is a TON of potential in this script and i'm glad you chose to share it with everyone.
I'm currently testing it out right now and so far it has been going steady for ~10 minutes. So far so good, but i've noticed a few problems..

One of the first things i'm noticing is that it clicks between your stats tab and inventory way too much, causing it to take a long time to attack a giant. Also, i set my HpToEat = 50, but i'm at around 30 hp now and it still has not eaten. Another thing to note is when i first started it up (at giants) with a full inventory, (key, tele runes, salmon)it immediately teleported because my inven was full, yet I have it set to fight without looting.. then there was an error walking to bank because it could not locate the surface file (your link "Attachment 21704" is broken). Overall, I see a lot of potential in this script, but right now it needs a bit of work, which is understandable as you just released it.

*just got a geenie random and the script crashed with this error.
Error: Exception: Mask is invalid. Width/Height: (9,6). WhiteHi/BlackHi: (-1,53) at line 778
The following DTMs were not freed: [SRL - Lamp bitmap, SRL - Book of Knowledge]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Minimap Mask bitmap]

okokokok
06-18-2013, 06:28 PM
First off, i'd like to say thank you for releasing this script! There is a TON of potential in this script and i'm glad you chose to share it with everyone.
I'm currently testing it out right now and so far it has been going steady for ~10 minutes. So far so good, but i've noticed a few problems..

One of the first things i'm noticing is that it clicks between your stats tab and inventory way too much, causing it to take a long time to attack a giant. Also, i set my HpToEat = 50, but i'm at around 30 hp now and it still has not eaten. Another thing to note is when i first started it up (at giants) with a full inventory, (key, tele runes, salmon)it immediately teleported because my inven was full, yet I have it set to fight without looting.. then there was an error walking to bank because it could not locate the surface file (your link "Attachment 21704" is broken). Overall, I see a lot of potential in this script, but right now it needs a bit of work, which is understandable as you just released it.

*just got a geenie random and the script crashed with this error.
Error: Exception: Mask is invalid. Width/Height: (9,6). WhiteHi/BlackHi: (-1,53) at line 778
The following DTMs were not freed: [SRL - Lamp bitmap, SRL - Book of Knowledge]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Minimap Mask bitmap]

I will re-add the zip file right now. As for the eating. I have encountered the eating problem as well. I have noticed that this is fixed by updating the DTM manually. Therefore I'm considering creating an eating procedure with colours or TPAs instead of DTMs, since they seem really unstable at the moment. The same goes for the door and the ladder.

Also I will take a closer look at the different options of looting. I will also try to make a form under the "Const" tab. Couldn't get it to work at first, but I think I can make it work now.

I'm not sure why the script breaks over the random, if anyone could enlighten me that would be awesome. If I know why it's breaking the script I'll fix it.

Also I want to thank you for testing and giving such a detailed feedback!

samerdl
06-18-2013, 08:15 PM
Nice script ;)

okokokok
06-18-2013, 10:26 PM
Guys new update is out! Check the update history!

ihatethispage
06-19-2013, 07:40 PM
It's an alright script, its kinda slow xp doe

okokokok
06-20-2013, 06:45 AM
It's an alright script, its kinda slow xp doe

I know the xp isn't the greatest. That's why I will improve the fighting procedure as soon as I have the time. At the moment I'm working on a private script and if there are no urgent errors I will probably update this next week.

gotilo12
07-25-2013, 12:51 PM
Yeah its good it just needs to move at a faster pace, at the moment it has like a minute of antiban between each fight. Good work though not complaining =)

sittingduck
07-31-2013, 05:12 AM
Hey man, When I start the script it doesn't give me the option to put my login information and player nickname. I'm new to scripts and didn't know if there is a part in the script i need to put my info. Thanks.

edit: I did a little detective work and found where to put my username/pass/nickname. I also figured out a quick fix to the slow xp that you get with checking your xp. I just deleted the Proggy report part of the script and all the sub sections of progry and it attacked the giants much quicker. Hope this helps.

Rasx
08-11-2013, 05:00 PM
Good script, just waits too long attacking another giant.

Fabzor
08-14-2013, 02:27 PM
love it!

BarackOBieber
08-20-2013, 09:33 PM
Script is running great, needs to attack the next giant faster though.

Mirko010
08-17-2014, 11:53 AM
when i try to run the script , it gives me this error: Exception in Script: Exception in Script: Unable to find file 'SPS/sps-osr.simba' used from 'C:\Users\Mirko\Downloads\GiantKillerV5_2_PublicRe lease.simba'
How can i fix this?

Qw4rt6yu9
08-17-2014, 01:04 PM
any chance of a browser only release?

catastrophe777
11-27-2014, 06:06 PM
I get this error, any help? I believe I need the sps-osr.simba script or something? or do i just need to save the script in a different location? thank you

Exception in Script: Unable to find file 'SPS/sps-osr.simba' used from 'C:\Simba\Scripts\hillGiant.simba'

Lucidity
11-27-2014, 07:40 PM
Some of this looks like bonsai's work...