How about changing your $trivhint alias?

Code:
alias trivhint {
  ; Use a var to save some space
  var %replace = b,*,c,*,d,*,f,*,g,*,h,*,j,*,k,*,l,*,m,*,n,*,p,*,q,*,r,*,s,*,t,*,v,*,w,*,x,*,z,*,1,*,2,*,3,*,4,*,5,*,6,*,7,*,8,*,9,*,0,*
  ; First letter only (first hint and also if $len < 4)
  if ($2 == 1 || $len($1) < 4) { return $left($1,1) $+ $right($replace($1, [ %replace ] ,a,*,e,*,i,*,o,*,u,*,y,*),-1)
  ; First 3 letters if $len > 3, else only display first character
  elseif ($2 == 2) { return $left($1,3) $+ $right($replace($1,% [ %replace ] ,a,*,e,*,i,*,o,*,u,*,y,*),-3)
  ; Display the first 3 characters (shown from the first hints) and also all vowels.
  elseif ($2 == 3) { return $left($1,3) $+ $right($replace($1,% [ %replace ] ),-3)
  else return ERROR: Incorrect hint number.
}


Then, to display the hints, use:
Code:
  msg $chan $trivhint(%trivia.a,%hint_number)


Replace %hint_number with whatever you use to know what hint you're on, or just put 1, 2, or 3 in there if you just run 3 timers.

You can change msg $chan to something else if you don't want to use that.

The alias will display hints like this:

Answer: Scripting is fun
Hint 1: S******** ** ***
Hint 2: Scr****** ** ***
Hint 3: Scri**i** i* f*n

If there are fewer than 4 characters in the answer, then it will only show the first character for all 3 hints...

Answer: Fun
Hint 1: F**
Hint 2: F**
Hint 3: F**

This is true for any answer... numerical or alphabetical or mixed.

If you want to do something else for hints, you can change how those are set up, or just ask and I can help... just show me how you want it.

And, again, regex could probably simplify that, but I just don't know it well enough.