rendered paste body; Advanced Highlight System Version 0.1
; Created by Chessnut of SwiftIRC.
; Load into your remotes and right click anywhere to start.
alias hlog {
if ($window(@HighlightLog)) window -c @HighlightLog
window -laC +st @HighlightLog -1 -1 650 218
loadbuf 1-12 -r @HighlightLog h_sys.txt
}
menu @HighlightLog {
dclick: if ($gettok($line($menu,$1),1,32)) window -a $v1
rclick: clipboard $line($menu,$1)
}
alias hlight {
if ($dialog(h_sys)) dialog -x h_sys
dialog -man h_sys h_sys
}
alias -l codeit return $replace($1,$chr(32),$chr(135),$chr(91),$chr(134),$chr(93),$chr(156),=,$chr(166))
alias -l decodeit return $replace($1,$chr(135),$chr(32),$chr(134),$chr(91),$chr(156),$chr(93),$chr(166),=)
dialog h_sys {
title "Advanced Highlight System"
size -1 -1 184 162
option dbu
check "Enable Advanced Highlighting", 1, 8 7 86 10
text "Highlight List:", 2, 8 19 33 8
list 3, 8 28 122 98, size
button "Add", 4, 139 35 37 12
button "Edit", 5, 139 51 37 12
button "Delete", 6, 139 67 37 12
button "Ok", 7, 76 137 37 12, default ok cancel
check "Show log on refocus", 8, 9 128 60 10
button "Move Up", 9, 139 105 37 12
button "Move Down", 10, 139 121 37 12
button "Ignore List", 11, 139 83 37 12
text "Adv. Highlights v0.1 Created by Chessnut", 12, 126 144 53 16
}
dialog h_sysignore {
title "Ignore List"
size -1 -1 168 132
option dbu
list 1, 9 16 113 90, size vsbar
text "Names and addresses to ignore on highlight:", 2, 14 6 117 8
button "Add", 3, 125 24 37 12
button "Delete", 4, 125 40 37 12
button "Ok", 6, 73 112 37 12, ok cancel
}
dialog h_syspop {
title "Highlighted!"
size -1 -1 178 62
option dbu
button "Cancel", 1, 52 46 37 12, ok cancel
text "", 2, 13 7 156 35, center
button "Goto", 3, 95 46 37 12
text "", 4, 138 48 25 8, hide
}
dialog h_sys_add {
title "Add Highlight"
size -1 -1 124 204
option dbu
text "Expression to highlight:", 1, 12 7 61 8
edit "", 2, 11 17 105 10, autohs
combo 3, 11 41 55 41, size drop
text "Colour of highlight:", 4, 12 31 52 8
button "...", 19, 70 40 47 12, disable
check "Flash message:", 7, 12 56 50 10
edit "", 8, 11 66 50 10, disable autohs
check "Limit flash to:", 9, 71 56 50 10
edit "", 10, 70 66 17 10, disable limit 2
text "time(s)", 11, 88 67 25 8
check "Pop-up notifier", 12, 12 80 50 10
button "Ok", 13, 45 184 37 12, default
text "...", 14, 79 7 25 8, hide
text "", 15, 83 81 25 8, hide
check "Autofocus", 16, 65 80 50 10
check "Echo active window", 17, 12 90 60 10
check "Play Sound:", 18, 71 29 40 10
text "Only trigger in channels/queries with:", 5, 12 101 92 8
text "Use commas to separate multiple channels/nicks. Leave blank to trigger anywhere.", 6, 6 124 117 15
edit "", 20, 12 110 104 10, autohs
edit "", 22, 12 150 103 10, disable autohs
check "Auto-respond with message:", 21, 12 140 79 10
text "Highlight with event:", 23, 7 163 52 8
check "On Text", 24, 12 172 33 10
check "On Action", 25, 45 172 33 10
check "On Notice", 26, 82 172 36 10
}
menu status,query,nicklist,channel,menubar {
.Advanced Highlights
..Main: hlight
..Logs: hlog
.. $+ $iif(($menu != nicklist && $menu != query) || !$1,$style(2)) Add nick to highlight ignore: { writeini h_sys.ini ignore $1 1 | echo -a $1 added to highlight ignore list. You will no longer be highlighted by this nick. }
.. $+ $iif(($menu != nicklist && $menu != query) || !$1,$style(2)) Add address to highlight ignore: { writeini h_sys.ini ignore $address($1,2) 1 | echo -a $address($1,2) added to highlight ignore list. You will no longer be highlighted by a nick using this address. }
}
;- ON INITIALISATION
on *:dialog:h_sys:init:0: {
var %x 1
if ($exists(h_sys.ini)) {
did $+(-,$iif($readini(h_sys.ini,preferences,enable) == 1,c,u)) $dname 1
did $+(-,$iif($readini(h_sys.ini,preferences,applog) == 1,c,u)) $dname 8
while ($ini(h_sys.ini,expressions,%x)) {
did -a $dname 3 $decodeit($ifmatch)
inc %x
}
}
else did -c $dname 1,8
}
;- ADD CLICK
on *:dialog:h_sys:sclick:4: {
if ($dialog(h_sys_add)) dialog -x h_sys_add
dialog -mad h_sys_add h_sys_add
}
;- EDIT CLICK
on *:dialog:h_sys:sclick:5: {
if ($did(3).sel) {
writeini h_sys.ini preferences active $codeit($did(3).seltext)
if ($dialog(h_sys_edit)) dialog -x h_sys_edit
dialog -mad h_sys_edit h_sys_add
}
}
;- DELETE CLICK
on *:dialog:h_sys:sclick:6: {
if ($did(3).sel) {
remini h_sys.ini expressions $codeit($did(3).seltext)
did -d $dname 3 $v1
}
}
;- IGNORE LIST CLICK
on *:dialog:h_sys:sclick:11: {
if ($dialog(h_sysignore)) dialog -x h_sysignore
dialog -mad h_sysignore h_sysignore
}
;- MOVE UP CLICK
on *:dialog:h_sys:sclick:9: {
if ($did(3).sel != 1 && $did(3).sel) {
did -ic $dname 3 $calc($v1 - 1) $did(3,$v1)
did -d $dname 3 $calc($v1 + 1)
if ($read(h_sys.ini,w,$+($codeit($did(3).seltext),=*))) {
write $+(-il,$calc($readn - 1)) h_sys.ini $v1
write $+(-dl,$calc($readn + 1)) h_sys.ini
}
}
}
;- MOVE DOWN CLICK
on *:dialog:h_sys:sclick:10: {
if ($did(3).sel != $did(3).lines && $did(3).sel) {
did -ic $dname 3 $calc($v1 + 2) $did(3,$v1)
did -d $dname 3 $v1
if ($read(h_sys.ini,w,$+($codeit($did(3).seltext),=*))) {
write $+(-il,$calc($readn + 2)) h_sys.ini $v1
write $+(-dl,$readn) h_sys.ini
}
}
}
;- OK CLICK
on *:dialog:h_sys:sclick:11: {
writeini h_sys.ini preferences enable $iif($did(1).state == 1,1,0)
writeini h_sys.ini preferences applog $iif($did(8).state == 1,1,0)
}
;- OK CLICK
on *:dialog:h_sys:sclick:7: {
writeini h_sys.ini preferences enable $iif($did(1).state == 1,1,0)
writeini h_sys.ini preferences applog $iif($did(8).state == 1,1,0)
}
; --------------------
;- ADD DIALOG INIT
on *:dialog:h_sys_add:init:0: {
didtok $dname 3 46 < None >.White.Black.Dark Blue.Dark Green.Red $&
.Maroon.Purple.Orange.Yellow.Green.Turquoise.Cyan.Blue.Magenta.Dark Grey.Grey
did -c $dname 3,24-26 1
}
;- EDIT DIALOG INIT
on *:dialog:h_sys_edit:init:0: {
dialog -t $dname Edit Highlight
didtok $dname 3 46 < None >.White.Black.Dark Blue.Dark Green.Red $&
.Maroon.Purple.Orange.Yellow.Green.Turquoise.Cyan.Blue.Magenta.Dark Grey.Grey
did -c $dname 3 1
did -a $dname 2,15 $decodeit($readini(h_sys.ini,n,preferences,active))
if ($readini(h_sys.ini,n,expressions,$codeit($did(2)))) {
tokenize 135 $ifmatch
did -c $dname 3 $1
did -ar $dname 14 $2
did -ar $dname 19 $nopath($2)
did $+(-,$iif($3 == 1,c,u)) $dname 7
did $+(-,$iif($did(7).state == 1,e,b)) $dname 8
did -ar $dname 8 $iif($4 != __,$v1)
did $+(-,$iif($5 == 1,c,u)) $dname 9
did $+(-,$iif($did(7).state == 1,e,b)) $dname 9
did $+(-,$iif($did(9).state == 1 && $did(7).state == 1,e,b)) $dname 10
did -ar $dname 10 $iif($6 != __,$v1)
did $+(-,$iif($7 == 1,c,u)) $dname 12
did $+(-,$iif($8 == 1,c,u)) $dname 16
did $+(-,$iif($9 == 1,c,u)) $dname 17
did $+(-,$iif($10 == 1,c,u)) $dname 18
did $+(-,$iif($did(18).state == 1,e,b)) $dname 19
if ($11 != __) did -ar $dname 20 $11
did $+(-,$iif($12 == 1,c,u)) $dname 21
if ($13 != __) did -ar $dname 22 $13
did $+(-,$iif($did(21).state == 1,e,b)) $dname 22
if ($istok($14,text,46)) did -c $dname 24
if ($istok($14,action,46)) did -c $dname 25
if ($istok($14,notice,46)) did -c $dname 26
}
}
;- ADD/EDIT DIALOG F CHOOSE
on *:dialog:h_sys_*:sclick:19: {
did -ar $dname 14 $iif($sfile($iif($did(14) != ... && $did(14),$+($nofile($v1),*.wav;*.mid;*.mp3),$+($scriptdir,*.wav;*.mid;*.mp3)),Select a sound file),$ifmatch,$did(14))
did -ar $dname $did $nopath($did(14))
}
;- TICK/UNTICK
on *:dialog:h_sys_*:sclick:7,9,18,21: {
did $+(-,$iif($did($did).state == 1,e,b)) $dname $calc($did + 1)
if ($did == 7) {
did $+(-,$iif($did($did).state == 1,e,b)) $dname 9
if ($did(9).state == 1 && $did($did).state == 1) did -e $dname 10
else did -b $dname 10
}
}
;- EDIT DIALOG OK
on *:dialog:h_sys_edit:sclick:13: {
if ($did(2)) {
if ($did(2) != $did(15)) {
write $+(-w,$codeit($did(15)),=*) h_sys.ini $+($codeit($did(2)),=,$did(3).sel,‡,$did(14),‡,$did(7).state,‡,$iif($did(8),$v1,__),‡,$did(9).state, $+ $&
‡,$iif($did(10),$v1,__),‡,$did(12).state,‡,$did(16).state,‡,$did(17).state,‡,$did(18).state,‡, $+ $& $iif($did(20),$v1,__),‡,$did(21).state,‡,$iif($did(22),$v1,__),‡,$iif($did(24).state == 1,text,0),.,$iif($did(25).state == 1,action,0),.,$iif($did(26).state == 1,notice,0))
did -oc h_sys 3 $didwm(h_sys,3,$did(15)) $did(2)
}
else writeini h_sys.ini expressions $codeit($did(2)) $+($did(3).sel,‡,$did(14),‡,$did(7).state,‡,$iif($did(8),$v1,__),‡,$did(9).state,‡ $+ $&
,$iif($did(10),$v1,__),‡,$did(12).state, $+ $&
‡,$did(16).state,‡,$did(17).state,‡,$did(18).state,‡,$iif($did(20),$v1,__),‡,$did(21).state,‡, $+ $&
$iif($did(22),$v1,__),‡,$iif($did(24).state == 1,text,0),.,$iif($did(25).state == 1,action,0),.,$iif($did(26).state == 1,notice,0))
did -c h_sys 3 $didwm(h_sys,3,$did(15))
}
dialog -x $dname $dname
}
;- ADD DIALOG OK
on *:dialog:h_sys_add:sclick:13: {
if ($did(2)) {
writeini h_sys.ini expressions $codeit($did(2)) $+($did(3).sel,‡,$did(14),‡,$did(7).state,‡,$iif($did(8),$v1,__), $+ $&
‡,$did(9).state,‡,$iif($did(10),$v1,__),‡,$did(12).state,‡,did(16).state,‡, $+ $&
$did(17).state,‡,$did(18).state,‡,$iif($did(20),$v1,__),‡,$did(21).state,‡,$iif($did(22),$v1,__), $+ $&
‡,$iif($did(24).state == 1,text,0),.,$iif($did(25).state == 1,action,0),.,$iif($did(26).state == 1,notice,0))
did -ca h_sys 3 $did(2)
}
dialog -x $dname $dname
}
; ---------------------------------
alias -l h_check {
if ($readini(h_sys.ini,n,preferences,enable) == 1) {
var %h_chan $1, %h_nick $2, %h_event $3, %x 1
set %syspop3 $4-
while ($ini(h_sys.ini,expressions,%x)) {
var %k $decodeit($ifmatch)
if ((($regex(%k,/\/.*\//) && $regex(%syspop3,%k)) || (!$regex(%k,/\/.*\//) && $regex(%syspop3,/\b(\Q $+ $replace(%k,$chr(42),$+(\E,$chr(46),$chr(42),\Q),$chr(44),$+(\E,$chr(124),\Q)) $+ \E)\b/i))) && $iif($gettok($readini(h_sys.ini,expressions,$codeit(%k)),11,135) != __,$istok($v1,$iif(%h_chan,$v1,%h_nick),44),%h_nick) && !$readini(h_sys.ini,ignore,%h_nick) && !$readini(h_sys.ini,ignore,$address(%h_nick,2))) {
var %c 1
tokenize 135 $readini(h_sys.ini,expressions,$codeit(%k))
if ($istok($14,%h_event,46)) {
haltdef
if (!$appactive) set %gh_sys 1
while ($readini(mirc.ini,cnicks,$+(n,%c))) {
if ($regex($ifmatch,/^\x2c(\d+)\x2c{3}\d\x2c1/)) { var %regc $regml(1) | break }
inc %c
}
if (!%regc) {
var %t 1
while ($chan(%t)) {
if ($nick($v1,1,r)) { var %regc $nick($chan(%t),$v1).color | break }
inc %t
}
}
if (%h_event == text && $istok($14,text,46)) {
echo $iif($1 == 1,$null,$calc($1 - 2)) -tm $iif(%h_chan,$v1,%h_nick) $+(<,$chr(3),$iif(%h_chan,$nick(%h_chan,%h_nick).color,$iif(%regc,$v1,1)), $+ $&
$iif($gettok($readini(mirc.ini,options,n2),30,44) == 1 && %h_chan,$nick(%h_chan,%h_nick).pnick,%h_nick),$chr(3),>) %syspop3
write -il1 h_sys.txt $iif(%h_chan,$v1,%h_nick) in a $+($chr(2),%h_event,$chr(2)) event: $timestamp $+(<,$chr(3),$iif(%h_chan,$nick(%h_chan,%h_nick).color,$iif(%regc,$v1,1)), $+ $& $iif($gettok($readini(mirc.ini,options,n2),30,44) == 1 && %h_chan,$nick(%h_chan,%h_nick).pnick,%h_nick),$chr(3),>) %syspop3
beep 1
}
elseif (%h_event == action && $istok($14,action,46)) {
echo $iif($1 == 1,$null,$calc($1 - 2)) -tm $iif(%h_chan,$v1,%h_nick) $+($chr(3),$color(action)) $+ * %h_nick $+ $chr(3) $+ $iif($1 == 1,$null,$calc($1 - 2)) %syspop3
write -il1 h_sys.txt $iif(%h_chan,$v1,%h_nick) in an $+($chr(2),%h_event,$chr(2)) event: $+($chr(3),$color(action),$timestamp) * $nick %syspop3
beep 1
}
elseif (%h_event == notice && $istok($14,notice,46)) {
echo $iif($1 == 1,$null,$calc($1 - 2)) -tm $iif(%h_chan,$v1,$active) $+($chr(3),$color(notice),-,$nick,$iif($chan,: $+ $v1,$null),-) $+ $chr(3) $+ $iif($1 == 1,$null,$calc($1 - 2)) %syspop3
write -il1 h_sys.txt $iif(%h_chan,$v1,%h_nick) in a $+($chr(2),%h_event,$chr(2)) event: $+($chr(3),$color(notice),$timestamp) $+(-,$nick,$iif($chan,: $+ $v1,$null),-) %syspop3
beep 1
}
if ($lines(h_sys.txt) > 12) write -dl13 h_sys.txt
window -g2 $iif(%h_chan,$v1,$iif(%h_event == notice,$active,%h_nick))
if ($2 != ... && $10 == 1) .splay $qt($2)
if ($4 != __ && $3 == 1) flash $+(-r,$iif($6 != __ && $6 isnum && $5 == 1,$6)) $4
if ($7 == 1 && (($appactive && %h_chan != $active) || !$appactive)) {
set %syspop You have been highlighted by %h_nick in $iif(%h_chan,$v1,a query window)
if (%h_event == text && $istok($14,text,46)) { set %syspop2 $timestamp $+(<,$iif($gettok($readini(mirc.ini,options,n2),30,44) == 1 && %h_chan,$nick(%h_chan,%h_nick).pnick,%h_nick),>) %syspop3 }
elseif (%h_event == action && $istok($14,action,46)) { set %syspop2 $timestamp * $nick %syspop3 }
elseif (%h_event == notice && $istok($14,notice,46)) { set %syspop2 $timestamp $+(-,$nick,$iif($chan,: $+ $v1,$null),-) %syspop3 }
dialog -mad $+(h_syspop,$ticks) h_syspop
}
if ($8 == 1) {
window -a $iif(%h_chan,$v1,%h_nick)
findtext -n %syspop3
}
if ($9 == 1 && (($appactive && %h_chan != $active) || !$appactive)) {
echo $iif($1 == 1,$null,$calc($1 - 2)) -a You have just been highlighted by %h_nick in $iif(%h_chan,$v1,$iif(%h_event == notice,a private notice,a query window))
}
if ($12 == 1 && $13 != __) notice %h_nick $13
halt
}
}
inc %x
}
}
unset %syspop3
}
on ^*:text:*:*: h_check $iif($chan,$v1,0) $nick $event $1-
on ^*:action:*:*: h_check $iif($chan,$v1,0) $nick $event $1-
on ^*:notice:*:*: h_check $iif($chan,$v1,0) $nick $event $1-
on *:appactive: {
if ($appactive && $readini(h_sys.ini,preferences,applog) == 1 && %gh_sys == 1) {
hlog
}
unset %gh_sys
}
; --------------------------------------
;- POPUP INIT
on *:dialog:h_syspop*:init:0: did -ar $dname 2 $+(%syspop,$crlf,$crlf,%syspop2)
on *:dialog:h_syspop*:sclick:3: {
noop $regex(%syspop,/highlighted by (.*) in (#.*)?/)
dialog -x $dname
window -a $regml($regml(0))
findtext -r %syspop3
}
on *:dialog:h_syspop*:close:0: unset %syspop*
; --------------------------------------
;- IGNORE LIST INIT
on *:dialog:h_sysignore:init:0: {
var %x 1
while ($ini(h_sys.ini,ignore,%x)) {
did -a $dname 1 $v1
inc %x
}
}
;- ADD CLICK
on *:dialog:h_sysignore:sclick:3: {
if ($?="Enter a name or address to add to the ignore list. $crlf $+ If adding an address, use banmask 2.") {
writeini h_sys.ini ignore $v1 1
did -ac $dname 1 $v1
}
}
;- DELETE CLICK
on *:dialog:h_sysignore:sclick:4: {
if ($did(1).sel) {
remini h_sys.ini ignore $did(1).seltext
did -d $dname 1 $v1
}
}