To do this you can cancel onClientPlayerDamage. Make sure you run the cancelling logic on every client, this is important for sync.
You can implement the timer display using dxDrawText. Use getTickCount to record the start time instead of increasing a counter every second.
If gangs are implemented using MTA's team system, you can use getPlayersInTeam and trigger an event to those players.
You can modify the "start time" instead of every player having a timer. Assuming you want everyone to see the same timer. You'd modify the "start time" by subtracting 30s when they enter the turf (this means they have "spent more time capturing the turf"), or adding 30s when they leave the turf (meaning they have now "spent less time").
timeSpent = getTickCount() - startTime
You can use toggleControl with vehicle_fire / vehicle_secondary_fire. See "Control names". This will prevent those vehicles from firing whilst inside the turf. You may want to use a separate colshape to ensure that people outside the turf aren't shooting into the turf area, if that makes sense. You may also want to say "You are too close to a turf war to fire this vehicle!"