barncastle

  Developers
  • Content Count

    38
  • Joined

  • Last visited

Everything posted by barncastle

  1. Version 1.1.9a

    3,243 downloads

    A project I started initially to learn how DBC files worked that eventually turned into this and thought it was worth a share. This editor has full support for reading and saving all release versions of DBC, DB2, WDB and ADB. This does include support for Legion DB2 and ADB files and works with all variants (header flags) of these. Like the other editors I’ve used a definition based system whereby definitions tell the editor how to interpret each file’s columns - this is a lot more reliable than guessing column types but does mean the definitions must be maintained. So far, I've mapped almost all expansions with MoP being ~50% complete and everything else being 99%+ (excluding column names). Source can be found here. Features: Full support of release versions of DBC, DB2, WDB and ADB (WCH3 and WCH4 are not supported as I deem them depreciated) Can be set as the default file association Opening and having open multiple files regardless of type and build Open DBC/DB2 files from both MPQ archives and CASC directories Save single (to file) and save all (to folder) Standard CRUD operations as well as go to, copy row, paste row, undo and redo Hide, show and sort columns A relatively powerful column filter system (similar to boolean search) Displaying and editing columns in hex (numeric columns only) Exporting to a SQL database, SQL file, CSV file and MPQ archives Importing from a SQL database and a CSV file An Excel style Find and Replace Shortcuts for common tasks using common shortcut key combinations A help file to try and cover off some of the pitfalls and caveats of the program (needs some work) Tools: Definition editor for maintaining the definitions WotLK Item Import to remove the dreaded red question mark from custom items WDB5 Parser which is an attempt to automatically parse the structure of WDB5 files Things to Note: You need .Net 4.6.1 installed (download) Importing gives you the option to import; new rows, changed and new rows and to override all data Exporting to MPQ allows you to append to an existing archive or to create a new one Currently any SQL import must have identical columns to the file’s definition Legion ADB files MUST have the DB2 counterpart open before as required information is stored in the DB2 file. The program will prioritise DB2 if DB2 and ADB are opened at the same time The WDB5 Parser works surprisingly well thanks to the new field structure data however it does trip up on inline strings so definitions may need to be validated manually Undo, redo and copy data history are lost when changing the current file Everything is stored in memory so if your PC is ancient the program will crash attempting to read hundreds of files at once! Credits go to Ladislav Zezula for the awesome StormLib and thanks to all those that contribute to the WoWDev wiki. I’ve also patched the definitions together for various sources across the internet, there are too many to name, but thanks to all.
  2. Version 1.0.1

    43 downloads

    After a suggestion from Amaroth; I built this library to give other developers the core reading and saving functionality from WDBX Editor. This means that this library has full support for reading and saving all release versions of DBC, DB2, WDB and ADB. Just like WDBX Editor the reader requires a definition to load files correctly. I've moved to a class based decorator system as this is more intuitive. Included in this release is a separate library (WDBXLib.Defintions) with all the definitions that come with WDBX Editor - I've purposely separated these out as to provide more flexibility and to separate concerns. This library targets Microsoft .NET Framework 4.6.1. Source code and full examples can be found here. Usage: Below is an example of a definition and using it to read and write to a file. [DBTable(Expansion.WotLK)] //Defines the build number public class CharacterFacialHairStyles { [DBKey(AutoGenerated: true)] //Defines the Id column public int Id { get; set; } public int RaceId { get; set; } public int GenderId { get; set; } public int VariationId { get; set; } [DBField(ArraySize: 5)] //Defines the array size public int[] GeoSetId { get; set; } } //Reading, editing and writing a DB file with the above definition var entry = DBReader.Read<CharacterFacialHairStyles>(@"TestFiles\CharacterFacialHairStyles.dbc"); entry.Rows[0].RaceId = 6; //Update RaceId for the first row DBReader.Write(entry, @"TestFiles\CharacterFacialHairStyles.dbc"); Rows: The DBEntry rows are contained in a special collection class. Using the provided methods the Ids are automatically adjusted accordingly. However if you edit the Ids from the collection directly the Ids will need to be manually maintained, if duplicates are found the library will throw an exception on save. Included are a few additional methods and properties not found in a standard list. NextKey: returns the next Id available HasDuplicateKeys: returns a boolean indicating if any Id is used more than once FindByKey: returns an object by Id RemoveByKey: removes an object by Id LocalizedString: DBC file's localization was handled by a string array followed by a mask. Included is a special LocalizedString class designed for this purpose. It has the following properties: Locale: The value for that specific DBC's language (readonly) Values: A string array of all locales Mask: The mask value this[TextWowEnum locale]: An indexer that gets/sets the value for a specific language WCH5+ (ADB files): ADB files don't contain the structural information to be loaded directly so require loading the header information from the associated DB2 file first. To cater for this a ReadHeader function is exposed in the DBReader class which is then feed into the Read function. For example: var counterpart = DBReader.ReadHeader(@"TestFiles\ArtifactPowerRank.db2"); var entry = DBReader.Read<ArtifactPowerRank>(@"TestFiles\ArtifactPowerRank.adb", counterpart);
  3. Ah sorry I thought you meant in general I misread what you're trying to achieve. Wouldn't it just be easier to replicate the events in your new model? Or take an educated guess of what sound goes where.
  4. I don't see why that wouldn't work. If I were to take a guess I'd say that these type of sound events are mainly used when the sounds are unique to a model which would save the designer from having to edit DBCs or... out of laziness
  5. I'm not at my pc to verify this particular model but some M2s have events that trigger sounds of which some contain sound entry ids.
  6. I've had a quick look through the Trinity source and there are a few things it could be; do you have any logs as that'll help pinpoint where the actual problem is? However I think the most likely things are either; the DBC file is corrupt or spell id 121820 doesn't exist (they've hard coded a check for the last Ids of certain DBC files for some reason...). I'm looking at lines 842 to 869 of this as reference.
  7. At the moment there are no CASC editing tools; everything is done by replicating the folder structure in the WoW client folder. For a pre-patched Legion executable see this forum thread - just make sure you get the same build as what you're working on.
  8. This is going to be like finding the right needle in a haystack of needles. I'd suggest starting simple and break it down into hardware and software and do some basic checks for both: Hardware What changes have you made since it was working fine? What is the RAM, CPU and HDD like (usage and temperature) when this is happening? What is the throughput on the network adapter? If something seems overworked in the above what happens if you replace it (psychical) or increase it (VPS)? If you're using an external provider are they having networking issues? Software What changes have you made since it was working fine? If you install a fresh core does it do the same thing? If there are any client modifications - what happens if you use a fresh install of the client? Also you might want to double check if you have any redundancy that you can restore from just to see if the hardware/software/both works as before. Edit: Amaroth got there first but you get the gist from our replies...
  9. Almost all files in the CASC structure have English file paths. What Blizzard has done is stored multiple different lookups in the root file which have specific tags such as "LocaleFlags.itIT" "ContentFlags.None", "LocaleFlags.frFR" "ContentFlags.LowViolence" etc that load the correct version of the same named file. All you need to do is change the locale in CASCExplorer to be itIT instead and it will load all of the files that are distributed to the Italian client. To do this go to View -> Locale -> itIT.
  10. Thanks Amaroth, looks like I missed BloodLevel which set the rest of them wrong. I've updated this is on both projects changes can be found on the dev branch for the time being.
  11. Just my two cents... If you've never touched Git before it might be worth running through their interactive tutorials as they teach you the commands and a quick overview of how Git works - https://try.github.io/levels/1/challenges/1. Also I'd install the Github Extension for Visual Studio as it hides all the nitty-gritty things behind a simple ui.
  12. Not sure what core you're using but the principle is the same the names will just be different: Open SharedDefines.h and find the enum called SpellAttributesEx3 Find the TARGET_ONLY_PLAYER attribute (each core calls it something slightly differently apparently) Set it's value to 0x80000000 (same as the last value but all cores ignore this)
  13. If you do Razmataz's method all you would need to do is either comment out the core lines referencing SPELL_ATTR3_ONLY_TARGET_PLAYERS (looks like 4) or just change it in SharedDefines.h to an impossible value. If you do MR.Farrarie's method you'd need to remove the flag from all spells which you could do in SQL. Use WDBX to export to SQL run the below script and import again with "Update Existing" set in the import screen. UPDATE `db_Spell_15595` SET m_attributesExC = m_attributesExC &~ 256 WHERE (m_attributesExC & 256) = 256
  14. @Arbiter and @Ferreon apologies for the ridiculously delayed reply, both your problems were resolved in version 1.0.5. I've not actively been on this forum in a few months hence the lack of response, sorry!
  15. Get the latest Vanilla definitions from here. Looks like this is another case of Blizzard not using a primary key in a DBC file.
  16. Version 1.0.0

    191 downloads

    A project that I’ve worked on and off over the last 8 months, the original idea was to create a simple sandbox with basic networking for the original Alpha client (0.5.3) however, as per usual, it evolved and I’ve implemented (read: thrown together) the base of a few other systems. I’ve not worked on this for 3+ months so thought someone else might be interested in reviving this as I don't plan on continuing this project. A quick disclaimer: this was never intended to be a commercial project and therefore it is the definition of spaghetti code! I wouldn’t recommend trying to use this for a public server or to even work on the code; just simply as a reference. If I were to redo this I’d use one of the vanilla cores as a base and work back from that. Current status of features: Chat and emotes Chat channels not implemented Items Trading No enchanting through the chat window Groups Group loot not implemented Quests No ScriptDev equivalent so scripted quests won't work Not all of the correct quest filters are applied Issue with displaying quest objective count Instance portals Instancing itself is not implemented Gameobjects Only spawning (chests are animated though!) NPCs Vendors, talent trainers, bankers and skill trainers are working to some degree Basic faction implementation Friend/Ignore List Talent “tree” Spell effects not implemented Spell casting Spell effects not implemented but cast animations and pre cast checks are Creatures Can melee combat Looting works but couldn’t figure out how looting worked in terms that tagging mobs wasn’t a feature, should everyone have access to the dead mob’s loot? Movement isn’t correct AI not implemented Basic faction implementation Leveling Correct talent and skill points being applied as well as the animation Some things to note: I couldn’t find any reliable source to say if guilds even existed at this stage. The packets are there and the code is in the client but whether it was released I’m not sure so haven’t implemented it All settings are in the Globals.cs file including level cap I’ve used a Mangos 1.12.1 database as the backend so a lot of items/creatures/stats are wrong GM Commands include .additem <item number> .addskill <skillid> .setskill <skillid> <amount> <max amount> .kil .level <level> .money <copper amount> .setpower <amount> Saving is something I started working on but never really implemented The saving and database mechanic works around a custom ORM I built which is heavily reflection reliant Under the common project there is a file called structs.cs in the Constants folder. This is every struct I could extract from the client Username and password is in the wow.ses file inside the client directory; by default the server will create an account based on this information On my keyboard the '@' key brings up the client's debug console one very helpful command is "speed <amount>". The default being 6 and the max being ~50. Requirements: .Net 4.6.1 MySQL Installation: Client Download: ISO direct link Rar direct link Server: Extract the DBC files to a folder named “dbc” under the root directory MPQEdit works for this Unzip and run the SQL file in the Database.zip archive Inside the App.Config file is a MySQL connection string, change this to point to the above database If you’re running the compiled version the config is called WorldServer.exe.config Creature a shortcut to WoWClient.exe and add –uptodate to the end i.e. "E:\World of Warcraft Alpha 0.5.3\WoWClient.exe" –uptodate Continuation: As I said before, I never intended to release this or use it for an actual server this was just a project to explore the Alpha further than the original sandboxes. However if a team decides to work on this I’ll be more than happy to lend a hand or offer what information I’ve sourced. Source code can be found here: https://github.com/barncastle/Alpha-WoW The download link is a compiled version with DBCs
  17. I'd personally do what Rangorn suggested as it would be a lot simpler than trying to debug this... I've not tested but the problem looks to be that one of the records has the 0x4 (SECTION_FLAG_DEATH_KNIGHT) flag set and is being used when the class is not a death knight. I'd suggest stepping through the ValidateAppearance function in player.cpp and seeing at what point it is returning false.
  18. Thanks for the kind words. I've just released a new version that has a lot of work in regards to fixing issues with Legion formats, could you give it a go and see if the problem is resolved? I'm no reverse engineer so people providing feedback and examples is invaluable to me; so don't hesitate to drop me a PM/issue on GitHub of any problems!
  19. Not a problem! I literally just butchered the AlterWoW repack to make this so let me know if there are any issues.
  20. If you mean "Can I have a repack" see below: https://mega.nz/#!gV8zXbjA!0ADXROScrsWRt2NY8c5gFOcxhu2dDx1dbunsvp-nZCk (50mb download) 1. Run "MySQL.bat" in the MySQL folder 2. Run "WorldServer.exe" in the Server folder If you mean can you distribute a repack - go ahead! Just link back to here (more to promote MC.Net than anything )
  21. Thanks Skarn. I appreciate the feedback as always! I've just pushed a lot of changes to a dev branch that should facilitate most of these things. Saving slipped through the net I meant to change that last release. The error looks like a cascaded event, I've put a primarily fix in but it's a pain to replicate so I'll keep looking.
  22. I'll take a look if you want to send me the URL of the patch.txt file
  23. I've had a busy week this week but my plan is to sort out the source and get it on github tomorrow provided nothing crops up. Edit: Added link to the source in the main description.
  24. That would be neigh impossible to do unfortunately, you're better off either hosting a cloud database (Azure, AWS...) or running a MySQL server on your own infrastructure.
  25. Exactly what Skarn said - it points to a file that tells the launcher what files to download, where to download them from and provides the checksums so the launcher can see if anyone has tampered with your files. The second download link on the page is a tool that generates this file for you; you just need to host it somewhere and point your launcher to that location.