WowLegacyCore / HermesProxy

A World of Warcraft connection Proxy for VMaNGOS & CMaNGOS.
GNU General Public License v3.0
304 stars 97 forks source link

Incorrect NPC IDs being sent from server to client in AQ40 #353

Closed HS-Disq closed 7 months ago

HS-Disq commented 7 months ago

Describe the bug On 1.14, we use WeakAuras to identify certain NPCs (Slayers and Mindslayers within AQ40. This was very popular during the Classic days to fish for certain IDs. Based on the NPC ID, it would count what it is.

What we see however is that incorrect NPC IDs are being read by the client (or sent from the server to the client). When we see, for instance, a Mindslayer (NPC ID 15246) visually, we get back the NPC ID 15250 (a Qiraji Slayer).

This makes WeakAuras and other LUA based modules that specifically use NPC IDs unreliable.

Below is the output we get from one Instance ID, a pack containing 1 Qiraji Champion (15252), 1 Qiraji Slayer (15250) and 3 Qiraji Mindslayers (15246):

[22:30:46] Champion-Creature-0-1-0-0-15252-00000157DE [22:30:47] Slayer-Creature-0-1-0-0-15250-0000016E7C [22:30:49] Mindslayer-Creature-0-1-0-0-15246-0000016E7E [22:30:54] Slayer-Creature-0-1-0-0-15250-0000016E7D [22:31:00] Mindslayer-Creature-0-1-0-0-15246-0000016E7F

This is the WeakAura we used to test it out:

!WA:2!DRZsSXrY1jkURvC7Fsu2Y7UA962JS4hTJgsoKuwRsKxpd5qrgZFQNzK2pEXWQ7UMPBXE6U3Q6MCOc2aSeggcbiojegW3jcc8bFiGNYPehDWlwFQarGpKBrh9rDihJYRQ(Z09m9WpY2xwEGt11N3V6vVFvn0dgHQmBHPkuCK2JOpI(tY9mvhIoMugPTLoXX19ILTmF8JreD5AoowEMUhH89mCiR76z6ytLi7UEZMuS3qhIS1G(3WX02tD(kRvRIYHbWAEhlhYF9qdn0Wf9jwUx1WZZLENjNChulNcMotwRv1ADmvVFXjNHG0eG9wkupeXtsTPPTj1qQm8JN0EEeZwTWe6BmkjS5p7aDSQFZM121ftwQYkBSy9vk7bFOG8jOI7rDXwwlRtLEg1xfVn22RkmBZoh2y(svR1OATsk1IhAdcggsP6gvwzLY(agvDTq7IjkIrvxcJS8muSrTXuP99TdjbPNdCmMyJSEaqAa1V1(iBZ2ioJCl2xDXNIruCvpc2ULNXfyxUSTJn(iDG84ZObNyjuSMJToDp(u5Sc7ALBJmTxKLdwa7ASVp76SrHF)A92tzDmvZLUOPTUSJVNSHZoYTr27kFFtc6rMYRcdqfmXKvf)i7c7SYgOTXYux0o2yDztB5s3F2PK3X0ZaAJKBI3roKIKDAkJ5SNPDlzpdmmzyNXwdxGSDa3EHdaXNcULqBOSLds)bQEilyrxrPTpOXirEmWWWEW5ld7gAxHvqsrZcrP8wLPMpgZBCKAOgxG2YWdp8gdpvH5uPo(enSQzBxhINcvdG8WQb6vghe8Bf9wy3lv9J9reS8I(wwYp0W0dFarquCXPslIJVB40Rcy8vFAq7aD3VSkf3gyhLPlmDHPoWZrlK3(lY)3LZu39QRUR)y0ir6IGcjxASe2c25oSjb0hGTxKhA4NhCgyrExC8QwDELkvwROVP(Hwko1x8JNVS54BfEUyzBa3dRcY5MMTK2NITAko9Cq51RvB9vxPYI1oGVjygCs7qt7MoKa9QrDFnZw2oeC4XWkCf0keIdHU5HcMnGZ2K0j845iA34j34ataEvfs0Hu0Ie0dFGMp1ZPDnChVod9IM(2IdHJpHKm8NLdiZL1mqTD5ys(UYtLO)2X6x9osV9c0UCdUUMlYKqhNF8Sb2E7cXqEczDNu4PB73wEAqlu)yHtckraP0uwYVonqljK6cLSGab75tSLfTJP48bFNaRH9K(R0uv6XYGXAO54Zpl27m6z0tA5aQgWsLaMI9Ql9J26FU97(Ix8hyFj2fosdm7R7SJD1DmDXBY(Ymj2xbmRnQAGsZ53x3Prqtd2xtI91hLvVZ5FLQEGEQ2goU(UlyISCAr)WCR((1BOuPALAnwz5Q1Y9rGa9VrqREGIh8rUfCK31XxEhKTNSNdizbf3ugDOVBUaUt13ZZXEA(IEFmnvNf5DUMtyFRBxstd7YbFp618)u4yy5iGhoaidcwRNzBm3MkObh0XogMw4fWiDOlpIpoOxdtD862vattU4ud4cUtWecwFzBDChyOzYl9jsbNoAcFgVjeyOssYSPSTJNCZcbCcN1Td0sJ65UYZtWipSWcZ45kl6nxEzBtR8YnNi1KVtvSxjllHjLiEl5yv1iMUEJNBD75Tm12cGsSeIBkAc5yXe)VhIrBvciyAHQAiBH9g649ULglaNqOj9GnzFJF(OSl(KrocmBPzGPvb)tRBFaf(PK1oODPS3sIDj2iGlT6S3GDvIVTWxBziidNdduRAWfWk8nd998P4gChZBYEt23HDf23oAoCVOQW(ONpDVixRJmn7BjXEn2RRaOwBlyj1DhlMhX5LluOWejpdZ364eUKKuqabu3RVXkLE)kkneXZS8A3RXdxxzLfYlNMXpGhcsaV9uQ4Nsas2gZ(UxbW516IZuORjYIgHVd1nPpsmTTXfb)3UJeAtoigJvCAzQ5(w9Oc3dz7EjKy9HRzvhD8V(Cm5TE(wySBjUVxpfUGXG994XL0BSfJDYrBabBrbrmiEXgSBCb2BFJRWU8rG)FUZBUBhB9N8nDhHFEUb1abMnEVq3pUVUOtX)c8I1Gg2GDT9Jhl31PUxmXY7g64Zc6nYhz5s1RTU7LfDY1v4Uf1EOPUNr5sWNpparMDW6Io)0Jc8m)(HKZtfJ)iqeB2Cx2foG4aQoyUdWYRT(AvyxMamfFohiMyxxL7hYb2EUxCrI5JLVVpsN77xUwTumEeMos03oGd)hsqU79WWghfdhrKRRxV2klVwLqEprK0UxA51wd0)ccjqz57TuTUlLhjZRhYzVxkoBBtQPQfEtvdSzldVpLLF795NDeXDTPOj)GgXGDtEWxSjppBkrJPhvLcb3yHvxQoxLN3xrXiZYMJTm7cS7uMhebBLRWwDt2pwsbz5AGgU8JDCApeBjjLDeYB3raCmFORdqteu8WB6(nJCMWL0lysranQBW(qd2pkiuRNkSilhyxJ9pTjR8xHnpBb2pK9USkho1knlV2kTR)Ov7aXJYJrdudFfj26l9B2(TF1V7lEXNZpgXJzFzGeFTZF5)V9IqOXtJAXJw04jL4l6r0BCUZDU)v33mCv1sODQnBS6j3JOos(fV4f)kUhrx5mMUBdUbQWVgk2lPuSlrP)3(J4H7a8tKYkcMEgj7EH9sJmMRhS)1F3rinoiaECzhxqcW4r2(Lgq4cPHra5K9yrevQrLImNf7j8oCpHupUTl1Y7EpiS5XBb)lzGOCd95LFmM4KhYrHNesdt98Xrii(GNVrdFElBxnrpIuD4DXdIZJaBFMGNVBMlFxWh68T7m5EFJmXgfSN4F38MY3ZhtbEc2RXIauA7Okd5Fy7z6TRS6UY(8drqMuUipEQHqyMGPrEyMMEqIe3R(YlKmszbk7kzaOAuOPLJdzC4uGFBvmz8yY6oGHPXNo)CtKxE6BnXK3EcEWODPTywrW4Y3fIfA65koxXCYiGa4my)QHFixi8rDJ2igoPIJS3PhePtQyeI(ZfoDcI35dxXnZvOqx5CiboyfZ)QEeiPORmjPeYUulnEvrBFXCgg882NuA2BLHukXHYSKthZ8gOaku80n18JxaLXzZtVikZd2hVqktzZCtLHSjn)oabZPsOeksQEkehV0II)uigM9DYqmeAh(yvpspNEKcGbLZUCOhZTNE5qF2PFjKdZmxwQdHg5pwbrpt6pfsI(CUCg0j63V0jinGFfrSNLVli0LWiZhKV(bzYiJrh8iP87Nj7KXqz6))KnvmvkZMhxCahVo2usNKCFkP(8mikmwHGYaakEtNEJm7K3d0whimMjnmsuMIg883gCgTdAxhs3Z3sNNZHsI9)KffQxAbfn3cyBraWItsIPoEmHn(Ge1)T89e(cgObX7cREMIY38yqSyUtKidFhICgOodnIF4DprWka0eH51kXEWMzhF9T7gF9YQbP34(9ZAIt3aPQsWBBcbB1OnQZLYgEZfdVY8CJy8CEy)9BY(5zKJd7FG9pgNzt2G7DIb3rPYKDy3RMnrkYrCtrImUxpZPuSxgbsP52FW8p8w03P1IR)bh0nD1F6xfYL2ZY0gZ(zS7ls8KP05v(j)zQ0Sb921SsQ521KsYUJ30H(hBSbD0TFv9uN(sSI(phLLv7e4Cfm)kmiiEG6HLkCSUwRbRajdIT3vFcQWYfkipwIRoHo2XhjPuMuyu(TJjLCHFHUw4dccHQwci0vnlQ1PIgcvddiIU6KXn)IAj5dwAOOk)X5LnyWibs(mD42lbfQUYnwFuQ6w9MNlZYCKYySH7f7EXr1D1HUyV5Zsxnowh234Rpk7I)ErfEVc7BZ(jWV8I3(gSR(SGLVqy9A7m0VmBdC(ec227eVjPE167UUOwNvT9xoiKuB)LKgsQT)YbIEmLCSWi88s4q5LNEQPYNSy4s86OR7(Xzxl8WERvs5EqutZVuP1UxLfYxFJfkvRsJvxVE1kR)ay86RTCTu1nVu1WV3aawq4w9wxDwdqv5TKy178L(Vtu4(462doqWIusYeBbPOu320Rshtk)6kA74tXoBJj5MiES5r2L88qABnEUGB7px(uZlLBOafYwbfsIVAEPCsb3Ko3AfvgPmt(4yl21Xv1IawotXE)SShI0c7D88RC3zDA42Oj)NbwnlomT6wU(cHiDrToUapsDXlPeVbCQV5Qi3LxGFlBnGwfUh2RmM6bnx0HW5)yrwkEpEzqkkZo9SDdNxenD6YPD6ITVV6J8hFW(Pazp3TxYO)pjhvNCcaszGfH0xkJk(iwh3Ax374n3edshQB(vN8XJEYJl7Qr0hmtDZCzcZUgR6bMHmuSD3eSb3g9w53(KSsNH8zRSz3qCLWH3PcB94G8mJVZcU(JbpHoqpv4jHZ2Zo)e6M90Xqj8jF6Xu)X(3)DnZVIAXLGZVT4odTspbbDgCZNP9TtB4sNPf)sVWKbhD2WyYyIYCLzjEzT)1NlZm2DJYV)JyYB9sFH4zx7GIHTuxtC5nIBk)nUcSox3VZaQmquXgC)ENyPdm2l(UF5xk7GItNGrwTBWFSIkIR6LT0O7hBPEusOFXnve2SVKIWs4fyVYn2MDzvk2cR5PUnYYhtVtr(tSznNILOBr0Xnr(wExOmhWppix3yl3eikOfWunJIBH3L9FY(fINW3VN)abdFNAcO750QLfM9Bny)IHzFgPsaLW(8nz)o2)bBC3z5vbqo81vkUETGY3Td3jYJDS5El4VlhNMYLmSht8S8k8VWUScbbAiaCk2g1PuziEd3Hbuueu0hca9VH9BVe7ZCFTvrDmB7BNi)E555YaaZQBqeV7dbsrjPIeuaFSGYeaeqY0fnPY4p2NFhLoCxQwykfMmIVcyiuB(AkCO41SGfpaWnzFUXbCbz4tYdi2dfxBULfYLI3K9zhiefcX8EAHDBaks)L7Bz220l4PIUV4b)jEVHuZ2UGO93X(3zf)whMqXOZqJ0fu3r(6GkLK0kHjGpUi(1j5HKDZWOfUzw)fVGRRD7jVU27ivn4mP4nLY7D6PM8wssRgfnCGCDaWcM9K3wo6ocPW3ftwYfzOJzKdk)pvsQMJhiyVU2Stodq48iiheWH1nxsabFFR(HZpGdNd79rMK9zPIneVSfXBmsrCVSd4y8uDpg)2d(ncOVlSLBQ1WZauQmCS03DGhHJrl7)X9AdgIUeSMj)9QoS7yzbPzAOdtOnYQ7mhkBlxthXb)BSYdtcFFmL5Ve1SN)mXZpNP(ZcFGSZheQ4Erp6f2pnBYA6mil(R9iBu9d6wVy(Rb5oL5p0LSbCXtn)ERUa9hlf8MwYEZyMuBgJS9)179)d

Game Server Everlook Europe

Hermes Proxy Version 02:27:42 | Server | Server | Version 2023-10-19 official 3.10.0 02:27:42 | Server | Server | Modern (Client) Build: V1_14_2_42597 02:27:42 | Server | Server | Legacy (Server) Build: V1_12_1_5875

0blu commented 7 months ago

Might actually be a vMangos issue. @ratkosrb

ratkosrb commented 7 months ago

We use guids differently than Blizzard. We don't have dynamic guids. The entry in the guid is always the first entry set for this spawn, we don't change the creature's guid depending on which entry is selected.

HS-Disq commented 7 months ago

So no matter what, it will always return 2 mindslayers and 2 slayers. How is the server able to determine which one it spawns then? Or is there a subcall to randomize it?

But even then, it should still show the correct NPC ID, right? Otherwise, the client would not be able to understand it.

ratkosrb commented 7 months ago

The actual entry that has been selected is set in the update fields, in OBJECT_FIELD_ENTRY. The client does not care what entry is set in the guid, that is not read by it. It only uses the guid as an unique identifier to tell objects apart, it does not break down and parse its contents. You are using some kind of addon to read the entry from the guid, the client doesn't use that by itself. The server needs the guid to be always the same for a given spawn position, many parts of the code make the assumption the guid is static, in order to fetch a given spawn by its low guid. If it were changed it would break many things.

You should update your addon to check the Unit's name and tell the entry based on that.

HS-Disq commented 7 months ago

alright, this is a very clear answer to me. Thank you!