When using weaponDamageEvent, data.weaponType returns an unsigned int. GetSelectedPedWeapon, GetHashKey, joaat, and compile-time hashing all return a signed int.
Not a huge issue since you can work around it (see below), but it caught me off-guard and I haven’t seen any mention of it.
There’s a lot of places that do this ‘inconsistently’ and as per usual this can’t be changed without breaking compatibility.
I’ve tried to find a past post explaining this but probably used the wrong search terms (or it was on GitHub or Discord or wherever), but really I don’t know the ‘expected’ outcome you’d want to see, and by now I expect this to be known behavior given there’s a lot of other places that don’t sign-extend hashes.