Minimap

Methods to interact with the minimap interface:

_images/minimap.png

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.Compass

The minimap compass refers to the small compass on the top left corner of the minimap:

_images/compass.png

The following properties are used to read and set the compass angle as both radians and degrees as needed.


Minimap.CompassRadians

property TRSMinimap.CompassRadians: Single;
property TRSMinimap.CompassRadians(radians: Single): Boolean;
property TRSMinimap.CompassRadians(minRadians, maxRadians: Single): Boolean;

Returns or sets the minimap compass angle as radians.

The accuracy can be controlled through the Minimap.Compass.Accuracy variable and it’s value should be in radians. It’s default is aproximately 5º (0.03*PI).

Credits: slacky

Example:

WriteLn Minimap.CompassRadians;
WriteLn Minimap.CompassRadians := PI;
WriteLn Minimap.CompassRadians;

Minimap.CompassDegrees

property TRSMinimap.CompassDegrees: Single;
property TRSMinimap.CompassDegrees(degrees: Single): Boolean;
property TRSMinimap.CompassDegrees(minDegrees, maxDegrees: Single): Boolean;

Returns or sets the minimap compass angle as degrees.

The accuracy can be controlled through the Minimap.Compass.Accuracy variable and it’s value should be in radians. It’s default is aproximately 5º (0.03*PI).

Example:

WriteLn Minimap.CompassDegrees;
WriteLn Minimap.CompassDegrees := 180;
WriteLn Minimap.CompassDegrees;

If you are not sure what the compass refers to, check the image at the end of Minimap.CompassRadians.


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.GetRunEnergy

function TRSMinimap.GetRunEnergy(): Integer;

Returns the remaining run energy.

Example:

WriteLn Minimap.GetRunEnergy();

Minimap.GetHPLevel

function TRSMinimap.GetHPLevel(): Integer;

Returns the remaining hitpoints.

Example:

WriteLn Minimap.GetHPLevel();

Minimap.GetPrayerLevel

function TRSMinimap.GetPrayerLevel(): Integer;

Returns the remaining prayer points.

Example:

WriteLn Minimap.GetPrayerLevel();

Minimap.GetSpecLevel

function TRSMinimap.GetSpecLevel(): Integer;

Returns the remaining special attack level.

Example:

WriteLn Minimap.GetSpecLevel();

Minimap Orbs Statuses and States

The following are methods to interact and read information from the Minimap ERSMinimapOrb orbs.


Minimap Status

Methods to retrieve Minimap ERSMinimapOrb orbs statuses.


Minimap.HasPoison

function TRSMinimap.HasPoison(): Boolean;

Returns whether the ERSMinimapOrb.HITPOINTS has the poison status.

Example:

WriteLn Minimap.HasPoison();

Minimap.HasVenom

function TRSMinimap.HasVenom(): Boolean;

Returns whether the ERSMinimapOrb.HITPOINTS has the venom status.

Example:

WriteLn Minimap.HasVenom();

Minimap.HasStamina

function TRSMinimap.HasStamina(): Boolean;

Returns whether the ERSMinimapOrb.ENERGY has the stamina status.

Example:

WriteLn Minimap.HasStamina();

Minimap.HasSpecial

function TRSMinimap.HasSpecial(): Boolean;

Returns whether the ERSMinimapOrb.SPECIAL has the special status, in other words, whether the current weapon is a special attack weapon or not.

Example:

WriteLn Minimap.HasSpecial();

Minimap States

Methods to retrieve Minimap ERSMinimapOrb orbs states.


Minimap.PrayerEnabled

function TRSMinimap.PrayerEnabled(): Boolean;

Returns whether the ERSMinimapOrb.PRAYER is enabled or not.

Example:

WriteLn Minimap.PrayerEnabled();

Minimap.EnergyEnabled

function TRSMinimap.EnergyEnabled(): Boolean;

Returns whether the ERSMinimapOrb.ENERGY is enabled or not.

Example:

WriteLn Minimap.EnergyEnabled();

Minimap.SpecialEnabled

function TRSMinimap.SpecialEnabled(): Boolean;

Returns whether the ERSMinimapOrb.SPECIAL is enabled or not.

Example:

WriteLn Minimap.SpecialEnabled();

Minimap.GetPercent

function TRSMinimap.GetPercent(orb: ERSMinimapOrb): Integer;

Returns the percent remaining of the specified orb.

Example:

WriteLn Minimap.GetPercent(ERSMinimapOrb.HITPOINTS);

Minimap.GetHPPercent

function TRSMinimap.GetHPPercent(): Integer;

Returns the percent remaining of hp.

Example:

WriteLn Minimap.GetHPPercent();

Minimap.GetPrayerPercent

function TRSMinimap.GetHPPercent(): Integer;

Returns the percent remaining of prayer.

Example:

WriteLn Minimap.GetPrayerPercent();

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.EnablePrayer

function TRSMinimap.EnablePrayer(): Boolean;

Enable the quick prayer orb.


Minimap.DisablePrayer

function TRSMinimap.DisablePrayer(): Boolean;

Disable the quick prayer orb.


Minimap.CurePoison

function TRSMinimap.CurePoison(): Boolean;

Clicks the health orb.

This cures poison assuming you have potions for it in your Inventory.


Minimap.CureVenom

function TRSMinimap.CureVenom(): Boolean;

Clicks the health orb.

This cures venom assuming you have potions for it in your Inventory.


Minimap.EnableEnergy

function TRSMinimap.EnableEnergy(): Boolean;

Enable the energy orb.


Minimap.DisableEnergy

function TRSMinimap.DisableEnergy(): Boolean;

Disable the energy orb.


Minimap.EnableSpecial

function TRSMinimap.EnableSpecial(level: Integer): Boolean;

Enabled the special attack orb.


Minimap.DisableSpecial

function TRSMinimap.DisableSpecial(): Boolean;

Disable the special attack orb.


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.CountColor

function TRSMinimap.CountColor(color: TColor; tolerance: Single = 0): Integer;
function TRSMinimap.CountColor(color: TColorTolerance): Integer; overload;

Counts the specified color on the Minimap.

Example:

WriteLn Minimap.CountColor($FFFFFF);

Minimap.ColorPercent

function TRSMinimap.ColorPercent(color: TColor; tolerance: Single = 0): Single;
function TRSMinimap.ColorPercent(color: TColorTolerance): Single; overload;

Counts the percentage of the specified color on the Minimap.

Example:

WriteLn Minimap.ColorPercent($FFFFFF);

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.CompassRadians;
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.