Minimap¶
Methods to interact with the minimap.

The minimap interface.¶
ERSMinimapDots¶
ERSMinimapDot = enum(PLAYER, NPC, ITEM);
Enum representing the available minimap dots.
ERSMinimapOrb¶
ERSMinimapOrb = enum(HITPOINTS, PRAYER, ENERGY, SPECIAL);
Enum representing the 4 available minimap orbs.

TRSMinimap¶
Main record used to interact with the Minimap.
Minimap.SetupInterface¶
procedure TRSMinimap.SetupInterface();
Internal method used to setup the TRSMinimap coordinates.
This is automatically called for you on the Minimap variable.
Minimap.Contains¶
function TRSMinimap.Contains(pt: TPoint): Boolean;
Returns True/False if a point pt
is on the minimap.
Example:
WriteLn Minimap.Contains([100,100]);
Minimap.Filter¶
function TRSMinimap.Filter(tpa: TPointArray): TPointArray;
Returns a TPA of the points from tpa
that are within the minimap.
Example:
tpa := TPointArray.CreateFromBox(Minimap.Bounds);
ShowOnTarget(Minimap.Filter(tpa));
Minimap.RandomPoint¶
function TRSMinimap.RandomPoint(pt: TPoint; randomness: Integer): TPoint;
Generates a random point on the minimap based on the point pt
passed.
The distance of this random point will be within randomness
amount of distance
from pt
.
Example:
while True do
ShowOnTarget(Minimap.RandomPoint(Minimap.Center, 30));
Minimap.GetCompassAngle¶
function TRSMinimap.GetCompassAngle(asDegrees: Boolean = True): Single;
Returns the minimap compass angle either in radians or degrees. By default, degrees are used.
Credits: slacky
Example:
WriteLn Minimap.GetCompassAngle();
If you are not sure what the compass refers to, it refers to this:

Minimap.SetCompassAngle¶
function TRSMinimap.SetCompassAngleEx(degrees, accuracy: Single): Boolean;
function TRSMinimap.SetCompassAngle(degrees: Single): Boolean;
function TRSMinimap.SetCompassAngle(minDegrees, maxDegrees: Single; accuracy: Single = 5): Boolean; overload;
Sets the current compass angle. If you specify a minimum and a maximum angle a gaussian distribution will be used.
Example:
Minimap.SetCompassAngle(180);
Minimap.GetLevel¶
function TRSMinimap.GetLevel(orb: ERSMinimapOrb): Integer;
Returns the level of the specified orb
.
Example:
WriteLn Minimap.GetLevel(ERSMinimapOrb.PRAYER);
Minimap.UnderLevel¶
function TRSMinimap.UnderLevel(orb: ERSMinimapOrb; level: Integer): Boolean;
Returns true if the level of the specified orb
is below the specified level
threshold.
Example:
WriteLn Minimap.UnderLevel(ERSMinimapOrb.PRAYER, 50);
Minimap.OverLevel¶
function TRSMinimap.OverLevel(orb: ERSMinimapOrb; level: Integer): Boolean;
Returns true if the level of the specified orb
is over the specified level
threshold.
Example:
WriteLn Minimap.OverLevel(ERSMinimapOrb.PRAYER, 50);
Minimap Orb Status¶
function TRSMinimap.Poisoned(): Boolean;
function TRSMinimap.Envenomed(): Boolean;
function TRSMinimap.RunEnabled(): Boolean;
function TRSMinimap.HasStamina(): Boolean;
function TRSMinimap.PrayerEnabled(): Boolean;
function TRSMinimap.SpecialEnabled(): Boolean;
function TRSMinimap.HasSpecialWeapon(): Boolean;
Returns a status from a minimap orb.
Example:
WriteLn Minimap.Poisoned();
Minimap.GetPercent¶
function TRSMinimap.GetPercent(orb: ERSMinimapOrb): Integer;
Returns the percent remaining of the specified orb
.
Example:
WriteLn Minimap.GetPercent(ERSMinimapOrb.HITPOINTS);
Minimap.Toggle¶
function TRSMinimap.Toggle(orb: ERSMinimapOrb): Boolean;
Toggles a minimap orb. All orbs can be toggled except ERSMinimapOrb.HITPOINTS
.
Example:
if not Minimap.PrayerEnabled() then
Minimap.Toggle(ERSMinimapOrb.PRAYER);
Minimap.FindFlag¶
function TRSMinimap.FindFlag(out pt: TPoint): Boolean;
Returns True/False if the minimap walking flag is visible on the minimap.
pt
will return the coordinate where the flag was found.
Example:
if Minimap.FindFlag(flagPt) then
ShowOnTarget(TCircle.Create(flagPt.X, flagPt.Y, 6));
Minimap.HasFlag¶
function TRSMinimap.HasFlag(): Boolean;
Returns True/False if the minimap walking flag is visible on the minimap.
Same as Minimap.FindFlag()
but without the need for parameters.
Example:
WriteLn Minimap.HasFlag();
Minimap.WaitFlag¶
function TRSMinimap.WaitFlag(time: Integer = 600; interval: Integer = -1): Boolean;
Returns True/False if the minimap walking flag becomes (or already is) visible
within time
milliseconds.
Example:
pt := Minimap.RandomPoint(Minimap.Center, 30);
Mouse.Click(pt, EMouseButton.LEFT);
WriteLn Minimap.WaitFlag(2000);
Minimap.Normalize¶
function TRSMinimap.Normalize(pt: TPoint; angle: Single): TPoint;
function TRSMinimap.NormalizeEx(vector: Vector2; angle: Single): Vector2;
Normalizes minimap coordinates to 0º.
Basically, whatever pt
or vector
you pass into this, will be rotated to it’s
position on the minimap at 0º.
angle
should be in radians.
Example:
pt := Minimap.RandomPoint(Minimap.Center, 30);
angle := Minimap.GetCompassAngle(False);
pt := Minimap.Normalize(pt, angle);
ShowOnTarget(TCircle.Create(pt.X, pt.Y, 6));
Minimap.GetDots¶
function TRSMinimap._GetDots(img: TImage): TPointArray;
function TRSMinimap.GetDots(dot: ERSMinimapDot; bounds: TBox): TPointArray;
function TRSMinimap.GetDots(dot: ERSMinimapDot): TPointArray; overload;
function TRSMinimap.GetDots(dots: ERSMinimapDots; bounds: TBox): TRSMinimapDotArray; overload;
function TRSMinimap.GetDots(dots: ERSMinimapDots = [ERSMinimapDot.PLAYER, ERSMinimapDot.NPC, ERSMinimapDot.ITEM]): TRSMinimapDotArray; overload;
Returns minimap dots found.
You can specify which dots you want to look for in dot
or dots
.
You can also optionalyl specify bounds
to returns minimap dots from just a region of the minimap.
For example, this is how you can find NPC dots and debug them:
{$I WaspLib/osrs.simba}
var
pt: TPoint;
boxes: TBoxArray;
begin
for pt in Minimap.GetDots(ERSMinimapDot.NPC) do
boxes += TBox.Create(pt, 3, 3);
ShowOnTarget(boxes);
end.
Your result should look something like this on the minimap:

Minimap.CleanImage¶
function TRSMinimap.CleanImage(img: TImage; radius: Integer): TImage;
Cleans a TImage of the Minimap you pass into it. “Clean” means that minimap dots, the running flag and a few other things are removed and the colors around it will be blended in.
The image i
Example:
{$I WaspLib/osrs.simba}
var
before, after, combined: TImage;
begin
before := Target.GetImage(Minimap.Bounds);
after := Minimap.CleanImage(before.Copy(), 65);
combined := new TImage(before.Width*2, before.Height);
combined.DrawImage(before, [0,0]);
combined.DrawImage(after, [before.Width+1, 0]);
combined.Show();
end.

Minimap.GetCleanImage¶
function TRSMinimap.GetCleanImage(angle: Single = $FFFF; radius: Integer = -1): TImage;
Returns a clean TImage
of the Minimap.
Read Minimap.CleanImage for more information.
Unlike Minimap.CleanImage, the TImage
returned is rotated to 0º as you
can see in the following example:
{$I WaspLib/osrs.simba}
var
img: TImage;
begin
while True do
begin
img := Minimap.GetCleanImage();
img.Show();
end;
end.

Minimap.ScaleMinimap¶
function TRSMinimap.ScaleMinimap(img: TImage; scaling: Integer; radius: Integer = -1): TImage;
Scales down a minimap TImage passed in the img
parameter.
Example:
{$I WaspLib/osrs.simba}
var
img, downscaled: TImage;
begin
img := Minimap.GetCleanImage();
downscaled := Minimap.ScaleMinimap(img, 4);
downscaled.Show();
end.
And this should be the result you see:

As you can see, it’s pretty small, if we zoom it in 800% it should look something like this:

Minimap.IsPlayerMoving¶
function TRSMinimap.IsPlayerMoving(minShift: Integer = 500): Boolean;
Returns whether the player is moving or not according to the specified minimum pixel shift.
Example:
WriteLn Minimap.IsPlayerMoving();
Minimap.WaitMoving¶
procedure TRSMinimap.WaitMoving(time: Integer = 20000; minShift: Integer = 500);
To put it simply, waits time
milliseconds for Minimap.IsPlayerMoving to
return false with the specified minShift
.
Example:
WriteLn Minimap.WaitMoving();
Minimap variable¶
Global TRSMinimap variable.