:orb(client=epic4 scripter=psykotyk greets=psilicon/fiction :concepts/co-authoring:klepto (i love you honey) : í twiztah will sex for the epic orb thing : ^assign loadpath ~ ^on ^window "% User % does not exist % on channel *" # ### thanks rain!@#$%^ ^on ^window "% **" {echo $stripansi($1-)} ^on ^window "% *[\?3;5h*" {echo $stripansi($1-)} ^on ^window "% *B00*" {echo $stripansi($1-)} ^on ^window "% *[??;??H*" {echo $stripansi($1-)} ^on ^window "% *??EMSI_IRQ*" {echo $stripansi($1-)} ^on ^window "% *[[*9999*C[1*" {echo $stripansi($1-)} if (!epic()) { echo *** orb needs EPIC4, or an equivelant client. EPIC4 is available from echo *** ftp.neato.org/pub/epic or ftp.acronet.net/pub/ircii. quit orb needs EPIC. } @ xx.statbar = 1 :country reader: alias _db.add { ^assign $0[$1] $2- } alias _sb.add { ^assign statbar[$(xx.statbar)][$encode($0)] $encode($after(1 : $1-)) } alias _sb.set { ^assign statbar_s[$(xx.statbar)][$encode($0)] $encode($after(: $1-)) } alias _sb.lock { @ xx.statbar++ } :sets: ^set auto_whowas off ^set display_ansi on ^set continued_line ^set lastlog 2000 ^set mode_stripper on ^set hide_private_channels off ^set channel_name_width 0 ^set client_information hi. ^set clock_24hour off ^set translation latin_1 ^set novice off ^set exec_protection off ^set input_protection off ^set eight_bit_characters on ^window double on ^window level none clear echo ------------------------------------------- ßß °°±±±²²ÛÝÜ ------------------- echo ²² °°°°±±²²Û echo ßß°±²²ÜÜ ± ² °° °±±ÛÝ echo ßßÜÜÜÜÜ ܰ °±²²Ûݱ² ² °° ±²Ý echo ÜÛÜ  ° °°±²²ÛÜݰ °°±Ý ßß°ÜÜÜÞ±²ÛÜÜݱ²² °°±± echo ²Ûݰ ± °°±±²²Þ ݰ °° ° ±² ° °±²Ûݱ±²² ° ° ßßÜßßÜÜ echo ÛÛݱ°° °± ° ±±ÛÛ²±° ° ÝÜÜÜܰ° °°±Þ°°±²² °ß ßÜß ßÜÜÜÜÜÛÜÜ echo Üܲ۰ ²±°° ° ° °° ° ݲ±° °ß   ß ßÜÜ ÜÜÜÜ ßßÜÜÜܰ±²Ü±ÜÜÜÜÜ echo ftNßßßßÛÜßß²±°° ÜÜÜÜÜÜÜÜ ÜÜ ÜÜÜ ÞÞ² ² °ß²Þ°²ÛÛ °Ü °°±°° °°±±²²ÛÝ  ÜÜÜÜÜ echo ÞÝÜÛÛ²Þ ÛÞ²ßßßßßßÜÝß°±²²Ûݲ °°±²Ý °±²² ² °±Þݱ²  °°°°±±²²Ý ÛÛßÝÞÝ echo þÛ²°Û±ÞÞݲ² °±Ý ° Þ°²Û±²² °±²Ü ßß°±²²² °ß²Û²² ° ßßܰ° °±±²Ý ÞÛܲ°Ý echo ÛÞÝݰßÜÛÜ ±²² °° Ü °±±Þ±±²² °°±± Üܱ²²Û²² ² °²Ý°° ݰ° °°± ßßþß echo ß°ÜÜÜÛÛÛ± ß°±±²²  °ß °±±²² ° °ÝÞ°²ÜÜ °°±±±²² ²   °±Ü Ü °° °Ý echo ß°ÛÛÛ²Ý ß°±±² °ÜßÜÛ °°±²² °ßܲ °°²ÝþÞ°°±±±²²² ² ° °Üß echo ÞÛ²ÛÛÛ²ÜÜ ßßßßÜÛ±²ÛÝ ÜÜßßßÝßß±²² ° ÝÜ ßÞß°±±²² ² ßßß echo ܰ±²ÛÛÛÛÛÛ²ßܰ±²ÛÛÛ²ÛÛÛÛ²Û²±±°°ÜÜÜßß ÜÛ²Û²±ÜÜÜßßßßßßßß Ü ß echo Ýßß ÜÜÞÛ±ÜÛÛ²²ÛÛ²ÛÛÛÛÛÛÛ²ÛÛÛÛ²ÛÛÛ²ÛÛÛÛÛÛÛ²²ÛÛÛÛÛÛÛÛ²±°ß °° Ý echo Üßßß°²²ÛÛ²ÛÛÛÛÛÛÛÛ°ßßßßß²ÛÛÛÛÛ°±ßßßß°±²²ÛÛÛÛÛÛÛ²°ßßß ÜÜ echo ßÝ ßßßß ßÞßßßßßßßßßßÝßßß echo ----------------------------------------[fictionøneonsync]-------------------- :saving bitz: alias _orb.addsave {push _ass.savevars $0 @ _orb.cvar[$0] = [$1-]} alias osave { @unlink(~/.orb.save) @_temp.osave=open(~/.orb.save W T) fe ($_ass.savevars) _temp.ii {@write($_temp.osave $$set $_temp.ii $($_temp.ii))} @close($_temp.osave) csave ^timer 1 if (fexist(~/.orb.save)==-1&&fexist(~/.orb.col)==-1) {% problem saving settings - check permissions.}{% successfully saved settings.} } alias oload { ^local _temp.read;^local _temp.oload if (fexist(~/.orb.save)!=-1) { @_temp.read = 1 @_temp.oload = open(~/.orb.save R T) while (!eof($_temp.oload)) { @_temp.read = read($_temp.oload) if (_temp.read) {if (after(\$ $word(0 $_temp.read))==[set]) {@ $word(1 $_temp.read) = afterw($word(1 $_temp.read) $_temp.read)}} } }} :color parser: alias cparse {^local _z @_z=[$*];@_z=sar(gÿ%kÿ\\[0\;30mÿ$_z);@_z=sar(gÿ%Kÿ\\[0\;1\;30mÿ$_z) @_z=sar(gÿ%rÿ\\[0\;31mÿ$_z);@_z=sar(gÿ%Rÿ\\[0\;1\;31mÿ$_z) @_z=sar(gÿ%gÿ\\[0\;32mÿ$_z);@_z=sar(gÿ%Gÿ\\[0\;1\;32mÿ$_z) @_z=sar(gÿ%yÿ\\[0\;33mÿ$_z);@_z=sar(gÿ%Yÿ\\[0\;1\;33mÿ$_z) @_z=sar(gÿ%bÿ\\[0\;34mÿ$_z);@_z=sar(gÿ%Bÿ\\[0\;1\;34mÿ$_z) @_z=sar(gÿ%mÿ\\[0\;35mÿ$_z);@_z=sar(gÿ%Mÿ\\[0\;1\;35mÿ$_z) @_z=sar(gÿ%pÿ\\[0\;35mÿ$_z);@_z=sar(gÿ%Pÿ\\[0\;1\;35mÿ$_z) @_z=sar(gÿ%cÿ\\[0\;36mÿ$_z);@_z=sar(gÿ%Cÿ\\[0\;1\;36mÿ$_z) @_z=sar(gÿ%wÿ\\[0\;37mÿ$_z);@_z=sar(gÿ%Wÿ\\[0\;1\;37mÿ$_z) @_z=sar(gÿ%nÿ\\[0mÿ$_z);@function_return=_z} alias xparse {^local _z @_z=[$*];@_z=sar(gÿ|kÿ\\[0\;30mÿ$_z);@_z=sar(gÿ|Kÿ\\[0\;1\;30mÿ$_z) @_z=sar(gÿ|rÿ\\[0\;31mÿ$_z);@_z=sar(gÿ|Rÿ\\[0\;1\;31mÿ$_z) @_z=sar(gÿ|gÿ\\[0\;32mÿ$_z);@_z=sar(gÿ|Gÿ\\[0\;1\;32mÿ$_z) @_z=sar(gÿ|yÿ\\[0\;33mÿ$_z);@_z=sar(gÿ|Yÿ\\[0\;1\;33mÿ$_z) @_z=sar(gÿ|bÿ\\[0\;34mÿ$_z);@_z=sar(gÿ|Bÿ\\[0\;1\;34mÿ$_z) @_z=sar(gÿ|mÿ\\[0\;35mÿ$_z);@_z=sar(gÿ|Mÿ\\[0\;1\;35mÿ$_z) @_z=sar(gÿ|pÿ\\[0\;35mÿ$_z);@_z=sar(gÿ|Pÿ\\[0\;1\;35mÿ$_z) @_z=sar(gÿ|cÿ$color(l status)ÿ$_z);@_z=sar(gÿ|Cÿ$color(h status)ÿ$_z) @_z=sar(gÿ|wÿ\\[0\;37mÿ$_z);@_z=sar(gÿ|Wÿ\\[0\;1\;37mÿ$_z) @_z=sar(gÿ|nÿ\\[0mÿ$_z);@_z=sar(gÿ|Nÿ\\[0mÿ$_z);@function_return=_z} ev assign lk $cparse(%k);assign hk $cparse(%K) ev assign lr $cparse(%r);assign hr $cparse(%R) ev assign lg $cparse(%g);assign hg $cparse(%G) ev assign ly $cparse(%y);assign hy $cparse(%Y) ev assign lb $cparse(%b);assign hb $cparse(%B) ev assign lm $cparse(%m);assign hm $cparse(%M) ev assign lc $cparse(%c);assign hc $cparse(%C) ev assign cl $cparse(%n);assign hw $cparse(%W) @ _ass.color[red][l]=lr @ _ass.color[red][h]=hr @ _ass.color[green][l]=lg @ _ass.color[green][h]=hg @ _ass.color[yellow][l]=ly @ _ass.color[yellow][h]=hy @ _ass.color[blue][l]=lb @ _ass.color[blue][h]=hb @ _ass.color[magenta][l]=lm @ _ass.color[magenta][h]=hm @ _ass.color[cyan][l]=lc @ _ass.color[cyan][h]=hc @ _ass.color[white][l]=cl @ _ass.color[white][h]=hw @ _ass.color[black][l]=hk @ _ass.color[black][h]=hk @ _ass.colors = [black red green yellow blue magenta cyan white] alias addcol {@ push(colopts $0) @ _ass.evcol[$0] = [$1]} alias color {@ function_return = _ass.color[$_ass.evcol[$1]][$0]} alias csave {^local _col @unlink(~/.orb.col) @_col=open(~/.orb.col W T) foreach _ass.evcol ii { @write($_col $ii $_ass.evcol[$ii]) } @close($_col)} alias cload {^local _col,_read if (fexist(~/.orb.col)!=-1) { @_col=open(~/.orb.col R T) while (!eof($_col)) { @_read=read($_col) if (_read) {@ _ass.evcol[$word(0 $_read)] = word(1 $_read)} } @close($_col)}} alias cset.list {^local _cset_temp. @ _cset_temp.ii = sort($colopts) % colors$(hk):$(cl) fe ($_cset_temp.ii) _cset_temp.yy _cset_temp.zz { % ${_cset_temp.yy ? [$(hk)\[$(hw)$[20]_cset_temp.yy$(hk)\]$(cl) $[10]_ass.evcol[$_cset_temp.yy]] :} ${_cset_temp.zz ? [$(hk)\[$(hw)$[20]_cset_temp.zz$(hk)\]$(cl) $[10]_ass.evcol[$_cset_temp.zz]] :} }} alias cset.set { if ([$1] && _ass.evcol[$0] && match($1 $_ass.colors)) { @ _ass.evcol[$0] = [$1] if ([$0]==[status]) {upd.sbar} % set color for $0 to$(hw):$(hk) \($(hw)$1$(hk)\)$(cl)} {if (_ass.evcol[$0]&&![$1]) {% color for $0 is currently set to$(hw):$(hk) \($(hw)$_ass.evcol[$0]$(hk)\)$(cl)}{ % error: type must exist, and color must be one of: $(_ass.colors)}}} alias cset {if (![$0]) {cset.list}{cset.set $*}} :binds: ^bind ^X switch_channels ^bind ^K parse_command if (I) {^join $I} ^bind ^B self_insert ^bind ^V self_insert ^bind ^_ self_insert ^bind ^I parse_command ^_hook.tab.get ^bind meta3-a scroll_backward ^bind meta3-b scroll_forward ^bind meta3-c scroll_end ^bind ^[ meta1_character ^bind meta1-[ meta2_character ^bind ^Q meta3_character ^bind meta2-4 meta5_character ^bind meta2-5 meta6_character ^bind meta2-6 meta7_character ^bind meta5-~ scroll_end ^bind meta6-~ scroll_backward ^bind meta7-~ scroll_forward ^bind meta2-A backward_history ^bind meta2-B forward_history ^bind meta2-C forward_character ^bind meta2-D backward_character for (@_temp.n=1,_temp.n<11,@_temp.n=_temp.n+1) {^bind meta1-$_temp.n parse_command ^ws $_temp.n} :echoes: @ echoes = [%Wú%nú%Kú%n %Kú%nú%Kú%n %Kú%cú%Cú%n *** %K*%n*%W*%n %Kú%cí%Kú%n %K\(%W!%K\)%n %K\(%cí%K\)%n %KÄ%nÄ%WÄ%n %KÄ%nÄ%KÄ%n %KÄ%cÄ%CÄ%n %K:%n:%W:%n %K::%n: %K:%c:%C:%n %KÍ%nÍ%WÍ%n %KÍ%nÍ%KÍ%n %KÍ%cÍ%CÍ%n %bú%cú%Cú%n %MÄ%mÄ%KÄ%n %K‘%n‘%W‘%n %W.%nù%Kú%n %KÄ%cÄ%KÄ%n %K:%n:%W>%n %rÄ%RÄ%YÄ%n %Kú%Bí%Kú%n] @ parsedec = cparse($echoes) @ _ass.orbecho = word(0 $parsedec) alias echostr { ^local _temp if (![$0]) { for (@_temp.i=0,_temp.i<[$#echoes],@_temp.i=_temp.i+7) { % $_func.fes(${_temp.i+1} $word($_temp.i $parsedec)) $_func.fes(${_temp.i+2} $word(${_temp.i+1} $parsedec)) $_func.fes(${_temp.i+3} $word(${_temp.i+2} $parsedec)) $_func.fes(${_temp.i+4} $word(${_temp.i+3} $parsedec)) $_func.fes(${_temp.i+5} $word(${_temp.i+4} $parsedec)) $_func.fes(${_temp.i+6} $word(${_temp.i+5} $parsedec)) $_func.fes(${_temp.i+7} $word(${_temp.i+6} $parsedec)) } %u /echostr }{ if ([$0]>[$#echoes]) {% echo number out of range $(hw)-$(cl) use /echostr to list.} {% echo string is now$(hw):$(cl) $cparse($word(${[$0]-1} $parsedec)) @ _ass.orbecho = cparse($word(${[$0]-1} $parsedec))}} } alias _func.fes {@ function_return = [$1] ? [$(hk)\[$(hw)$[-3]0$(hk)\]$(cl) $1] :} _orb.addsave _ass.um default usermodes _orb.addsave _ass.nc.l nick completion string (left) _orb.addsave _ass.nc.r nick completion string (right) _orb.addsave _ass.orbecho echo string _orb.addsave _ass.screwban screwban _orb.addsave sbar status bar _orb.addsave queue xdcc queue _orb.addsave queuemax xdcc queue maximum _orb.addsave xdcc.maxspeed xdcc maximum speed record _orb.addsave xdcc.autoget xdcc autoget _orb.addsave or.email e-mail address :assigns: @ _ass.orblogo = [\(orb\)] @ _ass.orbver = [01a] @ _ass.ircii = [2.9a7] @ _ass.um = [+iw] @ _ass.nc.r = [:] :echo: alias + {eval ${[\$]}$*} alias % {echo $_ass.orbecho $*} :functions: alias _orb.cus {@ function_return = sort($remw($chr(13) $chanusers($0)))} ## with "help" (okay, it's retyped) from wc ## alias isnumber {^local _temp.isnum 1 if (![$0]) {@ _temp.isnum = 0} fec ($0) _temp.ii {if (!isdigit($_temp.ii) && _temp.ii != [-]) {@ _temp.isnum = 0}} @ function_return = _temp.isnum} alias _func.before {@ function_return = left($index($0 $1-) $1-)} alias _func.after {@ function_return = right(${strlen($1-)-index($0 $1-)+1} $1-)} alias isdigit {if (match(*$0* 1234567890)) {@ function_return = 1}{@ function_return = 0}} alias _func.ischan {if (left(1 $0) == [#] || left(1 $0) == [&]) {@ function_return = 1}{@ function_return = 0}} alias tdiff3 {@ function_return = tr(ÿ ÿÿ${tdiff2($*)})} alias tdiffs {^local zz.;@ zz.tdiff = tdiff($*);if (match(days $zz.tdiff)) {@ zz.days = beforew(days $zz.tdiff) @ zz.tdiff = afterw(days $zz.tdiff)};if (match(day $zz.tdiff)) {@ zz.days = beforew(day $zz.tdiff) @ zz.tdiff = afterw(day $zz.tdiff)};if (match(hours $zz.tdiff)) {@ zz.hours = beforew(hours $zz.tdiff) @ zz.tdiff = afterw(hours $zz.tdiff)};if (match(hour $zz.tdiff)) {@ zz.hours = beforew(hour $zz.tdiff) @ zz.tdiff = afterw(hour $zz.tdiff)};if (match(minutes $zz.tdiff)) {@ zz.minutes = beforew(minutes $zz.tdiff) @ zz.tdiff = afterw(minutes $zz.tdiff)};if (match(minute $zz.tdiff)) {@ zz.minutes = beforew(minute $zz.tdiff) @ zz.tdiff = afterw(minute $zz.tdiff)};if (match(seconds $zz.tdiff)) {@ zz.seconds = beforew(seconds $zz.tdiff)} if (match(second $zz.tdiff)) {@ zz.seconds = beforew(second $zz.tdiff)};if (zz.days) {@ zz.ret #= spc2zero($[-2]zz.days) ## [:]} if (zz.hours) {@ zz.ret #= spc2zero($[-2]zz.hours) ## [:]};if (zz.minutes) {@ zz.ret #= spc2zero($[-2]zz.minutes) ## [:]}{@ zz.ret #= [00:]} if (zz.seconds) {@ zz.ret #= spc2zero($[-2]zz.seconds)}{@ zz.ret #= [00]};@ function_return = zz.ret } alias spc2zero {@ function_return = sar(gÿ ÿ0ÿ$*)} alias tdiff4 tdiff3 alias _func.spc {^local _temp. for (@_temp.i=1,_temp.i<=[$0],@_temp.i=_temp.i+1) {@_temp.sp=_temp.sp##[ ]} @function_return=_temp.sp } alias _func.crop {if (strlen($1-)>[$0]) {@function_return=[$left(${[$0]-3} $1-)]##[...]}{@function_return=[$1-]##_func.spc(${[$0]-strlen($1-)})}} alias _func.rcrop {if (strlen($1-)>[$0]) {@function_return=[...]##[$right(${[$0]-3} $1-)]}{@function_return=[$1-]##_func.spc(${[$0]-strlen($1-)})}} :hooks: ^on #-connect 616 * {^umode $_ass.um} alias _hook.func.checkar { if (match($_ass.ar* $*)) {@ function_return = 1}{@ function_return = 0} } alias _hook.set.ar { if (![$*]) {% auto-reply string is currently$(hw):$(cl) $_ass.ar} if ([$*]) {@ _ass.ar = [$0] % auto-reply string is now$(hw):$(cl) %_ass.ar} } alias arstring _hook.set.ar alias _hook.def.ar {if (![$0]) {@ _ass.ar = N}{@ _ass.ar = [$0]}} ^on #-hook 515 "nick % %" {if ([$1] == _ass.ar) {^_hook.def.ar $2}} # i ripped this damn tabkey code out of necessity from the EPIC4 distribution # ...the code i had before was nice and broken, and liked to get stuck in # infinite loops. ## original header: #------------------------------------------------------------------------------ # updated for 2.2.2 # This keeps track of the nicks of people you MSG. You can then # just hit the tab key ^I to flip through the list of people # you sent MSGs to. # Assign tk.msgmax to the number of nicknames you wish to store # Modified by Chetnik (s902211@yallara.cs.rmit.oz.au) # and Daemon (frechett@spot.colorado.edu) @tk.msgmax=10 alias tk.addmsg { @ tk.matched = rmatch($0 $^\1-) if (tk.matched) { @ tk.msglist = [$(0-${tk.matched-1}) $(${tk.matched+1}-)] } #else { @ tk.msglist = [$(0-${tk.msgmax-1})] } @ tk.msgcnt = 0 ^assign -tk.matched } alias tk.getmsg { @ tk.msgcnt = tk.msgcnt + [$0] if ( #tk.msglist < tk.msgcnt ) {@ tk.msgcnt = 1} if (tk.msgcnt <= 0) {@ tk.msgcnt = #tk.msglist} @ tk.junk = K ## [msg] type ^U${[$($tk.msgcnt)]?tk.junk##[ ]:}$^^{[$($tk.msgcnt)]}\ } on #-send_msg 33 * ^tk.addmsg $0 $tk.msglist on #-msg 33 * ^tk.addmsg $0 $tk.msglist on #-send_dcc_chat 33 * ^tk.addmsg \=$0 $tk.msglist on #-dcc_chat 33 * ^tk.addmsg \=$0 $tk.msglist #--# end of ripped code alias notword { if ([$0] > 0) { if (([$0] > 1) && ([$0] < #)) { @ nw.sep = [ ] } { @ nw.sep = [] } @ function_return = [$(1-${[$0]-1})] ## [$nw.sep] ## [$(${[$0]+1}-)] } { @ function_return = [$1-] } } bind ^I parse_command ^tk.getmsg 1 $tk.msglist #bind ^R parse_command ^tk.getmsg -1 $tk.msglist ^_hook.def.ar :hooks(motd): ^on ^001 * # ^on ^002 * # ^on ^003 * # ^on ^004 * {% $1$(hw):$(cl) running $(hw)$2$(hk)\($(cl)$3 $4$(hk)\)$(cl) ^hook relay + e ::: $1: running $2\($3 $4\) } ^on #-connect 1561 * {@ _temp.supmotd = 1} ^on ^372 * {if (!_temp.supmotd) {% $2-}} ^on ^377 * {if (!_temp.supmotd) {% $1-}} ^on ^375 * # ^on ^376 * {^assign -_temp.supmotd} :hooks(lusers): ^on ^251 * {% users$(hw):$(cl) +i$(hk)\($(hw)$6$(hk)\)$(cl) -i$(hk)\($(hw)$3$(hk)\)$(cl) *$(hk)\($(hw)${[$3]+[$6]}$(hk)\)$(cl) servers$(hk)\($(hw)$9$(hk)\)$(cl) ^hook relay + e ::: users: +i\($6\) -i\($3\) *\(${[$3]+[$6]}\) servers\($9\) @ _temp.us = [$3] + [$6] @ _temp.sr = [$9]} ^on ^252 * {^stack push set floating_point_math ^set floating_point_math on % opers$(hk)\($(hw)$1$(hk)\)$(cl) users/server$(hk)\($(hw)$trunc(2 ${_temp.us/_temp.sr})$(hk)\)$(cl) ^hook relay + e ::: opers\($1\) users/server\($trunc(2 ${_temp.us/_temp.sr})\) ^stack pop set floating_point_math} ^on ^253 * {% unknown connections$(hw):$(cl) $1 ^hook relay + e ::: unknown connections: $1} ^on ^254 * {^stack push set floating_point_math ^set floating_point_math on % channels$(hw):$(cl) $1 $(hk)\($(cl)$trunc(2 ${_temp.us/[$1]}) users$(hw)/$(cl)channel$(hk)\)$(cl) ^hook relay + e ::: channels: $1 \($trunc(2 ${_temp.us/[$1]}) users/channel\) ^stack pop set floating_point_math} ^on ^255 * {^stack push set floating_point_math ^set floating_point_math on @ _temp.lu = [$3] * 100 % local users$(hw):$(cl) $3 $(hk)\($(cl)$trunc(2 ${_temp.lu/_temp.us})$(hk)%$(cl) of total network load$(hk)\)$(cl) ^hook relay + e ::: local users: $3 \($trunc(2 ${_temp.lu/_temp.us})% of total network load\) % local uplinks$(hw):$(cl) $6 ^hook relay + e ::: local uplinks: $6 ^assign -_temp.lu;^assign -_temp.us;^assign -_temp.sr;^stack pop set floating_point_math} ^on ^250 * {% highest connection count$(hw):$(cl) $4 ^hook relay + e ::: highest connection count: $4} :hooks(numerics -- errors): ^on ^401 * {% $(hk)\($(lc)$1$(hk)\)$(cl) no such nick$(hw)/$(cl)channel.} ^on ^402 "% % No such server" {% $(hk)\($(lc)$1$(hk)\)$(cl) no such nick/server.} ^on ^402 "% % No such channel" {% $(hk)\($(lc)$1$(hk)\)$(cl) no such channel.} ^on ^402 "% % Cannot send to channel" {% $(hk)\($(lc)$1$(hk)\)$(cl) cannot send to channel.} ^on ^402 "% % You have joined too many channels" {% $(hk)\($(lc)$1$(hk)\)$(cl) cannot join any more channels.} ^on ^402 "% % There was no such nickname" {% $(hk)\($(lc)$1$(hk)\)$(cl) there was no such nickname.} ^on ^402 "% % Duplicate recipients. No message delivered" {% $(hk)\($(lc)$1$(hk)\)$(cl) duplicate recipients.. no message delivered.} ^on ^402 "% % No origin specified" {% $(hk)\($(lc)$1$(hk)\)$(cl) no origin specified.} ^on ^411 "% No recipient given %" {% no recipient given.} ^on ^411 "% No text to send" {% no text to send.} ^on ^411 "% % No toplevel domain specified" {% $(hk)\($(lc)$1$(hk)\)$(cl) no top-level domain specified.} ^on ^411 "% % Wildcard in toplevel Domain" {% $(hk)\($(lc)$1$(hk)\)$(cl) wildcard in top-level domain.} ^on ^421 "% % Unknown command" {% $(hk)\($(lc)$1$(hk)\):$(cl) unknown command.} ^on ^422 "% MOTD File is missing*" # ^on ^422 "% % No administrative info available" {% no admin info available.} ^on ^431 * {% no nickname given.} ^on ^432 * {% $(hk)\($(lc)$1$(hk)\)$(cl) erroneous nickname} ^on ^433 * {% $(hk)\($(lc)$0$(hk)\)$(cl) nickname is already in use.} ^on ^437 * {% $(hk)\($(lc)$1$(hk)\)$(cl) cannot change nickname when banned on channel.} ^on ^438 * {% $(hk)\($(lc)$1$(hk)\)$(cl) nick change too fast. delaying... ^timer ${[$8]+1} nick $1} ^on ^441 * {% $(hk)\($(lc)$1$(hk)\)$(cl) is not on $2.} ^on ^442 * {% $(hk)\($(lc)$1$(hk)\)$(cl) not on channel.} ^on ^443 * {% $(hk)\($(lc)$1$(hk)\)$(cl) is already on $2.} ^on ^444 * {% $(hk)\($(lc)$1$(hk)\)$(cl) user not logged in.} ^on ^451 * # ^on ^461 * {% $(hk)\($(lc)$1$(hk)\)$(cl) not enough parameters.} ^on ^462 * {% you may not reregister.} ^on ^463 * {% error$(hw):$(cl) your host does not have an O-line.} ^on ^464 * {% error$(hw):$(cl) password incorrect.} ^on ^465 * {% error$(hw):$(cl) you are K-lined from this server.} ^on ^467 * {% $(hk)\($(lc)$1$(hk)\)$(cl) key already set on channel.} ^on ^471 * {% $(hk)\($(lc)$1$(hk)\)$(cl) channel is full.} ^on ^472 * {% $(hk)\($(lc)$1$(hk)\):$(cl) unknown mode character.} ^on ^473 * {% $(hk)\($(lc)$1$(hk)\)$(cl) channel is invite-only.} ^on ^474 * {% $(hk)\($(lc)$1$(hk)\)$(cl) cannot join - you are banned.} ^on ^475 * {% $(hk)\($(lc)$1$(hk)\)$(cl) incorrect key.} ^on ^476 * {% $(hk)\($(lc)$1$(hk)\)$(cl) bad channel mask.} ^on ^478 * {% $(hk)\($(lc)$1$(hk)\)$(cl) banlist is full.} ^on ^481 * {% $(hk)\($(lc)$1$(hk)\)$(cl) error$(hw):$(cl) you are not an IRC operator.} ^on ^482 * {% $(hk)\($(lc)$1$(hk)\)$(cl) error$(hw):$(cl) you are not a channel operator.} ^on ^483 * {% $(hk)\($(lc)$1$(hk)\)$(cl) you can't kill a server!} ^on ^484 * {% $(hk)\($(lc)$1$(hk)/$(cl)$2$(hk)\)$(cl) cannot kick/deop channel service.} ^on ^491 * {% error$(hw):$(cl) your host does not have an O-line.} ^on ^501 * # ^on ^502 * {% error$(hw):$(cl) cannot change modes for other users.} ^on ^511 * {% $(hk)\($(lc)$1$(hk)\)$(cl) your silence list is full.} ^on ^512 * {% $(hk)\($(lc)$1$(hk)@$(lc)$2$(hk)\)$(cl) no such g-line.} ^on #-401 1662 * {^hook relay + e ::: \($1\) no such nick/channel.} ^on #-402 1662 "% % No such server" {^hook relay + e ::: \($1\) no such nick/server.} ^on #-402 1662 "% % No such channel" {^hook relay + e ::: \($1\) no such channel.} ^on #-402 1662 "% % Cannot send to channel" {^hook relay + e ::: \($1\) cannot send to channel.} ^on #-402 1662 "% % You have joined too many channels" {^hook relay + e ::: \($1\) cannot join any more channels.} ^on #-402 1662 "% % There was no such nickname" {^hook relay + e ::: \($1\) there was no such nickname.} ^on #-402 1662 "% % Duplicate recipients. No message delivered" {^hook relay + e ::: \($1\) duplicate recipients.. no message delivered.} ^on #-402 1662 "% % No origin specified" {^hook relay + e ::: \($1\) no origin specified.} ^on #-411 1662 "% No recipient given %" {^hook relay + e ::: no recipient given.} ^on #-411 1662 "% No text to send" {^hook relay + e ::: no text to send.} ^on #-411 1662 "% % No toplevel domain specified" {^hook relay + e ::: \($1\) no top-level domain specified.} ^on #-411 1662 "% % Wildcard in toplevel Domain" {^hook relay + e ::: \($1\) wildcard in top-level domain.} ^on #-421 1662 "% % Unknown command" {^hook relay + e ::: \($1\): unknown command.} ^on #-422 1662 "% MOTD File is missing*" # ^on #-422 1662 "% % No administrative info available" {^hook relay + e ::: no admin info available.} ^on #-431 1662 * {^hook relay + e ::: no nickname given.} ^on #-432 1662 * {^hook relay + e ::: \($1\) erroneous nickname} ^on #-433 1662 * {^hook relay + e ::: \($0\) nickname is already in use.} ^on #-437 1662 * {^hook relay + e ::: \($1\) cannot change nickname when banned on channel.} ^on #-438 1662 * {^hook relay + e ::: \($1\) nick change too fast. delaying... ^timer ${[$8]+1} nick $1} ^on #-441 1662 * {^hook relay + e ::: \($1\) is not on $2.} ^on #-442 1662 * {^hook relay + e ::: \($1\) not on channel.} ^on #-443 1662 * {^hook relay + e ::: \($1\) is already on $2.} ^on #-444 1662 * {^hook relay + e ::: \($1\) user not logged in.} ^on #-451 1662 * # ^on #-461 1662 * {^hook relay + e ::: \($1\) not enough parameters.} ^on #-462 1662 * {^hook relay + e ::: you may not reregister.} ^on #-463 1662 * {^hook relay + e ::: error: your host does not have an O-line.} ^on #-464 1662 * {^hook relay + e ::: error: password incorrect.} ^on #-465 1662 * {^hook relay + e ::: error: you are K-lined from this server.} ^on #-467 1662 * {^hook relay + e ::: \($1\) key already set on channel.} ^on #-471 1662 * {^hook relay + e ::: \($1\) channel is full.} ^on #-472 1662 * {^hook relay + e ::: \($1\): unknown mode character.} ^on #-473 1662 * {^hook relay + e ::: \($1\) channel is invite-only.} ^on #-474 1662 * {^hook relay + e ::: \($1\) cannot join - you are banned.} ^on #-475 1662 * {^hook relay + e ::: \($1\) incorrect key.} ^on #-476 1662 * {^hook relay + e ::: \($1\) bad channel mask.} ^on #-478 1662 * {^hook relay + e ::: \($1\) banlist is full.} ^on #-481 1662 * {^hook relay + e ::: \($1\) error: you are not an IRC operator.} ^on #-482 1662 * {^hook relay + e ::: \($1\) error: you are not a channel operator.} ^on #-483 1662 * {^hook relay + e ::: \($1\) you can't kill a server!} ^on #-484 1662 * {^hook relay + e ::: \($1/$2\) cannot kick/deop channel service.} ^on #-491 1662 * {^hook relay + e ::: error: your host does not have an O-line.} ^on #-501 1662 * # ^on #-502 1662 * {^hook relay + e ::: error: cannot change modes for other users.} ^on #-511 1662 * {^hook relay + e ::: \($1\) your silence list is full.} ^on #-512 1662 * {^hook relay + e ::: \($1@$2\) no such g-line.} :hooks(on join): ^on #-join 1515 * {if ([$0]==N) {@_temp.synchstart=time()}} ^on ^366 * # ^on #-366 1515 * {if (_temp.synchstart) {^hook channel_synch $1}} ^on ^332 * {% $(lm)topic$(hk)\($(hm)$1$(hk)\)$(cl) $2-} ^on #-332 515 * {^hook relay + e ::: topic\($1\) $2-} ^on ^333 * {% $(lm)set by$(hk)\($(hm)$2$(hk)\)$(cl) $tolower($word(1 $stime($3)) $word(2 $stime($3)))} ^on #-333 515 * {^hook relay + e ::: set by\($2\) $tolower($word(1 $stime($3)) $word(2 $stime($3)))} ^on ^329 * # ^on ^353 * # ^on ^hook "channel_synch *" {^scan;% synched channel $(hw)$1$(cl) in $(hw)${time()-_temp.synchstart}s $(hk)\($(hc)ops$(hk)/$(lc)$word(0 $_orb.counts($1)) $(hc)voc$(hk)/$(lc)$word(1 $_orb.counts($1)) $(hc)non$(hk)/$(lc)$word(2 $_orb.counts($1))$(hk)\)$(cl) ^hook relay + e ::: synched channel $1 in ${time()-_temp.synchstart}s \(ops/$word(0 $_orb.counts($1)) voc/$word(1 $_orb.counts($1)) non/$word(2 $_orb.counts($1))\) ^assign -_temp.synchstart} :hooks(voice bitz): ^on #-mode_stripped 545 * { if (match(*v $2)) { @ _ass.isvoice[$encode($tolower($1))][$encode($tolower($3))] = left(1 $2) == [+] ? [1] : [0] }} ^on #-353 545 * { fe ($2-) _temp.nm {if (left(1 $_temp.nm)!=[+]) { @ _ass.isvoice[$encode($tolower($2))][$encode($tolower(${left(1 $_temp.nm) == [@] || left(1 $_temp.nm) == [+] ? right(${strlen($_temp.nm)-1} $_temp.nm) : _temp.nm}))] = [0]} {@ _ass.isvoice[$encode($tolower($2))][$encode($tolower($right(${strlen($_temp.nm)-1} $_temp.nm)))] = [1]}} } ^on #-join 545 * {@ _ass.isvoice[$encode($tolower($1))][$encode($tolower($0))] = [0]} ^on #-leave 545 * {@ _ass.isvoice[$encode($tolower($1))][$encode($tolower($0))] = [0]} alias isvoiced {@ function_return = _ass.isvoice[$encode($tolower($1))][$encode($tolower($0))]} :/sc code: alias _orb.channel {^local _temp. @_temp.zz = [$0] ? _orb.cus($0) : _orb.cus($C) fe ($_temp.zz) _temp.ii { @ ischanop($_temp.ii ${[$0] ? [$0] : C}) ? push(_temp.ops @$_temp.ii) : isvoiced($_temp.ii ${[$0] ? [$0] : C}) ? push(_temp.voc +$_temp.ii) : push(_temp.non .$_temp.ii)} @ _temp.ops ? push(_temp.ret $_temp.ops) : @ _temp.voc ? push(_temp.ret $_temp.voc) : @ _temp.non ? push(_temp.ret $_temp.non) : @ function_return = _temp.ret} alias _orb.counts {^local _temp. @_temp.zz = [$0] ? _orb.cus($0) : _orb.cus($C) @_temp.ops=[0];@_temp.voc=[0];@_temp.non=[0] fe ($_temp.zz) _temp.ii {@ ischanop($_temp.ii ${[$0] ? [$0] : C}) ? _temp.ops++ : isvoiced($_temp.ii ${[$0] ? [$0] : C}) ? _temp.voc++ : _temp.non++} @ function_return = _temp.ops ## [ ] ## _temp.voc ## [ ] ## _temp.non } alias scan sc alias names sc ^addcol scan cyan alias sc {^local s.cl,s.ch,_temp. @ _temp.c = [$0] ? [$0] : C for (@_temp.i=1,_temp.i<=5,@_temp.i++) {^local n${_temp.i}} if (!match($_temp.c $mychannels())) {% error$(hw):$(cl) you are not on that channel!} { @ _temp.nms = _orb.channel($_temp.c) @ s.cl = _ass.color[$_ass.evcol[scan]][l] @ s.ch = _ass.color[$_ass.evcol[scan]][h] % $(hk)ÚÄÄÄ$(s.cl)Ä$(hk)ÄÄÄÄÄÄÄÄÄÄÄÄ$(s.cl)Ä$(hk)ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ$(s.cl)Ä$(hk)Ä$(s.cl)ÄÄ$(hk)ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿$(cl) fe ($_temp.nms) n1 n2 n3 n4 n5 { % $(s.cl)³$(hk) [$(s.ch)$[1]tr(/.//$left(1 $n1))$(s.cl)$[9]after($left(1 $n1) $n1)$(hk)] [$(s.ch)$[1]tr(/.//$left(1 $n2))$(s.cl)$[9]after($left(1 $n2) $n2)$(hk)] [$(s.ch)$[1]tr(/.//$left(1 $n3))$(s.cl)$[9]after($left(1 $n3) $n3)$(hk)] [$(s.ch)$[1]tr(/.//$left(1 $n4))$(s.cl)$[9]after($left(1 $n4) $n4)$(hk)] [$(s.ch)$[1]tr(/.//$left(1 $n5))$(s.cl)$[9]after($left(1 $n5) $n5)$(hk)] ³$(cl) } % $(s.ch)ÀÄ-$(s.cl)- $(s.ch)-$(s.cl)ú $(s.ch)ú $(s.cl)ú$(s.ch)ú$(s.cl)-ÄÄ$(s.ch)Ä$(s.cl)Ä$(s.ch)ÄÄ$(s.cl)ÄÄ$(s.ch)ÄÄÄÄÄÄ$(s.cl)Ä$(s.ch)ÄÄ$(s.cl)ÄÄÄ$(s.ch)Ä$(s.cl)Ä$(s.ch)ÄÄ$(s.cl)ÄÄÄÄ$(s.ch)Ä$(s.cl)ÄÄÄ$(s.ch)ÄÄ$(s.cl)ÄÄÄ$(hk)Ä$(s.cl)Ä$(hk)ÄÄ$(s.cl)ÄÄ$(hk )ÄÄÄ$(s.cl)Ä$(hk)ÄÄÄ$(s.cl)ÄÄ$(hk)ÄÙ$(cl) }} :hooks(numerics -- replies): ^on ^305 * # ^on ^306 * # ^on ^302 * {% $(hk)[$(lc)userhost$(hk)] \($(hc)$0$(hk)!$(lc)$3$(hk)@$(lc)$4$(hk)\)$(cl)} ^on ^341 * {% invited $(hw)$1$(cl) to $(hw)$2$(cl)...} ^on ^351 * {% $2$(hw):$(cl) running $(hw)$1$(cl) $(hk)\($(cl)$3$(hk)\)$(cl)} ^on ^364 * {% $[22]1 $(hk)¯$(cl) $[22]2 $(hk)[$(cl)$[-2]3$(hk)]$(cl) $_func.crop(20 $4-)} :hooks(window): ^on ^window "% ??? *" {if ([$1]==[***]) {% $2-}{echo $1-}} ^on ^window "% ??? Highest connection count: *" {% highest connection count$(hw):$(cl) $5} :hooks(stuph?): ^addcol notify_signon cyan ^on ^notify_signon * {@__host[$encode($0)]=[$1];% $color(l notify_signon)signon$(hk): \($color(h notify_signon)$0$(hk)!$color(l notify_signon)$1$(hk)\)$(cl)} ^on #-notify_signon 515 * {^hook relay + e ::: signon: \($0!$1\)} ^addcol notify_signoff magenta ^on ^notify_signoff * {% $color(l notify_signoff)signoff$(hk): \($color(h notify_signoff)$0$(hk)${__host[$encode($0)]?[!$color(l notify_signoff)$__host[$encode($0)]]:}$(hk)\)$(cl)} ^on #-notify_signoff 515 * {^hook relay + e ::: signoff: \($0${__host[$encode($0)]?[!$__host[$encode($0)]]:}\)} :hooks(public): ^addcol public magenta ^addcol public_other green ^on ^public * {if (_hook.func.checkar($2-)) {echo $color(l public)<$color(h public)$0$color(l public)>$(cl) $2-}{echo $color(l public)<$(cl)$0$color(l public)>$(cl) $2-}} ^on ^public_other * {if (_hook.func.checkar($2-)) {echo $color(l public_other)<$color(h public_other)$0$(hk)/$(cl)$1$color(l public_other)>$(cl) $2-}{echo $color(l public_other)<$(cl)$0$(hk)/$(cl)$1$color(l public_other)>$(cl) $2-}} ^on ^public_msg * {if (_hook.func.checkar($2-)) {echo $color(l public_other)\($color(h public_other)$0$(hk)/$(cl)$1$color(l public_other)\)$(cl) $2-}{echo $color(l public_other)\($(cl)$0$(hk)/$(cl)$1$color(l public_other)\)$(cl) $2-}} ^addcol send_public black ^on ^send_public * {if ([$0] == C) {echo $color(l send_public)<$(cl)${N}$color(l send_public)>$(cl) $1-}{echo $color(l send_public)<$(cl)${N}$(hk)/$(cl)$0$color(l send_public)>$(cl) $1-}} ^on #-public 515 * {if (_hook.func.checkar($2-)) {^hook relay + p <$0/$1> $2-}{^hook relay + p <$0/$1> $2-}} ^on #-public_other 515 * {if (_hook.func.checkar($2-)) {^hook relay + p <$0/$1> $2-}{^hook relay + p <$0/$1> $2-}} ^on #-public_msg 515 * {if (_hook.func.checkar($2-)) {^hook relay + p \($0/$1\) $2-}{^hook relay + p \($0/$1\) $2-}} ^on #-send_public 515 * {^hook relay + sp <${N}/$0> $1-} :hooks(actions): ^on ^action * {if ([$1] == C) {echo $(hk)í$(hw) $0$(cl) $2-}{ echo $(hk)í$(hw) $0$(hk)/$(cl)$1 $2-}} ^on ^send_action * {if (!_temp.suppress) {if ([$0] == C) {echo $(hk)í$(hw) ${N}$(cl) $1-}{echo $(hk)í$(hw) ${N}$(hk)/$(cl)$0 $1- ^tk.addmsg $0 $tk.msglist}}} :hooks(events): ^addcol join white ^on ^join * {% $color(l join)join$(hk)\($color(h join)$1$(hk)\) \($color(h join)$0$(hk)!$color(l join)$userhost()$(hk)\)$(cl)} ^on #-join 515 * {^hook relay + e ::: join\($1\) \($0!$userhost()\)} ^addcol part cyan ^on ^leave * {% $color(l part)part$(hk)\($color(h part)$1$(hk)\) \($color(h part)$0$(hk)!$color(l part)$userhost()$(hk)\)$(cl)} ^on #-leave 515 * {^hook relay + e ::: part\($1\) \($0!$userhost()\)} ^addcol resynch magenta ^addcol mode magenta ^on ^mode * {if (match(%.% $1)) {% $color(l resynch)resynch$(hk)\($color(h resynch)$1$(hk)\)$(cl) $2- $(hk)\($color(l resynch)from$(hk)!$color(h resynch)$0$(hk)\)$(cl)}{% $color(l mode)mode$(hk)\($color(h mode)$1$(hk)\)$(cl) $2- $(hk)\($color(l mode)by$(hk)!$color(h mode)$0$(hk)\)$(cl)}} ^on #-mode 515 * {if (match(%.% $1)) {^hook relay + e ::: resynch\($1\) $2- \(from!$0\)}{^hook relay + e ::: mode\($1\) $2- \(by!$0\)}} ^addcol kick cyan ^on ^kick * {% $color(l kick)kick$(hk)\($color(h kick)$2$(hk)\)$color(l kick) $1$(hk)\($color(h kick)$0$(hk)\)$(cl) $3-} ^on #-kick 515 * {^hook relay + e ::: kick\($2\) $1\($0\) $3-} ^addcol signoff blue ^on ^channel_signoff * {% $color(l signoff)signoff$(hk)\($color(h signoff)$0$(hk)\)$(cl) $2- $(hk)\($color(l signoff)by$(hk)!$color(h signoff)$1$(hk)\)$(cl)} ^on #-channel_signoff 515 * {^hook relay + e ::: signoff\($0\) $2- \(by!$1\)} ^on ^signoff * {% $color(l signoff)signoff$(hk)\($color(h signoff)$C$(hk)\)$(cl) $1- $(hk)\($color(l signoff)by$(hk)!$color(h signoff)$0$(hk)\)$(cl)} ^on #-signoff 515 * {^hook relay + e ::: signoff\($C\) $1- \(by!$0\)} ^addcol nickname cyan ^on ^channel_nick * {% $color(l nickname)nick$(hk)\($color(h nickname)$0$(hk)\)$(cl) $2 $(hk)\($color(l nickname)by$(hk)!$color(h nickname)$1$(hk)\)$(cl)} ^on #-channel_nick 515 * {^hook relay + e ::: nick\($0\) $2 \(by!$1\)} ^addcol topic magenta ^on ^topic * {% $color(l topic)topic$(hk)\($color(h topic)$1$(hk)\)$(cl) $2- $(hk)\($color(l topic)by$(hk)!$color(h topic)$0$(hk)\)$(cl)} ^on #-topic 515 * {^hook relay + e ::: topic\($1\) $2- \(by!$0\)} ^on ^hook "quit *" {% $color(l signoff)signoff$(hk)\($color(h signoff)*$(hk)\)$(cl) $1- $(hk)\($color(l signoff)by$(hk)!$color(h signoff)${N}$(hk)\)$(cl)} :hooks(msg): ^addcol msg cyan ^on ^msg * {echo $color(h msg)$0$(hk)\($color(l msg)$userhost()$(hk)\)$(cl) $1-} ^on #-msg 515 * {^hook relay + m $0\($userhost()\) $1-} ^addcol send_msg cyan ^on ^send_msg * {echo $(hk):$(cl):$(hw)>$color(h send_msg) $0$(hk)\($color(l send_msg)*@*$(hk)\)$(cl) $1-} ^on #-send_msg 515 * {^hook relay + sm ::> $0\(*@*\) $1-} :hooks(notice): ^addcol cwall cyan ^on ^notice * {^local wallc,ii switch ($1) { (*[*]*) (*\(*\)*) {fe ($mychannels()) ii {if (!wallc) {if (match(*$ii* $1)) { @ wallc = ii}}} if (!wallc) {echo $(hk)-$(cl)$0$(hk)-$(cl) $1-}{xecho -win $winchan($wallc) $(hk)ú$color(l cwall)ú$color(h cwall)ú $(hk)<$color(l cwall)$0$color(h cwall)!$color(l cwall)$wallc$(hk)>$(cl) $2-}} (*) {echo $(hk)-$(cl)$0$(hk)-$(cl) $1-} }} ^on #-notice 515 * {^local wallz,zz switch ($1) { (*[*]*) (*\(*\)*) {fe ($mychannels()) zz {if (!wallz) {if (match(*$zz* $1)) { @ wallz = zz}}} if (!wallz) {^hook relay + n -$0- $1-}{^hook relay + cw ::: <$0!${wallz}> $2-}} (*) {^hook relay + n -$0- $1-} }} ^on ^send_notice * {echo $(hk)¯ -$(cl)$0$(hk)-$(cl) $1-} ^on #-send_notice 515 * {^hook relay + sn > -$0- $1-} ^on ^public_notice * {echo $(hk)-$(cl)$0$(hw)!$(cl)$1$(hk)-$(cl) $2-} ^on #-public_notice 515 * {^hook relay + n -$0!$1- $2-} :hooks(wallops): ^addcol wallop cyan ^on ^wallop * {echo $(hk)ú$color(l wallop)$0$(hk)\($color(h wallop)$1$(hk)\)ú$(cl) $2-} ^on #-wallop 515 * {^hook relay + w !$0\($1\)! $2-} ^on ^wallop "% % HACK: *" # ^on #-wallop 515 "% % HACK: *" # :hooks(ctcp): ^addcol ctcp_reply cyan ^on ^ctcp_reply * {% $color(l ctcp_reply)reply$(hk)\($color(h ctcp_reply)$tolower($1)$(hk)\)$(cl) ${[$1]==[PING]?trunc(3 $2)##[s]:[$2-]} $(hk)\($color(l ctcp_reply)by$(hk)!$color(h ctcp_reply)$0$(hk)\)$(cl)} ^on #-ctcp_reply 515 * {^hook relay + cr ::: reply\($tolower($1)\) ${[$1]==[PING]?trunc(3 $2):[$2-]} \(by!$0\)} ^addcol ctcp blue ^on ^ctcp * {% $color(l ctcp)ctcp$(hk)\($color(h ctcp)$1$(hk)\)$(cl) $tolower($2-) $(hk)\($color(l ctcp)by$(hk)!$color(h ctcp)$0$(hk)\)$(cl)} ^on #-ctcp 515 * {^hook relay + c ::: ctcp\($1\) $tolower($2-) \(by!$0\)} ^on ^ctcp "% % ACTION *" # ^on #-ctcp 515 "% % ACTION *" # :hooks(dcc chat): ^addcol dcc_chat cyan ^on ^dcc_chat * {echo $(hk)=$color(l dcc_chat)$0$(hk)=$(cl) $1-} ^addcol send_dcc_chat cyan ^on ^send_dcc_chat * {echo $(hk):$(cl):$(hw)>$(hk) =$color(l dcc_chat)$0$(hk)=$(cl) $1-} ^on #-dcc_chat 515 * {^hook relay + d =$0= $1-} ^on #-send_dcc_chat 515 * {^hook relay + sd ::> =$0= $1-} alias _cnt {@ function_return = isdigit($right(1 $0)) != 1 ? _country[$0] ? tolower($_country[$0]) : [dns spoof] : [unresolved]} :hooks(whois echo): ^addcol whois cyan ^on ^hook "whois header" {echo $(hk)ÚÄÄÄÄÄ$(_ass.color[$_ass.evcol[whois]][l])Ä$(hk)ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ$(_ass.color[$_ass.evcol[whois]][l])ÄÄ$(hk)ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ$(_ass.color[$_ass.evcol[whois]][l])Ä$(hk)ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-$(cl) ^set continued_line $(hk)³ $(cl)} ^on ^hook "whois userhost *" {echo $(hk)³$(hk) [$(hw)$[10]2$(hk)] $(hw)ú$(cl)ú$(hk)ú \($(_ass.color[$_ass.evcol[whois]][l])$3$(_ass.color[$_ass.evcol[whois]][h])@$(_ass.color[$_ass.evcol[whois]][l])$4$(hk)\)$(cl) $(hk)[$(_ass.color[$_ass.evcol[whois]][l])$_cnt($after(-1 . $4))$(hk)]$(cl) $5- ^set continued_line $(hk)³ $(cl)} ^on ^hook "whois realname *" {echo $(hk)³ [$(_ass.color[$_ass.evcol[whois]][h])r$(_ass.color[$_ass.evcol[whois]][l])ealname $(hk)] ú$(cl)ú$(hw)ú$(cl) $2- ^set continued_line $(hk)³ $(cl)} ^on ^hook "whois channels *" {echo $(hk)³ [$(_ass.color[$_ass.evcol[whois]][h])c$(_ass.color[$_ass.evcol[whois]][l])hannels $(hk)] ú$(cl)ú$(hw)ú$(cl) $2- ^set continued_line $(_ass.color[$_ass.evcol[whois]][l])³ $(cl)} ^on ^hook "whois idle *" {echo $(_ass.color[$_ass.evcol[whois]][l])³$(hk) [$(_ass.color[$_ass.evcol[whois]][h])i$(_ass.color[$_ass.evcol[whois]][l])dle $(hk)] ú$(cl)ú$(hw)ú$(cl) $2- ^set continued_line $(_ass.color[$_ass.evcol[whois]][l])³ $(cl)} ^on ^hook "whois away *" {echo $(_ass.color[$_ass.evcol[whois]][l])³$(hk) [$(_ass.color[$_ass.evcol[whois]][h])a$(_ass.color[$_ass.evcol[whois]][l])way $(hk)] ú$(cl)ú$(hw)ú$(cl) $2- ^set continued_line $(_ass.color[$_ass.evcol[whois]][l])³ $(cl)} ^on ^hook "whois server *" {echo $(_ass.color[$_ass.evcol[whois]][l])³$(hk) [$(_ass.color[$_ass.evcol[whois]][h])s$(_ass.color[$_ass.evcol[whois]][l])erver $(hk)] ú$(cl)ú$(hw)ú$(cl) $2- ^set continued_line $(_ass.color[$_ass.evcol[whois]][l])³ $(cl)} ^on ^hook "whois footer" {echo $(_ass.color[$_ass.evcol[whois]][h])ÀÄ-$(_ass.color[$_ass.evcol[whois]][l])-$(hk)úú $(_ass.color[$_ass.evcol[whois]][l])ú $(hk)ú-Ä$(_ass.color[$_ass.evcol[whois]][l])-$(hk)-Ä$(_ass.color[$_ass.evcol[whois]][l])ÄÄ$(_ass.color[$_ass.evcol[whois]][h])ÄÄÄÄ$(_ass.color[$_ass.evcol[whois]][l])Ä$(_ass.color[$_ass.evcol[whois]][h])ÄÄÄ$(_ass.color[$_ass.evcol[whois]][l])--ÄÄ$(_ass.color[$_ass.evcol[whois]][h])Ä$(_ass.color[$_ass.evcol[whois]][l])ÄÄÄÄ$(hk)Ä$(_ass.color[$_ass.evcol[whois]][l])ÄÄÄ$(_ass.color[$_ass.evcol[whois]][h])ÄÄÄÄ$(_ass.color[$_ass.evcol[whois]][l])Ä$(_ass.color[$_ass.evcol[whois]][h])ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-$(cl) ^set continued_line \ \ \ ÿ } ^on ^hook "user_away *" { if (!_temp.awayshown[$encode($1)] && [$2-]!=_awaymsg[$encode($1)]) { @ _temp.awayshown[$encode($1)] = 1 @ _awaymsg[$encode($1)] = [$2-] % $(hk)\($(hw)a$(cl)way$(hk)/$(hw)$1$(hk)\)$(cl) $2- ^timer 120 ^assign -_temp.awayshown[$encode($1)] }} :hooks(whois echoing): ^on ^301 * {if (_ass.whois.nick) {@ _ass.whois.away = [$1-]}{^hook user_away $0 $1-}} ^on ^313 * {@ _ass.whois.oper = [$(hk)\($(cl)irc$(hw)/$(cl)op$(hk)\)$(cl)]} ^on ^311 * {@ _ass.whois.nick = [$1];@ _ass.whois.user = [$2] @ _ass.whois.host = [$3];@ _ass.whois.name = [$5-]} ^on ^319 * {@ push(_ass.whois.channels $2-)} ^on ^312 * {@ _ass.whois.server = [$2] if (match([%] $3)) {@ _ass.whois.sinfo = [$4-]}{@ _ass.whois.sinfo = [$3-]}} ^on ^317 * {@ _ass.whois.idle = tdiff4($2)} ^on ^318 * {if (_ass.whois.nick) { ^hook whois header ^hook whois userhost $_ass.whois.nick $_ass.whois.user $_ass.whois.host $_ass.whois.oper ^hook whois realname $_ass.whois.name if (_ass.whois.channels) {^hook whois channels $_ass.whois.channels} if (_ass.whois.away) {^hook whois away $_ass.whois.away} ^hook whois server $_ass.whois.server $(hk)\($(cl)${_ass.whois.sinfo}$(hk)\)$(cl) if (_ass.whois.idle) {^hook whois idle $_ass.whois.idle} ^hook whois footer foreach _ass.whois _temp.ii {^assign -_ass.whois.$_temp.ii}}} :relay system: #^on ^hook "relay + *" { #@ setitem(relay.$2 $numitems(relay.$2) $3-) #if (numitems(relay.$2)>10) {@ delitem(relay.$2 0)} #} ^on ^hook "relay + *" { @ _relay.cached[$2] = _relay.cached[$2] + 1 if (_relay.cached[$2] > 10) {^hook relay - $2} @ _relay.text[$2][$_relay.cached[$2]] = [$3-] } ^on ^hook "relay - *" { @ _relay.offset[$2] = _relay.offset[$2] + 1 ^assign -_relay.text[$2][$_relay.cached[$2]] } @ _relay.types = [m sm n sn c cr d sd e w p sp cw] @ _relay.acts = [-m -k -t -p -cw] @ _relay.acts.args = [-m -k] alias _relay.getstack { if (match(-s $*)) {@ function_return = 1}{@ function_return = 0} } alias _relay.getflag { @ _temp.v = -1 fe ($*) _temp.c { if (_temp.v == -1) {@ _temp.v = match($_temp.c $_relay.acts) - 1} } if (_temp.v == -1) {@ _temp.v = 3} @ function_return = word($_temp.v $_relay.acts) ^assign -_temp.v;^assign -_temp.c} alias _relay.getnick { @ _temp.v = -1 fe ($*) _temp.c { if (_temp.v == -1) {@ _temp.v = match($_temp.c $_relay.acts.args) - 1} } @ _temp.x = word($_temp.v $_relay.acts.args) if (_temp.x) {@ function_return = word($match($_temp.x $*) $*)} ^assign -_temp.v;^assign -_temp.c;^assign -_temp.x} alias _relay.getnum {^local _temp. fe ($*) _temp.w { if (left(1 $_temp.w)==[-]) {@ _temp.dig = right(${strlen($_temp.w)-1} $_temp.w) if (isdigit($_temp.dig)) {@ _temp.re = _temp.w}} } if (!_temp.re) {@ _temp.re = 0}{@ _temp.re = (-1 * _temp.re)} @ function_return = _temp.re} ^on ^hook "do_relay -m *" {^quote privmsg $2 :$3-;echo $(hk):$(cl):$(hw)>$color(h send_msg) $2$(hk)\($color(l msg)*@*$(hk)\)$(cl) $3-;^tk.addmsg $2 $tk.msglist} ^on ^hook "do_relay -k *" {^k $2 $3-} ^on ^hook "do_relay -t *" {^t $2-} ^on ^hook "do_relay -p *" {echo $color(l send_public)<$(cl)${N}$color(l send_public)>$(cl) $2-;^quote privmsg $C :$2-} ^on ^hook "do_relay -cw *" {^wallmsg $2-} alias _orb.relay {^local _temp. if (![$0]||!match($0 $_relay.types)) {_orb.relay.usage}{ @ _temp.args = [$1-] @ _temp.type = _relay.getflag($_temp.args) @ _temp.nick = _relay.getnick($_temp.args) @ _temp.stack = _relay.getstack($_temp.args) @ _temp.num = _relay.getnum($_temp.args) if (_temp.stack) {if (_temp.num >= _relay.cached[$0]) {@ _temp.num = _relay.cached[$0] - 1} @ _temp.start = _relay.cached[$0] - _temp.num for (@ _temp.cnt = _temp.start, _temp.cnt <= _relay.cached[$0], @ _temp.cnt = _temp.cnt + 1) { if (_temp.nick) {^hook do_relay $_temp.type $_temp.nick $_relay.text[$0][$_temp.cnt]} {^hook do_relay $_temp.type $_relay.text[$0][$_temp.cnt]}}} {if (_temp.num >= _relay.cached[$0]) {@ _temp.num = _relay.cached[$0] - 1} @ _temp.cnt = _relay.cached[$0] - _temp.num if (_temp.nick) {^hook do_relay $_temp.type $_temp.nick $_relay.text[$0][$_temp.cnt]} {^hook do_relay $_temp.type $_relay.text[$0][$_temp.cnt]}}} } alias _orb.lbuff {^local _temp. if (![$0]||!match($0 $_relay.types)) {_orb.lbuff.usage}{ @ _temp.start = _relay.offset[$0] + 1 @ _temp.bleh = (0 - _relay.cached[$0]) + 1 for (@_temp.g=_temp.start, _temp.g<=_relay.cached[$0], @_temp.g++) { @ _temp.nn = _temp.bleh + (_temp.g - _temp.start) + _relay.offset[$0] if (_temp.nn > 0) {@ _temp.n = [-]##_temp.nn}{@ _temp.n = _temp.nn} % $(hk)[$(hw)$[-3]_temp.n$(hk)]$(cl) $sar(gÿÿ[ÿ$_relay.text[$0][$_temp.g]) } % use /rel$0 $(hk)[$(hw)#$(hk)]$(cl) to relay. @ _temp.nn = _temp.n = _temp.g = _temp.start = _temp.bleh = [] }} :settings bitz: alias usermode {if (![$0]) {% default usermode is currently: $_ass.um} {@ _ass.um = [$0];% default usermode is now: $_ass.um}} alias ncl { if (![$0]) { if (!_ass.nc.l) {% left nick completion string is currently disabled.} {% left nick completion string is set to: ${_ass.nc.l}} _orb.ncl.usage} {if ([$0]==[on] && ![$1]) {_orb.ncl.usage} {if ([$0]==[off]) {^assign -_ass.nc.l % left completion string is now disabled.}{ if ([$0]==[on]) {@ _ass.nc.l = [$1] % left nick completion string is now: ${_ass.nc.l}}}{_orb.ncl.usage}} }} alias ncr { if (![$0]) { if (!_ass.nc.r) {% right nick completion string is currently disabled.} {% right nick completion string is set to: ${_ass.nc.r}} _orb.ncr.usage} {if ([$0]==[on] && ![$1]) {_orb.ncr.usage} {if ([$0]==[off]) {^assign -_ass.nc.r % right completion string is now disabled.}{ if ([$0]==[on]) {@ _ass.nc.r = [$1] % right nick completion string is now: ${_ass.nc.r}}}{_orb.ncr.usage}} }} :nickcomp: alias _func.nickcomp.nick {^local _temp. @ _temp.np = match($0 $_orb.cus($C)) ? match($0 $_orb.cus($C)) : match($0* $_orb.cus($C)) if (_temp.np) {@ _temp.frw = word(${_temp.np-1} $_orb.cus($C))} @ function_return = _temp.frw} alias _func.fixnick { if (_func.nickcomp.nick($0)) { @ function_return = _ass.nc.l ## _func.nickcomp.nick($0) ## _ass.nc.r }{@ function_return = [$0:]} } ^on ^input * { if (match(%: $0)) { ^sendline $_func.fixnick($_func.before(: $0)) $1- }{^sendline $*}} :usage aliases: alias %u {% usage$(hw):$(cl) $*} alias _orb.join.usage {%u /join #channel} alias _orb.mode.usage {%u /mode $(hk)[$(cl)#channel$(hk)]$(cl) +-modes $(hk)[$(cl)args$(hk)]$(cl)} alias _orb.kick.usage {%u /kick $(hk)[$(cl)#channel$(hk)]$(cl) nick $(hk)[$(cl)reason$(hk)]$(cl)} alias _orb.nick.usage {%u /nick newnick} alias _orb.topic.usage {%u /topic $(hk)[$(cl)#channel$(hk)]$(cl) topic} alias _orb.relay.usage {%u /rel[c|cr|d|sd|m|sm|n|sn|e|w|p|sp|cw] [-m nick|-k nick|-t]} alias _orb.lbuff.usage {%u /l[c|cr|d|sd|m|sm|n|sn|e|w|p|sp|cw]} alias _orb.ncl.usage {%u /ncl $(hk)[$(cl)on$(hw)|$(cl)off$(hk)] [$(cl)string$(hk)]$(cl)} alias _orb.ncr.usage {%u /ncr $(hk)[$(cl)on$(hw)|$(cl)off$(hk)] [$(cl)string$(hk)]$(cl)} :aliases: alias lm _orb.lbuff m alias lsm _orb.lbuff sm alias lp _orb.lbuff p alias lsp _orb.lbuff sp alias ln _orb.lbuff n alias lsn _orb.lbuff sn alias lc _orb.lbuff c alias lcr _orb.lbuff cr alias ld _orb.lbuff d alias lsd _orb.lbuff sd alias le _orb.lbuff e alias lw _orb.lbuff w alias lcw _orb.lbuff cw alias relcw _orb.relay cw alias relm _orb.relay m alias relsm _orb.relay sm alias relp _orb.relay p alias relsp _orb.relay sp alias reln _orb.relay n alias relsn _orb.relay sn alias reld _orb.relay d alias relsd _orb.relay sd alias relc _orb.relay c alias relcr _orb.relay cr alias rele _orb.relay e alias relw _orb.relay w alias wn _window.new alias ws _window.swap alias wk _window.kill alias wj _window.join alias wlk _window.lk alias m msg alias n notice alias j join alias l leave alias c mode alias k kick alias t topic alias quit _serv.quit alias ping _serv.ping alias ver _serv.ver alias umode _serv.umode alias topic _serv.topic alias untopic _serv.untopic alias mode _serv.mode alias leave _serv.leave alias join _serv.join alias kick _serv.kick alias nick _serv.nick alias wi whois alias wii {whois $0 $0} alias sv _orb.sver alias sver _orb.sver alias op _serv.op alias deop _serv.deop alias v _serv.v alias dv _serv.dv alias mass _serv.mass alias mop {_serv.mass o} alias mdop {_serv.mass do} alias mv {_serv.mass v} alias mdv {_serv.mass dv} :code: ^on ^raw_irc "% PRIVMSG % :VERSION" { ^quote notice $_func.before(! $0) :VERSION epic$sar(g/pre/r/$after(C $J))+\(orb!$(_ass.orbver)\).. \(${client_information}\) % $color(l ctcp)ctcp$(hk)\($color(h ctcp)$2$(hk)\)$(cl) version $(hk)\($color(l ctcp)by$(hk)!$color(h ctcp)$_func.before(! $0)$(hk)\)$(cl) ^hook relay + c ::: ctcp\($2\) version \(by!$_func.before(! $0)\) } alias _orb.sver {^local _sver @ _sver.string = [is using.. epic$sar(g/pre/r/$after(C $J))+\(orb!]##_ass.orbver##[\)] if ([$0]) {des $0 $_sver.string}{me $_sver.string} } alias _serv.mmode {^local _temp.,ii fe ($3-) _temp.nn1 _temp.nn2 _temp.nn3 _temp.nn4 { @ _temp.mc++ @ _temp.mode[$_temp.mc] #= [$2] @ _temp.mode[$_temp.mc] #= _temp.nn1 ? [$1] : @ _temp.mode[$_temp.mc] #= _temp.nn2 ? [$1] : @ _temp.mode[$_temp.mc] #= _temp.nn3 ? [$1] : @ _temp.mode[$_temp.mc] #= _temp.nn4 ? [$1] : @ _temp.nn1 ? push(_temp.mode[$_temp.mc] $_temp.nn1) : @ _temp.nn2 ? push(_temp.mode[$_temp.mc] $_temp.nn2) : @ _temp.nn3 ? push(_temp.mode[$_temp.mc] $_temp.nn3) : @ _temp.nn4 ? push(_temp.mode[$_temp.mc] $_temp.nn4) : } for (@ii=1,ii<=_temp.mc,@ii++) {^quote mode $0 $_temp.mode[$ii]} } alias wall _serv.onot alias wallmsg wall alias invite _serv.inv alias _serv.inv {//invite ${ischannel($0)?[$1]:[$0]} ${ischannel($0)?[$0]:C}} alias _serv.gnot {^local ii. fe ($before(, $*)) ii.1 ii.2 ii.3 ii.4 ii.5 ii.6 ii.7 ii.8 ii.9 { ^quote notice $(ii.1),$(ii.2),$(ii.3),$(ii.4),$(ii.5),$(ii.6),$(ii.7),$(ii.8),$(ii.9) :$after(, $*)}} alias _serv.onot {^local onot. @ onot.names = tr(ÿ@ÿÿ$pattern(@* $_orb.channel())) @ onot.count = [$#onot.names] * 100 @ onot.temp = _orb.channel() @ onot.temp = [$#onot.temp] ^stack push set floating_point_math;^set floating_point_math on @ onot.temp = trunc(1 ${onot.count / 100}) ^stack pop set floating_point_math ^_serv.gnot $(onot.names),\(+o\($(onot.temp)%\)!$(C)\) $*} alias _serv.op {^_serv.mmode $C o + $*} alias _serv.deop {^_serv.mmode $C o - $*} alias _serv.v {^_serv.mmode $C v + $*} alias _serv.dv {^_serv.mmode $C v - $*} alias _serv.mass {switch ($0) { (o) {_serv.op $tr(/.//$filter(?$N $pattern(.* $_orb.channel())))} (do) {_serv.deop $tr(/@//$filter(?$N $pattern(@* $_orb.channel())))} (v) {_serv.v $tr(/.//$filter(?$N $pattern(.* $_orb.channel())))} (dv) {_serv.dv $tr(/+//$filter(?$N $pattern(+* $_orb.channel())))} (*) {%u /mass $(hk)[$(cl)o$(hw)|$(cl)do$(hw)|$(cl)v$(hw)|$(cl)dv$(hw)|$(cl)m$(hk)]$(cl)} }} alias _serv.join {if ([$0]) {if (_func.ischan($0)) {//join $*}{//join #$*}}{_orb.join.usage}} alias _serv.leave {if ([$0]) {if (_func.ischan($0)) {//part $*}{//part #$*}}{quote part :$C}} alias _serv.mode {if ([$0]) {if (_func.ischan($0)) {quote mode $0 $1-}{quote mode $C $0-}}{_orb.mode.usage}} alias _serv.umode {quote mode $N :$*} alias _serv.topic {if (_func.ischan($0)) {if ([$1]) {quote topic $0 :$1-}{quote topic $0}}{if ([$1]) {quote topic $C :$0-}{quote topic $C}}} alias _serv.untopic {if (_func.ischan($0)) {quote topic $0 :}{quote topic $C :}} alias _serv.kick {if ([$0]) {if (_func.ischan($0)) {if ([$1]) {quote kick $0 $1 :$2-}{_orb.kick.usage}}{if ([$0]) {quote kick $C $0 :$1-}{_orb.kick.usage}}}{_orb.kick.usage}} alias _serv.quit {if ([$*]) {^hook quit $* $_ass.orblogo;//quit $* $_ass.orblogo}{^hook quit hi. $_ass.orblogo;//quit hi. $_ass.orblogo}} alias _serv.nick {if ([$0]) {^hook nick $N $0;quote nick :$0}{_orb.nick.usage}} alias _serv.ver {if (![$0]) {ctcp $C version}{ctcp $0 version}} alias _serv.ping {if (![$0]) {//ping $C}{//ping $0}} alias _window.new {^window new double on level none hide} alias _window.swap {^window swap $0 ^hook window_switch} alias _window.kill {^window kill} alias _window.new {^window new;@_temp.win=winnum() ^window hide;^ws $_temp.win;^window double on;^assign -_temp.win} alias _window.join {^_window.new;^join $*} alias _window.lk {part $*;^window kill} :logger: alias flags {@_temp.f=[$2] fec ($0) _temp.c { if (_temp.c==[+]) {@_temp.p=[+]} if (_temp.c==[-]) {@_temp.p=[-]} if (_temp.p==[+]) {if (!match(*$_temp.c* $_temp.f)&&match(*$_temp.c* $1)) {@_temp.f=[${_temp.f}${_temp.c}]}} if (_temp.p==[-]) {if (match(*$_temp.c* $_temp.f)) {@_temp.f=strip($_c $_f)}} } @function_return=_temp.f ^assign -_temp.f;^assign -_temp.p;^assign -_temp.c } ^on ^hook "log % *" { if (match(*$1* $_ass.logflags)) {^hook writelog $2-} } ^on ^hook "openlog" { if (logstat != [open]) { @ logstat = [open] ^exec -name log cat > ~/.orb.log ^exec -in %log ::: Now logging to ~/.orb.log... \($Z/$tolower($word(1 $stime($time())) $word(2 $stime($time())))\) }} ^on ^hook "closelog" { if (logstat == [open]) { @ logstat = [closed] ^exec -in %log ::: Closed log... \($Z/$tolower($word(1 $stime($time())) $word(2 $stime($time())))\) ^exec -close %log }} ^on ^hook "writelog *" { if (logstat == [open]) {^exec -in %log $1-} } alias log { if (![$0]) {% currently logging$(hw):$(cl) $_away.flf($_ass.logflags) %u /log +-acmnp} {@_ass.logflags=flags($0 acmnp $_ass.logflags) % now logging$(hw):$(cl) $_ass.logflags}} @ _ass.logflags = [m] alias or.ftime {@function_return=[$1-2 - $3]} :away system: alias email { if (![$0]) { if (!or.email) {% no e-mail is set.}{% e-mail is currently set to: $or.email} }{@ or.email = [$0] % e-mail now set to: $or.email}} ^on #-msg 5666 * { if (!ax.msgd[$encode($0)]&&_ass.awayreason) { @ ax.msgd[$encode($0)] = 1 ^notice $0 \(gone since $tolower($or.ftime($stime($_ass.awaytime)))\)${or.email?[ \(e-mail\: $(or.email)\)]:} ^timer 150 ^assign -ax.msgd[$encode($0)] }} alias mme {echo $(hk)í$(hw) ${N}$(hk)/$(cl)* $* @_temp.suppress=1 fe ($mychannels()) _temp.c {^describe $_temp.c $*} ^assign -_temp.suppress} alias _away.update {if (_ass.awayreason) {^quote away :\($tdiff3(${time()-_ass.awaytime})$fix.xx($_away.fixlog($_ass.logflags))\) ${_ass.awayreason} timer 7 _away.update}} alias _away.flf {if ([$0]) {@ function_return = [+$0]}{@ function_return = [-]}} alias _away.fixlog {if ([$0]) {@ function_return = [on]}{@ function_return = [off]}} alias fix.xx {@ function_return = [$0] == [on] ? [+l] :} alias _away.fix {@ function_return = [$0] == [on] ? [ \(+l\)] :} alias _away.public {^mme is gone. $*$_away.fix($_away.fixlog($_ass.logflags))} alias _away.publicback {^mme is back. $* \($tdiff3(${time()-_ass.awaytime})\)} alias away { @ _ass.awayreason = [$*] if (!_ass.awayreason) {@ _ass.awayreason = [bye.]} @ _ass.awaytime = time() _away.public $_ass.awayreason _away.update} alias back { if (_ass.awayreason) { @ _ass.backreason = [$*] if (!_ass.backreason) {@ _ass.backreason = [hi.]} _away.publicback $_ass.backreason ^assign -_ass.awayreason ^assign -_ass.awaytime ^quote away }} alias ist {^set $0 $xparse($1-)} :dcc count bitz: @ _d.gets = 0 @ _d.sends = 0 if (!isdigit($left(1 $status_user))) {^set status_user 0} if (!isdigit($left(1 $status_user1))) {^set status_user1 0} ^on #-dcc_lost 1621 "% GET % % % COMPLETE" {@ _d.gets++;^set status_user3 ${_d.gets} } ^on #-dcc_lost 1621 "% SEND % % % COMPLETE" {@ _d.sends++;^set status_user ${_d.sends} } :lagbitz: do set status_user2 $parselag(??) alias _orb.relag {@ _ass.rlt = time() quote ping $S} ^on ^raw_irc "% PONG % %" {ist status_user2 $parselag($tdiff4(${time()-_ass.rlt})) ^assign -_ass.rlt ^timer 15 _orb.relag} _orb.relag :statbar: ^addcol status cyan @ sbar = 1 alias sbar {if (![$0]) { %u /sbar [#] $(hk)\($(cl)maximum is ${xx.statbar-1}$(hk)\)$(cl)}{ if ([$0]<=xx.statbar) {@ sbar = [$0] upd.sbar % statbar is now set to: $(hk)[$(cl)$(sbar)$(hk)]$(cl)}{% statbar out of range $(hk)\($(cl)maximum is ${xx.statbar-1}$(hk)\)$(cl)}}} alias upd.sbar {foreach statbar.$(sbar) ii { ist $decode($ii) $decode($statbar[$sbar][$ii]) }} alias parselag {^local _z @_z=xparse($decode($statbar_s[$(sbar)][$encode(lag)])) @_z=sar(gÿ%lagÿ$0ÿ$(_z)) @function_return=_z} ^_sb.set lag : |K(|Cl|cag|K/|W%lag|K)|N ^_sb.add status_no_repeat :on ^_sb.add status_notify : |cact|K/|W%F|N ^_sb.add status_mail : |cmail|K/|W%M|N ^_sb.add status_clock :|K(|c%T|K)|N ^_sb.add status_chanop :|C@|N ^_sb.add status_oper :|W*|N ^_sb.add status_umode : |K(|C+|c%#|K)|N ^_sb.add status_mode : |K(|C+|c%+|K)|N ^_sb.add status_channel : |con |W%C|N ^_sb.add status_format1 :|CÚ|cÄ|K-[|N%*%@|c%N|N%#%C%+|K] %> |N%2|KÄÄÄ|c¿ |N ^_sb.add status_format2 :|cÀ|KÄ-|N|K(|N%F%M|K)|N%1 %> |K(|Cg|cets|K/|W%3 |Cs|cends|K/|W%U|K) |N%T|KÄÄ|cÄ|CÙ |N ^_sb.add -input_prompt :! ^_sb.lock ^_sb.set lag : |K(|clag|C!|c%lag|K)|N ^_sb.add status_no_repeat :on ^_sb.add status_umode :|K!|C+|c%#|N ^_sb.add status_mode :|K(|C+|c%+|K)|N ^_sb.add status_channel :|K..|con |W%C|N ^_sb.add status_oper :|K*|N ^_sb.add status_chanop :|c@|N ^_sb.add status_clock :|K(|W%T|K)|N ^_sb.add status_notify : |K(|cact|C!|c%F|K)|N ^_sb.add status_format1 :|CÚ|cÄ|KÄ %@%*|W%N|N%# |cÄÄ|CÄÄ|WÄÄ|CÄ|cÄ-|K-ú|N %> %F%T ^_sb.add status_format2 :|cÀ|KÄ|N %C%+ %> |K(|cgets|C!|c%3 sends|C!|c%U|K)|N%2 ^_sb.add -input_prompt :! ^_sb.lock ^_sb.set lag :|K[|clag |W%lag|K]|N ^_sb.add status_no_repeat :off ^_sb.add status_clock :|K[|c%T|K]|N ^_sb.add status_oper :|K*|N ^_sb.add status_chanop :|C@|N ^_sb.add status_channel : |con |C%C|N ^_sb.add status_umode :|K(|C+|c%#|K)|N ^_sb.add status_mode :|K(|C+|c%+|K)|N ^_sb.add status_notify :|K(|Nact |W%F|K)|N ^_sb.add status_mail :|KÄ(|Nmail |W%M|K)|N ^_sb.add status_format1 :|KÄ|cÄ|C¿|WÚ|CÄ|cÄ|KÄ%2|KÄ|N%T|KÄ%>Ä[|cgets|K(|W%3|K)|c sends|K(|W%U|K)]Ä |N ^_sb.add status_format2 :|cÄ|CÄ|WÙ|CÀ|cÄ|KÄÄ[|N%*%@|c%N|N%#%C%+|K]Ä%>Ä|N%F%M|KÄ |N ^_sb.add -input_prompt :! ^_sb.lock ^_sb.set lag :lag(%lag) ^_sb.add status_no_repeat :on ^_sb.add status_clock :(%T) ^_sb.add status_chanop :@ ^_sb.add status_channel : on(%C) ^_sb.add status_umode : (+%#) ^_sb.add status_mode : (+%+) ^_sb.add status_notify : act(%F) ^_sb.add status_mail : mail(%M) ^_sb.add status_oper :* ^_sb.add -input_prompt :! ^_sb.add status_format1 ::> gets(%3) sends(%U) %> %T%M ^_sb.add status_format2 ::> %*%@%N%#%C%+ %> %2%F ^_sb.lock ^_sb.set lag : |Cl|cag|K(|c%lag|K) |N ^_sb.add status_no_repeat :off ^_sb.add status_clock : |K(|c%T|K) |N ^_sb.add status_chanop :|C@|N ^_sb.add status_channel :|c on |C%C|N ^_sb.add status_umode : |K(|C+|c%#|K)|N ^_sb.add status_mode : |K(|C+|c%+|K)|N ^_sb.add status_notify :|KÄ |Ca|cct|K(|W%F|K) Ä|N ^_sb.add status_mail :|KÄ |Cm|cail|K(|W%M|K) Ä|N ^_sb.add status_oper :|W*|N ^_sb.add -input_prompt :! ^_sb.add status_format1 :|CÚ|cÄ|K-|N %*%@|c%N|N%#%C%+ |KÄ%>Ä|N%M%F|K¿|N ^_sb.add status_format2 :|cÀ|KÄ |Cg|cets|K(|c%3|K) |Cs|cends|K(|c%U|K) Ä%>Ä|N%2%T|CÄ|cÙ|N ^_sb.lock :nslookup bitz: alias _orb.getns { if (match(%.% $0)) { @ function_return = isnumber($before(. $0)) ? iptoname($0) : nametoip($0) }} alias nslookup {^local _temp. if (!match(%.% $0)) {userhost $0 -cmd if (1) { if ([$3]==[]) {% $(hk)\($(lc)$0$(hk)\)$(cl) user not on IRC.} {% checking server... @ _temp.tt = [$4] @ _temp.x = _orb.getns($_temp.tt) if (_temp.x) { @ _temp.ip = isnumber($before(. $_orb.getns($_temp.tt))) ? _orb.getns($_temp.tt) : _orb.getns($_orb.getns($_temp.tt)) @ _temp.host = !isnumber($before(. $_orb.getns($_temp.tt))) ? _orb.getns($_temp.tt) : _orb.getns($_orb.getns($_temp.tt)) } % ${_temp.x ? [$_temp.tt is $_temp.host $(hk)\($(cl)$_temp.ip$(hk)\)$(cl)] : [$(hk)\($(lc)$_temp.tt$(hk)\)$(lc) host does not resolve.]} ^hook relay + e ::: ${_temp.x ? [$_temp.tt is $_temp.host \($(_temp.ip)\)] : [\($(_temp.tt)\) host does not resolve.]}}}} {% checking server... @ _temp.tt = [$0] @ _temp.x = _orb.getns($_temp.tt) if (_temp.x) { @ _temp.ip = isnumber($before(. $_orb.getns($_temp.tt))) ? _orb.getns($_temp.tt) : _orb.getns($_orb.getns($_temp.tt)) @ _temp.host = !isnumber($before(. $_orb.getns($_temp.tt))) ? _orb.getns($_temp.tt) : _orb.getns($_orb.getns($_temp.tt)) } % ${_temp.x ? [$_temp.tt is $_temp.host $(hk)\($(cl)$_temp.ip$(hk)\)$(cl)] : [$(hk)\($(lc)$_temp.tt$(hk)\)$(cl) host does not resolve.]} ^hook relay + e ::: ${_temp.x ? [$_temp.tt is $_temp.host \($(_temp.ip)\)] : [\($(_temp.tt)\) host does not resolve.]}} } alias _func.charcount {^local _temp. @ _temp.y = [$1-] @ _temp.z = tr(ÿ$0ÿÿ$1-) @ _temp.y = strlen($_temp.y) @ _temp.z = strlen($_temp.z) @ function_return = _temp.y - _temp.z} alias _func.hostmask { switch ($isnumber($after(-1 . $0))) { (0) {@ function_return = after(-2 . $0) ? [*.] ## after(-2 . $0) : [$0]} (1) {@ function_return = before(-1 . $0) ## [.*]} }} alias _func.uhmask { switch ($left(1 $0)) { (~) {@ function_return = [*!*] ## tr(/~//$before(1 @ $0)) ## [@] ## _func.hostmask($after(1 @ $0))} (*) {@ function_return = [*!] ## before(1 @ $0) ## [@] ## _func.hostmask($after(1 @ $0))} }} alias _func.screw {^local _asstmp. @ _asstmp.z = _func.uhmask($*) fec ($_asstmp.z) _asstmp.ii { if (!match(${_asstmp.ii} \@ \* \! \.)) { @ srand($time());@ _asstmp.x = rand(2) switch ($_asstmp.x) {(0) {@ _asstmp.return #= _asstmp.ii} (1) {@ _asstmp.return #= [?]}} }{@ _asstmp.return #= _asstmp.ii}} @ function_return = _asstmp.return} alias uhmask {if (_ass.screwban == [on]) {@ function_return = _func.screw($*)}{ @ function_return = _func.uhmask($*)}} alias ban {if (userhost($0)==[@]) { userhost $0 -cmd if ([$3]!=[]) {^mode $C +b $uhmask($3@$4)}{ % unknown nick.}}{^mode $C +b $uhmask($userhost($0))}} alias unban {if (userhost($0)==[@]) { userhost $0 -cmd if ([$3]!=[]) {^mode $C -b $uhmask($3@$4)}{ % unknown nick.}}{^mode $C -b $uhmask($userhost($0))}} alias toggle { @$before(1 , $*)=after(-1 , $*) % $after(1 , $before(-1 , $*)) has been toggled$(hw):$(hk) \($(cl)$($before(1 , $*))$(hk)\)$(cl) } alias kb {^ban $0 ^kick $C $0 $1-} alias bk kb @ _ass.screwban = [off] alias screwban { if ([$0]&&match($0 on off)) {^toggle _ass.screwban,screwban,$0} {^toggle _ass.screwban,screwban,${_ass.screwban==[off]?[on]:[off]}} } @ xx.bans = [0] alias fixsize {^local _size ^stack push set floating_point_math ^set floating_point_math on @ _size = [$0];if (!_size) {@ function_return = [0b]} if (_size<1000) {@ function_return = _size ## [b]} if (_size>=1000&&_size<1000000) {@ function_return = trunc(2 ${_size / 1024}) ## [kb]} if (_size>=1000000) {@ function_return = trunc(2 ${_size / 1048576}) ## [mb]} ^stack pop set floating_point_math} alias dcc {if (![$*]) {//dcc;^hook dcc_foot}{//dcc $*}} ^addcol dcc_list cyan alias respout {@function_return=[$*]} ^on ^dcc_list "*" {^local elt,kb,kbps,tleft,tleftkb #($0=type $2=nick $3=status $4=start time $5=total size $6=sent $7=filename) ^stack push set floating_point_math ^set floating_point_math on @elt=time()-[$4] @kb=trunc(2 ${[$6]/1024}) @kbps=trunc(2 ${kb/elt}) @tleft=[$5]-[$6] @tleftkb=trunc(2 ${tleft/1024}) @tmleft=[$6]>0?tdiffs(${before(. ${tleftkb/kbps})?before(. ${tleftkb/kbps}):tleftkb/kbps}):[] @dccs++ ^set floating_point_math off % $color(l dcc_list)³ $(hk)[$(hw)$[-2]dccs$(hk)] $color(l dcc_list)$[-4]tolower($0)$(hk)\($color(h dcc_list)$[9]2$(hk)\) \($color(l dcc_list)$[8]tolower($3)$(hk)\) \($color(l dcc_list)$[-8]fixsize($6)$color(h dcc_list)/$color(l dcc_list)$[-8]fixsize($5)$(hk)ú$(hw)$[-3]respout(${([$6]*100)/[$5]})$(hk)%\)$(cl) if ([$3]==[active]) {% $color(l dcc_list)³ $color(h dcc_list)$[-6]kbps $color(l dcc_list)kb$color(h dcc_list)/$color(l dcc_list)s$(hk) ú $color(h dcc_list)$[-6]tmleft $color(l dcc_list)remaining$(hk):$(cl) $7-}{% $color(l dcc_list)³ $(cl)$7-} ^stack pop set floating_point_math } ^on ^dcc_list "CHAT *" { @dccs++ % $color(l dcc_list)³ $(hk)[$(hw)$[-2]dccs$(hk)] $color(l dcc_list)$[-4]tolower($0)$(hk)\($color(h dcc_list)$[9]2$(hk)\) \($color(l dcc_list)$[8]tolower($3)$(hk)\)$(cl) $7- } ^on ^dcc_list "Start *" { ^assign -dccs % $color(h dcc_list)ÚÄ$color(l dcc_list)Ä$color(h dcc_list)ÄÄÄ$color(l dcc_list)ÄÄÄ$color(h dcc_list)Ä$color(l dcc_list)ÄÄÄ$(hk)Ä$color(l dcc_list)ÄÄ$(hk)Ä--$color(l dcc_list)ú$(hk)-ú ú $color(l dcc_list)-$(hk) ú$(cl) } ^on ^hook "dcc_foot" { if (!dccs) {% $color(l dcc_list)³ $(cl)no DCCs active.} % $color(l dcc_list)À$color(h dcc_list)Ä$color(l dcc_list)Ä--$color(h dcc_list)ú$color(l dcc_list)- - $(hk)ú - ú$(cl) } #!#:banhandling:#!# ^on ^367 * { if (finditem(bans $1-3)<0) { @ xx.z = numitems(bans) ? numitems(bans) : [0] @ setitem(bans $(xx.z) $1 $2) @ setitem(ban.setby $(xx.z) ${match(*!* $3)?before(! $3):[$3]}) @ setitem(bantime $(xx.z) $4) }} ^on ^368 * # ^on #-366 7227 * {^mode $1 +b} ^on #-leave 7227 * {if ([$0]==N) {while (matchitem(bans $1*)>=0) { if (matchitem(bans $1*)>=0) {@ delitem(ban.setby $matchitem(bans $1*)) @ delitem(bantime $matchitem(bans $1*)) @ delitem(bans $matchitem(bans $1*))}}}} ^on #-mode_stripped 7227 * { if (match(*b $2)) { switch ($left(1 $2)) { (+) {if (finditem(bans $1 $3 $0)<0) {@ xx.z = numitems(bans) ? numitems(bans) : [0] @ setitem(bans $(xx.z) $1 $3) @ setitem(ban.setby $(xx.z) $0) @ setitem(bantime $(xx.z) $time())}} (-) {@ _xx.ii = finditem(bans $1 $3) if (_xx.ii>=0) {@ delitem(bantime $_xx.ii);@ delitem(ban.setby $_xx.ii) @ delitem(bans $_xx.ii)}} }}} alias banstat { @ xx.chan = match($0 $mychannels()) ? [$0] : C if (numitems(bans)) { % channel set by time ban for (@xx.i=0,xx.i