So. In my time lurking and posting on MMOwned, I've seen many people trying to edit DBCs. The majority of them just end up lost and confused when first starting because guides are scattered all over the place, not necessarily well written, and sometimes out of date, with out of date programs. This described me for a while. All you have to do to understand editing DBC's is look around. There are many new, wonderful programs available.(The best ones designed by MMOwned users!)
I see a lot of people still using DBCUtil. DBCUtil, though it works, is terrible. It's old. It's messy. It's a hassle.
The tool I use, and recommend everyone else use, is Taliis. Taliis is written in Java, making it cross platform. I myself am a Mac user, so this helps me a lot.
Taliis can be found here. Don't forget to +Rep Tigurius for making it!
My goal is to write a guide on every DBC file in the client(Noob friendly, with lots of screenshots!)
So without further ado:
Everything you will need to know about editing any DBC file.
Ever.
If you don't know what DBC files are:
DBC files are client side databases. Kind of like the MySQL databases used for ArcEmu, but you place them within .MPQ(patch) files inside your World of Warcraft client!
They contain information on all the important stuff like item models, NPC models, animations, achievements, objects models, maps, spells, and the list goes on.
Editing the DBC files is very useful for anyone running a private server, as it allows you to customize your server with near-blizzlike development!
If you are not on a private server, editing DBC files can be used to swap models, textures, animations, titles, achievements. Pretty much everything I just listed up there!
Where do I get these magical files????
Download this extractor.
UnRAR the files.
Place them in your World of Warcraft/Data/xxXX/ directory. xxXX = local(enUS/enGB/deDE, depending on where you live)
Run "extractdbc.bat"
Wait a while. I don't know how long it will take you. But eventually all the files will be inside a folder called "dbc" in the same directory!
In case you're freaking out about viruses, this is the official ArcEmu DBC extractor. Read here.
Adding files to an MPQ archive:
Mac: DropMPQ
Pretty self explanatory.
You need to make folders for each of the directories, depending on what files are going into your .MPQ:
Code:
"DBFilesClient\" for DBC files
"Interface\Icons\" for icons
"Item\ObjectComponents\Weapon\" for weapon models and skins
More will be added as I add to the guide itself.
Make one last folder called "patch-enUS-8" and put both folders inside it. You can replace the "8" with any number that isn't 1, 2, or 3. Replace "enUS" with whatever your locale is.
Drag the "patch-enUS-8" folder onto the DropMPQ icon in the dock, and your MPQ is made!
Put the MPQ inside "World of Warcraft/Data/enUS" or whatever your locale is.
Windows: WinMPQ
Open WinMPQ, click "Create new archive" save it anywhere, name it "patch-enUS-8". The "8" can be any number that isn't 1, 2, or 3. Replace "enUS" with whatever your locale is.
Now click "Add" and find your .dbc files. Select them both, and click open. A box will appear asking you to enter a file path, enter:
Code:
"DBFilesClient\" for DBC files
"Interface\Icons\" for icons
"Item\ObjectComponents\Weapon\" for weapon models and skins
More will be added as I add to the guide itself.
DO NOT FORGET THE "\" AT THE END OF ANY PATH.
That's it. WinMPQ autosaves any changes!
Move the MPQ to your "World of Warcraft\Data\enUS" folder, or whatever your locale is.
One last thing:
Put the ItemDisplayInfo.dbc and Item.dbc files inside your server's "bin\dbc\" folder. Replace the old one, but back it up if you want.
Additional info:
If you need to open an MPQ archive on a Mac, use this:
MPQ Extractor
To begin: How to use Taliis as a DBC Editor
Taliis has a very easy-to-use interface.
Open a DBC file:
Click File>Open>Select your DBC file
Save a DBC file:
Click File>Save>Navigate to your chosen directory>Type in "yourfilename.dbc">Save
You can view the rows of a DBC file by doubleclicking the filename on the sidebar:
And clicking the top option, "Table".
Taliis allows you to add strings by clicking the bottom file option "Strings" and entering in your string, then pressing the green add button:
Once you create a string, scroll to the bottom of the list of strings for that file. Your string(s) will be at the bottom with a number to the left of each one. This number is what you enter into the string fields in the "Table" view. For example, when adding a row with a file path for an icon:
Taliis highlights string fields as blue, cross-reference fields(to other DBCs) as orange, and other fields are left white.
That should be enough basic knowledge for you to follow the rest of the guide!
*While this guide is mainly for adding new features to patches in private servers, I will also include how to swap things in retail(though there ARE many guides already for that)
*Files in orange are work in progress!
*Files in grey are being looked into!
*Files not listed haven't been started on yet, but will be looked into later!
*The numbers before files mean what post they are in. Files in this post have no number.
Contents by DBC file-->
AchievementCategory.dbc---,
AchievementCriteria.dbc----- Adding achievements
Achievement.dbc-------------`
2-AreaPOI.dbc------------------ Adding POI(towns/pvp/etc) on the Map.
2-Emotes.dbc------------------- Adding emotes(/dance, etc)
CharTitles.dbc---------------- Adding Titles
ItemVisuals.dbc
SpellItemEnchantment.dbc
Item.dbc---------------------- Removing Custom Item bugs
Itemdisplayinfo.dbc---------- Adding Item DisplayIDs(New models/textures/etc)
SpellIcon.dbc----------------- Custom Spell/Item/Achievement icons
Spell.dbc<--- Adding Custom spells. I really hope I can get this to work!
~More to come~
Don't forget to comment! If you notice anything wrong, point it out immediately!
Adding Achievements
Anyone with a private server would love to give their players some custom achievements to.. achieve, I guess.
And here's how!
Open four .DBC files in Taliis to start:
Now, you have a choice of adding your own categories here. If not, you will need to put your achievement inside another existing one, eg: General.
I will make a new category for my custom faction.
Click "Table" under Achievement_Category.dbc:
As you can see, I have already added a new Achievement.
To do so, scroll to the bottom and right-click the bottom row, then click "Clone selected row":
This will add another row identical to the one you right-clicked.
You can now change the fields to your chosen values, but before anything, you must create a couple strings.
Click the "Strings" field in the sidebar under Achievement_Category.dbc.
Now type in your chosen name for your category and hit the add button and scroll to the bottom:
See the number in the first field? That's what you need to enter into the string field back in the "Table" view:
Now that you've gotten that part over with, here's the run-down of the rest of the fields you need to fill in:
Code:
Field 1: You need to change this to a unique number, as this is your achievement's ID. Try something high, I used 50000.
Field 2: -1 if this is a parent category, like Dungeons and Raids. If it is a subcategory, enter the parent category you want it to have. For example, if you want it to be a subcategory of Dungeons and Raids, enter in Dungeons and Raids' ID here.
Field 20: If this is a parent category, enter the number of subcategories inside it. If it is a subcategory, enter in the number in order it is(eg: three subcategories would be 1, 2, 3 in order for each one)
That's all for categories. Save the file and move on.
Now you can finally add your achievement!
Open Achievement.dbc
Scroll to the bottom and clone a new row just like before.
Create a string with your chosen Achievement Name, and then a second one for your achievement description.
Enter the Name's number into Field 4.
Enter the Description's number into Field 21
Now, your achievement wouldn't be complete without an icon, would it? Refer to the editing SpellIcons.dbc part of this guide, then come back and continue.
-------------------------------------------------------
Now you have your new .blp ready to go!
Find field 42 and enter in your SpellIcon ID(cross-reference to SpellIcon.dbc)
All that's left is to fill in these fields like so:
Code:
Field 1: -1 for both factions, 0 for horde, 1 for alliance. Achievements will not appear for opposite factions.
Field 2: If the achievement is zone-related, set this to the MapID
Field 3: This is in the case of a series of achievements. Put the Achievement ID of the previous achievement here, so this one will not be available until that one is complete!
Field 38: This is where you enter in your category. Mine was 50000, so that's what I entered.
Field 39: Achievement points this gives you. It has to be in a multiple of 5.
Field 40: Just make this 1 higher than the previous one.
Field 41: This is for realm firsts. Put 256 and it can only be gotten once per realm!
Field 43: This is a string, you can make another one in the String view, but it's just text for a reward. I don't know how to add a reward yet. :/
Field 60: This is if your achievement requires multiple items/monsters/quests. Enter that amount there.
Now, moving on to the criteria!
Open Achievement_Criteria.dbc
Click on "Strings"
Add a string for your completion text!
Make sure you change the ID to something unique
Now, enter your Achievement ID into field 2. This is a reference to Achievement.dbc.
This next 2 fields are a little more complicated than most. You should go to this page and scroll down a bit. There are explanations for every number.
Essentially, Field 3 is the type. This means is the achievement spell/quest/item/mob/achievement related.
Field 4 is for the number or ID of the item/quest/mob/achievement required.
For example, mine is for my custom quest with the ID of 60000. My fields look like this:
27 | 60000
To understand this you really must read that page.
Field 5 is the amount of times your main requirement must be completed. I just put 1.
Fields 6 to 9 are for additional requirements, pretty much just like fields 3 and 4.
You mostly see these in battlegrounds. For example, 300,000 healing in Wintergrasp: 3(type = map) | 489(mapID of Wintergrasp)
This makes it impossible to get the achievement anywhere but Wintergrasp.
Only 2 more fields to worry about:
Field 26 should just have a 0 in it. It doesn't appear to matter.
Field 30 should be 1 number higher than the previous one.
Now, save and pack it into an MPQ. You may refer to the guide at the beginning on how to pack MPQs for DBC files.
-------------------------------------------------------
Congratulations!
If all went well, you just created a custom achievement!
_________________________________________________________________________
Adding Titles
Who doesn't want a custom title for their private server?
[Name] the Delicious, for example.
Well, you can add one!
Open up CharTitles.dbc.
First things first: Add a new string.
The way titles work is by having %s = player name.
So I put Initiate %s. This will come up in my name as "Initiate Dave" or whatever my name is.
Now switch to "Table" view. Scroll to the bottom and clone a new row:
Change the ID to a unique number of your choice, I used 900. This number is what you will use to give yourself that title. Either put that number in the "rewardtitleid" column in your world database's quest table, or simply type ".char settitle <id>" if you're a GM.
Enter your string into fields #2 and #19(#2 is for male characters, #19 is for female)
Now change the number in the last field to 1 above the previous one.
IF you're just swapping an existing title, not adding a new row: That's it. You're done.
But if you want to add a new title, you have to add the title to your Player.h file inside your ArcEmu core, then recompile. This is for the drop-down menu in the character screen to work.
For editing the header file, you have to open it in Xcode on a Mac. Xcode comes with your OS X installation disk, under developer tools. Otherwise, use a free editor like Textmate.
For Windows, you can just open it in Visual Studio, the same program you compiled ArcEmu in.
Find "PVPTITLE".
Add your new title like so. The number on the right is that number from the last column of the dbc:
Now, recompile your core.
Mac:
In terminal:
cd to your /trunk/ directory.
then
Code:
./configure --prefix=/opt/arcemu --with-mysql=/usr/local/mysql/bin/mysql_config --with-pcre=/usr/local/mysql
then
replace # with your computer's processors x2(ex, Dual core: make -j4)
The files will be in /opt/arcemu/, if they weren't already.
Windows:
Open up Visual Studio, and load the solution.
Tools>Settings>Expert Settings(if it wasn't like that already..)
Build>Configuration Manager>Set the first drop-down menu to "Release"
Build>Build Solution
And now you wait for it to finish, and copy over the files to your server folder as usual!
_________________________________________________________________________
Fixing WoW-V Custom Item Bugs
Fixing bugs occurring with custom items from WoW-V is fairly simple. You know the "?" icon and the "Requires Melee Weapon" issues that custom items have, right? Well, you just need a simple DBC edit to fix that.
Open Item.dbc. Clone a new row and follow these guidelines to fill in the fields:
Code:
Field 1: Item Entry ID
Field 2: Item Class
Field 3: Item SubClass
Item Classes and their SubClasses(taken from arcemu wiki):
[SPOILER]
0 => Consumables
0 = Consumable
1 = Potions
2 = Elixirs
3 = Flasks
4 = Scrolls
5 = Food & Drinks
6 = Item Enhancements
7 = Bandages
8 = Other
1 => Bags
1 = Soul Bag
2 = Herb Bag
3 = Enchanting Bag
4 = Engineering Bag
5 = Gem Bag
6 = Mining Bag
7 = Leatherworking Bag
8 = Inscription Bag
2 => Weapons
0 = Axe (1-handed)
1 = Axe (2-handed)
2 = Bow
3 = Gun
4 = Mace (1-handed)
5 = Mace (2-handed)
6 = Polearm
7 = Sword (1-handed)
8 = Sword (2-handed)
9 = UNKNOWN
10 = Staff
11 = UNKNOWN
12 = UNKNOWN
13 = Fist Weapon
14 = UNKNOWN
15 = Daggers
16 = Thrown
17 = Spear (Not Supported/Unused)
18 = Crossbows
19 = Wands
20 = Fishing Poles
3 => Gems
0 = Red
1 = Blue
2 = Yellow
3 = Purple
4 = Green
5 = Orange
6 = Meta
7 = Simple
8 = Prismatic
4 => Armor
0 = Miscellaneous
1 = Cloth
2 = Leather
3 = Mail
4 = Plate
5 = UNKNOWN
6 = Shields
7 = Librams
8 = Idols
9 = Totems
10 = Sigils
5 => ??? (ex: Ankh)
6 => Projectiles
2 = Arrows
3 = Bullets
7 => Trade goods
8 => ??? (empty)
9 => Recipes, Patterns, Plans
10 => Marks of honor, badges, etc.
11 => Quiver and ammo pounches
12 => ??? (seems to be quest items)
13 => Keys
14 => Mount
15 => Miscellaneous - Junk (gray color - poor quanity items)
0 = Junk
1 = Reagents
2 = non-combat pets
3 = Holiday items
4 = Other
5 = Mounts
16 => Glyphs[/SPOILER]
Field 4: Unknown, set to "-1"
Field 5: Quality
Qualities:
[SPOILER]
Junk(Grey): 0
Common(White): 1
Uncommon(Green): 2
Rare(Blue): 3
Epic(Purple): 4
Legendary(Orange): 5
Artefact(Gold/White): 6
[/SPOILER]
Field 6: Display ID of your item
Field 7: Inventory ID/Slot ID. This is the actual number that determines where it is equipped.
Slot IDs:
[SPOILER]
0 None
1 Head
2 Neck
3 Shoulders
4 Shirt
5 Vest
6 Waist
7 Legs
8 Feet
9 Wrist
10 Hands
11 Ring
12 Trinket
13 One hand
14 Shield
15 Bow
16 Back
17 Two hand
18 Bag
19 Tabbard
20 Robe
21 Main hand
22 Off hand
23 Held
24 Ammo
25 Thrown
26 Ranged
[/SPOILER]
Field 8: Leave at "0"
_________________________________________________________________________
Adding New Item Display IDs
This guide includes adding a displayID, fixing custom Item bugs, and adding a bag icon.
Adding New Item/Spell/Achievement Icons
Every blizzard spell, item, achievement, and skill has an icon. They all have the same basic template:
[SPOILER][/SPOILER]
Sized down to 64x64 resolution.
So all you need to do is open photoshop/gimp/whatever you have and paste in your chosen image, then put the template over it, size it down to 64x64, change it to indexed colour mode, and save it as a .png.
Breakdown:
Paste in your chosen image:
This is just a picture I pulled off of google. I pasted it in to Photoshop and put the template over it like so:
[SPOILER][/SPOILER]
Then I resize it to 64x64 resolution and set the color mode to INDEXED. In Photoshop that's Image>Mode>Indexed Color. Then make sure you click "Web" under the Forced Color dropdown menu:
The result:
Now you just need to convert the image to a .blp. This is Blizzard's image format.
Use this java converter to do so:
WoWImage
Just drag and drop the file onto the "Encode" button.
Well, I hope this guide helped you. I will be adding to it until it's complete, and then I will go about improving it if there are any problems. There just aren't enough good DBC guides out there. Comment or PM me for any particular requests that you would prefer for me to complete first!