Wtf guys, stop arguing in help threads lol. It's just gonna be confusing when the OP comes back and is trying to figure out what we're saying.
Really the only way to do this, regardless of what kind of object it is, is to write a function on that object to for players within 5 TU to hear a sound. You said that the object "lands," so I assume that means it moves. The question is, do you only need to search the moment it lands, or does it stay behind and keep playing sounds? Since it lands, I'm assuming it flies, do you want players that get near it while it's flying to hear anything?
Anyway, a function to play sounds should be written like this:
function YourDatablock::playSoundRadius(%datablock, %object) {
%position = %object.getPosition();
%radius = 5;
initContainerRadiusSearch(%position, %radius, $TypeMasks::PlayerObjectType);
while(%player = containerSearchNext()) {
if(isObject(%player.client))
%player.client.play3d(YourSoundDatablock, %position);
}
}
Bolded is what needs to be changed to fit your specific needs.
Then you need to figure out when to call that function. You could call it when it hits something and has mostly downward velocity (lands), you can call it periodically, you could play it periodically until it lands, etc. Static Shapes, afaik, are, well, static. They don't move, so they don't collide. Probably the best way to have a moving object (.dts) is to make it a vehicle much like the Ball vehicle. You can copy that script and change stuff to fine-tune it to your needs.
Assuming you wanted to do it when it lands (correct me if I'm wrong here) the code should look something like this:
function YourDatablock::onImpact(%datablock, %vehicle, %collidingObject, %position, %speed) {
%retVal = parent::onImpact(%datablock, %vehicle, %collidingObject, %position, %speed);
%datablock.playSoundRadius(%vehicle);
return %retVal;
}