If you want to play impact sound, simply create a dummy model at hit->x position (or target.x) and play ent_playsound at it (note that there should be a pointer to ENTITY, not vector as you've used in your example). After sound was played, remove that dummy model.
Example:
Code:
void impact(){
var snd_handle = ent_playsound(my, impact_wav, 500);
while(my){
if(!snd_playing(snd_handle)){ break; }
wait(1);
}
safe_remove(my);
}
// in bullet function
if(trace_hit){
ent_create(NULL, &hit->x, impact);
}