В эти функции можно передать параметры не совсем традиционным способом, если написать не "captureF", а "captureF('"..heroName.."')"
Да, и MessageBoxForPlayers принимает первым параметром не игрока, а его фильтр GetPlayerFilter(number). Разницы не будет видно, если игроков 1-2, но для >2 будут возникать ошибки. Желательно ещё сделать проверку, является ли игрок компом или нет.