Table of Contents
-
About
-
Getting Started
-
Usage
- Features
- Contributing
- Show your Support
- License
- Contact
About
AzerothCore-Armory is a website that enables you to view your AzerothCore server's characters and guilds.
At the time I started working on this project (end of 2021), there were virtually no modern and public/open-source armory projects.
I also noticed that such a tool was frequently requested in the AzerothCore Discord server, so I decided to make one. Hope you like it!
View screenshots
![Main page](readme/img/index.png)
![Character page](readme/img/cayla.png)
![Character talents](readme/img/talents.png)
![Character achievements](readme/img/achievements.png)
![Guild page](readme/img/guild.png)
Built With
(back to top)
Getting Started
Prerequisites
Installation
- Clone the repository:
- Install the dependencies:
cd azerothcore-armory/
npm install
- Configure the application: copy
config.default.json
to config.json
or .env.example
to .env
and edit the resulting file.
See the Configuration Reference below for a description of all values.
- Download the model viewer's data from the Releases page and extract it to the
data/
directory.
Configuration Reference
Main configuration
| config.json | .env | Type | Default value | Description |
|--------------------------------|----------------------------------------------------|-------------------------------|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `aowowUrl` | `ACORE_ARMORY_AOWOW_URL` | String | `"https://wowgaming.altervista.org/aowow"` | The URL of the AoWoW database to use for tooltips and links |
| `websiteUrl` | `ACORE_ARMORY_WEBSITE_URL` | String | `"https://mywebsite.com"` | Your website's URL. Used to redirect to the homepage on error pages |
| `websiteName` | `ACORE_ARMORY_WEBSITE_NAME` | String | `"My Website"` | Your website's name. Displayed in the redirect button on error pages |
| `websiteRoot` | `ACORE_ARMORY_WEBSITE_ROOT` | String | `""` | The root of your armory's URL. If your armory is hosted on, for example, `http://mywebsite.com/azerothcore-armory`, the `websiteRoot` value should be `"/azerothcore-armory"` |
| `iframeMode` | `ACORE_ARMORY_IFRAME_MODE__`... | Object | | Settings for the iframe mode |
| `iframeMode.enabled` | `ACORE_ARMORY_IFRAME_MODE__ENABLED` | Boolean | `false` | Set to `true` if you want to embed the armory in an iframe |
| `iframeMode.url` | `ACORE_ARMORY_IFRAME_MODE__URL` | String | `"https://mywebsite.com/armory"` | Set this to the URL of the page that hosts the `iframe` |
| `loadDbcs` | `ACORE_ARMORY_LOAD_DBCS` | Boolean | `true` | Loads the DBC data from the `data` directory into memory when starting up. It is highly recommended to set this to `true`. Only use `false` to keep memory usage low, on a test server for example |
| `hideGameMasters` | `ACORE_ARMORY_HIDE_GAME_MASTERS` | Boolean | `true` | Hides Game Master characters if set to `true`. They will not be found in the search page, and their character pages will show a 404 error |
| `transmogModule` | `ACORE_ARMORY_TRANSMOG_MODULE` | Boolean | `false` | Set this to `true` if your server uses the [transmogrification module](https://github.com/azerothcore/mod-transmog) and you want to display the transmogrified items on the 3D model |
| `useZamCdn` | `ACORE_ARMORY_USE_ZAM_CDN` | Boolean | `false` | Set this to `true` to use the ZAM network CDN for the 3D model viewer instead of the assets in your local `data` folder |
| `realms` | `ACORE_ARMORY_REALMS__`... | Array of objects | | An array of realm configurations |
| `realms[0].name` | `ACORE_ARMORY_REALMS__0__NAME` | String | `"AzerothCore"` | The name of the realm. Will be used in the URLs, shown on the character pages and in the search page if you have multiple realms |
| `realms[0].realmId` | `ACORE_ARMORY_REALMS__0__REALM_ID` | Number | `1` | The realm's ID, this must match the `id` column of the `realmlist` table in the auth database |
| `realms[0].authDatabase` | `ACORE_ARMORY_REALMS__0__AUTH_DATABASE` | String | `"acore_auth"` | The name of the auth database |
| `realms[0].charactersDatabase` | `ACORE_ARMORY_REALMS__0__CHARACTERS_DATABASE__`... | Database configuration object | | Configuration for the characters database. See "Database configuration" below |
| `worldDatabase` | `ACORE_ARMORY_WORLD_DATABASE__`... | Database configuration object | | Configuration for the world database. This is shared between all realms at the moment. See "Database configuration" below |
| `dbQueryTimeout` | `ACORE_ARMORY_DB_QUERY_TIMEOUT` | Number | `10000` | The maximum duration in milliseconds of a database query before it times out |
Database configuration
| config.json | .env | Type | Default value | Description |
|-------------|---------------|--------|---------------|------------------------------------------------|
| `host` | ...`HOST` | String | `"localhost"` | The hostname or IP address of the MySQL server |
| `port` | ...`PORT` | Number | `3306` | The port that the MySQL server runs on |
| `user` | ...`USER` | String | `acore` | The MySQL user used to connect to the database |
| `password` | ...`PASSWORD` | String | `acore` | The password for the specified MySQL user |
| `database` | ...`DATABASE` | String | | The name of the MySQL database |
(back to top)
Usage
Build the application:
npm run build
Start the application:
npm start
Open a web browser and navigate to http://localhost:48733
Other useful npm scripts:
npm run clean
: cleans the build directory
npm run watch
: watches for changes and rebuilds automatically, useful for development
npm run cleardata
: clears the data downloaded for the 3D model viewer
With Docker
You can also use Docker, simply use docker-compose
:
cd azerothcore-armory/
docker-compose up -d
Note: the Docker version supports only the .env
file for configuration, not config.json
With an iframe
You might want to integrate the application directly into your existing website using an iframe
.
- Set
iframeMode
.enabled
to true
in your configuration.
- Set
iframeMode
.url
in your configuration to the URL in your website that the armory will be accessible from (the page hosting the iframe
).
- Embed the code snippet below into your page.
Make sure you replace the URL http://localhost:48733
with your Armory's URL (the same URL as iframeMode
.url
) at the end of the code snippet.
Click to expand embed code
<style>
#armory-iframe {
/*
* Using min-width to set the width of the iFrame, works around an issue in iOS that can prevent the iFrame from sizing correctly.
* See: https://github.com/davidjbradshaw/iframe-resizer
*/
width: 1px;
min-width: 100%;
border: none;
}
</style>
<iframe id="armory-iframe"></iframe>
<script type="application/javascript" src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.2/js/iframeResizer.min.js"></script>
<script type="application/javascript">
let resizeSetup = false;
window.addEventListener("message", (ev) => {
if (ev.data.url !== undefined) {
const url = ev.data.url.trim().replace(/^\//, "");
window.history.replaceState(null, null, url === "" ? window.location.pathname : ("?" + url));
} else if (ev.data === "contentLoaded") {
if (!resizeSetup) {
iFrameResize({ checkOrigin: false, autoResize: true }, "#armory-iframe");
resizeSetup = true;
} else {
document.getElementById("armory-iframe").iFrameResizer.resize();
}
}
});
const iframe = document.getElementById("armory-iframe");
const url = window.location.search.replace(/^\?/, "");
iframe.src = "http://localhost:48733/" + url;
</script>
Demo
This repository is used in production over at ChromieCraft, check it out there!
(back to top)
Features
- [X] Characters list / search page
- [X] Character page
- [X] Online/offline status
- [X] Equipment with tooltips
- [X] 3D model, including mounts and transmogrifications
- [X] Talent trees, including glyphs and dual spec support
- [X] Achievements
- [X] PvP statistics, including arena teams
- [ ] Statistics (from the achievements panel in-game)
- [ ] Reputations
- [ ] Stats (from the character sheet, i.e. health, mana, etc)
- [X] Guild page
- [X] Guild emblem
- [X] Members list
- [ ] PvE statistics
- [X] Multiple realms support
- [ ] PvE ladder
- [ ] PvP ladder
- [X] Arena ladder
- [ ] Achievements ladder
See the open issues for a list of suggested features and known issues.
(back to top)
Contributing
Any and all contributions are greatly appreciated.
If you have a suggestion that would make this project better, feel free to fork the repository and create a Pull Request. You can also open a Feature Request.
(back to top)
Show your Support
⭐️ Give the project a star if you like it!
(back to top)
License
Distributed under the MIT License. See the LICENSE
file for more information.
(back to top)
Contact
Feel free to get in touch with me on Discord: roboto_
(back to top)