Jump to content

Foereaper

getMaNGOS Developer
  • Posts

    599
  • Joined

  • Last visited

  • Days Won

    1
  • Donations

    0.00 GBP 

Everything posted by Foereaper

  1. Since there's currently no tutorial in full for compiling and setting up a MaNGOS server on Windows, I'm brushing off the old dev21 build guide and updating it to be relatively current. If something needs to be changed, let me know and I'll do so. 1. INSTALLING DEPENDENCIES NOTE : Always use 64-bit version of dependencies where possible. There is no reason to compile and run the server in 32-bit mode unless you are restricted by OS or hardware. Install MySQL Community Server : MySQL :: Download MySQL Installer Install GitExtensions : Download Git Extensions from SourceForge.net Install OpenSSL : http://slproweb.com/products/Win32OpenSSL.html Download and install the FULL SSL version (not the one tagged Light) I would recommend installing both 32 and 64 bit OpenSSL libraries, this prevents future issues if you want to compile either 32 or 64 bit. If either of these say you are missing C++ redistributable packages, follow the prompts and install accordingly. Install CMake : https://cmake.org/download/ Get the latest Binary distribution for your platform 2. DOWNLOADING THE SOURCES For the sake of this tutorial we will be using Mangos Zero, but the same steps apply for One and Two. Change the GitHub links below accordingly. Create a folder named "Source" anywhere on your computer. This is the folder we will use to download the server and the database. Right click on the "Source" folder and click "Git Bash Here". Once the command prompt window opens, type in the following command and hit enter : git clone https://github.com/mangoszero/server --recursive --depth=1 This clones t he source as well as the submodules into the folder "Source/server". Once this is done, keep the command line window open and type the below command and hit enter : git clone https://github.com/mangoszero/database --recursive --depth=1 You should now have the database cloned to "Source/database", and you can close the command line window. 3. GENERATING THE BUILD FILES To generate the build files, which is what we will use to compile the server itself, open the CMake software you have previously installed on step 1. You now have two fields you need to fill in. Specifically : "Where is the source code : " In this field, you point to the "Source/server" folder you created earlier. (See below for example). "Where to build the binaries : " For this tutorial, we will use the same "Source" folder, however specify a new folder within "Source" and call it "build". (See below for example). After you have filled in both of these fields, hit "Configure". This will also prompt you which compiler to use! Make sure you select the correct compiler ! If you for some reason change any of the default values after configuration, you need to click "Configure" again BEFORE going to the next step. Once configuration is done, hit "Generate". If this finished without any errors, proceed to the next step. If you did however receive any errors, most likely you are missing one of the dependencies, have pointed to the wrong folders or selected the wrong compiler. Usually the error message you receive will make enough sense for you to isolate the issue. If not, make a new thread and provide the full output showing the error. 4. BUILDING THE CORE Once the build files are generated, either click the Open Project button next to Generate, or go to your "Source/build" folder and open the file MaNGOS.sln. This will open Visual Studio and you build your server like normal. I would recommend to compile the core in Debug mode (default) as that will provide you with crash dumps should the core crash for whatever reason, making it easier for us to help you debug. Once the core is done compiling, the server binaries, tools etc is located inside the "Source/build/bin/" folder, under either Debug or Release, depending on your choice. Copy the following files to wherever you want to run the server from. For the sake of this tutorial, make a new folder somewhere on your computer and call it "Server". lua_scripts folder ace.dll ahbot.conf.dist libmysql.dll mangosd.conf.dist mangosd.exe realmd.conf.dist realmd.exe If you compiled in Debug mode, also copy the following files to the "Server" folder. ace.pdb mangosd.pdb realmd.pdb If the core built successfully, move to the next step. If you have any compile errors, please post a full log displaying the error messages. Warnings can be ignored for now. 4. EXTRACTING GAME DATA NOTE: Tools should ALWAYS be compiled under Release mode, unless you are told otherwise during support. Debug tools will take A LONG TIME. You have been warned. Inside the "Source/build/bin/" and either Release or Debug folder there will be a folder named "Tools". Enter this folder and copy the following files: ExtractResources.sh make_vmaps.bat map-extractor.exe mmap_exclude.txt MoveMapGen.sh movemap-generator.exe offemsh.txt vmap-assembler.exe vmap-extractor.exe Paste these into your WoW directory and run ExtractResources.sh. Follow the prompts to extract. This can take a LONG time depending on your computer. Once this is complete, copy the following folders to your "Server" folder. dbc maps mmaps vmaps 6. INSTALLING THE DATABASE Enter the database folder located at "Source/database" Run InstallDatabases.bat and follow the on screen prompts to install the base database. Do mind, this database is the base database and will require you to run updates accordingly. The updates can be found in the separate folders inside "Source/database", specifically "Character", "Realm" and "World". The server will always notify you when you run the server files from the "Server" folder whether your database is up to date or not. If updates are required, apply them using your preferred SQL tool, like sqlyog, heidisql etc. NOTE : It is not a problem if runnign server with a higher DB content version. 7. INSTALLING THE SERVER Once all the above steps are complete, you are ready to configure your server and start playing ! Go to your "Server" folder copy and and rename the following files : ahbot.conf.dist -> ahbot.conf (This file is optional, depending if you want to use the AH bot or not!) mangosd.conf.dist -> mangosd.conf realmd.conf.dist -> realmd.conf Open mangosd.conf and edit lines 66, 67 and 68 to reflect your database information. Open realmd.conf and edit line 110 to reflect your database information. All other edits to the config files are completely optional. At this point your server should be completely operational for a local test. If you have any other questions or require further support, please feel free to create a new thread for your specific issues on teh appropriate section (not on commenting this post).
  2. Save it to a Lua file, put it in your scripts folder, change local NpcId = 123 to whatever entry ID you want to use for your npc
  3. You can do this through a gossip script local NpcId = 123 -- Entry ID of your gossip creature local MenuId = 123 -- Unique ID to recognice player gossip menu among others local function OnGossipHello(event, player, object) player:GossipClearMenu() player:GossipMenuAddItem(0, "Level me to 70", 1, 1) player:GossipMenuAddItem(0, "Nevermind", 1, 0) player:GossipSendMenu(1, object, MenuId) end local function OnGossipSelect(event, player, object, sender, intid, code, menuid) if (intid == 1) then player:SetLevel(70) end player:GossipComplete() end RegisterCreatureGossipEvent(NpcId, 1, OnGossipHello) RegisterCreatureGossipEvent(NpcId, 2, OnGossipSelect) Very rudimentary script, you probably want to add some more checks like whether the player is already 70 etc, but I'll leave that up to you
  4. As a side note, this will prevent EVERY error box from showing for any other program as well, as well for debug builds. Use at your own risk
  5. What I would personally do before starting to work on the AI, is note down ALL the spells for the specific class you are going to work on, strip everything out and start fresh.Not only would this give you a proper understanding of how the AI is set up currently, but you'd also instantly root out all the issues with the current AI, be it wrong spells or bad logic compared to 3.3.5a. If you look at this original commit, it shows you all the files edited for the player bots. Implement Playerbots · mangoszero/server@ee33683 · GitHub Notice the changes to Chat and ChatHandler specifically, where all the commands are parsed (Exactly like all the other core commands). This is where you'd add your confirmation/debug messages.
  6. The current main issue with the playerbots is the spell and gear availability as well as zones etc. The playerbots in zero are based off of 3.3.5a and the play style in said expansion. This causes some of the logic to fail, increasing the resource use and stability for bots as a whole (An example is Mage bots, they constantly attempt to cast conjure food, lagging the server out). This can easily be fixed by someone revising the logic and AI for each class, however it's not something I ever got around to do. On that note, I am completely against separating the player bots specifically from the core. The way the daemons communicate is through tcp/ip, which would cause a massive increase in network bandwidth usage, especially between the world and playerbot daemon. It's not feasible to stress the world daemon more than necessary, especially when the bots are literally utilizing the packet handler and player functions directly. AH bot on the other hand doesn't need access to the core what so ever and could easily be separated. The only thing the AH bot would need to do is monitor the AH tables in the database, nothing else is really needed.
  7. Please get the NPC in questions GUID and entry, it's most likely a waypoint coordinate hovering in the said case.
  8. This is more of an issue with mmaps than vmaps and/or maps. Do you have mmaps extracted and enabled?
  9. The newer sources use submodules. Submodules are other repositories that can be reused on other sources, which is why as an example the dependency folder is a submodule; It is reused on several Mangos versions. To properly clone Mangos Zero, use the below git command: [code]git clone https://github.com/mangoszero/server -b develop21 --recursive[/code] This pulls the correct submodules.
  10. The script itself looks correct, however the faction I am not sure about. I will look into it. Edit: The faction set in the script is faction 168. This seems to be wrong, as this is used for the Nethergarde Caravan. The first correct faction that comes to mind would be 128, which is used for "Enemy". Will test. Edit 2: Tested this on a clean compile and clean database without any edits, and this seems to be working as intended?
  11. This is not really a feasible option as we want the implementation to be dynamic between different expansions. Hardcoding client versions is the exact thing we want to prevent. We should figure out a dynamic way to handle the client version differences instead.
  12. The wiki is in the process of being rewritten for all versions after the implementation of the new build system :)
  13. Thank you for the report, this will be added to the dependency list once the Wiki update is done!
  14. Easiest way to explain it... It would just... Work :) The item information is sent from the server and cached client side, no DBC or custom patch is required at all to use the item. Only from WoTLK and forward you're required to have a custom patch.
  15. That should only be happening on client versions > 2.4.3, that's why a lot of custom servers run on older client versions, no need for custom client side patches.
  16. Yup, tried with the lib that comes with the distro, latest available with apt get, and internal. All three working like they should for me, realm shows up just like it does in the Ubuntu screenshot like I showed previously
  17. [quote=Xenithar]It was not in vanilla at all. I was a HEAVY raider in vanilla. I had top gear and even a Thunderfury. We NEVER got the group loot roll in vanilla. That was added in BC after I took a break. *EDIT* Also, I just built the current R20 and I STILL cannot see any realms listed in the realm selection screen despite having my realm show up when realmd starts. This is a game-breaker. A new player who just built their first server would not even be able to get into it. I can reproduce this on 64bit and 32bit Debian Wheezy. I do not have my Gentoo server up right now. Hardware changes.[/quote] [url]https://www.youtube.com/watch?v=RXU545FU8yE[/url] As seen there, the chest was FFA as of 1.12.1, and it kept being that way till chest loot rolling was implemented in 2.1. On the realms not being listed, unfortunately I can't help you with that, have tried several OS', both internal and external ACE and I'm not able to reproduce it.
  18. [quote=Xenithar]Actually boss chests were NOT the same. In fact while researching I have come across several threads on the Blizzard forum referencing various boss chests not working correctly. The one that came up most often was the one where you fight the seven dwarves and their chest was bugged so rolling didn't work and on person would wind up looting it and being unable to share the items. In fact that one had been bugged for seven months when the last post was made. I will say it again, I do not remember this and nobody else in my guild does. I am still going through patch-notes trying to find this, but whether or not it was in BC is irrelevant. We're pushing vanilla right now and we do know it wasn't there.[/quote] Not necessarily sure how you can say BC is irrelevant when we're working towards a release of Zero, One and Two at the same time..? We already established that it shouldn't be added to Zero as the chests were not included in the standard group loot policy till after 2.1. Also not sure how boss chests are not the same as normal chests? They were added as viable boss loot during the same time rolling on chest items were added. They are handled the exact same way as normal chests are, except their flags are changed to active or the chest is spawned once the boss is killed. So the flag and the pushing of the loot to the object itself are the only differences. But a chest is still a chest, whether it's a boss chest or not. I quote wowwiki and wowpedia: [COLOR=#D5D4D4][FONT=Helvetica]"Since [/FONT][/COLOR][URL="http://www.wowwiki.com/Patch_2.1"]Patch 2.1[/URL][COLOR=#D5D4D4][FONT=Helvetica], lootable world objects (such as chests) follow group loot rules, meaning that group members would be able to distribute loot found in chests just as they would on drops from ordinary mobs."[/FONT][/COLOR] [url]http://www.wowwiki.com/Chest_(container)[/url] The change is listed in the undocumented patch notes: [url]http://www.wowwiki.com/Patch_2.1.0_(Undocumented_Changes)[/url]
  19. I remember rolls on chests during BC :) A good example of this, is last boss in Ramparts. The end chest counts as any other chest, and the boss loot was something you had to roll for :) No special scripts or anything.
  20. Then it is not needed for 1.12.1, however it would be a good idea to check if it works as intended for 2.4.3 and implement accordingly.
×
×
  • 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