Jump to content

WIKI Activity

Showing articles posted in for the last 365 days.

This stream auto-updates     

  1. Last week
  2. Installing Mangos on Windows (using EasyBuild)

    It is kinda covered in the VS install guide (steps 3 & 4):
  3. Earlier
  4. Installing Mangos on Windows (using EasyBuild)

    I had huge trouble getting started at first. The EasyBuild and even the CMake of Visual Studio 2017 weren't able to build my solution, i got always the error that my C and CXX Compiler are not found. Exact messages: The C compiler identification is unknown The CXX compiler identification is unknown CMake Error at CMakeLists.txt:35 (project): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:35 (project): No CMAKE_CXX_COMPILER could be found. If you're running into the same problems and you aren't a highly expierenced C++/.NET developer here is the solution. When you're installing Visual Studio 2017 Community on a new system you need to install the desktopdevelopment kit c++ with it. Especially the Windows SDK needs to be installed right (you can do that within the install-wizard of visual studio). After doing that the error disappears and you can build your solution! I was missing that all the time and i spent 6 hours to figure that out.. Might be basic stuff for the most of you guys, but i just wanted to share my exp so far :-) So hopefully that little tip is helpful for future developer
  5. How to use EasyBuild

    thinks for all
  6. Installing Mangos on Windows (using EasyBuild)

    Wrong .dll look at the name, its missing 32 in the filename.
  7. Installing Mangos on Windows (using EasyBuild)

    Everything worked just fine until I attempted to launch the database (step #32). When I double-clicked realmd, it failed because it was unable to find LIBEAY32.dll. However, libeay.dll is in the same directory as realmd.exe. Any thoughts?
  8. Installing Mangos on Windows (using EasyBuild)

    on step 33 it's going wrong look to the screenshot that i made. I checked the mangosd.conf to make sure the DataDir is correct, but i find out that when you use the extract on point 20) Extract the client data using extractresources.sh (See HERE to a guide to extracting the client data) The extraction won't extract it in the right map because i came out in the root of the server map and not in the servermap/data. So if you are stuck on the same step just copy the data from root of the server/client map to the data. Example: E:\World of Warcraft 1.12\Data
  9. Thanks! Just a few minor notes: 1) do not forward port 3443 unless you exactly know what you're doing. This would be a server security break if the RA console were not disabled by default; 2) no need to change BindIP in the config file while it stays at the default value, which means, as usually, binding to every system IP found. If, perchance, you found it set to anything different (in particular,, then check the same setting in the realmd.conf file also; 3) no need to change default value in the localAddress column of realmlist table, such change may prevent local client access to the server for some firewall settings.
  10. DISCLAIMER: You are making your server more available to the world by following these steps. Be aware that you might put your server at risk for cyber attack or compromise if you publish details about connecting to your server online. Before continuing, please consider taking steps to secure your server such as disabling remote root access to your shell and database, disable remote access for your mangos database user, change your router password to something strong, install any firmware updates for your router and any security updates available for your server. Unless you are comfortable with the risk and know how to protect yourself, be careful of who you share your server information with. OK! Now that's out of the way... These instructions are for setting up a dedicated hardware server on a home network. I didn't find clear concise instructions for setting it up for external connections so I'll share what worked for me. These instructions assume that your server is up and running with localhost or in the BindIP conf fields and the address column of your server's realmlist entry in your realmd (by default) schema. Before we start... If your server is running, stop both server and realm executables by whatever your preferred method is. Server Conf Use the ip a command to determine your server's LAN IP address. Probably something like 192.168.1.xxx. In both your mangosd.conf and realmd.conf change the BindIP value to a string containing your server's LAN IP, like: BindIP = "" # or whatever the IP address might be... Save and close both of those files. Determine Your Server's Public IP You will need your public IP address which you can find by googling "what is my public ip address". IMPORTANT: Make sure that you do this from the server itself. Jot that down. DB Now open MySQL Workbench or the MySQL shell or whatever your favorite means of SQL delivery. In the realmd schema (by default) in the realmlist table find the entry for your server. Update the address column to be your public IP address that you jotted down before and in the localAddress column, put your LAN IP address, like 192.168.1.xxx. Port Forwarding If you have a netgear router you will go to routerlogin.net. You need to login with your admin username and password. The username is probably admin unless you changed it. The password is either in your router's documentation (on a card or something), on a sticker on the router or it's something you changed it to. That's on you. If these next instructions don't work for you, you may need to poke around your router's proprietary UI to find the right options... Good luck! At the top choose the ADVANCED tab. On the left, choose Advanced Setup On the Advanced Setup submenu, choose Port Forwarding / Port Triggering You will need to create 3 forwarding rules. For each PortNumber of the ports 3443, 3724 and 8085: Click the +Add Custom Service button Fill in the service name with something, maybe "mangosX" In the External Starting Port field, put the PortNumber In the External Ending Port field, put the PortNumber In the Internal IP address field, put your server's LAN IP address, 192.168.1... (probably) Click the Apply button to save the rule Now you can start your server back up by your preferred method. There's just one more step and that's setting up our client's realmlist.wtf file. This is also the part you'll tell your friends when they want to connect. Over wherever your actual WoW client lives, find the realmlist.wtf file and change the IP to the external IP address that you just jotted down previously. In your realmlist.wtf file you should now have: set realmlist <whateverYourExternalIPAddressIs> set patchlist <whateverYourExternalIPAddressIs> You (or your friend) is now ready to start their client with Wow.exe and join your awesome cool publicly available server! Enjoy!
  11. db_scripts

    @bdebaere - Magnet DbDocs data has been amended to include the missing fields - the wiki will be updated when this is republished
  12. Extracting Game Data

    open a git shell console and this will work. You have chosen not to integrate git into the normal paths
  13. Extracting Game Data

    Worked fine in my Windows 10 box.
  14. Extracting Game Data

    Can u explain what u mean with change dir?
  15. Mangos Online Packet Editor (MOPE)

    Just realized that the project name is misguiding. If I understand correctly, this is an editor for documentation (description) of the packets, not for the packets itself. Also, you have no need to port C# code to Linux. There is the .NET port "mono", containing both the compilator and the execution medium for JIT binaries. I've executed the JIT binaries generated under Win by the VS for "any CPU", on a Linux system under mono with no issue.
  16. Mangos Online Packet Editor (MOPE)

    @Akar - I'm a windows dev by trade, so this was written in C# However, since 90% of the work is done via SQL, it might be able to be ported to Linux
  17. Mangos Online Packet Editor (MOPE)

    @antz was this written only for Windows or does it support Linux also?
  18. Installing Mangos on Windows (using EasyBuild)

    Thanks for that, I will update the main article shortly
  19. Installing Mangos on Windows (using EasyBuild)

    To Help with any confusion on steps 15, 16, 17, and 18. Here is what you need to do. Make a folder for your server that holds your files (Mangosone) for example. Copy the file ace.dll from the bin/release folder into the tools folder. Copy libeay32.dll from the OpenSSL/lib folder (either C:\OpenSSL-Win32 or C:\OpenSSL-Win64 by default) into bin/Release Copy the file libmysql.dll from the MySQL/lib folder (similar to C:\Program Files\MySQL\MySQL Server 5.7) into bin/Release Now copy all the files (excluding the tools and lua_scripts folders) into your Mangosone folder. And the tools folder in the bin/release folder, you need to copy what's in it to your WoW TBC client folder with the wow.exe file in it.
  20. Since Mangos was first devised, the knowledge behind the packets sending information to and from the server has always been kept under wraps. - Anyone asking about information was normally told to 'go look in the code for details' I have long hated this so called cloak and dagger ideal as it harms the community greatly when people who have that information move on. I have therefore decided to create a Central Packet Knowledge System which covers all the versions of Wow. On that end I have set up a central Database, along with a small application to assist in populating this DB. The eventual goal is to extract all the relevant information back out and populate the Wiki with the information. The project is only in it's alpha stage, so any help testing or entering information would be greatly appreciated. Please contact @antz for a copy of the App plus log in credentials. This is main log in screen. A blank search is automatically done for you, the selected core is Classic by default. Click on a packet entry opens up the Edit Packet Screen This contains various information about the packet as well as the packet field definitions. Double-clicking on a field will open the field definition screen. This screen allows you to enter as much field information is you can, optionally you can also adjust which core this field is valid for (out of a maximum of the cores using this packet). This allows for different fields / field order based on the core it's used for. You can also use searches to filter the main list of packets.
  21. 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 !!
  22. What is MOTE ? Mangos Online Translation Editor or MOTE for short is a word based translation editor for MaNGOS, it aims to massive simplify the Adding / Editing of Translations for all the MaNGOS tables. Why is it MOTE different to other translation projects ? - It has been designed to be multi-core compatible, therefore sharing the translations of matching text between the cores. - By being word based, rather than entry based, the translation of a word needs only be done once and it becomes available anywhere the English word is used. - A simple user interface makes changing text very easy. The Initial login screen: (guest as the username and password will grant you read only access) The default main screen: Searching for bread* with German translations: Green means it has a translation, Red means is doesn't Clicking on an entry highlights it, and also updates the 'context bar' below the search results The 0123 shows which core it's for. in this example there are two entries, one which is present in all 4, and the other only present in M1,2,3 Double-clicking on an entry opens the translation edit screen: Double-clicking on an entry in the 'context bar' opens a screen to show how it's used: Clicking on either of the EDIT buttons will open the translation edit screen. If you would like to help contribute to the localisation effort, please contact @antz and he will provide you with the app and login credentials.
  23. 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.
  24. Data types of packet fields

    The numeric data longer than 1 byte are represented in the big-endian form. The cores provide the conversion (if needed) by the ">>" and "<<" operators. Data formats Type Getting it in the core Description uint8, uint16, uint32, int8, int16, int32 Direct conversion of numbers and enum members to the corresponding type, like uint8(SPELL_FAILED_DONT_REPORT) Signed and unsigned versions are interchangeable if the representation is correct. Boolean true/false are represented usually as uint8(1), uint8(0) respectively. uint64 (GUID) Object::GetObjectGuid() A 8-bytes value, see class ObjectGuid. It is used for nothing but GUIDs, so uint64(0) in the code should be changed to ObjectGuid(). PackedGUID Object::GetPackGUID(), ObjectGuid::ReadAsPacked() A GUID in the packed form can be 2 to 9 bytes long. A brief description is presented below. C string string::c_str() A zero-terminated sequence of characters. Read/write operators for string type ("<< string" so on) provide this conversion, making call to c_str() optional. Raw data ByteBuffer::contents(), BigNumber::AsByteArray() An arbitrary sequence of bytes, following the uint8, uint16, or uint32 field which stores the length of the sequence. A packed GUID consists of a flag byte followed by the GUID data. This is based on the 1:1 mapping of a bit of the flag byte to the byte in 8-bytes GUID. The flag byte contains only those bits set which correspond to the non-zero bytes of the full GUID. The packed GUID length varies from 2 bytes (the best case for a player with low GUID under 256) and 9 bytes (with the flag byte 0xFF followed by the full GUID). The most saving in size provide player GUIDs since any other GUID contains non-zero data in the highest bytes, at least in the 12 highest bits (see ObjectGuid class for details).
  25. Adding Waypoints

    @Olion Thanks for the input, I will add them in
  26. Adding Waypoints

    GJ! I would like to add few remarks. All this is checked on Zero. ".wp show on" (this is the actual command to show the path) takes as an argument the (db) GUID of the mob, or else the mob must be selected ingame. The visual WPs are temporary summons and will cease in 5 minutes, so they're never added to the "world.creature" table. Nothing to worry about, ".wp show off" is optional. Subcommands "wp show first", "wp show last", "wp show info" can be useful too. Try "wp show info" with selected visual WP. Looking within the game at the first path as an example, SELECT * FROM creature_movement WHERE id=97 ORDER BY POINT ASC; we find it containing 3-5 times more WPs than is actually required for such a simple path. The necessary points are the ones with some actions defined (in this case, the first and the last ones having a wait time). Between these two ii is enough to have 2-3 other points. Remember that extra WPs add not only the server load, but also network traffic, so avoid it as much as possible. Please feel free to remove this comment when/if the most substantial parts of it will be incorporated in the main text.
  27. Adding Waypoints

    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.
  1. Load more activity

Contact Us

To contact us click here
You can also email us at [email protected]

Privacy Policy | Terms & Conditions


The Link to the master list
of MaNGOS repositories:
Copyright © getMaNGOS. All rights Reserved.

This website is in no way associated with or endorsed by Blizzard Entertainment®