Hello,

Something I made a while back ago.

This one uses the hfind like DJ Sol had mentioned

Code:
;==================================================================================================================================
; PROFANITY PROTECTION
;==================================================================================================================================
dialog pfp {
  title "Profanity Protection"
  size -1 -1 118 126
  option dbu
  combo 1, 6 9 70 97, sort size vsbar
  button "Add", 2, 80 21 32 11, default flat
  button "Delete", 3, 80 33 32 11, flat
  box "Profanity Protection", 5, 1 0 116 109
  button "Delete All", 7, 80 45 32 11, flat
  button "Import", 8, 80 69 32 11, flat
  button "Export", 9, 80 81 32 11, flat
  button "Enable", 11, 80 93 32 11, flat
  button "OK", 4, 26 112 32 11, flat ok
  button "Cancel", 6, 62 112 32 11, flat cancel
  button "Refresh", 10, 80 9 32 11, flat
  button "Search", 12, 80 57 32 11, flat
}

#pfp off
on *:EXIT:{ if ($hget(badword)) { hsave badword $+($scriptdir,badword.hsh) } }
on *:DISCONNECT:{ if ($hget(badword)) { hsave badword $+($scriptdir,badword.hsh) } }

on *:TEXT:*:#: {
  if ($nick !isop #) && ($hfind(badword,*,0,w) > 0) {
    var %i = $hfind(badword,*,0,w) | while (%i) {
      if ($hfind(badword,*,%i,w) isin $1-) { 

        hinc -m Cuss $nick 1 | var %w = $+($mid($hfind(badword,*,%i,w),1,1),$str($chr(42),$calc($len($hfind(badword,*,%i,w)) - 1)))
        if ($hget(Cuss,$nick) == 1) { msg # $nick $+ , this is your $ord($hget(Cuss,$nick)) first warining for using profanity! Please refrain from using the word: %w Thank you.  }
        elseif ($hget(Cuss,$nick) == 2) { msg # $nick $+ , Please consider this is your $ord($hget(Cuss,$nick)) warning for using profanity. A repeat violation will result in you being removed from this chatroom following a 1 hour ban. }
        elseif ($hget(Cuss,$nick) >= 3) { kick # $nick Banned: For the using the word %w This was your $ord($hget(Cuss,$nick)) offense (Access ban set for 1 hour) | hfree Cuss }

      }
      dec %i
    }
  }
}
#pfp end


; -- ALIASES
alias pfp { dialog -m pfp pfp }
alias rem.word {
  var %f = $did($1,$2).lines
  while (%f >= 1) {
    if ($gettok($did($1,$2,%f),1,32) == $3) return %f
    dec %f 
  }
  else return 0
}

alias ref_words {
  did -r $1 1 | var %i = 1
  while (%i <= $hfind(badword,*,0,w)) {
    did -a $1 1 $hfind(badword,*,%i,w) 
    inc %i
  }
  hsave badword $+($scriptdir,badword.hsh)
}



on *:dialog:pfp:init:*: {
  if (!$hget(badword)) { hmake badword }
  if ($exists($+($scriptdir,badword.hsh))) { hload badword $scriptdir $+ badword.hsh }

  ; -- Load all profane words upon initiallization
  if ($group(#pfp) == on) { did -ra $dname 11 Disable }
  else { did -ra $dname 11 Enable }

  if ($hfind(badword,*,0,w) > 0) { var %i = 1 | while (%i <= $hfind(badword,*,0,w)) { did -a $dname 1 $hfind(badword,*,%i,w) | inc %i  } }


}


; -- Add Profane Word ID: 2
; -- Also checks to see that there is no duplication of an entry.
on *:dialog:pfp:sclick:2: { 
  var %w = $did($dname,1)
  if (!$hget(badword,%w)) { hadd badword %w | did -a $dname 1 %w | $ref_words($dname) }
}

; -- Delete a profane word ID: 3
; -- Also checks to see that the word is present before deletion.
on *:dialog:pfp:sclick:3: {
  var %w = $did($dname,1).seltext, %l = $did($dname,1).sel
  echo -a * %w Deleted! | hdel badword %w | did -d $dname 1 %l | $ref_words($dname)
}
; -- Delete All ID: 7
on *:dialog:pfp:sclick:7: { 
  if ($hget(badword)) { hfree badword }
  did -r $dname 1 | hmake badword | hsave badword badword.hsh | $ref_words($dname)
}
; -- Import Feature ID: 8
on *:dialog:pfp:sclick:8: { 
  hload badword $sfile($scriptdir $+ badword.hsh,Select a file to import,OK) | $ref_words($dname)
}

; -- Export Feature ID: 9
on *:dialog:pfp:sclick:9: {
  hsave badword $sfile($scriptdir $+ badword.hsh,Export List,Save)
}
; -- Refresh Profanity Word List ID: 10
on *:dialog:pfp:sclick:10: { $ref_words($dname) }

; -- Enable/Disable Feature ID: 11
on *:dialog:pfp:sclick:11: { 

  if ($did(11) == Enable) { .enable #pfp | did -ra $dname 11 Disable }
  else { .disable #pfp | did -ra $dname 11 Enable }

}

; -- Search Feature ID: 12
on *:dialog:pfp:sclick:12: {
  var %w = $$?="Enter a keyword to search for:"
  did -c $dname 1 $didwm($dname,1,%w)
}