Jump to content

Blogs

 

Dragonblight Rework - Part 4

Hello everyone 
I wanted to give an update on my most recent working within the Dragonblight before I go away on my much needed vacation. My most recent endeavour to correct the spawn locations of the many Arctic Hare has been a very slow and daunting one. What started in the Dragonblight spilled into the Borean Tundra and Zul'Drak. But I am happy to say that this portion is about 75% complete.  In addition to the ever troublesome dust bunn..I mean Arctic Hare, I have poked around with three other things * Smoldering Skeletons now properly display their aura and have had their cosmetic aura added.

* Golluck Rockfist of Wyrmrest Temple now has a patrol path * Add Missing Wyrmrest Protector as well as removed a few that should not be there

I hope you all enjoyed the update and I will see you all next week

Necrovoice

Necrovoice

 

Dragonblight Rework - Part 3

Today I bring you a quick update on the Rabbid Grizzly and the Blighted Elk that roam the Dragonsblight. Reworked all spawn locations and removed a huge amount of duplicates. I have added a before and after picture of an area that showed the most obvious improvement.  

Necrovoice

Necrovoice

 

Dragonblight Rework - Part 2

Although it has only been one day from my opening post, I have been working on the Arctic grizzly and Arctic cubs for about two weeks now. I am happy to say 647 waypoints with a total of 776 lines later, they now are working correctly. (As of this writing they still require some scripting) The Arctic Grizzly and cubs now have the following corrections
Spawn locations.
Way-points.
Spawn Locations.
Linking - slave/master/flags.
21 duplicates removed between the two. (Moved)

Necrovoice

Necrovoice

 

Dragonblight Rework

Hello everyone, I thought the work I have been doing on Dragonblight would be a great opportunity to start my first blog. This is the largest and most complex undertaking  I have ever taken on here at MaNGOS and wanted you all to be a part of its progress. As a side note and something I would like every reader to keep in mind is that the when I speak of "progress" or "percent completed" it is based on the personal end goals I set for myself when the thought of doing an overhaul on the zone first came to be.
So sit back and enjoy some cake.   Base Project Outline (In no particular order) 1) Waypoints
  1-1) Add missing waypoints
  1-2) Update current Waypoints
  1-3) Remove incorrect/unused waypoints 2) NPC spawns
  2-1) Add missing NPCs
  2-2) Remove duplicate NPCs 3) NPC linking 4) Scripting
   4-1) db_scripts
   4-2) AI_scripts
   4-3) Potential for SD3 / Eluna  5) Quests 6) NPC updates
  6-1) Faction Updates
  6-2) Gossip
  6-3) Flags
     6-3-1) NpcFlags
     6-3-2) UnitFlags
     6-3-3) DynamicFlags
     6-3-4) ExtraFlags
  6-4) miscellaneous Attribute updates 7) Npc cosmetic tweaks 8) Game Objects 8) Data cleanup and submission 

Necrovoice

Necrovoice

 

Branches merged

We have had two branches: Release20 and develop21. develop21 was supposed to be a temporary dev branch, but has been in use for over a year. Well, as of today they are now merged as a single master branch !! I have updated Appveyor and Travis (our test tools) to point to the new branch.

antz

antz

 

A Day off !!

I spent most of yesterday in hospital having a minor operation done, since i'm home and a little drowsy.... decided it's best if I don't touch anything important

antz

antz

 

Mangos Zero branches are now merged

@Unkle Nuke has completed the merging of the various branches of Mangos Zero server and database repos and I'd like to express my gratitude for his work on that as it was not an easy task. You might want to re-clone your repos to ensure that you now have the latest changes !! He is now turning his attention to Mangos One and Two to perform his magic there too !!

antz

antz

 

Sorting out the branches

With Mangos Zero (and too a lesser degree Mangos One and Two) we have been developing on the develop21 branch, while the master branch has remained untouched. This was only supposed to be a short term thing and has ended up being continued for over 2 years. Part of the changes will be to merge the two branches into a single branch again (master) and we will only use another branch when adding special development tasks which require group input. @Unkle Nuke has volunteered to help make this happen as his knowledge of git is vastly superior to my own.

antz

antz

 

Getting started

It's been a long long time since we last did a full release of Mangos (any of the cores) and it's long overdue. This is a blog to explain what we're doing and why, plus should hopefully act as a guide for when we do this next time.

antz

antz

 

LoadAllGridsOnMaps and why its a pain

Hey all, Been awhile since my last blog entry! So it was back in 2015 we added the "LoadAllGridsOnMaps" option, those of you that have played with it will know it loads all NPCs on whatever map ID you put into the .conf so for example you could put 530 and always have NPCs loaded, pathing and reacting as if players were nearby. Now have I have tested with this the past few months over on Covenant-WoW.com and noticed that while NPCs do path and react to one and another, there is a big cost... CPU & RAM. To load everything in a Burning Crusade server you are looking at 4GB of memory easily, this is before you add any players into the mixture. Today I have disabled the loading of every NPC as it just uses way to many resources. I have also filed a new tracker entry on the subject. I'm making this blog to see what experience (if any) others have had with this feature and gather some feedback on the subject, do you like this feature? Do you want it expanded? Let me (and us) hear your thoughts on the subject. The major advantage of loading everything of course is that thing move / path as they are supposed to instead of when a player is nearby to you. I am pushing and will continue to push and remind the team this is something we need to further develop in the future to get a more "blizzlike" feel to the world. Thats all for now //MadMax

madmax

madmax

 

Day 4: Final Touches.

I have put the final touches to the DBC wiki exporter and if you look at the wiki section for DBC files (for Zero Only ATM) you will see the results. The DBC databases will end up in a github repo soon and I'll post the URL here. Any comments or suggestions, please let me know. The next stage of this project is a dbcDocs editor. I have the skeleton of this designed and just need to find the time to complete it. It will have two modes of operation: local and remote Local edits a local dbcDocs database Remote edits the mangos hosted dbcDocs database

antz

antz

 

Day 3: Realisations and redesign time

The Wiki is the one area where a majority of information is cross core applicable. - During my testing a came across a few problems. in the dbcField table we recorded the dbc File, fieldname, description and field position but this hid a more fundamental problem.
- Different cores have the same field with the same meaning, but in a different position. The current DB design would mean that the description information would have to be entered multiple times - each time the field was in a different location. So.... A db redesign was needed. I created a new dbcFieldDescriptions table, containing the following fields:
dbcFieldDescriptionId, dbcFileName, dbcFieldName, dbcFieldDescription, dbcFieldNotes Then modified the dbcField table by adding a dbcFieldDescriptionId and removing dbcFieldName, dbcFieldDescription and dbcFieldNotes. I'll post the table defs later on, now time for some more testing.

antz

antz

 

Day 2: Working with the data

Now that we had the data in the DB it was time for the next step. I wrote a quick app to read through the DBC table entries and add an entry to dbcFile, I also wrote a helper function to calculate the client masks based on the selected core. Worked like a dream I then extended it to use the second query to populate the dbcField table with the fields from each dbc file. Next I also added a function to read the DBC_definition.xml from mangos extractor to populate any additional information held in the file regarding the fields. Finally to top off this section of work, I created a template example in the new wiki so that I could:
a) Check that it looks ok
b) Can double check that the data is extracted ok Next stage will be run the entire process to squirt the data out and create all the entries.

antz

antz

 

Day 1: Querying the DB

Now that we have a majority of the data already in the Database, we now need to work out how to get meaningful information back out ! Thankfully MySQL does provide us with a way of doing this. In the following example my main database containing the DBC data and we are going to query for records for MangosZero - so tables beginning dbc0_ SELECT DISTINCT TABLE_NAME AS DBCFilename FROM information_schema.columns WHERE table_schema = 'dbc' AND table_name LIKE 'dbc0_%' This returns a nice list of DBC filenames belonging to Zero, we can easily write a tool to read through that list and process the information. DBCFilename
dbc0_animationdata
dbc0_areapoi For the purpose of a demonstration of how to get the field information for a certain table, see the following query. Again we are using the database 'dbc' but this time we are looking for a specific table (dbc0_animationdata) SELECT COLUMN_NAME,ORDINAL_POSITION,DATA_TYPE,COLUMN_TYPE FROM information_schema.columns WHERE table_schema = 'dbc' AND table_name = 'dbc0_animationdata%' This returns the following: "COLUMN_NAME"     "ORDINAL_POSITION"    "DATA_TYPE"    "COLUMN_TYPE" "AnimationDataId"    "1"     "int"     "int(11)" "Name"    "2"        "text"     "text" "WeaponFlags"     "3"        "int"      "int(11)" "Bodyflags"     "4"        "int"      "int(11)" "Flags"     "5"        "int"      "int(11)" "FallbackAnimationDataId"    "6"        "int"      "int(11)" "PreviousAnimationDataId"    "7"        "int"     "int(11)" For the guts of the data we need, this is everything we need... until next time

antz

antz

 

Day 1: DB table design

Lets start with the basics... For each DBC File we want to store the following information A unique Id for this file (primary key and autonumber).
The Filename.
A short description of what the File is/does.
Some notes about the File.
Which client(s) it's present in.
Whether MaNGOS actually uses the file.
Whether to show the contents of the file in the wiki. so the SQL table definition will be: /*Table structure for table `dbcfile` */ CREATE TABLE `dbcfile` ( `DbcId` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Unique Key for this file', `DbcFilename` varchar(250) NOT NULL COMMENT 'The Name of the DBC File', `DbcDescription` varchar(250) DEFAULT NULL COMMENT 'A Brief Description of the DBC File', `DbcNotes` text COMMENT 'Notes about the DBC File', `ClientMaskId` int(11) NOT NULL COMMENT 'A Lookup into the ClientMasks Table', `IsIncluded` tinyint(1) DEFAULT '1' COMMENT 'Whether this DBC file is used in MaNGOS', `IsShownInWiki` tinyint(1) DEFAULT '0' COMMENT 'Is the File shown in the Wiki', PRIMARY KEY (`DbcId`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
Then we need to store information about all the fields in the file A unique Id for this field (primary key and autonumber)
A link to the DBC file this field belongs to.
The name of the field.
A Brief Description of the Field.
A note about the field.
The position of the field in the file (i.e. the order of the fields)
Which client(s) it's present in.
Whether MaNGOS actually uses the field.
Whether to show the contents of the field in the wiki. so the SQL table definition will be: /*Table structure for table `dbcfield` */ CREATE TABLE `dbcfield` ( `DbcFieldId` int(11) NOT NULL AUTO_INCREMENT COMMENT 'A Unique Id for this field', `DbcId` int(11) NOT NULL COMMENT 'A Lookup into table dbcFile', `DbcFieldName` varchar(250) NOT NULL COMMENT 'The Name of the field', `DbcFieldDescription` varchar(250) DEFAULT NULL COMMENT 'A Brief Description of the Field', `DbcFieldNote` text COMMENT 'A Longer Description of the field', `DbcFieldOrder` int(11) DEFAULT NULL COMMENT 'The position of the field in the file', `ClientMaskId` int(11) DEFAULT NULL COMMENT 'A Lookup into the Table ClientMask', `IsIncluded` tinyint(1) DEFAULT '1' COMMENT 'Indicates whether this field is used in Mangos', `IsShownInWiki` tinyint(1) DEFAULT '0' COMMENT 'Indicate whether this field is shown on the wiki', PRIMARY KEY (`DbcFieldId`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
Rather than storing multiple entries of the files and fields for different clients, a cleaner method it to use a bit mask. In this mask each client is given a unique value and multiple values can to added together when needed, for example: Vanilla / Classic = 1
TBC                 = 2
WotLK              = 4
Cata                 = 8
Mop                  = 16
Wod                 = 32
To set a file as only present in Vanilla, you would set it's ClientMaskId = 1
To set a file as only being present in Vanilla and TBC, you would set it's ClientMaskId = 3   (1+2
To set a file as only being present in Mop and Wod, you would set it' clientMaskId = 48    (16 + 32)
  The ClientMask table has the following fields:

A ClientMaskId which is the primary Key and an autonumber field
ClientMaskName which contains a description of what the clients the mask supports
ClientMaskValue a list of the different bits needed to make this mask

so the SQL table definition will be: /*Table structure for table `clientmask` */ CREATE TABLE `clientmask` ( `ClientMaskId` int(10) unsigned NOT NULL, `ClientMaskName` varchar(50) NOT NULL, `ClientMaskValue` varchar(50) NOT NULL, PRIMARY KEY (`ClientMaskId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; And finally for this chunk, the actual Client Mask Entries:
  /*Data for the table `clientmask` */ LOCK TABLES `clientmask` WRITE; insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (0,'NONE','0x00'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (1,'Classic','0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (2,'TBC','0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (3,'Classic + TBC','0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (4,'Wotlk','0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (5,'Wotlk + Classic','0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (6,'Wotlk + TBC','0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (7,'Wotlk + TBC + Classic','0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (8,'Cata','0x08'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (9,'Cata + Classic','0x08+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (10,'Cata + TBC','0x08+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (11,'Cata + TBC + Classic','0x08+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (12,'Cata + Wotlk','0x08+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (13,'Cata + Wotlk + Classic','0x08+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (14,'Cata + Wotlk + TBC','0x08+0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (15,'Cata + Wotlk + TBC + Classic','0x08+0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (16,'Mop','0x16'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (17,'Mop + Classic','0x16+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (18,'Mop + TBC','0x16+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (19,'Mop + TBC + Classic','0x16+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (20,'Mop + Wotlk','0x16+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (21,'Mop + Wotlk + Classic','0x16+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (22,'Mop + Wotlk + TBC + Classic','0x16+0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (23,'Mop + Cata','0x16+0x08'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (24,'Mop + Cata + Classic','0x16+0x08+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (25,'Mop + Cata + TBC','0x16+0x08+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (26,'Mop + Cata + TBC + Classic','0x16+0x08+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (27,'Mop + Cata + Wotlk','0x16+0x08+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (28,'Mop + Cata + Wotlk + Classic','0x16+0x08+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (29,'Mop + Cata + Wotlk + TBC','0x16+0x08+0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (30,'Mop + Cata + Wotlk + TBC + Classic','0x16+0x08+0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (32,'WoD','0x32'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (33,'WoD + Classic','0x32+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (34,'WoD + TBC','0x32+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (35,'WoD + TBC + Classic','0x32+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (36,'WoD + Wotlk','0x32+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (37,'WoD + Wotlk + Classic','0x32+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (38,'WoD + Wotlk + TBC','0x32+0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (39,'WoD + Wotlk + TBC + Classic','0x32+0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (40,'WoD + Cata','0x32+0x08'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (41,'WoD + Cata + Classic','0x32+0x08+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (42,'WoD + Cata + TBC','0x32+0x08+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (43,'WoD + Cata + TBC + Classic','0x32+0x08+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (44,'WoD + Cata + Wotlk','0x32+0x08+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (45,'WoD + Cata + Wotlk + Classic','0x32+0x08+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (46,'WoD + Cata + Wotlk + TBC','0x32+0x08+0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (47,'WoD + Cata + Wotlk + TBC + Classic','0x32+0x08+0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (48,'WoD + Mop','0x32+0x16'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (49,'WoD + Mop + Classic','0x32+0x16+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (50,'WoD + Mop + TBC','0x32+0x16+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (51,'WoD + Mop + TBC + Classic','0x32+0x16+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (52,'WoD + Mop + Wotlk','0x32+0x16+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (53,'WoD + Mop + Wotlk + Classic','0x32+0x16+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (54,'WoD + Mop + Wotlk + TBC','0x32+0x16+0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (55,'WoD + Mop + Wotlk + TBC + Classic','0x32+0x16+0x04+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (56,'WoD + Mop + Cata','0x32+0x16+0x08'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (57,'WoD + Mop + Cata + Classic','0x32+0x16+0x08+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (58,'WoD + Mop + Cata + TBC','0x32+0x16+0x08+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (59,'WoD + Mop + Cata + TBC + Classic','0x32+0x16+0x08+0x02+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (60,'WoD + Mop + Cata + Wotlk','0x32+0x16+0x08+0x04'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (61,'WoD + Mop + Cata + Wotlk + Classic','0x32+0x16+0x08+0x04+0x01'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (62,'WoD + Mop + Cata + Wotlk + TBC','0x32+0x16+0x08+0x04+0x02'); insert into `clientmask`(`ClientMaskId`,`ClientMaskName`,`ClientMaskValue`) values (63,'WoD + Mop + Cata + Wotlk + TBC + Classic','0x32+0x16+0x08+0x04+0x02+0x01'); UNLOCK TABLES;  

antz

antz

 

Day 1: getting the data into a DB

Using the tool Mangos Extractor, I have extracted the DBC's from MangosZero, MangosOne, MangosTwo and MangosThree - I made a slight change to each of the files to change the tablenames from dbc_xxxx to dbc0_xxx - which 0 is the core number I then loaded then all into a new database a created called DBC (imaginative I know :D)   The next part is mainly for use with the Wiki part of the project, but is applicable to all. For Each core in the DB we need to:
- Get a list of all the tables and store them in a dbcFiles table along with which core they belong to
- Get a list of all the fields and properites in the tables and store them in a dbcField table along with which core they belong to For now, that should enough to have a proper proof on concept I'll add at this point that I am also working to incorporate localised client DBC files into this as well  

antz

antz

 

Day 1: starting out new

For many many years now I have found the DBC handling in MaNGOS odd in that (to me at least) it is a perfect candidate for moving the data into a database, but has always been shunned Using the Mangos Extractor (found in the MangosTools github repo), the data can be extracted into sql files which can then be loaded into the db. Why bother you may ask ? 1) Having the data in a db and mangos access it from there means that the facility to correct DBC 'bugs/errors' on the server becomes an option, rather than having 'hacks' in the code to correct them 2) Having the data in a DB means that Mangos DB references can be compared to DBC references 'on the fly' to check for any discrepancies. 3) The Wiki needs the basic information regarding DBC use and fields anyway.   I had started on a design for this late last year - Which is why there is some DBC information on the Wiki But earlier this year, I was looking to bring a few of my DBC related 'side' projects together as a single project. Namely: DBC to SQL convertor (Mangos Extractor) DBC SQL importer Scripts DBC Data Remapper Tool - For wiring up which DBC files / fields belong to which version of WOW DBC Wiki entry creator DBC Docs Editor (Based on the DBDocs Editor) - Including Reading / Creating the .XML files which the Mangos Extractor uses to map the fieldnames    

antz

antz

 

New website and email handling

Well welcome to the new getMaNGOS website! It was 2013 when I last performed a big change here at getMaNGOS, that is when I setup the old site that was running on vbulletin. Myself and @antz agreed several months ago that getMaNGOS needed a new site and here it is! You will notice most of the new site is fully integrated, this is because most of the site is designed by me in the Invision Power Board suite which is the software powering this new site. Few new things: You can hover over any user name and see a popup of their profile without leaving the page. The downloads system is part of IPB and not so clunky as on the old site. The tracker has been designed in IPB pages by me. @antz wrote some fancy completely custom .sql files and hacked our old tracker data into the new tracker (this took over a week of testing), not to mention poor @antz was under the weather while doing this (hes amazing!). Our user base shot up by over 3k, we gave user accounts to all those posts that originally had them but were lost during the 2013 migration. We have a new mail system, if your mail bounces you will be warned. If it bounces again you will need to re-verify your email address. We are still working on the wiki system we had on the old site, we are also considering other options with the wiki, such as replacing it. Sadly I have no news on when Rel21 will happen, but keep checking it will be "soon". That all the news I have for now, please check back as I have encouraged the development team to write up stuff they are working on. We will also post status updates of the new site to this blog.

madmax

madmax

Contact Us

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

Privacy Policy | Terms & Conditions

Repositories

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®
×