Sorry.. fixed the !listall. As for !last... I forgot that hash tables never put things in the right order unless you use numbers for the items. If you want a !last command, I can have it write the keywords to a file and then read in the last N keywords for you. Or, I can possibly set it up to work with /filter and put numbers in front of the item names and sort them. Up to you if you want that command.

Code:
alias -l CreateHelp {
  hmake Help 100
  if ($isfile(Help.hsh)) { hload Help Help.hsh }
}

on *:start: {
  CreateHelp
}

on *:text:*:#: {
  if ($1 != !learn && $1 != !replace && $1 != !append && $1 != !delete && $1 != !whoset && $1 != !listall && $1 != !last && $1 != $chr(63)) { return }
  if ($hget(Help) == $null) { CreateHelp }
  if ($1 == !listall) {
    var %list.cnt = 1
    var %line.cnt = 1
    while (%list.cnt <= $hget(Help,0).item) {
      if ($len(%list [ $+ [ %line.cnt ] ]) > 300) { inc %line.cnt }
      var %list. $+ %line.cnt %list. [ $+ [ %line.cnt ] ] $+ , $+ $hget(Help, [ %list.cnt ] ).item
      inc %list.cnt
    }
    var %list.cnt = 1
    while (%list.cnt <= %line.cnt) {
      msg $chan $right(%list. [ $+ [ %line.cnt ] ],-1)
      inc %list.cnt
    }
    return
  }
  if (!$2) { msg $chan Please include a keyword with the command | return }
  if ($1 == !learn) {
    if ($hget(Help,$2)) { msg $chan That keyword is already used.  Please choose another, or use !replace or !append. | return }
    msg $chan Learned $3-
    hadd Help $2 $nick $3-
  }
  elseif ($1 == $chr(63)) {
    var %data = $gettok($hget(Help,$2),2-,32)
    if (%data == $null) { msg $chan No help available on that item. }
    else {
      msg $chan %data
    }
  }
  elseif ($1 == !replace) {
    if ($hget(Help,$2)) {
      msg $chan Replaced $gettok($hget(Help,$2),2-,32) with $2-
      hadd Help $2 $nick $3-
    }
    else msg $chan No such keyword ( $+ $2 $+ ).
  }
  elseif ($1 == !append) {
    if ($hget(Help,$2)) {
      msg $chan Appended $3- to $hget(Help,$2)
      hadd Help $2 $nick $gettok($hget(Help,$2),2-,32) $3-
    }
    else msg $chan No such keyword ( $+ $2 $+ ).
  }
  elseif ($1 == !delete) {
    if ($hget(Help,$2)) {
      msg $chan Deleted $2 -- $gettok($hget(Help,$2),2-,32)
      hdel Help $2
    }
    else msg $chan No such keyword ( $+ $2 $+ ).
  }
  elseif ($1 == !whoset) {
    if ($hget(Help,$2)) {
      msg $chan $gettok($hget(Help,$2),1,32) was the last person to update $2 $+ .
    }
    else msg $chan No such keyword ( $+ $2 $+ ).
  }
  hsave Help Help.hsh
}


Invision Support
#Invision on irc.irchighway.net