to answer both questions, here's what you can do, so long as you don't create any more civs during the mission
make a civilian present trigger covering the whole map.
condition:this
activation:[thislist] exec "deadcivs.sqs" or whatever you name it
_allcivs = _this select 0
civsdead = 0
#loop
;added this just so you don't waste cpu
?_allcivs = []:exit
;what you actually need
"?!(alive _x)" foreach _allcivs:civsdead = titleText ["A civilian has died!", "bottom"];civsdead = civsdead + 1;_allcivs = _allcivs - [_x]
;don't know if i need that second part for the exit command to work
;once again, save cpu, plus it won't lag at all, you don't really need to check very often
~5
goto "loop"
then at the end of the mission just you a hint command with the variable civsdead