Jump to content

Show Item IDs In Inventory & Equipment Source Code


TheAnswer

Recommended Posts

This code will show all the item IDs in your inventory and equipment when you view that tab.

Imports & Overriding...

>>> Add imports:

import org.osbot.script.*;
import org.osbot.script.rs2.model.Item;
import org.osbot.script.rs2.ui.EquipmentSlot;
import org.osbot.script.rs2.ui.EquipmentTab;
import org.osbot.script.rs2.ui.Tab;

import java.awt.*;

 

>>> The override:
@Override
public void onPaint(Graphics g)
{

}

Step 1

 

In the onPaint method cast the current Graphics to 2D Graphics and call the method showItemIDs.

@Override
public void onPaint(Graphics g)
{
    Graphics2D g2 = (Graphics2D)g;
    showItemIDs(g2);
}

Step 2

 

Add the following methods...

public void showItemIDs(Graphics2D g2)
{
    Composite old = g2.getComposite();
    if(currentTab() == Tab.INVENTORY)
    {
        Item[] items = client.getInventory().getItems();
        for(int i = 0; i < items.length; i++)
        {
            if(currentTab() != Tab.INVENTORY)
                return;
            if(items[i] != null)
            {
                Rectangle r = client.getInventory().getDestinationForSlot(i);
                if(r != null)
                    drawItemData(g2, r, items[i].getId());
            }
        }
    }
    else if(currentTab() == Tab.EQUIPMENT)
    {
        for(Item item : equipmentTab.getItems())
        {
            if(currentTab() != Tab.EQUIPMENT)
                return;
            if(item != null)
            {
                Rectangle r = client.getInterface(387).getChild(equipmentTab.getSlotForId(item.getId()).childId).getRectangle();
                if(r != null)
                    drawItemData(g2, r, item.getId());
            }
        }
    }
    g2.setComposite(old);
}
private void drawItemData(Graphics2D g2, Rectangle r, int id)
{
    int nx = (int) r.getX(), ny = (int) r.getY(), h = g2.getFontMetrics().getHeight();
    String s = "" + id;
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.60f));
    g2.setColor(Color.WHITE);
    g2.fillRect(nx + (int) ((r.getWidth() - g2.getFontMetrics().stringWidth(s)) / 2) - 2, ny + h / 4, g2.getFontMetrics().stringWidth(s) + 4, h);
    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.00f));
    g2.setColor(Color.BLACK);
    g2.drawString(s, nx + (int) ((r.getWidth() - g2.getFontMetrics().stringWidth(s)) / 2), ny + h);
}

The Result...

post-501-0-64129400-1372948452_thumb.png

post-501-0-10762300-1372948455_thumb.png

Edited by TheAnswer
  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

Please don't take this the wrong way, but after studying your code, I've come up with a more efficient, easy-to-read method:

	@Override
	public void onPaint(Graphics arg0) {

		Graphics2D g = (Graphics2D) arg0;
		if (currentTab() == Tab.INVENTORY)
			drawInventory(g);
		else if (currentTab() == Tab.EQUIPMENT)
			drawEquipment(g);
	}
	
	public void drawInventory(Graphics2D arg0) {
		int i = 0;
		for (Item next : client.getInventory().getItems()) {
			if (next != null)
				drawString(arg0,
						String.valueOf(next.getId()),
						client.getInventory().getDestinationForSlot(i));
			i++;	
		}
	}
	
	public void drawEquipment(Graphics2D arg0) {
		for (Item next : equipmentTab.getItems())
			if (next != null)
				drawString(arg0,
						String.valueOf(next.getId()),
						client.getInterface(387).getChild(equipmentTab.getSlotForId(next.getId())
								.childId).getRectangle());
				
	}
	
	public void drawString(Graphics2D arg0, String arg1, Rectangle arg2) {
		if (arg0 == null || arg1 == null || arg1.length() == 0 || arg2 == null
				|| arg2.width <= 0 || arg2.height <= 0)
			return; // No point painting...
		
		FontMetrics fm = arg0.getFontMetrics();
		Point p = new Point(
				(int) (arg2.x + (arg2.width - fm.stringWidth(arg1)) / 2),
				(int) (arg2.y + (arg2.height - fm.getHeight())));
		arg0.setColor(Color.YELLOW);
		arg0.draw(arg2);
		arg0.setColor(Color.BLACK);
		arg0.drawString(arg1, p.x - 2, p.y - 2);
		arg0.drawString(arg1, p.x - 2, p.y + 2);
		arg0.drawString(arg1, p.x + 2, p.y - 2);
		arg0.drawString(arg1, p.x + 2, p.y + 2);
		arg0.setColor(Color.YELLOW);
		arg0.drawString(arg1, p.x, p.y);
	}
Edited by liverare
  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  On 8/6/2013 at 12:50 AM, liverare said:

 

Please don't take this the wrong way, but after studying your code, I've come up with a more efficient, easy-to-read method:

	@Override
	public void onPaint(Graphics arg0) {

		Graphics2D g = (Graphics2D) arg0;
		if (currentTab() == Tab.INVENTORY)
			drawInventory(g);
		else if (currentTab() == Tab.EQUIPMENT)
			drawEquipment(g);
	}
	
	public void drawInventory(Graphics2D arg0) {
		int i = 0;
		for (Item next : client.getInventory().getItems()) {
			if (next != null)
				drawString(arg0,
						String.valueOf(next.getId()),
						client.getInventory().getDestinationForSlot(i));
			i++;	
		}
	}
	
	public void drawEquipment(Graphics2D arg0) {
		for (Item next : equipmentTab.getItems())
			if (next != null)
				drawString(arg0,
						String.valueOf(next.getId()),
						client.getInterface(387).getChild(equipmentTab.getSlotForId(next.getId())
								.childId).getRectangle());
				
	}
	
	public void drawString(Graphics2D arg0, String arg1, Rectangle arg2) {
		if (arg0 == null || arg1 == null || arg1.length() == 0 || arg2 == null
				|| arg2.width <= 0 || arg2.height <= 0)
			return; // No point painting...
		
		FontMetrics fm = arg0.getFontMetrics();
		Point p = new Point(
				(int) (arg2.x + (arg2.width - fm.stringWidth(arg1)) / 2),
				(int) (arg2.y + (arg2.height - fm.getHeight())));
		arg0.setColor(Color.YELLOW);
		arg0.draw(arg2);
		arg0.setColor(Color.BLACK);
		arg0.drawString(arg1, p.x - 2, p.y - 2);
		arg0.drawString(arg1, p.x - 2, p.y + 2);
		arg0.drawString(arg1, p.x + 2, p.y - 2);
		arg0.drawString(arg1, p.x + 2, p.y + 2);
		arg0.setColor(Color.YELLOW);
		arg0.drawString(arg1, p.x, p.y);
	}

Nice liverare. I was in my learning phase at the time but thanks for updating smile.png

Edited by TheAnswer
Link to comment
Share on other sites

  On 8/6/2013 at 12:50 AM, liverare said:

 

Please don't take this the wrong way, but after studying your code, I've come up with a more efficient, easy-to-read method:

	@Override
	public void onPaint(Graphics arg0) {

		Graphics2D g = (Graphics2D) arg0;
		if (currentTab() == Tab.INVENTORY)
			drawInventory(g);
		else if (currentTab() == Tab.EQUIPMENT)
			drawEquipment(g);
	}
	
	public void drawInventory(Graphics2D arg0) {
		int i = 0;
		for (Item next : client.getInventory().getItems()) {
			if (next != null)
				drawString(arg0,
						String.valueOf(next.getId()),
						client.getInventory().getDestinationForSlot(i));
			i++;	
		}
	}
	
	public void drawEquipment(Graphics2D arg0) {
		for (Item next : equipmentTab.getItems())
			if (next != null)
				drawString(arg0,
						String.valueOf(next.getId()),
						client.getInterface(387).getChild(equipmentTab.getSlotForId(next.getId())
								.childId).getRectangle());
				
	}
	
	public void drawString(Graphics2D arg0, String arg1, Rectangle arg2) {
		if (arg0 == null || arg1 == null || arg1.length() == 0 || arg2 == null
				|| arg2.width <= 0 || arg2.height <= 0)
			return; // No point painting...
		
		FontMetrics fm = arg0.getFontMetrics();
		Point p = new Point(
				(int) (arg2.x + (arg2.width - fm.stringWidth(arg1)) / 2),
				(int) (arg2.y + (arg2.height - fm.getHeight())));
		arg0.setColor(Color.YELLOW);
		arg0.draw(arg2);
		arg0.setColor(Color.BLACK);
		arg0.drawString(arg1, p.x - 2, p.y - 2);
		arg0.drawString(arg1, p.x - 2, p.y + 2);
		arg0.drawString(arg1, p.x + 2, p.y - 2);
		arg0.drawString(arg1, p.x + 2, p.y + 2);
		arg0.setColor(Color.YELLOW);
		arg0.drawString(arg1, p.x, p.y);
	}

you could name some of your vars better, also look into finalizing some things.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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