1.
Get a tank (snarkpit or PFL could help with that) with a working turret (func_tankmortar or func_tank).Give the turrets name "turret" (d'oh).
2.
Make 2 extremly small func_breakables and make them invisible (rendermode : ADDITIVE; rendernt 0) and configure them like this (without the quotes):
Target:
manager
Health:
100
Material:
metal
Gibmodel:
metalplate_green
Then place one of them in front of the turret (careful, it must not obstruct the muzzle) and the other above it.When the turret is hit by something explosive, the blast will surely damage the func_breakables.That way, you can only destroy the tank with a weapon that generates an explosion (let's be serious, can you really say that you can destroy a tank with an SMG in reality?), the chances of hitting the "sensors" by mistake being very low (and even if you do, it won't be enough to blast them apart).
3.
Make a multi_manager and set its targetname "manager", then add the following targets:
"explo1 (delay) 0
explo2 0.5
explo3 1"
4.
Ok, now add 3 env_explosions with their magnitude (lets say) 100 and place them around the turret.Name them "explo1", "explo2" and "explo3";
Since they will explode consecutively, you should place them in order on the turret, forming a perpendicular line with the tank's side.
Also, make a trigger_relay and set it like this:
Targetname:
explo1
Killtarget:
turret
This will make the turret disappear as if blown away.
NOTE: You should also make an env_shooter, also named "explo1", to shoot out some metalplate gibs.
5.
To complete the show, spawn a couple of env_sprites on the place of the turret , set their model "xffloor.spr" and name them "explo1" (again);
You should also add an ambient_generic to make the burning sound (ambience/burning1.wav) and an info_decal representing a scorch on the surface of the tank hull, where the turret used to be.