All pastes #256666 Raw Edit

Greet Kiemister

public text v1 · immutable
#256666 ·published 2006-11-24 14:23 UTC
rendered paste body
alias greet {
  var %x = $iif($show,greetmsg2,noop), %y = 1
  if ($isid) {
    if (!$0) return $iif($group(#greet) == on,$true,$false)
    elseif ($prop == format) return %greet.format
    elseif ($0 > 2) greetmsg Too many parameters: $!greet
    elseif ($0 > 1) && (!$prop) return
    elseif (($0 == 1) || ($2 isnum 0-)) && ($prop == greet) return $hfind($hname,$1,$iif($0 > 1,$2,0)).data
    elseif ($0 == 1) && ($istok(msg nick,$prop,32)) && ($1 isnum 0-) return $($ $+ hget($hname,$1) $+ $replace($prop,msg,.data,nick,.item),2)
    elseif ($hget($hname,$1)) return $v1
    return
  }
  elseif (!$0) dialog $iif($dialog($gdname),-v,-m $gdname) $gdname
  elseif ($1 == on) {
    .enable #greet
    if ($dialog($gdname)) did -c $gdname 8
    %x Greets are on
  }
  elseif ($1 == off) {
    .disable #greet
    if ($dialog($gdname)) did -u $gdname 8
    %x Greets are off
  }
  elseif ($1 == -a) && ($0 > 2) {
    if ($dialog($gdname)) {
      if ($xdid($gdname,13,$+($tab,$2,$tab),W,0,1).find) xdid -v $gdname 13 $gettok($v1,1,32) 1 $3-
      else xdid -a $gdname 13 0 0 + 0 0 0 0 -1 -1 $2 $tab + 0 $3-
    }
    %x $iif($hget($hname,$2) == $null,Added $2 to greet list,Updated greet message for $2)
    hadd -m $hname $2-
  }
  elseif ($1 == -f) {
    set %greet.format $2-
    if ($dialog($gdname)) did -o $gdname 7 1 $2-
    %x Updated greet format to: $2-
  }
  elseif ($1 == -h) && ($isfile($readme)) run $qt($readme)
  elseif ($1 == -l) {
    if ($hget($hname,0).item) {
      var %e = echo -ca info
      linesep
      %e * Greet list
      while ($hget($hname,%y).item) {
        %e $v1 ( $+ $hget($hname,$v1) $+ )
        inc %y
      }
      linesep
    }
    else greetmsg Greet list empty
  }
  elseif ($1 == -p) {
    if ($window($win)) window -c $win
    window -aCdf $win 0 0 400 300
    while ($hget($hname,%y).item != $null) {
      set -u %greet.join $v1
      echo $win $v1 $+  $tab $($replace($iif(%greet.format != $null,$v1,$hget($hname,%greet.join)),$!nick,%greet.join,$!chan,#chan,$!target,#chan,$!fulladdress,$+(%greet.join,!,user,@host.com),$!address,user@host.com,$!site,host.com,$!wildsite,*!*@host.com,$!event,join,$!clevel,*,$!dlevel,1,$!ulevel,1),2) $+ 
      inc %y
    }
    filter -wwpctu 1 $asc($tab) $win $win *
    iline -p $win 1 Nickname $tab Message
  }
  elseif ($1 == -r) {
    if ($0 == 1) {
      if ($hget($hname)) hfree $hname
      hmake $hname
      if ($dialog($gdname)) xdid -r $gdname 13
      %x Greet list cleared
    }
    elseif ($hget($hname,$2) != $null) {
      hdel $hname $2
      if ($dialog($gdname)) && ($xdid($gdname,13,$+($tab,$2,$tab),W,0,1).find) xdid -d $gdname 13 $gettok($v1,1,32)
      %x Removed $2 from greet list
    }
    else %x $2 is not in greet list
  }
  elseif ($1 == -s) greetmsg2 Greets are $group(#greet)
  elseif ($show) greetmsg /greet: invalid parameters
  if ($dialog($gdname)) {
    if ($xdid($gdname,13).selnum) && ((!$did($gdname,9).enabled) || (!$did($gdname,10).enabled)) did -e $gdname 9,10
    elseif (!$xdid($gdname,13).selnum) && (($did($gdname,9).enabled) || ($did($gdname,10).enabled)) did -b $gdname 9,10
  }
}
alias greetchan {
  var %x = $iif($show,greetmsg2,noop)
  if ($isid) {
    if ($0 == 1) && ($1 != $null) {
      if ($prop == chan) && ($1 isnum 0-) return $hget($hname2,$1).item
      elseif ($hget($hname2,$1)) {
        var %y = $v1
        if (!$prop) return $true
        elseif ($prop == c) return $gettok(%y,1,32)
        elseif ($prop == k) return $gettok(%y,2,32)
      }
      elseif (!$prop) return $false
    }
    elseif ($prop == c) {
      if ($istok(%greet.settings,9,44)) return 0
      elseif ($istok(%greet.settings,10,44)) return 1
      elseif ($istok(%greet.settings,11,44)) return 2
    }
    elseif ($prop == k) {
      if ($istok(%greet.settings,13,44)) return 0
      elseif ($istok(%greet.settings,14,44)) return 1
      elseif ($istok(%greet.settings,15,44)) return 2
    }
    elseif ($prop == s) return $iif($istok(%greet.settings,16,44),1,0)
    return
  }
  elseif (!$0) dialog $iif($dialog($gdname2),-v,-m $gdname2) $gdname2
  elseif (-a* iswm $1) && ($0 > 1) {
    var %c = $iif(c isin $1,No,Yes), %k = $iif(k isin $1,No,Yes), %v
    if ($dialog($gdname2)) {
      if ($xdid($gdname2,7,$+($tab,$2,$tab),W,0,1).find) {
        %v = $v1
        xdid -v $gdname2 7 $gettok(%v,1,32) 1 %c
        xdid -v $gdname2 7 $gettok(%v,1,32) 2 %k
      }
      else xdid -a $gdname2 7 0 0 + 0 0 0 0 -1 -1 $2 $tab + 0 %c $tab + 0 %k
    }
    %x $iif($hget($hname2,$2) == $null,Added $2 to greet channel exclusion list,Updated greet channel exclusion switches for $2)
    hadd -m $hname2 $2 $replace(%c %k,No,1,Yes,0)
  }
  elseif ($1 == -l) {
    if ($hget($hname2,0).item) {
      var %e = echo -ca info, %y = 1, %z
      linesep
      %e * Greet channel exclusion list
      while ($hget($hname2,%y).item) {
        %z = $v1
        %e %z (Greets $replace($gettok($hget($hname2,%z),1,32),1,disallowed,0,allowed) $+ $chr(44) control codes $replace($gettok($hget($hname2,%z),2,32),1,stripped,0,kept) $+ )
        inc %y
      }
      linesep
    }
    else greetmsg Greet channel exclusion list empty
  }
  elseif ($1 == -r) {
    if ($0 == 1) {
      if ($hget($hname2)) hfree $hname2
      hmake $hname2
      if ($dialog($gdname2)) xdid -r $gdname2 7
      %x Greet channel exclusion list cleared
    }
    elseif ($hget($hname2,$2) != $null) {
      hdel $hname2 $2
      if ($dialog($gdname2)) && ($xdid($gdname,7,$+($tab,$2,$tab),W,0,1).find) xdid -d $gdname2 7 $gettok($v1,1,32)
      %x Removed $2 from greet channel exclusion list
    }
    else %x $2 is not in greet channel exclusion list
  }
  else {
    var %c = 1, %e = 1, %t = %greet.settings, %y, %z
    if (!%greet.settings) set %greet.settings 11,15,16
    if (-*c?* iswm $1) && ($mid($1,$calc($pos($1,c,1) + 1),1) isin 012) {
      %y = $replacex($v1,0,9,1,10,2,11)
      %z = $remtok(9 10 11,%y,1,32)
      set %greet.settings $addtok($reptok($reptok(%greet.settings,$gettok(%z,1,32),%y,1,44),$gettok(%z,2,32),%y,1,44),%y,44)
      %e =
    }
    if (-*k?* iswm $1) && ($mid($1,$calc($pos($1,k,1) + 1),1) isin 012) {
      %y = $replacex($v1,0,13,1,14,2,15)
      %z = $remtok(13 14 15,%y,1,32)
      set %greet.settings $addtok($reptok($reptok(%greet.settings,$gettok(%z,1,32),%y,1,44),$gettok(%z,2,32),%y,1,44),%y,44)
      %e =
    }
    if (-*s?* iswm $1) && ($mid($1,$calc($pos($1,s,1) + 1),1) isin 01) {
      %y = $v1
      if (%y == 0) set %greet.settings $remtok(%greet.settings,16,1,44)
      else set %greet.settings $addtok(%greet.settings,16,44)
      %e =
    }
    if ($dialog($gdname2)) && (%t != %greet.settings) {
      did -u $gdname2 9,10,11,13,14,15,16
      did -c $gdname2 %greet.settings
      %e =
    }
    if (%e) && ($show) greetmsg /greetchan: invalid parameters
  }
  if ($dialog($gdname2)) {
    if ($xdid($gdname2,7).selnum) && (!$did($gdname2,6).enabled) did -e $gdname2 6
    elseif (!$xdid($gdname2,7).selnum) && ($did($gdname2,6).enabled) did -b $gdname2 6
  }
}
alias -l greetmsg {
  if (!$isid) echo $iif($istok(channel chat fserve query,$window($active).type,32),-ca,-ces) info * $$1-
  elseif (%greet.join != $null) return $hget($hname,$v1)
}
alias -l greetmsg2 echo $iif($istok(channel chat fserve query,$window($active).type,32),-ca,-ces) info2 * $$1-
alias -l gdname return greet
alias -l gdname2 return greetchan
alias -l gdname3 return greetedit
alias -l hname return greet
alias -l hname2 return greetchan
alias -l hsh return $scriptdirgreet.hsh
alias -l hsh2 return $scriptdirgreetchan.hsh
alias -l readme return $scriptdirgreet readme.txt
alias -l tab return $chr(9)
alias -l win return @greetpreview
alias -l dcxpath return $scriptdirdcx.dll
alias -l dcx {
  if ($isid) return $dll($dcxpath,$1,$2-)
  dll $qt($dcxpath) $1-
}
alias -l udcx $iif($menu,.timer 1 0) dll -u $qt($dcxpath)
alias -l xdid {
  if ($isid) return $dcx(_xdid,$1 $2 $prop $3-)
  dcx xdid $2 $3 $1 $4-
}
alias -l xdialog {
  if ($isid) return $dcx(_xdialog,$1 $prop $2-)
  dcx xdialog $2 $1 $3-
}
on *:START: {
  if ($hget($hname)) hfree $hname
  if ($hget($hname2)) hfree $hname2
  hmake $hname
  hmake $hname2
  if ($isfile($hsh)) hload -b $hname $qt($hsh)
  if ($isfile($hsh2)) hload -b $hname2 $qt($hsh2)
}
on *:LOAD: {
  if ($version < 6.17) {
    greetmsg Greet Manager 2.01 will not work in mIRC versions lower than 6.17. This script will now be unloaded. Please download the latest copy of mIRC at http://www.mirc.com
    .unload -nrs $qt($script)
  }
  elseif (!$isfile($dcxpath)) {
    greetmsg Greet Manager 2.01 cannot find dcx.dll. This script will now be unloaded. Please place dcx.dll in $qt($nofile($dcxpath)) before loading this script again.
    .unload -nrs $qt($script)
  }
  elseif ($gettok($dcx(Version),4,32) < 1.3.1) {
    greetmsg Greet Manager 2.01 will not work in dcx.dll versions lower than 1.3.1. This script will now be unloaded. Please download the latest copy of dcx.dll at http://dcx.scriptsdb.org
    .unload -nrs $qt($script)
  }
  else greetmsg Greet Manager 2.01 has been successfully loaded. Trigger: /greet
}
on *:UNLOAD: {
  if ($hget($hname)) {
    hsave -bo $hname $qt($hsh)
    hfree $hname
  }
  if ($hget($hname2)) {
    hsave -bo $hname2 $qt($hsh2)
    hfree $hname2
  }
  tokenize 32 $dialog($gdname) $dialog($gdname2) $dialog($gdname3)
  dialog -x $*
  if ($window($win)) window -c $win
  unset %greet.*
  udcx
  greetmsg Greet Manager 2.01 has been successfully unloaded.
}
on *:EXIT: {
  udcx
  if ($hget($hname)) hsave -bo $hname $qt($hsh)
  if ($hget($hname2)) hsave -bo $hname2 $qt($hsh2)
}
dialog greet {
  title "Greet Manager [/greet]"
  size -1 -1 125 108
  option dbu
  text "Nickname", 1, 10 4 22 8
  edit "", 2, 2 13 38 10, autohs
  text "Message", 3, 54 4 21 8
  edit "", 4, 41 13 48 10, autohs
  button "Add", 5, 91 13 32 11, disable
  text "Format:", 6, 2 84 19 8
  edit %greet.format, 7, 22 83 35 10, autohs
  check "Enable Greets", 8, 2 95 44 10
  button "Edit", 9, 59 83 32 11, disable
  button "Delete", 10, 91 83 32 11, disable
  button "Preview", 11, 59 94 32 11
  button "Channels", 12, 91 94 32 11
}
on *:DIALOG:greet:*:*: {
  if ($devent == init) {
    dcx Mark $dname greet_cb
    xdialog -b $dname +ty
    xdialog -c $dname 13 listview 5 54 241 105 fullrow report tooltip showsel nolabelwrap tabstop sortasc
    xdid -t $dname 13 +l 0 75 Nickname $tab +l 0 146 Message
    var %x = 1
    while ($hget($hname,%x).item != $null) {
      xdid -a $dname 13 0 0 + 0 0 0 0 -1 -1 $v1 $tab + 0 $hget($hname,$v1)
      inc %x
    }
    if ($group(#greet) == on) did -c $dname 8
  }
  elseif ($devent == sclick) {
    if ($did == 5) {
      if ($did(2) != $null) && ($did(4) != $null) {
        if (!$hget($hname,$did(2))) && ($numtok($did(2),32) == 1) {
          hadd -m $hname $did(2) $did(4)
          xdid -u $dname 13
          xdid -a $dname 13 0 0 +s 0 0 0 0 -1 -1 $did(2) $tab + 0 $did(4)
          xdid -F $dname 13
          did -r $dname 2,4
          did -b $dname 5
        }
        elseif ($numtok($did(2),32) > 1) noop $input(Nickname has to be 1 word!,oh,Error!)
        else noop $input(Nickname already exists!,oh,Error!)
      }
      else noop $input(Not enough information inputed!,oh,Error!)
    }
    elseif ($did == 8) $iif($did(8).state,.enable,.disable) #greet
    elseif ($did == 9) {
      if ($dialog($gdname3)) dialog -v $gdname3
      else {
        set %greet.nick $xdid($dname,13,0).seltext
        set %greet.msg $xdid($dname,13,1).seltext
        dialog -m $gdname3 $gdname3
      }
    }
    elseif ($did == 10) && ($xdid($dname,13).selnum) {
      var %x = $v1
      while (%x) {
        hdel $hname $xdid($dname,13,0).seltext
        xdid -d $dname 13 $gettok($xdid($dname,13).sel,1,44)
        dec %x
      }
    }
    elseif ($did == 11) greet -p
    elseif ($did == 12) dialog $iif($dialog($gdname2),-v,-m $gdname2) $gdname2
  }
  elseif ($devent == edit) {
    if ($istok(2 4,$did,32)) did $iif($numtok($did(2),32) == 1 && $did(4) != $null,-e,-b) $dname 5
    elseif ($did == 7) set %greet.format $did(7)
  }
  if ($xdid($dname,13).selnum) && ((!$did(9).enabled) || (!$did(10).enabled)) did -e $dname 9,10
  elseif (!$xdid($dname,13).selnum) && (($did(9).enabled) || ($did(10).enabled)) did -b $dname 9,10
}
alias greet_cb {
  if ($1 == $gdname) {
    if ($xdid($1,13).selnum) {
      did -e $1 9,10
      if ($2 == dclick) && ($3 == 13) {
        if ($dialog($gdname3)) dialog -v $gdname3
        else {
          set %greet.nick $xdid($1,$3,0).seltext
          set %greet.msg $xdid($1,$3,1).seltext
          dialog -m $gdname3 $gdname3
        }
      }
    }
    else did -b $1 9,10
  }
}
dialog greetedit {
  title "Greet Editor"
  size -1 -1 90 43
  option dbu
  text "Nickname", 1, 8 4 22 8
  edit "", 2, 3 13 32 10, autohs
  text "Message", 3, 51 4 21 8
  edit "", 4, 37 13 50 10, autohs
  button "OK", 5, 10 28 32 10, default
  button "Cancel", 6, 47 28 32 10, cancel
}
on *:DIALOG:greetedit:*:*: {
  if ($devent == init) && ($xdid($gdname,13).selnum) {
    did -o $dname 2 1 %greet.nick
    did -o $dname 4 1 %greet.msg
  }
  elseif ($devent == close) {
    unset %greet.nick %greet.msg
    if ($dialog($gdname)) dialog -v $gdname
  }
  elseif ($devent == edit) && ($istok(2 4,$did,32)) did $iif($numtok($did(2),32) == 1 && $did(4) != $null,-e,-b) $dname 5
  elseif ($devent == sclick) {
    if ($did == 5) {
      if ($did(2) != $null) && ($did(4) != $null) {
        if ($hget($hname,%greet.nick)) && ($numtok($did(2),32) == 1) {
          hdel $hname %greet.nick
          hadd -m $hname $did(2) $did(4)
          if ($dialog($gdname)) {
            xdid -u $gdname 13
            if ($xdid($gdname,13,$+($tab,%greet.nick,$tab),W,0,1).find) {
              var %v = $v1
              xdid -v $gdname 13 $gettok(%v,1,32) 0 $did(2)
              xdid -v $gdname 13 $gettok(%v,1,32) 1 $did(4)
            }
            else xdid -a $gdname 13 0 0 +s 0 0 0 0 -1 -1 $did(2) $tab + 0 $did(4)
            xdid -F $gdname 13
            dialog -v $gdname
          }
          unset %greet.nick %greet.msg
          dialog -x $dname
        }
        elseif ($numtok($did(2),32) > 1) noop $input(Nickname has to be 1 word!,oh,Error!)
        else noop $input(Edited nickname doesn't exist!,oh,Error!)
      }
      else noop $input(Not enough information inputed!,oh,Error!)
    }
  }
}
dialog greetchan {
  title "Greet Channel Exclusions"
  size -1 -1 128 182
  option dbu
  text "Channel", 1, 24 4 20 8
  edit "", 2, 2 14 66 10, autohs
  check "Disallow greets", 3, 71 3 54 10
  check "Strip control codes", 4, 71 14 54 10
  button "Add/Edit", 5, 27 29 32 10, disable
  button "Delete", 6, 67 29 32 10, disable
  box "Channels", 8, 2 100 123 26
  radio "Allow All", 9, 5 110 30 10, group
  radio "Allowed Only", 10, 37 110 40 10
  radio "No Disallowed", 11, 79 110 43 10
  box "Control Codes", 12, 2 127 123 38
  radio "Allow All", 13, 5 137 30 10, group
  radio "Allowed Only", 14, 37 137 40 10
  radio "No Disallowed", 15, 79 137 43 10
  check "Strip when +c is set", 16, 5 150 58 10
  button "OK", 17, 48 169 32 10, ok
}
on *:DIALOG:greetchan:*:*: {
  if ($devent == init) {
    dcx Mark $dname greetchan_cb
    xdialog -b $dname +ty
    xdialog -c $dname 7 listview 5 88 241 105 fullrow report tooltip showsel nolabelwrap tabstop sortasc
    xdid -t $dname 7 +l 0 85 Channel $tab +l 0 43 Greets $tab +l 0 93 Control Codes
    var %x = 1, %y
    while ($hget($hname2,%x).item != $null) {
      %y = $v1
      xdid -a $dname 7 0 0 + 0 0 0 0 -1 -1 %y $tab + 0 $iif($gettok($hget($hname2,%y),1,32) == 1,No,Yes) $tab + 0 $iif($gettok($hget($hname2,%y),2,32) == 1,No,Yes)
      inc %x
    }
    if (%greet.settings) did -c $dname $v1
    else {
      did -c $dname 11,15,16
      set %greet.settings 11,15,16
    }
  }
  elseif ($devent == edit) && ($did == 2) did $iif($numtok($did(2),32) == 1,-e,-b) $dname 5
  elseif ($devent == sclick) {
    if ($istok(9 10 11 13 14 15 16,$did,32)) {
      set %greet.settings
      var %x = 9 10 11 13 14 15 16, %y = 1
      while (%y <= 7) {
        if ($did($gettok(%x,%y,32)).state) set %greet.settings $addtok(%greet.settings,$gettok(%x,%y,32),44)
        inc %y
      }
    }
    elseif ($did == 5) {
      if ($numtok($did(2),32) == 1) {
        hadd -m $hname2 $did(2) $did(3).state $did(4).state
        if ($xdid($dname,7,$+($tab,$did(2),$tab),W,0,1).find) xdid -d $dname 7 $gettok($v1,1,32)
        xdid -u $dname 7
        xdid -a $dname 7 0 0 +s 0 0 0 0 -1 -1 $did(2) $tab + 0 $iif($did(3).state,No,Yes) $tab + 0 $iif($did(4).state,No,Yes)
        xdid -F $dname 7
      }
      elseif ($v1 > 1) noop $input(Channel has to be 1 word!,oh,Error!)
      else noop $input(Not enough information inputed!,oh,Error!)
    }
    elseif ($did == 6) && ($xdid($dname,7).selnum) {
      var %x = $v1
      while (%x) {
        hdel $hname2 $xdid($dname,7,0).seltext
        xdid -d $dname 7 $gettok($xdid($dname,7).sel,1,44)
        dec %x
      }
    }
  }
  did $iif($xdid($dname,7).selnum,-e,-b) $dname 6
}
alias greetchan_cb {
  if ($1 == $gdname2) {
    if ($xdid($1,7).selnum) {
      did -e $1 6
      if ($istok(sclick rclick begindrag,$2,32)) && ($3 == 7) {
        did -o $1 2 1 $xdid($1,$3,0).seltext
        did $iif($xdid($1,$3,1).seltext == No,-c,-u) $1 3
        did $iif($xdid($1,$3,2).seltext == No,-c,-u) $1 4
        did -e $1 5
      }
    }
    else did -b $1 6
  }
}
menu channel,query,nicklist,menubar,status {
  -
  Greet Manager
  .Open manager:greet
  .-
  .Greet
  ..$iif($istok(channel menubar status,$menu,32),Add a greet) {
    var %m, %n
    var %n = $input(Nickname:,e,Add a greet)
    if ($numtok(%n,32) == 1) {
      %m = $input(Greet message for %n $+ :,e,Add a greet)
      greet -a %n %m
    }
    elseif ($numtok(%n,32) > 1) noop $input(Nickname has to be 1 word!,oh,Error!)
  }
  ..$iif($istok(channel menubar status,$menu,32),Remove a greet) {
    var %n = $input(Nickname:,e,Remove a greet)
    if ($numtok(%n,32) == 1) {
      if ($hget($hname,%n) == $null) noop $input(Nickname does not exist in the greet list!,oh,Error!)
      else greet -r %n
    }
    elseif ($numtok(%n,32) > 1) noop $input(Nickname has to be 1 word!,oh,Error!)
  }
  ..$iif($menu == query,$iif($hget($hname,$active),Update,Add) greet for $active):greet -a $active $$input(Greet message for $active $+ :,e,Add/update greet,$hget($hname,$active))
  ..$iif($menu == query,$iif($hget($hname,$active),Remove greet for $active)):greet -r $active
  ..$iif($menu == nicklist,$iif($hget($hname,$$1),Update,Add) greet for $$1):greet -a $$1 $$input(Greet message for $$1 $+ :,e,Add/update greet,$hget($hname,$$1))
  ..$iif($menu == nicklist,$iif($hget($hname,$$1),Remove greet for $$1)):greet -r $$1
  ..-
  ..Change message format:greet -f $$input(Format: $+ $crlf $+ (identifiers and variables may be used, $!greetmsg returns the greet message),e,Change message format,%greet.format)
  .Channel exclusions
  ..Open dialog:greetchan
  ..-
  ..$iif($menu == channel,$iif($hget($hname2,#),Update,Add) channel #) {
    var %c = $input(Allow greets in # $+ ?,nvq,Channel exclusion settings), %k
    if (%c != $cancel) {
      %k = $input(Strip control codes in # $+ ?,nvq,Channel exclusion settings)
      if (%k != $cancel) greetchan -a $+ $iif(%c == $no,c) $+ $iif(%k == $yes,k) #
    }
  }
  ..$iif($menu == channel && $hget($hname2,#),Remove channel #):greetchan -r
  ..$iif($menu != channel,Add a channel) {
    var %c, %k, %x = $input(Channel:,e,Add a channel)
    if ($numtok(%x,32) == 1) {
      %c = $input(Allow greets in %x $+ ?,nvq,Channel exclusion settings)
      if (%c != $cancel) {
        %k = $input(Strip control codes in %x $+ ?,nvq,Channel exclusion settings)
        if (%k != $cancel) greetchan -a $+ $iif(%c == $no,c) $+ $iif(%k == $yes,k) %x
      }
    }
    elseif ($numtok(%x,32) > 1) noop $input(Channel has to be 1 word!,oh,Error!)
  }
  ..$iif($menu != channel,Remove a channel) {
    var %x = $input(Channel:,e,Remove a channel)
    if ($numtok(%x,32) == 1) {
      if ($hget($hname2,%x) == $null) noop $input(Channel does not exist in the greet list!,oh,Error!)
      else greet -r %x
    }
    elseif ($numtok(%x,32) > 1) noop $input(Channel has to be 1 word!,oh,Error!)
  }
  ..-
  ...Settings
  ...Channels
  ....$iif($istok(%greet.settings,9,44),$style(1)) Allow all:greetchan -c0
  ....$iif($istok(%greet.settings,10,44),$style(1)) Allow only:greetchan -c1
  ....$iif($istok(%greet.settings,11,44),$style(1)) No disallowed:greetchan -c2
  ...Control codes
  ....$iif($istok(%greet.settings,13,44),$style(1)) Allow all:greetchan -k0
  ....$iif($istok(%greet.settings,14,44),$style(1)) Allow only:greetchan -k1
  ....$iif($istok(%greet.settings,15,44),$style(1)) No disallowed:greetchan -k2
  ....-
  ....$iif($istok(%greet.settings,16,44),$style(1)) Strip when +c is set:greetchan -s $+ $iif($istok(%greet.settings,16,44),0,1)
  ..List:greetchan -l
  .-
  .Display list:greet -l
  .Preview greets:greet -p
  .-
  .$iif($isfile($readme),Readme):run $readme
  .-
  .Unload script:.unload -rs $qt($script)
  -
}
#greet on
on *:JOIN:#: {
  if (%greet.settings == $null) set %greet.settings 11,15,16
  if (($istok(%greet.settings,9,44)) || (($istok(%greet.settings,10,44)) && ($gettok($hget($hname2,#),1,32) == 0)) || (($istok(%greet.settings,11,44)) && ($gettok($hget($hname2,#),1,32) != 1))) && ($hget($hname,$nick) != $null) {
    set -u %greet.join $nick
    var %x = $iif(%greet.format != $null,$($v1,2),$hget($hname,$nick))
    if (($istok(%greet.settings,16,44)) && (c isincs $chan(#).mode)) || (($gettok($hget($hname2,#),2,32) == 1) && (!$istok(%greet.settings,13,44))) || ((!$hget($hname2,#)) && ($istok(%greet.settings,14,44))) msg # $strip(%x)
    else msg # %x
  }
}
#greet end