Minimap

Methods to interact with the minimap.

_images/minimap.png

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.

_images/mmorbs.png

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:

_images/compass.png

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:

_images/npcdots.png

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.
_images/mmclean.png

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.
_images/mmcleaned.gif

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:

_images/mmdownscale.png

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

_images/mmdownscale2.png

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.