Code Monkey home page Code Monkey logo

azerothcore-armory's Introduction

Stargazers Forks Issues MIT License

AzerothCore Armory

A website to view your AzerothCore server's characters
Report a Bug · Suggest a Feature · Ask a Question · Demo

Table of Contents
  1. About
  2. Getting Started
  3. Usage
  4. Features
  5. Contributing
  6. Show your Support
  7. License
  8. 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 Character page Character talents Character achievements Guild page

Built With

(back to top)

Getting Started

Prerequisites

Installation

  1. Clone the repository:
    • With HTTPS:
       git clone https://github.com/r-o-b-o-t-o/azerothcore-armory.git
      OR
    • With SSH:
       git clone [email protected]:r-o-b-o-t-o/azerothcore-armory.git
  2. Install the dependencies:
    cd azerothcore-armory/
    npm install
  3. 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.
  4. Download the model viewer's data:
    • Download from script:
       npm run build
       npm run fetchdata
      OR
    • Download the latest archive (data.zip) 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://wotlkdb.com" 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
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 fetchdata: downloads the data needed by the 3d model viewer
  • 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.

  1. Set iframeMode.enabled to true in your configuration.
  2. Set iframeMode.url in your configuration to the URL in your website that the armory will be accessible from (the page hosting the iframe).
  3. 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/[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>

Demo

This repository is used in production over at ChromieCraft, check it out there!

(back to top)

Features

  • Characters list / search page
  • Character page
    • Online/offline status
    • Equipment with tooltips
    • 3d model, including mounts
    • 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

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!

Buy Me a Coffee at ko-fi.com

(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#9185

(back to top)

azerothcore-armory's People

Contributors

dependabot[bot] avatar helias avatar r-o-b-o-t-o avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

nicedeluxes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.