pork Posted June 6, 2014 Posted June 6, 2014 Hi, what is the method for checking if an RS2Object is on screen? I previously used isVisible() but it is no longer in the OSBot 2 API. Thanks! 1
PolishCivil Posted June 6, 2014 Posted June 6, 2014 Purr purr, i've seen this thread many times. GraphicUtilities.MAIN_SCREEN_CLIP.contains(Calculations.getBoundingBox(this, npc.getModel(), npc.getGridX(), npc.getGridY()).getBounds()) /** * Gets bounding box of model. * * @param methodProvider - the ATMethodProvider instance. * @param model - the model. * @param gridX - the map grid 'x' position. * @param gridY - the map grid 'y' position. * @return the bounding box of model. */ public static Polygon getBoundingBox(ATMethodProvider methodProvider, Model model, int gridX, int gridY) { if (model == null) { return new Polygon(); } short[][] screenCoordinates = GraphicUtilities.getScreenCoordinates(methodProvider.bot, gridX, gridY, methodProvider.client.accessor.getPlane(), model); Polygon temp = new Polygon(); int minX = Integer.MAX_VALUE; int minY = Integer.MAX_VALUE; int maxX = 0; int maxY = 0; for (int triangleId = 0; triangleId < model.getTriangleCount(); triangleId++) { int triangleA = model.getVertexXIndices()[triangleId]; int triangleB = model.getVertexYIndices()[triangleId]; int triangleC = model.getVertexZIndices()[triangleId]; short[] pointA = screenCoordinates[triangleA]; short[] pointB = screenCoordinates[triangleB]; short[] pointC = screenCoordinates[triangleC]; if (pointA != null && pointB != null && pointC != null) { int aX = pointA[0]; int aY = pointA[1]; int bX = pointB[0]; int bY = pointB[1]; int cX = pointB[0]; int cY = pointB[1]; if (aX < minX) { minX = aX; } if (bX < minX) { minX = bX; } if (cX < minX) { minX = cX; } if (aY < minY) { minY = aY; } if (bY < minY) { minY = bY; } if (cY < minY) { minY = cY; } //maxes if (aX > maxX) { maxX = aX; } if (bX > maxX) { maxX = bX; } if (cX > maxX) { maxX = cX; } if (aY > maxY) { maxY = aY; } if (bY > maxY) { maxY = bY; } if (cY > maxY) { maxY = cY; } } } temp.addPoint(minX, minY); temp.addPoint(minX + (maxX - minX), minY); temp.addPoint(maxX, maxY); temp.addPoint(minX, maxY); return temp; } 1
Joseph Posted June 7, 2014 Posted June 7, 2014 Or get the position of an entity and check to see if it's visible
Freak Posted June 7, 2014 Posted June 7, 2014 (edited) I have only been scripting a few hours but here is what I used for my door. Entity Door = objects.closest("Door"); if(Door != null && Door.exists()) { camera.toEntity(Door); } Edited June 7, 2014 by Freak
Precise Posted June 7, 2014 Posted June 7, 2014 I have only been scripting a few hours but here is what I used for my door. Entity Door = objects.closest("Door"); if(Door != null && Door.exists()) { camera.toEntity(Door); } this doesn't check if it is visible ^_^