#query_block on on 1:OPEN:?:*:{ if ($BlockZeit($nick)) { msg $nick Query blocked! close -m $nick w_LogText $nick $1- if ($BlockLast($nick) > 3600) { MakeBlockUser $nick } } elseif ($QueryUser($nick) == 0) { msg $nick Query blocked! close -m $nick w_LogText $nick $1- MakeBlockUser $nick } else { msg $nick QUERYBLOCKER: Query zugelassen! msg $nick Moment bitte ich bin gleich bei dir $nick $+ , sofern ich am PC bin. ;o) echo -a * QUERYBLOCKER: $timestamp Neuer Queryuser: $nick $+ ! if (($QueryZFS == EIN) && ($active != Status Window)) { echo -s * QUERYBLOCKER: $timestamp Neuer Queryuser: $nick $+ ! echo -s - } if (($QueryZFR == EIN) && ($active != $comchan($nick,1)) && ($comchan($nick,0) >= 1)) { echo $comchan($nick,1) * QUERYBLOCKER: $timestamp Neuer Queryuser: $nick $+ ! } if ($QuerySound != Kein_Sound) { splay -w $QuerySound } } } #query_block end #notice_block on on ^1:NOTICE:*:?:{ if (($BlockZeit($nick)) && ($group(#query_block) == on)) { haltdef n_LogText $nick $1- } } #notice_block end on 1:START:{ if ($StatusAnzeige == EIN) { if ($group(#query_block) == on) { echo -s * QUERYBLOCKER: Eingeschaltet! echo -s - } else { echo -s * QUERYBLOCKER: Nicht Eingeschaltet! echo -s - } } } menu MenuBar { $iif($dialog(qb),$style(2)) Queryblocker... :{ dialog -ma qb QueryBlocker } } dialog QueryBlocker { title "Queryblocker" size -1 -1 400 350 tab "Übersicht",1,5 5 390 310 tab "Erlaubte User",2 tab "Geblockte User",3 tab "Konfiguration",4 box "Blocker",34,25 40 135 100,tab1 check " Query's EIN/AUS",5,40 70 115 15,tab1 check " Notice's EIN/AUS",6,40 100 115 15,tab1 box "Infos",7,180 40 195 100,tab1 text "Erlaubte User",8,200 62 100 15,tab1 list 9,310 60 40 20,tab1 text "Geblockte User",10,200 87 100 15,tab1 list 11,310 85 40 20,tab1 text "Logzeilen gesamt",12,200 112 100 15,tab1 list 13,310 110 40 20,tab1 box "Hilfe zum Blocker",14,25 160 350 130,tab1 text "",15,40 190 300 80,tab1 list 16,20 40 180 270,tab2 sort button "User hinzufügen",17,230 50 130 25,tab2 button "User bearbeiten",18,230 90 130 25,tab2 button "User löschen",19,230 130 130 25,tab2 box "User Editfeld",20,210 190 170 60,tab2 edit "",21,220 215 150 20,tab2 autohs button "Editfeld leeren",22,210 260 130 20,tab2 list 23,20 40 180 270,tab3 box "Infos zum User",24,210 35 170 95,tab3 text "Logzeilen Anzahl:",25,227 59 100 15,tab3 list 26,325 57 40 20,tab3 text "Letzte Blockmeldung vor:",27,227 85 140 15,tab3 list 28,225 100 140 20,tab3 button "User löschen",29,220 150 150 25,tab3 button "User erlauben",30,220 185 150 25,tab3 button "Logdatei aufrufen",31,220 220 150 25,tab3 button "Logdatei leeren",32,220 255 150 25,tab3 button "Dialog schliessen",33,100 320 200 25,cancel box "Erlaubte User",35,15 35 180 150,tab4 text "Sound beim Query:",36,32 60 150 15,tab4 button "",37,30 75 150 25,tab4 text "Zusätliche Meldung:",38,32 120 150 15,tab4 check " ...ins status Fenster",39,30 135 150 15,tab4 check " ...in gemeinsamen Raum",40,30 155 150 15,tab4 box "Geblockte User",41,205 35 180 150,tab4 text "Sound beim Block:",42,222 60 150 15,tab4 button "",43,220 75 150 25,tab4 text "Zusätliche Meldung:",44,222 120 150 15,tab4 check " ...ins aktive Fenster",45,220 135 150 15,tab4 check " ...in gemeinsamen Raum",46,220 155 150 15,tab4 box Infos zur Konfiguration,47,15 195 370 80,tab4 text "",48,25 213 350 55,tab4 check "Status des Queryblockers beim Start anzeigen",49,20 285 350 15,tab4 } on 1:dialog:qb:INIT:0:{ if ($group(#query_block) == on) { did -c qb 5 } else { did -b qb 6 } if ($group(#notice_block) == on) { did -c qb 6 } ShowLogZeilen FillQUserList FillBUserList did -a qb 15 Ist der Blocker für Query's eingeschaltet, kann optional gewählt $& werden ob auch Notice's von geblockten Usern mit unterdrückt werden sollen. $& $crlf $+ Bei ausgeschaltetem blocken von Query's werden Notice's immer $& durchgelassen und die Checkbox für die Notice's wird deaktiviert. AktQSButton if ($QueryZFS == EIN) { did -c qb 39 } if ($QueryZFR == EIN) { did -c qb 40 } AktBSButton if ($BlockZFA == EIN) { did -c qb 45 } if ($BlockZFR == EIN) { did -c qb 46 } did -a qb 48 Die Sounds können durch klicken der Button gewählt werden (Nur .wav Dateien). $& Meldungen zum Query werden grundsätzlich im aktiven Fenster angezeigt und$& die zum Block im status Fenster. Im gemeinsamen Raum wird nur angezeigt wenn $& das nicht das aktive Fenster ist. if ($StatusAnzeige == EIN) { did -c qb 49 } } :*************************** TAB 1 *************************** on 1:dialog:qb:SCLICK:5:{ if ($did(qb,5).state == 0) { .disable #query_block did -b qb 6 } else { .enable #query_block did -e qb 6 } } on 1:dialog:qb:SCLICK:6:{ if ($did(qb,6).state == 0) { .disable #notice_block } else { .enable #notice_block } } on 1:dialog:qb:SCLICK:9:{ did -u qb 9 } on 1:dialog:qb:SCLICK:11:{ did -u qb 11 } on 1:dialog:qb:SCLICK:13:{ did -u qb 13 } ;*************************** TAB 2 ******************************* on 1:dialog:qb:SCLICK:2:{ FillQUserList } on 1:dialog:qb:SCLICK:17:{ if ($did(qb,21)) { if ($BlockZeit($did(qb,21))) { var %dummy $input(ACHTUNG! $did(qb,21) ist ein geblockter User. Um $did(qb,21) $& einzutragen gehe auf "Geblockte User" und klicke "User erlauben".,-oi,INFO) } else { w_QueryUser $did(qb,21) did -r qb 21 FillQUserList } } else { var %dummy $input(Kein Nickname im User Editfeld vorhanden!,-oi,FEHLER) } } on 1:dialog:qb:SCLICK:18:{ if ($did(qb,16).sel) { did -r qb 21 did -a qb 21 $did(qb,16).seltext l_Queryuser $did(qb,16).seltext FillQUserList } else { var %dummy $input(Kein Nickname in der Liste markiert!,-oi,FEHLER) } } on 1:dialog:qb:SCLICK:19:{ if ($did(qb,16).sel) { var %sa_del_qu $input(Soll $did(qb,16).seltext wirklich von der Liste gelöscht werden?,-yq,ACHTUNG!) if (%sa_del_qu) { l_Queryuser $did(qb,16).seltext FillQUserList } } else { var %dummy $input(Kein Nickname in der Liste markiert!,-oi,FEHLER) } } on 1:dialog:qb:SCLICK:22:{ did -r qb 21 } ;************************** TAB 3 **************************** on 1:dialog:qb:SCLICK:3:{ FillBUserList } on 1:dialog:qb:SCLICK:23:{ var %bu_name $did(qb,23).seltext if ($LogFile(%bu_name)) { did -r qb 26 did -a qb 26 $LogLines(%bu_name) } did -r qb 28 did -a qb 28 $duration($BlockLast(%bu_name),2) } on 1:dialog:qb:SCLICK:26:{ did -u qb 26 } on 1:dialog:qb:SCLICK:28:{ did -u qb 28 } on 1:dialog:qb:SCLICK:29:{ if ($did(qb,23).sel) { var %sa_del_bu $input(Soll $did(qb,23).seltext wirklich von der Liste gelöscht werden? $& $crlf $+ Wenn ja $+ $chr(44) wird auch seine Logdatei gelöscht! $crlf $+ Letzte $& Blockmeldung vor: $duration($BlockLast($did(qb,23).seltext),2),-yq,ACHTUNG!) if (%sa_del_bu) { l_Blockuser $did(qb,23).seltext l_LogFile $did(qb,23).seltext FillBUserList } } else { var %dummy $input(Kein Nickname in der Liste markiert!,-oi,FEHLER) } } on 1:dialog:qb:SCLICK:30:{ if ($did(qb,23).sel) { var %sa_erl_bu $input(Soll es $did(qb,23).seltext künftig erlaubt sein dich $& anzuflüstern? $crlf $+ Wenn ja $+ $chr(44) werden User und Logdatei gelöscht!,-yq,ACHTUNG!) if (%sa_erl_bu) { l_Blockuser $did(qb,23).seltext l_LogFile $did(qb,23).seltext w_QueryUser $did(qb,23).seltext FillBUserList } } else { var %dummy $input(Kein Nickname in der Liste markiert!,-oi,FEHLER) } } on 1:dialog:qb:SCLICK:31:{ if ($did(qb,23).sel) { run notepad.exe $LogName($did(qb,23).seltext) } else { var %dummy $input(Kein Nickname in der Liste markiert!,-oi,FEHLER) } } on 1:dialog:qb:SCLICK:32:{ if ($did(qb,23).sel) { LogDelete $did(qb,23).seltext FillBUserList } else { var %dummy $input(Kein Nickname in der Liste markiert!,-oi,FEHLER) } } ;************************* TAB 4 **************************** on 1:dialog:qb:SCLICK:37:{ var %querysfile $sfile($mircdir,Query-Sound wählen,Auswählen) if (%querysfile) { if ($right(%querysfile,4) != .wav) { var %dummy $input(Es dürfen nur .wav Dateien als Sound gewählt werden!,-oi,FEHLER) } else { w_QuerySound %querysfile } } else { w_QuerySound Kein_Sound } AktQSButton } on 1:dialog:qb:SCLICK:39:{ if ($did(qb,39).state == 0) { w_QueryZFS AUS } else { w_QueryZFS EIN } } on 1:dialog:qb:SCLICK:40:{ if ($did(qb,40).state == 0) { w_QueryZFR AUS } else { w_QueryZFR EIN } } on 1:dialog:qb:SCLICK:43:{ var %blocksfile $sfile($mircdir,Block-Sound wählen,Auswählen) if (%blocksfile) { if ($right(%blocksfile,4) != .wav) { var %dummy $input(Es dürfen nur .wav Dateien als Sound gewählt werden!,-oi,FEHLER) } else { w_BlockSound %blocksfile } } else { w_BlockSound Kein_Sound } AktBSButton } on 1:dialog:qb:SCLICK:45:{ if ($did(qb,45).state == 0) { w_BlockZFA AUS } else { w_BlockZFA EIN } } on 1:dialog:qb:SCLICK:46:{ if ($did(qb,46).state == 0) { w_BlockZFR AUS } else { w_BlockZFR EIN } } on 1:dialog:qb:SCLICK:49:{ if ($did(qb,49).state == 0) { w_StatusAnzeige AUS } else { w_StatusAnzeige EIN } } ;************************** ALIASES ************************* Alias MakeBlockUser { w_BlockUser $1 BlockMessage $1 echo -s * QUERYBLOCKER: $timestamp $1 geblockt! echo -s - if (($BlockZFA == EIN) && ($active != Status Window)) { echo -a * QUERYBLOCKER: $timestamp $1 geblockt! } if (($BlockZFR == EIN) && ($active != $comchan($1,1)) && ($comchan($1,0) >= 1)) { echo $comchan($1,1) * QUERYBLOCKER: $timestamp $1 geblockt! } echo -a 10----11>10 Query von $1 geblockt } Alias ShowErlUser { did -r qb 9 did -a qb 9 $LinesQueryUser } Alias ShowGebUser { did -r qb 11 did -a qb 11 $BlockLines } Alias ShowLogZeilen { did -r qb 13 var %slz_anzahl 0 var %slz_zähler 1 while (%slz_zähler <= $BlockLines) { if ($LogLines($BlockUser(%slz_zähler)) > 0) { inc %slz_anzahl $LogLines($BlockUser(%slz_zähler)) } inc %slz_zähler } did -a qb 13 %slz_anzahl } Alias FillQUserList { did -r qb 16 var %fqul_zähler 1 while (%fqul_zähler <= $LinesQueryUser) { did -a qb 16 $QueryUserName(%fqul_zähler) inc %fqul_zähler } ShowErlUser } Alias FillBUserList { did -r qb 23,26,28 var %fbul_zähler 1 while (%fbul_zähler <= $BlockLines) { did -a qb 23 $BlockUser(%fbul_zähler) inc %fbul_zähler } ShowGebUser } Alias AktQSButton { did -r qb 37 if ($QuerySound == Kein_Sound) { did -a qb 37 $QuerySound } else { did -a qb 37 $nopath($QuerySound) } } Alias AktBSButton { did -r qb 43 if ($BlockSound == Kein_Sound) { did -a qb 43 $BlockSound } else { did -a qb 43 $nopath($BlockSound) } } Alias StatusAnzeige { return $readini(Query-Daten\Q-Config.ini,ALLG,StatusAnz) } Alias w_StatusAnzeige { writeini Query-Daten\Q-Config.ini ALLG StatusAnz $1 } Alias QuerySound { return $readini(Query-Daten\Q-Config.ini,QUERY,Sound) } Alias w_QuerySound { writeini Query-Daten\Q-Config.ini QUERY Sound $1 } Alias QueryZFS { return $readini(Query-Daten\Q-Config.ini,QUERY,ZF_Status) } Alias w_QueryZFS { writeini Query-Daten\Q-Config.ini QUERY ZF_Status $1 } Alias QueryZFR { return $readini(Query-Daten\Q-Config.ini,QUERY,ZF_Raum) } Alias w_QueryZFR { writeini Query-Daten\Q-Config.ini QUERY ZF_Raum $1 } Alias BlockSound { return $readini(Query-Daten\Q-Config.ini,BLOCK,Sound) } Alias w_BlockSound { writeini Query-Daten\Q-Config.ini BLOCK Sound $1 } Alias BlockZFA { return $readini(Query-Daten\Q-Config.ini,BLOCK,ZF_Aktiv) } Alias w_BlockZFA { writeini Query-Daten\Q-Config.ini BLOCK ZF_Aktiv $1 } Alias BlockZFR { return $readini(Query-Daten\Q-Config.ini,BLOCK,ZF_Raum) } Alias w_BlockZFR { writeini Query-Daten\Q-Config.ini BLOCK ZF_Raum $1 } Alias QueryUser { $read(Query-Daten\Queryuser.txt,s,$1) return $readn } Alias QueryUserName { return $read(Query-Daten\Queryuser.txt,$1) } Alias LinesQueryUser { return $lines(Query-Daten\Queryuser.txt) } Alias w_QueryUser { write -s $1 Query-Daten\Queryuser.txt $1 } Alias l_QueryUser { write -ds $1 Query-Daten\Queryuser.txt } Alias w_LogText { write -a Query-Daten\ $+ $1 $+ log.txt $timestamp < $+ $1 $+ > $2- } Alias n_LogText { write -a Query-Daten\ $+ $1 $+ log.txt $timestamp - $+ $1 $+ - $2- } Alias LogFile { return $exists(Query-Daten\ $+ $1 $+ log.txt) } Alias LogLines { return $lines(Query-Daten\ $+ $1 $+ log.txt) } Alias LogName { return Query-Daten\ $+ $1 $+ log.txt } Alias LogDelete { write -c Query-Daten\ $+ $1 $+ log.txt } Alias l_LogFile { .remove Query-Daten\ $+ $1 $+ log.txt } Alias BlockZeit { return $read(Query-Daten\Blockuser.txt,s,$1) } Alias BlockLast { return $calc($ctime - $BlockZeit($1)) } Alias BlockLines { return $lines(Query-Daten\Blockuser.txt) } Alias l_BlockUser { write -ds $1 Query-Daten\Blockuser.txt } Alias w_BlockUser { write -s $1 Query-Daten\Blockuser.txt $1 $ctime } Alias BlockUser { var %bu_zeile $read(Query-Daten\Blockuser.txt,$1) var %bu_länge $calc($pos(%bu_zeile,$chr(32),1) - 1) return $left(%bu_zeile,%bu_länge) } Alias BlockMessage { var %blockraum_zähler 1 while (%blockraum_zähler <= $chan(0)) { var %akt_block_räume %akt_block_räume $chan(%blockraum_zähler) $+ , inc %blockraum_zähler } .msg $1 QUERYBLOCKER: Query geblockt! .msg $1 Hallo $1 $+ , du stehst nicht auf meiner Liste mit vertrauten Usern, also kannst du mich nicht anflüstern. if (%blockraum_zähler == 1) { .msg $1 Zur Zeit bin ich auch in keinem Raum, so dass du mich nicht erreichen kannst. } elseif (%blockraum_zähler == 2) { .msg $1 Wenn du mit mir sprechen willst erreichst du mich in folgendem Raum: %akt_block_räume } else { .msg $1 Wenn du mit mir sprechen willst erreichst du mich in folgenden Räumen: %akt_block_räume } .msg $1 Diese Meldung wird frühestens in 1 Stunde das nächste mal angezeigt! } ;------------ Diese und alle nachfolgenden Zeilen, ------------- ;----- können nach dem Laden des Scritpes entfernt werden! ----- ;********************** Installation *************************** on 1:LOAD:{ if (!$exists(Query-Daten)) { .mkdir Query-Daten } if (!$exists(Query-Daten\Queryuser.txt)) { write -c Query-Daten\Queryuser.txt } if (!$exists(Query-Daten\Blockuser.txt)) { write -c Query-Daten\Blockuser.txt } w_StatusAnzeige EIN w_QuerySound Kein_Sound w_QueryZFS AUS w_QueryZFR AUS w_BlockSound Kein_Sound w_BlockZFA AUS w_BlockZFR AUS }