Sorry to say, but that code won't run.
You also should not run that code as a player thread, but as a level thread.
// show highest scoring player
level thread showHighestScoringPlayer();
Try this instead:
showHighestScoringPlayer()
{
level endon("ex_gameover");
while(1)
{
wait(1);
players = getentarray("player", "classname");
winner = undefined;
tie = false;
for(i = 0; i < players.size; i++)
{
if(!isDefined( players[i].score )) continue;
if(players[i].score <1> winner.score)
{
winner = players[i];
tie = false;
}
else if(players[i].score == winner.score)
{
if(players[i].deaths < winner.deaths)
{
winner = players[i];
tie = false;
}
else if(players[i].deaths == winner.deaths)
tie = true;
}
}
if(isDefined(winner))
{
if(!isDefined(level.ex_topscore))
{
level.ex_topscore = newHudElem();
level.ex_topscore.archived = false;
level.ex_topscore.horzAlign = "fullscreen";
level.ex_topscore.vertAlign = "fullscreen";
level.ex_topscore.alignX = "center";
level.ex_topscore.alignY = "top";
level.ex_topscore.x = 320;
level.ex_topscore.y = 20;
level.ex_topscore.fontscale = 1.2;
level.ex_topscore.color = (0.705, 0.705, 0.392);
level.ex_topscore.label = &"MISC_TOPSCORE";
}
level.ex_topscore setPlayerNameString(winner);
}
}
}