This script is exactly what I was looking for. Thanks! I just have a quick fix though, as I'm assuming the dictionary website may have changed a bit since the last script update here. Queries with two or more words no longer work with the current script, at least not for me. "%20" was changing the URL to a "-" so I just changed the script to use that, and now it works again.

Code:
alias noHTML return $regsubex($1, /<[^>]+(?:>|$)|^[^<>]+>/g, $null)

on *:text:!dic*:#: { 
    if ($1 == !dic) {
    set %channel #
    $iif($2,dic $2-,msg # Specify a word to look up)
  } 
}

alias dic {
  sockclose dic
  set %dic.word $replace($1-,$chr(32),-)    
  set %dic.counter 0
  sockopen dic dictionary.reference.com 80
}

on *:SOCKOPEN:dic:{
  if $sockerr { return }
  sockwrite -n $sockname GET /browse/ $+ %dic.word $+ ?s=t HTTP/1.1
  sockwrite -n $sockname Host: dictionary.reference.com
  sockwrite -n $sockname $crlf
}

on *:SOCKREAD:dic:{ 
  :nextread
  if $sockerr { return }
  var %data  
  sockread %data  
  if ($regex(%data,<span class="dbox-pg">(.*?)</span>)) { set %dic.class $regml(1) }
  if ($regex(%data,<span class="def-number">1.</span>)) { set %dic.target 1 }
  if (%dic.target == 1) { inc %dic.counter }
  if (%dic.counter >= 3 ) { 
    if (!$noHTML(%data)) goto nextread
    msg %channel $+($upper($left(%dic.class,1)),$mid(%dic.class,2)) - $+($upper($left($noHTML(%data),1)),$mid($noHTML(%data),2)) 
    unset %dic.*
    sockclose dic
  }
  elseif (<div class="cl-left">Copyright isin %data) || (HTTP/1.1 301 Moved Permanently isin %data) { 
    msg %channel Word not found
    unset %dic.*
    sockclose dic 
  }
}