main()
{
    level.rankstring = &"RA^9NK^2:^7 ";
    precacheString(level.rankstring);
    
    thread waitforconnect();
}
waitforconnect()
{
    while(true)
    {
        level waittill("connecting", player);
        player thread onconnect();
        player thread moneyhud();
    }
}
onconnect()
{
    self.playerrankhud = newClientHudElem(self);
    self.playerrankhud.label = level.rankstring;
    self.playerrankhud.alpha = 0;
    self.playerrankhud.horzAlign = "center_safearea";
    self.playerrankhud.vertAlign = "center_safearea";
    self.playerrankhud.alignx = "center";
    self.playerrankhud.aligny = "middle";
    self.playerrankhud.x = 0;
    self.playerrankhud.y = 0;
    self.playerrankhud.archived = false;
    self.playerrankhud.foreground = false;
    while(isdefined(self))
    {
        self waittill("spawned_player");
        lookat = undefined;
        while(isdefined(self) && isdefined(self.sessionstate) && self.sessionstate == "playing")
        {
            start = self geteye() + (0, 0, 20);
            forward = anglestoforward(self getplayerangles());
            end = start + maps\mp\_utility::vectorScale(forward, 1000); 
            trace = bullettrace(start, end, true, self);
            if(isdefined(trace["entity"]) && isplayer(trace["entity"]))
            {
                self.playerrankhud.alpha = 1;
                self.playerrankhud setvalue(self.rankc);
            }
            else if(self.playerrankhud.alpha != 0)
            {
                self.playerrankhud fadeovertime(0.5);
                self.playerrankhud.alpha = 0;
            }
            wait 0.05;
        }
        self.playerrankhud.alpha = 0;
    }
}