Basic — File Browser

Basicv09272000 / Basicv09272000 / SYS / users.ini

users.ini — 28.79 KB — Download this file

[script]
n0=alias userlist {
n1=  if ($script(dialog.ini) == $null) .load -rs sys\dialog.ini
n2=  dialog -m userlist userlist
n3=  if ((($1 == +b) || ($1 == +f)) && ($2)) {
n4=    %mask2add = $2 | %did_1 = $iif($1 == +b,31,6) | %nick2add = $3
n5=  }
n6=  elseif ($1 == +ab) { %mask2add = $3 | %nick2add = $2 | %did_1 = 62 }
n7=}
n8=alias _pauser userlist +f $2 $1
n9=alias unuser if ($level($1) == 40) { .ruser $1 | iecho Removed $1 from the userlist }
n10=alias unshit if ($level($1) == 5) { .ruser $1 | iecho Removed $1 from the shitlist }
n11=on *:dialog:userlist:sclick:2:help Userlists
n12=on *:dialog:userlist:sclick:62:{
n13=  if ($did(62)) {
n14=    var %n = $ifmatch
n15=    did -r userlist 73,72,68,67
n16=    did -u userlist 70,71
n17=    if ($__var(abot.ul.serv.,%n)) { did -a $dname 72 $ifmatch | did -c $dname 70 }
n18=    if ($__var(abot.ul.chan.,%n)) { did -a $dname 73 $ifmatch | did -c $dname 71 }
n19=    if ($__var(abot.ul.cmnd.,%n)) did -a $dname 68 $ifmatch
n20=    if ($__var(abot.ul.mask.,%n)) did -a $dname 67 $ifmatch
n21=  }
n22=}
n23=on *:dialog:userlist:sclick:63:{
n24=  if ($did(62)) {
n25=    if (($did(67)) && ($did(68))) {
n26=      if (($did(70).state) && ($did(72))) .abot -c $did(72) $did(62) $did(67) $did(68)
n27=      elseif (($did(71).state) && ($did(73))) .abot -j $did(73) $did(62) $did(67) $did(68)
n28=      else .timer 1 0 s.err Invalid parameters.
n29=    }
n30=    else .timer 1 0 s.err Insufficient parameters.
n31=  }
n32=}
n33=on *:dialog:userlist:sclick:64:if ($did(62)) .rbot $ifmatch
n34=on *:dialog:userlist:sclick:51:{
n35=  did -r $dname 57,58,59
n36=  if ($did(51)) {
n37=    var %n = $ifmatch
n38=    if ($_readini(botlist.ini,%n,channels)) did -a $dname 57 $ifmatch
n39=    if ($_readini(botlist.ini,%n,password)) did -a $dname 58 $ifmatch
n40=    if ($_readini(botlist.ini,%n,hostmask)) did -a $dname 59 $ifmatch
n41=  }
n42=}
n43=on *:dialog:userlist:sclick:52:{
n44=  if (($did(51)) && ($did(57)) && ($did(58)) && ($did(59))) {
n45=    .addbot $did(51) $did(57) $did(58) $did(59)
n46=    if ($didwm($dname,51,$did(51)) == 0) did -a $dname 51 $did(51)
n47=    did -r $dname 57,58,59
n48=  }
n49=  else .timer 1 0 s.err Insufficient parameters.
n50=}
n51=on *:dialog:userlist:sclick:53:if ($did(51)) .unbot $ifmatch *
n52=on *:dialog:userlist:init:*:{
n53=  if ($group(#ulist) == on) did -c $dname 27
n54=  if ($group(#shitlist) == on) did -c $dname 45
n55=  if ($i(main,autobot) == on) did -c $dname 60
n56=  if ($_readini(botlist.ini,botnicks,all)) didtok $dname 51 32 $ifmatch
n57=  var %i = 2
n58=  while (%i <= 4) {
n59=    did -a $dname 47 $mask(!user@tm.net.my,%i)
n60=    did -a $dname 29 $mask(!user@tm.net.my,%i)
n61=    inc %i
n62=  }
n63=  did -c $dname 47 $_dmask(47) | did -c $dname 29 $_dmask
n64=  var %i = 1, %l = 40, %n = 6
n65=  :a | while ($ulist(*,%l,%i)) { did -a $dname %n $ifmatch | inc %i }
n66=  if (%l == 40) { var %i = 1, %l = 5, %n = 31 | goto a }
n67=  var %x = 1, %t = $_readini(botlist.ini,abot.count,total)
n68=  if ((%t == $null) || (%t < 0)) {
n69=    writeini -n sys\botlist.ini abot.count total 0
n70=    var %t = 0
n71=  }
n72=  if (%t) {
n73=    while (%x <= %t) {
n74=      if ($_readini(botlist.ini,%x,nick)) {
n75=        var %nick = $ifmatch
n76=        did -a $dname 62 %nick
n77=        set %abot.ul.chan. $+ %nick $_readini(botlist.ini,%x,chan)
n78=        set %abot.ul.cmnd. $+ %nick $_readini(botlist.ini,%x,cmnd)
n79=        set %abot.ul.evnt. $+ %nick $_readini(botlist.ini,%x,evnt)
n80=        set %abot.ul.serv. $+ %nick $_readini(botlist.ini,%x,serv)
n81=        set %abot.ul.mask. $+ %nick $_readini(botlist.ini,%x,mask)
n82=      }
n83=      inc %x
n84=    }
n85=  }
n86=  .timer -m 1 0 ulist.initc $dname
n87=}
n88=alias -l ulist.initc {
n89=  if ((%mask2add) && ((%did_1 == 6) || (%did_1 == 31))) {
n90=    var %-tmp = $didwm($1,%did_1,%mask2add)
n91=    if (%-tmp == 0) did -a $1 %did_1 %mask2add
n92=    else did -c $1 %did_1 %-tmp
n93=    if (%did_1 == 31) did -f $1 4
n94=    if (%nick2add) did -a $1 14 $ifmatch
n95=    .timer 1 0 ulist.initc² $1
n96=  }
n97=  elseif (%mask2add) {
n98=    did -a $1 67 $ifmatch
n99=    if (%did_1 == 62) { did -f $1 49 | if (%nick2add) did -a $1 62 $ifmatch }
n100=    .timer 1 0 did -c $1 62 $didwm($1,62,%nick2add)
n101=  }
n102=}
n103=alias -l ulist.initc² {
n104=  if ($didwm($1,%did_1,%mask2add)) did -c $1 %did_1 $ifmatch
n105=  unset %nick2add %mask2add %did_1
n106=}
n107=on *:dialog:userlist:sclick:60:_set main autobot $iif($did(60).state,on,off)
n108=on *:dialog:userlist:edit:6:uclear
n109=on *:dialog:userlist:edit:31:uclear -s
n110=on *:dialog:userlist:sclick:33:{
n111=  if ($did(31)) { .ruser $ifmatch | uclear -s $ifmatch | did -u $dname 31 }
n112=}
n113=on *:dialog:userlist:sclick:8:{
n114=  if ($did(6)) { .ruser $ifmatch | uclear $ifmatch | did -u $dname 6 }
n115=}
n116=on *:dialog:userlist:sclick:45:$iif($did(45).state,.enable,.disable) #shitlist
n117=on *:dialog:userlist:sclick:27:$iif($did(27).state,.enable,.disable) #ulist
n118=on *:dialog:userlist:sclick:7:if ($did(6)) cf 1
n119=on *:dialog:userlist:sclick:32:if ($did(31)) cf
n120=on *:dialog:userlist:sclick:6:{
n121=  var %m = $did(6)
n122=  if ($level($ulist(%m)) == 40) {
n123=    did -r $dname 12,13,14
n124=    did -a $dname 12 $_user(%m).chan
n125=    did -a $dname 13 $_user(%m).pass
n126=    if ($_user(%m).nick) did -a $dname 14 $ifmatch
n127=    var %f = oOvVxcsuiI, %of = $_user(%m).flag, %i = 1
n128=    while ($mid(%f,%i,1)) {
n129=      did $iif($ifmatch isincs %of,-c,-u) $dname $add(%i,15)
n130=      inc %i
n131=    }
n132=  }
n133=}
n134=on *:dialog:userlist:sclick:31:{
n135=  var %m = $did(31)
n136=  if ($level($ulist(%m)) == 5) {
n137=    did -r $dname 36,37
n138=    mdid² -u $dname 39 43
n139=    did -a $dname 36 $_user(%m).chan
n140=    did -a $dname 37 $_user(%m).info
n141=    did -c $dname $add($_user(%m).flag,38)
n142=  }
n143=}
n144=on *:dialog:userlist:sclick:1:{
n145=  unset %abot.ul.* %mask2add %nick2add
n146=  _set userlist shitmask $add($did(47,1).sel,1)
n147=  _set userlist defaultmask $add($did(29,1).sel,1)
n148=}
n149=alias -l getf { if ($2 == u) return $mid(oOvVxcsuiI,$sub($1,15),1) | return $sub($1,38) }
n150=alias -l cf {
n151=  if ($1 == 1) {
n152=    if ($did(userlist,12) == $null) { .timer -m 1 1 s.err No channels specified. | halt }
n153=    var %i = 16, %.flags
n154=    while (%i <= 25) {
n155=      if ($did(userlist,%i).state) %.flags = %.flags $+ $getf(%i,u) | inc %i
n156=    }
n157=    if (%.flags == $null) { .timer -m 1 1 s.err No flags specified. | halt }
n158=    var %mask = $did(userlist,6) | .ruser %mask
n159=    .adduser + $+ %.flags %mask $did(userlist,12) $&
n160=    $iif($did(userlist,13),$did(userlist,13),changeme) $did(userlist,14)
n161=    uclear %mask | did -u userlist 6
n162=    if ($didwm(userlist,6,%mask) == 0) did -a userlist 6 %mask
n163=  }
n164=  else {
n165=    if ($did(userlist,36) == $null) { .timer -m 1 1 s.err No channels specified. | halt }
n166=    var %i = 39, %level = 0
n167=    while (%i <= 43) { if ($did(userlist,%i).state) { %level = $getf(%i) | break } | inc %i }
n168=    if (%level == 0) { .timer -m 1 1 s.err No flags specified. | halt }
n169=    var %mask = $did(userlist,31)
n170=    .ruser %mask | .addshit %level %mask $did(userlist,36) $did(userlist,37)
n171=    uclear -s %mask | if ($didwm(userlist,31,%mask) == 0) did -a userlist 31 %mask
n172=  }
n173=}
n174=; /uclear [-s] - clears specific id's for dialog [-s] for shitlist
n175=alias -l uclear {
n176=  if ($1 == -s) {
n177=    did -r userlist 36,37 | mdid² -u userlist 39 43
n178=    if ($2) { if ($didwm(userlist,31,$2-)) did -d userlist 31 $ifmatch }
n179=  }
n180=  else {
n181=    did -r userlist 12,13,14 | mdid² -u userlist 16 25
n182=    if ($1) { if ($didwm(userlist,6,$1-)) did -d userlist 6 $ifmatch }
n183=  }
n184=}
n185=alias -l _dmask {
n186=  var %a = $iif($1 == 47,shitmask,defaultmask)
n187=  if ($i(userlist,%a)) return $sub($ifmatch,1) | return 2
n188=}
n189=alias _ulist {
n190=  var %nick = $gettok($1,1,33) $+ !*@*
n191=  if ($ulist(%nick)) return $ifmatch
n192=  var %ident = $gettok($gettok($1,1,33),1,64)
n193=  var %ident.1 = *! $+ %ident $+ @*, %ident.2 = *!* $+ %ident $+ @*
n194=  if ($ulist(%ident.1)) return $ifmatch
n195=  if ($ulist(%ident.2)) return $ifmatch
n196=  var %_ulist.num = 1
n197=  while ($ulist($1,%_ulist.num)) {
n198=    var %ifmatch = $ifmatch
n199=    if ((%ifmatch iswm $1) || (%ifmatch == $1)) return %ifmatch
n200=    inc %_ulist.num
n201=  }
n202=  return $ulist($1)
n203=}
n204=alias -l ctcp.help {
n205=  if ( %basic.help.request. [ $+ [ $1 ] ] ) var %bd1 = 3, %bd2 = 5
n206=  else var %bd1 = 1, %bd2 = 3
n207=  if ($2 == PASS) {
n208=    .timer 1 %bd1 .notice $1 Usage: /CTCP $me PASS <password>
n209=    .timer 1 %bd2 .notice $1 - This sets a password, which lets $&
n210=    you use other commands, like INVITE.
n211=    .timer 1 $calc(%bd2 + 2) .notice $1 - /CTCP $me PASS <password> <newpass>
n212=    .timer 1 $calc(%bd1 + 4) .notice $1 - This is how you change your password.
n213=  }
n214=  elseif ($2 == IDENT) {
n215=    .timer 1 %bd1 .notice $1 Usage: /CTCP $me IDENT <password> [hostmask]
n216=    .timer 1 %bd2 .notice $1 - Allows you to add your current hostmask $&
n217=    or [hostmask] you gave to my userlist.
n218=  }
n219=  elseif ($2 == HELP) {
n220=    .timer 1 %bd1 .notice $1 Usage: /CTCP $me HELP [topic]
n221=    .timer 1 %bd2 .notice $1 - Shows help for [topic] or all topics.
n222=  }
n223=  else {
n224=    .timer 1 %bd1 .notice $1 Usage: /CTCP $me $2 <#channel1,#channel2..|*> <password>
n225=    .timer 1 %bd2 .notice $1 - $MatchCtcp($2) <#channel1,#channel2..|*> - use * for $&
n226=    all channels.
n227=  }
n228=  set -u5 %basic.help.request. [ $+ [ $1 ] ] 1
n229=}
n230=alias -l MatchCtcp {
n231=  if ($1 == UNBAN) return Unbans you from
n232=  if ($1 == INVITE) return Invites you to
n233=  if ($1 == OP) return Ops you in
n234=  if ($1 == VOICE) return Voices you in
n235=}
n236=; /_uctcp_parse NICKNAME FULL_ADDRESS CTCP_REQUEST CHANNELS PASSWORD
n237=;               nick     address      HELP         BLAH
n238=;		     $1		$2	     $3		$4	$5
n239=alias _uctcp_parse {
n240=  ; using $gettok instead of $_user().prop to make it faster
n241=  var %_user = $_user($2)
n242=  var %flag = $gettok(%_user,1,32), %chan = $gettok(%_user,2,32), %pass = $gettok(%_user,3,32)
n243=  var %nick = $gettok(%_user,4,32), %info = $gettok(%_user,5-,32)
n244=  if (($3 == HELP) || ($4 == $null) || ($5 == $null)) goto $3
n245=  if (%pass === $5) goto $3
n246=  halt
n247=  :HELP
n248=  if (($4 == UNBAN) && (u isincs %flag)) ctcp.help $1 $4
n249=  elseif (($4 == INVITE) && (i isincs %flag)) ctcp.help $1 $4
n250=  elseif (($4 == OP) && (o isincs %flag)) ctcp.help $1 $4
n251=  elseif (($4 == VOICE) && (v isincs %flag)) ctcp.help $1 $4
n252=  elseif (($4 == IDENT) && (I isincs %flag)) ctcp.help $1 $4
n253=  elseif (($4 == PASS) || ($4 == HELP)) ctcp.help $1 $4
n254=  elseif ($4 == $null) {
n255=    var %com = HELP PASS
n256=    if (o isincs %flag) %com = %com OP
n257=    if (v isincs %flag) %com = %com VOICE
n258=    if (u isincs %flag) %com = %com UNBAN
n259=    if (i isincs %flag) %com = %com INVITE
n260=    if (I isincs %flag) %com = %com IDENT
n261=    .notice $1 Available CTCP Commands:
n262=    .timer 1 2 .notice $1 -  $+ %com $+ 
n263=    .timer 1 3 .notice $1 - Use: /CTCP $me HELP <command> for info on <command>
n264=  }
n265=  halt
n266=  :INVITE
n267=  if (i isincs %flag) {
n268=    if (%chan == *) g +o $1
n269=    else {
n270=      if ($left($4,1) !isin &%#) { ctcp.help $1 INVITE | halt }
n271=      var %_chan = $_uchan(%chan,$4), %i = 1
n272=      if (%_chan == $null) { .notice $1 You do not have access in $4 | halt }
n273=      while ($gettok(%_chan,%i,44)) { _invite $1 $ifmatch | inc %i }
n274=    }
n275=  }
n276=  halt
n277=  :OP
n278=  if (o isincs %flag) {
n279=    if (($4 == $null) || (($4 != *) && ($left($4,1) !isin &%#))) {
n280=      .timer 1 0 _uctcp_parse $1 $2 HELP OP
n281=      halt
n282=    }
n283=    if ($_uchan(%chan,$4)) {
n284=      var %_chan = $ifmatch
n285=      if (($me isop %_chan) && ($1 ison %_chan) && ($1 !isop %_chan)) mode %_chan +o $1
n286=      elseif ($chr(44) isin %_chan) {
n287=        var %x = 1
n288=        while ($gettok(%_chan,%x,44)) {
n289=          var %tmp = $ifmatch
n290=          if (($me isop %tmp) && ($1 ison %tmp) && ($1 !isop %tmp)) mode %tmp +o $1
n291=          inc %x
n292=        }
n293=      }
n294=      elseif (($4 == *) && (%_chan == *)) g +o $1
n295=    }
n296=    else .notice $1 You do not have access in $4
n297=  }
n298=  halt
n299=  :UNBAN
n300=  if (u isincs %flag) {
n301=    if ($4 == *) {
n302=      var %_chans = $_uchan(%chan,*)
n303=      if (%_chans == *) {
n304=        var %loop = 1 | while ($chan(%loop)) { _unban $1-2 $ifmatch | inc %loop }
n305=      }
n306=      else {
n307=        var %_loop = 1
n308=        while ($gettok(%_chans,%_loop,44)) { _unban $1-2 $ifmatch | inc %_loop }
n309=      }
n310=    }
n311=    else {
n312=      var %_chans = $_uchan(%chan,$4), %z = 1
n313=      if (%_chans == $null) { .notice $1 You do not have access in $4 | halt }
n314=      while ($gettok(%_chans,%z,44)) { _unban $1-2 $ifmatch | inc %z }
n315=    }
n316=  }
n317=  halt
n318=  :VOICE
n319=  if (v isincs %flag) {
n320=    if (($4 == $null) || (($4 != *) && ($left($4,1) !isin &%#))) {
n321=      .timer 1 0 _uctcp_parse $1 $2 HELP VOICE
n322=      halt
n323=    }
n324=    if ($_uchan(%chan,$4)) {
n325=      var %_chan = $ifmatch
n326=      if (($me isop %_chan) && ($1 ison %_chan) && ($1 !isvo %_chan)) mode %_chan +v $1
n327=      elseif ($chr(44) isin %_chan) {
n328=        var %x = 1
n329=        while ($gettok(%_chan,%x,44)) {
n330=          var %tmp = $ifmatch
n331=          if (($me isop %tmp) && ($1 ison %tmp) && ($1 !isvo %tmp)) mode %tmp +v $1
n332=          inc %x
n333=        }
n334=      }
n335=      elseif (($4 == *) && (%_chan == *)) g +v $1
n336=    }
n337=    else .notice $1 You do not have access in $4
n338=  }
n339=  halt
n340=}
n341=
n342=; $_uchan(channels,channel)
n343=; returns valid channels for a user
n344=alias _uchan {
n345=  if (($1 == $2) || ($1 == *) || ($istok($1,$2,44))) return $2
n346=  if ($chr(44) isin $2) {
n347=    var %l = 1, %result
n348=    while ($gettok($2,%l,44)) {
n349=      var %_temp = $ifmatch
n350=      if ($istok($1,%_temp,44)) %result = $addtok(%result,%_temp,44)
n351=      inc %l
n352=    }
n353=    return %result
n354=  }
n355=}
n356=; /_unban nick fulladdress channel
n357=alias -l _unban {
n358=  if ($left($3,1) !isin &%#) { ctcp.help $1 UNBAN | halt }
n359=  if ($me !ison $3) { .notice $nick I am not in $3 right now | halt }
n360=  if ($me !isop $3) { .notice $nick I am not opped in $3 | halt }
n361=  if ($ibl($3,0) == 0) { .notice $1 You are not banned in $3 | halt }
n362=  var %found = $false, %temp, %i = 1
n363=  while ($ibl($3,%i)) {
n364=    if ($ifmatch iswm $2) { %found = $true | mode $3 -b $ifmatch }
n365=    inc %i
n366=  }
n367=  if (%found) .notice $1 You have been unbanned from $3
n368=}
n369=
n370=; /_invite nick channel
n371=alias -l _invite {
n372=  if ($left($2,1) !isin &%#) { ctcp.help $1 INVITE | halt }
n373=  if (($me isop $2) && ($1 !ison $2) && (i isin $chan($2).mode)) .timer 1 3 .raw INVITE $1 $2
n374=  if ($me !ison $2) { .notice $1 I'm not in $2 right now | halt }
n375=  if ($me !isop $2) { .notice $1 Sorry, I do not have Channel Operator status in $2 | halt }
n376=  if (i !isin $chan($2).mode) { .notice $1-2 is not Invite only | halt }
n377=  .raw INVITE $1-2
n378=}
n379=#ulist off
n380=ctcp +40:HELP:?:_uctcp_parse $nick $fulladdress $1-
n381=ctcp +40:INVITE:?:_uctcp_parse $nick $fulladdress $1-4
n382=ctcp +40:OP:?:_uctcp_parse $nick $fulladdress $1-4
n383=ctcp +40:UNBAN:?:_uctcp_parse $nick $fulladdress $1-4
n384=ctcp +40:VOICE:?:_uctcp_parse $nick $fulladdress $1-4
n385=ctcp +40:PASS:?:{
n386=  if ($2 == $null) .notice $nick Insufficient parameters. Try /CTCP $me HELP PASS
n387=  else {
n388=    if ($len($2) < 4) .notice $nick Password not accepted. It must be 4 characters or longer.
n389=    else {
n390=      var %addr = $_ulist($fulladdress)
n391=      if (($3 == $null) && ($_user(%addr).pass == changeme)) {
n392=        .adduser + $+ $_user(%addr).flag %addr $_user(%addr).chan $2 $nick
n393=        .notice $nick Your password is successfully set to ' $+ $2 $+ '
n394=      }
n395=      elseif ($left($3,1) != $null) {
n396=        if ($2 === $_user(%addr).pass) {
n397=          if ($len($3) < 4) .n $nick Password not accepted. It must be 4 characters or longer.
n398=          else {
n399=            .adduser + $+ $_user(%addr).flag %addr $_user(%addr).chan $3 $nick
n400=            .notice $nick Your password is successfully set to ' $+ $3 $+ '
n401=          }
n402=        }
n403=      }
n404=    }
n405=  }
n406=  halt
n407=}
n408=ctcp 1:IDENT:?:{
n409=  if ($2 == $null) { .ctcp.help $nick IDENT | halt }
n410=  var %tf = sys\ident.txt
n411=  if ($_isfile(%tf)) {
n412=    var %tr = $read -ns $nick %tf
n413=    if ($gettok(%tr,1,32) === $2) {
n414=      var %n = $_mask($fulladdress,3) | var %a = $gettok(%tr,2,32), %n = $iif($3,$3,%n)
n415=      if ($ulist(%a) == $null) halt
n416=      .adduser + $+ $_user(%a).flag %n $_user(%a).chan $_user(%).pass $nick
n417=      .notice $nick Your hostmask ' $+ %n $+ ' is now recognised.
n418=    }
n419=  }
n420=  halt
n421=}
n422=on @+40:JOIN:#:{
n423=  var %f = $_user($fulladdress).flag
n424=  if ($_uchan($_user($fulladdress).chan,$chan)) {
n425=    if (V isincs %f) mode $chan +v $nick
n426=  }
n427=}
n428=#ulist end
n429=alias _user {
n430=  var %_user = $ulist($1).info , %_level = $level($_ulist($1))
n431=  if ($prop == flag) return $gettok(%_user,1,32)
n432=  if ($prop == chan) return $gettok(%_user,2,32)
n433=  if ($prop == pass) return $gettok(%_user,3,32)
n434=  if ($prop == nick) return $gettok(%_user,4,32)
n435=  if ($prop == info) return $_user²($1)
n436=  return %_user
n437=}
n438=alias _user² return $gettok($ulist($1).info,$iif($level($_ulist($1)) == 5,3-,5-),32)
n439=alias -l aebx if ($1) editbox $iif(@* iswm $active,-s,-a) /adduser $2-
n440=; Usage: /adduser <+|-flags> <host> <channels> <pass> [nick]
n441=; Available flags:
n442=; o ctcp op
n443=; O auto op
n444=; v ctcp voice
n445=; V auto voice
n446=; c accept chats
n447=; s accept sends
n448=; u ctcp unban
n449=; i ctcp invite
n450=; I ctcp ident
n451=; x exempt user from channel protections
n452=; Reserved flags: (not used)
n453=; p if user is kicked, kick offender
n454=; P if user is kicked, kickban offender
n455=; r reop if deopped
n456=; R reop user, deop offender
n457=; k reop user, kick offender
n458=; K reop user, bankick offender
n459=; b unban user if banned
n460=; B unban user if banned and bankick offender
n461=alias adduser {
n462=  if ($left($1,1) !isin +-) { if ($show) bhelp adduser | halt }
n463=  if (+* iswm $1) {
n464=    if ((($3 == $null) || ($left($3,1) !isin &#)) && ($3 != *)) {
n465=      s.err Error: no channels specified. | aebx $show $1- | halt
n466=    }
n467=    if ((I isincs $1) && ($5 == $null)) {
n468=      s.err You must specify a nickname to allow CTCP IDENT for users.
n469=      aebx $show $1- | halt
n470=    }
n471=  }
n472=  var %flags, %i = 1
n473=  while ($mid($remove($1,+,-),%i,1)) {
n474=    if ($ifmatch isincs oOvVcsuiIx) %flags = %flags $+ $ifmatch
n475=    inc %i
n476=  }
n477=  if (%flags == $null) { s.err Error: invalid flags. | halt }
n478=  if (*!*@* iswm $2) var %hostmask = $2
n479=  elseif ($address($2,$i(userlist,defaultmask))) var %hostmask = $ifmatch
n480=  else {
n481=    if ($server == $null) %hostmask = $2 $+ !*@*
n482=    else {
n483=      set %adduser. $+ $2 $+ .nick $true
n484=      set %adduser. $+ $2 $+ .info $1-
n485=      .enable #userlist | .raw USERHOST $2 | halt
n486=    }
n487=  }
n488=  ; 2:*!*@*.tm.net.my o #mirc password
n489=  var %flags = $remove($1,+,-), %channels = $3
n490=  var %pass = $iif( $4 , $4 , changeme )
n491=  var %nick = $iif( $4 == %pass , $iif( $5 , $5 ) , $4 )
n492=  var %info = %flags %channels %pass %nick
n493=  var %level = $level($ulist(%hostmask))
n494=  if (O isincs %flags) {
n495=    if (+* iswm $1) .auto %hostmask $iif(%channels != *,%channels)
n496=    else .auto -r %hostmask
n497=  }
n498=  if (%level == 40) {
n499=    var %oldinfo = $ulist(%hostmask).info
n500=    if (($gettok(%oldinfo,2,32) == *) || (%channels == *)) var %newchannels = %channels
n501=    else {
n502=      var %c = 1, %newchannels
n503=      while ($gettok(%channels,%c,44)) {
n504=        %newchannels = $addtok($gettok(%oldinfo,2,32),$ifmatch,44))
n505=        inc %c
n506=      }
n507=    }
n508=    if ((%pass == changeme) && ($gettok(%oldinfo,3,32) != $null)) %newpass = $&
n509=    $gettok(%oldinfo,3,32)
n510=    elseif (%pass !== $gettok(%oldinfo,3,32)) %newpass = %pass
n511=    else %newpass = %pass
n512=    if (+* iswm $1) {
n513=      ; add ident info first
n514=      if (I isincs $1) {
n515=        var %tmpfile = $scriptdir $+ ident.txt
n516=        if ($_isfile(%tmpfile)) {
n517=          var %tmpread = $read -ns $5 %tmpfile
n518=          if ($readn) write -l $+ $ifmatch %tmpfile $5 $4 %hostmask
n519=          else write %tmpfile $5 $4 %hostmask
n520=        }
n521=        else write %tmpfile $5 $4 %hostmask
n522=      }
n523=      var %u = 1, %newflags, %oldflags = $gettok(%oldinfo,1,32)
n524=      while ($mid(%flags,%u,1)) {
n525=        if ($ifmatch !isincs %oldflags) %newflags = %oldflags $+ $mid(%flags,%u,1)
n526=        inc %u
n527=      }
n528=      if (%newflags == $null) %newflags = %oldflags
n529=      var %info = %newflags %newchannels %newpass %nick
n530=      .iuser %hostmask %info
n531=      if ($show) iecho Updated userlist info for %hostmask
n532=    }
n533=    else {
n534=      var %u = 1, %newflags, %oldflags = $gettok(%oldinfo,1,32)
n535=      while ($mid(%flags,%u,1)) {
n536=        if ($ifmatch isincs %oldflags) %newflags = $removecs(%oldflags,$ifmatch)
n537=        inc %u
n538=      }
n539=      if (%newflags == $null) {
n540=        .ruser %hostmask
n541=        if ($show) iecho Removed %hostmask from the userlist.
n542=      }
n543=      else {
n544=        var %i = 1, %oldchannels = $gettok(%oldinfo,1,32)
n545=        while ($gettok(%channels,%i,44)) {
n546=          %oldchannels = $remtok(%oldchannels,$ifmatch,44)
n547=          inc %i
n548=        }
n549=        if (%oldchannels == $null) {
n550=          .ruser %hostmask
n551=          if ($show) iecho Removed %hostmask from the userlist.
n552=        }
n553=        else {
n554=          var %newinfo = %newflags %oldchannels %newpass %nick
n555=          .iuser %hostmask %newinfo
n556=          if ($show) iecho Updated userlist info for %hostmask
n557=        }
n558=      }
n559=    }
n560=  }
n561=  else {
n562=    if (%level == 5) .ruser %hostmask
n563=    .auser 40 %hostmask %info
n564=    if ($show) {
n565=      iecho Added %hostmask to userlist.
n566=      iecho Flags: %flags
n567=      iecho Channels: %channels
n568=      iecho Passwords: %pass
n569=    }
n570=  }
n571=}
n572=#botlist off
n573=raw 302:*:{
n574=  var %_user.mask = $remove($replace($2-,=-,!,=+,!),*,~)
n575=  var %_user.nick = $gettok(%_user.mask,1,33)
n576=  var %h = $__var(abot_onconn.mask.,%_user.nick), %c = $__var(abot_onconn.comm.,%_user.nick)
n577=  if (%c) {
n578=    if ((%h iswm %_user.mask) || (%h == %_user.mask) || (%h == $gettok(%_user.mask,2,33))) %c
n579=  }
n580=  .timer.blist 1 4 .disable #botlist | halt
n581=}
n582=#botlist end
n583=#userlist off
n584=raw 302:*:{
n585=  var %_user.mask = $remove($replace($2-,=-,!,=+,!),*,~)
n586=  var %_user.nick = $gettok(%_user.mask,1,33)
n587=  if ($__var(adduser.,%_user.nick,.nick)) {
n588=    if ($__var(adduser.,%_user.nick,.info)) adduser $ifmatch
n589=    unset $_var(adduser.,%_user.nick,.*)
n590=  }
n591=  elseif ($__var(addshit.,%_user.nick,.nick)) {
n592=    if ($__var(addshit.,%_user.nick,.info)) shit $ifmatch
n593=    unset $_var(addshit.,%_user.nick,.*)
n594=  }
n595=  .disable #userlist | halt
n596=}
n597=#userlist end
n598=; /addshit <level> <hostmask> <channels|*> [reason]
n599=; 1 - Offender will be deopped if opped.
n600=; 2 - Automatically kick offender on join.
n601=; 3 - Automatically ban/kick offender on join.
n602=; 4 - Permanently ban offender at all times.
n603=; 5 - Ignores nick permanently.
n604=alias addshit {
n605=  if ($2 == $null) { s.err No nickname or hostmask given. | halt }
n606=  if ($1 !isnum 1-5) { s.err Invalid shitlevel. | halt }
n607=  if ($3 == $null) { s.err You must specify a channel | halt }
n608=  if (($left($3,1) !isin &%#) && ($3 != *)) { s.err Invalid channelname given. | halt }
n609=  if (*!*@* iswm $2) var %shitmask = $2
n610=  elseif ($address($2,$i(userlist,shitmask))) var %shitmask = $ifmatch
n611=  else {
n612=    if ($server == $null) var %shitmask = $2 $+ !*@*
n613=    else {
n614=      set %addshit. $+ $2 $+ .nick $true
n615=      set %addshit. $+ $2 $+ .info $1-
n616=      .enable #userlist
n617=      .raw USERHOST $2
n618=      halt
n619=    }
n620=  }
n621=  var %reason = $iif($4,$4-,Shitlisted)
n622=  .auser 5 %shitmask $1 $3 %reason
n623=  if ($show) {
n624=    iecho Added %shitmask to shitlist
n625=    iecho Channels: $3
n626=    iecho Reason: %reason
n627=    iecho $_shitinfo($1)
n628=  }
n629=}
n630=alias _shitinfo {
n631=  goto $1
n632=  :1 | return Offender will be deopped if opped.
n633=  :2 | return Automatic kick offender on join.
n634=  :3 | return Automatic ban/kick offender on join.
n635=  :4 | return Permanent ban on offender at all times.
n636=  :5 | return Permanent ignore.
n637=}
n638=#shitlist off
n639=on @*:OP:#:{
n640=  var %mask = $address($opnick,5)
n641=  if ($level(%mask) == 5) {
n642=    var %flag = $_user(%mask).flag, %chan = $_user(%mask).chan
n643=    if (%chan == *) var %chan = $chan
n644=    if ((%flag == 1) && ($istok(%chan,$chan,44))) mode $chan -o $opnick
n645=    elseif ((%flag == 2) && ($istok(%chan,$chan,44))) kick $chan $opnick $_user(%mask).info
n646=    elseif ((%flag > 2) && ($istok(%chan,$chan,44))) _shitkick $chan %mask $opnick
n647=  }
n648=}
n649=on *:OP:#:{
n650=  if ($opnick == $me) {
n651=    var %i = 1, %slist, %s = $servmod, %mode = + $+ $servmod(b)
n652=    while ($ulist(*,5,%i)) {
n653=      var %_s = $ifmatch
n654=      if (($_user(%_s).flag >= 4) && ($_uchan($_user(%_s).chan,#))) %slist = %slist %_s
n655=      if (%s // %i) { mode # %mode %slist | %slist = "" }
n656=      inc %i
n657=    }
n658=    if (%slist) mode # %mode %slist
n659=  }
n660=}
n661=on @+5:JOIN:#:{
n662=  var %mask = $fulladdress
n663=  var %flag = $_user(%mask).flag, %chan = $_user(%mask).chan
n664=  if ($istok(%chan,$chan,44)) {
n665=    if (%flag == 2) kick $chan $nick $_user(%mask).info
n666=    elseif (%flag >= 3) _shitkick $chan %mask $nick
n667=  }
n668=}
n669=on +5:ACTION:*:#:_shitignore $nick $fulladdress $chan
n670=on +5:TEXT:*:#:_shitignore $nick $fulladdress $chan
n671=on +5:NOTICE:*:#:_shitignore $nick $fulladdress $chan
n672=ctcp +5:*:*:_shitignore $nick $fulladdress $chan
n673=#shitlist end
n674=alias _shitignore {
n675=  var %_level = $_user($2).flag
n676=  if ((%_level > 3) && ($me isop $3)) _shitkick $3 $2 $1
n677=  elseif (%_level == 5) .ignore $ulist($2)
n678=  elseif ((%_level == 2) && ($me isop $3)) kick $3 $1 $_user($2).info
n679=}
n680=alias _shitkick .raw MODE $1 +b $ulist($2) $+ $lf $+ KICK $1 $3 : $+ $_user($2).info
n681=on *:CONNECT:{
n682=  var %i = 1
n683=  while ($_readini(botlist.ini,%i,nick)) {
n684=    var %n = $ifmatch, %s = $_readini(botlist.ini,%i,serv)
n685=    if ((%s iswm $server) || (%s == $server)) {
n686=      if ($_readini(botlist.ini,%i,cmnd)) {
n687=        set -u180 %abot_onconn.comm. $+ %n $ifmatch
n688=        set -u180 %abot_onconn.mask. $+ %n $_readini(botlist.ini,%i,mask)
n689=        .enable #botlist
n690=        .raw USERHOST %n
n691=      }
n692=    }
n693=    inc %i
n694=  }
n695=}
n696=on me:*:JOIN:#:{
n697=  var %i = 1
n698=  while ($_readini(botlist.ini,%i,nick)) {
n699=    var %n = $ifmatch, %s = $_readini(botlist.ini,%i,chan)
n700=    if ((%s == $chan) || ($istok(%s,$chan,44))) {
n701=      if ($_readini(botlist.ini,%i,cmnd)) {
n702=        set -u180 %autobot.cmnd. $+ %n $+ . $+ $chan $ifmatch
n703=        set -u180 %autobot.chan. $+ %n $+ . $+ $chan $true
n704=        set -u180 %autobot.mask. $+ %n $+ . $+ $chan $_readini(botlist.ini,%i,mask)
n705=      }
n706=    }
n707=    inc %i
n708=  }
n709=}
n710=; /_botdo channel nickname fulladdress $7
n711=alias _botdo {
n712=  var %bc = $__var(autobot.cmnd.,$2,.,$1)
n713=  if (($__var(autobot.chan.,$2,.,$1)) && (%bc)) {
n714=    if ((@ isin $4) && ($__var(autobot.mask.,$2,.,$1) iswm $3)) %bc
n715=  }
n716=}
n717=; eof