I took a look at it. But I am not sure if I understand all the rules.
One thing that I can suggest to make it more readable:
local example = {
["Grove Street"] = function (score, playerCount)
-- Aztecas or Vagos
if score > 0 and (playerCount["Aztecas"] > 0 or playerCount["Vagos"] > 0) and playerCount["Aztecas"] ~= playerCount["Vagos"] then
if playerCount["Aztecas"] > playerCount["Vagos"] then
return "Aztecas"
end
return "Vagos"
end
-- or Ballas
if score > 0 and playerCount["Ballas"] > 0 or playerCount["Grove Street"] == 0 then
return "Ballas"
end
-- or Grove Street
return "Grove Street"
end
}
-- local winner = example[areaTeam](score, playerCount)