This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.
For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.
Help for those learning Tcl or writing their own scripts.
-
simo
- Revered One
- Posts: 1107
- Joined: Sun Mar 22, 2015 2:41 pm
Post
by simo »
any reason why the second if statement wont trigger if criteria is met in this?
the if {![info exists nickz]} {
Code: Select all
bind pubm - "#% +?*" pub:massmodez316
bind pubm - "#% -?*" pub:massmodez316
proc pub:massmodez316 {nick host hand chan text} {
if {![matchattr [nick2hand $nick] o|o $chan] && ![isop $nick $chan] && ![ishalfop $nick $chan]} { return 0 }
set modex [lindex [split $text] 0]
set nickz [join [lrange [split $text] 1 end]]
foreach user $nickz {
if {![info exists nickz]} {
pushmode $chan $modex
} else {
pushmode $chan $modex $user
}
}
flushmode $chan
}
for example this works fine +v nick nick nick nick nick nick nick nick
this on the other hand doesnt
+m
or +M or any other single param mode setting
Last edited by
simo on Mon Jul 13, 2020 5:03 pm, edited 1 time in total.
-
willyw
- Revered One
- Posts: 1205
- Joined: Thu Jan 15, 2009 12:55 am
Post
by willyw »
This:
Code: Select all
set nickz [join [lrange [split $text] 1 end]]
*IS* setting nickz, isn't it? It's set, there's just nothing in it.
Thus, this:
doesn't trigger.
That's what I'm thinking, based on what you've said.
How about if instead you used ?:
By the way, look at this part too:
Code: Select all
set nickz [join [lrange [split $text] 1 end]]
foreach user $nickz {
The foreach command wants a list, and as it is $nickz is a string.
Why join it? Why not leave it as the string returned by the lrange command?
For a fun (and popular) Trivia game, visit us at: irc.librairc.net #science-fiction . Over 300K Q & A to play in BogusTrivia !
-
simo
- Revered One
- Posts: 1107
- Joined: Sun Mar 22, 2015 2:41 pm
Post
by simo »
thanks for your reply willyw i tried like this same effect it doesnt trigger single mode setting
Code: Select all
bind pubm - "#% +?*" pub:massmodez316
bind pubm - "#% -?*" pub:massmodez316
proc pub:massmodez316 {nick host hand chan text} {
if {!([matchattr [nick2hand $nick] o|o $chan] && [isop $nick $chan] && [ishalfop $nick $chan])} { return 0 }
set modex [lindex [split $text] 0]
set nickz [lrange [split $text] 1 end]
foreach user $nickz {
if {![llength $nickz]} {
pushmode $chan $modex
} else {
pushmode $chan $modex $user
}
}
flushmode $chan
}
-
willyw
- Revered One
- Posts: 1205
- Joined: Thu Jan 15, 2009 12:55 am
Post
by willyw »
Play with this. See what you think.
I tried to make minimal changes.
There is no checking to see if bot is even op'd, or if nick to set mode on is even on #channel. You can decide if you want to add such things in it.
Code: Select all
bind pubm - "#% +?*" pub:massmodez316
bind pubm - "#% -?*" pub:massmodez316
###
proc pub:massmodez316 {nick host hand chan text} {
if {!([matchattr [nick2hand $nick] o|o $chan] && [isop $nick $chan] && [ishalfop $nick $chan])} {
return 0
}
set modex [lindex [split $text] 0]
set nickz [join [lrange [split $text] 1 end]]
set nickz [string trim $nickz]
if {![llength [split $nickz]]} {
pushmode $chan $modex
return 0
}
foreach user [split $nickz] {
pushmode $chan $modex $user
}
flushmode $chan
}
###
For a fun (and popular) Trivia game, visit us at: irc.librairc.net #science-fiction . Over 300K Q & A to play in BogusTrivia !
-
simo
- Revered One
- Posts: 1107
- Joined: Sun Mar 22, 2015 2:41 pm
Post
by simo »
thanx for the reply willyw i tried your last posted code it gave me the same result this works fine:
+v nick nick nick nick nick nick nick nick nick nick
however this doesnt :
+M
+m
+i
-
willyw
- Revered One
- Posts: 1205
- Joined: Thu Jan 15, 2009 12:55 am
Post
by willyw »
simo wrote:thanx for the reply willyw i tried your last posted code it gave me the same result this works fine:
+v nick nick nick nick nick nick nick nick nick nick
however this doesnt :
+M
+m
+i
I don't know why. I tried a few times, both with nicks and without. It worked fine for me.
For a fun (and popular) Trivia game, visit us at: irc.librairc.net #science-fiction . Over 300K Q & A to play in BogusTrivia !
-
simo
- Revered One
- Posts: 1107
- Joined: Sun Mar 22, 2015 2:41 pm
Post
by simo »
some times im gettin this error :
Tcl error [parsemode]: can't read "modechar": no such variable
-
simo
- Revered One
- Posts: 1107
- Joined: Sun Mar 22, 2015 2:41 pm
Post
by simo »
thx willyw it works fine now
-
willyw
- Revered One
- Posts: 1205
- Joined: Thu Jan 15, 2009 12:55 am
Post
by willyw »
simo wrote:thx willyw it works fine now
Good to hear.
What was the solution though?
For a fun (and popular) Trivia game, visit us at: irc.librairc.net #science-fiction . Over 300K Q & A to play in BogusTrivia !
-
simo
- Revered One
- Posts: 1107
- Joined: Sun Mar 22, 2015 2:41 pm
Post
by simo »
Oh sorry didn't see the last question only now i did the issue was with the access check i removed the !() and added! At each check