159 lines
6.1 KiB
Java
159 lines
6.1 KiB
Java
package examples;
|
|
|
|
import com.openosrs.client.ModernizedClient;
|
|
import com.openosrs.client.api.AgentAPI;
|
|
import com.openosrs.client.api.Position;
|
|
import com.openosrs.client.api.GameObject;
|
|
import com.openosrs.client.scripting.ScriptingFramework;
|
|
import com.openosrs.client.plugins.PluginManager;
|
|
|
|
/**
|
|
* Example Agent - Demonstrates how an AI agent can use the modernized client
|
|
* to interact with RuneScape.
|
|
*/
|
|
public class ExampleAgent {
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
System.out.println("=== Example AI Agent for RuneScape ===");
|
|
|
|
// 1. Initialize the modernized client
|
|
ModernizedClient client = new ModernizedClient();
|
|
client.start().get(); // Wait for startup
|
|
|
|
// 2. Get the Agent API for game interaction
|
|
AgentAPI api = client.getAgentAPI();
|
|
|
|
// 3. Basic agent behavior - demonstrate API usage
|
|
demonstrateBasicUsage(api);
|
|
|
|
// 4. Use the scripting framework
|
|
demonstrateScripting(client.getScriptingFramework());
|
|
|
|
// 5. Use the plugin system
|
|
demonstratePlugins(client.getPluginManager());
|
|
|
|
// 6. Keep running for a while then shutdown
|
|
System.out.println("Agent will run for 30 seconds then shutdown...");
|
|
Thread.sleep(30000);
|
|
|
|
client.stop();
|
|
System.out.println("Agent shutdown complete");
|
|
}
|
|
|
|
/**
|
|
* Demonstrate basic Agent API usage.
|
|
*/
|
|
private static void demonstrateBasicUsage(AgentAPI api) {
|
|
System.out.println("\\n--- Basic Agent API Usage ---");
|
|
|
|
try {
|
|
// Get player information
|
|
Position playerPos = api.getPlayerPosition();
|
|
System.out.println("Player Position: " + playerPos);
|
|
|
|
int hitpoints = api.getHitpoints();
|
|
int maxHp = api.getMaxHitpoints();
|
|
System.out.println("Hitpoints: " + hitpoints + "/" + maxHp);
|
|
|
|
int combatLevel = api.getCombatLevel();
|
|
System.out.println("Combat Level: " + combatLevel);
|
|
|
|
// Check if in combat
|
|
boolean inCombat = api.isInCombat();
|
|
System.out.println("In Combat: " + inCombat);
|
|
|
|
// Get inventory info
|
|
boolean inventoryFull = api.isInventoryFull();
|
|
int emptySlots = api.getEmptySlots();
|
|
System.out.println("Inventory Full: " + inventoryFull + ", Empty Slots: " + emptySlots);
|
|
|
|
// Find nearby objects (example)
|
|
var objects = api.getGameObjects();
|
|
System.out.println("Nearby Objects: " + objects.size());
|
|
|
|
// Find nearby NPCs
|
|
var npcs = api.getNPCs();
|
|
System.out.println("Nearby NPCs: " + npcs.size());
|
|
|
|
// Example interaction (if there are objects nearby)
|
|
if (!objects.isEmpty()) {
|
|
GameObject firstObject = objects.get(0);
|
|
System.out.println("Found object: " + firstObject.getName() + " at " + firstObject.getPosition());
|
|
|
|
// Could interact with it:
|
|
// api.interactWithObject(firstObject, "Examine").get();
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
System.err.println("Error in basic usage demo: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Demonstrate the scripting framework.
|
|
*/
|
|
private static void demonstrateScripting(ScriptingFramework scripting) {
|
|
System.out.println("\\n--- Scripting Framework Demo ---");
|
|
|
|
try {
|
|
// Show available scripts
|
|
System.out.println("Available scripts: woodcutting, combat-training, banking");
|
|
|
|
// Could start a script:
|
|
// String executionId = scripting.startScript("woodcutting");
|
|
// System.out.println("Started woodcutting script: " + executionId);
|
|
|
|
// Monitor script status:
|
|
// ScriptStatus status = scripting.getScriptStatus(executionId);
|
|
// System.out.println("Script status: " + status);
|
|
|
|
// For demo, just show that scripting is available
|
|
boolean enabled = scripting.isEnabled();
|
|
System.out.println("Scripting framework enabled: " + enabled);
|
|
|
|
var activeScripts = scripting.getActiveScripts();
|
|
System.out.println("Active scripts: " + activeScripts.size());
|
|
|
|
} catch (Exception e) {
|
|
System.err.println("Error in scripting demo: " + e.getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Demonstrate the plugin system.
|
|
*/
|
|
private static void demonstratePlugins(PluginManager plugins) {
|
|
System.out.println("\\n--- Plugin System Demo ---");
|
|
|
|
try {
|
|
// Show available plugins
|
|
var allPlugins = plugins.getAllPlugins();
|
|
System.out.println("Available plugins: " + allPlugins.size());
|
|
|
|
for (var entry : allPlugins.entrySet()) {
|
|
String name = entry.getKey();
|
|
var info = entry.getValue();
|
|
System.out.println(" - " + name + ": " + info.getState() +
|
|
" (enabled: " + info.isEnabled() + ")");
|
|
}
|
|
|
|
// Enable a useful plugin for agents
|
|
if (plugins.getAllPlugins().containsKey("Performance Monitor")) {
|
|
boolean success = plugins.enablePlugin("Performance Monitor");
|
|
System.out.println("Enabled Performance Monitor: " + success);
|
|
}
|
|
|
|
if (plugins.getAllPlugins().containsKey("Experience Tracker")) {
|
|
boolean success = plugins.enablePlugin("Experience Tracker");
|
|
System.out.println("Enabled Experience Tracker: " + success);
|
|
}
|
|
|
|
// Show enabled plugins
|
|
var enabled = plugins.getEnabledPlugins();
|
|
System.out.println("Enabled plugins: " + enabled);
|
|
|
|
} catch (Exception e) {
|
|
System.err.println("Error in plugin demo: " + e.getMessage());
|
|
}
|
|
}
|
|
} |