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 [email protected]: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.json
toconfig.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.
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 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 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 -d
Note: 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
.enabled
totrue
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 theiframe
). - Embed the code snippet below into your page.
Make sure you replace the URLhttp://localhost:48733
with 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/[email protected]/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.