Jump to content

barncastle

Developer
  • Posts

    3
  • Joined

  • Last visited

Everything posted by barncastle

  1. I think they're all a much of muchness to be honest. I found this one, with full source on ac-web and is designed with Cata graphics.
  2. Custom launcher is a possible way to go. You could check if the files are present and stream them if they're not, you could even go as far as to do hash checks etc so they've not tampered the archive/it is up to date, the same way retail works.
  3. barncastle

    WDBX Editor

    Not a problem! In regards to the add new line button what do you envisage this doing, something akin to a shortcut opposed to having to scroll to the end of the datagidview?
  4. barncastle

    WDBX Editor

    This will be the definition not being right. I've a feeling that a lot of these will need amending, what I was doing was going into the DB2Structure.h file and copying the structures from there. Update: This is what the structure should be I think. <Table Name="CreatureDisplayInfo" Build="21742"> <Field Name="m_ID" Type="int" IsIndex="true" /> <Field Name="m_extendedDisplayInfoID" Type="int" /> <Field Name="m_creatureModelScale" Type="float" /> <Field Name="m_playerModelScale" Type="float" /> <Field Name="m_textureVariation" Type="int" ArraySize="3" /> <Field Name="m_portraitTextureName" Type="string" /> <Field Name="m_portraitCreatureDisplayInfoID" Type="int" /> <Field Name="m_creatureGeosetData" Type="int" /> <Field Name="m_stateSpellVisualKitID" Type="int" /> <Field Name="m_instanceOtherPlayerPetScale" Type="float" /> <Field Name="ModelID" Type="ushort" /> <Field Name="SoundID" Type="ushort" /> <Field Name="NPCSoundID" Type="ushort" /> <Field Name="ParticleColorID" Type="ushort" /> <Field Name="ObjectEffectPackageID" Type="ushort" /> <Field Name="AnimReplacementSetID" Type="ushort" /> <Field Name="CreatureModelAlpha" Type="byte" /> <Field Name="SizeClass" Type="byte" /> <Field Name="BloodID" Type="byte" /> <Field Name="Flags" Type="byte" /> <Field Name="Gender" Type="byte" /> <Field Name="Unk700" Type="byte" /> </Table>
  5. barncastle

    WDBX Editor

    Thanks both for the comments. I've never looked into default file association before however I'll see what I can do. In terms of features listed, I've tested as best as I can but if anyone finds issues/bugs/sticking points let me know and I'll look into it. For Legion support, it is potentially fragile in the terms that I've figure out how they work using math alone (I'm no reverse engineer) so may potentially need tweaking later down the line. Everything it reads and saves is a byte for byte copy currently so fingers crossed.
  6. barncastle

    WDBX Editor

    Version 1.1.9a

    3,377 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.
  7. It's based off of Mangos 1.12.1 meaning a large amount of items and mobs are incorrect however it was more of a test to see if I could leverage an existing database (and what actually stayed the same). I did also cross check information from Beta server databases I found online in an attempt to clean it up.
  8. Version 1.0.0

    210 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
  9. I might be missing something but your current code will only return one record and stores it in strvector which is already an array? If you want to parse the entire CSV you'll need something like a list or dictionary and add strvector to it each time it reads a line - you'll need to remove the Found check for that. To get column count you could do something like ReadedLine.Split(',').Length. To get the a row's field count do the same on strvector i.e. strvector.Length.
  10. Try replacing your while clause with the below. I think the problem is that the first field of your csv file isn't an integer and this is where it is breaking - by default DBCUtil adds a header row of column types. To prevent this I've replaced it with TryParse which returns a boolean if it is successful and stores the parsed integer in the resultingname variable. I've also stored the columns in an array to prevent having to call Split more than once and also to prevent a possible array overflow in your for loop (it should never do so as the dbc file should always have 70 columns). while (!Found && sr.Peek() != -1) { string ReadedLine = sr.ReadLine(); string[] fields = ReadedLine.Split(','); int resultingname = 0; if (int.TryParse(fields[0], out resultingname) && race == resultingname) { Found = true; for (int i = 0; i < fields.Length; i++) strvector[i] = fields[i]; } }
  11. Back in the alpha the player bytes 2 used to be the player flags (was a byte instead of int32 before beta), facial hair, bank slot amount and a padding byte. The structure was changed to store the character appearance when the beta was released. So to me it looks like they just ignored the original use of this field and just incremented the base instead of rewriting the whole structure properly? Maybe for legacy reasons from alpha to beta then never changed it?
  12. Everything that you're doing is correct however the reason you're missing the trailing zero is because the compiler is rightly removing it as it is irrelevant. 2.0 is exactly the same as 2. If you want to keep them you need to use a string formatter on the double such as scale.ToString("0.00"). I'm on a phone at the moment so can't provide a decent example but look up string formatters in Google. It might also be worth looking at the Microsoft C# video tutorials as they're really good and cover this sort of thing. On a side note; if this is a production project I'd suggest looking up the TryParse method as well as it allows you to handle bad user input.
×
×
  • Create New...