Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom items in 8.2.5 #24095

Open
xXBentRealityXx opened this issue Jan 22, 2020 · 10 comments
Open

Custom items in 8.2.5 #24095

xXBentRealityXx opened this issue Jan 22, 2020 · 10 comments

Comments

@xXBentRealityXx
Copy link

xXBentRealityXx commented Jan 22, 2020

Description:

Custom items in 8.2.5 work at first but after clearing client side cache they show up as red question marks and I get the Retrieving item info bug. If you insert the required hotfix_data entries and try to scroll over the item in game your client crashes.

Current behaviour:

Custom items in 8.2.5 work at first but after clearing client side cache they show up as red question marks and I get the Retrieving item info bug. If you insert the required hotfix_data entries and try to scroll over the item in game your client crashes.

Expected behaviour:

In 8.0.1 (28153) you had to insert the data into hotfixes.hotfix_data whenever you made a new entry in hotfix tables. When you do that on the latest revision and scroll over the item your client crashes.

Steps to reproduce the problem:

  1. Make a custom item by using hotfixes.item_sparse and hotfixes.item (I'll include an sql to do it in this report)
  2. Insert the data into hotfixes.hotfix_data by converting the hex from https://github.com/TrinityCore/WowPacketParser/blob/master/WowPacketParser/Enums/DB2Hash.cs to decimal.
  3. Go in game and scroll over the item.

Branch(es):

master

TC rev. hash/commit:

a4a266e

Operating system:

Windows 10 x64

SQL to Execute:

DELETE FROM `item_sparse` WHERE `ID`=800101;
INSERT INTO `item_sparse` (`ID`, `AllowableRace`, `Description`, `Display3`, `Display2`, `Display1`, `Display`, `DmgVariance`, `DurationInInventory`, `QualityModifier`, `BagFamily`, `ItemRange`, `StatPercentageOfSocket1`, `StatPercentageOfSocket2`, `StatPercentageOfSocket3`, `StatPercentageOfSocket4`, `StatPercentageOfSocket5`, `StatPercentageOfSocket6`, `StatPercentageOfSocket7`, `StatPercentageOfSocket8`, `StatPercentageOfSocket9`, `StatPercentageOfSocket10`, `StatPercentEditor1`, `StatPercentEditor2`, `StatPercentEditor3`, `StatPercentEditor4`, `StatPercentEditor5`, `StatPercentEditor6`, `StatPercentEditor7`, `StatPercentEditor8`, `StatPercentEditor9`, `StatPercentEditor10`, `Stackable`, `MaxCount`, `RequiredAbility`, `SellPrice`, `BuyPrice`, `VendorStackCount`, `PriceVariance`, `PriceRandomValue`, `Flags1`, `Flags2`, `Flags3`, `Flags4`, `FactionRelated`, `ItemNameDescriptionID`, `RequiredTransmogHoliday`, `RequiredHoliday`, `LimitCategory`, `GemProperties`, `SocketMatchEnchantmentId`, `TotemCategoryID`, `InstanceBound`, `ZoneBound1`, `ZoneBound2`, `ItemSet`, `LockID`, `StartQuestID`, `PageID`, `ItemDelay`, `ScalingStatDistributionID`, `MinFactionID`, `RequiredSkillRank`, `RequiredSkill`, `ItemLevel`, `AllowableClass`, `ExpansionID`, `ArtifactID`, `SpellWeight`, `SpellWeightCategory`, `SocketType1`, `SocketType2`, `SocketType3`, `SheatheType`, `Material`, `PageMaterialID`, `LanguageID`, `Bonding`, `DamageDamageType`, `StatModifierBonusStat1`, `StatModifierBonusStat2`, `StatModifierBonusStat3`, `StatModifierBonusStat4`, `StatModifierBonusStat5`, `StatModifierBonusStat6`, `StatModifierBonusStat7`, `StatModifierBonusStat8`, `StatModifierBonusStat9`, `StatModifierBonusStat10`, `ContainerSlots`, `MinReputation`, `RequiredPVPMedal`, `RequiredPVPRank`, `RequiredLevel`, `InventoryType`, `OverallQualityID`, `VerifiedBuild`) VALUES
(800101, -1, NULL, NULL, NULL, NULL, 'Warrior Helm', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000000, 1000000, 1000000, 1000000, 1000000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 1, 0, 4, 7, 32, 36, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 1, 2, 32978);

DELETE FROM `item` WHERE `ID`=800101;
INSERT INTO `item` (`ID`, `ClassID`, `SubclassID`, `Material`, `InventoryType`, `SheatheType`, `SoundOverrideSubclassID`, `IconFileDataID`, `ItemGroupSoundsID`, `VerifiedBuild`) VALUES
(800101, 4, 4, 6, 1, 0, -1, 0, 0, 32978);

DELETE FROM `item_modified_appearance` WHERE (`ID`=800101 AND `ItemID`=800101);
INSERT INTO `item_modified_appearance` (`ID`, `ItemID`, `ItemAppearanceModifierID`, `ItemAppearanceID`, `OrderIndex`, `TransmogSourceTypeEnum`, `VerifiedBuild`) VALUES
(800101, 800101, 0, 5086, 0, 0, 32978);

DELETE FROM `hotfix_data` WHERE (`ID`=800101) AND (`TableHash` IN (1344507586, 2442913102, 3834752085));
INSERT INTO `hotfix_data` (`Id`, `TableHash`, `RecordId`, `Deleted`) VALUES 
-- hotfixes.item data
(800101, 1344507586, 800101, 0),
-- hotfixes.item_sparse data
(800101, 2442913102, 800101, 0),
-- hotfixes.item_modified_appearance data
(800101, 3834752085, 800101, 0);
@xXBentRealityXx
Copy link
Author

Ah apologies, you must make VerifiedBuild MEDIUMINT for the sql to execute properly

@funjoker
Copy link
Member

Log packets in worldserver and check if hotfix data is sent as available hotfix, if it is requested by client and if it is sent properly after request.

@xXBentRealityXx
Copy link
Author

Unfortunately I do not know what I'm doing when it comes to this issue, but I will try to find out what I can.

@funjoker
Copy link
Member

funjoker commented Jan 22, 2020

Worldserver config you can log packets. It generates a .pkt . Login wait 2 sec logout done. Parse it with WPP. And check for hotfix packets.

First SMSG_AVAILABLE_HOTFIXES
Then CMSG_REQUEST_HOTFIXES
Then the hotfix query.

@xXBentRealityXx
Copy link
Author

SMSG_AVAILABLE_HOTFIXES seems to send the correct info but CMSG_REQUEST_HOTFIXES does not appear anywhere in World.pkt

@xXBentRealityXx
Copy link
Author

The generated SQL file only has one entry in hotfixes.item and nothing else

@funjoker
Copy link
Member

delete cache
do it again
bring me the packet

@xXBentRealityXx
Copy link
Author

Sorry, I've been quite busy lately. Here is that packet.
World.zip

@funjoker
Copy link
Member

ServerToClient: SMSG_AVAILABLE_HOTFIXES (0x25A3) Length: 200 ConnIdx: 0 EP: 127.0.0.1:63529 Time: 01/26/2020 05:30:38.122 Number: 8
HotfixCacheVersion: 0
HotfixCount: 16
[0] TableHash: 793851790 (CurrencyTypes)
[0] RecordID: 3000
[0] HotfixID: 3000
[1] TableHash: 793851790 (CurrencyTypes)
[1] RecordID: 3001
[1] HotfixID: 3001
[2] TableHash: 793851790 (CurrencyTypes)
[2] RecordID: 3002
[2] HotfixID: 3002
[3] TableHash: 3146089301 (ItemExtendedCost)
[3] RecordID: 10000
[3] HotfixID: 10000
[4] TableHash: 3108775943 (PlayerCondition)
[4] RecordID: 100000
[4] HotfixID: 100000
[5] TableHash: 3834752085 (ItemModifiedAppearance)
[5] RecordID: 800101
[5] HotfixID: 800101
[6] TableHash: 3834752085 (ItemModifiedAppearance)
[6] RecordID: 800102
[6] HotfixID: 800102
[7] TableHash: 3834752085 (ItemModifiedAppearance)
[7] RecordID: 800103
[7] HotfixID: 800103
[8] TableHash: 3834752085 (ItemModifiedAppearance)
[8] RecordID: 800104
[8] HotfixID: 800104
[9] TableHash: 3834752085 (ItemModifiedAppearance)
[9] RecordID: 800105
[9] HotfixID: 800105
[10] TableHash: 3834752085 (ItemModifiedAppearance)
[10] RecordID: 800106
[10] HotfixID: 800106
[11] TableHash: 3834752085 (ItemModifiedAppearance)
[11] RecordID: 800107
[11] HotfixID: 800107
[12] TableHash: 3834752085 (ItemModifiedAppearance)
[12] RecordID: 800108
[12] HotfixID: 800108
[13] TableHash: 1344507586 (Item)
[13] RecordID: 800111
[13] HotfixID: 800111
[14] TableHash: 2442913102 (ItemSparse)
[14] RecordID: 800111
[14] HotfixID: 800111
[15] TableHash: 3834752085 (ItemModifiedAppearance)
[15] RecordID: 800111
[15] HotfixID: 800111

Server just sends item_modified_appearance as available.

800000<--- this is a custom items as welli guess. There all tables are sent.
So, it might be, that some data is not proper in DB. Can't tell you which might be.

@xXBentRealityXx
Copy link
Author

UPDATE: it seems the item structure may be out of date, creating a new demon hunter or monk crashes the server. The crash is related to Player::CanUseItem(ItemTemplate const* proto) const in Player.cpp when trying to retrieve ITEM_FLAG2_FACTION_HORDE from Flags2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants