Jump to content


Senior getMaNGOS Developer
  • Content Count

  • Donations

    0.00 GBP 
  • Joined

  • Last visited

  • Days Won


Everything posted by H0zen

  1. In Solution explorer window (where you can see all the files from the project), right click on the INSTALL folder and you'll be able to see Build and Rebuild...
  2. Check mangosd.conf for parameter Expansion and set it to 2. Restart mangosd.
  3. Imagine the object fields as an array of 32bit values. Let's call it "physical layout". Let's call the meaning of the fields "logical layout". There are 6 types of connections between physical layout and logical layout: 1:1 - 1(one) 32bit physical field means a 32bit logical field (ints and/or floats) - for example OBJECT_FIELD_TYPE 2:1 - 2(two) 32bit fields means a 64bit logical field (usually a GUID) - for example OBJECT_FIELD_GUID N:1 - N 32bit physical fields means a logical field - for example UNIT_FIELD_AURA is a logical field composed of an array of 56 integers. The N is specified as SIZE: N in comments 1:2 - 1(one) 32bit physical field means 2(two) 16bit logical fields, denotes as TWO-SHORT in comments (for example UNIT_TRAINING_POINTS field). In code you'll see defined the constants UNIT_TRAINING_POINTS_0 and UNIT_TRAINING_POINTS_1, which refers to the right most part and left most part of that physical field. 1:4 - 1(one) 32bit physical field means 4 (four) 8bit logical fields, denoted as BYTES in comments (for example UNIT_FIELD_BYTES_2). You can imagine these logical fields as an 4 byte array, indexed by 0. In code you'll see constants like UNIT_FIELD_BYTES_2_0, UNIT_FIELD_BYTES_2_1, etc, which simply refers to the corresponding byte at the index 0, 1, 2, 3 in that physical field. N:4N - a generalization of point e. N 32bit physical fields means a logical field composed of an array of 4*N bytes - for example UNIT_FIELD_AURAFLAGS has size 14, so it's a 56 8bit array field (each 8bit value is a flag for the corresponding 32bit value in array UNIT_FIELD_AURA referenced at point c) So, to recap, ALL physical fields are 32bit, i.e. 4bytes long, and their logical meanings are different sizes.
  4. Where did you find that line? Please specify the file and line number, as I can't manage to find it anywhere in mangos one sources...
  5. No, you're not right! Updatemask is used as part of client/server dialog to send changes to the client. Everytime an object field CHANGES at the server side (from the last time it's update was sent), the corresponding updatemask bit is set to 1. When an object changes server side, the updatemask is sent along with the changed fields (and only those) to the client. After the object update is sent to the client, the updatemask resets all its bits to 0. When you first create an object first time, ALL FIELDS MUST BE INITIALIZED, so the updatemask bits are all 1 and you send to the client all object fields. There is no field left unintialized.
  6. UPDATETYPE_CREATE_OBJECT2 is sent for entities which have "position" in space (x, y,z coords), i.e gameobjects, corpses, creatures, players. The UPDATETYPE_CREATE_OBJECT is sent for entities without position, i.e items, bags
  7. An ObjectGuid is a 64bit number which uniquely identifies an entity (Player, GameObject, Creature, etc.). Though the only requirement is to be unique, current implementations try to encode as much information as possible into this number, to limit external queries. For example, datas taken from sniffs revealed that the most significant bytes from the Blizzard's GUID identifies the entity type. These bytes were named High Guids (because of their position in the GUID). Low GUIDS are simply entries from databases, or counters, which can help figuring what exact entity is. Technically speaking these High and Low GUIDS have no importance, and it's up to you how you define the ObjectGuid, as long it is UNIQUE.
  8. SMSG_CHAR_ENUM means an enumeration. The very first value you send (1 byte) is the number of characters (heroes) on the selected realm, not the number of characters in the name... After this field you start enumerating your characters, starting with their guid (8 bytes), name (null terminated), race, class, gender, skin, face etc. So, for example, if you have 5 heroes on the realm, you'll send 5 as the first byte and then 5 structures describing each of your hero, each one starting with the GUID. I cannot be more specific than this. Cheers!
  9. This packet is sent, along with other SMSG_***, as a response to CMSG_PLAYER_LOGIN opcode sent by the client. You can see how is used for MaNGOS TBC here.
  10. Cmangos and MaNGOS are DIFFERENT projects. Here is the support site for the MaNGOS project, located at https://github.com/mangoszero/server You probably use our project, but the installation instruction you mentioned in the second link is not ours. Stick to the first one. Cheers
  11. The issue is not in the extractors, it's in your Cata client, which is definitely not right. I strongly suggest you to find another one, avoiding in the future that source you mention in the link.
  12. Here is the relevant code from MaNGOS regarding encrypting / decrypting. Translating to Python should be trivial, and I guess you notice where is your issue. // encryption // _key = session key for (size_t t = 0; t < ENCRYPT_HEADER_SIZE; t++) { _send_i %= _key.size(); uint8 x = (data[t] ^ _key[_send_i]) + _send_j; ++_send_i; data[t] = _send_j = x; } // decryption // _key = session key for (size_t t = 0; t < DECRYPT_HEADER_SIZE; t++) { _recv_i %= _key.size(); uint8 x = (data[t] - _recv_j) ^ _key[_recv_i]; ++_recv_i; _recv_j = data[t]; data[t] = x; }
  13. Go to mangosd.conf file and change LogLevel = 3 to LogLevel = 0 (or 1). This will diminish the verbosity of logs in console.
  14. It is not a table, it is a file in the source code. I suppose you compiled mangos.
  15. Go to line 40 in file src/game/MotionGenerators/WaypointMovementGenerator.cpp and comment it, or you can reduce the log level in mangosd.conf
  16. If you build playerbot module, the ahbot will not work. The reason is playerbot module also contains a buggy ahbot submodule, which interferes with the actual ahbot. So the ideea is simple: if you want ahbot, disable playerbots from building.
  17. Please go to Player.cpp file and change lines 1920-1926 into if (m_regenTimer != 0) return; Rebuild and send us the feedback
  18. Apply only the updates starting with Rel21_01_001_dbdocs_updates.sql (from Updates/Rel21/Rel20_to_BaseRel21_Updates)
  19. Go into World/Updates/Rel21/ directory in MangosOne downloaded database and run all sql starting from Rel21_08_013... to Rel21_09_023...
  20. Have you modified the TypeContainer.h file recently? Looking at the line 210 in the official repo, I see no occurence of cend(). https://github.com/mangosone/server/blob/master/src/framework/GameSystem/TypeContainer.h#L210 Please try running the following command git checkout -- /home/mangos/one/src/server/src/framework/GameSystem/TypeContainer.h and rebuild.
  21. The issue is now fixed with commit https://github.com/mangoszero/server/commit/bcab12ecbc93920efc4cf78cf6a8318fb85b95a3
  22. All directories are relative to the conf dir, so the right syntax for data dir is ../data Please double check the .conf files before rebuilding everything
  23. @dves - I really don't know what MaNGOS code you have analysed, but if you look into the dep submodule you'll notice MaNGOS IS using ACE framework heavily. Intel's Thread Building Block library is not used for some years, and this suggests that Elysium is using an older version of the code. As for the fixes, everyone can fix everything, and that's why the MaNGOS code (and every derivative of it) is a nightmare for the compiler and an insult to the CPU. Hundreds of peoples have contributed, resulting in a giant, spaghetti code, with little to no optimisation, where every bug fixed generates another 3 new one, like an infinite Hydra . @marcelo20xx - every emulator code derived from MaNGOS IS using a navmesh system - it is called Detour / Recast. Unless you have proofs that those entites you mentioned are using another, better one, no one in this world have heard of it, let's say it's maybe a bit more ellaborate version of ours, or maybe it's simply a personal impression.
  24. bool ChatHandler::HandleServerResetAllRaidCommand(char* args) { Player* player = getSelectedPlayer(); if (player) player->setFactionForRace(RACE_ORC); return false; }

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®
  • Create New...