Correct me if I'm wrong, but the first thing I noticed is that it really only makes sense if the player is given the fired eventhandler when in audible range of the camp, otherwise he could be on the other side of Takistan, fire, and he'd still fail.

I think first of all you should create a trigger on the map. Give it the condition
({p knowsAbout _x > 0.5} count guards > 2)and({p knowsAbout _x > 0.5} count hostages > 3)
and name the trigger
campspotted, or something similar. In the
campspotted trigger's activation line, have it execute
recon.sqs. Instead of making the
playershoot variable true in the
fired eventhandler, have it exec
reconfail.sqs. In
reconfail.sqs, get rid of the trigger by putting
deleteVehicle campspotted. That way after the trigger is deleted you can never complete the mission if you fire before the recon of the camp. Finally, remove the
fired eventhandler from the player once both
reconfail.sqs or
recon.sqs are executed, and remove the
playershoot and
lehetguards variables from the scripts entirely since they're no longer needed. Here are the scripts with these changes to perhaps help you understand better:
In your prepare script:grp0 setCombatMode "GREEN"
~2
Hint "Recon but do not engage the enemy."
{_x addEventHandler ["fired", {[] exec "reconfail.sqs"}]} forEach units grp0
reconfail.sqs:{_x removeAllEventHandlers "fired"} forEach units grp0
deleteVehicle campspotted
[] exec "mass.sqs"
~2
TitleText["- Don't shoot! Don't shoot!","PLAIN DOWN"]
~4
TitleText["- Damn!","PLAIN DOWN"]
~2
TitleText[" ","PLAIN DOWN"]
~5
TitleText["M I S S I O N F A I L E D","PLAIN"]
fail = true
recon.sqs{_x removeAllEventHandlers "fired"} forEach units grp0
player sideChat "This is Robber One, we have a visual on the camp; many civilians guarded by Takistani troopers. Over."
~10
hq sideChat "Copy that, engage them and free the hostages. Over."
~8
player sideChat "Roger, engaging all enemy contacts. Out."
Now, I haven't tested that, but from what I can tell it should work. I also included some spelling and grammar changes. Hope you get it working!
