SAPI
Hello world.
Here's a sneak peak of a little library I'm working on, its goal is to simplify high-level interaction between bot/script and game,
useful when you need a superficial game variable but don't have the time or knowledge to fetch it via code or a clunky GUI.
Currently, the following types are selectable (with more to come):
Entities
Widgets
Positions
Bank slots
Inventory slots
Prayer buttons
Magic spells
Currently, the following brushes are available (with more to come):
Point
Shapes: Arc2D, Ellipse2D, Rectangle2D, RoundRectangle2D
The library will be free & available for everyone. No ETA but shouldn't be too long.
Code example
@ScriptManifest(author = "Botre", info = "", logo = "", name = "Example Script", version = 0)
public class Example extends Script {
private Sapi sapi;
@Override
public void onStart() throws InterruptedException {
super.onStart();
// Initialize API.
sapi = new Sapi(this);
// Add a filter to the inventory module: only empty slots are made selectable.
sapi.getInventorySlotModule().getFilters().add(slot -> slot.isEmpty());
// Change the painter.
sapi.getInventorySlotModule().setPainter(new DefaultItemContainerSlotPainter(this) {
@Override
public void paint(Graphics2D g2d, ItemContainerSlot object) {
g2d.setColor(Color.BLUE);
g2d.drawString(object.getItem().getName(), 0, 0);
super.paint(g2d, object);
}
});
// Activate the module / enable selection.
sapi.getInventorySlotModule().setActive(true);
// Start the API.
sapi.start();
}
@Override
public void onExit() throws InterruptedException {
super.onExit();
// Stop API.
sapi.stop();
}
@Override
public int onLoop() throws InterruptedException {
// Iterate over selected items.
for (ItemContainerSlot slot : sapi.getInventorySlotModule().getSelected()) {
log(slot.getItem().getName());
}
return 500;
}
@Override
public void onPaint(Graphics2D g2d) {
super.onPaint(g2d);
sapi.getInventorySlotModule().paintBrush(g2d);
sapi.getInventorySlotModule().paintSelected(g2d);
}
}
Screenshots