while item, on which you trying to attach sound to, never was to the ground, sound will not be spawned on it
So, you either do hoops for example:
void CreateSomeSound()
{
Object target = this;
if (GetHierarchyRootPlayer()) { target = GetHierarchyRootPlayer(); }
g_Game.CreateSoundOnObject(
target,
"soundname",
1, false);
}
Or you somehow move item to the ground and back forth, but we understand, that it smells stinky.