Jump to content

Coloring map/minimap tiles of a certain area.


Vilius

Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

 

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.

Link to comment
Share on other sites

 

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
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

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