Code:
]on *:SNOTICE:*client connecting*:{
  .timer 1 5 ctcp $4 version
  .timer $+ $4 1 15 noreply $4
}

alias noreply {
  notice $$1 I did not receive a version reply from you
  write noreplylog. $+ $asctime(yyyy-mm-dd) $+ .txt no version reply from $1
}

on 1:CTCPREPLY:VERSION*:{
  .timer $+ $nick off
  .write versionlog. $+ $asctime(yyyy-mm-dd) $+ .txt $2- used by $nick
  if ($read(versions.txt, s, $2)) wallops Version Alert for $nick using $2- $read(versions.txt, s, $2)
}
on 1:NICK:{
  if ($timer($nick)) {
    .timer $+ $newnick 1 $timer($nick).secs noreply $newnick
    .timer $+ $nick off
  }
}
on 1:QUIT:.timer $+ $nick off


The alias was called with no arguments, so $1- is empty. You have to pass all arguments you want to use to the alias.

I added a check for people changing nicknames or quitting so they don't give false alerts (as often)...