Twinki
2015-01-11 22:02:35
I'm considering applying for SRL Member, but i'm not sure if my scripts are up to standards.
I'll post my scripts in order of when I made them with some extra info to the side. These scripts are all made for RSPS's.
First I made a Ardy Knight Pickpocket script, it was meant for easy money. It does have ACA, but keep in mind this was the first script I ever started working with.
At the time I was reading Mayor's guides on RSPS scripting. The script really wasn't viable for release since I was using the direct client, which would sometimes mess up with the client dimensions. It required a lot of changing and such, but it worked and it ran for hours on end. When I was scripting this, I was also developing an Include to make things easier. Some of the include was copied and pasted from SRL that I ended up editting and changing some things around to make it work for the RSPS I was scripting for.
So here's RLTools.
At the time I barely understood how Includes worked and were loaded. I did get it to work, but I don't even know if I did it correctly. I looked at other includes like SRL or OSR and just looked at how they were organized and laid out. I tried copying the organization and such, and it worked, was never sure if that's actually how it's meant to be done.
So my final script was a bit more complicated. It doesn't use ACA, and has some DTM walking. I wanted to use DTM's to the fullest. The RSPS had some commands I could easily abuse, which was mobile banking. All I had to do was move out of combat, and use ::bank, which would open up the bank interface where I could easily take out any food and pots.
I was actually pretty proud of this script. It was a script I could run for quite awhile, until I just ran out of supplies. There was issues where I had to adjust my color variables to make it work, but again it worked. I guess I was especially proud of this script mainly because I looked around me and what I could abuse. I ended up using the Icon on the map to get back into the spot that aggroed all the Hell Hounds.
I used to have several more scripts that were never completed, that ended up just being scripts I had made to mess around and see what I could get working. I had actually finally got SMART to load up RSPS's correctly, and I messed around with SPS, but I could never get it to work. I lost most of my scripts due to drive failure, but I was able to find the threads I made here when asking for help where I posted my finished script.
So SRL Members, what do you think?
I'll post my scripts in order of when I made them with some extra info to the side. These scripts are all made for RSPS's.
First I made a Ardy Knight Pickpocket script, it was meant for easy money. It does have ACA, but keep in mind this was the first script I ever started working with.
Program KnighPP;
{$I SRL/SRL.Simba}
{$I RLInclude.Simba}
Const
MaxHP = 990; //Your Total HP
StartEating = 24; // This will start eating food at 24% of your total HP
StopEating = 90; // This will sttop eating food at 90% of your total HP
// Figuring out HP Percentages \\
{
The HP Orb by the Minimap will start blinking red when you get 20-25%
below your Health. This should be the same at all levels.
HP Orb turns yellow at around 50-60% below health
HP Orb turns green around 80-90% below health
If you wish to figure out what percentage to use on your own,
visit [url]http://www.csgnetwork.com/csgpercent.html[/url] and use the
Calculate The Value Of A Percentage Of A Value Section.
}
Var
PickPockets, RockTail:Integer;
// ACA for Knight \\
function KnightColor: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.19, 0.78);
FindColorsSpiralTolerance(MSCX, MSCY, arP, 11542895, MSX1, MSY1, MSX2, MSY2, 21);
if (Length(arP) = 0) then
begin
Writeln('Failed to find Knight, 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 >= 2.75) and (X <= 26.73) and (Y >= 1.72) and (Y <= 15.51) and (Z >= 7.95) and (Z <= 84.02) 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('Failed to find the Knight');
end;
// Find and PickPocket Knight \\
procedure FindKnight;
var
X, Y:Integer;
begin
if FindColorTolerance(X, Y, KnightColor, 5, 3, 511, 329, 10) then
begin
WriteLn('Found Knight');
MMouse(x, y, 0, 0);
ClickMouse2(False);
wait(2000);
ChooseOption('Pickpocket Knight');
wait(250);
WriteLn('Picked Knight');
inc(PickPockets);
end;
end;
// Eat Rockatils when low HP \\
procedure EatFood;
var
X, Y, HPLevel, StartEatHP, StopEatHP:Integer;
ColourString:String;
begin
HPLevel := RL_GetMMLevels('hp', ColourString);
StartEatHP := Round(MaxHP / 100 * StartEating);
StopEatHP := Round(MaxHP / 100 * StopEating);
if (HPLevel <= StartEatHP) then // if the value we get is lower than 20% start eating.
begin
Repeat
if FindDTM(RockTail, X, Y, MIX1, MIY1,MIX2, MIY2) then
begin
MMouse(x, y, 0, 0);
ClickMouse2(True);
wait(1500);
WriteLn('Eating Rocktail...');
HPLevel := RL_GetMMLevels('hp', ColourString); //Call this again, to get new value
end else Exit; //Exits the procedure if we CANNOT find food , failsafe.
Until(HPLevel >= StopEatHP) // until we get the value of 80%
end;
end;
// Progress Report \\
procedure ProgressReport;
begin
wait(500);
ClearDebug;
WriteLn('***************PROGRESS REPORT*************************************');
WriteLn('* Script has run for : '+ TimeRunning +'');
WriteLn('* You have picpocketed '+ IntToStr(PickPockets) +' times!');
WriteLn('*******************************************************************');
end;
// Main Loop \\
begin
SetupSRL;
ClearDebug;
RockTail := DTMFromString('mWAAAAHicY2FgYDjKxMBwEogPA/ERIOZlZGBgB2JBIOYE4vyERIaO0jKGvYuXMDQXFjKgA0Y0DAIADxEJZA==');
Repeat
EatFood;
FindKnight;
ProgressReport;
Until (False)
FreeDTM(RockTail);
end.
At the time I was reading Mayor's guides on RSPS scripting. The script really wasn't viable for release since I was using the direct client, which would sometimes mess up with the client dimensions. It required a lot of changing and such, but it worked and it ran for hours on end. When I was scripting this, I was also developing an Include to make things easier. Some of the include was copied and pasted from SRL that I ended up editting and changing some things around to make it work for the RSPS I was scripting for.
So here's RLTools.
{
RL Tools Include
}
Var
RL_MIX1, RL_MIY1, RL_MIX2, RL_MIY2, RL_MMCX, RL_MMCY:Integer;
Inventory:TBoxArray;
(*
RL_InCombat
~~~~~~~~~~~
.. code-block:: pascal
Function RL_InCombat
Detects if the player is in combat using AveragePixelShift
Returns -1 if failed.
.. note::
by RL Anon for RLTools Include
Must copy the function into the script
function Rl_InCombat: Boolean;
var
PBox: TBox;
begin
PBox := IntToBox(245, 110, 285, 175);
Result := (AveragePixelShift(PBox, 300, 100) > 700);
Writeln(IntToStr(AveragePixelShift(PBox, 300, 250)));
end;
*)
(*
RLGetMMLevels
~~~~~~~~~~~
.. code-block:: pascal
Function GetMMLevels(LevelType : String;var ColorSign : String): integer;
Returns the level shown next to the minimap.
Colorsign returns the color of the text (Green,Yellow,Orange,Red).
Returns -1 if failed.
.. note::
by Raymond / Wizzup / Sabzi / NCDS
Edited by RL Anon for RLTools
Example:
.. code-block:: pascal
Value := RLGetMMLevels( 'hp' ) ; // Will retrieve your Hit Points
Value := RLGetMMLevels( 'pray' ) ; // Will retrieve your Prayer Points
Value := RLGetMMLevels( 'run' ) ; // Will retrieve your Run energy
Value := RLGetMMLevels( 'summon' ) ; // Will retrieve your Summoning Points
*)
function RLGetMMLevels(LevelType: string; var ColorSign: string): Integer;
var
Colors : TIntegerArray;
Signs: TStringArray;
P: TPointArray;
I: Integer;
B: TBox;
begin;
Result := -1;
ColorSign := '';
case LowerCase(Leveltype) of
'health', 'hp', 'hitpoints', 'constitution': B := IntToBox(722,28,744,40);
'prayer', 'pray' : B := IntToBox(735,66,762,82);
'run','energy' : B := IntToBox(735,103,762,122);
'summon', 'summoning' : B := IntToBox(719,119,745,156);
else
begin;
//srl_Warn('GetMMLevels', 'Invalid LevelType: ''' + LevelType + '', warn_AllVersions);
Exit;
end;
end;
Colors := [65280, 65535, 2070783, 255];
Signs := ['Green', 'Yellow', 'Orange', 'Red'];
for I := 0 to 3 do
begin
With B do
FindColorsTolerance(P, Colors[i], x1, y1, x2, y2, 50);
if Length(P) < 1 then
Continue;
Result := StrToIntDef(GetNumbers(GetTextAtExWrap(B.X1, B.Y1, B.X2, B.Y2, 0, 4, 4, Colors[i], 20, statChars)), -1);
if (Result > -1) then
begin
ColorSign := Signs[i];
Exit;
end;
end;
end;
function RL_FindCoins(var X, Y: Integer; Area: string): Boolean;
var
B: TBox;
CTS, I, J, H, L: Integer;
Pts, tPts: TPointArray;
ATPA: T2DPointArray;
V: array [0..1] of TVariantArray;
begin
case Lowercase(Area) of
'inv', 'inventory': B := IntToBox(RL_MIX1, RL_MIY1, RL_MIX2, RL_MIY2);
'bank': B := IntToBox(MBx1, MBy1, MBx2, MBy2);
'trade': B := IntToBox(323, 73, 509, 302);
'your trade': B := IntToBox(9, 73, 196, 302);
end;
V[0] := [1606307, 4, 0.09, 1.32]; //Darker colour (top of coins)
V[1] := [2209251, 8, 0.04, 1.08]; //Lighter colour (rest of the coins)
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetLength(tPts, 0);
try
for I := 0 to 1 do
begin
SetColorSpeed2Modifiers(V[I][2], V[I][3]);
FindColorsTolerance(Pts, V[I][0], B.X1, B.Y1, B.X2, B.Y2, V[I][1]);
if (Length(Pts) < 10) then Exit;
ATPA := SplitTPAEx(Pts, 10, 10);
h := High(ATPA);
L := High(tPts) + 1;
SetLength(tPts, L + h + 1);
for J := 0 to H do
tPts[L + j] := MiddleTPA(ATPA[J]);
end;
ATPA := SplitTPAEx(tPts, 20, 20);
H := High(ATPA);
for I := 0 to H do
if (High(ATPA[I]) = 1) then
Break;
if (I > H) then Exit;
Result := True;
MiddleTPAEx(ATPA[I], X, Y);
finally
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
end;
//-----------------------------------------------------------------\\
//-- RL Tools --\\
//-- Compass functions --\\
//-----------------------------------------------------------------\\
(*
RL_ClickNorth
~~~~~~~~~~~~~~~
Clicks on the compass to face the north position.
.. note::
by RL Anon
*)
procedure RL_ClickNorth;
begin
if (Random(4) = 1) then
begin
Mouse(545, 5, 0, 0, mouse_right);
WaitOptionMulti(['ace', 'orth'], 1200);
end else
Mouse(545, 5, 0, 0, mouse_left);
end;
(*
RL_ClickNorthAngleHigh
~~~~~~~~~~~~~~~
Clicks on the compass to face the north position and makes
the angle the highest.
.. note::
by RL Anon
*)
procedure RL_ClickNorthAngleHigh;
begin
if (Random(4) = 1) then
begin
Mouse(545, 5, 0, 0, mouse_right);
WaitOptionMulti(['ace', 'orth'], 1200);
end else
Mouse(545, 5, 0, 0, mouse_left);
Wait(500);
KeyDown(38);
wait(RandomRange(1000, 1500));
KeyUp(38);
end;
(*
RL_MoveCameraEast
~~~~~~~~~~~~~~~
Moves the camera or compass to the east position
.. note::
by RL Anon
*)
Procedure RL_MoveCameraEast;
begin
RL_ClickNorth;
wait(1000);
KeyDown(37);
wait(1000);
KeyUp(37);
end;
(*
RL_MoveCameraWest
~~~~~~~~~~~~~~~
Moves the camera or compass to the West position
.. note::
by RL Anon
*)
Procedure RL_MoveCameraWest;
begin
RL_ClickNorth;
wait(1000);
KeyDown(39);
wait(1000);
KeyUp(39);
end;
(*
RL_MoveCameraSouth
~~~~~~~~~~~~~~~
Moves the camera or compass to the South position
.. note::
by RL Anon
*)
Procedure RL_MoveCameraSouth;
begin
RL_ClickNorth;
wait(1000);
KeyDown(39);
wait(2000);
KeyUp(39);
end;
(*
RL_SetHighAngle
~~~~~~~~~~~~~~~
Sets the camera angle to the highest
.. note::
by RL Anon
*)
Procedure RL_SetHighAngle;
begin
KeyDown(38);
wait(RandomRange(1000, 1500));
KeyUp(38);
end;
(*
RL_SetLowAngle
~~~~~~~~~~~~~~~
Sets the camera angle to the lowest
.. note::
by RL Anon
*)
Procedure RL_SetLowAngle;
begin
KeyDown(40);
wait(RandomRange(1000, 1500));
KeyUp(40);
end;
(*
RL_GetCompassAngleRadians
~~~~~~~~~~~~~~~
Gets the compass angle radians
.. note::
by RL Anon
*)
Function RL_GetCompassAngleRadians: Extended;
var
TPA: TPointArray;
T: TPoint;
B: TBox;
begin
B := IntToBox(523, 2, 570, 48);
with B do
FindColorsSpiralTolerance(T.x, T.y, TPA, 0, x1, y1, x2, y2, 0);
if Length(TPA) < 1 then
exit;
T := MiddleTPA(TPA);
Result := ArcTan2(-(T.Y - 24), T.X - 543) + Radians(90);
Result := fixRad(Result - Pi);
end;
(*
RL_PrintCompassAngleRadians
~~~~~~~~~~~~~~~
Prints the Compass Angle degree
.. note::
by RL Anon
*)
function RL_PrintCompassAngleDegrees: Extended;
begin
Result := Degrees(RL_GetCompassAngleRadians());
Writeln(Result);
end;
//-----------------------------------------------------------------\\
//-- RL Tools --\\
//-- Inventory functions --\\
//-----------------------------------------------------------------\\
function ExplodeBox(bx: TBox; rows, columns: integer): TBoxArray;
var
r, c, w, h, ew, eh, ow, oh, i, x, y: integer;
begin
if ((rows > 0) and (columns > 0) and (bx.X1 <= bx.X2) and (bx.Y1 <= bx.Y2)) then
begin
w := ((bx.X2 - bx.X1) + 1);
h := ((bx.Y2 - bx.Y1) + 1);
if (rows < 1) then
rows := 1
else
if (rows > h) then
rows := h;
if (columns < 1) then
columns := 1
else
if (columns > w) then
columns := w;
w := (w div columns);
h := (h div rows);
ew := (((bx.X2 - bx.X1) + 1) - (w * columns));
eh := (((bx.Y2 - bx.Y1) + 1) - (h * rows));
SetLength(Result, (rows * columns));
y := bx.Y1;
for r := 0 to (rows - 1) do
begin
x := bx.X1;
if ((eh > 0) and (r < eh)) then
oh := 1
else
oh := 0;
for c := 0 to (columns - 1) do
begin
if ((ew > 0) and (c < ew)) then
ow := 1
else
ow := 0;
i := ((r * columns) + c);
Result[i].X1 := x;
Result[i].X2 := (x + (w - 1) + ow);
Result[i].Y1 := y;
Result[i].Y2 := (y + (h - 1) + oh);
x := (Result[i].X2 + 1);
end;
y := (Result[i].Y2 + 1);
end;
end else
SetLength(Result, 0);
end;
function RSPS_SlotFull(slot:Integer):Boolean;
var
x, y:Integer;
begin
if FindColor(x, y, 65536, Inventory[slot].x1, Inventory[slot].y1, Inventory[slot].x2, Inventory[slot].y2) then
result := true;
end;
function rsps_Invcount:Integer;
var
i:Integer;
begin
for i := 0 to high(Inventory) do
begin
if rsps_slotFull(i) then
result := result + 1;
end;
end;
function RSPS_InvFull:Boolean;
begin
result := (rsps_invcount = 28);
end;
function RSPS_InvEmpty:Boolean;
begin
result := (rsps_invcount = 0);
end;
function RSPS_InvEmptyButOne:Boolean;
begin
result := (rsps_invcount = 1);
end;
function RSPS_CountInventoryDTM(DTMSearch:Integer):Integer;
var
i, x, y:Integer;
begin
for i := 0 to high(Inventory) do
begin
if FindDTM(DTMSearch, x, y, Inventory[i].x1, Inventory[i].y1, Inventory[i].x2, Inventory[i].y2) then
result := result + 1;
end;
end;
procedure SetupRLTools;
begin
RL_MIX1 := 548;
RL_MIY1 := 191;
RL_MIX2 := 737;
RL_MIY2 := 463;
RL_MMCX := 627;
RL_MMCY := 85;
Mousespeed := 15;
Inventory := ExplodeBox(IntToBox(557, 212, 726, 460), 7, 4);
end;
At the time I barely understood how Includes worked and were loaded. I did get it to work, but I don't even know if I did it correctly. I looked at other includes like SRL or OSR and just looked at how they were organized and laid out. I tried copying the organization and such, and it worked, was never sure if that's actually how it's meant to be done.
So my final script was a bit more complicated. It doesn't use ACA, and has some DTM walking. I wanted to use DTM's to the fullest. The RSPS had some commands I could easily abuse, which was mobile banking. All I had to do was move out of combat, and use ::bank, which would open up the bank interface where I could easily take out any food and pots.
program SlayerAFKer;
{$I SRL/SRL.Simba}
{$I RLInclude.Simba}
{$i ObjectDTM\ObjDTMInclude.simba}
// If only using Rocktails for health set both to false
Const //Set both to false if not using Prayer at all
UsingPrayer = False; // Set to false if not using prayer
UsingSoulSplit = False; // Set to false if not using Soul Split
MaxHP = 990; //Your Total HP
StartEating = 24; // This will start eating food at 24% of your total HP
StopEating = 90; // This will sttop eating food at 90% of your total HP
MaxPrayer = 990; //Your Total HP
StartDrinking = 24; // This will start eating food at 24% of your total HP
StopDrinking = 90; // This will sttop eating food at 90% of your total HP
Var
PrayerPot, RockTail, AteRocktail, DrankPrayerPot, HPLevel, StartEatHP, StopEatHP, PrayerPoints, StartDrinkPP,
StopDrinkPP, SafeSpot, BankDepositAll, BankCloseButton, HoundSpawnSpot:Integer;
ColourString:String;
// Drinks Prayer Pots when low PP \\
procedure DrinkPrayerPot;
var
X, Y:Integer;
ColourString:String;
begin
if UsingPrayer = True then
begin
PrayerPoints := GetMMLevels('prayer', ColourString);
StartDrinkPP := Round(MaxPrayer / 100 * StartDrinking);
StopDrinkPP := Round(MaxPrayer / 100 * StopDrinking);
if (PrayerPoints <= StartDrinkPP) then // if the value we get is lower than 20% start eating.
begin
Repeat
if FindDTM(PrayerPot, X, Y, MIX1, MIY1,MIX2, MIY2) then
begin
MMouse(x, y, 0, 0);
ClickMouse2(True);
wait(1500);
WriteLn('Drinking Prayer Pot..');
inc(DrankPrayerPot);
PrayerPoints := GetMMLevels('prayer', ColourString); //Call this again, to get new value
end else Exit; //Exits the procedure if we CANNOT find food , failsafe.
Until(PrayerPoints >= StopDrinkPP) // until we get the value of 80%
end;
end;
end;
// Eat Rockatils when low HP \\
procedure EatRocktail;
var
X, Y:Integer;
ColourString:String;
begin
if UsingSoulSplit = False then
begin
HPLevel := GetMMLevels('HP', ColourString);
StartEatHP := Round(MaxHP / 100 * StartEating);
StopEatHP := Round(MaxHP / 100 * StopEating);
if (HPLevel <= StartEatHP) then // if the value we get is lower than 20% start eating.
begin
Repeat
if FindDTM(RockTail, X, Y, MIX1, MIY1,MIX2, MIY2) then
begin
MMouse(x, y, 0, 0);
ClickMouse2(True);
wait(1500);
WriteLn('Eating Rocktail...');
inc(AteRocktail);
Wait(250);
ClearDebug;
HPLevel := GetMMLevels('hp', ColourString); //Call this again, to get new value
end else Exit; //Exits the procedure if we CANNOT find food , failsafe.
Until(HPLevel >= StopEatHP) // until we get the value of 80%
end;
end;
end;
// Withdraws Rocktails when it can't find any \\
procedure WithdrawRocktails;
Var
X, Y:Integer;
begin
if UsingPrayer = False then
if not FindDTM(RockTail, X, Y, MIX1, MIY1,MIX2, MIY2) then
begin
ClickDTMRotatedIn(SafeSpot, MMX1,MMY1, MMX2,MMY2, -Pi, Pi, Pi/30, [], mouse_Left);
if FlagPresent = True then
begin
Repeat
WriteLn('Waiting..');
Wait(500);
Until FlagPresent = False
end;
TypeSend('::bank');
Wait(500);
if FindDTM(BankDepositAll, X, Y, MSX1, MSY1,MSX2, MSY2) then
begin
MMouse(X, Y, 0, 0);
Wait(200);
ClickMouse2(True)
end;
if FindDTM(RockTail, X, Y, MSX1, MSY1,MSX2, MSY2) then
begin
MMouse(X, Y, 0, 0);
Wait(200);
ClickMouse2(False)
ChooseOption('Withdraw-All');
end;
if FindDTM(BankCloseButton, X, Y, MSX1, MSY1,MSX2, MSY2) then
begin
MMouse(X, Y, 0, 0);
Wait(200);
ClickMouse2(True)
end;
KeyDown(112);
wait(200);
KeyUp(112);
wait(2000);
if FindDTM(RockTail, X, Y, MIX1, MIY1,MIX2, MIY2) then
ClickDTMRotatedIn(HoundSpawnSpot, MMX1,MMY1, MMX2,MMY2, -Pi, Pi, Pi/30, [], mouse_left);
end;
end;
// Progress Report \\
procedure ProgressReport;
begin
wait(500);
ClearDebug;
WriteLn('***************PROGRESS REPORT*************************************');
WriteLn('* Script has run for : '+ TimeRunning +'');
WriteLn('* Current HP '+ IntToStr(GetMMLevels('hp', ColourString)) +'');
if UsingPrayer = True then
begin
WriteLn('* Current Prayer Points '+ IntToStr(GetMMLevels('prayer', ColourString)) +'');
WriteLn('* Will start drinking pots at '+ IntToStr(StartDrinkPP) +' Prayer Points');
end;
if UsingSoulSplit = False then
begin
WriteLn('* Ate Rocktails '+ IntToStr(AteRocktail) +' times');
WriteLn('* Will start eating at '+ IntToStr(StartEatHP) +' HP');
end;
if UsingPrayer = True then
begin
WriteLn('* Drank Prayer Pots '+ IntToStr(DrankPrayerPot) +' times');
end;
WriteLn('*******************************************************************');
end;
// Load DTM's \\
procedure LoadDTMs;
begin
PrayerPot := DTMFromString('mlwAAAHicY2dgYHjGzMDwEIjfMEPYz4H4IxDfBWINRgYGeSAWBWJ+INZlhIiBsNWhfqBuJqyYlQE3YMSDoQAAVjMI/Q==');
RockTail := DTMFromString('mlwAAAHicY2dgYOABYlEozcUAAfxALA7lc0PlJYBYACrPDMSaAqxAkgkrhpmDDTDiwVAAAHZxARU=');
SafeSpot := DTMFromString('mbQAAAHicY2VgYJjCBMG9QDwHiDuAuBwong/EtUBcAsRZQMy02ZaBnY0ZBWMDjFgwGAAAEvAGYQ==');
BankDepositAll := DTMFromString('mggAAAHicY2NgYKhkZGCoB+IkIE4G4gYgbgJiYyDWgGIHKDYB4r0L0oG6GLFg7ACbSoRqAD+mBdg=');
BankCloseButton := DTMFromString('mbQAAAHicY2VgYHjFyMDwAYofA/FDIFYEimsCsQwQawGxNIgtIcrAxcUFx4ZaSgzYACMWDAYAMDwGaQ==');
HoundSpawnSpot := DTMFromString('mbQAAAHicY2VgYEhmYmCoAeIQII5jgvCbgeINQNwExBFAvAKIY2JCGXg0NRi41VQYPrAxM3x6+4KBGSiOjhmxYDAAAKyiChw=');
end;
procedure FreeDTMS;
begin
FreeDTM(RockTail);
FreeDTM(PrayerPot);
FreeDTM(SafeSpot);
FreeDTM(BankDepositAll);
FreeDTM(BankCloseButton);
FreeDTM(HoundSpawnSpot);
end;
// Main Loop \\
begin
SetupSRL;
ObjDTM_Setup;
ClearDebug;
LoadDTMs;
Repeat
EatRocktail;
ProgressReport;
DrinkPrayerPot;
WithdrawRocktails;
Until IsKeyDown(123)
AddOnTerminate('FreeDTMs');
end.
I was actually pretty proud of this script. It was a script I could run for quite awhile, until I just ran out of supplies. There was issues where I had to adjust my color variables to make it work, but again it worked. I guess I was especially proud of this script mainly because I looked around me and what I could abuse. I ended up using the Icon on the map to get back into the spot that aggroed all the Hell Hounds.
I used to have several more scripts that were never completed, that ended up just being scripts I had made to mess around and see what I could get working. I had actually finally got SMART to load up RSPS's correctly, and I messed around with SPS, but I could never get it to work. I lost most of my scripts due to drive failure, but I was able to find the threads I made here when asking for help where I posted my finished script.
So SRL Members, what do you think?