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.

Greetd.tcl help SOLVED

Help for those learning Tcl or writing their own scripts.
Post Reply
t
tazd
Voice
Posts: 3
Joined: Thu May 05, 2011 1:08 pm

Greetd.tcl help SOLVED

Post by tazd »

What i am trying o achieve is add the needed info to get this script to only announce to those that are give +v in a channel but not to those that are a halfop or above.

This shows what i tried with my limited knowledge and quick scan looking at things but its a no go so was hoping someone here could point me in the right direction.

Code: Select all

bind mode - '% +h' userhop 
set welc(msg) "%nick type !droid in %chan to list of help commands"
set welc(chan) "#channel"
set welc(type) "1"

bind join - #channel* givewelcome
proc givewelcome {nick uhost hand chan} {
  global welc

  set welctxt $welc(msg)
  regsub -all "%nick" $welctxt "$nick" welctxt
  regsub -all "%chan" $welctxt "$chan" welctxt
  switch $welc(type) {
    1 { puthelp "NOTICE $nick :$welctxt" }
    2 { puthelp "PRIVMSG $nick :$welctxt" }
  }
} 
Many thanks in advance

Moderated: Moved to Scripting Help.
Placed script-code inside proper tags.

/NML_375
Last edited by tazd on Sun May 22, 2011 3:25 am, edited 1 time in total.
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

I'd probably add a check somewhat like this:

Code: Select all

if {[matchattr $hand +v-ho]} {
  return
}
That would make sure the user has the v flag but not the h nor o flag (checking for channel modes +ohv would be rather pointless, since noone will join the channel opped/voiced).
NML_375
d
doggo
Halfop
Posts: 97
Joined: Tue Jan 05, 2010 7:53 am
Contact:

Post by doggo »

Code: Select all

bind mode * "#nzbmatrix.chat +v" Monkey:voice 

proc Monkey:voice {nick uhost hand chan mode target} { 
          if {$nick != "Monkey"} {return} 
                putserv "NOTICE $target :type !droid in $chan to list of help commands" 

}
should do what you want tazd :wink:
t
tazd
Voice
Posts: 3
Joined: Thu May 05, 2011 1:08 pm

Post by tazd »

Thanks got it running just right now
User avatar
caesar
Mint Rubber
Posts: 3778
Joined: Sun Oct 14, 2001 8:00 pm
Location: Mint Factory

Post by caesar »

if {$nick != "Monkey"} {return}
You should use 'string equal -nocase' as you will sooner or later find out that for example 'Monkey' isn't equal with 'monkey'.

Also, instead of:
regsub -all "%nick" $welctxt "$nick" welctxt
regsub -all "%chan" $welctxt "$chan" welctxt
you can use 'subst' to get the same result.
Once the game is over, the king and the pawn go back in the same box.
User avatar
speechles
Revered One
Posts: 1398
Joined: Sat Aug 26, 2006 10:19 pm
Location: emerald triangle, california (coastal redwoods)

Post by speechles »

caesar wrote: Also, instead of:
regsub -all "%nick" $welctxt "$nick" welctxt
regsub -all "%chan" $welctxt "$chan" welctxt
you can use 'subst' to get the same result.
And as well, you can use [string map] along with
  • instead of curly braces. So instead of all this below:

    Code: Select all

      set welctxt $welc(msg)
      regsub -all "%nick" $welctxt "$nick" welctxt
      regsub -all "%chan" $welctxt "$chan" welctxt 
    Just do this:

    Code: Select all

    set weltxt [string map [list "%nick" "$nick" "%chan" "$chan"] $welc(msg)]
    Using subst most times isn't a clean approach. To me it is akin to regexp and regsub. Only to be used as a last resort.
User avatar
caesar
Mint Rubber
Posts: 3778
Joined: Sun Oct 14, 2001 8:00 pm
Location: Mint Factory

Post by caesar »

True, 'string map' is even better. Forgot all about it. :)
Once the game is over, the king and the pawn go back in the same box.
Post Reply