A couple thoughts.
Minor typo on the first two “if” statements - for exactly 8 players ZombiesToChoose stays at 0. You probably want a <= 8 on the first “if”.
Is PlayerMap initialized with 0’s for every entry before this code runs? If not, I don’t know if Verse defaults to 0, if so the code should be ok, if not they the following would never be true.
if (PlayerMap[Player] = 0):
On second thought, if that’s an actual “map” (not array) then it would need to be initialized I think.
I don’t see anything else.