I have removed a "write -c" line that didnt make sence where it was, u may have to work to correct this.
I was going to add multiple targets MSG's but remarked them incase the irc server doesnt like them.
I also compacted the topic building into one line.
Your remove failed becuase you always removed line1 and not the line the $nick was on, i corrected this using $readn.
And used the compact topic builder, nb: "- Type !add to join." was at the end of the topic lines so this was left there.
Replaced the master:!remove script to use a INT value of $2 being 1 to 8 for the remove of player 1 to 8
Replaced HALTDEF with RETURN

Code:
on :TEXT:!add:#pickup.aq2:{
  if ($read(players.txt, w,  $nick)) { return }
  elseif ($lines(players.txt) == 8) { return }
  else {
    write players.txt $nick
    if ($lines(players.txt) == 8) {
      topic # AQ2 Pickup - ./././././././. - Type !add to join.
      mode # -vvvv $read(players.txt, 1) $read(players.txt, 2) $read(players.txt, 3) $read(players.txt, 4)
      mode # -vvvv $read(players.txt, 5) $read(players.txt, 6) $read(players.txt, 7) $read(players.txt, 8)
      [color:blue];write -c players.txt[/color]
      [color:red];^ REMOVED THIS LINE this is a mistake you clear the file then attempt to read the 8 lines that are in it.[/color] 
      msg # Pickup starting now.. Players: $read(players.txt, 1) $+ , $read(players.txt, 2) $+ , $read(players.txt, 3) $+ , $read(players.txt, 4) $+ , $read(players.txt, 5) $+ , $read(players.txt, 6) $+ , $read(players.txt, 7) $+ , $read(players.txt, 8) $+ . Captains: $read(players.txt, $rand(1,4)) $read(players.txt, $rand(5,8))
      msg $read(players.txt, 1) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 2) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 3) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 4) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 5) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 6) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 7) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      msg $read(players.txt, 8) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      [color:blue];msg $read(players.txt,1) $+ , $+ $read(players.txt,2) $+ , $+ $read(players.txt,3) $+ , $+ $read(players.txt,4) Pickup starting.. %server $+ . Password is " $+ %password $+ ".
      ;msg $read(players.txt,5) $+ , $+ $read(players.txt,6) $+ , $+ $read(players.txt,7) $+ , $+ $read(players.txt,8) Pickup starting.. %server $+ . Password is " $+ %password $+ ".[/color]
      [color:red];^ Remarked out some irc servers wont take multiple targets to a msg[/color]
      return
    }
    topic # AQ2 Pickup - $+($iif($read(players.txt,1),$v1,.),/,$iif($read(players.txt,2),$v1,.),/,$iif($read(players.txt,3),$v1,.),/,$iif($read(players.txt,4),$v1,.),/,$iif($read(players.txt,5),$v1,.),/,$iif($read(players.txt,6),$v1,.),/,$iif($read(players.txt,7),$v1,.),/,$iif($read(players.txt,8),$v1,.))
  }
}
on :TEXT:!remove:#pickup.aq2:{
  if ($read(players.txt, w,  $nick)) {
    write -dl $+ $readn players.txt
    topic # AQ2 Pickup - $+($iif($read(players.txt,1),$v1,.),/,$iif($read(players.txt,2),$v1,.),/,$iif($read(players.txt,3),$v1,.),/,$iif($read(players.txt,4),$v1,.),/,$iif($read(players.txt,5),$v1,.),/,$iif($read(players.txt,6),$v1,.),/,$iif($read(players.txt,7),$v1,.),/,$iif($read(players.txt,8),$v1,.)) - Type !add to join.
    mode # -v $nick
}
on master:TEXT:!reset:#pickup.aq2:{
  mode # -vvvv $read(players.txt, 1) $read(players.txt, 2) $read(players.txt, 3) $read(players.txt, 4)
  mode # -vvvv $read(players.txt, 5) $read(players.txt, 6) $read(players.txt, 7) $read(players.txt, 8)
  write -c players.txt
  topic # AQ2 Pickup - ./././././././.  - Type !add to join.
}
on master:TEXT:!remove *:#pickup.aq2, ?:{
  if ($2 isnum 1-8) {
    tokenize 32 $1 $int($2) $3-
    mode # -v $read(players.txt,$2) | write -dl $+ $2 players.txt }
    topic # AQ2 Pickup - $+($iif($read(players.txt,1),$v1,.),/,$iif($read(players.txt,2),$v1,.),/,$iif($read(players.txt,3),$v1,.),/,$iif($read(players.txt,4),$v1,.),/,$iif($read(players.txt,5),$v1,.),/,$iif($read(players.txt,6),$v1,.),/,$iif($read(players.txt,7),$v1,.),/,$iif($read(players.txt,8),$v1,.))
  } 
}


**** CODE IS UNTESTED, I did the edits in the forum editor so mistakes are possable ****