Creating my own await function

As I understand your request you are mostly using CheckIfMaxPlayers() the right way for it to function like the Await you want. Like ProfessionalBot says though you need to include a Sleep in that function for time to pass, as you have it now it is just infinitely looping and getting the same player count over and over. Changing your code to this should work fine?

CheckIfMaxPlayers()<suspends>:void=
    loop:
        Players := GetPlayspace().GetPlayers()
        if (Players.Length >= MaxPlayerCount){
            break
        }
        Sleep(0.0)