[Guide] The Truth about Custom Items and the Big Red Question Mark

[SIZE=14px]The Problem[/SIZE]
If you create a custom item with an entry ID that does not exist in the Item.dbc, it will be displayed as a red question mark:



[li][SIZE=14px]It cannot be enchanted[/SIZE][/li]
[li][SIZE=14px]It cannot be added to the action bar[/SIZE][/li][li][SIZE=14px]It cannot be right-clicked from your inventory to equip it in your character panel[/SIZE][/li][li][SIZE=14px]It will disappear when placed into a bank or guild vault slot (visual bug only)[/SIZE][/li][li][SIZE=14px]If the item is a weapon, spells that require a weapon cannot be used (ex. Sinister Strike, Hamstring, etc.)[/SIZE][/li][/ul]
[SIZE=14px]Solution #1: Use unused items from the item.dbc[/SIZE]
One solution is to use unused item entry #s from the item.dbc file. The client knows that these items exist, but they’re most likely NPC items (not available to players):

[li][SIZE=14px]Gregarious’ importable table of unused item.dbc items: [/SIZE]item_dbc_unused.sql[/li]
[li]Rochet2’s list of unused items: http://pastebin.com/sirbRBJY[/li]
[li]ragmanii’s list of unused items: http://www.trinitycore.org/f/topic/2687-guide-the-truth-about-custom-items-and-the-big-red-question-mark/#entry59125[/li]
Notes on this solution: While you are freely able to use the entries above for your item, the client will still fight you over the display model if you decide to change it. When you first log in with your new item, it will look fine. However, if you delete your cache and log back in, the item will appear to be the original unchanged item until you relog again. Relogging will force your client to load the custom displayId into your cache, thus showing you the new display you gave it. Also, other players will see the default display if they delete their cache as well. Thankfully, this is rather temporary, as a simple relog will get the item to show your edit as opposed to the original.

Furthermore, the item’s default icon display will show up while it is in your bags, but if the item is equipped, it will convert its icon to the new displayId you gave it. For this reason, it is recommended to use items in either option above that look similar to the one you’re making. Example: If you’re making an axe, try to find an unused axe for your new item’s entry ID.

[SIZE=18px]Solution #2: Create and distribute a new patch containing a modified item.dbc[/SIZE]

This process is explained in more detail in this thread. Other information can be found by Googling “trinitycore custom item dbc patch”, or similar.

The advantages with this solution include:

[li]Unlimited item entry #s[/li][li]All of the problems above in “The Problem” section above no longer apply[/li][li]All items become a “real” item that the game recognizes 100%[/li][/ul]
The disadvantage, however, might be enough not to use this solution: All of the players on your server will need to download this patch in order to interact with your custom items. For those of you forcing the use of a custom launcher in order to play on your servers, this is not a problem as you could set the launcher to download the additional content patch. However, for other server administrators who do not have or want to require a launcher, this is not a recommended solution.

both correct and incorrect

Glitches in above

  1. modify the objectmgr.cpp to load custom displayid’s (currently core resets any db-side modifications), so the relog trick only works if you also modify the core to accept db changes

  2. do NOT use items that creatures wield (cpt. obvious)

armor is less picky as weapons though from what i heard

This is why I love posting guides/scripts in this forum. I always get great insight from the developers here like Biohazard that augment my knowledge of the core.

ZxBiohazardZx, do you mean within the ObjectMgr::LoadItemPrototypes() function?

And on a side note, shouldn’t this be done automatically through the “DBC.EnforceItemAttributes” worldserver config option? I usually disable it but I still see lots of errors like:

Item (Entry: %u) does not exist in item.dbc! (not correct id?) 

I think he talks about

#   DBC.EnforceItemAttributes
#        Description: Disallow overriding item attributes stored in DBC files with values from the
#                     database.
#        Default:     1 - (Enabled, Enforce DBC values)
#                     0 - (Disabled, Use database values)

DBC.EnforceItemAttributes = 1


That’s the second thing I mentioned in my post, Kaelima /emoticons/default_smile.png

derp, you can also make a custom patch. Then you can use ANY entry id you want. But yeah the easiest way to do this is using unused ones but if you want to make a funserver with more than 8k custom items you should make a patch.

and also if you don’t make a patch all the items will have weird looks in bag.

Custom client patches are NOT supported here.

There is a list floating around for the unused item entries: http://pastebin.com/sirbRBJY

Credits have to be given to: Rochet2 /emoticons/default_smile.png


I have never been able to find a decent DBC-CSV converter and this one seems to work wonders. You don’t know how many hours you have saved me with DBC edits!

Reminder: DBC edits are absolutely, positively NOT supported by the TC team as they involve modifications of Blizzard files which would create a bit of legal jeopardy for this project. Therefore everyone is on their own in this area, but… there’s a lot of fun stuff you can do with them and, at least in my case, and it’s really motivated me to spend a lot more time with the TC application and getting much more familiar with the myriad aspects of it.

TC does not support client edits, that is why this topic was created, not only that, but, your “solution” would need to be packaged up in some sort of patch and distributed to EVERY person who logs on to that server, and could possibly cause their client to become invalid on other servers, especially if they all start doing this, and have their own patch for the users to apply…

Please don’t post client modifications. Any continued post that state such will be removed. Thank you.

Those actually weren’t client modifications, they were tools just like the many others posted on this site. One was a DBC->CSV converter, which frankly would be extremely useful for anyone wanting to view the contents of DBC files just so they can understand them better.

Meh. At least it helped one person. Delete away…


, yes it was, the last part of that section said to convert that csv file back to a dbc file and stick it in the client data directory, duh.

I was referring to the link being removed. The CSV converter is a perfectly legitimate research tool (and TC is advertised as a research project) and I would frankly be shocked if the long-time TC developers did not have ways to view DBC file contents.

I mean, I totally understand and support TC’s decision to not support client modifications, but let’s not throw the baby out with the bathwater! A DBC->CSV converter should probably be part of the downloadable tools for this project.

For example, if I need to modify a mob’s SAI to use some spell or aura to be more Blizz-like, then being able to view DBC data is essential. Wowhead is not always helpful and certainly will not always have pre-Cat data available, and there are tens of thousands of spells in the spell DBC file.

They can not just be used to look up, but also to edit. This both follows and leaves the path of being a research tool.

When software tools are outlawed, only outlaws will have software tools.

Agreed. There are good reasons to not support client modifications here but that’s no reason to hate on them either.

I went through and created a quick CVS file with all the ID numbers that are in the DBC for 3.3.5a and are not used in the MySQL server. Scroll through to the type of item you want on your server and use the correct ID’s within SQL to create your item. That way they will show up without the red question mark.

This is really a CVS but it wont let me upload it, so I changed the extension to TXT: Consolidated IGA items-3.3.5a-Items in DBC and not database.txt

And… as always… FLAME ON!