Since this is your first post I want to say hi back. 
Anyway, back to the topic...
1) When the player hits the block set a flag on. Then in the condition for hitting the block, test if the flag is off. Code:
Code:
[Player hits block] -
Internal Flag 0 is Off:
--[Sound and Hit]
--Set Internal Flag 0 On
2) This is much more complicated. Add the "Advanced Direction Object" to your frame, and make the block have ink effect "Semi-Transparent." Add code:
Code:
Always:
--Block: Set Semi-Transparency to Min(0,128-Distance("Advanced Direction Object",X("Player"),Y("Player"),X("Block"),Y("Block")))
That will probably work.