Jump to content

MaNGOS University - Learn to be a dev!

Unkle Nuke

Recommended Posts

Have you just learned the basics of C++ and itching to contribute your first patch to the MaNGOS core, but you're not sure if opcodes have something to do with long-distance phone calls?

EventAI scripting finally makes sense, but your concept of an emote trigger is the frustration and anger it makes you feel when things don't happen as scripted?

Has the SQL bug bitten you, but you think server flags have something to do with nationality?

Are you such a novice that "developer environment" means choosing to work on program code in your bedroom or the back yard?

Does "commit" and "revert" sound more like relationship advice than version control with Git?

How does it all work? Where do you start? Can you really sneeze and fart at the same time without imploding?

Well, look no further! MaNGOS University is here to give you guidance and point you in the right direction. It's a virtual classroom intended to answer all your questions and help teach you to become not only the best MaNGOS developer you can be, but a great programmer!

Even as The MaNGOS Project is open-source, MaNGOS University is open-learning. It's community driven knowledge where everyone can be both teacher and student. This means you're free to ask questions and even give answers whenever you can help.

This topic is a result of shlainn and TheLuda being so kind and willing to share what they have learned from their own years of working with MaNGOS and projects like it. Unfortunately, it seriously derailed shlainn's PseuWow thread (Sorry about that!). Thus, MaNGOS U. is born!

This thread is meant to teach those who want to become developers, whether it's programming the core, creating scripts, or coding content for the database. Please stay focused on this as much as you can. MaNGOS U. is not intended for tutorials or questions regarding the patching, compiling, installation, or setup of your MaNGOS server. We already have a Help & Support section for that.

Everyone feel free to jump right in. Class is always in session and the school never closes! Whether you want to start off with a question, give a lesson, or talk about the tools you use...

Who's first?

Link to comment
Share on other sites

WooHoo! We're Away!

As per suggestions that have already been mentioned in PseuWow's Hijacked Thread, I'll be using my Linux environment to boost my Mangos development, I'll be using a combination of Kate and command line gcc make/build goodness (at least until I can learn to do some Real damage with Eclipse or Codeblocks! :D ) so now all I need to do is find some part of mangos I can use to mod to get a feel for what I can accomplish...

any suggestions?

Link to comment
Share on other sites

Alright then: How can we build mangos (under Windows) using MinGW with the minimum amount of fuss (no GUI)? Thanks

This is as far as I got:

- Install CMake

- Install MinGW using automatic GUI installer (install all)

- Add MinGW to PATH (System -> Properties -> Advanced -> Environment Variables... -> Edit Path)

- Change cmake files

- Open CMake, set to use default malloc (not TBB), configure, generate

- Open cmd, change to generated files (cmake target) dir


[ 1%] Built target genrev

[ 1%] Built target revision.h

[ 1%] Performing configure step for 'ACE_Project'

'D:\\MyData\\GitHub\\mangos\\dep\\ACE_wrappers\\configure' is not recognized as an internal or external command, operable program or batch file.

mingw32-make[2]: *** [dep/ACE_wrappers/ACE_Project-prefix/src/ACE_Project-stamp/ACE_Project-configure] Error 1

mingw32-make[1]: *** [dep/ACE_wrappers/CMakeFiles/ACE_Project.dir/all] Error 2

mingw32-make: *** [all] Error 2

Link to comment
Share on other sites

The realm list daemon is a rather limited set of functions to work with, and scripting might be a place to start, too.

Is there anything in realmd that needs attention? I was under the impression that it was stable since... MaNGOS Zero??

EDIT: I had to answer 3 security questions!! WTF??

Link to comment
Share on other sites

Would it be more desirable to have a separate patch daemon that is called by the client version check subroutine in realmd? I figure it would make a more robust, stable process having a patch server running alongside realmd and mangosd only when it is needed, plus it would reduce server crashes by leaving realmd free to manage logins instead of adding the task of also serving patches.

Of course, that's my humble opinion. Those of you with much greater experience and wisdom in working with MaNGOS may have more informed ideas on the best method.

Link to comment
Share on other sites

I guess I'll give this a shot as well :)

Never actually fixed anything in mangos so I tried fixing 2 related warlock spells: Demonic Circle: Teleport and Demonic Circle: Summon.

Needless to say, after a while, I quit.

I figured out that Spell::EffectSummonObject is never actually called when that spell is casted, only buff is applied to player.

I assumed that cause of this is the effectMask passed to Spell::DoSpellHitOnUnit, which effectivly (no pun intended) causes Spell::HandleEffects to be called only once, for effect index 0.

Never figured out why is that happening... There is just too much code for me to read and understand...

Can someone please give hints?:)

Link to comment
Share on other sites

It has more to do with targeting spells at a random place within an area. If I remember correctly, people like Schmoozerd, Xfurry, and stfx have been developing patches to enable proper function for those types of spells.

Check the "Under Review" section in the old forum archives, plus Schmoozerd's recent post in the Wotlk Core section of our new forums.

Look for things like TARGET_RANDOM_DEST and TARGET_AREA in the topics. Hope that helps. :)

Link to comment
Share on other sites

Actually the main issue with demonic teleport was that clients require an aura to be able to cast this spell.

However the spell of the required aura did not exist.

But it was added in 12000, so actually all that is now required is some implementation for the missing parts.

There was a bit an issue with what is called when and sometimes the circle got removed by the circle - I don't really remember..

But basicly the spell is now fixable.

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • 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