|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
I made a small dialog for private offensive words and I cant get the trigger to work?
dialog spamdetect {
title "Private Offensive"
size -1 -1 88 75
option dbu
list 1, 2 3 50 59, size
button "Add", 2, 57 6 24 9,flat
button "Del", 3, 57 18 24 9,flat
box "", 5, 53 0 33 60
button "List", 6, 57 30 24 9,flat
button "Close", 11, 57 42 24 9,flat,ok,cancel
}
on *:dialog:spamdetect:sclick:2:{
.write spamdetect.txt $?="Spam Word To Add"
dialog -x $dname
dialog -dmn spamdetect spamdetect
}
on *:dialog:spamdetect:sclick:3:{
.write -ds $+ $?="Spam Word To Delete" spamdetect.txt
dialog -x $dname
dialog -dmn spamdetect spamdetect
}
on *:dialog:spamdetect:sclick:6:{
.run spamdetect.txt
}
on *:dialog:spamdetect:init:*:{
loadbuf -o $dname 1 $+(",$mircdir/spamdetect.txt,")
}
on *:open:?:*: {
var %Spamword = 1
while (%Spamword <= $lines(spamdetect.txt)) {
if ($+(*,$read(spamdetect.txt,%Spamword),*) iswm $1-) {
.kick # $nick Private Offensive Language
.mode # +b $nick 2
}
inc %Spamword
}
}
on ^*:notice:*:?: {
var %Spamword = 1
while (%Spamword <= $lines(spamdetect.txt)) {
if ($+(*,$read(spamdetect.txt,%Spamword),*) iswm $1-) {
haltdef
}
inc %Spamword
}
}
alias spamdetect {
inc %i
if (%i == 1) write spamdetect.txt
dialog -dmn spamdetect spamdetect
}
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
I don't see an issue your looping through your text file ok, it should pull up line by line Unless the entries are like ajdjd ajjdad then i could see why its not working but if its ajdjd ajjdad then everything should be fine I can suggest this... on *:open:?:*: {
if ($regex($1-,/(myword|nextword|wow|I|can|choose|alot)/g) == 1) {
.kick # $nick Private Offensive Language
.mode # +b $nick 2
}
}
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
|
|
|
|
Joined: Dec 2002
Posts: 503
Fjord artisan
|
Fjord artisan
Joined: Dec 2002
Posts: 503 |
'Not Working' is really not very helpful. Read through this and give us some more details as to what is 'not working'.
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
I did say before that it wont trigger unless its something else dunno, thats why i am asking help from real scripters.
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
Does it atleast kick users out of channels? if not then its based on your events?
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
If I use on *:TEXT:*:#:{ yes it does kick from the channel but I want to use it for private spamwords so I want to use on *:open:?:*: { and on ^*:notice:*:?: {
Last edited by bcancer; 27/10/07 02:17 AM.
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
Ok so A) your kicking using # it will not work since your not on the channel... I mean use .kick #channel because on OPEN:?: << is for privmsg the OP can be on #mirc and msg you and you will not have the ability to kick him.. EDIT: Also try it this method too from earlier.
on *:open:?:*: {
if ($regex($1-,/(myword|nextword|wow|I|can|choose|alot)/g) == 1) {
.kick #mychannel $nick Private Offensive Language
.mode #my channel +b $nick 2
}
}
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
I cant seem to get ban type 2 to work, any ideal why it wont?
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
Thax I must be going blind.
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
I found this swear script thats better then mine so I was wondering if it can be use for private swear spam instead of channel swear spam? Can we just change: on @!*:TEXT:*:#: { to on @!*:OPEN:?:*: {
alias swear { dialog -dmr sweard sweard }
dialog sweard {
title " Swear"
size -1 -1 342 330
button "&Close",1, 205 305 60 20, cancel,flat
list 2, 15 20 140 110, sort size
box "Swear Words",3, 5 5 160 153
button "Add",4, 15 133 60 21,flat
button "Remove",5, 80 133 74 20, autohs,flat
box "Exempt Channels:",6, 170 5 161 153
list 7, 180 20 140 110, sort size
button "Add",8, 180 133 60 21,flat
button "Remove",9, 246 133 73 20, autohs,flat
check "Kick Message:",10, 13 179 84 20
box "Other Options",11, 5 156 326 142
edit "",12, 99 179 225 20, autohs
button "Ok",13, 270 305 60 20, ok,flat
check "Exempt The Ops in the Channel", 14, 13 205 175 10
check "Exempt The Voices in the Channel", 15, 13 224 185 10
edit "", 16, 112 238 50 20, autohs
check "Set Ban Length:", 17, 13 240 99 20
text "Seconds", 18, 165 240 50 20
combo 19, 112 265 151 89, edit drop autohs
text "Select Ban Time", 21, 13 268 99 30
}
on *:dialog:sweard:*:*:{
if ($devent == init) {
if ($readini($keke,options,ban)) { did -c $dname 17 }
if ($readini($keke,options,message)) { did -c $dname 10 }
if ($readini($keke,options,ops)) { did -c $dname 14 }
if ($readini($keke,options,vops)) { did -c $dname 15 }
did -a $dname 12 $readini($keke,options,message)
if ($readini($keke,options,secs)) { did -c $dname 17 }
did -a $dname 16 $readini($keke,options,secs)
did -i $dname 19 0 $readini($keke,options,punish)
.dlist 2 swear words
.dlist 7 exempt chan
did -f $dname 13
did -a sweard 19 Kick
did -a sweard 19 Kick and Ban
did -a sweard 19 None
}
if ($devent == sclick) {
if ($did(14).state == 1) { op_c }
if ($did(15).state == 1) { vo_c }
if ($did == 4) {
var %t = $$?="Enter swear word $crlf $+ Separate multiple entries with a comma:"
if ($numtok(%t,32) > 1) { %t = $replace(%t,$chr(32),$chr(160)) }
.writeini $keke swear words $iif($readini($keke,swear,words),$+($ifmatch,$chr(44),%t),%t)
dlist 2 swear words
}
if ($did == 5) {
var %tmp = $did(2).seltext
if (%tmp) {
if ($remtok($readini($keke,swear,words),%tmp,44)) {
.writeini $keke swear words $ifmatch
}
else .remini $keke swear words
.dlist 2 swear words
}
}
if ($did == 8) {
var %t = $$?="Enter Channel Name $crlf $+ Separate multiple entries with a comma:"
if ($chr(32) !isin %t) {
.writeini $keke exempt chan $iif($readini($keke,exempt,chan),$+($ifmatch,$chr(44),%t),%t)
dlist 7 exempt chan
}
}
if ($did == 9) {
var %tmp = $did(7).seltext
if (%tmp) {
if ($remtok($readini($keke,exempt,chan),%tmp,44)) {
.writeini $keke exempt chan $ifmatch
}
else .remini $keke exempt chan
.dlist 7 exempt chan
}
}
if ($did == 13) {
; OK button,flat
.writeini $keke options kick $iif($did(10).state == 1,$true,$false)
.writeini $keke options message $iif($did(12),$ifmatch,$readini($keke,options,message))
.writeini $keke options secs $iif($did(16) isnum 1-,$ifmatch,$readini($keke,options,secs))
.writeini $keke options ops $iif($did(14).state == 1,$true,$false)
.writeini $keke options vops $iif($did(15).state == 1,$true,$false)
.writeini $keke options ban $iif($did(17).state == 1,$true,$false)
.writeini $keke options punish $iif($did(19),$ifmatch,$readini($keke,options,punish))
}
}
}
on @!*:TEXT:*:#: {
%swear.punish = $readini($keke,options,punish))
if ($ischan) { return }
if ($readini($keke,options,ops)) { op_c }
if ($readini($keke,options,vops)) { vo_c }
if ($readini($keke,swear,words)) && ($match_text($1-)) {
if (None isin %swear.punish) { return }
if (kick isin %swear.punish) {
if (ban isin %swear.punish) {
.raw kick $chan $nick $+(:,$readini($keke,options,message)) $+ $cr $+ mode $chan +b $mask($fulladdress,2)
.timerswearunban 1 $readini($keke,options,secs) mode $chan -b $mask($fulladdress,2)
}
else { .raw kick $chan $nick $+(:,$readini($keke,options,message)) }
}
}
}
alias -l keke return $+(",$scriptdirswear.ini,")
alias -l ischan {
var %i = $numtok($readini($keke,exempt,chan),44),%j
while (%i > 0) {
%j = $gettok($readini($keke,exempt,chan),%i,44)
if (%j isin $chan) || ($2 == %j) { return $true }
dec %i
}
return $false
}
alias -l match_text {
var %i = $numtok($readini($keke,swear,words),44),%swear
while (%i > 0) {
%swear = $+(*,$replace($gettok($readini($keke,swear,words),%i,44),$chr(160),$chr(32)),*)
if ($wildtok($1-,%swear,1,44)) {
return $true
}
dec %i
}
}
alias op_c {
if ($nick isop $chan) { halt }
}
alias vo_c {
if ($nick isvo $chan) { halt }
}
alias -l dlist {
var %a = 1
did -r $dname $1
while ($gettok($readini($keke,$2,$3),%a,44)) {
did -az $dname $1 $ifmatch
inc %a
}
}
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
What a lengthy and intimidating script. so I won't go deep into it because this basically has unless junk in it but first... on @!*:TEXT:*:#: { %swear.punish = $readini($keke,options,punish)) if ($ischan) { return } if ($readini($keke,options,ops)) { op_c } if ($readini($keke,options,vops)) { vo_c } if ($readini($keke,swear,words)) && ($match_text($1-)) { if (None isin %swear.punish) { return } if (kick isin %swear.punish) { if (ban isin %swear.punish) { .raw kick $chan $nick $+(:,$readini($keke,options,message)) $+ $cr $+ mode $chan +b $mask($fulladdress,2) .timerswearunban 1 $readini($keke,options,secs) mode $chan -b $mask($fulladdress,2) } else { .raw kick $chan $nick $+(:,$readini($keke,options,message)) } } } } What i've highlighted in red is an alias that's local that is called within the script that detects an exempt list of channel calculations. >
alias -l ischan {
var %i = $numtok($readini($keke,exempt,chan),44),%j
while (%i > 0) {
%j = $gettok($readini($keke,exempt,chan),%i,44)
if (%j isin $chan) || ($2 == %j) { return $true }
dec %i
}
return $false
} This alias calls an ini file by another alias $keke which is usually because its a quote of $scriptdirpathfile Obviously the script is outdated or just simply wants to continue using the old method of quoting while $qt($cmd) could of simply be done.. as you can also see this script is abusing alias(es). So if you did change On text to on open you run into factors A) the $ischan alias is completly useless. B) Simply regex matches can cut down the size of the script and the use of certain alias calls. Either or, im not sure were you pick this script off from, It's good for on text event but in your case its useless without re-writting part of it.
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
Well here you can have this just change the variable on top of the alias swear call with your own channel
alias swear { dialog -dmr sweard sweard | %s.chan = #mychannel }
dialog sweard {
title " Swear"
size -1 -1 342 330
option pixels
button "&Close", 1, 205 305 60 20, flat cancel
list 2, 15 20 309 110, sort size
box "Swear Words", 3, 5 6 325 153
button "Add", 4, 109 133 60 21, flat
button "Remove", 5, 173 133 74 20, flat
check "Kick Message:", 10, 13 179 84 20
box "Other Options", 11, 5 156 326 142
edit "", 12, 99 179 225 20, autohs
button "Ok", 13, 270 305 60 20, flat ok
check "Exempt The Ops in the Channel", 14, 13 205 175 10
check "Exempt The Voices in the Channel", 15, 13 224 185 10
edit "", 16, 112 238 50 20, autohs
check "Set Ban Length:", 17, 13 240 99 20
text "Seconds", 18, 165 240 50 20
combo 19, 112 265 151 89, edit drop
text "Select Ban Time", 21, 13 268 99 30
}
on *:dialog:sweard:*:*:{
if ($devent == init) {
if ($readini($keke,options,ban)) { did -c $dname 17 }
if ($readini($keke,options,message)) { did -c $dname 10 }
if ($readini($keke,options,ops)) { did -c $dname 14 }
if ($readini($keke,options,vops)) { did -c $dname 15 }
did -a $dname 12 $readini($keke,options,message)
if ($readini($keke,options,secs)) { did -c $dname 17 }
did -a $dname 16 $readini($keke,options,secs)
did -i $dname 19 0 $readini($keke,options,punish)
.dlist 2 swear words
.dlist 7 exempt chan
did -f $dname 13
did -a sweard 19 Kick
did -a sweard 19 Kick and Ban
did -a sweard 19 None
}
if ($devent == sclick) {
if ($did(14).state == 1) { op_c }
if ($did(15).state == 1) { vo_c }
if ($did == 4) {
var %t = $$?="Enter swear word $crlf $+ Separate multiple entries with a comma:"
if ($numtok(%t,32) > 1) { %t = $replace(%t,$chr(32),$chr(160)) }
.writeini $keke swear words $iif($readini($keke,swear,words),$+($ifmatch,$chr(44),%t),%t)
dlist 2 swear words
}
if ($did == 5) {
var %tmp = $did(2).seltext
if (%tmp) {
if ($remtok($readini($keke,swear,words),%tmp,44)) {
.writeini $keke swear words $ifmatch
}
else .remini $keke swear words
.dlist 2 swear words
}
}
if ($did == 8) {
var %t = $$?="Enter Channel Name $crlf $+ Separate multiple entries with a comma:"
if ($chr(32) !isin %t) {
.writeini $keke exempt chan $iif($readini($keke,exempt,chan),$+($ifmatch,$chr(44),%t),%t)
dlist 7 exempt chan
}
}
if ($did == 9) {
var %tmp = $did(7).seltext
if (%tmp) {
if ($remtok($readini($keke,exempt,chan),%tmp,44)) {
.writeini $keke exempt chan $ifmatch
}
else .remini $keke exempt chan
.dlist 7 exempt chan
}
}
if ($did == 13) {
; OK button,flat
.writeini $keke options kick $iif($did(10).state == 1,$true,$false)
.writeini $keke options message $iif($did(12),$ifmatch,$readini($keke,options,message))
.writeini $keke options secs $iif($did(16) isnum 1-,$ifmatch,$readini($keke,options,secs))
.writeini $keke options ops $iif($did(14).state == 1,$true,$false)
.writeini $keke options vops $iif($did(15).state == 1,$true,$false)
.writeini $keke options ban $iif($did(17).state == 1,$true,$false)
.writeini $keke options punish $iif($did(19),$ifmatch,$readini($keke,options,punish))
}
}
}
on *:OPEN:?:*: {
%swear.punish = $readini($keke,options,punish))
if ($readini($keke,options,ops)) { op_c }
if ($readini($keke,options,vops)) { vo_c }
if ($readini($keke,swear,words)) && ($match_text($1-)) {
if (None isin %swear.punish) { return }
if (kick isin %swear.punish) {
if (ban isin %swear.punish) {
.raw kick %s.chan $nick $+(:,$readini($keke,options,message)) $+ $cr $+ ban %s.chan $nick $mask($fulladdress,2)
.ban $+(-u,$readini($keke,options,secs)) %s.chan $nick $mask($fulladdress,2)
}
else { .raw kick %s.chan $nick $+(:,$readini($keke,options,message)) }
}
}
}
alias -l keke return $+(",$scriptdirswear.ini,")
alias -l match_text {
var %i = $numtok($readini($keke,swear,words),44),%swear
while (%i > 0) {
%swear = $+(*,$replace($gettok($readini($keke,swear,words),%i,44),$chr(160),$chr(32)),*)
if ($wildtok($1-,%swear,1,44)) {
return $true
}
dec %i
}
}
alias op_c {
if ($nick isop %s.chan) { halt }
}
alias vo_c {
if ($nick isvo %s.chan) { halt }
}
alias -l dlist {
var %a = 1
did -r $dname $1
while ($gettok($readini($keke,$2,$3),%a,44)) {
did -az $dname $1 $ifmatch
inc %a
}
}
I removed the exempt
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
Cool thx. I get this error:
* /did: 'sweard' invalid id '7' (line 133, dialog75.mrc)
|
|
|
|
Joined: Aug 2005
Posts: 1,052
Hoopy frood
|
Hoopy frood
Joined: Aug 2005
Posts: 1,052 |
Um in this event..
on *:dialog:sweard:*:*:{
if ($devent == init) {
if ($readini($keke,options,ban)) { did -c $dname 17 }
if ($readini($keke,options,message)) { did -c $dname 10 }
if ($readini($keke,options,ops)) { did -c $dname 14 }
if ($readini($keke,options,vops)) { did -c $dname 15 }
did -a $dname 12 $readini($keke,options,message)
if ($readini($keke,options,secs)) { did -c $dname 17 }
did -a $dname 16 $readini($keke,options,secs)
did -i $dname 19 0 $readini($keke,options,punish)
.dlist 2 swear words
.dlist 7 exempt chan
Remove .dlist 7 exempt chan
if $reality > $fiction { set %sanity Sane }
Else { echo -a *voices* }
|
|
|
|
Joined: Oct 2007
Posts: 102
Vogon poet
|
OP
Vogon poet
Joined: Oct 2007
Posts: 102 |
I get a new error:
* [test44] No such channel * Error: /BAN is an unknown command.
|
|
|
|
|