Jump to content

Coloring map/minimap tiles of a certain area.


Recommended Posts

Posted (edited)

Hello, I wanted to ask, how do I color map or minimap tiles of a certain area. I have an area defined by my players position with an integer added to it (area = myPlayer().getArea(size); ), and I want it to be displayed on the map or the minimap for lower cpu usage. so how would I do it?

Edited by Viliuks
Posted (edited)

My bad, @Bobrocket corrected me, but I found this

public Point minimapTranslate(Position pos) {
		//Get local position coordinates
		int x = pos.getX() - getMap().getBaseX();
		int y = pos.getY() - getMap().getBaseY();

		//Get the players current offset from the provided position
		//Using grid coordinates we get a more accurate result when we're in
		//the process of walking between two tiles.
		//1 tile = 2 units, in rX and rY
		int rX = (x * 4 + 2) - (myPlayer().getGridX() / 32);
		int rY = (y * 4 + 2) - (myPlayer().getGridY() / 32);

		//Get the current minimap position and camera rotation offsets.
		//these are often changing even without moving/rotating the camera.
		//^ This is probably to prevent autoclicking
		int offset = client.accessor.getMinimapX();
		int minimapAngle = client.accessor.getMinimapRotation();
		int angle = minimapAngle + offset & 0x7FF;

		//Calculates the sine and cosine vars to be used for rotation from the
		//minimap center. The minimap zoom is also random and often changing.
		//These are scaled up to improve accuracy in the following calculations
		int sin = (GraphicUtilities.CAMERA_SIN[angle] * 256) / (client.accessor.getMinimapZoom() + 256);
		int cos = (GraphicUtilities.CAMERA_COS[angle] * 256) / (client.accessor.getMinimapZoom() + 256);

		//Standard trigonometry; calculate the offset from minimap centre
		//Then downscale the result by right shift. We use 16 instead of 8 due to the unit of
		//rX and rY being doubled in comparison to real X,Y coords
		int mX = rY * sin + rX * cos >> 16;
		int mY = rY * cos - rX * sin >> 16;

		//Return the point. 644 and 80 are the minimap X, Y coordinates
		return new Point(644 + mX, 80 - mY);
	}

You can do

g.drawOval(minimapTranslate(position.get(i)).x -4, minimapTranslate(position.get(i)).y -2, 6, 6);
Edited by Woody
  • Like 1
Posted

To draw an arbitrary area on the minimap you could do:

 

Area area = myPlayer().getArea(4);
Polygon p = new Polygon();
   for(int i = 0; i < area.getPolygon().npoints; i++) {
      short[] mm = GraphicUtilities.getMinimapScreenCoordinate(bot, area.getPolygon().xpoints[i], area.getPolygon().ypoints[i]);
      p.addPoint(mm[0], mm[1]);
   }
g.setColor(Color.RED);
g.draw(p);

 

  • Like 1
Posted

 

To draw an arbitrary area on the minimap you could do:

 

Area area = myPlayer().getArea(4);
Polygon p = new Polygon();
   for(int i = 0; i < area.getPolygon().npoints; i++) {
      short[] mm = GraphicUtilities.getMinimapScreenCoordinate(bot, area.getPolygon().xpoints[i], area.getPolygon().ypoints[i]);
      p.addPoint(mm[0], mm[1]);
   }
g.setColor(Color.RED);
g.draw(p);

Thanks, exactly what I needed.

Posted

 

To draw an arbitrary area on the minimap you could do:

 

Area area = myPlayer().getArea(4);
Polygon p = new Polygon();
   for(int i = 0; i < area.getPolygon().npoints; i++) {
      short[] mm = GraphicUtilities.getMinimapScreenCoordinate(bot, area.getPolygon().xpoints[i], area.getPolygon().ypoints[i]);
      p.addPoint(mm[0], mm[1]);
   }
g.setColor(Color.RED);
g.draw(p);

spoon-feeding.jpg

  • Like 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...