[DuckTools] DuckAPI - Major Update
Just posting an update on the project since DuckAPI has changed a lot from the original thread and is now much more complete than the first version I showed here.
The old version was more of an early concept built around a DLL + manual workflow.
The current implementation is now centered around
DuckAPI.exe, which handles the runtime and attach flow for you directly. That means the experience is cleaner now, easier to use, and much more practical for real plugin development.
Also, the Python side is in a much better place now. The currently exposed APIs and runtime behavior give plugin developers far more room to build useful tools than what was possible in the original release.
IMPORTANT: USE AT YOUR OWN RISK
ANY TOOL THAT INTERACTS WITH THE GAME CLIENT OR SENDS / BLOCKS / INSPECTS PACKETS CAN CARRY A RISK OF BAN OR PENALTY.
I DO NOT GUARANTEE SAFETY ON ANY SERVER, AND YOU ARE FULLY RESPONSIBLE FOR HOW YOU USE IT.
What Changed
- DuckAPI now runs through a dedicated desktop application instead of relying on the original manual approach
- The client-side runtime is handled by DuckAPI.exe during attach
- A full plugin host is now integrated into the main application
- Built-in plugin tabs and custom UI support are available through DuckUI
- Live packet tooling is much more practical now through xPacketTool
- The overall workflow is cleaner and more usable for day-to-day plugin development
Current Interface
Python Side Is Much Stronger Now
The original DuckAPI version was much more limited.
The current one exposes much more useful in-game data and actions, which means plugin developers can now build significantly more capable plugins than before.
This is the biggest practical difference in the new version.
It is no longer just about packet callbacks and a simple plugin UI. The Python side now has access to much more of the actual game state.
What makes this version more powerful
- current character data
- position and movement
- inventory and item data
- skills, buffs, and masteries
- nearby NPCs
- nearby monsters
- chat sending helpers for multiple chat types
- packet handling, injection, and custom plugin UI
So compared to the original DuckAPI version, plugins are no longer limited to very small packet-driven helpers.
Now they can actually
read the game world, inspect the character state, react to teleports, send movement, and combine all of that with custom UI and packet logic.
Additional Python APIs Available Now
Game State / Character APIs
Code:
duckapi.get_client()
duckapi.get_position()
duckapi.get_character_data()
duckapi.get_inventory()
duckapi.get_skills()
duckapi.get_active_skills()
duckapi.get_buffs()
duckapi.get_mastery()
duckapi.get_npcs()
duckapi.get_monsters()
Movement APIs
Code:
duckapi.move_to(x, y, z)
duckapi.move_to_region(region, x, y, z)
Additional Chat APIs
Code:
duckchat.All(message)
duckchat.Party(message)
duckchat.Guild(message)
duckchat.Union(message)
duckchat.Stall(message)
duckchat.Private(player, message)
duckchat.Notice(message)
duckchat.Academy(message)
Additional Runtime Events
What these additional APIs make possible
- reading live player state directly from Python
- reading inventory contents and item information
- reading known skills, buffs, and mastery state
- reading nearby monsters and NPCs with names, IDs, positions, and monster HP data
- reacting to teleports through a callback
- sending movement from Python
- combining world data, movement, packet logic, and custom UI in the same plugin
Full Documentation
For the full and updated DuckAPI guide and documentation, check:
What This Means In Practice
- It is much easier now to adapt older packet-oriented plugin ideas into DuckAPI
- You can build plugins with proper in-app UI instead of relying on a very barebones flow
- Packet-driven tools are much more practical now
- The plugin environment is strong enough now to support much more serious custom tooling than the original version
- The additional game-related APIs make it possible to build much smarter plugins than what the original DuckAPI version allowed
So this reply is mainly to show that DuckAPI is no longer in the same state as the version shown in the original post. The project has moved forward a lot, and the Python/plugin side is now far more useful for anyone who wants to build real tools on top of it.
I’ll keep expanding the available APIs over time, but even in its current state, it’s already much more capable than the first DuckAPI version I originally posted here.