Jump to content

antz

Community Manager
  • Posts

    2819
  • Joined

  • Last visited

  • Days Won

    96
  • Donations

    0.00 GBP 

Everything posted by antz

  1. antz

    Client Patches

    Finding Patches for the older clients is not an easy task, the following sites may help:- Older patches can be found here like 2.4.3 to 3.3.0 → 3.3.5a http://www.wowpedia.org/Patch_mirrors The following site lists all patches since alpha to cata (en and us versions) http://www.wowpedia.org/Patch_mirrors_(old_patches)
  2. 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.
  3. https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwjhgufvz5bOAhWnAcAKHYpFA3cQFghEMAc&url=https%3A%2F%2Fwww.openhub.net%2Fp%2Fbnetprox&usg=AFQjCNHdGbIkczj5rB-3DaGKmuKTw-CLHA&bvm=bv.128153897,d.ZGg Among other, google is your friend - search for 'bnet server project' or 'battlenet server project'
  4. 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.
  5. That is not an error. It's a normal behaviour for precompiled headers. all you have to do is to delete the build folder, Then regenerate the makefiles with cmake and rebuild
  6. @Faded- Any chance of highlighting ones to be removed ? I'm hoping to have the new integrated Wiki live in the next few days
  7. https://github.com/search?utf8=✓&q=bnet
  8. 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
  9. 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;
  10. 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
  11. 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
  12. Battlenet is an optional rather than a MUST HAVE feature since mangos should never be used to run a full public server, as that is illegal. There is already a separate Battlenet project on GitHub but they are not associated with us in any way. - It might be worth checking it out
  13. So you've found a bug you want to fix, or a feature you want to implement, thanks! If you follow this guide it will make it much easier for the community to review your changes, and the core team to get them included in the next release. If you need an introduction to git, check out the tutorial and Everyday GIT With 20 Commands Or So. Making Your Changes The first thing you need to do is obtain a clone of the MaNGOS repository (We will assume MangosZero in these examples) $ git clone --recursive http://github.com/mangoszero/server.git 0server $ cd 0server Then you need to create your new branch: $ git checkout -b make_mangos_scale Switched to a new branch "make_mangos_scale" Now you're ready to get coding. Be sure to include tests which demonstrate the bug you're fixing, and fully exercise any new features you're adding. You should also take care to make sure the documentation is updated if you're changing the API. Once you've finished making your changes you need to commit them. $ git commit -a -m "I made MaNGOS scale by adding quantum tunneling" Created commit 29f8baa: I made MaNGOS scale by adding quantum tunneling 1 files changed, 0 insertions(+), 1 deletions(-) Preparing your changes for submission. Now that you've made your changes it's time to get them into a patch. We need to update rails and fix any conflicts we had. $ git checkout master Switched to branch "master" $ git pull $ git submodule init $ git submodule update ... $ git checkout make_mangos_scale Switched to branch "make_mangos_scale" $ git rebase master Once you've fixed any conflicts, you're ready to create a patch: $ git format-patch master --stdout > make-mangos-scale.diff Now you can attach that patch file to a getmangos.eu tracker ticket and add the 'patch' tag. Reviewing Changes To apply someone's changes you need to first create a branch: $ git checkout -b koz_made_mangos_scale Then you can apply their patch $ git am < their-patch-file.diff Once you have a working copy, you should take note of the following kinds of things: Are you happy with the tests, can you follow what they're testing, is there anything missing Does the documentation still seem right to you Do you like the implementation, can you think of a nicer or faster way to implement a part of their change Once you're happy it's a good change, please comment on the ticket indicating your approval. Your comment should indicate that you like the change and what you like about it. Something like: I like the way you've restructured that code in Server namespace, much nicer. The tests look good too. If your comment simply says +1, then odds are other reviewers aren't going to take it too seriously. Show that you took the time to review the patch. Once three people have approved it, add the verified tag. This will bring it to the attention of a committer who'll then review the changes looking for the same kinds of things. Congratulations and Thank You! Once your changes have been applied, you've officially become part of the large community of independent contributors working to improve MaNGOS. Important Notes The MaNGOS core team prefers that you create a github fork only for large changesets which are likely to involve a lot of code reviews/changes back and forth, or if 2 or more people are working on the same feature/bug. But of course, like all the rules, exceptions can be made for cases that demands for it.
  14. The Year in Review 2014 What follows is a quick summary of 2014, plus how we did against the Roadmap set out for the year. MaNGOS had a difficult year with whole chunks of bugs being reported for the first time. While some of these bugs were new, a majority were bugs that have been there for years. Part of the reason they have only just started to be reported and Two-fold. 1) The Unified Tracker on the website has helped bring this issues to light easier, plus the ability to raise a log from a forum post. 2) With the massively improved Build System in Mangos Zero, people are able to build and use mangos with the minimum of hassle. Having some of the Eluna team onboard also helped to get the Eluna implementation completed a lot smoother than we would have done otherwise. How did we do on our Goals for 2014 Continued alignment of the cores. Different teams did things slightly differently and as a result we have similar functions in different cores using different names. This need tidying up The Rel20 branches have all received extensive syncronisation / cleanup and this work in ongoing. For example, a git diff between MangosZero and MangosOne before the sync came in at over 80mb, run a diff now and it's about 12mb. There is still work continueing, but it's work in the right direction. Documenting the core, other groups shy away from this work as they feel it is beneath them. We are an educational group, documenting the core we help others learn. Again, this is ongoing. As our devs are working on different parts of the system and making changes, they are adding documentation. Also the DBDocs project has helped to document the database significantly better than any other Emu project, this too is ongoing. To this end, tools have been written to allow users to help update the information. Continue to look at new ways to improve mangos, both from a technical aspect as well as a functional one. Rel20 introduced git submodules - where common code is shared among all projects. Eluna, Realmd, the Deps all benefitted from this change and applied Across Zero, One and Two and to a lesser degree Three. The new SD3 project, which will replace the different SD2 modules in all the cores in Rel21 is a continuation of this work. SD3 is a single scripting library which is compatible with all the cores, rather than five slightly different libraries. This has been made possible thanks to the groundwork laid down by the Eluna team in their efforts to allow a single Eluna Library to work with all the cores. Developing better code, remove hardcoded values. historically developers never believed things would never change and hardcoded a lot of values in various areas of the core. This makes extending quite complex in places. Sadly this is still outstanding, due to the amount of work syncing the cores up. This should happen soon Some of the database has been designed badly (playerbytes anyone), we intend to review and enhance the database where we can to improve performance and readability. Some work has been done on how this can be achieved, nothing has been completed - but there are several changes that are currently WIP. More improvement to the server files to make them consistent across the cores. Rel20 of Zero, One and Two offer a very consistant project structure and build process - This will continue Continue our commitment to the Eluna project and add LUA support across the cores. As of Rel20, Eluna is now present in Zero, One and Two. Work is in progress to get it implemented in Three and Four Lastly, helping to teach more people for the core and scripting libraries work. This year has seen an influx of new devs and sorely needed scriptors / db devs. The improvement of the information held in the Wiki, plus fixing any highlighted shortfalls has pushed this effort on a long way. Things the devs wanted to improve: The devs were asked: "If you wanted two things to put on the 'roadmap' for mangos for the coming year, what would they be ?" Look at streamlining the installation and upgrade process, in particular database upgrades Work has already been done on this, but it's not complete yet. The numbering system has been simplifier significantly. With the reorg of the project files, all DB updates are now in a single repo To help with debugging, there is now an update history stored in the db_revision table. Look at the concept of scripting things like spells, NPCs etc; there's no reason why a basic quest scripts should be a dozen lines long when the same thing could be done in a line or two in something like Lua or JavaScript. There is work ongoing with a redesign of the spell system. Have a clear view of what's working good, what needs work, what is broken ... also in terms of content (which instances work) that would be useful. The Tracker has been a huge boost, plus using stats fed back from the cove servers have helped Reorganise the project file system to all mangos branches and backport the Cryptography and Implemention as used in other projects. That way development can continue on Warden. A majority of the project files have been reorganised and synced up and the differing Realm projects merged to become a single project. We need some core cleanup perhaps, As in getting the core documented etc. Work is ongoing on this, but a lot of progress has been made This has been done or is ongoing DK rune system rewrite New virtual functions in scripts Full mingw support Creature_difficulty system rewrite. Still outstanding Dungeon finder Some work has already been done for this in Two.
  15. MaNGOS is still in a transition period while we continue to move from the old build to a new more redefined method. - The method used in MaNGOS Zero was not 100% successful, work is continuing to revise and improve the windows experience from this. Goals for 2014 Continued alignment of the cores. Different teams did things slightly differently and as a result we have similar functions in different cores using different names. This need tidying up Documenting the core, other groups shy away from this work as they feel it is beneath them. We are an educational group, documenting the core we help others learn. Continue to look at new ways to improve mangos, both from a technical aspect as well as a functional one. Developing better code, remove hardcoded values. Sadly some of our older developers never believed things would never change and hardcoded a lot of values in various areas of the core. This makes extending quite complex in places. Some of the database has been designed badly (playerbytes anyone), we intend to review and enhance the database where we can to improve performance and readability. More improvement to the server files to make them consistent across the cores. Continue our commitment to the Eluna project and add LUA support across the cores. Lastly, helping to teach more people for the core and scripting libraries work. We also recently asked our devs a question: "If you wanted two things to put on the 'roadmap' for mangos for the coming year, what would they be ?" Look at streamlining the installation and upgrade process, in particular database upgrades Look at the concept of scripting things like spells, NPCs etc; there's no reason why a basic quest scripts should be a dozen lines long when the same thing could be done in a line or two in something like Lua or JavaScript. Have a clear view of what's working good, what needs work, what is broken ... also in terms of content (which instances work) that would be useful. Reorganise the project file system to all mangos branches and backport the Cryptography and Implemention as used in other projects. That way development can continue on Warden. We need some core cleanup perhaps, As in getting the core documented etc. DK rune system rewrite New virtual functions in scripts Full mingw support Creature_difficulty system rewrite. Dungeon finder
  16. You have no idea just how many hoops we had to jump through to massage the tracker data into something useful !
  17. Can you give details of which ones cause the problem as I did a very through check a while back. Any other information you can provide to help us track this down will be appreciated
  18. This is exactly as it was on official back in the day. I was in stockades when the server went down, when it came back i was dead
  19. There is not enough information there to work out what happened, need either a crash dump and some description of what was being done at the time.
  20. I checked the escort mission in redridge yesterday and it worked fine.
  21. This was fixed recently with the talents overhaul
  22. The files will be on GitHub in the repo: MaNGOS Extras * GitHub
  23. The polymorph bug should also be somewhat addressed in commit: [url]https://github.com/mangoszero/server/commit/2776812b2e2a64b1366b40b15e8c98d4ec9e14db[/url]
  24. I believe the frost nova issue has been addressed in commit: [url]https://github.com/mangoszero/server/commit/2b8c55ead053d003da075ed6ebe7d2fb9e29fefb[/url]
  25. I have now started by a localisation repo for this project: See post: https://www.getmangos.eu/community-input-needed/10722-localised-mangos.html#post76325 Please note, I will be adding the missing tables over the next few days
×
×
  • 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