–alias cbedit { nndlg -m cbedit } dialog cbedit { title "Clipboard editor [/cbedit]" size -1 -1 498 380 option pixels icon script\pics\nntray.ico edit "", 1, 2 0 494 312, multi return autohs autovs hsbar vsbar edit "", 20, 282 316 66 22, read center text "lines", 21, 354 320 24 14 edit "", 22, 394 316 66 22, read center text "bytes", 23, 464 320 28 14 button "C&opy", 3, 4 352 80 24 button "&Paste", 5, 88 352 80 24 button "&Re-load", 29, 184 352 80 24 button "&Close", 4, 414 352 80 24 box "", 2, -10 338 520 80 text "Amount of data currently in the clipboard:", 24, 4 320 206 16 menu "&File", 6 item "Copy &file to clipboard", 70, 6 item "&Save clipboard to file", 30, 6 item break, 31, 6 item "C&opy data to clipboard", 11, 6 item "&Reload clipboard content", 16, 6 item break, 28, 6 item "&Close", 8, 6 menu "&Edit clipboard", 7 item "&Add line numbers", 25, 7 item break, 26, 7 item "&Remove tokens", 10, 7 item "R&emove empty lines", 31, 7 item "Remove &lines containing...", 46, 7 item "Remove lines ¬ containing...", 47, 7 item break, 32, 7 menu "Str&ip codes", 9, 7 item "&All", 12, 9 item break, 13, 9 item "&Bold", 14, 9 item "&Color", 15, 9 item "Reset", 48, 9 item "&Reverse", 17, 9 item "&Underline", 18, 9 item break, 45, 7 menu "S&ort", 38, 7 menu "&Numerical", 42, 38 item "&Ascending", 43, 42 item "&Descending", 44, 42 item "&Ascending", 39, 38 item "&Descending", 40, 38 item break, 49, 7 item "Convert to lo&wercase", 33, 7 item "Convert to u&ppercase", 34, 7 item break, 37, 7 item "&Break lines", 50, 7 item "&Trim lines", 52, 7 item break, 60, 7 item "Replace strin&g", 61, 7 item break, 51, 7 item "Searc&h", 36, 7 item "&Select all", 41, 7 item break, 35, 7 item "&Clear clipboard", 27, 7 } alias cbedit.cpfile { var %f = $$sfile(C:\*.txt) loadbuf -ro cbedit 1 %f cbedit.copy idialog File %f copied to clipboard. } alias cbedit.opentmp { .fopen -o tmp script\txt\cbedit.tmp } alias cbedit.closetmp { loadbuf -ro cbedit 1 script\txt\cbedit.tmp did -c cbedit 1 1 .fclose tmp tryremove script\txt\cbedit.tmp } alias cbedit.cupper { tokenize 32 $1- if ($1 == 1) { did -r cbedit 1 } did -a cbedit 1 $replace($upper($2-),ü,Ü,ä,Ä,ö,Ö) $+ $crlf } alias cbedit.clower { tokenize 32 $1- if ($1 == 1) { did -r cbedit 1 } did -a cbedit 1 $replace($lower($2-),Ü,ü,Ä,ä,Ö,ö) $+ $crlf } alias cbedit.strip { tokenize 32 $1- if ($1 == 1) { did -r cbedit 1 } if (o isin %cbedit.strip) { did -a cbedit 1 $strip($remove($2-,),%cbedit.strip) $+ $crlf } else { did -a cbedit 1 $strip($2-,%cbedit.strip) $+ $crlf } } alias cbedit.break { tokenize 32 $1- if ($1 == 1) { did -r cbedit 1 } var %i = 1,%z = $len($2-) while (%i <= %z) { did -a cbedit 1 $mid($2-,%i,%cbedit.break) $+ $crlf inc %i %cbedit.break } } alias cbedit.trim { tokenize 32 $1- if ($1 == 1) { did -r cbedit 1 } did -a cbedit 1 $left($2-,%cbedit.trim) $+ $crlf } alias cbedit.falias { did -h cbedit 1 filter -ink cbedit 1 $1- did -fvc cbedit 1 1 } alias cbedit.replace { tokenize 32 $1- if ($1 == 1) { did -r cbedit 1 } did -a cbedit 1 $replace($2-,%cbedit.replace.1,%cbedit.replace.2) $+ $crlf } alias cbedit.paste { if ($istok(channel query chat,$window($active).type,32)) { window -a $active nndll sendkey CTRL V .timer 1 0 dialog -v cbedit } else { errdialog you can't paste in $active $+ ! } } on *:dialog:cbedit:*:*:{ if ($devent == init) { .timercbedit.ref -imo 0 100 cbedit.refcount cbedit.refcount cbedit.load } elseif ($devent == sclick) { if ($did == 3) { cbedit.copy } elseif ($did == 4) { cbedit.close } elseif ($did == 29) { cbedit.load } elseif ($did == 5) { cbedit.paste } } elseif ($devent == menu) { if ($did == 8) { cbedit.close } elseif ($did == 70) { cbedit.cpfile } elseif ($did == 11) { cbedit.copy } elseif ($did == 16) { cbedit.load } elseif ($did == 41) { did -c $dname 1 1 1 -1 } elseif ($did == 39) { filter -ioct 1 32 $dname 1 $dname 1 } elseif ($did == 40) { filter -iocte 1 32 $dname 1 $dname 1 } elseif ($did == 43) { filter -ioctu 1 32 $dname 1 $dname 1 } elseif ($did == 44) { filter -ioctue 1 32 $dname 1 $dname 1 } elseif ($did == 46) { filter -iocx $dname 1 $dname 1 $+(*,$$eddialog(Delete all lines containing the following string:),*) } elseif ($did == 47) { filter -ioc $dname 1 $dname 1 $+(*,$$eddialog(Delete all lines except those containing the following string:),*) } elseif ($did == 36) { var %s = $$eddialog(What do you want to search for?) if ($didwm(cbedit,1,$+(*,%s,*),1)) { var %i = $v1,%l = $pos($did(1,%i),%s,1) did -c $dname 1 %i %l $calc(%l + $len(%s)) } else { idialog No occurences of $qt(%s) found. } } elseif ($did == 34) { cbedit.falias cbedit.cupper } elseif ($did == 33) { cbedit.falias cbedit.clower } elseif ($did == 50) { set %cbedit.break $$eddialog(After how many characters do you want lines to be broken up?,80) cbedit.falias cbedit.break unset %cbedit.break } elseif ($did == 52) { set %cbedit.trim $$eddialog(After how many characters do you want lines to be trimmed?,80) cbedit.falias cbedit.trim unset %cbedit.trim } elseif ($did == 31) { filter -iocxg $dname 1 $dname 1 /^[\s]*$/ } elseif ($did == 25) { filter -inco $dname 1 $dname 1 } elseif ($istok(12 14 15 17 18 48,$did,32)) { set %cbedit.strip $replace($did,12,burc,14,b,15,c,17,r,18,u,48,o) cbedit.falias cbedit.strip unset %cbedit.strip } elseif ($did == 27) { if (!$did(cbedit,1).edited) || (($did(cbedit,1).edited) && ($ydialog(Do you really want to discard the changes you made to the clipboard?))) { did -rj $dname 1 clipboard } } elseif ($did == 10) { noop $dialog(cbedit.remtok,cbedit.remtok,-4) } elseif ($did == 61) { noop $dialog(cbedit.replace,cbedit.replace,-4) } elseif ($did == 30) { var %f = $relpath($$sfile($mircdir $+ clipboard.txt,Where do you want to save the clipboard?,Save)) if (!$isfile(%f)) || ($ydialog(The file $nopath(%f) already exists! Do you want to overwrite it?)) { did -j cbedit 1 savebuf -o $dname 1 %f idialog Clipboard saved to %f $+ . } } } } dialog cbedit.replace { title "Clipboard editor - replace strings" size -1 -1 288 90 option pixels icon script\pics\nntray.ico box "", 1, -6 48 302 60 text "String to be replaced", 2, 6 8 106 16 text "New string", 3, 6 32 60 16 edit "", 4, 122 4 164 22, autohs limit 100 edit "", 5, 122 28 164 22, autohs limit 100 button "&Ok", 6, 120 62 80 24, ok button "&Cancel", 7, 204 62 80 24, cancel } on *:dialog:cbedit.replace:*:*:{ if ($devent == sclick) && ($did == 6) { set %cbedit.replace.1 $did(4) set %cbedit.replace.2 $did(5) cbedit.falias cbedit.replace unset %cbedit.replace.? } } dialog cbedit.remtok { title "Clipboard editor - remove tokens" size -1 -1 240 104 option pixels icon script\pics\nntray.ico box "", 1, -6 62 254 62 text "Token number(s) to remove (single number or range)", 2, 6 8 140 30 text "Token separator", 3, 6 44 88 16 edit "", 4, 156 4 80 22, center combo 5, 156 40 80 166, size edit limit 1 drop button "&Ok", 6, 72 76 80 24 button "&Cancel", 7, 156 76 80 24, cancel } on *:dialog:cbedit.remtok:*:*:{ if ($devent == init) { did -a $dname 4 1 did -a $dname 5 [tab] var %i = 32,%z while (%i < 256) { %z = "" if (%i = 32) { %z = [space] } elseif (%i = 160) { %z = [hard space] } else { %z = $chr(%i) } did -a $dname 5 %z inc %i } did -c $dname 5 2 } elseif ($devent == sclick) && ($did == 6) { if (!$regex($did(4),/^[\d\-]+$/)) { errdialog you have to enter a number or number range! } else { cbedit.opentmp var %i = 1,%t = $did(cbedit,1).lines,%z,%ch = $iif($did(5).sel > 1,$calc($v1 +30),9) while (%i <= %t) { %z = $deltok($did(cbedit,1,%i),$did(4),%ch) if ($spcnull(%z)) { .fwrite -n tmp $cr } else { .fwrite -n tmp %z } inc %i } dialog -c $dname cbedit.closetmp } } } alias cbedit.copy { did -fj cbedit 1 nndll copyselctrl .timer 1 0 cbedit.refcount } alias cbedit.refcount { if ($dialog(cbedit)) { if (!$cb(0).len) { did -ra cbedit 20,22 0 } else { if ($did(cbedit,20) != $bytes($cb(0),b)) { did -ra cbedit 20 $v2 } if ($did(cbedit,22) != $bytes($cb(0).len,b)) { did -ra cbedit 22 $v2 } } } else { .timercbedit.ref off } } alias cbedit.load { if (!$did(cbedit,1).edited) || (($did(cbedit,1).edited) && ($ydialog(Do you really want to discard the changes you made to the clipboard?))) { did -rf $dname 1 nndll sendkey CTRL V .timer 1 0 cbedit.refcount $chr(124) did -j $dname 1 $chr(124) did -c $dname 1 1 } } alias cbedit.close { if ($did(cbedit,1).edited) { if ($ydialog(Do you really want to discard the changes you made to the clipboard?)) { dialog -x cbedit } } else { dialog -x cbedit } } ; –––––––––––––––––––––––––––––––––––––––– ; NoNameScript v4.1 - channel central - coded by greeny & mute ; Don't edit anything in here unless you REALLY know what you're doing! ; –––––––––––––––––––––––––––––––––––––––– alias cc { if ($1 == -t) { var %c = $iif($2 ischan,$2,$active) } else { var %c = $iif($1 ischan,$1,$active) } if ($status == connected) { if (%c ischan) { if ($me ison %c) { set %chancentral.chan %c set %chancentral.cid $cid set %chancentral.stt $iif($1 == -t,1,0) noop $dialog(chancentral,chancentral,-4) } else { thmerror -a You are currently not in $thmhl(%c) $+ . } } else { thmerror -a This feature is only available on channels. } } else { thmerror -a You are not connected to the server. } } dialog chancentral { title %chancentral.chan channel central [/cc] size -1 -1 478 448 option pixels icon script\pics\nntray.ico, 0 tab "Channel modes", 16, 4 4 468 348 box "General information", 38, 13 31 432 120, tab 16 text "Active channel", 44, 23 51 82 14, tab 16 edit "", 48, 173 47 264 22, tab 16 read autohs text "Active server/network", 51, 23 75 116 14, tab 16 edit "", 50, 173 71 264 22, tab 16 read autohs text "Current modes", 39, 23 99 82 14, tab 16 edit "", 40, 173 95 264 22, tab 16 read autohs text "Available modes", 41, 23 123 86 14, tab 16 edit + $+ $chanmodes, 42, 173 119 264 22, tab 16 read autohs box "Default channel modes", 24, 13 159 212 180, tab 16 check "&Limit to", 26, 23 179 58 18, tab 16 edit "", 27, 83 177 78 22, disable tab 16 limit 5 check "&Key", 29, 23 201 44 18, tab 16 edit "", 30, 83 199 130 22, disable tab 16 pass autohs limit 30 edit "", 130, 83 199 130 22, disable tab 16 autohs limit 30 check "&Only ops set topic", 31, 23 223 112 18, tab 16 check "&No external messages", 32, 23 241 132 18, tab 16 check "&Invite only", 33, 23 259 74 18, tab 16 check "&Moderated", 36, 23 277 78 18, tab 16 check "&Private", 35, 23 295 58 18, tab 16 check "S&ecret", 34, 23 313 58 18, tab 16 list 25, 244 177 108 150, tab 16 size text "users", 28, 169 181 30 14, tab 16 box "Other channel modes", 23, 232 159 132 180, tab 16 tab "Bans", 17 list 6, 9 33 455 292, tab 17 size text "Current/maximum bans:", 45, 11 329 122 14, tab 17 text "", 49, 155 329 290 14, tab 17 right text "", 21, 7 155 444 44, hide tab 17 center tab "Invites", 18 list 54, 9 33 455 292, tab 18 size text "Current invites:", 63, 11 329 84 14, tab 18 text "unknown", 62, 155 329 290 14, tab 18 right text "", 20, 7 155 444 44, hide tab 18 center tab "Excepts", 43 list 55, 9 33 455 292, tab 43 size text "Current excepts:", 65, 11 329 88 14, tab 43 text "unknown", 64, 155 329 290 14, tab 43 right text "", 22, 7 155 444 44, hide tab 43 center tab "Topic", 52 text "Topics", 4, 23 51 34 16, tab 52 box "Topic history", 14, 13 31 452 62, tab 52 combo 5, 88 47 368 120, tab 52 drop text "Set on", 10, 23 71 36 14, tab 52 box "Current topic", 15, 13 99 452 242, tab 52 edit "", 13, 23 115 434 80, tab 52 multi vsbar limit 600 button "", 8, 23 199 434 100, tab 52 text "Characters available:", 1, 23 305 106 14, tab 52 text "", 2, 23 321 431 12, tab 52 text "", 3, 147 305 308 14, tab 52 right text "", 11, 87 71 348 14, tab 52 right button "Clear history", 12, 3 355 80 24, tab 52 button "Set w/ &Q", 9, 87 355 80 24, tab 52 button "&Set", 7, 171 355 80 24, tab 52 ok tab "Statistics", 53 list 46, 9 33 455 214, disable tab 53 size list 47, 9 249 455 94, disable tab 53 size button "&Ok", 19, 310 354 80 24, ok button "&Cancel", 37, 394 354 80 24, cancel icon 56, 4 384 468 60 text "Loading...", 57, 216 403 49 16 } alias cc.refmodes { var %i = 1,%z = $gettok($chanmodes,-1,44) while ($mid(%z,%i,1)) { if ($regex(cm,$v1,/([^tnimpslkbe])/)) { did -a $dname 25 1 + 0 0 $iif($regml(cm,1) isincs $wd($chan(%chancentral.chan).mode,1),2,1) + $+ $regml(cm,1) } inc %i } var %x = $wd($chan(%chancentral.chan).mode,1) if (t isincs %x) { did -c $dname 31 } if (n isincs %x) { did -c $dname 32 } if (i isincs %x) { did -c $dname 33 } if (m isincs %x) { did -c $dname 36 } if (p isincs %x) { did -c $dname 35 } if (s isincs %x) { did -c $dname 34 } if (l isincs %x) { did -c $dname 26 did -ae $dname 27 $chan(%chancentral.chan).limit } if (k isincs %x) { did -c $dname 29 did -ae $dname 130,30 $chan(%chancentral.chan).key did -h $dname $iif($gettok($readini($mircini,options,n7),7,44),130,30) } } alias cc.getbans { did -ra chancentral 6 Refreshing bans... did -ra chancentral 49 unknown/ $+ $iif(%maxbans. [ $+ [ $cid ] ],$v1,unknown) set -u100 %chancentral.getbans %chancentral.chan mode %chancentral.chan +b } alias cc.refbans { var %c = %chancentral.chan,%i = $ibl(%c,0),%t = %i if (%i) { window -h @loadbans while (%i) { tokenize 33 $ibl(%c,%i).by echo @loadbans 1 + 0 0 0 $ibl(%c,%i) $+ + 0 0 0 $1 $iif($2,$nbr($2)) $+ + 0 0 0 $asctime($ibl(%c,%i).ctime,dd/mm/yyyy HH:nn) dec %i } filter -cwo @loadbans chancentral 6 close -@ @loadbans } else { did -ra chancentral 6 1 + 0 0 0 No bans set. } if (%maxbans. [ $+ [ $cid ] ]) { did -ra chancentral 49 $+(%t,/,$v1) } else { did -ra chancentral 49 %t $+ /unknown } cc.checkop } alias cc.getinvites { did -ra chancentral 54 Refreshing invites... did -ra chancentral 62 unknown set -u100 %chancentral.getinvites %chancentral.chan mode %chancentral.chan +I } alias cc.refinvites { var %c = %chancentral.chan,%i = $iil(%c,0),%t = %i if (%i) { window -h @loadinvites while (%i) { tokenize 33 $iil(%c,%i).by echo @loadinvites 1 + 0 0 0 $iil(%c,%i) $+ + 0 0 0 $1 $iif($2,$nbr($2)) $+ + 0 0 0 $asctime($iil(%c,%i).ctime,dd/mm/yyyy HH:nn) dec %i } filter -cwo @loadinvites chancentral 54 close -@ @loadinvites } else { did -ra chancentral 54 1 + 0 0 0 No invites set. } did -ra chancentral 62 %t $+ /unknown cc.checkop } alias cc.getexcepts { did -ra chancentral 55 Refreshing excepts... did -ra chancentral 64 unknown set -u100 %chancentral.getexcepts %chancentral.chan mode %chancentral.chan +e } alias cc.refexcepts { var %c = %chancentral.chan,%i = $iel(%c,0),%t = %i if (%i) { window -h @loadexcepts while (%i) { tokenize 33 $iel(%c,%i).by echo @loadexcepts 1 + 0 0 0 $iel(%c,%i) $+ + 0 0 0 $1 $iif($2,$nbr($2)) $+ + 0 0 0 $asctime($iel(%c,%i).ctime,dd/mm/yyyy HH:nn) dec %i } filter -cwo @loadexcepts chancentral 55 close -@ @loadexcepts } else { did -ra chancentral 55 1 + 0 0 0 No excepts set. } did -ra chancentral 64 %t $+ /unknown cc.checkop } raw 367:*:{ if (%chancentral.getbans == $2) { haltdef if ($dialog(chancentral)) { if (* Refreshing bans... * iswm $did(chancentral,6,2)) { did -d chancentral 6 2 } did -a chancentral 6 0 + 0 0 0 $3 $+ + 0 0 0 $4 $+ + 0 0 0 $asctime($5,dd/mm/yyyy HH:nn) } } } raw 368:*:{ if (%chancentral.getbans == $2) { haltdef unset %chancentral.getbans if ($dialog(chancentral)) { if ($did(chancentral,6).lines == 2) && (* Refreshing bans... * iswm $did(chancentral,6,2)) { did -ra chancentral 6 1 + 0 0 0 No bans set. did -ra chancentral 49 0/ $+ $iif(%maxbans. [ $+ [ $cid ] ],$v1,unknown) } else { did -ra chancentral 49 $calc($did(chancentral,6).lines -1) $+ / $+ $iif(%maxbans. [ $+ [ $cid ] ],$v1,unknown) } set %chancentral.bansrefreshed 1 } } } raw 346:*:{ if (%chancentral.getinvites == $2) { haltdef if ($dialog(chancentral)) { if (* Refreshing invites... * iswm $did(chancentral,54,2)) { did -d chancentral 54 2 } did -a chancentral 54 0 + 0 0 0 $3 $+ + 0 0 0 $4 $+ + 0 0 0 $asctime($5,dd/mm/yyyy HH:nn) } } } raw 347:*:{ if (%chancentral.getinvites == $2) { haltdef unset %chancentral.getinvites if ($dialog(chancentral)) { if ($did(chancentral,54).lines == 2) && (* Refreshing invites... * iswm $did(chancentral,54,2)) { did -ra chancentral 54 1 + 0 0 0 No invites set. did -ra chancentral 62 0 } else { did -ra chancentral 62 $calc($did(chancentral,54).lines -1) } set %chancentral.invitesrefreshed 1 } } } raw 348:*:{ if (%chancentral.getexcepts == $2) { haltdef if ($dialog(chancentral)) { if (* Refreshing excepts... * iswm $did(chancentral,55,2)) { did -d chancentral 55 2 } did -a chancentral 55 0 + 0 0 0 $3 $+ + 0 0 0 $4 $+ + 0 0 0 $asctime($5,dd/mm/yyyy HH:nn) } } } raw 349:*:{ if (%chancentral.getexcepts == $2) { haltdef unset %chancentral.getexcepts if ($dialog(chancentral)) { if ($did(chancentral,55).lines == 2) && (* Refreshing excepts... * iswm $did(chancentral,55,2)) { did -ra chancentral 55 1 + 0 0 0 No excepts set. did -ra chancentral 64 0 } else { did -ra chancentral 64 $calc($did(chancentral,55).lines -1) } set %chancentral.exceptsrefreshed 1 } } } alias cc.remselmodes { if ($1 == -b) { var %did = 6,%md = b } elseif ($1 == -I) { var %did = 54,%md = I } elseif ($1 == -e) { var %did = 55,%md = e } var %r,%d = $did(chancentral,%did).lines while (%d > 1) { var %h = $did(chancentral,%did,%d) if (s isin $wd(%h,2)) { %r = %r $gettok($wd(%h,6),1,9) } if ($numtok(%r,32) == $modespl) { mode %chancentral.chan - $+ $str(%md,$numtok(%r,32)) %r %r = "" } dec %d } if (%r) { mode %chancentral.chan - $+ $str(%md,$numtok(%r,32)) %r } } alias cc.clearmodes { if ($1 == -b) { var %did = 6,%md = b } elseif ($1 == -I) { var %did = 54,%md = I } elseif ($1 == -e) { var %did = 55,%md = e } var %r,%d = $did(chancentral,%did).lines while (%d > 1) { %r = %r $gettok($wd($did(chancentral,%did,%d),6),1,9) if ($numtok(%r,32) == $modespl) { mode %chancentral.chan - $+ $str(%md,$numtok(%r,32)) %r %r = "" } dec %d } if (%r) { mode %chancentral.chan - $+ $str(%md,$numtok(%r,32)) %r } } on *:dialog:chancentral:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 2 ProgressBar smooth > script\dlls\ctl_gen.mdx mdx SetControlMDX $dname 6,54,55 ListView report showsel rowselect labeltip editlabels > script\dlls\views.mdx mdx SetControlMDX $dname 25 ListView report showsel labeltip checkboxes noheader > script\dlls\views.mdx mdx SetControlMDX $dname 46 ListView report showsel rowselect labeltip > script\dlls\views.mdx mdx SetControlMDX $dname 47 ListView report showsel rowselect labeltip noheader > script\dlls\views.mdx mdx SetFont $dname 13 - $+ $window(Status Window).fontsize 300 $window(Status Window).font did -a $dname 40 $iif($chan(%chancentral.chan).mode,$v1,none) did -a $dname 48 %chancentral.chan $nbr($nick(%chancentral.chan,0) users) did -a $dname 50 $iif($network,$network $nbr($server),$server) did -i $dname 6,54,55 1 headerdims 220:1 80:2 110:3 did -i $dname 6,54,55 1 headertext + 0 Address + 0 Set by + 0 Date did -i $dname 25 1 headerdims 80:1 did -i $dname 47 1 headerdims 200:1 60:2 60:3 did -i $dname 47 1 headertext + 0 a + 0 b + 0 c did -i $dname 46 1 headerdims 40:1 30:2 80:3 80:4 80:5 60:6 110:7 80:8 50:9 50:10 did -i $dname 46 1 headertext + 0 User number + 0 Status + 0 Nick + 0 Auth + 0 Name + 0 Ident + 0 Host + 0 IP + 0 Away + 0 IrcOp did -i $dname 6,25,46,47,54,55 1 settxt bgcolor none set %chancentral.oldtab 16 did -ra $dname 49 unknown/ $+ $iif(%maxbans. [ $+ [ $cid ] ],$v1,unknown) ppwin $dname 8 if (Q !ison %chancentral.chan) { did -b $dname 9 } did -a $dname 13 $chan(%chancentral.chan).topic topic.crev prevtopic var %i = $hfind(topichist,$+($network,%chancentral.chan,$cr,*),0,w),%r,%z = 1,%g,%n = $nick(%chancentral.chan,0),%cm = $gettok($chanmodes,1,44) while (%i) { %r = $addtok(%r,$hget(topichist,$hfind(topichist,$+($network,%chancentral.chan,$cr,*),%i,w)) %i,124) dec %i } %r = $sorttok(%r,124) while ($gettok(%r,%z,124)) { tokenize 32 $v1 did -i $dname 5 1 $+($decode($gettok($hfind(topichist,$+($network,%chancentral.chan,$cr,*),$2,w),2,13),m),$str( ,150),$1) inc %z } cc.refmodes cc.checkop did -a $dname 47 1 + 0 0 0 Total users on the channel + 0 0 0 %n did -a $dname 47 1 + 0 0 0 Operators + 0 0 0 $nick(%chancentral.chan,0,o) $+ + 0 0 0 $percent($nick(%chancentral.chan,0,o),%n,1) did -a $dname 47 1 + 0 0 0 Voiced users + 0 0 0 $nick(%chancentral.chan,0,v) $+ + 0 0 0 $percent($nick(%chancentral.chan,0,v),%n,1) did -a $dname 47 1 + 0 0 0 Regulars + 0 0 0 $nick(%chancentral.chan,0,r) $+ + 0 0 0 $percent($nick(%chancentral.chan,0,r),%n,1) did -a $dname 47 1 + 0 0 0 Away users + 0 0 0 0 + 0 0 0 0% did -a $dname 47 1 + 0 0 0 IRC operators + 0 0 0 0 + 0 0 0 0% if (%chancentral.stt) { var %x = $dialog($dname).x,%y = $dialog($dname).y dialog -sp $dname -1000 -1000 -1 -1 .timer 1 0 did -f $dname 52 $chr(124) dialog -sp $dname %x %y -1 -1 } if (b !isincs %cm) { did -h $dname 6,45,49 did -vra $dname 21 Bans are not supported on $iif($network,$v1,$server) $+ . } if (I !isincs %cm) { did -h $dname 54,62,63 did -vra $dname 20 Invites are not supported on $iif($network,$v1,$server) $+ . } if (e !isincs %cm) { did -h $dname 55,64,65 did -vra $dname 22 Excepts are not supported on $iif($network,$v1,$server) $+ . } loadbanner cc chancentral 57 56 } elseif ($devent == edit) { if ($did == 13) { topic.crev if ($did(3) < 0) { mdx SetColor 3 text 255 } else { mdx SetColor 3 text reset } prevtopic } elseif ($did == 27) { numonlyedit $dname $did } } elseif ($devent == sclick) { if ($istok(46 47 6 25 54 55,$did,32)) { sortmdx } if ($did == 46) { tokenize 32 $did($did,1) if ($1 == rclick) { var %o = $iif(!$ccontrol(%chancentral.chan),+d,+),%n = $cell($did,3) popdll.new popup popdll.add popup +d 0 0 — $shorten(10,%n) — popdll.add popup popdll.add popup + 0 0 Whois $cr we %n popdll.add popup popdll.add popup %o 0 0 Kick $cr k %chancentral.chan %n popdll.add popup %o 0 0 Kickban $cr kb %chancentral.chan %n popdll.add popup %o 0 0 Timekickban $cr tkb %chancentral.chan %n popdll.disp popup } } elseif ($did == 56) { url -n $read(script\pics\banner_cc_link.txt,n) } elseif ($did == 6) { var %r if ($did($did).sel) && (* No bans set.* !iswm $did($did).seltext) && ($ccontrol(%chancentral.chan)) { %r = 1 } if (beginlabeledit * iswm $did($did,1)) && (!$did(20).enabled) { did -i $dname $did 1 cancel } elseif (endlabeledit * iswm $did($did,1)) { cc.chgban $cell($did,1) $wd($did($did,1),3-) } else { cc.checkop } if (rclick * iswm $did($did,1)) { tokenize 47 $did(49) popdll.new popup if (%r) { popdll.add popup +d 0 0 — $shorten(10,$cell($did,1)) — popdll.add popup } popdll.add popup $iif($1 == $2,+d,+) 0 0 &Add ban... $cr cc.addban popdll.add popup $iif(%r,+,+d) 0 0 &Edit ban... $cr cc.chgban $cell($did,1) -e popdll.add popup popdll.add popup $iif(%r,+,+d) 0 0 &Remove ban(s) $cr cc.remselmodes -b popdll.add popup $iif($1 && %r,+,+d) 0 0 &Clear ban(s) $cr cc.clearmodes -b popdll.disp popup } } elseif ($did == 54) { var %r if ($did($did).sel) && (* No invites set.* !iswm $did($did).seltext) && ($ccontrol(%chancentral.chan)) { %r = 1 } if (beginlabeledit * iswm $did($did,1)) && (!$did(57).enabled) { did -i $dname $did 1 cancel } elseif (endlabeledit * iswm $did($did,1)) { cc.chginvite $cell($did,1) $wd($did($did,1),3-) } else { cc.checkop } if (rclick * iswm $did($did,1)) { popdll.new popup if (%r) { popdll.add popup +d 0 0 — $shorten(10,$cell($did,1)) — popdll.add popup } popdll.add popup + 0 0 &Add invite... $cr cc.addinvite popdll.add popup $iif(%r,+,+d) 0 0 &Edit invite... $cr cc.chginvite $cell($did,1) -e popdll.add popup popdll.add popup $iif(%r,+,+d) 0 0 &Remove invite(s) $cr cc.remselmodes -I popdll.add popup $iif($did(62),+,+d) 0 0 &Clear invite(s) $cr cc.clearmodes -I popdll.disp popup } } elseif ($did == 55) { var %r if ($did($did).sel) && (* No excepts set.* !iswm $did($did).seltext) && ($ccontrol(%chancentral.chan)) { %r = 1 } if (beginlabeledit * iswm $did($did,1)) && (!$did(60).enabled) { did -i $dname $did 1 cancel } elseif (endlabeledit * iswm $did($did,1)) { cc.chgexcept $cell($did,1) $wd($did($did,1),3-) } else { cc.checkop } if (rclick * iswm $did($did,1)) { popdll.new popup if (%r) { popdll.add popup +d 0 0 — $shorten(10,$cell($did,1)) — popdll.add popup } popdll.add popup + 0 0 &Add except... $cr cc.addexcept popdll.add popup $iif(%r,+,+d) 0 0 &Edit except... $cr cc.chgexcept $cell($did,1) -e popdll.add popup popdll.add popup $iif(%r,+,+d) 0 0 &Remove except(s) $cr cc.remselmodes -e popdll.add popup $iif($did(64),+,+d) 0 0 &Clear except(s) $cr cc.clearmodes -e popdll.disp popup } } elseif ($did == 12) { if ($ydialog(Do you really want to clear the topic history?)) { did -r $dname 5 did -ra $dname 11 hdel -w topichist * } } elseif ($did == 17) { if (b isincs $gettok($chanmodes,1,44)) { if ($chan(%chancentral.chan).ibl == $true) { cc.refbans } else { cc.getbans } } } elseif ($did == 18) { if (I isincs $gettok($chanmodes,1,44)) { if ($chan(%chancentral.chan).iil == $true) { cc.refinvites } else { cc.getinvites } } } elseif ($did == 56) { cc.getinvites } elseif ($did == 43) { if (e isincs $gettok($chanmodes,1,44)) { if ($chan(%chancentral.chan).iel == $true) { cc.refexcepts } else { cc.getexcepts } } } elseif ($did == 59) { cc.getexcepts } elseif ($did == 53) { if (!%chancentral.statsdone) { if (!$remc(who)) { set %chanstats. $+ $cid %chancentral.chan set %chancentral.statsdone 1 who %chancentral.chan $iif($q.net || $u.net,% $+ acfhinru) } else { idialog there is already another /who request going on. Please wait for it to finish before trying to refresh the channel statistics. did -f $dname %chancentral.oldtab return } } } elseif ($did == 26) { did $iif($did($did).state,-e,-b) $dname 27 } elseif ($did == 29) { did $iif($did($did).state,-e,-b) $dname 130,30 } elseif ($did == 5) { var %t = $gettok($did($did),-1,160) did -ra $dname 13 $deltok($did($did),-1,160) did -ra $dname 11 $longtime(%t) $nbr($sduration($calc($ctime - %t)).nosec ago) topic.crev if ($did(3) < 0) { mdx SetColor 3 text 255 } else { mdx SetColor 3 text reset } prevtopic } elseif ($istok(7 9,$did,32)) { var %c = %chancentral.chan,%z = $edtxt($dname,13) if ($did == 9) { .msg q settopic %c $iif(%z,%z,) } else { .raw topic %c : $+ %z } } elseif ($did == 20) { cc.chgban $cell(6,1) -e } elseif ($did == 57) { cc.chginvite $cell(54,1) -e } elseif ($did == 60) { cc.chgexcept $cell(55,1) -e } elseif ($did == 21) { cc.remselmodes -b } elseif ($did == 58) { cc.remselmodes -I } elseif ($did == 61) { cc.remselmodes -e } elseif ($did == 22) { cc.getbans } elseif ($did == 19) { var %a = %chancentral.chan,%i = $did(25).lines,%r,%d,%m = $wd($chan(%a).mode,1),%z,%j = 1 while (%i > 1) { tokenize 32 $gettok($did(25,%i),1,9) var %z = $mid($6,2) if ($5 == 2) { if (%z !isincs %m) { %r = $+(%r,$iif(!%r,+),%z) } } elseif (%z isincs %m) { %d = $+(%d,$iif(!%d,-),%z) } if ($regex(%r $+ %d,/[a-zA-Z]/g) >= $modespl) { mode %chancentral.chan %r $+ %d var %r = "",%d = "" } dec %i } if ($did(26).state) { if (l !isincs %m) || ($chan(%a).limit != $did(27)) { mode %a +l $did(27) } } elseif (l isincs %m) { %d = $+(%d,$iif(!%d,-),l) } if ($did(29).state) { var %z = $iif($did(30).visible,$did(30),$did(130)) if (%z != $null) && ((k !isincs %m) || ($chan(%a).key != %z)) { if (k isincs %m) { mode %a -k $chan(%a).key } mode %a +k %z } } elseif (k isincs %m) { mode %a -k $chan(%a).key } while ($wd(31 t 32 n 33 i 36 m 35 p 34 s,$+(%j,-,$calc(%j +1)))) { tokenize 32 $v1 if ($did($1).state) { if ($2 !isincs %m) { %r = $+(%r,$iif(!%r,+),$2) } } elseif ($2 isincs %m) { %d = $+(%d,$iif(!%d,-),$2) } if ($regex(%r $+ %d,/[a-zA-Z]/g) >= $modespl) { mode %chancentral.chan %r $+ %d var %r = "",%d = "" } inc %j 2 } if (%r) || (%d) { mode %a %r $+ %d } if ($edtxt($dname,13) !== $chan(%a).topic) { topic %a $v1 } } if ($istok(16 17 18 43 52 53,$did,32)) { set %chancentral.oldtab $dialog($dname).tab } } elseif ($devent == dclick) && ($istok(6 54 55,$did,32)) { did -i $dname $did 1 labeledit begin $did($did).sel } elseif ($devent == close) { unset %modedsp. [ $+ [ %chancentral.cid ] $+ ] . [ $+ [ %chancentral.chan ] ] unset %chancentral.oldtab %chancentral.cid %chancentral.chan %chancentral.statsdone %chancentral.invitesrefreshed %chancentral.exceptsrefreshed %chancentral.bansrefreshed if ($sock(loadbanner)) { .sockclose loadbanner } } } alias cc.addban { mode %chancentral.chan +b $$eddialog(Please enter a ban mask in nick!ident@host.com format.) } alias cc.addexcept { mode %chancentral.chan +e $$eddialog(Please enter an except mask in nick!ident@host.com format.) } alias cc.addinvite { mode %chancentral.chan +I $$eddialog(Please enter an invite mask in nick!ident@host.com format.) } alias chanstats.add { if ($1 == -l) { var %a = unknown,%h = $4,%p = unknown } else { var %a = $iif($8,$8,n/a),%h = $5,%p = $iif($4 == 127.0.0.1,unknown,$4) } var %w = $iif(G isincs $7,Yes,No),%o = $iif(* isin $7,Yes,No) if (G isincs $7) { var %z = $calc($wd($gettok($did(chancentral,47,6),2,9),5) +1) did -o chancentral 47 6 1 + 0 0 0 Away users + 0 0 0 %z $+ + 0 0 0 $percent(%z,$nick($2,0),1) } if (* isin $7) { var %y = $calc($wd($gettok($did(chancentral,47,7),2,9),5) +1) did -o chancentral 47 7 1 + 0 0 0 IRC operators + 0 0 0 %y $+ + 0 0 0 $percent(%y,$nick($2,0),1) } did -a chancentral 46 1 + 0 0 0 $did(chancentral,46).lines $+ . + 0 0 0 $iif($6 !isreg $2,$left($nick($2,$6).pnick,1)) $+ + 0 0 0 $6 $+ + 0 0 0 %a $+ + 0 0 0 $strip($9-) $+ + 0 0 0 $3 $+ + 0 0 0 %h $+ + 0 0 0 %p $+ + 0 0 0 %w $+ + 0 0 0 %o } on *:op:%chancentral.chan:{ if (%chancentral.cid == $cid) && ($opnick == $me) { cc.checkop } } on *:deop:%chancentral.chan:{ if (%chancentral.cid == $cid) && ($opnick == $me) { cc.checkop } } on *:help:%chancentral.chan:{ if (%chancentral.cid == $cid) && ($hnick == $me) { cc.checkop } } on *:dehelp:%chancentral.chan:{ if (%chancentral.cid == $cid) && ($hnick == $me) { cc.checkop } } on *:usermode:{ if (%chancentral.cid == $cid) && (%chancentral.chan) { cc.checkop } } on *:part:%chancentral.chan:{ if (%chancentral.cid == $cid) && ($nick == $me) { dialog -c chancentral .timer 1 0 errdialog you have been kicked out of $chan $+ , closing channel central... } } on *:kick:%chancentral.chan:{ if (%chancentral.cid == $cid) && ($knick == $me) { dialog -c chancentral .timer 1 0 errdialog you have been kicked out of $chan $+ , closing channel central... } } on *:rawmode:%chancentral.chan:{ if (b isincs $1) { cc.refbans } if (e isincs $1) { cc.refexcepts } if (I isincs $1) { cc.refinvites } } raw 315:*:{ if (%chanstats. [ $+ [ $cid ] ] == $2) { haltdef unset %chanstats. $+ $cid if ($dialog(chancentral)) { did -e chancentral 46,47 } } } raw 333:*:{ topic.shist $2 $4 $chan($2).topic } raw 352:*:{ if (%chanstats. [ $+ [ $cid ] ] == $2) { haltdef if ($dialog(chancentral)) { chanstats.add -l $2- } } } raw 354:*:{ if (%chanstats. [ $+ [ $cid ] ] == $2) { haltdef if ($dialog(chancentral)) { chanstats.add -a $2- } } } alias cc.chgban { if ($2 == -e) { tokenize 32 $1 $$eddialog(Please enter the changed ban.,$1) } if ($1 != $2) { mode %chancentral.chan -b+b $1-2 } } alias cc.chginvite { if ($2 == -e) { tokenize 32 $1 $$eddialog(Please enter the changed invite.,$1) } if ($1 != $2) { mode %chancentral.chan -I+I $1-2 } } alias cc.chgexcept { if ($2 == -e) { tokenize 32 $1 $$eddialog(Please enter the changed except.,$1) } if ($1 != $2) { mode %chancentral.chan -e+e $1-2 } } alias topic.crev { var %z = $edlen(chancentral,13),%t = $topiclen,%v = $calc(%t - %z) if (%t) { did -ra chancentral 3 $+(%v,/,%t) $nbr($round($calc(%v / %t *100),0) $+ %) did -a chancentral 2 %z 0 %t } else { did -ra chancentral 3 unknown did -a chancentral 2 0 0 1 } } alias topiclen { return $iif(%topiclen. [ $+ [ $cid ] ],$v1,0) } alias prevtopic { var %i = 0,%w = @sprev.chancentral.8,%y = 1,%t = $edtxt(chancentral,13),%f = $window(%chancentral.chan).font,%s = $window(%chancentral.chan).fontsize,%h = $calc($height(%t,%f,%s) +1) drawrect -nf %w $color(back) 1 0 0 $window(%w).w $window(%w).h if (%t != $null) { while (%y < $window(%w).h) { drawtext -npb %w $color(topic) $color(back) $qt(%f) %s $calc(2-(%i *($window(%w).w -6))) %y %t inc %y %h inc %i } drawrect -n %w $color(back) 2 0 0 $calc($window(%w).w -2) $calc($window(%w).h -2) } drawdot %w } alias cc.checkop { var %z = 7 $+ $chr(44) if (t !isincs $wd($chan(%chancentral.chan).mode,1)) { did -e chancentral 7 %z = "" } if ($ccontrol(%chancentral.chan)) { did -e chancentral 7,19 } else { did -b chancentral %z $+ 19 } } alias topic.shist { if ($encode($3-,m)) { var %t = $v1,%h = $+($network,$1,$cr,%t) if ($1 == %chancentral.chan) && (!$hget(topichist,%h)) { did -i chancentral 5 1 $+($3-,$str( ,150),$2) } hadd -m topichist %h $2 } if ($hfind(topichist,$+($network,$1,$cr,*),0,w) > 50) { var %i = $v1,%l = $ctime,%r while (%i) { var %h = $hfind(topichist,$+($network,$1,$cr,*),%i,w) if ($hget(topichist,%h) < %l) { var %l = $v1,%r = %h } dec %i } hdel topichist %r } } on *:dialog:cprot.*.edit:sclick:7:{ tokenize 32 $did($did,1) if (slclick select * iswm $1-) { if ($5) { did -e $dname 11 } else { did -b $dname 11,30 } if ($5) && (!$6) { did -e $dname 30 } else { did -b $dname 30 } } } on *:dialog:cprot.*.edit:sclick:30:{ did -i $dname 7 1 page select did -i $dname 7 1 cb root $wd($did(7,1),4-5) set %cprot.editaction $gettok($wd($prot.svac,$calc($wd($did(7,1),5) -1)),2-,58) noop $dialog(cp.actionadd,cp.actionadd,-4) unset %cprot.editaction } on *:dialog:cprot.*.edit:sclick:11:{ prot.delocc } on *:dialog:cprot.*.edit:sclick:15:{ prot.addocc } dialog cprot.ctcpflood.edit,cprot.join-/partflood.edit,cprot.mass-deop.edit,cprot.noticeflood.edit,cprot.repeating.edit,cprot.textflood.edit { title "Edit channel protection" size -1 -1 248 266 option pixels icon script\pics\nntray.ico box "", 1, 4 2 240 86 check "&Enable protection", 14, 12 20 108 18 text "Times", 2, 32 42 32 16 text "Seconds", 3, 32 64 46 16 edit "", 5, 118 38 118 22, limit 3 edit "", 6, 118 60 118 22, limit 3 list 7, 12 112 142 112, size box "Actions to perform", 4, 4 96 240 136 button "&Add occasion", 15, 158 114 76 24 button "&Edit actions", 30, 158 138 76 24, disable button "&Remove", 11, 158 168 76 24, disable button "&Ok", 8, 80 238 80 24 button "&Cancel", 9, 164 238 80 24, cancel } on *:dialog:cprot.ctcpflood.edit:*:*:{ cprot.genflooddlg } on *:dialog:cprot.join-/partflood.edit:*:*:{ cprot.genflooddlg } on *:dialog:cprot.mass-deop.edit:*:*:{ cprot.genflooddlg } on *:dialog:cprot.noticeflood.edit:*:*:{ cprot.genflooddlg } on *:dialog:cprot.repeating.edit:*:*:{ cprot.genflooddlg } on *:dialog:cprot.textflood.edit:*:*:{ cprot.genflooddlg } alias cprot.genflooddlg { if ($devent == init) { mdx SetControlMDX $dname 7 TreeView haslines hasbuttons showsel notooltips > script\dlls\views.mdx cprot.edload did -a $dname 1 $cell(settings,115,1) protection $nbr($did(settings,112).seltext) cprot.chkstate 2,3,4,5,6,7,15 } elseif ($devent == sclick) { if ($did == 8) { if ($did(5) isnum 1-999) && ($did(6) isnum 1-999) { cprot.edsave dialog -c $dname } else { errdialog please enter valid numbers for the "Times" and "Seconds" fields! } } elseif ($did == 14) { if ($did($did).state) { did -e $dname 2,5,7,4,15 if ($did(5) != 1) { did -e $dname 3,6 } } else { did -b $dname 2,3,5,6,7,4,11,15 } did -u $dname 7 } } elseif ($devent == edit) { if ($istok(5 6,$did,32)) { numonlyedit $dname $did } if ($did == 5) { did $iif($did($did) == 1,-b,-e) $dname 3,6 } } } dialog cprot.codes.edit { title "Edit channel protection" size -1 -1 248 366 option pixels icon script\pics\nntray.ico box "", 1, 4 2 240 86 check "&Enable protection", 14, 12 20 108 18 text "Times", 2, 32 42 32 16 text "Seconds", 3, 32 64 46 16 edit "", 5, 118 38 118 22, limit 3 edit "", 6, 118 60 118 22, limit 3 box "Trigger on these control codes", 12, 4 94 240 96 check "A&ll", 13, 12 112 40 18 check "Color&s", 16, 70 112 56 18 check "Re&verse", 20, 146 112 64 18 check "&Bold", 17, 70 128 46 18 check "Rese&t", 19, 146 128 56 18 check "&Underline", 18, 70 144 70 18 text "Min. number of codes in text", 21, 14 164 140 16 edit "", 22, 162 160 74 22, limit 3 box "Actions to perform", 4, 4 196 240 136 list 7, 12 212 142 112, size button "&Add occasion", 15, 158 214 76 24 button "&Edit actions", 30, 158 238 76 24, disable button "&Remove", 11, 158 268 76 24, disable button "&Ok", 8, 80 338 80 24 button "&Cancel", 9, 164 338 80 24, cancel } on *:dialog:cprot.codes.edit:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 7 TreeView haslines hasbuttons showsel notooltips > script\dlls\views.mdx cprot.edload var %s = $did(settings,112).seltext,%t = %cprot. [ $+ [ %s ] $+ ] .codes.trig did -a $dname 1 Control codes protection $nbr(%s) did -a $dname 22 %cprot. [ $+ [ %s ] $+ ] .codes.mincodes if ( isin %t) { did -c $dname 16 } if ( isin %t) { did -c $dname 17 } if ( isin %t) { did -c $dname 18 } if ( isin %t) { did -c $dname 20 } if ( isin %t) { did -c $dname 19 } if ($regex(%t,/[]/g) == 5) { did -c $dname 13 did -b $dname 16,17,18,19,20 } cprot.chkstate 2,3,4,5,6,7,12,15,13,16,17,18,19,20,21,22 } elseif ($devent == sclick) { if ($did == 8) { if ($did(5) isnum 1-999) && ($did(6) isnum 1-999) { set %cprot. [ $+ [ $did(settings,112).seltext ] $+ ] .codes.mincodes $iif($did(22),$did(22),1) set %cprot. [ $+ [ $did(settings,112).seltext ] $+ ] .codes.trig $+(/[,$iif($did(13).state,,$+($iif($did(16).state,),$iif($did(17).state,),$iif($did(18).state,),$iif($did(20).state,),$iif($did(19).state,))),]/g) cprot.edsave dialog -c $dname } else { errdialog please enter valid numbers for the "Times" and "Seconds" fields! } } elseif ($did == 13) { did $iif($did($did).state,-b,-e) $dname 16,17,18,19,20 } elseif ($did == 14) { if ($did($did).state) { if ($did(13).state) { did -e $dname 2,5,7,4,15,12,13 } else { did -e $dname 2,5,7,4,15,12,13,16,17,18,19,20 } if ($did(5) != 1) { did -e $dname 3,6 } did -e $dname 21,22 } else { did -b $dname 2,3,5,6,7,4,11,15,12,13,16,17,18,19,20,21,22 } did -u $dname 7 } } elseif ($devent == edit) { if ($istok(5 6 22,$did,32)) { numonlyedit $dname $did } if ($did == 5) { did $iif($did($did) == 1,-b,-e) $dname 3,6 } } } alias cprot.chkstate { if ($wd($did(settings,115).seltext,5) == 2) { did -c $dname 14 } else { did -b $dname $1 } } dialog cprot.caps.edit { title "Edit channel protection" size -1 -1 248 308 option pixels icon script\pics\nntray.ico box "", 1, 4 2 240 110 check "&Enable protection", 14, 12 20 108 18 text "Times", 2, 32 42 32 16 edit "", 5, 118 38 118 22, limit 3 text "Seconds", 3, 32 64 46 16 edit "", 6, 118 60 118 22, limit 3 text "Caps amount", 12, 32 86 70 16 edit "", 13, 118 82 96 22, limit 3 text "%", 16, 218 86 16 14 box "Actions to perform", 4, 4 118 240 156 list 7, 12 134 142 132, size button "&Add occasion", 15, 158 136 76 24 button "&Edit actions", 30, 158 160 76 24, disable button "&Remove", 11, 158 190 76 24, disable button "&Ok", 8, 80 280 80 24 button "&Cancel", 9, 164 280 80 24, cancel } on *:dialog:cprot.caps.edit:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 7 TreeView haslines hasbuttons showsel notooltips > script\dlls\views.mdx cprot.edload var %s = $did(settings,112).seltext did -a $dname 1 Caps protection $nbr(%s) did -a $dname 13 $calc(%cprot. [ $+ [ %s ] $+ ] .caps.percent *100) cprot.chkstate 2,3,4,5,6,7,12,15,13,16 } elseif ($devent == sclick) { if ($did == 8) { if ($did(5) isnum 1-999) && ($did(6) isnum 1-999) { set %cprot. [ $+ [ $did(settings,112).seltext ] $+ ] .caps.percent $calc($did(13) /100) cprot.edsave dialog -c $dname } else { errdialog please enter valid numbers for the "Times" and "Seconds" fields! } } elseif ($did == 14) { if ($did($did).state) { did -e $dname 2,5,7,4,12,13,15,16 if ($did(5) != 1) { did -e $dname 3,6 } } else { did -b $dname 2,3,5,6,7,4,11,15,12,13,16 } did -u $dname 7 } } elseif ($devent == edit) { if ($istok(5 6 13,$did,32)) { numonlyedit $dname $did } if ($did == 5) { did $iif($did($did) == 1,-b,-e) $dname 3,6 } } } dialog cprot.badword.edit { title "Edit channel protection" size -1 -1 248 364 option pixels icon script\pics\nntray.ico box "", 1, 4 2 240 86 check "&Enable protection", 14, 12 20 108 18 text "Times", 2, 32 42 32 16 edit "", 5, 118 38 118 22, limit 3 text "Seconds", 3, 32 64 46 16 edit "", 6, 118 60 118 22, limit 3 box "Bad words", 12, 4 94 240 94 list 100, 12 110 142 68, sort size extsel vsbar button "&Add", 101, 158 112 76 24 button "Re&move", 102, 158 136 76 24 box "Actions to perform", 4, 4 194 240 136 list 7, 12 210 142 112, size button "Add o&ccasion", 15, 158 212 76 24 button "&Edit actions", 30, 158 236 76 24, disable button "&Remove", 11, 158 266 76 24, disable button "&Ok", 8, 80 336 80 24 button "&Cancel", 9, 164 336 80 24, cancel } on *:dialog:cprot.badword.edit:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 7 TreeView haslines hasbuttons showsel notooltips > script\dlls\views.mdx cprot.edload var %s = $did(settings,112).seltext did -a $dname 1 Badword protection $nbr(%s) didtok $dname 100 44 $mkregex(%cprot. [ $+ [ %s ] $+ ] .badword.words).re cprot.chkstate 2,3,4,5,6,7,12,15,100,101,102 } elseif ($devent == sclick) { if ($did == 8) { if ($did(5) isnum 1-999) && ($did(6) isnum 1-999) { set %cprot. [ $+ [ $did(settings,112).seltext ] $+ ] .badword.words $mkregex($didtok(100,44)) cprot.edsave dialog -c $dname } else { errdialog please enter valid numbers for the "Times" and "Seconds" fields! } } elseif ($did == 101) { var %x = $$eddialog(Enter a new bad word!) if (!$didwm(100,%x)) { did -a $dname 100 %x } else { errdialog this bad word is already in the list! } } elseif ($did == 100) { did $iif($did($did).sel,-e,-b) $dname 102 } elseif ($did == 102) { while ($did(100).sel) { did -d $dname 100 $v1 } did -b $dname 102 } elseif ($did == 14) { if ($did($did).state) { did -e $dname 2,5,7,4,15,12,100,101 if ($did(5) != 1) { did -e $dname 3,6 } } else { did -b $dname 2,3,5,6,7,4,11,15,12,100,101,102 } did -u $dname 100,7 } } elseif ($devent == edit) { if ($istok(5 6,$did,32)) { numonlyedit $dname $did } if ($did == 5) { did $iif($did($did) == 1,-b,-e) $dname 3,6 } } } dialog cprot.advertising.edit { title "Edit channel protection" size -1 -1 248 364 option pixels icon script\pics\nntray.ico box "", 1, 4 2 240 86 check "&Enable protection", 14, 12 20 108 18 text "Times", 2, 32 42 32 16 edit "", 5, 118 38 118 22, limit 3 text "Seconds", 3, 32 64 46 16 edit "", 6, 118 60 118 22, limit 3 box "Strictness", 12, 4 94 240 94 list 13, 16 108 32 72, size text "", 16, 62 110 172 16 text "", 17, 62 126 172 52 box "Actions to perform", 4, 4 194 240 136 list 7, 12 210 142 112, size button "&Add occasion", 15, 158 212 76 24 button "&Edit actions", 30, 158 236 76 24, disable button "&Remove", 11, 158 266 76 24, disable button "&Ok", 8, 80 336 80 24 button "&Cancel", 9, 164 336 80 24, cancel } on *:dialog:cprot.advertising.edit:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 7 TreeView haslines hasbuttons showsel notooltips > script\dlls\views.mdx mdx SetControlMDX $dname 13 TrackBar vertical > script\dlls\bars.mdx mdx SetBorderStyle $dname 13 var %s = $did(settings,112).seltext did -i $dname 13 1 params %cprot. [ $+ [ %s ] $+ ] .advertising.strict 1 3 * * * * 20 did -i $dname 13 1 ticfreq 1 bold $dname 16 adprot.sref cprot.edload cprot.chkstate 2,3,4,5,6,7,12,13,15,16,17 did -a $dname 1 Advertising protection $nbr(%s) } elseif ($devent == sclick) { if ($did == 13) { adprot.sref } elseif ($did == 8) { if ($did(5) isnum 1-999) && ($did(6) isnum 1-999) { set %cprot. [ $+ [ $did(settings,112).seltext ] $+ ] .advertising.strict $gettok($did(13,1),1,32) cprot.edsave dialog -c $dname } else { errdialog please enter valid numbers for the "Times" and "Seconds" fields! } } elseif ($did == 14) { if ($did($did).state) { did -e $dname 2,5,7,4,15,12,13,16,17 if ($did(5) != 1) { did -e $dname 3,6 } } else { did -b $dname 2,3,5,6,7,4,11,15,12,13,16,17 } did -u $dname 7 } } elseif ($devent == edit) { if ($istok(5 6,$did,32)) { numonlyedit $dname $did } if ($did == 5) { did $iif($did($did) == 1,-b,-e) $dname 3,6 } } } alias prot.addocc { did -i $dname 7 1 cb root 2 var %n = $did(7).lines if (%n < 6) { did -i $dname 7 1 cb root 2 did -a $dname 7 +e 1 1 0 0 0 $ord(%n) occasion } else { errdialog you can only add up to 5 occasions! } } alias prot.cleanini { if ($hget(cleanini)) { hfree cleanini } hmake cleanini var %v = $var(%?prot.*.action,0) while (%v) { var %c = $var(%?prot.*.action,%v),%e = [ [ %c ] ] if ($regex(num,%e,/(?:cm|cc|s|es|k|kl|bn)\-([0-9A-Z]+)|(?:wu\-\d\-([0-9A-Z]+))/g)) { var %z = 1 while ($regml(num,%z)) { hadd -m cleanini $v1 1 inc %z } } dec %v } .fopen $iif(!$isfile(script\txt\paction.ini),-o) paction.old script\txt\paction.ini .fopen -o paction.new script\txt\paction.new while (!$feof) { var %l = $fread(paction.old) if (%l) && (($hget(cleanini,$gettok(%l,1,61))) || ([*] iswm %l)) { .fwrite -n paction.new %l } } .fclose paction.* hfree cleanini tryremove script\txt\paction.ini .rename script\txt\paction.new script\txt\paction.ini } alias prot.delocc { did -i $dname 7 1 page select var %t = $gettok($did(7,1),4-,32) did -i $dname 7 1 cb root $deltok(%t,-1,32) did -d $dname 7 $wd(%t,-1) if ($numtok(%t,32) == 2) { var %i = $did(7).lines while (%i > 1) { did -i $dname 7 1 replaceitem %i $puttok($did(7,%i),$ord($calc(%i -1)),7,32) dec %i } } did -u $dname 7 did -b $dname 11,30 } alias cprot.edsave { var %s = $did(settings,112).seltext,%t = $cell(settings,115,1),%r = $prot.svac,%d,%z set %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %t ] ] $did(14).state set %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %t ] $+ ] .action %r if ($1 != -c) { set %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %t ] $+ ] .secs $did(6) %d = $did(6) } if ($1 != -i) { set %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %t ] $+ ] .times $did(5) %z = $did(5) } did -o settings 115 $did(settings,115).sel 0 +fs 0 0 $calc($did(14).state +1) $cell(settings,115,1) $+ + 0 0 0 $iif(%z,%z,n/a) $+ + 0 0 0 $iif(%d && %z != 1,%d $+ $iif($1 == -i,*60),n/a) $+ + 0 0 0 $prot.traction(%r) $+  $+ $gettok($did(settings,115).seltext,2-,4) prot.cleanini } alias cprot.aload { var %i = 1 did -i $dname 7 1 cb root did -a $dname 7 +be 1 1 0 0 0 Actions did -i $dname 7 1 cb last while (%i <= $0) { did -a $dname 7 +e 1 1 0 0 0 $ord(%i) occasion did -i $dname 7 1 cb last var %v = 1,%z = $numtok($ [ $+ [ %i ] ],43) while (%v <= %z) { var %u = $gettok($gettok($ [ $+ [ %i ] ],2-,58),%v,43) if (%u) { did -a $dname 7 + 1 1 0 0 0 $+($prot.naction(%u), ,%u) } inc %v } did -i $dname 7 1 cb up inc %i } } alias cprot.edload { var %x = $cell(settings,115,1),%s = $did(settings,112).seltext if ($1 != -c) { did -a $dname 6 %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %x ] $+ ] .secs } if ($1 != -i) { did -a $dname 5 %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %x ] $+ ] .times } if (!$1) && ($did(5) == 1) { did -b $dname 3,6 } cprot.aload %cprot. [ $+ [ %s ] $+ ] . [ $+ [ %x ] $+ ] .action } alias adprot.sref { var %x = $wd($did(13,1),1) if (%x == 1) { did -ra $dname 16 High: did -ra $dname 17 The protection immediately triggers whenever a #channel or URL is mentioned in the channel you are protecting. } elseif (%x == 2) { did -ra $dname 16 Medium (recommended): did -ra $dname 17 The protection is only triggered when a #channel/URL along with a trigger like "join" or "visit" is mentioned. } else { did -ra $dname 16 Low: did -ra $dname 17 The protection is only triggered when a #chan/URL along with a trigger like "visit" is mentioned and there are control codes in the text. } } alias cprot.edit { var %s = $+(cprot.,$cell(115,1),.edit) noop $dialog(%s,%s,-4) } alias cprot.setsave { var %i = $did(settings,115).lines while (%i > 1) { set $+(%,cprot.,$did(settings,112).seltext,.,$cell(settings,115,%i,1)) $calc($wd($did(settings,115,%i),5) -1) dec %i } } alias cprot.loaddef { var %c = $+(cprot.,$did(settings,112).seltext,.) set % $+ %c $+ advertising 0 | set % $+ %c $+ advertising.strict 2 | set % $+ %c $+ advertising.times 1 | set % $+ %c $+ advertising.secs 30 | set % $+ %c $+ advertising.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ badword 0 | set % $+ %c $+ badword.times 1 | set % $+ %c $+ badword.secs 30 | set % $+ %c $+ badword.action 1:wu-1-d 2:b-1800-3+k-d | unset % [ $+ [ %c ] $+ ] badword.words set % $+ %c $+ caps 0 | set % $+ %c $+ caps.times 2 | set % $+ %c $+ caps.secs 30 | set % $+ %c $+ caps.percent 0.9 | set % $+ %c $+ caps.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ codes 0 | set % $+ %c $+ codes.mincodes 3 | set % $+ %c $+ codes.trig /[]/g | set % $+ %c $+ codes.times 2 | set % $+ %c $+ codes.secs 30 | set % $+ %c $+ codes.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ ctcpflood 1 | set % $+ %c $+ ctcpflood.times 2 | set % $+ %c $+ ctcpflood.secs 10 | set % $+ %c $+ ctcpflood.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ join-/partflood 0 | set % $+ %c $+ join-/partflood.times 5 | set % $+ %c $+ join-/partflood.secs 10 | set % $+ %c $+ join-/partflood.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ mass-deop 0 | set % $+ %c $+ mass-deop.times 4 | set % $+ %c $+ mass-deop.secs 10 | set % $+ %c $+ mass-deop.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ noticeflood 1 | set % $+ %c $+ noticeflood.times 2 | set % $+ %c $+ noticeflood.secs 20 | set % $+ %c $+ noticeflood.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ repeating 1 | set % $+ %c $+ repeating.times 3 | set % $+ %c $+ repeating.secs 10 | set % $+ %c $+ repeating.action 1:wu-1-d 2:b-1800-3+k-d set % $+ %c $+ textflood 0 | set % $+ %c $+ textflood.times 8 | set % $+ %c $+ textflood.secs 6 | set % $+ %c $+ textflood.action 1:wu-1-d 2:b-1800-3+k-d if ($dialog(settings)) { cprot.setload } prot.cleanini } alias cprot.setload { var %s = $did(settings,112).seltext,%c = cprot. $+ %s,%t,%x = Advertising Badword Caps Codes CTCPflood Join-/Partflood Mass-deop Noticeflood Repeating Textflood,%i = 1 did -b settings 117 if ((% [ $+ [ %c ] $+ ] .usepreset) || (%cprot.presetonly)) && (%s != Preset) { did -b settings 37,145,146,147,36,115 } else { did -e settings 37,145,146,147,36,115 } if (%s != Preset) && (!%cprot.presetonly) { did -e $dname 144 } else { did -b $dname 144 } did $iif(%s == Preset,-b,-e) settings 114 did $iif(% [ $+ [ %c ] $+ ] .usepreset,-c,-u) settings 144 did $iif(% [ $+ [ %c ] $+ ] .punishops,-c,-u) settings 145 did $iif(% [ $+ [ %c ] $+ ] .punishvoiced,-c,-u) settings 146 window -h @cprot.setload while ($wd(%x,%i)) { var %u = $v1,%t = [ % [ $+ [ %c ] $+ ] . [ $+ [ %u ] $+ ] .times ] echo @cprot.setload 0 + 0 0 $iif( [ % [ $+ [ %c ] $+ ] . [ $+ [ %u ] ] ] ,2,1) %u $+ + 0 0 0 %t $+ + 0 0 0 $iif(%t == 1,n/a, [ % [ $+ [ %c ] $+ ] . [ $+ [ %u ] $+ ] .secs ] ) $+ + 0 0 0 $prot.traction( [ % [ $+ [ %c ] $+ ] . [ $+ [ %u ] $+ ] .action ] ) inc %i } filter -cwo @cprot.setload settings 115 close -@ @cprot.setload } alias prot.naction { if ($1 == bl) { return Blacklist user } elseif ($1 == do) { return Deop/devoice user } elseif ($1 == bp) { return Beep } elseif ($1 == cq) { return Close query } elseif ($1 == fl) { return Flash mIRC } elseif (es-* iswm $1) { return Echo msg. } elseif (bn-* iswm $1) { return Show balloon } elseif (wu-* iswm $1) { return Warn user } elseif ($regex(cp2,$1,/^b-(\d+)-.+$/)) { return Ban user $iif($regml(cp2,1),$nbr($calc($v1 /60) $+ m)) } elseif (k-* iswm $1) { return Kick user } elseif (kl-* iswm $1) { return Kill user } elseif ($regex(cp1,$1,/^i-.+-(\d+)-.+$/)) { return Ignore user $iif($regml(cp1,1),$nbr($calc($v1 /60) $+ m)) } elseif (cc-* iswm $1) { return Custom command } elseif (cm-* iswm $1) { return Change channel modes } elseif (s-* iswm $1) { return Play sound } elseif ($1 == us) { return Unban self } elseif ($1 == is) { return Ignore spam } } dialog cp.actionadd { title "Add action" size -1 -1 301 272 option pixels icon script\pics\nntray.ico tab "Warnings", 1, 4 6 292 236 check "&Beep (if sounds are enabled)", 7, 14 34 162 18, tab 1 check "&Flash mIRC (if minimized)", 6, 14 50 142 18, tab 1 check "&Show echo message to self:", 24, 14 66 158 18, tab 1 edit " triggered your protection in ! Taking countermeasures...", 15, 30 84 256 22, disable tab 1 autohs limit 200 check "S&how balloon tip (if enabled), message:", 8, 14 108 214 18, tab 1 edit " triggered your protection in ! Taking countermeasures...", 9, 30 126 256 22, disable tab 1 autohs limit 200 check "W&arn user, message:", 22, 14 152 128 18, tab 1 edit "Don't in ! Taking countermeasures...", 23, 30 170 256 22, disable tab 1 autohs limit 200 text "Send as", 3, 32 196 44 16, disable tab 1 radio "¬ice", 2, 82 194 54 18, disable tab 1 radio "&private message", 4, 82 212 104 18, disable tab 1 tab "Control", 13 check "&Ban user", 35, 14 34 68 18, tab 13 check "&Unban after", 32, 32 50 84 18, disable tab 13 combo 51, 124 48 56 134, disable tab 13 size edit limit 3 drop text "minutes", 34, 192 52 42 16, disable tab 13 text "Ban mask:", 21, 50 76 54 16, disable tab 13 combo 36, 124 72 162 170, disable tab 13 size drop check "&Deop/devoice user", 29, 14 98 116 18, tab 13 check "&Kick user, reason:", 25, 14 114 110 18, tab 13 edit "Don't !", 26, 30 132 256 22, disable tab 13 autohs limit 200 check "K&ill user (IRCop only), reason:", 55, 14 158 168 18, tab 13 edit "Don't !", 56, 30 176 256 22, disable tab 13 autohs limit 200 tab "Ignore", 14 check "&Ignore", 38, 14 34 56 18, tab 14 check "&Complete", 54, 32 50 68 18, disable tab 14 check "&Private", 39, 32 66 60 18, disable tab 14 check "&DCC", 43, 122 66 48 18, disable tab 14 check "C&hannel", 40, 32 82 64 18, disable tab 14 check "I&nvite", 44, 122 82 54 18, disable tab 14 check "N&otice", 41, 32 98 54 18, disable tab 14 check "Co&des", 45, 122 98 54 18, disable tab 14 check "C&TCP", 42, 32 114 52 18, disable tab 14 check "&Remove after", 46, 32 130 88 18, disable tab 14 combo 33, 124 128 56 134, disable tab 14 size edit limit 3 drop text "minutes", 48, 192 132 42 16, disable tab 14 text "Ignore mask:", 49, 50 156 66 16, disable tab 14 combo 50, 124 152 162 170, disable tab 14 size drop tab "Misc.", 5 check "&Blacklist user", 16, 14 34 86 18, tab 5 check "&Custom command:", 30, 14 50 110 18, tab 5 edit "", 31, 30 68 256 22, disable tab 5 autohs limit 200 check "&Set channel mode(s):", 27, 14 94 124 18, tab 5 edit "+", 28, 30 112 256 22, disable tab 5 autohs limit 50 check "&Play sound:", 47, 14 136 80 18, tab 5 edit "", 52, 30 154 220 22, disable tab 5 autohs limit 400 button "&...", 53, 252 154 34 22, disable tab 5 tab "Help", 37 text "Here is a list of identifiers you can use in your custom kick messages and warnings:", 11, 14 36 262 26, tab 37 list 10, 12 80 114 150, tab 37 sort size vsbar text "Description:", 17, 136 66 60 14, tab 37 text "No item selected.", 18, 136 80 148 148, tab 37 text "Identifiers:", 12, 14 66 56 14, tab 37 button "&Ok", 19, 133 244 80 24 button "&Cancel", 20, 217 244 80 24, cancel } on *:dialog:cp.actionadd:*:*:{ if ($devent == init) { didtok $dname 33,51 44 2,5,10,30,60,120,300 did -c $dname 2,33,51 3 var %i = 0 while (%i <= 9) { did -a $dname 36,50 $+([,%i,]) $mask(nick!ident@some.host.com,%i) inc %i } did -c $dname 36 %ban.mask did -c $dname 50 %ignore.mask didtok $dname 10 44 ,,,,,,,, var %i = 1,%t = $numtok(%cprot.editaction,43) while (%i <= %t) { tokenize 45 $gettok(%cprot.editaction,%i,43) if ($1 == bl) { did -c $dname 16 } elseif ($1 == do) { did -c $dname 29 } elseif ($1 == bp) { did -c $dname 7 } elseif ($1 == fl) { did -c $dname 6 } elseif ($1 == es) { did -c $dname 24 did -e $dname 15 if ($2 != d) { did -ra $dname 15 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } elseif ($1 == bn) { did -c $dname 8 did -e $dname 9 if ($2 != d) { did -ra $dname 9 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } elseif ($1 == wu) { did -c $dname 22 did -e $dname 23,2,3,4 if (!$2) { did -u $dname 2 did -c $dname 4 } if ($3 != d) { did -ra $dname 23 $decode($readini(script\txt\paction.ini,cpaction,$3),m) } } elseif ($1 == b) { did -c $dname 35 did -e $dname 32,34,21,36 if ($2) { did -c $dname 32 did -e $dname 51 if ($didwm(51,$calc($2 /60))) { did -c $dname 51 $v1 } else { did -ac $dname 51 $calc($2 /60) } } did -c $dname 36 $calc($3 +1) } elseif ($1 == k) { did -c $dname 25 did -e $dname 26 if ($2 != d) { did -ra $dname 26 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } elseif ($1 == kl) { did -c $dname 55 did -e $dname 56 if ($2 != d) { did -ra $dname 56 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } elseif ($1 == i) { did -c $dname 38 did -e $dname 54,48,46,49,50 if ($2 == a) { did -c $dname 54 } else { did -e $dname 39,40,41,42,43,44,45 if (p isin $2) { did -c $dname 39 } if (c isin $2) { did -c $dname 40 } if (n isin $2) { did -c $dname 41 } if (t isin $2) { did -c $dname 42 } if (d isin $2) { did -c $dname 43 } if (i isin $2) { did -c $dname 44 } if (k isin $2) { did -c $dname 45 } } if ($3) { did -c $dname 46 did -e $dname 33 if ($didwm(33,$calc($3 /60))) { did -c $dname 33 $v1 } else { did -ac $dname 33 $calc($3 /60) } } did -c $dname 50 $calc($4 +1) } elseif ($1 == cc) { did -c $dname 30 did -e $dname 31 if ($2 != d) { did -ra $dname 31 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } elseif ($1 == cm) { did -c $dname 27 did -e $dname 28 if ($2 != d) { did -ra $dname 28 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } elseif ($1 == s) { did -c $dname 47 did -e $dname 52,53 if ($2 != d) { did -ra $dname 52 $decode($readini(script\txt\paction.ini,cpaction,$2),m) } } inc %i } } elseif ($devent == sclick) { if ($did == 10) { var %s = $did($did).seltext if (%s == ) { did -ra $dname 18 is replaced with the channel the protection is triggered in. } elseif (%s == ) { did -ra $dname 18 is replaced with the action the user shouldn't have taken (e.g: "use too many control codes"). } elseif (%s == ) { did -ra $dname 18 is replaced with the type of protection that triggered. } elseif (%s == ) { did -ra $dname 18 is replaced with the nick of the person who triggered the protection. } elseif (%s == ) { did -ra $dname 18 is replaced with the amount of times the nickname needed to flood/repeat/etc. until the protection triggered. } elseif (%s == ) { did -ra $dname 18 is replaced with the amount of seconds the nickname needed to perform the flood to trigger the protection. } elseif (%s == ) { did -ra $dname 18 is replaced with the occasion number the nickname is flooding. } elseif (%s == ) { did -ra $dname 18 is replaced with the type of reaction the protection triggers. } elseif (%s == ) { did -ra $dname 18 is replaced with the type of reaction the protection triggers when the user is flooding again. } } elseif ($did == 24) { did $iif($did($did).state,-e,-b) $dname 15 } elseif ($did == 8) { did $iif($did($did).state,-e,-b) $dname 9 } elseif ($did == 22) { did $iif($did($did).state,-e,-b) $dname 23,2,3,4 } elseif ($did == 35) { did $iif($did($did).state,-e,-b) $dname 32,34,21,36 if ($did($did).state) && ($did(32).state) { did -e $dname 51 } else { did -b $dname 51 } } elseif ($did == 32) { did $iif($did($did).state,-e,-b) $dname 51 } elseif ($did == 25) { did $iif($did($did).state,-e,-b) $dname 26 } elseif ($did == 55) { did $iif($did($did).state,-e,-b) $dname 56 } elseif ($did == 38) { did $iif($did($did).state,-e,-b) $dname 54,48,46,49,50 if (!$did(54).state) || (!$did($did).state) { did $iif($did($did).state,-e,-b) $dname 39,40,41,42,43,44,45 } if ($did($did).state) && ($did(46).state) { did -e $dname 33 } else { did -b $dname 33 } } elseif ($did == 54) { did $iif($did($did).state,-b,-e) $dname 39,40,41,42,43,44,45 } elseif ($did == 46) { did $iif($did($did).state,-e,-b) $dname 33 } elseif ($did == 30) { did $iif($did($did).state,-e,-b) $dname 31 } elseif ($did == 27) { did $iif($did($did).state,-e,-b) $dname 28 } elseif ($did == 47) { did $iif($did($did).state,-e,-b) $dname 52,53 } elseif ($did == 53) { did -ra $dname 52 $relpath($$sfile(*.wav;*.mid;*.mp3;*.ogg;*.wma,Choose a sound file to play!)) } elseif ($did == 19) { var %r,%t = $cell(settings,115,1),%d = $+(cprot.,%t,.edit),%f = script\txt\paction.ini,%u if ($did(7).state) { %r = bp } if ($did(6).state) { %r = %r fl } if ($did(24).state) { if ($did(15)) { var %u = $trnum,%r = %r es- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r es-d } } if ($did(8).state) { if ($did(9)) { var %u = $trnum,%r = %r bn- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r bn-d } } if ($did(22).state) { var %z = $did(2).state if ($did(23)) { var %u = $trnum,%r = %r $+(wu-,%z,-,%u) writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r $+(wu-,%z,-d) } } if ($did(35).state) { %r = %r $+(b-,$iif($did(32).state,$iif($int($did(51)) isnum,$calc($v1 *60),0),0),-,$calc($did(36).sel -1)) } if ($did(29).state) { %r = %r do } if ($did(25).state) { if ($did(26)) { var %u = $trnum,%r = %r k- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r k-d } } if ($did(55).state) { if ($did(56)) { var %u = $trnum,%r = %r kl- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r kl-d } } if ($did(38).state) { var %h if ($did(54).state) { %h = a } else { if ($did(39).state) { %h = p } if ($did(40).state) { %h = %h $+ c } if ($did(41).state) { %h = %h $+ n } if ($did(42).state) { %h = %h $+ t } if ($did(43).state) { %h = %h $+ d } if ($did(44).state) { %h = %h $+ i } if ($did(45).state) { %h = %h $+ k } if (!%h) { %h = a } } %r = %r $+(i-,%h,-,$iif($did(46).state,$iif($did(33) isnum,$calc($v1 *60),0),0),-,$calc($did(50).sel -1)) } if ($did(16).state) { %r = %r bl } if ($did(30).state) { if ($did(31)) { var %u = $trnum,%r = %r cc- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r cc-d } } if ($did(27).state) { if ($did(28)) { var %u = $trnum,%r = %r cm- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r cm-d } } if ($did(47).state) { if ($did(52)) { var %u = $trnum,%r = %r s- $+ %u writeini -n %f cpaction %u $encode($v1,m) } else { %r = %r s-d } } did -i %d 7 1 page select did -i %d 7 1 cb root $wd($did(%d,7,1),4-5) var %i = $numtok(%r,32),%wa,%o = $did(%d,7).lines while ($did(%d,7).lines > 1) { did -d %d 7 2 } if (%i > 5) { var %wa = 1,%r = $wd(%r,1-5),%i = 5 } while (%i) { did -a %d 7 + 1 1 0 0 0 $+($prot.traction(1: $+ $wd(%r,%i)), ,$wd(%r,%i)) dec %i } did -i %d 7 1 sort dialog -c $dname if (%wa) { errdialog you have chosen more than 5 actions so only the first 5 have been added! } } } } alias cprot.dchk { hadd -mu $+ %cprot. [ $+ [ %cprot.curchan ] $+ ] . [ $+ [ $1 ] $+ ] .secs cprot $+($1,.,$chan,.,$cid,.,$fulladdress,.t-,$trnum) 1 if ($hfind(cprot,$+($1,.,$chan,.,$cid,.,$fulladdress,.t-*),0,w) >= %cprot. [ $+ [ %cprot.curchan ] $+ ] . [ $+ [ $1 ] $+ ] .times) { cprot.dotrig $1 } } alias cprot.dotrig { if ($hget(cprot)) { hdel -w cprot $+($1,.,$chan,.,$cid,.,$fulladdress,.t-*) } hinc -mu3600 cprot $+($1,.,$chan,.,$cid,.,$fulladdress,.p) var %j,%o = $hget(cprot,$+($1,.,$chan,.,$cid,.,$fulladdress,.p)),%r = %cprot. [ $+ [ %cprot.curchan ] $+ ] . [ $+ [ $1 ] $+ ] .action if (%o >= $numtok(%r,32)) { hdel cprot $+($1,.,$chan,.,$cid,.,$fulladdress,.p) } var %x = 1,%c = $gettok($wd(%r,%o),2-,58) set %cprot.msgrep , $+ $chan $+ ,, $+ $1 $+ ,, $+ $cprot.repflood($1) $+ ,, $+ $nick $+ ,, $+ [ %cprot. [ $+ [ %cprot.curchan ] $+ ] . [ $+ [ $1 ] $+ ] .times ] $+ ,, $+ [ %cprot. [ $+ [ %cprot.curchan ] $+ ] . [ $+ [ $1 ] $+ ] .secs ] $+ ,, $+ %o $+ ,, $+ $prot.traction(1: $+ %c) $+ ,, $+ $iif($wd(%r,$calc(%o +1)),$prot.traction($v1),n/a) while ($gettok(%c,%x,43)) { var %t = $v1,%d if (%t == bp) { beep } elseif (%t == fl) { flash } elseif (%t == do) { mode $chan -ov $nick $nick } elseif (%t == bl) { prot.blackadd $iif($address($nick,%ban.mask),$v1,$nick $+ !*@*) Don't $cprot.repflood($1) $+ ! } elseif ($regex(cpt,%t,/^k-([0-9A-Z]+|d)$/)) { kick $chan $nick $iif($regml(cpt,1) != d,$cprot.getmsg($v1),Don't $cprot.repflood($1) $+ !) $kc } elseif ($regex(cpt,%t,/^kl-([0-9A-Z]+|d)$/)) { kill $nick $iif($regml(cpt,1) != d,$cprot.getmsg($v1),Don't $cprot.repflood($1) $+ !) } elseif ($regex(cpt,%t,/^es-([0-9A-Z]+|d)$/)) { if ($regml(cpt,1) != d) { thmecho -a $cprot.getmsg($v1) } else { thmecho -a $thmhl($nick) triggered your $thmhl($1) protection in $thmhl($chan) $+ . } } elseif ($regex(cpt,%t,/^bn-([0-9A-Z]+|d)$/)) { npop $1 protection in $+($chan,,$iif($regml(cpt,1) != d,$cprot.getmsg($v1),$nick triggered your $1 protection in $chan $+ .)) %j = 1 } elseif ($regex(cpt,%t,/^wu-(1|0)-([0-9A-Z]+|d)$/)) { $iif($regml(cpt,1),.notice,.msg) $nick $iif($regml(cpt,2) != d,$cprot.getmsg($v1),Don't $cprot.repflood($1) in $chan $+ !) } elseif ($regex(cpt,%t,/^b-(\d+)-([0-9])$/)) { ban $iif($regml(cpt,1),-u $+ $v1) $chan $nick $regml(cpt,2) } elseif ($regex(cpt,%t,/^i-([pcntdik]+|a)-(\d+)-([0-9])$/)) { .ignore $+(-,$iif($regml(cpt,1) != a,$v1),$iif($regml(cpt,2),u $+ $v1)) $nick $regml(cpt,3) } elseif ($regex(cpt,%t,/^cc-([0-9A-Z]+|d)$/)) { if ($regml(cpt,1) != d) { $cprot.getmsg($v1) } else { thmerror -a No command for the $thmhl($1) protection in $thmhl($chan) specified! } } elseif ($regex(cpt,%t,/^cm-([0-9A-Z]+|d)$/)) { if ($regml(cpt,1) != d) { mode $chan $cprot.getmsg($v1) } else { thmerror -a No channel mode change for the $thmhl($1) protection in $thmhl($chan) specified! } } elseif ($regex(cpt,%t,/^s-([0-9A-Z]+|d)$/)) { var %s = $cprot.getmsg($regml(cpt,1)) if ($regml(cpt,1) != d) && ($isfile(%s)) { splay %s } else { thmerror -a No sound for the $thmhl($1) protection in $thmhl($chan) specified! } } inc %x } if ($balloon.trig(c)) && (!%j) { npop Channel protection $+($iif($scid(0) > 1,$nbr($curconserv)),,$nick) triggered your $1 protection in $chan $+ ! Taking countermeasures... } unset %cprot.msgrep } alias prot.blackadd { if ($1 !iswm $address($me,5)) { hadd black $1- hsave -ob black script\tables\black.tbl if ($dialog(black)) { did -a black 5 0 + 0 0 0 $1 $+ + 0 0 0 $2 did -e black 17 } scon -at1 bkacs } } alias cprot.repflood { return $replacex($1-,advertising,advertise,badword,use bad words,caps,write in caps,codes,use too many control codes,ctcpflood,ctcp flood,join-/partflood,join-/partflood,mass-deop,mass-deop,noticeflood,notice flood,repeating,repeat yourself,textflood,text flood) } alias cprot.getmsg { return $replacex($decode($readini(script\txt\paction.ini,cpaction,$1),m), [ %cprot.msgrep ] ) } alias cprot.chkst { if (!$ccontrol($2)) || (!$prot.exclps($address($1,5))) { return 0 } if (%cprot. [ $+ [ $2 ] $+ ] .usepreset) || (%cprot.presetonly) { set %cprot.curchan Preset } else { set %cprot.curchan $2 } if (($1 isop $2) || ($1 ishop $2)) { if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .punishops) { return 1 } } elseif ($1 isvoice $2) { if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .punishvoiced) { return 1 } } else { return 1 } } alias cprot.chktxtevent { if ($cprot.chkst($nick,$chan)) { var %t = $strip($1-) if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .advertising) { var %s = %cprot. [ $+ [ %cprot.curchan ] $+ ] .advertising.strict if ($regex(%t,/#[^\s]+|http://[^\s]+\.[^\s]+|www\.[^\s]+\.[^\s]+/)) { if (%s == 1) { cprot.dchk advertising } elseif ($regex(%t,/j[o0][i1]n|amsg|need|visit|brauch|besuch|komm|verlos|live|check|support|free|p[o0]rn|pr[o0]n|sex|pussy|idle|pl(?:s|z|ease)|perform/i)) { if (%s == 2) { cprot.dchk advertising } elseif ($1- != %t) { cprot.dchk advertising } } } } if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .repeating) { var %b = $+(repeating.,$md5(%t),.,$chan,.,$cid,.,$fulladdress,.t-) hadd -mu $+ %cprot. [ $+ [ %cprot.curchan ] $+ ] .repeating.secs cprot $+(%b,$trnum) 1 if ($hfind(cprot,%b $+ *,0,w) >= %cprot. [ $+ [ %cprot.curchan ] $+ ] .repeating.times) { cprot.dotrig repeating hdel -w cprot %b $+ * } } var %bwl = %cprot. [ $+ [ %cprot.curchan ] $+ ] .badword.words if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .badword) && (%bwl) && ($regex(bwprot,%t,%bwl)) { cprot.dchk badword } if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .caps) && ($len(%t) > 4) && ($calc($regex(%t,/[A-ZÄÖÜ]/g) / $len(%t)) >= %cprot. [ $+ [ %cprot.curchan ] $+ ] .caps.percent) { cprot.dchk caps } if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .textflood) { cprot.dchk textflood } if (%cprot. [ $+ [ %cprot.curchan ] $+ ] .codes) && ($regex($1-,%cprot. [ $+ [ %cprot.curchan ] $+ ] .codes.trig) >= [ %cprot. [ $+ [ %cprot.curchan ] $+ ] .codes.mincodes ] ) { cprot.dchk codes } } } dialog contentfilter.add { title "Add content filter" size -1 -1 258 118 option pixels icon script\pics\nntray.ico text "Please enter a new wildcard or regular expression that you do not want to be displayed.", 6, 6 4 248 30 edit "", 1, 4 36 250 22, autohs limit 100 check "Regular expression", 2, 6 60 122 18 box "", 3, -24 76 360 88 button "&Ok", 5, 90 90 80 24 button "&Cancel", 4, 174 90 80 24, cancel } on *:dialog:contentfilter.add:*:*:{ if ($devent == init) { if (%contentfilter.edit) { var %t = $did(settings,150).seltext set %contentfilter.edit $gettok(%t,1,160) if ($cr isin %t) { did -a $dname 1 $gettok(%t,3,13) did -c $dname 2 } else { did -a $dname 1 %t } } } elseif ($devent == sclick) { if ($did == 5) { if ($did(1) != $null) { var %sz = $did(1) $iif($did(2).state,(Regular expression)) if (%contentfilter.edit == %sz) { dialog -x $dname } elseif (!$contentfilter.isentry(%sz)) { if ($did(2).state) { var %n = $contentfilter.nextvar,%s = $did(1) $+((Regular expression),$str($chr(160),200),$cr,%n,$cr,$did(1)) if (%contentfilter.edit) { did -oc settings 150 $did(settings,150).sel %s } else { did -a settings 150 %s } did -e settings 153 contentfilter.savelist dialog -c $dname } else { if (%contentfilter.edit) { did -oc settings 150 $did(settings,150).sel $did(1) } else { did -a settings 150 $did(1) } did -e settings 153 contentfilter.savelist dialog -c $dname } } else { errdialog the same entry is already in the filter list! } } else { errdialog you did not supply a filter! } } } } alias contentfilter.isentry { var %i = $did(settings,150).lines while (%i) { if ($gettok($did(settings,150,%i),1,160) == $1-) { return 1 } dec %i } } alias contentfilter.edit { set %contentfilter.edit 1 noop $dialog(contentfilter.add,contentfilter.add,-4) unset %contentfilter.edit } alias contentfilter.savelist { unset %contentfilter %contentfilter.regex.* var %i = $did(settings,150).lines,%r while (%i) { var %c = $did(settings,150,%i) if ($chr(13) !isin %c) { %r = $addtok(%r,%c,44) } else { set %contentfilter.regex. [ $+ [ $gettok(%c,2,13) ] ] $gettok(%c,3,13) } dec %i } set %contentfilter $mkregex(%r) } alias contentfilter.nextvar { var %i = 1 while (%contentfilter.regex. [ $+ [ %i ] ]) { inc %i } return %i } alias contentfilter { if (($prop == query) && (%contentfilter.queries)) || (($prop == chan) && (%contentfilter.chans)) { if (%contentfilter) && ($regex($1-,%contentfilter)) { return 1 } var %i = $var(%contentfilter.regex.*,0) while (%i) { if ($regex($1-, [ [ $var(%contentfilter.regex.*,%i) ] ] )) { return 1 } dec %i } } } alias dccrelay { nndlg -m dccrelay dccrelay } dialog dccrelay { title "DCC Relay [/dccrelay]" size -1 -1 310 184 option pixels icon script\pics\nntray.ico text "Destination nick", 1, 6 8 80 14 combo 2, 132 4 174 300, sort size edit drop text "Server", 3, 6 32 38 14 combo 4, 132 28 174 200, sort size drop text "Status", 9, 6 56 40 14 edit "", 10, 70 52 236 90, read multi return vsbar check "&Enable", 5, 6 160 60 18 box "", 8, -6 142 320 8 button "&Help", 6, 142 156 80 24 button "&Close", 7, 226 156 80 24, ok } alias dccrelay.addserv { did -a dccrelay 4 $curconserv $nbr($cid) } on *:dialog:dccrelay:*:*:{ if ($devent == init) { scon -at1 dccrelay.addserv if ($did(4).lines) { did -c $dname 4 1 set %dccrel.cid $mid($wd($did(4,1),-1),2,-1) loaddccrn } } elseif ($devent == sclick) { if ($did == 5) { sdt dccrel.en if ($did($did).state) { dccrelay.ts } else { dccrelay.status Relaying of DCCs stopped. } } elseif ($did == 6) { idialog This feature is used to relay DCC sends you are receiving to other users. If you know FXP, you probably already know how this works.After you press the "Enable" checkbox, all DCCs you receive will be relayed.Note that you have to keep the DCC relay dialog open for it to work!Once the DCC has started you can close the dialog again. } elseif ($did == 4) { set %dccrel.cid $mid($wd($did($did).seltext,-1),2,-1) loaddccrn dccrelay.ts } elseif ($did == 2) { set %dccrel.nick $did($did) dccrelay.ts } } elseif ($devent == edit) { set %dccrel.nick $did($did) .timerdccrel.nref -io 1 1 dccrelay.ts } elseif ($devent == close) { unset %dccrel.* } } alias dccrelay.status { if ($dialog(dccrelay)) { did -a $v1 10 $iif($did(dccrelay,10),$crlf) $+ —› $1- } } alias dccrelay.ts { if (%dccrel.en) { if (%dccrel.nick) && (%dccrel.cid) { dccrelay.status Relaying all DCCs to %dccrel.nick on $iif($scid(%dccrel.cid).network,$v1,$scid(%dccrel.cid).server) $+ ! } else { dccrelay.status You have to select a nickname and network! } } } alias loaddccrn { did -r dccrelay 2 scid $mid($wd($did(4).seltext,-1),2,-1) _hmake dccrn var %i = $chan(0) while (%i) { var %n = $nick($chan(%i),0) while (%n) { if (!$hget(dccrn,$nick($chan(%i),%n))) { did -a dccrelay 2 $nick($chan(%i),%n) } hadd dccrn $nick($chan(%i),%n) 1 dec %n } dec %i } hfree dccrn } ctcp *:DCC:*:{ if ($dialog(dccrelay)) && (%dccrel.en) && (%dccrel.nick) && (%dccrel.cid) { if ($2 == send) && ($scid(%dccrel.cid).status == connected) { dccrelay.status Sending $3 $nbr($bytes($6,3).suf) to %dccrel.nick via $nick set %dccrel.user $nick $cid scid %dccrel.cid !.msg %dccrel.nick DCC SEND $3- $+  scid -r haltdef } elseif ($2 == resume) { if ($nick == %dccrel.nick) && ($scid($wd(%dccrel.user,2)).status == connected) { dccrelay.status Requesting resume... scid $wd(%dccrel.user,2) !.msg $wd(%dccrel.user,1) DCC RESUME $3- $+  scid -r haltdef } } elseif ($2 == accept) && ($scid(%dccrel.cid).status == connected) { if ($nick == $wd(%dccrel.user,1)) { dccrelay.status Accepting file... scid %dccrel.cid !.msg %dccrel.nick DCC ACCEPT $3- $+  scid -r haltdef } } } } alias dcchist { nndlg -mh dcchist } dialog dcchist { title "DCC history [/dcchist]" size -1 -1 461 297 option pixels icon script\pics\nntray.ico tab "Files received", 1002, 4 2 452 264 list 2, 9 28 442 228, tab 1002 size tab "Files sent", 1003 list 3, 9 28 442 228, tab 1003 size tab "Incomplete gets", 1012 list 12, 9 28 442 228, tab 1012 size tab "Incomplete sends", 1013 list 13, 9 28 442 228, tab 1013 size button "C&lose", 1, 377 269 80 24, ok menu "&File", 8 item "&Close", 10, 8 menu "&Edit history", 9 item "&Refresh", 11, 9 item break, 14, 9 item "R&emove selected", 15, 9 item "&Clear lists", 16, 9 menu "&Information", 17 item "&Post selected in active", 18, 17 item "&Display DCC history info", 4, 17 } on *:dialog:dcchist:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 2,3,12,13 ListView report showsel rowselect infotip > script\dlls\views.mdx did -i $dname 2,3,12,13 1 headerdims 140:1 80:2 80:3 130:4 70:5 60:6 120:7 did -i $dname 2 1 headertext + 0 Filename + 0 Filesize + 0 From + 0 Time received + 0 Speed received + 0 Get duration + 0 User's IP address did -i $dname 3 1 headertext + 0 Filename + 0 Filesize + 0 To + 0 Time sent + 0 Speed sent + 0 Send duration + 0 User's IP address did -i $dname 12 1 headertext + 0 Filename + 0 Received (%) + 0 From + 0 Time of error + 0 Speed received + 0 Get duration + 0 User's IP address did -i $dname 13 1 headertext + 0 Filename + 0 Sent (%) + 0 To + 0 Time of error + 0 Speed sent + 0 Send duration + 0 User's IP address did -b $dname 15,18 dcchist.ref } elseif ($devent == sclick) { if ($istok(1002 1003 1012 1013,$did,32)) { did $iif($did($calc($dialog($dname).tab -1000)).sel && !$nomsg,-e,-b) $dname 15,18 } elseif ($istok(2 3 12 13,$did,32)) { did $iif(!$did($did).sel || $cell($did,1) == No entries.,-b,-e) $dname 15 did $iif(!$did($did).sel || $nomsg || $cell($did,1) == No entries.,-b,-e) $dname 18 if (rclick recent * iswm $did($did,1)) { popdll.new popup popdll.add popup + 0 0 Refresh $cr dcchist.ref popdll.add popup popdll.add popup $iif(!$did($did).sel || $cell($did,1) == No entries.,+d,+) 0 0 Remove selected $cr dcchist.remsel popdll.add popup $iif($did($did).lines == 1,+d,+) 0 0 Clear lists $cr dcchist.clear popdll.add popup popdll.add popup $iif(!$did($did).sel || $nomsg || $cell($did,1) == No entries.,+d,+) 0 0 Post in active $cr dcchist.say $active popdll.disp popup } else { sortmdx $dname $did } } } elseif ($devent == menu) { if ($did == 10) { dialog -c $dname } elseif ($did == 11) { dcchist.ref } elseif ($did == 15) { dcchist.remsel } elseif ($did == 16) { dcchist.clear } elseif ($did == 18) { dcchist.say $active } elseif ($did == 4) { idialog DCC history entries: $dcchist.entries } } elseif ($devent == dclick) && ($did == 2) { open $getdir $+ $cell($did,1) } } alias dcchist.entries { return $calc($lines(script\txt\dcchist-g.txt) + $lines(script\txt\dcchist-ig.txt) + $lines(script\txt\dcchist-s.txt) + $lines(script\txt\dcchist-is.txt)) } alias dcchist.clear { if ($ydialog(Are you sure you want to clear the DCC history?)) { write -c script\txt\dcchist-g.txt write -c script\txt\dcchist-ig.txt write -c script\txt\dcchist-s.txt write -c script\txt\dcchist-is.txt dcchist.ref } } alias dcchist.ref { did -r dcchist 2,3,12,13 var %i = 4,%f = g s ig is,%x = 2 3 12 13 while (%i) { var %v = $wd(%x,%i),%z = $+(script\txt\dcchist-,$wd(%f,%i),.txt) if (!$lines(%z)) { did -a dcchist %v 1 + 0 0 0 No entries. } else { loadbuf -o dcchist %v %z } dec %i } } alias dcchist.say { var %p = $calc($dialog(dcchist).tab -1000),%n = $1 tokenize 9 $did(dcchist,%p).seltext msg %n $sbr(DCC) $wd($1,6-) $nbr($wd($2,5-)) $replace(%p,12,incompletely received from,13,incompletely sent to,2,received from,3,sent to) $wd($3,5-) on $wd($4,5-) at $wd($5,5-) $nbr($wd($6,5-) transfer time) } alias dcchist.remsel { var %d = $calc($dialog(dcchist).tab -1000) while ($did(dcchist,%d).sel) { did -d dcchist %d $v1 } savebuf -o 2- $+ $did(dcchist,%d).lines dcchist %d $+(script\txt\dcchist-,$replace(%d,12,ig,13,is,2,g,3,s),.txt) dcchist.ref } on *:filercvd:*:{ write -il1 script\txt\dcchist-g.txt 1 + 0 0 0 $+($get(-1).file, + 0 0 0 $bytes($get(-1).size,3).suf $iif($get(-1).resumed,$nbr(resumed at $bytes($v1,3).suf)), + 0 0 0 $get(-1), + 0 0 0 $time(dd.mm.yyyy $+ $chr(44) HH:nn:ss), + 0 0 0 $bytes($get(-1).cps,3).suf,/s + 0 0 0 $sduration($get(-1).secs), +) 0 0 0 $get(-1).ip } on *:filesent:*:{ write -il1 script\txt\dcchist-s.txt 1 + 0 0 0 $+($send(-1).file, + 0 0 0 $bytes($send(-1).size,3).suf $iif($send(-1).resumed,$nbr(resumed at $bytes($v1,3).suf)), + 0 0 0 $send(-1), + 0 0 0 $time(dd.mm.yyyy $+ $chr(44) HH:nn:ss), + 0 0 0 $bytes($send(-1).cps,3).suf,/s + 0 0 0 $sduration($send(-1).secs), +) 0 0 0 $send(-1).ip } on *:getfail:*:{ write -il1 script\txt\dcchist-ig.txt 1 + 0 0 0 $+($get(-1).file, + 0 0 0 $bytes($get(-1).rcvd,3).suf,/,$bytes($get(-1).size,3).suf $nbr($get(-1).pc $+ %) $iif($get(-1).resumed,$nbr(resumed at $bytes($v1,3).suf)), + 0 0 0 $get(-1), + 0 0 0 $time(dd.mm.yyyy $+ $chr(44) HH:nn:ss), + 0 0 0 $bytes($get(-1).cps,3).suf,/s + 0 0 0 $sduration($get(-1).secs), +) 0 0 0 $get(-1).ip } on *:sendfail:*:{ write -il1 script\txt\dcchist-is.txt 1 + 0 0 0 $+($send(-1).file, + 0 0 0 $bytes($send(-1).sent,3).suf,/,$bytes($send(-1).size,3).suf $nbr($send(-1).pc $+ %) $iif($send(-1).resumed,$nbr(resumed at $bytes($v1,3).suf)), + 0 0 0 $send(-1), + 0 0 0 $time(dd.mm.yyyy $+ $chr(44) HH:nn:ss), + 0 0 0 $bytes($send(-1).cps,3).suf,/s + 0 0 0 $sduration($send(-1).secs), +) 0 0 0 $send(-1).ip } alias kbhist { nndlg -m kbhist } dialog kbhist { title "Kick/ban history [/kbhist]" size -1 -1 461 297 option pixels icon script\pics\nntray.ico tab "Kicks", 1002, 4 2 452 264 list 2, 10 28 441 228, tab 1002 size tab "Bans", 1008 list 8, 10 28 441 228, tab 1008 size button "C&lose", 1, 377 269 80 24, ok menu "&File", 5 item "&Close", 10, 5 menu "&Edit history", 9 item "&Refresh", 11, 9 item break, 12, 9 item "R&emove selected", 13, 9 item "&Clear lists", 7, 9 menu "&Information", 3 item "&Post selected in active", 6, 3 item "&Display kick/ban history info", 4, 3 } on *:dialog:kbhist:*:*:{ if ($devent == init) { mdx SetControlMDX $dname 2,8 ListView report showsel rowselect > script\dlls\views.mdx did -i $dname 2,8 1 headerdims 110:1 80:2 80:3 140:4 did -i $dname 2 1 headertext + 0 Date + 0 Channel + 0 Nick + 0 Reason did -i $dname 8 1 headertext + 0 Date + 0 Channel + 0 Affected users + 0 Mask did -b $dname 13,6 kbhist.refresh } elseif ($devent == sclick) { if ($istok(1002 1008,$did,32)) { did $iif($did($calc($dialog($dname).tab -1000)).sel && !$nomsg,-e,-b) $dname 13,6 } elseif ($istok(2 8,$did,32)) { did $iif(!$did($did).sel || $cell($did,1) == No entries.,-b,-e) $dname 13 did $iif(!$did($did).sel || $nomsg || $cell($did,1) == No entries.,-b,-e) $dname 6 if (rclick * iswm $did($did,1)) { popdll.new popup popdll.add popup + 0 0 Refresh $cr kbhist.refresh popdll.add popup popdll.add popup $iif(!$did($did).sel || $cell($did,1) == No entries.,+d,+) 0 0 Remove selected $cr kbhist.remsel popdll.add popup $iif($did($did).lines == 1,+d,+) 0 0 Clear lists $cr kbhist.clear popdll.add popup popdll.add popup $iif(!$did($did).sel || $nomsg || $cell($did,1) == No entries.,+d,+) 0 0 Post in active $cr kbhist.say $active popdll.disp popup } else { sortmdx } } } elseif ($devent == menu) { if ($did == 7) { kbhist.clear } elseif ($did == 11) { kbhist.refresh } elseif ($did == 4) { idialog Kick/ban history entries: $kbhist.entries } elseif ($did == 6) { kbhist.say $active } elseif ($did == 13) { kbhist.remsel } elseif ($did == 10) { dialog -c $dname } } } alias kbhist.say { var %p = $calc($dialog(kbhist).tab -1000),%n = $1 tokenize 9 $did(kbhist,%p).seltext msg %n $sbr($replace(%p,2,Kicked,8,Banned)) $iif($wd($3,5-),$v1,no one) in $wd($2,5-) on $wd($1,6-) $nbr($replace(%p,2,reason:,8,mask:) $wd($4,5-)) } alias kbhist.clear { if ($ydialog(Do you really want to clear the kick/ban history?)) { write -c script\txt\kickhist.txt write -c script\txt\banhist.txt kbhist.refresh } } alias kbhist.refresh { if ($lines(script\txt\kickhist.txt)) { loadbuf -ro kbhist 2 script\txt\kickhist.txt } else { did -ra kbhist 2 1 + 0 0 0 No entries. } if ($lines(script\txt\banhist.txt)) { loadbuf -ro kbhist 8 script\txt\banhist.txt } else { did -ra kbhist 8 1 + 0 0 0 No entries. } did $iif($did(kbhist,4),-e,-b) kbhist 3 } alias kbhist.entries { return $calc($lines(script\txt\kickhist.txt) + $lines(script\txt\banhist.txt)) } alias kbhist.remsel { var %d = $calc($dialog(kbhist).tab -1000) while ($did(kbhist,%d).sel) { did -d kbhist %d $v1 } savebuf -o 2- $+ $did(kbhist,%d).lines kbhist %d $+(script\txt\,$replace(%d,2,kick,8,ban),hist.txt) kbhist.refresh } on *:ban:#:{ if ($nick == $me) { var %i = $ialchan($banmask,$chan,0),%r while (%i) { %r = %r $ialchan($banmask,$chan,%i).nick if ($len(%r) > 500) { %r = %r $+ ... break } dec %i } write -il1 script\txt\banhist.txt 1 + 0 0 0 $+($asctime(dd.mm.yy $+ $chr(44) HH:nn:ss), + 0 0 0 $chan, + 0 0 0 $replace(%r,$chr(32),$chr(44) $+ $chr(32)), + 0 0 0 $banmask) } } on *:kick:#:{ if ($nick == $me) { write -il1 script\txt\kickhist.txt 1 + 0 0 0 $+($asctime(dd.mm.yy $+ $chr(44) HH:nn:ss), + 0 0 0 $chan, + 0 0 0 $knick, + 0 0 0 $strip($1-)) } } on *:active:*:{ if ($dialog(dcchist)) { var %d = $calc($dialog($v1).tab -1000) did $iif(!$did(dcchist,%d).sel || $nomsg || $cell(dcchist,%d,1) == No entries.,-b,-e) dcchist 18 } if ($dialog(kbhist)) { var %d = $calc($dialog($v1).tab -1000) did $iif(!$did(kbhist,%d).sel || $nomsg || $cell(kbhist,%d,1) == No entries.,-b,-e) kbhist 6 } } alias eddialog { var %t = eddialog. $+ $trnum set %geninp.text $replace($1,,$crlf) set %geninp.ed $2 return $dialog(%t,%t,-4) } dialog eddialog.* { title "Input needed" size -1 -1 306 146 option pixels icon script\pics\nntray.ico edit "", 3, 2 92 301 22, result autohs button "&Ok", 4, 136 118 80 24, ok button "&Cancel", 5, 222 118 80 24 edit "", 2, 40 4 262 84, read multi return vsbar icon 1, 4 4 32 32, script\pics\nn.ico, 0, noborder } alias dddialog { var %t = dddialog. $+ $trnum set %geninp.text $replace($1,,$crlf) set %geninp.filter %t $2 set %geninp.ed $3 return $dialog(%t,%t,-4) } alias dddialog.df { var %t = $1- tokenize 32 %geninp.filter if (%t != $null) { did -a $1 3 %t } } dialog dddialog.* { title "Input needed" size -1 -1 306 146 option pixels icon script\pics\nntray.ico combo 3, 2 92 301 170, result sort size edit drop button "&Ok", 4, 136 118 80 24, ok button "&Cancel", 5, 222 118 80 24 edit "", 2, 40 4 262 84, read multi return vsbar icon 1, 4 4 32 32, script\pics\nn.ico, 0, noborder } on *:dialog:dddialog.*:*:*:{ if ($devent == init) { mdx SetBorderStyle $dname 2 tokenize 32 %geninp.filter filter -k $iif($isfile($3-),$mkfullfn($3-),$3-) $2 if (@* iswm $3-) { close -@ $3- } did -a $dname 2 %geninp.text if (%geninp.ed != $null) { did -a $dname 3 %geninp.ed did -c $dname 3 1 1 $calc($len($did(3)) +1) } unset %geninp.* } elseif ($devent == sclick) { if ($did == 5) { dialog -x $dname } elseif ($did == 4) { if ($did(3) == $null) { errdialog you did not enter a value! halt } } } } alias epdialog { var %t = epdialog. $+ $trnum set %geninp.text $replace($1,,$crlf) set %geninp.ed $2 return $dialog(%t,%t,-4) } dialog epdialog.* { title "Password input needed" size -1 -1 306 146 option pixels icon script\pics\nntray.ico edit "", 3, 2 92 301 22, result pass autohs edit "", 101, 2 92 301 22, hide autohs button "&Ok", 4, 136 118 80 24, ok button "&Cancel", 5, 222 118 80 24 edit "", 2, 40 4 262 84, read multi return vsbar icon 1, 4 4 32 32, script\pics\nn.ico, 0, noborder check "Show input", 100, 8 119 72 22 } on *:dialog:e?dialog.*:*:*:{ if ($devent == init) { mdx SetBorderStyle $dname 2 did -a $dname 2 %geninp.text if (%geninp.ed != $null) { did -a $dname 3 %geninp.ed did -c $dname 3 1 1 $calc($len($did(3)) +1) } unset %geninp.* } elseif ($devent == sclick) { if ($did == 5) { dialog -x $dname } elseif ($did == 4) { if ($did(3) == $null) { errdialog you did not enter a value! halt } } elseif ($did == 100) { did -vf $dname $iif($did($did).state,101,3) did -h $dname $iif($did($did).state,3,101) } } elseif ($devent == edit) && (epdialog.* iswm $dname) { if ($did == 3) { did -ra $dname 101 $did($did) } elseif ($did == 101) { did -ra $dname 3 $did($did) } } } alias idialog { var %t = idialog. $+ $trnum set %geninp.text $replace($1-,,$crlf) return $dialog(%t,%t,-4) } dialog idialog.* { title "Info" size -1 -1 305 121 option pixels icon script\pics\nntray.ico button "&Ok", 4, 221 93 80 24, ok icon 1, 4 4 32 32, script\pics\nn.ico, 0, noborder edit "", 2, 40 4 262 84, read multi return vsbar } on *:dialog:idialog.*:*:*:{ if ($devent == init) { mdx SetBorderStyle $dname 2 did -ra $dname 2 %geninp.text unset %geninp.text } } alias errdialog { var %t = errdialog. $+ $trnum set %geninp.text Error: $replace($1-,,$crlf) return $dialog(%t,%t,-4) } dialog errdialog.* { title "Error!" size -1 -1 305 121 option pixels icon script\pics\nntray.ico button "&Ok", 4, 221 93 80 24, ok icon 1, 4 4 32 32, script\pics\nn.ico, 0, noborder edit "", 2, 40 4 262 84, read multi return vsbar } on *:dialog:errdialog.*:*:*:{ if ($devent == init) { mdx SetBorderStyle $dname 2 did -ra $dname 2 %geninp.text unset %geninp.text } } alias ydialog { var %t = ydialog. $+ $trnum set %geninp.text $replace($1-,,$crlf) return $dialog(%t,%t,-4) } dialog ydialog.* { title "Yes/No?" size -1 -1 305 121 option pixels icon script\pics\nntray.ico button "&Yes", 3, 135 93 80 24, ok button "&No", 4, 221 93 80 24, cancel edit "", 2, 40 4 262 84, read multi return vsbar text "1", 5, -10 -10 2 2, result icon 1, 4 4 32 32, script\pics\nn.ico, 0, noborder } on *:dialog:ydialog.*:*:*:{ if ($devent == init) { mdx SetBorderStyle $dname 2 did -a $dname 2 %geninp.text unset %geninp.text } }