Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 03/06/15 in Wiki Articles

  1. MUCH OF THE INFORMATION FOUND WITHIN IS NO LONGER VALID AND OUT OF DATE Hello, in this tutorial, I will explain a step-by-step approach to configure, install and run Mangos on a Ubuntu 16.04 LTS system. To fully execute the installation, you need an original copy of the game client version you want to run. This guide has been fully tested on an empty Ubuntu 16.04 LTS system with minimal installation. Let's go.. Setup the database: Ubuntu is supporting MySQL by default. This part of the guide will help you to setup your instance of MySQL. Launch a terminal, and if it's not already the case, you need to become the 'root' user: sudo su - root Then, install MySQL, enter your root password when you will be prompted for: apt-get -y install mysql-server Once MySQLis installed, start it: systemctl start mysql I do advise you to add Mysql service at startup to execute it automatically: systemctl enable mysql Let's secure your mysql installation, execute the following command: mysql_secure_installation I advise you to setup the following parameters: Do not enforce the use of the password plugin Do not change the root password Remove anonymous access Disable remote access for the root user Remove the test database Reload the privileges Now that the setup of the database is done, we need to add the prerequisites for the mangos database configuration. We need to start by creating an user for mangos, login to the database using: mysql -u root -p Create the user you wish, the example given is creating an user 'mangos' who can connect from the 'localhost' and has the password 'password' (do not forget the ';') at the end: CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'password'; We then need to grant privileges to that user that we can use it later to setup the Mangos schemas (again, do not forget the ';' symbol): GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost'; Exit the terminal: quit Congratulations, you have setup the pre-requisites for the database on Ubuntu ! Install Mangos: We are now at the interesting part, how do we install Mangos on Ubuntu ? Well, assuming you are logged in as 'root', go to the home directory: cd ~ Now, we can download our installer: wget https://raw.githubusercontent.com/mangoszero/server/master/linux/getmangos.sh Set the permissions to be allowed to execute it: chmod 700 getmangos.sh And execute it: ./getmangos.sh Before we go further, some explanations on the available activities: Install Prerequisites will install all the necessary dependencies for you to build & run mangos. Toggled by default. Set Download And Install Paths will allow you to specify where the sources must be downloaded and where the binaries must be installed. Toggled by default. Clone Source repositories will help you cloning the Mangos sources. Toggled by default. Build MaNGOS will assist you in the building process of MaNGOS. Toggled by default. Install MaNGOS will help you installing MaNGOS. Toggled by default. Install Databases will assist you in the database schemas creation. Toggled by default. Extract Resources will help you to extract the DBC, maps, mmaps and vmaps from the game client. Toggled by default. Create Code::Blocks Project File will create a project for the Code::Blocks editor. Do not toggle this option if you don't plan to edit the MaNGOS sources. Now that you know everything, let the default options selected and select 'Ok' thanks to the Tab key. The script is now installing the necessary dependencies on your Ubuntu. You will be prompted to provide your agreement to install the build dependencies. Select 'Yes' two times. User selection: Mangos provides you the opportunity to run it under another user than the 'root' one. This is a good practice to isolate softwares and limit the security impact in case of an exploited vulnerability. The default proposed run user is 'mangos' but you can change if you wish. Select 'Ok' to continue. If you have already performed this step, the installer will ask you whether you want to keep that user. I advise you to reply 'Yes' except if you know what you are doing. Choose WoW Release: The next screen is requesting you to choose the WoW release you are willing to install. Select the one you that fits your wish and select 'Ok'. Source-Code Path: The next screen is asking you to provide the source path. By default, the proposed format is /home/<run user>/<wow version>/src. For instance, for a run user 'mangos' and a wow version 'Vanilla', the proposed path will be: /home/mangos/zero/src Reply 'Yes' to create the directory if it does not exist. If it does exist and contains sources, the installer will ask you whether you want to delete the content or not. Installation Path: The next screen is asking you to provide the installation path. This is the location from where you will execute the Mangos processes. By default, the proposed format is /home/<run user>/<wow version>. For instance, for a run user 'mangos' and a wow version 'Vanilla', the proposed path will be: /home/mangos/zero If it does exist and contains compiled sources, the installer will ask you whether you want to delete the content or not. Clone or update MaNGOS: The next step of the script is asking you whether you want to clone, update or use an existing copy of the MaNGOS sources. For a fresh installation, select the option '0 Clone a fresh copy of MaNGOS'. The installer will now connect to Github and check the available development branch, currently, the last stable release is the Rel21 and is hosted in the 'master' branch. The installer is now cloning the server and database repositories. Build Options: You are now at the build step. Some explanations over this screen: Enable Debug will setup debug flags and more tracing on Mangos. Use this build option only if you're requested to to fix a bug. Building a software in debug mode significantly reduces its performances. Use Standard Malloc, toggle this option to use the standard memory allocation. Untoggle this option only if you know what you are doing. Use External ACE libraries. Allows you to use the ACE libraries coming from your system. Untoggle this option only if you know what you are doing. Use PostgreSQL insteald of MySQL/MariaDB. Allows you to use another database provider than the default one. This option has not been tested and, if you have followed the tutorial so far, you should have setup MySQL 😉 Build Client Tools will build the extractors necessary to get dbc, maps, mmaps and vmaps out of the game client. Unselect this option only if you already have these resources extracted. Use SD3 will allow you to build the ScriptDev3 Engine provided with MaNGOS. We advise you to keep this option toggled except if you don't like living world based on C++ scripts. Use Eluna will allow you to build the Eluna Engine provided with MaNGOS. We advise you to keep this option toggled except if you don't like living world based on LUA scripts. Select 'Ok' to proceed with the build process and confirm that would want to build MaNGOS. The installer is now building MaNGOS. Depending on the speed of your system, you have the time to drink a glass of water or a cup of coffee. 🙂 Installation: You will now be prompted to install Mangos. Select 'Yes' to install it. Database Operations: Wait.. another database setup ?! Yes, but this time, we are populating the database with the mangos data. You have three options here: Install clean databases to setup a fresh database Update existing databases to update your old version of the database Skip database work... but it wouldn't make sense 🙂 Select the first option if you are performing a fresh installation. You will be prompted to select your type of database. If you followed the guide so far, you should select "MySQL". The installer will then request your database information, if you followed the guide, you need to provide the following input: Hostname: localhost Port: 3306 User: mangos Password: password You can now choose into several options: ReInstall the realm database, containing all the realms information and the accounts ReInstall the world database, containing all the world configuration ReInstall the characters database, containing all the characters information Update the realmlist to setup an initial game server By default, all options must be toggled. The installer will now perform the database import. Extract Game Data: This step will copy the extractors to the wow game location, extract dbc, maps, mmaps and vmaps and copy these extracted data to your installation directory. The installer will automatically look for a suitable WoW client into your /home directory. If it doesn't find anything, you will have to provide your game location path. If the provided path doesn't contain any game data, the installer will exit. The extractor steps allows you to select the artifacts you want to extract: DBC and Maps, which are the minimum set of data you need to extract Mmaps which are the movement maps, based on vectoriel calculation, required for an efficient pathfinding Vmaps which are the virtual maps, used for collision detection and LoS detection The Mmaps extraction is taking several hours, you will have the time to sleep or drink several coffees. 🙂 Congratulations ! You almost did it ! Still few steps to perform before you can play on your preferred game. First of all, you need to switch to your run user. If you used mangos, the command will look like: su - mangos You need then to go to the configuration directory of your installation, if you installed Vanilla, it will look like the following command: cd /home/mangos/zero/etc Copy the realmd.conf.dist and mangosd.conf.dist files to their expected name: cp realmd.conf.dist realmd.conf cp mangosd.conf.dist mangosd.conf Edit the realmd.conf and find the line LoginDatabaseInfo. Provide your database information, according to this guide and if you have installed Vanilla, it should look like: LoginDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_realm" Save your file and edit the file mangosd.conf. You need to provide the database information for the three database we have configured with our installer: LoginDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_realm" WorldDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_world" CharacterDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_characters" Save your file and go back to the 'root' user: exit Make sure it keeps running ! What could be cooler than having the MaNGOS server starting automatically with your server ? Not much... so let's configure systemd to do so ! First of all, we need to tell it that we have two new services. Declare them by creating the corresponding files: touch /etc/systemd/system/realmd.service touch /etc/systemd/system/mangosd.service # Or give it a better name like zero.service if it's a vanilla gaming server for instance. Now, edit the /etc/systemd/system/realmd.service file and add the following content (Replace the installation path and the run user by the settings you have provided during the installation): [Unit] Description=Realmd service After=network.target mysql.service [Service] Type=simple User=mangos ExecStart=/home/mangos/zero/bin/realmd -c /home/mangos/zero/etc/realmd.conf Restart=on-abort [Install] WantedBy=multi-user.target Save this file and edit the /etc/systemd/system/mangosd.service file (or the better name you gave to it) with the following content (same remark than above the installation path and the run user): [Unit] Description=WoW Vanilla service After=network.target mysql.service [email protected] [Service] Type=simple User=mangos ExecStart=/home/mangos/zero/bin/mangosd -c /home/mangos/zero/etc/mangosd.conf WorkingDirectory=/home/mangos/zero/bin StandardInput=tty TTYPath=/dev/tty3 TTYReset=yes TTYVHangup=yes Restart=on-abort [Install] WantedBy=multi-user.target We are almost there ! You now need to tell systemd to reload its configuration: systemctl daemon-reload And let's start our processes to verify that they work: systemctl start realmd systemctl start mangosd To verify that it worked, execute the following command: systemctl status realmd systemctl status mangosd If it's working properly, you should have an output indicating you the success status for both service. The last step is to tell systemd to execute them at startup, for this, execute the following commands: systemctl enable realmd systemctl enable mangosd Congratulations ! You are now done with the MaNGOS setup on Ubuntu 16.04 :-) You can now reboot your computer to verify that everything is indeed started: reboot
    3 points
  2. A Foreword by Unkle Nuke In the interest of continuing to give structure to how we work here at MaNGOS, I have republished our Standards And Practices, with modifications and updates by me as necessary while preserving the instruction and intent of the original. Some parts were scrapped entirely and rewritten by me to be more informative and current with the progress of time and the MaNGOS sources. This document, in another form, was originally published on the old MaNGOS web site. I don't have a bibliography as to whom the original author or authors were, but I strongly suspect TheLuda's involvement, at least. If any of our current members had a hand in this document or know who did, please feel free to message me with the details so I may give credit where it is due. We are all here because we have stood on the shoulders of giants. While it's focus is primarily on server core development with C++, much of what is presented here can be useful for all MaNGOS developers. I now call upon those masters of database and scripting to step forward and offer any recommendations to this document, so it may be as complete as possible. If anyone notices errors or omissions, please message me with any necessary corrections. This is an ever-evolving document, in keeping with changes to how we work and the technology with which we do that work. Somebody may want to mirror this in our wiki, too... Chapter 1, Page 1 "So You Want To Be A MaNGOS Dev?" Introduction While we here at MaNGOS do our utmost to extend a helping hand to those in need, there is never enough precious time to do everything that needs to be done. You can help us with that by making your best effort to help yourself. When you can learn the basics before jumping into things, it allows us more time to answer the really hard questions about MaNGOS development. What follows is one avenue where you can teach yourself some valuable fundamentals in how to be a MaNGOS Developer. The rest, and everything that follows, is built upon what you will now read. This is the official document outlining all the basic methodology for existing and prospective developers. It offers recommendations for everything from correctly configuring and using your Git client, to proper coding style for core patches, to submitting and reviewing code. All developers and patch contributors are strongly encouraged to read and adhere to these guidelines Of course, you're free to do as you wish, but it would be nice if you could work with us on this, especially if you want to work with us! The first thing you do should be to configure a name and email. By default, Git chooses a name based on the GECOS data (which is probably right) and a default email based on your login and hostname (which is almost certainly wrong). Best practices dictate using your real name and email here, not any other aliases you may have, but you may wish to use something other than your real name and personal e-mail if privacy or legal reasons warrant it. These fields will be immortalized in the repository history so make sure you get them right and use the identity by which you wish fame and glory to be heaped upon you. $ git config --global user.name Your Name $ git config --global user.email [email][email protected][/email]ess While you’re configuring, you may want to enable coloring for some commands: $ git config --global color.diff auto $ git config --global color.status auto $ git config --global color.branch auto $ git config --global color.interactive auto If you prefer to use an editor other than the default Vi, such as emacs in the example, specify it like this: $ git config --global core.editor emacs Finally, to properly handle line feeds between Windows and Linux, Windows users can use the following setting: $ git config --global core.autocrlf auto DOES NOT WORK ON CURRENT VERSION OF msysGit. Checking if this is due to a bug or changes to Git's config. It is NOT recommended to set autocrlf to "true" as this forces converting CRLF into LF, which has been known to cause issues. Linux users can set Git to automatically fix CRLF that can sometimes sneak in when a Windows user makes a commit by converting them into standard LF when making a commit: $ git config --global core.autocrlf input It is highly recommended to use a single coding style for the whole project source code. Exceptions are allowed for independent libraries used in the project, but it is generally advisable all contributors to use the style specified here. Failure to adhere to these standards can result in your submitted work being rejected until it has been brought into compliance. Tab Length All tabs used in code editing consist of four blank spaces. If your editor allows configuration of the <Tab> key, please set it to use four spaces. Otherwise, do not use the <Tab> key! Instead, use the <Space> key and type in four blank spaces manually. Tab lengths other than four blank spaces are unacceptable. The Microsoft Visual Studio C++ code editor has tabs set to four spaces by default. Line Length (or Width) Please use 80-column width, or 80 characters, for line length. This includes spaces and punctuation. If your line is longer than that, please split it into two or more lines. If it's sometimes a little longer, by just a few characters, then it may be permitted at the discretion of the Code Reviewer. If you're splitting text inside brackets { }, the continuing text should be indented to the position after the opening bracket. printf ("This is a example of how we split lines longer than 80 characters\n" "into several so that they won't exceed this limit.\n", max_sourcecode_width); If you have long strings, you can split them as shown above, just remember that C/C++ compilers will glue together several strings that come without any special characters between them into a single string. Brackets When writing C++ code, brackets are placed symmetrically, with the ending bracket lined up to the opening bracket. if (something) { some function ...; } else { some function ...; } switch (x) { case 1: printf ("X is one!\n"); break; case 2: { printf ("X is two!\n"); break; } } Every bracketed block moves its contents by one tab to right. Labels (but not case selectors!) and public:/private:/protected: C++ keywords are placed at the leftmost indented position for the current block, that is, in the same position where enclosing brackets are. Also please don't use brackets around a single statement because it clutters the code; use brackets only when using non-obvious constructs, like: if (foo) { if (foo) some function ...; } else some function ...; Also, please place one space before opening parenthesis. Before, but not after: ( the if( blah ) style is a no-no! ) (the if (blah) style is correct!) Following these few and simple formatting styles with your work for MaNGOS will ensure it is readable and easily understood by every developer on the project. To ensure proper generation of annotated code, please use DoxyGen style comments. This is a bit similar to JavaDoc comments and other automatic code documentation generators. Single-line documentation or comments should be placed following three slashes. ///This is a single line. I only had a brief thing to say regarding some code. Documentation and comments that require more than one line should be enclosed in a comment block, which consists of a slash and two asterisks to show the start while the end is indicated by one asterisk and a slash /** ... ... */. All lines between the comment block markers begin with a single asterisk *. Here's an example that shows most useful keywords you can use in a comment block: /** * This function does something very useful. If used with care, this function * has the potential to make your programs really really useful. * * \arg \c x * The x argument specifies a integer that is transformed into something useful. * \arg \c y * This argument, if not NULL, is a pointer to a free memory area where this * function will put something really really useful. * \return * A useful value, or NULL if error. * * Here is a example that you can paste into your code so that it saves you a * lot of typing: * * \verbatim * for (int x = 0; x < 100; x++) * printf ("DoSomethingUseful%d = %s\n", i, * DoSomethingUseful (i, &ScratchPad)); * \endverbatim * * Paragraphs are split from each other by inserting a empty line. Also some HTML * tags are supported, like <ol> [<li>...] </ol> and <ul> [<li>...] </ul> for * ordered (numbered) and unordered (dotted) lists respectively. */ char *DoSomethingUseful (int x, void *y); /// This is a one-line comment void Something (); For comments and documenting not intended for printing by DoxyGen, use normal comment markers (// and /* ... */). These can be notes to yourself or remarks meant only as part of the work in progress. In addition, when you comment-out a line or more of code to prevent it from being used in the source when compiled, use two slashes ( // )at the beginning of each line of code. This is useful for having code as a placeholder until the full function has been completed, a bug remains unresolved elsewhere that breaks your code, or you wish to place debug routines that are not used for normal execution. Please remember to also add a note that the code has been disabled and the reasons for this. Use the standard outlined above for documentation and comments when doing so. void WorldSession::HandleSetSheathedOpcode( WorldPacket & recv_data ) /* * This should fix the problem with weapons still being seen as sheathed by * the client. Should make players happy to know they can now use their * weapons in combat! * Once this has been reviewed, I can do some proper documenting. */ { uint32 sheathed; recv_data >> sheathed; //Uncomment the following only when debugging the function. //DEBUG_LOG( "WORLD: Recvd CMSG_SETSHEATHED Message guidlow:%u value1:%u", GetPlayer()->GetGUIDLow(), sheathed ); if(sheathed >= MAX_SHEATH_STATE) { sLog.outError("Unknown sheath state %u ??",sheathed); return; } GetPlayer()->SetSheath(SheathState(sheathed)); } Remember, use DoxyGen style markers when you want your comments and documentation to be printed out. Use standard markers for comments and documents you do not want printed by DoxyGen, but need to make notes about the code for yourself and other devs. Afterword by Unkle Nuke Git can be a challenge, especially for those who have been brainwashed by other version control methods like CVS or Subversion. Honestly, Git isn't that hard, once you let go of old ideas and embrace the concept that code can exist in an ever-changing state which can then be frozen in a snapshot of time for your review. I was once like you, a lost soul, but I was brought into the light! Even as I was shown the way, let me guide you to the holy texts and free your minds, brothers! If you need an introduction to Git, check out these resources. They're all free!: Try Git lets you learn how Git works by using it in your web browser. No software installation needed! Git's documentation page is where you can find the Git Pro Book, the Git Manual, and some introductory videos. And that's just for starters! The Git Pro Book, is also free to download in PDF, EPUB, or mobi formats. The Git Manual is also included with the Git client, as man pages, plain text, or HTML, depending on which platform you are running Git. While you're there, don't forget to download the cheat sheets, for quick access to Git's most commonly used commands and workflow at a glance. Too much more to list here. Give the entire site a good long look. The Git Reference is an online manual, similar to the Git Manual, but it focuses on actually working with and setting up Git. Kernel.org also has a mirror of the Git Manual Git Immersion is an online training course that promises to teach you the fundamentals in a "learn by doing" style. If you don't already have Git installed, they provide links to the client version you will need as the first step. Git Reference has a similar title to the official Git Reference, but it is meant to be a quick reference for learning and remembering the most important and commonly used Git commands. As you work through each section, every page will also link to more in-depth Git documentation and provide you with an immersive experience that lets you go as deep as you want. Git Magic is an excellent online book that I highly recommend everyone have on their virtual bookshelf. It has a practical, hands-on approach that teaches you how to use Git by the way you should use Git. Also available in PDF, simplified HTML, and as packages for Debian and Ubuntu (Actually a compressed, lightwieght copy of the web site itself for offline browsing. Did I say it was good, or what?). Ry's Git Tutorial is mapped out by subjects, in order from beginner to advanced. This one has to be among the best there is for this type of tutorial. Each lesson covers using Git in an actual project, by working with example code and patches on your very own Git repository! If the all the other books, docs, and tutorials just seem too confusing, I'm sure Ry's Git Tutorial is the one for you! Github Help covers just about every possible question, topic, fact, subject, method, and everything else related to using Github. You definitely want to save this web page in your browser! That should have you working with Git like a seasoned hacker in a very short time! That gives us more opportunity to help with the MaNGOS-specific problems you may encounter.
    3 points
  3. Goals for 2017 For 2017 the following are what we would like to achieve: Release Version 21 for Zero, One and Two containing all the recent updates and fixes we have. Release Version 21 for Three and Four - which will involve a massive amount of work to get these cores up to date. Redo the server commands to make them a bit more standard and obvious. Break out AHBot into its own daemon process Develop a mangos update daemon, which allows the ability to apply DB content and minor updates automatically Create Editors for the other xxxdocs systems (we currently only have a dbDoc Editor) Normalise the character DB and remove data blob fields Continue to standardise the code across the cores where its appropriate to do so. Document where it differs and why. Move some hardcoded values from the core into the DB, possibly some enums as well. Implement Stormlib library for Zero, One and Two and remove mlib Apply the Unified Extractor to Three and Four (requires stormlib) Look at removing DBC usage from the Core and change the extraction process to include importing into a DB for use by the core. Including Multiple locale support. This would facilitate the removal of stormlib / mlib from the core and only be needed by the extraction tools. Finish implementing the database localisation and allow localised db content to be loaded and edited. Including a localisation editor to allow localised translations to be created/edited by users. Look at Adapting EAI to match SAI functionality. As well as some of the more obvious ones: Clear down reported bugs on the Project Tracker. Improve the World Database with updates and corrections. Improve the Wiki Documentation. Include some example Eluna scripts to assist those starting out learning to script with Eluna. Include some custom Eluna scripts to help showcase it's abilities. Finally, we would like to get into a twice yearly Release cycle of more major releases. MangosVB (Formerly Spurious) RoadMap for 2017 Add RealmDB from c++ Mangos and modifying MangosVB to be compatible with it. Work out how to get MangosVB to use the standard Mangos map format. Finishing warden functionality (so it can use/read signatures from DB) Merge all of the changes from Zero to One and Two Investigate into voice functionality for One / Two Doing spells.. implementing them like stealth and getting a proper DB script system in place Getting it compiled and running under unix (using mono)
    3 points
  4. So you've found a bug you want to fix, or a feature you want to implement, thanks! If you follow this guide it will make it much easier for the community to review your changes, and the core team to get them included in the next release. If you need an introduction to git, check out the tutorial and Everyday GIT With 20 Commands Or So. Making Your Changes The first thing you need to do is obtain a clone of the MaNGOS repository (We will assume MangosZero in these examples) $ git clone --recursive http://github.com/mangoszero/server.git 0server $ cd 0server Then you need to create your new branch: $ git checkout -b make_mangos_scale Switched to a new branch "make_mangos_scale" Now you're ready to get coding. Be sure to include tests which demonstrate the bug you're fixing, and fully exercise any new features you're adding. You should also take care to make sure the documentation is updated if you're changing the API. Once you've finished making your changes you need to commit them. $ git commit -a -m "I made MaNGOS scale by adding quantum tunneling" Created commit 29f8baa: I made MaNGOS scale by adding quantum tunneling 1 files changed, 0 insertions(+), 1 deletions(-) Preparing your changes for submission. Now that you've made your changes it's time to get them into a patch. We need to update rails and fix any conflicts we had. $ git checkout master Switched to branch "master" $ git pull $ git submodule init $ git submodule update ... $ git checkout make_mangos_scale Switched to branch "make_mangos_scale" $ git rebase master Once you've fixed any conflicts, you're ready to create a patch: $ git format-patch master --stdout > make-mangos-scale.diff Now you can attach that patch file to a getmangos.eu tracker ticket and add the 'patch' tag. Reviewing Changes To apply someone's changes you need to first create a branch: $ git checkout -b koz_made_mangos_scale Then you can apply their patch $ git am < their-patch-file.diff Once you have a working copy, you should take note of the following kinds of things: Are you happy with the tests, can you follow what they're testing, is there anything missing Does the documentation still seem right to you Do you like the implementation, can you think of a nicer or faster way to implement a part of their change Once you're happy it's a good change, please comment on the ticket indicating your approval. Your comment should indicate that you like the change and what you like about it. Something like: I like the way you've restructured that code in Server namespace, much nicer. The tests look good too. If your comment simply says +1, then odds are other reviewers aren't going to take it too seriously. Show that you took the time to review the patch. Once three people have approved it, add the verified tag. This will bring it to the attention of a committer who'll then review the changes looking for the same kinds of things. Congratulations and Thank You! Once your changes have been applied, you've officially become part of the large community of independent contributors working to improve MaNGOS. Important Notes The MaNGOS core team prefers that you create a github fork only for large changesets which are likely to involve a lot of code reviews/changes back and forth, or if 2 or more people are working on the same feature/bug. But of course, like all the rules, exceptions can be made for cases that demands for it.
    3 points
  5. Installing Mangos on Windows There are multiple ways of installing MaNGOS, this method will be using EasyBuild (a MaNGOS written tool) to simplify the process. 1) Although there are several pieces of third party software that are required to be installed, only two need to be installed prior to running Easybuild. Git (See HERE for the Install Guide) and Visual Studio (See HERE got the Install Guide) Both need to be installed before continuing. If you don't have them installed... go do that now !! The rest of the third party software required for MaNGOS are: Cmake (See HERE for the Install Guide). Only 32 or 64 Bit can be installed, not both. OpenSSL (See HERE for the Install guide). Both 32Bit and 64Bit can be installed together. You need the full rather than the lightweight version. MySQL (See HERE for the Install guide). Only 32 or 64 Bit can be installed, not both. 2) create a folder to hold all the source files i.e. Mangos_Files 3) Select the folder created above in explorer and right click on it, then select 'Git Bash here' 4) Clone the MaNGOS server and database GitHub repositories into folders in this folder (See HERE for a guide for cloning the repos) 5) Using explorer navigate to the server folder created above. 6) Navigate into the Win folder and double-click EasyBuild(If building MaNGOS three, run 'Patch_Easybuild_Mangos3' as the administrator before running EasyBuild). 7) Click CHECK NOW and let EasyBuild check for the MaNGOS dependencies. If your missing one, download and install it. 😎 Once MaNGOS finds everything it needs to build, click BUILD OPTIONS. If you want to change anything such as whether to build the extractions tools or not. The defaults are fine so we click on BUILD PROJECT. This will take a while so be patient. 9) If you look in the _install folder, all the require files you need on the server are there. 10) The contents of the tools folder need to be copied to where the wow client is located ready for the extraction process (see below). 11) Copy the remaining folder and files from this folder to your server folder 12) Extract the client data using extractresources.sh (See HERE to a guide to extracting the client data) 13) Now it's time to set up the database. 14) Select the folder created above in step 2 and then select dbzero(for MangosZero). 15) Double-click on InstallDatabases.bat 16) The initial settings as defaulted for the typical settings required for a new server setup but you might not want to create a new user right now so you press P then press N to continue. 17) The next few prompts are ask you to supply some key information to connect to your MySQL server, the text in square brackets [] are the default values if nothing is typed. Some of the settings are: Server Name / Address Username Password Port Character Database Name World Database Name Realm Database Name 18) The script will then proceed to populate all the databases and finish up looking like the following 19) At this point the database is now fully loaded. 20) On the server where you copied the files earlier, rename the 4 .conf.dist files as .conf 21) Now it's time to start configuring the server, first stop is adjusting the settings in the .conf files as described HERE 22) Now we need to configure the Realm Database to use the correct IP addresses as described HERE 23) Now the moment of truth... 24) Double click realmd.exe from the server folder, you should see a screen like: 25) Double click mangosd.exe from the server folder, you should see lots of messages like: 26) You now need to create an account to allow you to login to your server from the client: Type: ACCOUNT CREATE username password expansion (Where expansion is one of the following: 0 = Classic, 1 = TBC, 2 = WOTLK, 3 = Cataclysm, 4 = MOP, 5 = WOD, 6 = Legion) - This is also the max allowed expansion this account can use! NOTE: for mangos Zero, omit the expansion parameter. 27) and now for the the final step..... 28) One of the client files (realmlist.wtf) will need to be adjusted to point to your server, a description of how to do this is HERE 29) Start the your client(wow.exe),do NOT use the launcher, enter the account information created above and enjoy.
    2 points
  6. NOTE: MySQL is now a deprecated library, our recommended database provider is MariaDB. Please find the new MariaDB installation Article here: MariaDB Installation Instructions Can be downloaded from: HERE (Change the product version to 5.7.xx). The latest version of 5.7 is recommended, it is possible to use 8.0 but this has not been fully tested. Notes for guide * Can only install 32Bit or 64bit - Can't install both (blame Oracle, not us) * Must match the server version you wish to compile either 32Bit or 64Bit.
    2 points
  7. In previous years we had a roadmap of changes we wanted to implement. However, we are a small team and it seemed silly to specify a set of things to do on a time scale. If you think you can help us do any of these, please contact @antz or @madmax and we can discuss things in more detail. Build System B1) Modify the build system on Mangos Three & Four to match that of Mangos Zero-Two. B2) Apply updates from Mangos Zero-Two into Three/Four. B3) The additional files for the extraction tools are placed into the wrong folder (they are also in tools). Thanks jordigil. Extraction Tools E1) Modify the unified extractors to use Stormlib rather than mlib (Mangos Zero, One and Two). Stormlib is already used on Mangos Three & Four. - Thanks Warkdev E2) Modify the Unified Extractors to support the changes in Mangos Three & Four. (Related to B1). E3) Modify Mangos Three / Four to use the unified extractors. (Related to B1). E4) Add functionality to load DBC data into a database (along with the core code to read from Database rather than DBC files) and change the extraction process to include importing into a DB for use by the core. Including Multiple locale support. Database changes D1) Apply changes to standardise the Databases across the cores. D2) Merge all the different xxx_loot_template tables into a single table with a Loot Type Field (along with the core changes to support this). D3) Extract the character table data field (all the character stat data) into a table containing the required named fields. Including Item_Instance. D4) Modify the EventAI Database (and Core) to support the TC style handling (SAI). D5) Complete the Command Help localisation for Mangos Two, Three and Four. D6) Complete the Achievement localisation for Mangos Two, Three and Four. D7) Move some hardcoded values from the core into the DB, possibly some enums as well. D8) Change defaults in DB table in order to fit latest MYSQL standards. D9) Add support for Broadcast_text table and move all text tables to use that. Core C1) Standardise the naming of functions across the cores. C2) Implement standard account handling across the cores (Mangos Zero is the odd one out with reduced functionality). C3) Implement Playerbot functionality to Mangos One and above. C4) Add Cinematic Manager to the cores - Based on the work of TC/Cmangos. C5) Redo the server commands to make them a bit more standard and obvious. C6) Break out AHBot into its own daemon process. C7) Develop a mangos update daemon, which allows the ability to apply DB content and minor updates automatically. C8) Apply useful updates from other cores into Mangos cores. Other R1) Reorganise the core into a 'mangos core' set of files functions which are shared by all the cores and a module for each core which contains the code just for that core.
    2 points
  8. Important Things to remember There are Five MaNGOS cores, each designed to support a specific version of WOW. Core Supporting Client Version GitHub URL MangosZero Vanilla 1.12.1(5875), 1.12.2(6005) & 1.12.3(6141). http://github.com/mangosZero MangosOne The Burning Crusade 2.4.3(8606). http://github.com/mangosOne MangosTwo Wrath of the Lich King 3.3.5a(12340). http://github.com/mangosTwo MangosThree Cataclysm 4.3.4 (Build 15595). http://github.com/mangosthree MangosFour Mists of Pandaria 5.4.8 (Build 18414). http://github.com/mangosFour PLEASE NOTE: The default branch of all the repos is always the latest released version, and only hotfixes are applied to it. The development branch contains the ongoing development work. If you omit the --recursive parameter, NOTHING WILL BUILD CORRECTLY - You have been warned !!! In the examples below, we are using MangosZero ! Open your favourite git command line util ie. 'git bash' or 'git shell' Then type the commands below: Cloning the default branch of the repos Cloning the Server Source into the folder serverZero Type: git clone https://github.com/mangoszero/server.git serverZero --recursive --depth=10 Cloning the Database into the folder dbZero Type: git clone https://github.com/mangoszero/database.git dbZero --recursive --depth=10 These will create a server and database folder, which then contain the contents of each repo. As the Mangos Repos now use git submodules, cloning using the "recursive" flag will pull in all required submodules automatically. i.e. Eluna, ScriptDev3 etc. If you forget to include --recursive, you can still get the missing files Type: git submodule init git submodule update NOTE: Removing the --depth=10 flag will cause the entire history to be downloaded, normally only needed be developers or when bug hunting.
    2 points
  9. For most Third Party utilities and Applications there is normally some sort of Account management functionality required. The way MaNGOS handles this is fairly simple and painless The account information is held in the account table of the realm Database The `sha_pass_hash` field is nothing else but the SHA1 hash of "USERNAME:PASSWORD", the upper-case username, a ":" and the upper-case password. As the password-field contains the username, you cant just change the username in the `account` table, you always have to change the password-hash too but don't worry, it sounds harder then it is - Luckily mysql provides all we need. Change password: SQL: UPDATE `account` SET `sha_pass_hash` = SHA1(CONCAT(UPPER(`usernameabc`),':',UPPER('passwordxyz'))), `v`='', `s`='' WHERE `id` = x; Where 'usernameabc' is the username, 'passwordxyz' is the password and 'x' is the account id of the existing entry. Change username: SQL: UPDATE `account` SET `username` = 'usernameabc', `sha_pass_hash` = SHA1(CONCAT(UPPER('usernameabc'),':',UPPER('passwordxyz'))), `v`='', `s`='' WHERE `id` = x; Where 'usernameabc' is the username, 'passwordxyz' is the password and 'x' is the account id of the existing entry. Create new account: SQL: INSERT INTO `account` (`username`,`sha_pass_hash`) VALUES ('usernameabc', SHA1(CONCAT(UPPER('usernameabc'),':',UPPER('passwordxyz')))); Where 'usernameabc' is the username, 'passwordxyz' is the password. Listing all characters belonging to an account: SQL: SELECT character0.characters.* FROM realmd.account LEFT JOIN character0.characters ON realmd.account.id = character0.characters.account WHERE username='player' Where character0 is your characters DB, realmd is your realm DB. player is the name of the account you want to find the characters for.
    2 points
  10. For many many years, the Localisation effort for MaNGOS has been almost non-existent outside of the actual core changes to allow localised text to appear. This caused the translation effort to be organised and managed by small groups outside of mangos and over time these projects lost interest and died. In late 2016 we decided to try and change that !! We created a dedicated Github Organisation and Repositories to hold all the localised data, including preparation and installation scripts. This organisation is located HERE Following on from this, @antz has created a tool 'Mangos Online Translation Editor' or MOTE which massively simplifies the translation effort: More information on MOTE can be found HERE If you can help us which translations into the following languages: Korean, French, German, Chinese, Taiwanese, Spanish, Spanish (South American), Russian and Italian We would love your help, as would the MaNGOs community !!
    2 points
  11. HOW TO CREATE WAYPOINTS - get things moving A short Introduction how a path is handled PREREQUISITES For every movement of a creature in the wow - world a definition has to be made. (Except the case a hungry one is looking at you for breakfast) The involved objects are: a db table called creature_movement, one with the little strange name db_script_string, one creature you want to teach a way and - last but not least you in the game with GM rights activated. A SQL interface to the database is also needed - equal which you prefer. The Information created in this process later can be <recycled> and used in scripts - eg some escorts type follower or the same way some boss scripts. In any case we recommend to finish the waypoints first and to deal with scripts later. BASICS - what do I need to know The route is stored in creature_movement in the following way : id = the guid of the mob and point = an autoincrement counter starting at 1. According to this waypoints always are just pointing to a single creature and - changing single waypoints later is a mess. Mostly the starting point of the route is the spawn poin. Leaving this way maybe possible but not effective. In all cases memorize the spawnpoint cause here your route starts. Also be aware of programming waypoints needs some time and maybe a lot of running work too.... STEP 1 - cleaning up First find your npc. You need the id and the guid of him. .go creature <guid> may be helpful. .npc info (target the npc first) gives the needed numbers. If youre replacing an old way perhaps save it now. Looking at the waypoints is simply done with SELECT * FROM creature_movement WHERE id = <guid> To erase former informations in the database you simply use DELETE FROM creature_movement WHERE id = <guid> Now your npc has no waypoints. STEP 2 - The running job Do the following : select your npc switch off his need to visit waypoints UPDATE `creature` SET `MovementType`=1 WHERE `guid`= <guid> LIMIT 1; select the npc then type .npc follow EXCURSION - server manners If that looks strange - lets look at the sense behind. When you visiting the wow world just a part of it is transferred to the client and also in the core just the parts are loaded where some player action occurs. The same way not used areas are taken out of memory on client and server side. You can imagine that a circle-like area around your character. When programming long ways you could get error messages cause some parts of your way are unloaded. Cause you have to select the npc to set his ways and if you are going too far away it is automatically deselected. OK now position yourself at the first spot and type with npc selected .wp add <guid> Congrats - The first waypoint has just been made. Between 2 waypoints the npc always takes a straight line - so to make realistic curves you have to do this by setting more waypoints to simulate it. Follow your path and set your waypoints - and dont forget less is more every waypoint is server workload so just make the neccesary. The npc is going through the waypoint list till the end. When hes at the end restarting again with the first waypoint. That means you must set the way more or less in a circle to return to starting point - else you will see a lost creature hopping through the fields searching for the first entry with odd behavior. Step 3 - Nothing without verification Switch on waypoints for your companion UPDATE `creature` SET `MovementType`=2 WHERE `guid`= <guid> LIMIT 1; if the mob is doing nothing try typing .reload all Now the creature should start moving and following your route. Watch one "round" to see if it all works correctly. Step 4 - EXTRAS - cream on top To make additional actions for your (now running) creature you have to access a single waypoint to tell him an action. If you look into your waypoints select * from creature_movement where id = <guid> You see the following data fields : 5 textid, emote, spell, waittime and a script_id. And a - empty - wpguid. EXCURSION - searching for guids To put something into a waypoint you have to identify it. That's not that easy when you made 30 or 40. Normally waypoints just exist in the database. To work with them visually, the first step is to spawn them - yes - spawn ! Normally a waypoint has no guid. .wp show <guid_of_your_npc> The core generates guids for every waypoint you use atm. To optionally control it - on the right side of table select * from creature_movement where id = <guid> Making long distance ways it can happen that not all wps are generated - then simply walk to the other part and use the command again. Now you're able to identify every single waypoint by his guid in the database. VERY IMPORTANT - clean up when your finished. Every spawned waypoint uses a guid - like you created a lot of mobs. When your finished type .wp show off - to delete the waypoint dummies STEP 5 - WAIT - for what ? is at it says ... just standing there around doing nothing simply set the wait time - be aware that this are milliseconds ... one minute = 60000 STEP 6 - TEXT - Adding Speech There are textid1 to textid5 to be used from 1 up. if more than one is used randomly one will be chosen. To make this far from easy - there is no text field. Its a reference into db_script_string. And to make it just more complicated entries must be between 2000000000 and 2000010000 !!! so you have to add your text into that table and afterwards you can tell the waypoints. just use content_default for your messages - the other fields are for translations into different languages STEP 7 - EMOTES - clapping npcs Simply store an emote number here reference you'll find in the dbc emote tables STEP 8 - SPELLS AND SCRIPTS This is going too far for a introduction. You may find Information about possible spells and scripting at other tutorials. ADDENDUM - THE MESSY THING To change a single waypoint entry is a challange. Ok - a position change can be easy done by .npc move When its spawned. But inserting a new point .. you first have to create that point. Than you must free the sequence number he should use - they are a unique key so no equals allowed in the database - by rising all upper waypoints one step up and after that you can give the new one the insertion number. Works with 5 waypoints but is a challange for a long route. The other way round - to swap the gps coordinates - is also not an easy task. So take care that the basic waypoints are all correct and working. In case of error often it will be faster to rebuild the path from scratch than playing around.
    2 points
  12. AnimationData The animation data table contains definitions for the different animations models can have. animreplacement The animation data table contains definitions for the different animations models can have. animreplacementset The animation data table contains definitions for the different animations models can have. AreaPOI The points of interest table contains definitions for positions on the overhead map, including descriptions, icons and names. AreaTable The area table contains definitions for distinct areas in a zone. AreaTrigger The area trigger table contains definitions for position which are supposed to trigger or monitor server side events. armorlocation The area trigger table contains definitions for position which are supposed to trigger or monitor server side events. AttackAnimKits The attack animation kits table contains definitions for attack animation groups. AttackAnimTypes The attack animation types table contains definitions for attack animation types. AuctionHouse The auction house table contains definitions for available auction houses for each faction including payments for placing auctions. BankBagSlotPrices The bank bag slot prices table contains definitions for buyable bank slots for additional bags. CameraShakes The camera shakes table contains definitions for shaking the game camera when certain spells are cast. Cfg_Categories The configuration categegories table contains definitions for grouping realms in the realm selection dialogue. Cfg_Configs The configuration table contains definitions for realm types and their rules. CharacterCreateCameras CharacterFacialHairStyles The character facial hair styles table contains definitions for attributes use to customize a characters facial style. Charbaseinfo CharHairGeosets The character hair geosets table contains definitions for allowed hair styles for races/genders. CharHairTextures The character hair textures table contains flags for hair geosets paired by race/gender. CharSections The character sections table contains definitions for textures that make up the different character variations, e.g. hair, beards, the base skin. CharStartOutfit The character start outfit table contains definitions for the items a new character should receive. CharVariations The character variations table contains definitions for character models, and seems to indicate where models vary from the default model. Currently it is assumed that the masks indicated the display of foot items, or required modification of head items due to tusks, or horns since these masks are only set for Tauren and Trolls. ChatChannels The chat channels table contains definitions for in-game chat channels and their availability. ChatProfanity The chat profanity table contains definitions for words/strings which are banned from in-game chat channels. ChrClasses The character classes table contains definitions for available classes. ChrRaces The character races table contains definitions for available races, including their settings for sound, display, data files, etc. CinematicCamera The cinematic camera table contains definitions for models to be used in cinematics. CinematicSequences The cinematic sequences table contains definitions for chaining of cinematic cameras. CreatureDisplayInfo The creature display information table contains definitions for textures, scales, models and other data required to display a creature. CreatureDisplayInfoExtra The creature display information extra table contains extended definitions displaying creatures. CreatureFamily The creature family table contains definitions for non-player creatures. CreatureModelData The creature model data table contains definitions for models applied to creatures and settings like collision size. CreatureSoundData The creature sound data table contains definitions for which sounds should be used for a creature. CreatureSpellData The creature spell data table contains definitions for the spells a creature has access to. This table specifically targets creatures which can be tamed. CreatureType The creature type table contains definitions for available non-player creature types. DeathThudLookups The death thud lookups table defines which models and sounds should be used when a creature dies, depending on it's size. DurabilityCosts The durability costs table contains definitions for modifiers to weapons and armor. DurabilityQuality The durability quality table contains definitions for suspected modifiers for how much damage an item can take before losing durability. Emotes The emotes table contains definitions for available /emote commands. EmotesText The emotes text table contains definitions for linking emote animations with emote texts. EmotesTextData The emotes text data table contains definitions for actual text emotes to display in-game when slash commands are executed. EmotesTextSound The emotes text sound table contains definitions for which sound entries are connected to which emote text. EnvironmentalDamage The environmental damage table contains definitions which connect environmental damage to a spell visual. Exhaustion The exhaustion table contains definitions for character states which modify gaining experience. Faction The faction table contains definitions for in-game factions for non-player creatures. FactionGroup The faction group table contains definitions for grouping faction templates into the "bigger picture". FactionTemplate The faction template table contains definitions for grouping factions into reusable templates which are referred to by game data. FootprintTextures The footprint textures table contains definitions for textures used to display footprints. FootstepTerrainLookup The footstrep terrain lookup table contains definitions for matching footsteps with visuals and sounds. GameObjectArtKit The game object art kit table contains definitions for models used by outdoor PvP flags. GameObjectDisplayInfo The game object display information table links display IDs to combinations of models and sounds. GameTips The game tips table contains definitions for game tips displayed on the world loading screen to players. GMSurveyCurrentSurvey The game master current survey table connects current game master surveys to client languages. GMSurveyQuestions The game master survey questions table contains questions to be asked during a game master survey, which is usually issued after a ticket is closed. GMSurveySurveys The game master surveys table contains definitions for questions contained in a survey. GMTicketCategory The game master ticket category table contains definitions for categories in which in-game tickets can be created. GroundEffectDoodad The ground effect doodad table contains definitions for doodads to be placed on the ground, specifically flower models. GroundEffectTexture The ground effect doodad texture table connects terrain types to flower doodads. HelmetGeosetVisData The helmet geoset visibility data table contains definitions for which parts of helmets should be (in-)visible. ItemBagFamily The item bag family table contains definitions for item bag families. ItemClass The item class table contains definitions for available item classes. ItemDisplayInfo The item display info table contains definitions for model and spell data for items. ItemGroupSounds The item group sounds table contains definitions for groups of sounds that are used for items. ItemPetFood The item pet food table contains definitions for pet food types. ItemRandomProperties The item random properties table contains definitions for enchants assigned to items. ItemSet The item set table contains definitions for item sets. ItemSubClass The item subclass table contains definitions for child classes of item classes. ItemSubClassMask The item sub class mask table contains definitions for grouping weapons and armour into sub classes. ItemVisualEffects The item visual effects table contains definitions for models used to display visual effects on items. ItemVisuals The item visuals table contains definitions for sets of item enchantment effects. Languages The languages table contains definitions for in-game languages. LanguageWords The language words table contains definitions for syllables connected to specific in-game languages. These are mostly used when a character can not understand a language. LFGDungeons The looking for dungeon (LFG) group table contains definitions for areas in which characters can group up via the in-game LFG functionality. Light The light table contains definitions for lights, fogs, sky color, water color, etc. LightFloatBand The light float band table contains definitions for daytime modifiers of lighting. LightIntBand The light integer band table contains definitions for daytime modifiers of lighting. LightParams The light params table contains definitions for settings which don't change with time for light, fog and water. LightSkybox The light skybox table contains definitions for models used as sky box. LiquidType The liquid type table contains definitions for which effects liquid types should have. LoadingScreens The loading screens table contains definitions for available zone loading screens. LoadingScreenTaxiSplines The loading screen taxi splines table contains definitions for paths used by boats and Zeppelins. Lock The lock table contains definitions for available locks. LockType The lock type table contains definitions for available lock types. MailTemplate The mail template table contains definitions for mails sent by non-player characters. Map The map table contains definitions for available maps. Think of continents and instances - these are their own maps - rather than specific zones. Material The material table contains definitions for sound to be made by specific materials. NameGen The name gen table contains definitions for random names for characters. NamesProfanity The names profanity table contains definitions for characters names which are disallowed. NamesReserved The names reserved table contains definitions for characters names which are reserved for creatures, or unavailable due to being a real persons name. NPCSounds The non-player creature sounds table contains definitions for which sounds a creature will make upon being clicked. Package The package table contains definitions for mail icons. PageTextMaterial The page text material table contains definitions for backgrounds used for in-game dialogues. PaperDollItemFrame The paper doll item frame table contains definitions for textures used to display the character screen and bags. PetLoyalty The pet loyalty table contains definitions for pet loyalty levels. PetPersonality The pet personality table contains definitions for pet personality levels. QuestInfo The quest info table contains definitions for quest types. QuestSort The quest sort table contains definitions for quest categories. Entries from AreaTable.dbc may also be used as quest categories. Resistances The resistances table contains definitions for available resistance types. ServerMessages The server messages table contains definitions for chat messages sent by the game server. SheatheSoundLookups The sheathe sound lookups table contains definitions for which sound to play when sheathing items. SkillCostsData The skill costs data table contains definitions for prices of skills. SkillLine The skill line table contains definitions for skills. SkillLineAbility The skill line ability table contains definitions for skills, spells and the required dependencies. SkillLineCategory The skill line category table contains definitions for category of skill lines. SkillRaceClassInfo This table contains definitions for which races / classes combinations have access to what skills. SkillTiers The skill tiers table contains definitions for the costs of each skill tier. SoundAmbience The sound ambience table contains definitions for day and night ambience sounds. SoundCharacterMacroLines SoundEntries The sound entries table contains definitions for available sound files. SoundProviderPreferences The sound provider preferences table contains definitions for fmod properties. SoundSamplePreferences The sound sample preferences table contains definitions for preferences used to play sound samples to test the sound providers. SoundWaterType The sound water type table contains definitions for connecting liquids and matching sounds. SpamMessages The spam messages table contains definitions for regular expressions used to decide if a chat message is spam. Spell The spell table contains definitions for available spells. SpellAuraNames SpellCastTimes This table holds the values required to calculate the spell cast time. SpellCategory SpellChainEffects SpellDispelType SpellDuration SpellEffectCameraShakes SpellEffectNames SpellFocusObject SpellIcon SpellItemEnchantment SpellMechanic SpellRadius This table holds the values to calculate the spell radius, including the min / max spell radius plus the increase per level. SpellRange SpellShapeShiftForm SpellVisual SpellVisualEffectName SpellVisualKit SpellVisualPrecastTransitions StableSlotPrices Startup_Strings Stationery StringLookups Talent The talent table contains definitions for all available class talents and their requirements. TalentTab The talent tab table contains definitions for the class talent tabs as seen ingame on the talent window. TaxiNodes This table contains definitions for names, and locations of flight nodes. TaxiPath This table contains definitions for transports, including source, destination and price. TaxiPathNode This table contains definitions for every point along a flight path. TerrainType This table contains definitions for available terrain types and the use of sound and footsteps on them. terraintypesounds TransportAnimation This table contains definitions most likely used to play animations during characters being on a transport. UISoundLookups This table contains definitions for sounds used in various sections of the user interface. UnitBlood This table contains definitions for the unit blood to be displayed on a creature. UnitBloodLevels This table contains definitions for the levels of blood to be displayed on a creature. VideoHardware The video hardware table most likely contains definitions for supported video hardware. VocalUISounds This table contains definitions for UI error sounds for all the different races and genders. WeaponImpactSounds This table contains definitions for which sound is played when a weapon hits. WeaponSwingSounds2 This table contains definitions for which sound is played when a weapon swings. WMOAreaTable This table contains definitions for connecting areas to the actual models. WorldMapArea This table contains definitions for texture overlays used for an area (aka. zone) on the world map. WorldMapContinent This table contains definitions for texture overlays used for a continent on the world map. WorldMapOverlay This table contains definitions for texture overlays used for a sections of an area on the world map. WorldSafeLocs This table contains specifies coordinates where graveyards are located. WorldStateUI This table contains definitions for PvE and PvP events in the world. WowError_Strings This table contains definitions for error messages used in the World of Warcraft crash reporting utility. ZoneIntroMusicTable This table contains definitions for ambience sounds to be played upon entering various areas. ZoneMusic The zone music table contains definitions for ambience sounds to be played during day and night time in various areas.
    1 point
  13. Finding Patches for the older clients is not an easy task, the following sites may help:- Older patches can be found here like 2.4.3 to 3.3.0 → 3.3.5a http://www.wowpedia.org/Patch_mirrors The following site lists all patches since alpha to cata (en and us versions) http://www.wowpedia.org/Patch_mirrors_(old_patches)
    1 point
  14. You can better identify problems that affect the world server (mangosd) using this process. Do this by attaching to the running process from a Microsoft Visual Studio (MSVS) instance with the code project repository downloaded, configured, and the Solution (sln) file opened. The keyboard shortcut for this should be "Ctrl+Alt+P", and other instructions for performing this in the IDE can be viewed here: Microsoft - Attach to running processes with the Visual Studio debugger I'm not sure that you can do this with any other IDE yet, but there have been several similar packages that accomplish this function for the now unsupported Atom editor, with examples such as PHP xdebug functionality. Also unsure if this can be accomplished using Visual Studio Code or not. If this does not work, or seems strange, make sure the version of the project matches the server, and the server has the associated symbol (pdb) files that match the executable you want to inspect. Once connected, you can set breakpoints and view the process state when those are encountered.
    1 point
  15. [Last procedure check : 2020-07-13 ] Hi everyone, I re-write the procedure since there are many questions about linux install procedure. Many of them are no more applicable today and the getmangos.sh script needs rework as I write this article. PREREQUISITES I am assuming you are running your server on a Linux Operating system with Ubuntu Server 18.04 flavor. Your OS should be up to date. If not, log in as root and run : apt update && apt upgrade PART 1 : Configuring the environment This tuto will use the MaNGOS zero repo URL but it is replicable with all of our cores repos. Just change the git repo URL and you will be fine. > Creating system user Be sure you have created a Linux user for your server, since it is not a good idea to run it as root for obvious security reasons. We will then assume you have created a mangos linux user using the command : adduser mangos To be more handy you can add this user to the sudoers in order to be able to run administrative commands. usermod -aG sudo mangos After this point, be sure to be logged-in as mangos Linux user. We do not need root account anymore (or perhaps once or twice.. but..never mind ! do not use root when not needed) > Installing useful programs MaNGOS requires some libraries to be built and to run properly. We also need some programs to run further commands or simply to handle some scripts which are in the repo (e.g : python scripts O_o) apt install git make cmake libssl-dev libbz2-dev build-essential default-libmysqlclient-dev libace-6.4.5 libace-dev python > Preparing your system folders A good practice is to separate locations for the needs : sources, db sql files and build folder under the mangos system user : /home/mangos/ binaries, confs, logs, gamedata in /opt/ Thus you can create the folders when logged-in as mangos system user : mkdir /home/mangos/sources mkdir /home/mangos/build mkdir /home/mangos/db Then the /opt/ folder is only accessible to root so you need to use sudo and impersonate root to make things there. The aim to to create a fodler using the root account then giving the good rights to be able to use it with the mangos system user. The opt folder will a have a wow subfolder in which the mangos folder will be. It would let you install other cores if you want to (Trinitycore, Cmangos etc..) all should be installed in /opt. sudo su cd /opt/ mkdir wow chown -R mangos:root wow chmod g+s wow exit Now you will have a wow folder in /opt/ that will be writable by the mangos system user. Create all necessary useful folders to handle future files using mangos system user : cd /opt mkdir wow/install && mkdir wow/install/mangos && mkdir wow/install/mangos/bin && mkdir wow/install/mangos/bin/logs && mkdir wow/install/mangos/conf cd /opt/wow && mkdir gamedata && mkdir gamedata/1.12 && mkdir gamedata/1.12/mangos > Getting Game data Since MaNGOS is an educationnal project we will not redistribute exctracted game data. In order to be able to run your server, you will need to extract these data from your game folder using the extractor programs that are built when you build the project. To run the server the best way, you will have to extract : dbc maps vmaps (takes a long time) mmaps (takes a long time) Please remind to put all extracted data on the folders you pre-created on previous steps. If you work with a VM you can use Linux extractors against a shared game folder betwwen your PC and the Linux VM, or if you have the Game folder on your server, you will have to use extractors in this folder. More information on this topic : PART 2 : Getting the sources & Compiling the core Note that we always use the mangos system user. Get into your source folder : cd /home/mangos/sources Retrieve the sources (WARNING do not forget to get them recusrsively !!) : git clone https://github.com/mangoszero/server.git . --recursive --depth=1 Well, that good now we are going to build the solution. /!\ WARNING ABOUT ACE DEPENDENCIES /!\ It is possible that the build fails due to he ACE linked sources in the "dep" folder. It is related to a bug between Linux build and Windows build. The main "server" repository is set to refer to a speficif commit that allows by default a correct build on Windows. If you are on Linux you will probably have to manuall pull & checkout the "dep" folder (wich is a git submodule) : cd /home/mangos/sources/dep git pull git checkout master Keep in mind that this example show a default build. You can tweak teh buidl option in cmake to build or not some parts of the software. cd /home/mangos/build cmake ../sources/ -DCMAKE_INSTALL_PREFIX=/opt/wow/install/mangos -DCONF_INSTALL_DIR=/opt/wow/install/mangos/conf When it's finished, depending on the number of your cores you will adapt the following make command : make -j<NbCores> (e.g : for an intel i7 octocore you can tupe 'make -j8') The build process should begin, and when it's finished, you will have to install the built binaries : make install After that, all binaries and default conf files woudl have been copied to their destination folders which you have set in the previous cmake command. PART 3 : Installing MySQL First things first : you have to install MySQL server. With Ubuntu Server 18.04 the reference MySQL version is 5.7.30 (this statement is valid at the date when this guide is written, it can evolve in the future). To install mysql-server : sudo apt install mysql-server After installation, you may wonder : "Why the program did not ask me for a root password ?". Well, on new MySQL versions, the default auth protocol is set to "auth_socket" but all our software will use a password to connect to the database. Don(t worry, we are going to create a user that would be able to authenticate with standard credentials : sudo su mysql Now you are logged-in to mysql command prompt with the root account. you will notice no password was asked to you because roto user uses auth_socket protocol to authenticate. Now you are going to create the MySQL mangos user : CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'mangos'; GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost' WITH GRANT OPTION; The "WITH GRANT OPTION" is not mandatory but can be useful for future use if you want to administer other users with this mangos account. Then leave MySQL command prompt and root shell : exit; exit PART 4 : Database Setup > Main databases (auth, characters, world) You first have to clone the database repo in the db folder : cd /home/mangos/db/ git clone https://github.com/mangoszero/database.git . --recursive --depth=1 ./InstallDatabases.sh You will be prooted a screen with several questions : You will also be prompted to determine your dabases names. A good practice is to set the realm db name to : mangos_auth, and also to suffix all others db names with the core versions you are running (e.g characters db for mangos zero : mangos_characters0 , world db : mangos_world0 ) Note : you need only 1 realm database if you run several cores (mangos zero, mangos one etc..) on teh same server, BUt you will need 2 db (characters and world) for each core you run. > Apply database updates On a fresh install, World updates should also be applied. In order to see if it is Ok, check on the World db (the process is the same for other databases) : connect to mysql using mangos user : mysql -u mangos -pmangos mangos_world0 SELECT * FROM db_version ORDER BY VERSION DESC, structure DESC, content DESC LIMIT 0,1; exit; If the return show you the same version that the most recent file in the World/Updates/Rel21 folder. You are OK. The version number alwas increase so it will be easy to determien if your version/structure/content is ok or not. If not, then go to the World update folder (World/Updates/Rel21) and apply missing updates to the databases. mysql -u mangos -pmangos mangos_world0 < nameOfUpdateSQlFile.sql > Translations In case you run a non english speaking server, you can apply translation fiels to the world database. You will find the correct sql files to apply in the Translations folder : cd /home/mangos/overload/db/Translations Since I cannot ensure the Linux scripts are working, here is how to do manually : Apply the 3 first .sql files in teh folder : mysql -u mangos -pmangos mangos_world0 < 1_LocaleTablePrepare.sql mysql -u mangos -pmangos mangos_world0 < 2_Add_NewLocalisationFields.sql mysql -u mangos -pmangos mangos_world0 < 3_InitialSaveEnglish.sql Of course you will have to replace the db name "mangos_world0" with your db name etc... if you have changed default db names and user and password You will need to go to the translation folder of the desired language (e.g for French language ) : cd /home/mangos/db/Translations/Translations/French The more easy solution would be to compile all files in one and import it cat *.sql > full.sql mysql -u mangos -pmangos mangos_world0 < full.sql rm full.sql There, your translations should be applied. PART 5 : Configuring *.conf files for executables Go to the conf folder an create a copy of each .dist file : cd /opt/wow/install/mangos/conf/ cp realmd.conf.dist realmd.conf && cp mangosd.conf.dist mangosd.conf Change database connection information in each file in order to allow your binaries to connect to the database. Update your game data path in mangosd.conf too. Update the logs folder to "logs" value (relative to binary) A lot of behaviours can be configured in these files. Please consider studying it carefully. PART 6 : Auto-restarting When operating a game server it is nice to use an auto-restarter. Otherwise, you will have to keep up 2 terminals for realmd and mangosd. ./opt/wow/install/mangos/bin/realmd and ./opt/wow/install/mangos/bin/mangosd That can be really annoying because daemons would be killed after terminal exit. Read this article to know how to use a restarter on Linux operating systems : PART 7 : Final comments > Nice to have When your system is running, you could perhaps check : Do you have a DB backup system ? You can easily put one in place with a CRON job Do you have a backup system for your conf files ? Do you have a flushing system for the server log files if you keep them timestamped ? > About errors at core start-up You can have some DB errors at startup like this one : It means you have applied DB updates beyond core expectation but since it is only content related, it is not a big issue. The core would not start id the version or structure is different, but the core can start with a content mismatch. > How to first connect whith default accounts ? If you have any questions - please ak on the forum on on Discord when anybody is connected Cheers !
    1 point
  16. Hi there, I am writing this little article about default accounts in MaNGOS and how to deal with them. > WHAT ARE DEFAULT ACCOUNTS ? Default accounts are accounts created in the account table of the auth DB when you have a fresh install : After a fresh install you will get those 4 default accounts that allow you to connect directly to your realm in order to make quick tests. > HOW CAN YOU USE THEM ? As you can see you have only encrypted password in DB but the scheme is easy : all passwords are equal to the account name. USERNAME PASSWORD ADMINISTRATOR ADMINISTRATOR GAMEMASTER GAMEMASTER MODERATOR MODERATOR PLAYER PLAYER Note : They are not case sensitive when you type them in the game client. > PLEASE... DELETE THESE ACCOUNTS IF THEY ARE NOT NEEDED AFTER YOUR FIRST TESTS ! We recommend that you get rid of these accounts and create your own ones, for obvious security reasons : DELETE FROM `account` WHERE `username` IN ('ADMINISTRATOR', 'GAMEMASTER', 'MODERATOR', 'PLAYER'); If you let them as it is and run a live server... anyone would be able to connect as a GM if you do not change the default passwords.
    1 point
  17. Configuring the Realm Database 1) Open a command prompt and type IPCONFIG. 2) Find the IP address shown against IPv4 Address: (In this example 192.168.1.33) - This is your local address 3) Open a browser and visit: http://www.whatsmyip.org/ - You should see a message like: Your IP Address is: 170.21.133.118 - This is your external IP address and will be different on your system !! 4) Using your normal Database management tool, open your realm database (default name is realmd) 5) Open the table realmlist 6) Enter your external IP address (170.21.133.118) into the field 'address' and your local IP address (192.168.1.33) into the field 'localaddress' 7) Save your changes
    1 point
  18. I tested this on Debian 9.6 however this guide should work on any recent Debian distribution such as Ubuntu. Required Packages First we need to install all of the required programs and library's. Open up a root terminal. If your not root, enter this to become root sudo su Install the following packages apt install git make cmake libssl-dev libbz2-dev build-essential default-libmysqlclient-dev We need to grab the mysql stuff from here. Follow the instructions there. Also, choose mysql 5.7. A script needed later requires this so don't install mysql 8. Install the server with apt install mysql-server You also need to grab and compile libace. You can get it from here. Extract it and read the instructions.They're pretty straight-forward. It should be named 'ACE-INSTALL.html' or something similar. When thats done, enter this command. I highly recommend doing this even if your just keeping the server to yourself mysql_secure_installation I suggest these options: Don't use the password plugin Change the root password Remove the anonymous user Disable remote access for root Remove the test database Reload privileges Restart your system with init 6 Getting the Mangos source code Now we need the source code for mangos. Open up a terminal as root and go to the home directory: cd ~ Lets create a root directory for all of the mangos files mkdir mangos Now we clone the source code. Mangos servers above two are unstable or incomplete. Don't be surprised if something doesn't work or is missing. git clone https://github.com/mangoszero/server.git --recursive --depth 1 For the database git clone https://github.com/mangoszero/database.git --recursive --depth 1 If you want a different server(say mangos one), simply change the url. For example git clone https://github.com/mangosone/server.git --recursive --depth 1 For the mangos one server. If you want mangos two, simply do the same. Do the same with the database. Wait for the repos to be cloned (the server is about 200-250mb-ish) Compilaton The good part. Enter the mangos source directory cd server Make a new directory for the build files. mkdir build Go into it cd build Now run this to configure the makefiles cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/bin/mangos If cmake doesn't complain about anything, your good to go with compiling it. To speed up compilation, you need to know how many cores your cpu has. Most cpus have 2 or 4 cores. Search it up if your not sure. Now to compile it, simply enter this make -j2 Change -j2 to how cores you have. If you have 4 cores, change it to make -j4 If you only have one core, don't bother with the -j flag, just type in 'make' and hit enter. This will take a while depending on how fast your cpu is. Just be paitent. After a bit, mangos will be compiled(yay)and you will need to separate the needed files from the source code. To install it into your install prefix(default is /usr/local/bin/mangos), do this make install Database Setup: The Sequel Now for another database setup (i know, its crazy). This time, we will be loading some stuff into it. Enter the database folder you cloned earlier and execute InstallDatabases.sh ./InstallDatabases.sh If it says something similar to 'bash: ./InstallDatabases.sh: Permission denied', the script isn't marked as executable. Mark everything needed as executable by running this chmod -R +x *.sh Now have a go at running the script again. When execute it, you'll be brought to a menu. The defaults are fine for a new server so just press 'n' and hit enter You will have to give it your mysql details. This needs to be your server hostname(ip address), username, password and server port. The only things you need to change are the username and password. Keep in mind all of this must be done as the ROOT user. Game Data Now this is the longest part if decide to get mmaps. To run the server, you MUST extract the .dbc and .map files. To do this, copy everything in the tools folder to where your wow client is. Keep in mind the version of the client as it must be a specific version for this(mangoszero is a bit more lenient then others). You need 1.12.x (x can be any number) for mangoszero, 2.3.4 for mangosone, 3.3.5 for mangostwo(favourite), 4.3.4 for mangosthree and 5.4.1 for mangosfour. To extract the dbc and map files, execute this when in your wow client folder ./mapextractor This can take around 5 minutes to complete. Once thats done, copy over the folders "dbc" and "maps" to where you installed mangos. I recommend getting all of the data though so to get the vmaps, make sure the maps folder is still in your wow folder and exectute this ./vmaps4extractor Once thats done, type this in your terminal ./vmaps4assembler Just copy over the "vmaps" folder to where mangos is. Now for movemaps. This can take anywhere from an hour to a whole day depending on your computer and what client data you're extracting. Make sure the vmaps and maps folders are still in your wow folder and type this out ./MoveMapGen.sh 2 Now, you might want to know how many cores your computer has. Most computers have 2 so if you don't know, just leave the command as is. If you got 4 or 8 cores, replace the 2 with a 4 or a 8. More threads the better but your computer will be a lot slower if you use all of your cpu. Press enter and prepare to wait a while. Once its finished extracting, copy over the folder "mmaps" to where mangos is. You can delete the maps, dbc, vmaps, buildings and mmaps from your client folder now if you want. Server Configuration Now to configure the server. Go to the mangos configuration folder cd /usr/local/bin/mangos/etc Copy the files to their proper name. DON'T delete them. They're a backup in case your .conf files get corrupted or you mess up some settings cp mangosd.conf.dist mangosd.conf cp realmd.conf.dist realmd.conf Edit realmd.conf and find the line 'LoginDatabaseInfo', change the information to suit your database. For example if my database hostname is localhost or 127.0.0.1, the port is 3306, username is root, the password is mangos and my realm database is realmd, it would look like this LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd" Save the file and edit mangosd.conf. Look for lines, LoginDatabaseInfo, WorldDatabaseInfo and CharacterDatabaseInfo. Do the same to those lines as you did to the one in realmd.conf. You may wish to fully read mangosd.conf to fine-tune your server if you wish. Save the file. Starting the Server Now to see if your hard work has paid off. Go to where you installed the server and start realmd ./realmd Now start mangosd ./mangosd If theres a error mangosd or realmd can't fix, it'll tell you problem then exit. It will be up to fix it however. The most common problem is that the password or username is wrong or that the database isn't running. Try editing mangosd.conf or realmd.conf if thats the case and making sure the db is running If it started and gives you a prompt, the server is loaded and awaiting a connection from a client. Starting the server with systemd This allows you to startup your computer and have mangosd and realmd load with it. Very useful on a dedicated server. We need to make 2 .service files to do this. touch /etc/systemd/system/mangosd.service touch /etc/systemd/system/realmd.service Edit mangosd.service with your preferred text editor. Don't type 'edit /etc/systemd/system/mangosd.service' unless you know how to quit vi. [Unit] Description=WoW server After=network.target mysql.service [Service] Type=simple User=root ExecStart=/usr/local/bin/mangos/bin/mangosd -c /usr/local/bin/mangos/etc/mangosd.conf Restart=on-abort [Install] WantedBy=multi-user.target Do the same with realmd.service [Unit] Description=WoW server After=network.target mysql.service [Service] Type=simple User=root ExecStart=/usr/local/bin/mangos/bin/realmd -c /usr/local/bin/mangos/etc/realmd.conf Restart=on-abort [Install] WantedBy=multi-user.target Let systemd reload. systemctl daemon-reload Start realmd via systemd to see if the .service file is valid systemctl start realmd Do the same with mangosd systemctl start mangosd Check the status of both services with systemctl status realmd systemctl status mangosd If it's working, you should see something like a green OK on both daemons (fun fact: daemons and services are the same thing) then you should be good to enable them at startup. Do this for realmd systemctl enable realmd systemctl enable mangosd Restart your system init 6 Check that they started as root systemctl status realmd Do the same with mangosd If its good then mangosd and realmd will always start with your system until you disable them. Letting WoW clients connect to your server This is the 2nd last thing you need to do. This will allow WoW clients to connect to your server. We need to edit a table in the database. If you know what your doing with mysql, follow along but do the equivalent on the terminal. If you prefer doing things with a gui(graphical user interface, your using one right now!), lets install a gui mysql client. We'll use 'mysql-workbench' apt install mysql-workbench After its installed, check your start menu in 'Programming'. Start mysql workbench and click on your server. Enter your password and look on the lower left. Click on the little arrow next to realmd and scroll down to realmlist. Right click on it and click on 'Alter Table'. Go down to localAddress and double click on the '127.0.0.1'. Change this to your lan ip. You can find out your lan ip by opening a terminal and typing in ifconfig You will see about 4-5 interfaces. If your connection is a wired one, you should look at a interface named 'enp' followed by letters and numbers. For example, 'enp14s0'. Then look at the 'inet' part. This is your lan ip. Do the same if your connection is wireless or wi-fi. Wireless connections will be named like 'wlp' with some letters and numbers. 'wlp20s0' is a example. Once you have changed localAddress to your lan ip, you need to change address to your external ip. Go here to find out your ip. Now we need to let realmd know that the database has changed. Stop it with systemctl stop realmd Now start it again with systemctl start realmd Connecting a WoW client to your server Nearly there! Go to where your wow client is and look for a file named realmlist.wtf. Delete everything in this file and put the following stuff in it set realmlist 10.1.1.1 set patchlist 10.1.1.1 Change 10.1.1.1 to your server ip. It can be the lan ip if its on the same network as the server. Now for the moment of truth. Open up WoW.exe(not the launcher)and wait for it to load. Skip the cinematic if want by pressing escape(esc). Now login into the server by using administrator as the email and no password. Choose the only realm and create your character. You now have a functioning WoW server for you and your friends to play on! Also, since you logged in using the admin account, you can use game master commands. Type in the chat '.gm help' for a list of commands currently in mangos. Have fun with it!
    1 point
  19. Building MaNGOS on Linux requires ACE libraries. I could not find information on installing those here, so I will make a short HOWTO (copied from ACE documentation) 1. Make a folder for ACE in your preferred location ( I use /opt) mkdir /opt/ace && cd /opt/ace 2. Download and unpack ACE wget http://download.dre.vanderbilt.edu/previous_versions/ACE-6.4.7.tar.gz tar -xvf ACE-6.4.7.tar.gz 3. Add needed environment variables cat >> /etc/profile <<EOF export ACE_ROOT=/opt/ace/ACE_wrappers EOF source /etc/profile 4. Add the desired headers cat > /opt/ace/ACE_wrappers/ace/config.h <<EOF #include "ace/config-linux.h" EOF cat > /opt/ace/ACE_wrappers/include/makeinclude/platform_macros.GNU <<EOF INSTALL_PREFIX = /usr/local include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU EOF 5. Build ACE cd /opt/ace/ACE_wrappers make make install 6. Add the library to the public path cat > /etc/ld.so.conf.d/ace.conf <<EOF /opt/ace/ACE_wrappers/lib EOF ldconfig -v
    1 point
  20. Introduction As you may have noticed, from time to time there is a news article on the left side of the login screen for the WoW Client. Sometimes it can be annoying having a Blizzard notice that the servers are going down, when in reality, your server(s) is not going to be going down for maintenance in the foreseeable future. Here are instructions on how to alleviate this problem for you and your players, should you have anyone else on your server: Disabling Breaking News First, we need to go into our “hosts” file, which, depending on your operating system, will be in a different location. For Windows, the hosts file is in C:\Windows\System32\drivers\etc\hosts. In order to edit this file, though, you are going to have to go into your start menu, type notepad, right-click on notepad and run as administrator. Then just hit file, open, and navigate to the hosts file. For *NIX, the location of the “hosts” file is /etc/hosts. Second, once you are editing the “hosts” file, you will need to go to the end of the file and enter the ip address of your server, in my case it would be 192.168.0.4. Then tab over to the space under “localhost” and enter the actual servername of the warcraft breaking news server, again, in my case it was “launcher.worldofwarcraft.com”. Depending on your region the address will be different. There will be a list of breaking news server later. Finally, once you are done modifying your “hosts” file, you can restart the client and you will never see Blizzard’s breaking news again. “Pushing” Breaking News for your Server In order to start “pushing” your own news, follow the instructions from Disabling Breaking News and then, once you have finished modifying your “hosts” file, come back to this section. I’m assuming that you are using the WAMP server which covers both MySQL and Apache and are on Windows. If you are in *NIX, then you should not have to worry about MySQL and Apache as they should both already be installed, normally. With our server configuration out of the way, we are ready to begin preparing to push our own news to our clients. In the root web directory for your domain name or ip address, create a file called “Alert”. No quotation marks, no file extension, just Alert. And yes, capitalize the A. Alert is an over-simplified html file. As an example Alert file we have: SERVERALERT:<html><body><p>Your Message.</p></body></html> If you feel the need to disable your news system again at a future date, simply rename Alert to something like Alert2. When you want to re-enable your news system for a new tidbit of news, all you have to do is move Alert2 back to Alert and edit it. Blizzard’s Breaking News Servers US/SEA - http://launcher.worldofwarcraft.com/alert LA - http://launcher.worldofwarcraft.com/es/alert EN - http://status.wow-europe.com/en/alert ES - http://status.wow-europe.com/es/alert FR - http://status.wow-europe.com/fr/alert DE - http://status.wow-europe.com/de/alert RU - http://status.wow-europe.com/ru/alert KR - ??? http://launcher.worldofwarcraft.co.kr/alert CN - ??? http://launcher.battlenet.com.cn/alert TW - ??? http://launcher.wowtaiwan.com.tw/alert
    1 point
  21. In previous years we had a roadmap of changes we wanted to implement. However, we are a small team and it seemed silly to specify a set of things to do on a time scale. If you think you can help us do any of these, please contact @antz or @madmax and we can discuss things in more detail. Build System B1) When selecting only to build extraction tools, the build fails. B2) The additional files for the extraction tools are placed into the wrong folder (root rather than tools). Thanks Will Tuker B3) Modify the build system on Mangos Three & Four to match that of Mangos Zero-Two. B4) Apply updates from Mangos Zero-Two into Three/Four. B5) The additional files for the extraction tools are placed into the wrong folder (they are also in tools). Extraction Tools E1) Modify the unified extractiors to use Stormlib rather than mlib (Mangos Zero, One and Two). Stormlib is already used on Mangos Three & Four. E2) Modify the Unified Extractors to support the changes in Mangos Three & Four. (Related to B3). E3) Modify Mangos Three / Four to use the unified extractors. (Related to B3). E4) Add functionality to load DBC data into a database (along with the core code to read from Database rather than DBC files) and change the extraction process to include importing into a DB for use by the core. Including Multiple locale support. Database changes D1) Apply changes to standardise the Databases across the cores. D2) Merge all the different xxx_loot_template tables into a single table with a Loot Type Field (along with the core changes to support this). D3) Extract the character table data field (all the character stat data) into a table containing the required named fields. Including Item_Instance. D4) Modify the EventAI Database (and Core) to support the TC style handling (SAI). D5) Complete the Command Help localisation for Mangos One, Two, Three and Four. D6) Complete the Achievement localisation for Mangos Two, Three and Four. D7) Move some hardcoded values from the core into the DB, possibly some enums as well. D8) Change defaults in DB table in order to fit latests MYSQL standards. D9) Add support for Broadcast text table and move all text tables to use that. Core C1) Standardise the naming of functions across the cores. C2) Implement standard account handling across the cores (Mangos Zero is the odd one out with reduced functionality). C3) Implement Playerbot functionality to Mangos One and above. C4) Add Cinematic Manager to the cores - Based on the work of TC/Cmangos. C5) Redo the server commands to make them a bit more standard and obvious. C6) Break out AHBot into its own daemon process. C7) Develop a mangos update daemon, which allows the ability to apply DB content and minor updates automatically. C8) Apply useful updates from other cores into Mangos cores. Other R1) Reorganise the core into a 'mangos core' set of files functions which are shared by all the cores and a module for each core which contains the code just for that core.
    1 point
  22. In order to allow connections to your server under linux you need to add ports 3724/tcp and 8085/tcp to your firewall firewall-cmd --zone=public --permanent --add-port=3724/tcp firewall-cmd --zone=public --permanent --add-port=8085/tcp firewall-cmd --reload Please, anyone with permissions to write to closed topics, add this to the linux setup topic if possible. Thank you.
    1 point
  23. NOTE: This page is auto-generated from the MAGNET DBCDocs module, Any changes made directly to this page will be lost when it is regenerated. Description of the DBC file 'Spell' for MaNGOSZero The spell table contains definitions for available spells. The file contents is read and mapped into the struct spellEntry in the MaNGOS core. The field types and usage is defined in spellfmt in the MaNGOS core. The File is currently *NOT USED* by the MaNGOS core. The Field definitions follow, No. of fields: 173 strong> Field Name Field Type Notes Id INT(11) Unique Id school INT(11) Category INT(11) castUI INT(11) dispelType INT(11) mechanic FLOAT attributes FLOAT attributesEx FLOAT attributesEx2 FLOAT attributesEx3 FLOAT attributesEx4 FLOAT shapeshiftMask INT(11) shapeshiftexclude FLOAT targets FLOAT targetCreatureType INT(11) requiresSpellFocus INT(11) casterAuraState INT(11) targetAuraState INT(11) castingTimeIndex INT(11) recoveryTime INT(11) categoryRecoveryTime INT(11) auraInterruptFlags INT(11) channelInterruptFlags INT(11) procTypeMask INT(11) procChance INT(11) procCharges INT(11) MaxLevel INT(11) baseLevel INT(11) spellLevel INT(11) durationIndex INT(11) PowerType INT(11) manaCost INT(11) manaCostPerLevel INT(11) manaCostPerSecond INT(11) manaCostPerSecondPerLevel INT(11) rangeIndex INT(11) Speed INT(11) modalNextSpell INT(11) stackAmount INT(11) Totem INT(11) Totem2 INT(11) reagent1 INT(11) reagent2 INT(11) reagent3 INT(11) reagent4 INT(11) reagent5 INT(11) reagent6 INT(11) reagent7 INT(11) reagent8 INT(11) reagentCount1 INT(11) reagentCount2 INT(11) reagentCount3 INT(11) reagentCount4 INT(11) reagentCount5 INT(11) reagentCount6 INT(11) reagentCount7 INT(11) reagentCount8 INT(11) equippedItemClass INT(11) equippedItemSubclass INT(11) equippedItemInvType INT(11) effect1 INT(11) effect2 INT(11) effect3 INT(11) effectDieSides1 INT(11) effectDieSides2 INT(11) effectDieSides3 INT(11) effectBaseDice1 INT(11) effectBaseDice2 INT(11) effectBaseDice3 INT(11) effectDicePerLevel1 INT(11) effectDicePerLevel2 INT(11) effectDicePerLevel3 INT(11) effectRealPointsPerLevel1 INT(11) effectRealPointsPerLevel2 INT(11) effectRealPointsPerLevel3 INT(11) effectBasePoints1 INT(11) effectBasePoints2 INT(11) effectBasePoints3 INT(11) effectMechanic1 INT(11) effectMechanic2 INT(11) effectMechanic3 INT(11) implicitTargetA1 INT(11) implicitTargetA2 INT(11) implicitTargetA3 INT(11) implicitTargetB1 INT(11) implicitTargetB2 INT(11) implicitTargetB3 INT(11) effectRadiusIndex1 INT(11) effectRadiusIndex2 INT(11) effectRadiusIndex3 INT(11) effectAura1 INT(11) effectAura2 INT(11) effectAura3 INT(11) effectAmplitude1 INT(11) effectAmplitude2 INT(11) effectAmplitude3 INT(11) effectMultipleValue1 INT(11) effectMultipleValue2 BIGINT(20) effectMultipleValue3 BIGINT(20) effectChainTarget1 INT(11) effectChainTarget2 INT(11) effectChainTarget3 INT(11) effectItemType1 INT(11) effectItemType2 BIGINT(20) effectItemType3 BIGINT(20) effectMiscValue1 INT(11) effectMiscValue2 INT(11) effectMiscValue3 INT(11) effectTriggerSpell1 INT(11) effectTriggerSpell2 INT(11) effectTriggerSpell3 INT(11) effectPointsPerCombo1 INT(11) effectPointsPerCombo2 INT(11) effectPointsPerCombo3 INT(11) spellVisualID1 INT(11) spellVisualID2 INT(11) spellIconId INT(11) ActiveIconId INT(11) spellPriority INT(11) UnknownFlag INT(11) Name TEXT Name1 TEXT The Localised Korean version of the above. Name2 TEXT The Localised French version of the above. Name3 TEXT The Localised German version of the above. Name4 TEXT The Localised Chinese version of the above. Name5 TEXT The Localised Taiwanese version of the above. Name6 TEXT The Localised Spanish (Traditional) version of the above. Name7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM1 FLOAT A checksum value for the preceeding text fields. NameSubText TEXT NameSubText1 TEXT The Localised Korean version of the above. NameSubText2 TEXT The Localised French version of the above. NameSubText3 TEXT The Localised German version of the above. NameSubText4 TEXT The Localised Chinese version of the above. NameSubText5 TEXT The Localised Taiwanese version of the above. NameSubText6 TEXT The Localised Spanish (Traditional) version of the above. NameSubText7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM2 FLOAT A checksum value for the preceeding text fields. Description TEXT Description1 TEXT The Localised Korean version of the above. Description2 TEXT The Localised French version of the above. Description3 TEXT The Localised German version of the above. Description4 TEXT The Localised Chinese version of the above. Description5 TEXT The Localised Taiwanese version of the above. Description6 TEXT The Localised Spanish (Traditional) version of the above. Description7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM3 FLOAT A checksum value for the preceeding text fields. auraDescription TEXT auraDescription1 TEXT The Localised Korean version of the above. auraDescription2 TEXT The Localised French version of the above. auraDescription3 TEXT The Localised German version of the above. auraDescription4 TEXT The Localised Chinese version of the above. auraDescription5 TEXT The Localised Taiwanese version of the above. auraDescription6 TEXT The Localised Spanish (Traditional) version of the above. auraDescription7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM4 FLOAT A checksum value for the preceeding text fields. manaCostPct INT(11) startRecoveryCategory INT(11) startRecoveryTime INT(11) maxTargetLevel INT(11) spellClassSet INT(11) spellClassMask1 INT(11) spellClassMask2 INT(11) maxTargets INT(11) defenseType INT(11) preventionType INT(11) stanceBarOrder INT(11) DamageMultiplier1 FLOAT DamageMultiplier2 FLOAT DamageMultiplier3 FLOAT minFactionId INT(11) minReputation INT(11) requiredAuraVision INT(11) Description of the fields Id INT(11) Unique Id school INT(11) Category INT(11) castUI INT(11) dispelType INT(11) mechanic FLOAT attributes FLOAT attributesEx FLOAT attributesEx2 FLOAT attributesEx3 FLOAT attributesEx4 FLOAT shapeshiftMask INT(11) shapeshiftexclude FLOAT targets FLOAT targetCreatureType INT(11) requiresSpellFocus INT(11) casterAuraState INT(11) targetAuraState INT(11) castingTimeIndex INT(11) recoveryTime INT(11) categoryRecoveryTime INT(11) auraInterruptFlags INT(11) channelInterruptFlags INT(11) procTypeMask INT(11) procChance INT(11) procCharges INT(11) MaxLevel INT(11) baseLevel INT(11) spellLevel INT(11) durationIndex INT(11) PowerType INT(11) manaCost INT(11) manaCostPerLevel INT(11) manaCostPerSecond INT(11) manaCostPerSecondPerLevel INT(11) rangeIndex INT(11) Speed INT(11) modalNextSpell INT(11) stackAmount INT(11) Totem INT(11) Totem2 INT(11) reagent1 INT(11) reagent2 INT(11) reagent3 INT(11) reagent4 INT(11) reagent5 INT(11) reagent6 INT(11) reagent7 INT(11) reagent8 INT(11) reagentCount1 INT(11) reagentCount2 INT(11) reagentCount3 INT(11) reagentCount4 INT(11) reagentCount5 INT(11) reagentCount6 INT(11) reagentCount7 INT(11) reagentCount8 INT(11) equippedItemClass INT(11) equippedItemSubclass INT(11) equippedItemInvType INT(11) effect1 INT(11) effect2 INT(11) effect3 INT(11) effectDieSides1 INT(11) effectDieSides2 INT(11) effectDieSides3 INT(11) effectBaseDice1 INT(11) effectBaseDice2 INT(11) effectBaseDice3 INT(11) effectDicePerLevel1 INT(11) effectDicePerLevel2 INT(11) effectDicePerLevel3 INT(11) effectRealPointsPerLevel1 INT(11) effectRealPointsPerLevel2 INT(11) effectRealPointsPerLevel3 INT(11) effectBasePoints1 INT(11) effectBasePoints2 INT(11) effectBasePoints3 INT(11) effectMechanic1 INT(11) effectMechanic2 INT(11) effectMechanic3 INT(11) implicitTargetA1 INT(11) implicitTargetA2 INT(11) implicitTargetA3 INT(11) implicitTargetB1 INT(11) implicitTargetB2 INT(11) implicitTargetB3 INT(11) effectRadiusIndex1 INT(11) effectRadiusIndex2 INT(11) effectRadiusIndex3 INT(11) effectAura1 INT(11) effectAura2 INT(11) effectAura3 INT(11) effectAmplitude1 INT(11) effectAmplitude2 INT(11) effectAmplitude3 INT(11) effectMultipleValue1 INT(11) effectMultipleValue2 BIGINT(20) effectMultipleValue3 BIGINT(20) effectChainTarget1 INT(11) effectChainTarget2 INT(11) effectChainTarget3 INT(11) effectItemType1 INT(11) effectItemType2 BIGINT(20) effectItemType3 BIGINT(20) effectMiscValue1 INT(11) effectMiscValue2 INT(11) effectMiscValue3 INT(11) effectTriggerSpell1 INT(11) effectTriggerSpell2 INT(11) effectTriggerSpell3 INT(11) effectPointsPerCombo1 INT(11) effectPointsPerCombo2 INT(11) effectPointsPerCombo3 INT(11) spellVisualID1 INT(11) spellVisualID2 INT(11) spellIconId INT(11) ActiveIconId INT(11) spellPriority INT(11) UnknownFlag INT(11) Name TEXT Name1 TEXT The Localised Korean version of the above. Name2 TEXT The Localised French version of the above. Name3 TEXT The Localised German version of the above. Name4 TEXT The Localised Chinese version of the above. Name5 TEXT The Localised Taiwanese version of the above. Name6 TEXT The Localised Spanish (Traditional) version of the above. Name7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM1 FLOAT A checksum value for the preceeding text fields. NameSubText TEXT NameSubText1 TEXT The Localised Korean version of the above. NameSubText2 TEXT The Localised French version of the above. NameSubText3 TEXT The Localised German version of the above. NameSubText4 TEXT The Localised Chinese version of the above. NameSubText5 TEXT The Localised Taiwanese version of the above. NameSubText6 TEXT The Localised Spanish (Traditional) version of the above. NameSubText7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM2 FLOAT A checksum value for the preceeding text fields. Description TEXT Description1 TEXT The Localised Korean version of the above. Description2 TEXT The Localised French version of the above. Description3 TEXT The Localised German version of the above. Description4 TEXT The Localised Chinese version of the above. Description5 TEXT The Localised Taiwanese version of the above. Description6 TEXT The Localised Spanish (Traditional) version of the above. Description7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM3 FLOAT A checksum value for the preceeding text fields. auraDescription TEXT auraDescription1 TEXT The Localised Korean version of the above. auraDescription2 TEXT The Localised French version of the above. auraDescription3 TEXT The Localised German version of the above. auraDescription4 TEXT The Localised Chinese version of the above. auraDescription5 TEXT The Localised Taiwanese version of the above. auraDescription6 TEXT The Localised Spanish (Traditional) version of the above. auraDescription7 TEXT The Localised Spanish (Latin America) version of the above. TEXTCHECKSUM4 FLOAT A checksum value for the preceeding text fields. manaCostPct INT(11) startRecoveryCategory INT(11) startRecoveryTime INT(11) maxTargetLevel INT(11) spellClassSet INT(11) spellClassMask1 INT(11) spellClassMask2 INT(11) maxTargets INT(11) defenseType INT(11) preventionType INT(11) stanceBarOrder INT(11) DamageMultiplier1 FLOAT DamageMultiplier2 FLOAT DamageMultiplier3 FLOAT minFactionId INT(11) minReputation INT(11) requiredAuraVision INT(11) auto-generated by the getMaNGOS.eu MAGNET dbcdocs module
    1 point
  24. If you are using one of the development branches of Mangos then you know there are often many database updates that can happen. You can apply each of them by hand should you choose. But you can use the InstallDatabases.bat script found in the database repo to do the work for you. Run the script and you will see a screen like: __ __ _ _ ___ ___ ___ | \/ |__ _| \| |/ __|/ _ \/ __| Database Setup and | |\/| / _` | .` | (_ | (_) \__ \ |_| |_\__,_|_|\_|\___|\___/|___/ World Loader v0.07 _____________________________________________________________ Website / Forum / Wiki: https://getmangos.eu _____________________________________________________________ Character Database : V - Toggle Actually Create Character DB (YES) C - Toggle Create Character DB Structure (YES) B - Apply Character DB updates (YES) World Database : E - Toggle Actually Create World DB (YES) W - Toggle Create World DB Structure (YES) D - Toggle World Type (POPULATED) U - Apply World DB updates (YES) Realm Database : T - Toggle Actually Create Realm DB (YES) R - Toggle Create Realm Db Structure (YES) Y - Apply Realm DB updates (YES) L - Toggle Add RealmList Entry (YES) N - Next Step X - Exit . Please select an activity ? : We need to switch off the creation and initial load on each of the databases. Press V [ENTER] Press C [ENTER] Press E [ENTER] Press W [ENTER] Press T [ENTER] Press R [ENTER] Press L [ENTER] Your screen should now look like: __ __ _ _ ___ ___ ___ | \/ |__ _| \| |/ __|/ _ \/ __| Database Setup and | |\/| / _` | .` | (_ | (_) \__ \ |_| |_\__,_|_|\_|\___|\___/|___/ World Loader v0.07 _____________________________________________________________ Website / Forum / Wiki: https://getmangos.eu _____________________________________________________________ Character Database : V - Toggle Actually Create Character DB (NO) C - Toggle Create Character DB Structure (NO) B - Apply Character DB updates (YES) World Database : E - Toggle Actually Create World DB (NO) W - Toggle Create World DB Structure (NO) U - Apply World DB updates (YES) Realm Database : T - Toggle Actually Create Realm DB (NO) R - Toggle Create Realm Db Structure (NO) Y - Apply Realm DB updates (YES) L - Toggle Add RealmList Entry (NO) N - Next Step X - Exit . Please select an activity ? : Now press N [ENTER] and proceed exactly as you would for a normal install This will only apply the required updates and skip any which are already installed.
    1 point
  25. Goals for 2019 For 2019 the following are what we would like to achieve: Release Version 22 for Zero, One, Two and Three containing all the recent updates and fixes we have. Redo the server commands to make them a bit more standard and obvious. Break out AHBot into its own daemon process Develop a mangos update daemon, which allows the ability to apply DB content and minor updates automatically Normalise the character DB and remove data blob fields Move some hardcoded values from the core into the DB, possibly some enums as well. Implement Stormlib library for Zero, One and Two and remove mlib Apply the Unified Extractor to Three and Four (requires stormlib) Look at removing DBC usage from the Core and change the extraction process to include importing into a DB for use by the core. Including Multiple locale support. This would facilitate the removal of stormlib / mlib from the core and only be needed by the extraction tools. Look at Adapting EAI to match SAI functionality. As well as some of the more obvious ones: Continue to standardise the code across the cores where its appropriate to do so. Document where it differs and why. Clear down reported bugs on the Project Tracker. Improve the World Database with updates and corrections. Improve the Wiki Documentation. Include some example Eluna scripts to assist those starting out learning to script with Eluna. Include some custom Eluna scripts to help showcase it's abilities. Finally, we would like to get into a twice yearly Release cycle of more major releases. MangosVB (Formerly Spurious) RoadMap for 2017 Add RealmDB from c++ Mangos and modifying MangosVB to be compatible with it. Once done, this will be linked via a git submodule Work out how to get MangosVB to use the standard Mangos map format. Finishing warden functionality (so it can use/read signatures from DB) Merge all of the changes from Zero to One and Two Investigate into voice functionality for One / Two Doing spells.. implementing them like stealth and getting a proper DB script system in place.
    1 point
  26. Hello, in this tutorial, I will explain a step-by-step approach to configure, install and run Mangos on a Debian 8 system. To fully execute the installation, you need an original copy of the game client version you want to run. This guide has been fully tested on an empty Debian 8 system with minimal installation. Let's go.. Setup the database: Debian is supporting MySQL by default. This part of the guide will help you to setup your instance of MySQL. Launch a terminal, and if it's not already the case, you need to become the 'root' user: sudo su - root Then, install MySQL, enter your root password when you will be prompted for: aptitude -y install mysql-server Once MySQLis installed, start it: systemctl start mysql I do advise you to add MySQL service at startup to execute it automatically: systemctl enable mysql Let's secure your MySQL installation, execute the following command: mysql_secure_installation I advise you to setup the following parameters: Do not change the root password Remove anonymous access Disable remote access for the root user Remove the test database Reload the privileges Now that the setup of the database is done, we need to add the prerequisites for the mangos database configuration. We need to start by creating an user for mangos, login to the database using: mysql -u root -p Create the user you wish, the example given is creating an user 'mangos' who can connect from the 'localhost' and has the password 'password' (do not forget the ';') at the end: CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'password'; We then need to grant privileges to that user that we can use it later to setup the Mangos schemas (again, do not forget the ';' symbol): GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost'; Exit the terminal: quit Congratulations, you have setup the pre-requisites for the database on Debian ! Install Mangos: We are now at the interesting part, how do we install Mangos on Debian ? Well, assuming you are logged in as 'root', go to the home directory: cd ~ Now, we can download our installer: wget https://raw.githubusercontent.com/mangoszero/server/master/linux/getmangos.sh Set the permissions to be allowed to execute it: chmod 700 getmangos.sh And execute it: ./getmangos.sh Before we go further, some explanations on the available activities: Install Prerequisites will install all the necessary dependencies for you to build & run mangos. Toggled by default. Set Download And Install Paths will allow you to specify where the sources must be downloaded and where the binaries must be installed. Toggled by default. Clone Source repositories will help you cloning the Mangos sources. Toggled by default. Build MaNGOS will assist you in the building process of MaNGOS. Toggled by default. Install MaNGOS will help you installing MaNGOS. Toggled by default. Install Databases will assist you in the database schemas creation. Toggled by default. Extract Resources will help you to extract the DBC, maps, mmaps and vmaps from the game client. Toggled by default. Create Code::Blocks Project File will create a project for the Code::Blocks editor. Do not toggle this option if you don't plan to edit the MaNGOS sources. Now that you know everything, let the default options selected and select 'Ok' thanks to the Tab key. The script is now installing the necessary dependencies on your Debian. You will be prompted to provide your agreement to install the build dependencies. Select 'Yes' two times. User selection: Mangos provides you the opportunity to run it under another user than the 'root' one. This is a good practice to isolate softwares and limit the security impact in case of an exploited vulnerability. The default proposed run user is 'mangos' but you can change if you wish. Select 'Ok' to continue. If you have already performed this step, the installer will ask you whether you want to keep that user. I advise you to reply 'Yes' except if you know what you are doing. Choose WoW Release: The next screen is requesting you to choose the WoW release you are willing to install. Select the one you that fits your wish and select 'Ok'. Source-Code Path: The next screen is asking you to provide the source path. By default, the proposed format is /home/<run user>/<wow version>/src. For instance, for a run user 'mangos' and a wow version 'Vanilla', the proposed path will be: /home/mangos/zero/src Reply 'Yes' to create the directory if it does not exist. If it does exist and contains sources, the installer will ask you whether you want to delete the content or not. Installation Path: The next screen is asking you to provide the installation path. This is the location from where you will execute the Mangos processes. By default, the proposed format is /home/<run user>/<wow version>. For instance, for a run user 'mangos' and a wow version 'Vanilla', the proposed path will be: /home/mangos/zero If it does exist and contains compiled sources, the installer will ask you whether you want to delete the content or not. Clone or update MaNGOS: The next step of the script is asking you whether you want to clone, update or use an existing copy of the MaNGOS sources. For a fresh installation, select the option '0 Clone a fresh copy of MaNGOS'. The installer will now connect to Github and check the available development branch, currently, the last stable release is the Rel21 and is hosted in the 'master' branch. The installer is now cloning the server and database repositories. Build Options: You are now at the build step. Some explanations over this screen: Enable Debug will setup debug flags and more tracing on Mangos. Use this build option only if you're requested to to fix a bug. Building a software in debug mode significantly reduces its performances. Use Standard Malloc, toggle this option to use the standard memory allocation. Untoggle this option only if you know what you are doing. Use External ACE libraries. Allows you to use the ACE libraries coming from your system. Untoggle this option only if you know what you are doing. Use PostgreSQL insteald of MySQL/MariaDB. Allows you to use another database provider than the default one. This option has not been tested and, if you have followed the tutorial so far, you should have setup MySQL ;-) Build Client Tools will build the extractors necessary to get dbc, maps, mmaps and vmaps out of the game client. Unselect this option only if you already have these resources extracted. Use SD3 will allow you to build the ScriptDev3 Engine provided with MaNGOS. We advise you to keep this option toggled except if you don't like living world based on C++ scripts. Use Eluna will allow you to build the Eluna Engine provided with MaNGOS. We advise you to keep this option toggled except if you don't like living world based on LUA scripts. Select 'Ok' to proceed with the build process and confirm that would want to build MaNGOS. The installer is now building MaNGOS. Depending on the speed of your system, you have the time to drink a glass of water or a cup of coffee. :-) Installation: You will now be prompted to install Mangos. Select 'Yes' to install it. Database Operations: Wait.. another database setup ?! Yes, but this time, we are populating the database with the mangos data. You have three options here: Install clean databases to setup a fresh database Update existing databases to update your old version of the database Skip database work... but it wouldn't make sense :-) Select the first option if you are performing a fresh installation. You will be prompted to select your type of database. If you followed the guide so far, you should select "MariaDB" because Debian is providing an old version of MySQL. The installer will then request your database information, if you followed the guide, you need to provide the following input: Hostname: localhost Port: 3306 User: mangos Password: password You can now choose into several options: ReInstall the realm database, containing all the realms information and the accounts ReInstall the world database, containing all the world configuration ReInstall the characters database, containing all the characters information Update the realmlist to setup an initial game server By default, all options must be toggled. The installer will now perform the database import. Extract Game Data: This step will copy the extractors to the wow game location, extract dbc, maps, mmaps and vmaps and copy these extracted data to your installation directory. The installer will automatically look for a suitable WoW client into your /home directory. If it doesn't find anything, you will have to provide your game location path. If the provided path doesn't contain any game data, the installer will exit. The extractor steps allows you to select the artifacts you want to extract: DBC and Maps, which are the minimum set of data you need to extract Mmaps which are the movement maps, based on vectoriel calculation, required for an efficient pathfinding Vmaps which are the virtual maps, used for collision detection and LoS detection The Mmaps extraction is taking several hours, you will have the time to sleep or drink several coffees. :-) Congratulations ! You almost did it ! Still few steps to perform before you can play on your preferred game. First of all, you need to switch to your run user. If you used mangos, the command will look like: su - mangos You need then to go to the configuration directory of your installation, if you installed Vanilla, it will look like the following command: cd /home/mangos/zero/etc Copy the realmd.conf.dist and mangosd.conf.dist files to their expected name: cp realmd.conf.dist realmd.conf cp mangosd.conf.dist mangosd.conf Edit the realmd.conf and find the line LoginDatabaseInfo. Provide your database information, according to this guide and if you have installed Vanilla, it should look like: LoginDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_realm" Save your file and edit the file mangosd.conf. You need to provide the database information for the three database we have configured with our installer: LoginDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_realm" WorldDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_world" CharacterDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_characters" Save your file and go back to the 'root' user: exit Make sure it keeps running ! What could be cooler than having the MaNGOS server starting automatically with your server ? Not much... so let's configure systemd to do so ! First of all, we need to tell it that we have two new services. Declare them by creating the corresponding files: touch /etc/systemd/system/realmd.service touch /etc/systemd/system/mangosd.service # Or give it a better name like zero.service if it's a vanilla gaming server for instance. Now, edit the /etc/systemd/system/realmd.service file and add the following content (Replace the installation path and the run user by the settings you have provided during the installation): [Unit] Description=Realmd service After=network.target mysql.service [Service] Type=simple User=mangos ExecStart=/home/mangos/zero/bin/realmd -c /home/mangos/zero/etc/realmd.conf Restart=on-abort [Install] WantedBy=multi-user.target Save this file and edit the /etc/systemd/system/mangosd.service file (or the better name you gave to it) with the following content (same remark than above the installation path and the run user): [Unit] Description=WoW Vanilla service After=network.target mysql.service [email protected] [Service] Type=simple User=mangos ExecStart=/home/mangos/zero/bin/mangosd -c /home/mangos/zero/etc/mangosd.conf WorkingDirectory=/home/mangos/zero/bin StandardInput=tty TTYPath=/dev/tty3 TTYReset=yes TTYVHangup=yes Restart=on-abort [Install] WantedBy=multi-user.target We are almost there ! You now need to tell systemd to reload its configuration: systemctl daemon-reload And let's start our processes to verify that they work: systemctl start realmd systemctl start mangosd To verify that it worked, execute the following command: systemctl status realmd systemctl status mangosd If it's working properly, you should have an output indicating you the success status for both service. The last step is to tell systemd to execute them at startup, for this, execute the following commands: systemctl enable realmd systemctl enable mangosd Congratulations ! You are now done with the MaNGOS setup on Debian 8 :-) You can now reboot your computer to verify that everything is indeed started: reboot
    1 point
  27. Hello, in this tutorial, I will explain a step-by-step approach to configure, install and run Mangos on a Fedora 25 Linux system. To fully execute the installation, you need an original copy of the game client version you want to run. This guide has been fully tested on an empty Fedora 25 system with minimal installation. Let's go.. Setup the database: Fedora is supporting MariaDB instead of MySQL by default. This part of the guide will help you to setup your instance of MariaDB. Launch a terminal, and if it's not already the case, you need to become the 'root' user: sudo su - root Then, install MariaDB: yum -y install mariadb-server Once MariaDB is installed, start it: systemctl start mariadb I do advise you to add mariadb service at startup to execute it automatically: systemctl enable mariadb Let's secure your mariadb installation, execute the following command: mysql_secure_installation I advise you to setup the following parameters: Setup a Root password Remove anonymous access Disable remote access for the root user Remove the test database Reload the privileges Verify that you database configuration is working properly. systemctl status mariadb Now that the setup of the database is done, we need to add the prerequisites for the mangos database configuration. We need to start by creating an user for mangos, login to the database using: mysql -u root -p Create the user you wish, the example given is creating an user 'mangos' who can connect from the 'localhost' and has the password 'password' (do not forget the ';') at the end: CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'password'; We then need to grant privileges to that user that we can use it later to setup the Mangos schemas (again, do not forget the ';' symbol): GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost'; Exit the terminal: quit Congratulations, you have setup the pre-requisites for the database on Fedora ! Install Mangos: We are now at the interesting part, how do we install Mangos on Fedora ? Well, assuming you are logged in as 'root', go to the home directory: cd ~ Now, we can download our installer: wget https://raw.githubusercontent.com/mangoszero/server/master/linux/getmangos.sh Set the permissions to be allowed to execute it: chmod 700 getmangos.sh And execute it: ./getmangos.sh Before we go further, some explanations on the available activities: Install Prerequisites will install all the necessary dependencies for you to build & run mangos. Toggled by default. Set Download And Install Paths will allow you to specify where the sources must be downloaded and where the binaries must be installed. Toggled by default. Clone Source repositories will help you cloning the Mangos sources. Toggled by default. Build MaNGOS will assist you in the building process of MaNGOS. Toggled by default. Install MaNGOS will help you installing MaNGOS. Toggled by default. Install Databases will assist you in the database schemas creation. Toggled by default. Extract Resources will help you to extract the DBC, maps, mmaps and vmaps from the game client. Toggled by default. Create Code::Blocks Project File will create a project for the Code::Blocks editor. Do not toggle this option if you don't plan to edit the MaNGOS sources. Now that you know everything, let the default options selected and select 'Ok' thanks to the Tab key. The script is now installing the necessary dependencies on your Fedora. You will be prompted to provide your agreement to install the build dependencies. Select 'Yes' two times. On Fedora, ACE will also be downloaded and built, at this moment, it is the version 6.4.2 which is built by the installer. User selection: Mangos provides you the opportunity to run it under another user than the 'root' one. This is a good practice to isolate softwares and limit the security impact in case of an exploited vulnerability. The default proposed run user is 'mangos' but you can change if you wish. Select 'Ok' to continue. If you have already performed this step, the installer will ask you whether you want to keep that user. I advise you to reply 'Yes' except if you know what you are doing. Choose WoW Release: The next screen is requesting you to choose the WoW release you are willing to install. Select the one you that fits your wish and select 'Ok'. Source-Code Path: The next screen is asking you to provide the source path. By default, the proposed format is /home/<run user>/<wow version>/src. For instance, for a run user 'mangos' and a wow version 'Vanilla', the proposed path will be: /home/mangos/zero/src Reply 'Yes' to create the directory if it does not exist. If it does exist and contains sources, the installer will ask you whether you want to delete the content or not. Installation Path: The next screen is asking you to provide the installation path. This is the location from where you will execute the Mangos processes. By default, the proposed format is /home/<run user>/<wow version>. For instance, for a run user 'mangos' and a wow version 'Vanilla', the proposed path will be: /home/mangos/zero If it does exist and contains compiled sources, the installer will ask you whether you want to delete the content or not. Clone or update MaNGOS: The next step of the script is asking you whether you want to clone, update or use an existing copy of the MaNGOS sources. For a fresh installation, select the option '0 Clone a fresh copy of MaNGOS'. The installer will now connect to Github and check the available development branch, currently, the last stable release is the Rel21 and is hosted in the 'master' branch. The installer is now cloning the server and database repositories. Build Options: You are now at the build step. Some explanations over this screen: Enable Debug will setup debug flags and more tracing on Mangos. Use this build option only if you're requested to to fix a bug. Building a software in debug mode significantly reduces its performances. Use Standard Malloc, toggle this option to use the standard memory allocation. Untoggle this option only if you know what you are doing. Use External ACE libraries. Allows you to use the ACE libraries coming from your system. Untoggle this option only if you know what you are doing. Use PostgreSQL insteald of MySQL/MariaDB. Allows you to use another database provider than the default one. This option has not been tested and, if you have followed the tutorial so far, you should have setup MariaDB ;-) Build Client Tools will build the extractors necessary to get dbc, maps, mmaps and vmaps out of the game client. Unselect this option only if you already have these resources extracted. Use SD3 will allow you to build the ScriptDev3 Engine provided with MaNGOS. We advise you to keep this option toggled except if you don't like living world based on C++ scripts. Use Eluna will allow you to build the Eluna Engine provided with MaNGOS. We advise you to keep this option toggled except if you don't like living world based on LUA scripts. Select 'Ok' to proceed with the build process and confirm that would want to build MaNGOS. The installer is now building MaNGOS. Depending on the speed of your system, you have the time to drink a glass of water or a cup of coffee. :-) Installation: You will now be prompted to install Mangos. Select 'Yes' to install it. Database Operations: Wait.. another database setup ?! Yes, but this time, we are populating the database with the mangos data. You have three options here: Install clean databases to setup a fresh database Update existing databases to update your old version of the database Skip database work... but it wouldn't make sense :-) Select the first option if you are performing a fresh installation. You will be prompted to select your type of database. If you followed the guide so far, you should select "MariaDB". The installer will then request your database information, if you followed the guide, you need to provide the following input: Hostname: localhost Port: 3306 User: mangos Password: password You can now choose into several options: ReInstall the realm database, containing all the realms information and the accounts ReInstall the world database, containing all the world configuration ReInstall the characters database, containing all the characters information Update the realmlist to setup an initial game server By default, all options must be toggled. The installer will now perform the database import. Extract Game Data: This step will copy the extractors to the wow game location, extract dbc, maps, mmaps and vmaps and copy these extracted data to your installation directory. The installer will automatically look for a suitable WoW client into your /home directory. If it doesn't find anything, you will have to provide your game location path. If the provided path doesn't contain any game data, the installer will exit. The extractor steps allows you to select the artifacts you want to extract: DBC and Maps, which are the minimum set of data you need to extract Mmaps which are the movement maps, based on vectoriel calculation, required for an efficient pathfinding Vmaps which are the virtual maps, used for collision detection and LoS detection The Mmaps extraction is taking several hours, you will have the time to sleep or drink several coffees. :-) Congratulations ! You almost did it ! Still few steps to perform before you can play on your preferred game. First of all, you need to switch to your run user. If you used mangos, the command will look like: su - mangos You need then to go to the configuration directory of your installation, if you installed Vanilla, it will look like the following command: cd /home/mangos/zero/etc Copy the realmd.conf.dist and mangosd.conf.dist files to their expected name: cp realmd.conf.dist realmd.conf cp mangosd.conf.dist mangosd.conf Edit the realmd.conf and find the line LoginDatabaseInfo. Provide your database information, according to this guide and if you have installed Vanilla, it should look like: LoginDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_realm" Save your file and edit the file mangosd.conf. You need to provide the database information for the three database we have configured with our installer: LoginDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_realm" WorldDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_world" CharacterDatabaseInfo = "127.0.0.1;3306;mangos;password;zero_characters" Save your file and go back to the 'root' user: exit Make sure it keeps running ! What could be cooler than having the MaNGOS server starting automatically with your server ? Not much... so let's configure systemd to do so ! First of all, we need to tell it that we have two new services. Declare them by creating the corresponding files: touch /etc/systemd/system/realmd.service touch /etc/systemd/system/mangosd.service # Or give it a better name like zero.service if it's a vanilla gaming server for instance. Now, edit the /etc/systemd/system/realmd.service file and add the following content (Replace the installation path and the run user by the settings you have provided during the installation): [Unit] Description=Realmd service After=network.target mariadb.service [Service] Type=simple User=mangos Environment=LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ExecStart=/home/mangos/zero/bin/realmd -c /home/mangos/zero/etc/realmd.conf Restart=on-abort [Install] WantedBy=multi-user.target Save this file and edit the /etc/systemd/system/mangosd.service file (or the better name you gave to it) with the following content (same remark than above the installation path and the run user): [Unit] Description=WoW Vanilla service After=network.target mariadb.service [email protected] [Service] Type=simple User=mangos ExecStart=/home/mangos/zero/bin/mangosd -c /home/mangos/zero/etc/mangosd.conf WorkingDirectory=/home/mangos/zero/bin StandardInput=tty TTYPath=/dev/tty3 TTYReset=yes TTYVHangup=yes Restart=on-abort [Install] WantedBy=multi-user.target We are almost there ! You now need to tell systemd to reload its configuration: systemctl daemon-reload And let's start our processes to verify that they work: systemctl start realmd systemctl start mangosd To verify that it worked, execute the following command: systemctl status realmd systemctl status mangosd If it's working properly, you should have an output indicating you the success status for both service. The last step is to tell systemd to execute them at startup, for this, execute the following commands: systemctl enable realmd systemctl enable mangosd Congratulations ! You are now done with the MaNGOS setup on Fedora 25 :-) WARNING! If you have installed mangos into your home directory, the SELinux will block your execution. To disable this check, you can: Install Mangos elsewhere Update the SELinux parameters To update it, you need to edit the file /etc/selinux/config and change the following line: SELINUX=PERMISSIVE You can now reboot your computer to verify that everything is indeed started: reboot
    1 point
  28. Archive and compression MPQ Files: archive format. Chunked Format Data Files DBC Files: DBC/DB2 files content layouts. DNC.db: Day-Night cycle specification. LIT Files: lighting information. SBT Files: cinematic subtitles. TRS Files: minimap hash translation. WDB Files: client data cache. Graphics BLP Files: texture format, supporting texture compression, and multiple resolutions. BLS Files: instructions for pixel and vertex shaders. M2 Files: Blizzard Entertainment's own model format, also known as '''.mdx'''. WFX Files: assigns shaders to surfaces. WMO Files: World Map Object file, containing either a group definition or a single world map object. Map Data ADT Files: terrain and object information for map tiles. WDL Files: low-resolution height maps. WDT Files: map and object placement information. ZMP Files: map tile reference.
    1 point
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use