Anonymous
b92831e815
|
6 months ago | |
---|---|---|
dist | 6 months ago | |
lib | 6 months ago | |
scripts | 6 months ago | |
src | 6 months ago | |
README.md | 6 months ago | |
package.json | 6 months ago | |
pnpm-lock.yaml | 6 months ago | |
sample.env | 6 months ago | |
tsconfig.json | 6 months ago |
README.md
Mekanome
Mekanome is a TypeScript based SDK for building combat rotations for the tinkr unlocker on macOS. Heavily inspired by the Bastion project, it aims to be a more type-safe, developer friendly, and potentially more secure (maybe, who really knows) way of building rotations for tinkr.
Developing
- Clone or fork this repo and run
pnpm i
to install its dependencies. I preferpnpm
so that's what this project uses as a package manager, but you prefer npm or yarn you should be able to switch to them without issue. - The types in the repo should be up to date, but if not you'll need to re-generate them. See the below section for details on how to do that.
- Create a .env file and copy ./sample.env into it. Fill in the config so it matches your set up.
- Running
pnpm run build:full
will clear out your Mekanome dist directory, your Tinkr scripts directory, compile your typescript code to lua, and copy it to both the Mekanome dist and Tinkr scripts directories. WARNING: This will completely delete and replace your Tinkr scripts directory. If you have anything in there you dont want to delete, I suggest runningbuild:dist
instead and copying the generated code manually. - You should now have a working version of Mekanome ready to be loaded when you next run the game.
Generating types
This repo should come with up to date types, but just in case it doesn't and you need to generate your own the process is as follows:
- Navigate into the blizzard interface code library with
cd ./lib/BlizzardInterfaceCode
and rungit pull
to pull in the latest documentation, then navigate back to the root withcd ../../
. - Running
pnpm run lua-docs:full
will grab the documentation from the interface code and format them into JSON. - Next run
pnpm run types:full
to convert the JSON we just generated into usable types. If you run into an error that says something like "Error: Encountered unknown string type: "X"" its because "X" is typed in the documentation in a way that cant easily be translated into typescript. Seewow-type-aliases.ts
to fix that. - You should now have workable types for most of the World of Warcraft lua APIs. Some functions / systems are not included in the BlizzardInterfaceCode repo and need to be stubbed in manually, to add those see
undocumented.d.ts
.
Documentation
This project is still in its infancy. Once TWW launches I hope to have a solid v1 done and ready to use, including some documentation. Until then things are too in flux document.
FAQ
More Secure?
Ideally 😅. Mekanome interacts with WoW a little bit differently than Bastion does, in a way that I suspect (and may never be able to confirm) is "safer" from a detection standpoint. Not too long ago Blizzard checked in some code that seemed to be incrementing a count of binding usage whenever an action button was pressed or clicked. This could mean nothing, or it could mean that they intend to use this as some sort of detection method when comparing real players vs those using an unlocker like Tinkr since most rotations / bots will use the "CastSpellByName" function to cast their spells skipping the incrementation of this new binding usage count. If Blizzard sees a player with a bunch of successful spell casts, and a binding usage count that is wildly off that number it could look suspect.
Again though, we may never know if this is anything worth being worried about. Ive just decided to err on the side of caution.
So I have to bind all my spells?
All of the spells used by the rotations built with Mekanome require that the spell is on a default Blizzard UI action bar. They don't necessarily have to have a corresponding keybind -- since clicking a button will also increment its usage count -- but I'd suggest at least binding the rotations most used spells since a real human being cant really click buttons with the speed that Mekanome will run their corresponding bindings.
Wait, default UI?
Currently Mekanome will not work with action bars from ELVUI, Bartender, or similar addons. I use default action bars, and supporting these addons would require installing them and implementing handling for the additional action buttons they create. If someone wants to put in the effort to add that support I'd gladly approve their PR, I just don't really want to. Sorry!
Who is this for?
Developers who like typescript and developing rotations for Tinkr. I'll be including some rotations that I use as part of this package, but they'll be tailored to my needs and if you message me asking about them I'll just block you 💅.