זהו בלק ליסט פשוט, ללא DLL לשימושכם הרחב.
המיוחד בו מבחינתי זה שניתן לרשום ערוצים ספציפים לכל אחד ספציפי שנמצא בבלק ליסט, דבר שלא פגשתי עד עכשיו (ממה שראיתי).
שם הקוד: Black List
יוצר: -Zen
גירסא: 1.0
תיאור: בלק ליסט, ניתן להוסיף כינוי, חלק מכינוי, כתובת, חלק מכתובת
הפעלה: <הסבר על הפעלת הקוד>
דרישות: נבדק על מירק גרסה 6.35
תמונה:
Address/Nick - רשמו כינוי או חלק מכינוי, כתובת או חלק מכתובת (שדה חובה)
Reason - סיבה, במידה ותשאירו ריק, הסיבה שתרשם כברירת מחדל תהיה "None"
Channels - במידה ורוצים לתת באן מכל הערוצים השאירו את השורה ריקה, אחרת רשמו ערוצים עם פסיק ביניהם, לדוגמה:
קוד: בחר הכל
#channel1,#channel2,...
הבאן יינתן רק מהערוצים שרשומים.
הכפתור [[ Scan ]] יתן לכם את האופציה לסרוק את הערוץ
דבר נוסף, ניתן לסמן כינוי או כינויים בערוצים, לחיצה ימנית, ולהוסיף לבלק ליסט.
במידה ויש באג נא לדווח.
קוד: בחר הכל
on @*:join:#:{
var %xx = 1,%zz = 1
while ($ini(blist.ini,%xx)) {
if ($+(*,$replace($v1,$chr(149),$chr(91),$chr(152),$chr(93)),*) iswm $address($nick,5)) && (($istok($readini(blist.ini,$ini(blist.ini,%xx),channels),$chan,44)) || ($readini(blist.ini,$ini(blist.ini,%xx),channels) == *)) { .timer -m 1 $calc(%zz * 500) ban -k # $nick 2 Black Listed, Reason: $readini(blist.ini,$ini(blist.ini,%xx),reason) | inc %zz }
inc %xx
}
}
menu nicklist {
Black List:/check.whoblist | addblist
}
alias addblist {
var %xs = $input(Are you sure?,y)
if ($snicks) && (%xs) {
var %x = 1,%xk = $input(Kick & Ban?,y),%xr = $input(Reason?,e),%xc = $input(channels?,e)
while ($snick($active,%x)) {
var %xn = $v1
if (%xk) { .timer -m 1 $calc(%x * 500) ban -k $active %xn 2 Black Listed, Reason: $iif(%xr,$v1,none) }
if (!$ini(blist.ini,$replace($address($v1,2),$chr(91),$chr(149),$chr(93),$chr(152)))) {
writeini blist.ini $replace($address(%xn,2),$chr(91),$chr(149),$chr(93),$chr(152)) channels $iif(%xc,$v1,*)
writeini blist.ini $replace($address(%xn,2),$chr(91),$chr(149),$chr(93),$chr(152)) reason $iif(%xr,$v1,none)
}
inc %x
}
}
}
menu channel {
Black List:/dialog $iif($dialog(blist),-v,-m) blist blist
}
dialog blist {
title "Black List"
size -1 -1 179 158
option dbu
list 1, 4 4 172 94, size hsbar vsbar extsel
edit "", 2, 38 103 138 10, autohs
edit "", 3, 38 113 138 10, autohs
edit "", 4, 38 123 138 10, autohs
button "ADD", 5, 38 144 34 12, flat
button "DELETE", 6, 73 144 34 12, flat
button "EDIT", 7, 108 144 34 12, flat
text "Address/Nick:", 8, 4 103 34 8
text "Channels:", 9, 14 123 25 8
text "(blank=all,separate=comma)", 10, 103 133 71 8
text "Reason:", 11, 18 113 21 8
box "", 12, 2 98 176 45
box "", 13, 2 -1 176 101
box "", 14, 1 -2 178 160
button "CLEAR", 15, 143 144 34 12, flat
button "[[ SCAN ]]", 16, 2 144 35 12, flat
}
on *:dialog:blist:sclick:*:{
if ($did == 5) && ($did(2)) {
if ($ini(blist.ini,$replace($did(2),$chr(91),$chr(149),$chr(93),$chr(152)))) { noop $input($did(2) Already exists,w,error) | halt }
did -a $dname 1 $did(2) $iif($did(4),$v1,$chr(35)) $did(3)
writeini blist.ini $replace($did(2),$chr(91),$chr(149),$chr(93),$chr(152)) channels $iif($did(4),$v1,*)
writeini blist.ini $replace($did(2),$chr(91),$chr(149),$chr(93),$chr(152)) reason $iif($did(3),$v1,none)
did -r $dname 2,3,4
}
elseif ($did == 6) && ($did(1).sel) {
remini blist.ini $replace($gettok($did(1).seltext,1,32),$chr(91),$chr(149),$chr(93),$chr(152))
did -d $dname 1 $v1
}
elseif ($did == 7) && ($did(1).seltext) {
remini blist.ini $replace($gettok($did(1).seltext,1,32),$chr(91),$chr(149),$chr(93),$chr(152))
did -ra $dname 2 $gettok($v1,1,32)
did -ra $dname 3 $gettok($v1,3-,32)
did -ra $dname 4 $iif($gettok($v1,2,32) != $chr(42),$v1,$chr(42))
did -d $dname 1 $did(1).sel
}
elseif ($did == 15) { did -r $dname 2,3,4 }
elseif ($did == 16) && ($did(1).lines > 0) && ($me isop $active) {
var %yy = 1,%zz = 1
while (%yy <= $nick($active,0)) {
var %xx = 1
while ($ini(blist.ini,%xx)) {
if ($+(*,$replace($v1,$chr(149),$chr(91),$chr(152),$chr(93)),*) iswm $address($nick($active,%yy),5)) && (($istok($readini(blist.ini,$ini(blist.ini,%xx),channels),$chan,44)) || ($readini(blist.ini,$ini(blist.ini,%xx),channels) == *)) { .timer -m 1 $calc(%zz * 500) ban -k $active $nick($active,%yy) 2 Black Listed, Reason: $readini(blist.ini,$ini(blist.ini,%xx),reason) | inc %zz }
inc %xx
}
inc %yy
}
}
}
on *:dialog:blist:init:*:{
check.whoblist
while ($did(1).lines < $ini(blist.ini,0)) {
did -a $dname 1 $replace($ini(blist.ini,$calc($did(1).lines +1)),$chr(149),$chr(91),$chr(152),$chr(93)) $readini(blist.ini,$ini(blist.ini,$calc($did(1).lines +1)),channels) $readini(blist.ini,$ini(blist.ini,$calc($did(1).lines +1)),reason)
}
}
alias check.whoblist {
if (!$chan($active).ial) { if ($dialog(blist)) { did -b blist 16 } | .enable #whoblist | who $active }
}
#whoblist on
raw 352:*:haltdef
raw 315:*:{ if ($dialog(blist)) { did -e blist 16 } | .disable #blist | haltdef }
#whoblist end