A website to view your AzerothCore server's characters
Report a Bug
·
Suggest a Feature
·
Ask a Question
·
Demo
Table of Contents
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!
- Node.js
- An AzerothCore-based server database
- (Optional) Docker
- Clone the repository:
- With HTTPS:
OR
git clone https://github.com/r-o-b-o-t-o/azerothcore-armory.git
- With SSH:
git clone git@github.com:r-o-b-o-t-o/azerothcore-armory.git
- With HTTPS:
- Install the dependencies:
cd azerothcore-armory/ npm install - Configure the application: copy
config.default.jsontoconfig.jsonor.env.exampleto.envand 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.
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 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 |
Build the application:
npm run buildStart the application:
npm startOpen a web browser and navigate to http://localhost:48733
Other useful npm scripts:
npm run clean: cleans the build directorynpm run watch: watches for changes and rebuilds automatically, useful for developmentnpm run cleardata: clears the data downloaded for the 3D model viewer
You can also use Docker, simply use docker-compose:
cd azerothcore-armory/
docker-compose up -dNote: the Docker version supports only the .env file for configuration, not config.json
You might want to integrate the application directly into your existing website using an iframe.
- Set
iframeMode.enabledtotruein your configuration. - Set
iframeMode.urlin your configuration to the URL in your website that the armory will be accessible from (the page hosting theiframe). - Embed the code snippet below into your page.
Make sure you replace the URLhttp://localhost:48733with your Armory's URL (the same URL asiframeMode.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>This repository is used in production over at ChromieCraft, check it out there!
- Characters list / search page
- Character page
- Online/offline status
- Equipment with tooltips
- 3D model, including mounts and transmogrifications
- Talent trees, including glyphs and dual spec support
- Achievements
- PvP statistics, including arena teams
- Statistics (from the achievements panel in-game)
- Reputations
- Stats (from the character sheet, i.e. health, mana, etc)
- Guild page
- Guild emblem
- Members list
- PvE statistics
- Multiple realms support
- PvE ladder
- PvP ladder
- Arena ladder
- Achievements ladder
See the open issues for a list of suggested features and known issues.
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.
⭐️ Give the project a star if you like it!
Distributed under the MIT License. See the LICENSE file for more information.




