summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md285
1 files changed, 160 insertions, 125 deletions
diff --git a/README.md b/README.md
index 1e4c6aa41..0b4257b3b 100644
--- a/README.md
+++ b/README.md
@@ -1,73 +1,80 @@
Hercules
========
-Build Status:
-[![Build Status](https://travis-ci.org/HerculesWS/Hercules.svg)](https://travis-ci.org/HerculesWS/Hercules)
+Build Status:
+[![Build Status](https://travis-ci.org/HerculesWS/Hercules.svg?branch=master)](https://travis-ci.org/HerculesWS/Hercules)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/cm9xbwurpbltqjop?svg=true)](https://ci.appveyor.com/project/Haru/hercules)
[![Coverity Scan Build Status](https://scan.coverity.com/projects/3892/badge.svg)](https://scan.coverity.com/projects/herculesws-hercules)
+[![GitLab Build Status](https://gitlab.com/HerculesWS/Hercules/badges/master/build.svg)](https://gitlab.com/HerculesWS/Hercules/commits/master)
+[![Coverage Report](https://gitlab.com/HerculesWS/Hercules/badges/master/coverage.svg)](https://gitlab.com/HerculesWS/Hercules/commits/master)
+[![Code Quality: Cpp](https://img.shields.io/lgtm/grade/cpp/g/HerculesWS/Hercules.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/HerculesWS/Hercules/context:cpp)
+[![Total Alerts](https://img.shields.io/lgtm/alerts/g/HerculesWS/Hercules.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/HerculesWS/Hercules/alerts)
-Issues and pull requests:
+Issues and pull requests:
[![Open Issues](https://img.shields.io/github/issues-raw/HerculesWS/Hercules.svg?label=Open%20Issues)](https://github.com/HerculesWS/Hercules/issues)
-[![Issues in progress](https://badge.waffle.io/HerculesWS/Hercules.svg?label=status%3Aconfirmed&title=In%20Progress)](https://waffle.io/HerculesWS/Hercules)
-[![Ready PRs](https://badge.waffle.io/HerculesWS/Hercules.svg?label=status%3Aready&title=Ready%20PRs)](https://waffle.io/HerculesWS/Hercules)
+[![Open Pull Requests](https://img.shields.io/github/issues-pr-raw/HerculesWS/Hercules.svg?label=Open%20Pull%20Requests)](https://github.com/HerculesWS/Hercules/pulls)
-Development and Community:
-[![GitHub Repository](https://img.shields.io/badge/github-HerculesWS/Hercules-green.svg)](https://github.com/HerculesWS/Hercules)
-[![Waffle Board](https://img.shields.io/badge/waffle-HerculesWS/Hercules-6699dd.svg)](https://waffle.io/HerculesWS/Hercules)
-[![IRC](https://img.shields.io/badge/IRC-Rizon/Hercules-yellow.svg)](irc://rizon.net/Hercules)
+Development and Community:
+[![GitHub Repository](https://img.shields.io/badge/github-HerculesWS/Hercules-green.svg?logo=github)](https://github.com/HerculesWS/Hercules)
[![Community Forum](https://img.shields.io/badge/forum-herc.ws-orange.svg)](http://herc.ws)
-[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/HerculesWS/Hercules)
-[![Twitter](https://img.shields.io/badge/twitter-@HerculesWS-blue.svg)](https://twitter.com/HerculesWS)
+[![IRC](https://img.shields.io/badge/IRC-Rizon/Hercules-yellow.svg)](irc://rizon.net/Hercules)
+[![Discord](https://img.shields.io/badge/discord-Hercules%20Emulator-7289da.svg)](https://discord.gg/rqCxS8p)
+[![Twitter](https://img.shields.io/badge/twitter-@HerculesWS-blue.svg?logo=twitter)](https://twitter.com/HerculesWS)
-Project Info:
+Project Info:
+[![Release](https://img.shields.io/github/release/HerculesWS/Hercules.svg)](https://github.com/HerculesWS/Hercules/releases)
![Language](https://img.shields.io/badge/language-C-yellow.svg)
[![License](https://img.shields.io/badge/license-GPLv3-663399.svg)](https://github.com/HerculesWS/Hercules/blob/master/LICENSE)
+[![GitHub contributors](https://img.shields.io/github/contributors/HerculesWS/Hercules.svg)](https://github.com/HerculesWS/Hercules/graphs/contributors)
Table of Contents
---------
-* 1 What is Hercules?
-* 2 Prerequisites
-* 3 Installation
-* 4 Troubleshooting
-* 5 Helpful Links
-* 6 More Documentation
-
-What is Hercules?
+1. [What is Hercules?](#what-is-hercules)
+2. [Prerequisites](#prerequisites)
+3. [Installation](#installation)
+4. [Troubleshooting](#troubleshooting)
+5. [Helpful Links](#helpful-links)
+6. [More Documentation](#more-documentation)
+
+
+## What is Hercules?
-----------------
Hercules is a collaborative software development project revolving around the
-creation of a robust massively multiplayer online role playing game (MMORPG)
+creation of a robust Massively Multiplayer Online Role-Playing Game (MMORPG)
server package. Written in C, the program is very versatile and provides NPCs,
warps and modifications. The project is jointly managed by a group of
volunteers located around the world as well as a tremendous community providing
QA and support. Hercules is a continuation of the original Athena project.
-Prerequisites
+## Prerequisites
-------------
-Before installing Hercules there are certain tools and applications you will
-need. This differs between the varying operating systems available, so the
-following is broken down into Windows and Unix (incl. Linux) prerequisites.
+Before installing Hercules, you will need to install certain tools and applications.
+This differs between the varying Operating Systems available, so the
+following list is broken down into Windows and Unix (incl. Linux) prerequisites.
+
+For a list of supported platforms, please refer to the [Supported Platforms](https://github.com/HerculesWS/Hercules/wiki/Supported-Platforms) wiki page.
#### Windows
- - Git client
- - MySQL-compatible server ([MySQL Community Edition](https://www.mysql.com/products/community/) or [MariaDB](https://mariadb.org/))
- - Microsoft Visual Studio ([Version 2010 through 2015](https://www.visualstudio.com/))
+ - [Git client](https://git-scm.com/)
+ - [Microsoft Visual Studio Community](https://visualstudio.microsoft.com/vs/community/)
#### Unix/Linux/BSD (names of packages may require specific version numbers on certain distributions)
- git
- - gcc or clang (version 4.1 or newer, recommended 4.8 or newer)
+ - gcc or clang (version 4.5 or newer, recommended 5.0 or newer)
- GNU make
- - mysql (mysql-server)
- - libmysqlclient (mysql-devel)
- - zlib (zlib-devel)
- - libpcre (pcre-devel) *optional*
+ - MySQL (`mysql-server`) or MariaDB
+ - libmysqlclient (`mysql-devel`)
+ - zlib (`zlib-devel`)
+ - libpcre (`pcre-devel`)
- *Optional dependencies for development only*
- - perl (required to rebuild the HPM Hooks and HPMDataCheck or to regenerate the mobdb sql table)
+ - perl (required to rebuild the HPM Hooks and HPMDataCheck)
+ - requires the XML::Simple module, which in turn requires libexpat-dev
- Doxygen (required to rebuild the HPM Hooks and HPMDataCheck)
#### Mac OS X
- - Xcode
- - MySQL-compatible server (installation of mysql or mariadb through [Homebrew](http://brew.sh/) is recommended)
- - libpcre (pcre-devel) *optional*
+ - Xcode or the Xcode command-line tools.
+ - MySQL-compatible server (installation of `mysql` or `mariadb` through [Homebrew](http://brew.sh/) is recommended)
+ - PCRE library (installation of `pcre` through [Homebrew](http://brew.sh) is recommended)
- *Optional dependencies for development only*
- Doxygen (required to rebuild the HPM Hooks and HPMDataCheck)
@@ -75,136 +82,164 @@ following is broken down into Windows and Unix (incl. Linux) prerequisites.
- MySQL GUI clients
- [MySQL Workbench](http://www.mysql.com/downloads/workbench/) (cross-platform)
- [HeidiSQL](http://www.heidisql.com/) (Windows)
+ - [DBeaver](http://dbeaver.jkiss.org/) (cross-platform)
- [Sequel Pro](http://www.sequelpro.com/) (Mac OS X)
- - Git clients
+ - *More options available at [mariadb.com](https://mariadb.com/kb/en/library/graphical-and-enhanced-clients/)*
+ - GUI Git clients
+ - [GitHub Desktop](https://desktop.github.com/) (cross-platform)
+ - [GitKraken](https://www.gitkraken.com/git-client) (cross-platform)
+ - [SmartGit](https://www.syntevo.com/smartgit/) (cross-platform)
- [Atlassian SourceTree](https://www.sourcetreeapp.com/) (Windows, Mac OS X)
- - [TortoiseGit](https://tortoisegit.org/) (Windows)
+ - *More options available at [git-scm.com](https://git-scm.com/downloads/guis)*
+ - Text editors with syntax highlighting
+ - [Visual Studio Code](https://code.visualstudio.com) (cross-platform)
+ - [Atom](https://atom.io) (cross-platform)
+ - [Notepad++](https://notepad-plus-plus.org) (Windows)
+ - *More options available at [wikipedia.org](https://en.wikipedia.org/wiki/Comparison_of_text_editors#Overview)*
-Installation
+## Installation
------------
-This section is a very brief set of installation instructions. For more concise guides
-relevant to your Operation System, please refer to the Wiki (links at the end of this file).
+This section is a very brief set of installation instructions. For more concise
+guides relevant to your Operation System, please refer to the Wiki (links at
+the end of this file).
#### Windows
+##### Easy installation
+ 1. Install the prerequisites.
+ 2. Clone the [Hercules repository](https://github.com/HerculesWS/Hercules) using a git client, into a new
+ folder.
+ - If you do not want to use the command line, you can instead clone with [GitHub Desktop](https://desktop.github.com/).
+ 3. Run `mariadb.bat` to automatically install and configure MariaDB.
+ 4. Start Visual Studio and load the provided solution:
+ - Compile and run the three projects, login-server, char-server, map-server.
+##### Manual installation
1. Install the prerequisites.
- 2. Clone the Hercules repository (see [GitHub](https://github.com/HerculesWS/Hercules)) using a git client, into a new folder.
- 3. Connect to the MySQL server as root:
- - Create a database (hercules): `CREATE DATABASE hercules;`
- - Create a user (hercules): `CREATE USER 'hercules'@'localhost' IDENTIFIED BY 'password';`.
- - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON \`hercules\`.* TO 'hercules'@'localhost';`
- 4. Connect to the MySQL server as the new user:
- - Import the .sql files in /sql-files/ into the new database.
- 5. Start Visual Studio and load the provided solution:
- - Compile and run the three projects, login-server, char-server, map-server.
+ 2. Install a MySQL-compatible server, such as [MariaDB](https://mariadb.org/) (recommended) or [MySQL Community Edition](https://www.mysql.com/products/community/)
+ 3. Clone the Hercules repository [Hercules repository](https://github.com/HerculesWS/Hercules) using a git client, into a new
+ folder.
+ 4. Connect to the MySQL server as root:
+ - Create a database (hercules): `CREATE DATABASE hercules;`
+ - Create a user (hercules): `CREATE USER 'hercules'@'localhost' IDENTIFIED BY 'password';`.
+ - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON hercules.* TO 'hercules'@'localhost';`
+ 5. Connect to the MySQL server as the new user:
+ - Import the .sql files in /sql-files/ into the new database.
+ 6. Start Visual Studio and load the provided solution:
+ - Compile and run the three projects, login-server, char-server, map-server.
#### Unix
1. Install the prerequisites through your distribution's package manager
- - (Red Hat compatible / CentOS) `yum install gcc make mysql mysql-devel mysql-server pcre-devel zlib-devel git`
- - (Debian compatible) `apt-get install gcc make libmysqlclient-dev zlib1g-dev libpcre3-dev mysql-server git`
- - (FreeBSD) `pkg install clang35 gmake mysql56-server mysql-connector-c pcre git`
- - (Mac OS X):
- - Install Xcode through the Mac App Store
- - Initialize the build tools through the Terminal `xcode-select --help`
- - Install Homebrew as described on the project page
- - Install MySQL: `brew install mysql`
+ - (Red Hat compatible / CentOS) `yum install gcc make mysql mysql-devel mysql-server pcre-devel zlib-devel git`
+ - (Debian compatible) `apt-get install gcc make libmysqlclient-dev zlib1g-dev libpcre3-dev mysql-server git`
+ - (FreeBSD) `pkg install clang35 gmake mysql56-server mysql-connector-c pcre git`
+ - (Mac OS X):
+ - Install Xcode through the Mac App Store
+ - Initialize the build tools through the Terminal `xcode-select --help`
+ - Install Homebrew as described on the project page
+ - Install the other prerequisites: `brew install mysql pcre`
2. Clone the Hercules repository `git clone https://github.com/HerculesWS/Hercules.git ~/Hercules`
3. Configure the MySQL server and start it.
4. Connect to the MySQL server as root:
- - Create a database (hercules): `CREATE DATABASE hercules;`
- - Create a user (hercules): `CREATE USER 'hercules'@'localhost' IDENTIFIED BY 'password';`.
- - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON \`hercules\`.* TO 'hercules'@'localhost';`
+ - Create a database (hercules): `CREATE DATABASE hercules;`
+ - Create a user (hercules): `CREATE USER 'hercules'@'localhost' IDENTIFIED BY 'password';`.
+ - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON hercules.* TO 'hercules'@'localhost';`
5. Connect to the MySQL server as the new user:
- - Import the .sql files in /sql-files/ into the new database.
+ - Import the .sql files in /sql-files/ into the new database.
6. Enter the Hercules directory and configure/build Hercules
- - `./configure`
- - `make clean && make sql` (on FreeBSD, replace `make` with `gmake`)
+ - `./configure`
+ - `make clean && make sql` (on FreeBSD, replace `make` with `gmake`)
7. Start the three servers login-server, char-server, map-server.
-Troubleshooting
+## Troubleshooting
---------------
If you're having problems with starting your server, the first thing you should
-do is check what's happening on your consoles. More often that not, all support
+do is check what's happening on your consoles. More often than not, all support
issues can be solved simply by looking at the error messages given.
Examples:
* You get an error on your map-server_sql that looks something like this:
- [Error]: npc_parsesrcfile: Unable to parse, probably a missing or extra TAB in
- file 'npc/custom/jobmaster.txt', line '17'. Skipping line...
- * w1=prontera,153,193,6 script
- * w2=Job Master
- * w3=123,{
- * w4=
-
- If you look at the error, it's telling you that you're missing (or have an extra) TAB.
- This is easily fixed by looking at this part of the error: * w1=prontera,153,193,6 script
- If there was a TAB where it's supposed to be, that line would have prontera,153,193,6 at w1
- and 'script' at w2. As there's a space instead of a TAB, the two sections are read as a
- single parameter.
+```
+[Error]: npc_parsesrcfile: Unable to parse, probably a missing or extra TAB in file 'npc/custom/jobmaster.txt', line '17'. Skipping line...
+ * w1=prontera,153,193,6 script
+ * w2=Job Master
+ * w3=2_F_MAGICMASTER,{
+ * w4=
+```
+
+ If you look at the error, it's telling you that you're missing (or have an
+ extra) TAB. This is easily fixed by looking at this part of the error:
+ `* w1=prontera,153,193,6 script`.
+ If there was a TAB where it's supposed to be, that line would have
+ `prontera,153,193,6` at w1 and `script` at w2. As there's a space instead of a
+ TAB, the two sections are read as a single parameter.
* You have a default user/password warning similar to the following:
-
- [Warning]: Using the default user/password s1/p1 is NOT RECOMMENDED.
- [Notice]: Please edit your 'login' table to create a proper inter-server user/pa
- ssword (gender 'S')
- [Notice]: and then edit your user/password in conf/map-server.conf (or conf/impo
- rt/map_conf.txt)
- Relax. This is just indicating that you're using the default username and password. To
- fix this, check over the part in the installation instructions relevant to the `login` table.
+```
+[Warning]: Using the default user/password s1/p1 is NOT RECOMMENDED.
+[Notice]: Please edit your 'login' table to create a proper inter-server user/password (gender 'S')
+[Notice]: and then edit your user/password in conf/map-server.conf (or conf/import/map_conf.txt)
+```
+
+ Relax. This is just indicating that you're using the default username and password. To
+ fix this, check over the part in the installation instructions relevant to the `login` table.
* Your Map Server says the following:
- [Error]: make_connection: connect failed (socket #2, error 10061: No connection
- could be made because the target machine actively refused it.
- )!
+```
+[Error]: make_connection: connect failed (socket #2, error 10061: No connection could be made because the target machine actively refused it.)!
+```
- If this shows up on the map server, it generally means that there is no Char Server available
- to accept the connection.
+ If this shows up on the map server, it generally means that there is no Char
+ Server available to accept the connection.
-Helpful Links
+## Helpful Links
-------------
-The following list of links point to various help files within the GIT, articles or
-pages on the Wiki or topics within the Hercules forum.
+The following list of links point to various help files within the repository,
+articles or pages on the Wiki or topics within the Hercules forum.
-* Hercules Forums
- http://herc.ws/board/
+* Hercules Forums:
+ http://herc.ws/board/
-* Hercules Wiki
- http://herc.ws/wiki/Main_Page
+* Hercules Wiki:
+ http://herc.ws/wiki/Main_Page
-* GIT Repository URL:
- https://github.com/HerculesWS/Hercules
+* Git Repository URL:
+ https://github.com/HerculesWS/Hercules
-* Hercules IRC Channel
- irc.rizon.net
- Channel: #Hercules
+* Hercules IRC Channel:
+ Network: `irc.rizon.net`
+ Channel: `#Hercules`
-
-More Documentation
+## More Documentation
------------------
-Hercules has a large collection of help files and sample NPC scripts located in /doc/
-
-* Scripting
- It is recommended to look through /doc/script_commands.txt for help, pointers or
- even for ideas for your next NPC script. Most script commands have a usage example.
-
-* @commands
- In-game, Game Masters have the ability to use Atcommands (@) to control players,
- create items, spawn mobs, reload configuration files and even control the weather.
- For an in-depth explanation, please see /doc/atcommands.txt
-
-* Permissions
- The Hercules emulator has a permission system that enables certain groups of players
- to perform certain actions, or have access to certain visual enhancements or in-game
- activity. To see what permissions are available, they are detailed in /doc/permissions.txt
-
-There are more files in the /doc/ directory that will help you to create scripts or update the
-mapcache, or even explain how the job system and item bonuses work. Before posting a topic asking
-for help on the forums, we recommend that all users take the time to look over this directory.
+Hercules has a large collection of help files and sample NPC scripts located in
+/doc/
+
+### Scripting
+It is recommended to look through /doc/script_commands.txt for help, pointers or
+even for ideas for your next NPC script. Most script commands have a usage
+example.
+
+### `@commands`
+In-game, Game Masters have the ability to use Atcommands (`@`) to control
+players, create items, spawn mobs, reload configuration files and even control
+the weather. For an in-depth explanation, please see /doc/atcommands.txt
+
+### Permissions
+The Hercules emulator has a permission system that enables certain groups of
+players to perform certain actions, or have access to certain visual
+enhancements or in-game activity. To see what permissions are available, they
+are detailed in /doc/permissions.md
+
+### Others
+There are more files in the /doc/ directory that will help you to create scripts
+or update the mapcache, or even explain how the job system and item bonuses
+work. Before posting a topic asking for help on the forums, we recommend that
+all users take the time to look over this directory.