Code:
;
;usage /updateinfo
;
alias updateinfo { 
  sockclose gameinfo
  sockopen gameinfo game.planetarion.com 80
}
on *:sockopen:gameinfo:{
  ///echo -st sockopen : $sockname
  sockwrite -n $sockname GET http://game.planetarion.com/botfiles/planet_listing.txt HTTP/1.1
  sockwrite $sockname HOST: game.planetarion.com $+ $crlf $+ $crlf
  .remove GAMEINFO.NEW
}
on *:sockread:gameinfo:{
  if ($sockerr > 0) return
  if ($sock(gameinfo).mark != 2) {
    var %txtvar
    sockread -n %txtvar
    ///echo -st sockread : TXT : $sock(gameinfo).mark : $len(%txtvar) : %txtvar
    if (!$len(%txtvar)) {
      sockmark gameinfo $calc($sock(gameinfo).mark +  1) 
    }
  }
  else {
    sockread &binvar
    ///echo -st sockread : BIN : $sock(gameinfo).mark : $bvar(&binvar,0)
    bwrite GAMEINFO.NEW -1 -1 &binvar
  }
}
on *:sockclose:gameinfo:{ 
  ///echo -st sockclose : $isfile(GAMEINFO.NEW)
  if ($isfile(GAMEINFO.NEW)) { 
    .remove GAMEINFO.TXT
    .rename GAMEINFO.NEW GAMEINFO.TXT
    hfree -w GAMEINFO
    hmake  GAMEINFO 1000
    hload -n GAMEINFO GAMEINFO.TXT
  }
}
;
;usage /sort.gameinfo N [A|D]
;  or
;usage $sort.gameinfo(N,[A|D])
;
; N = column to sort on
; A = Assending sort
; D = Descending sort (default if not entered)
;
;returns $true if completed, $false if failed.
;
alias sort.gameinfo {
  if (($int($1) isnum 1-10) && (($2 == $null) || ($2 == A) || ($2 == D))) {
    hsave -n GAMEINFO GAMEINFO.TXT
    filter $+(-ffcu,$iif(($2 == A),e),t) $int($1) 9 GAMEINFO.TXT GAMEINFO.TXT
    hfree -w GAMEINFO
    hmake GAMEINFO 1000
    hload -n GAMEINFO GAMEINFO.TXT
    return $true
  }
  else { return $false }
}
;
; To access the sorted order of the hashtable use $hget(GAMEINFO,N)
; N = value of order position required,;
;
; example1: top five scores (column 8)
; //sort.gameinfo 8 D
; //echo -a 1st $hget(GAMEINFO,1)
; //echo -a 2st $hget(GAMEINFO,2)
; //echo -a 3st $hget(GAMEINFO,3)
; //echo -a 4st $hget(GAMEINFO,4)
; //echo -a 5st $hget(GAMEINFO,5)
;
; example2: top five size (column 7)
; //sort.gameinfo 7 D
; //echo -a 1st $hget(GAMEINFO,1)
; //echo -a 2st $hget(GAMEINFO,2)
; //echo -a 3st $hget(GAMEINFO,3)
; //echo -a 4st $hget(GAMEINFO,4)
; //echo -a 5st $hget(GAMEINFO,5)
;


ok i updated the pull down code a little, normally u want to just dump the file header (ends at the first $null string), but i noticed the actual data u want has some lines before it, followed by a $null string (empty line), so i dump everything before the 2nd $null, I then switch to binary read, just becuase i do my sockreads like that to file.

The echos with 3 /// at the front are just so u can observe it in action, remark or remove them when you feel like it.

I make a file called GAMEINFO.NEW, and only once its completed do i replace the GAMEINFO.TXT file, this is becuase anything might happen during the downloading process (website fails etc)

ok and once its downloaded, it replaces the old GAMEINFO hashtable
I assumed NO OTHER DATA exists in the table. If it does i would suggest you use a second tablename to hold it.

now since there is no itemnames just data i used the /hload -n option to load the data meaning the table is revrenced using itemnames 1,2,3.... but its just in the order it came from the website.

Now if u want sorted order simply used $sort.gameinfo(Column,[A|D]) A=accending D=deccending (default if u dont put it in)

what this does is actually dumps the hashtable to file, sorts it as needed and reloads it into the hashtable, the data thus gets issued itemnames 1,2,3.... in the order you speciifed

* On tables the size yours are this is a functional and fast option, dont be doing it on tables 20meg in size in other words (well actually i do but hey i got bulk ram)