There is a search button, but i'll post this anyways:
it gives one warning then times out (%SecondsToTimeOut) seconds on second offense. the second offense timer wares off (%cooldownAmount) seconds from the first offense
also ignores mod caps since a mod can't time out a mod
Code:
on *:text:*:#: {
  set -e %SecondsToTimeOut 120
  set -e %TimeOutMessage Message Goes here
  set -e %cooldownAmount 300
  if ($nick isop #) return
  if ( $len($1-) >= 10 ) {
    if ( $calc($regex($1-,/[A-Z]/g) / $regex($1-,/[A-Z]/gi) * 100) >= 75 ) { 
      if !$istok(%caps.warned,$nick,32) {
        msg $chan $nick -> stop typing in caps! [warning] 
        set -e %caps.warned $addtok(%caps.warned,$nick,32)
        .timer 1 %cooldownamount remove.warned $nick
      }
      else msg $chan %TimeoutMessage | msg $chan .timeout $nick %SecondsToTimeout 
    }
  }
}
alias -l remove.warned {
  set -e %caps.warned $remtok(%caps.warned,$1,1,32)
}