|
Joined: Oct 2006
Posts: 20
Ameglian cow
|
OP
Ameglian cow
Joined: Oct 2006
Posts: 20 |
howdy all, i'm trying to be able to view channel number activity thru a dialog.. joins, parts , voice, de-voice, ect.... you get the idea. all i want is numbers. so when the dialog is open i'll see this activity as it happens.. this is an example of what i'm talking about:
dialog chan_stat {
title Stats
size -1 -1 128 64
option dbu
box "User Stats", 16, 6 3 113 40
text "&Ops:", 4, 10 14 11 8
edit "", 1, 23 12 14 12, read
text "&Voiced:", 5, 42 14 18 8
edit "", 2, 62 12 14 12, read
text "&Regular:", 6, 80 14 20 8
edit "", 3, 102 12 14 12, read
text "Total Number of Users:", 29, 13 30 59 8
edit "", 30, 75 27 18 13, read
button "&Done", 20, 45 48 37 12, ok
}
on *:dialog:chan_stat:init:*:{
did -a $dname 30 $nick(%test.chan,0)
did -a $dname 1 $nick(%test.chan,0,o)
did -a $dname 2 $nick(%test.chan,0,v)
did -a $dname 3 $nick(%test.chan,0,r)
}
on *:OP:%test.chan:{
did -ra chan_stat 1 $nick(%test.chan,0,o)
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
}
on *:DEOP:%test.chan:{
did -ra chan_stat 1 $nick(%test.chan,0,o)
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
}
on *:voice:%test.chan:{
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
}
on *:devoice:%test.chan:{
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
}
on *:JOIN:%test.chan: {
if ($nick != $me) {
did -ra chan_stat 30 $nick(%test.chan,0)
did -ra chan_stat 3 $nick(%test.chan,0,r)
}
}
on *:PART:%test.chan:{
did -ra chan_stat 1 $nick(%test.chan,0,o)
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
did -ra chan_stat 30 $nick(%test.chan,0)
}
on *:KICK:%test.chan:{
did -ra chan_stat 1 $nick(%test.chan,0,o)
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
did -ra chan_stat 30 $nick(%test.chan,0)
}
on *:QUIT:{
did -ra chan_stat 1 $nick(%test.chan,0,o)
did -ra chan_stat 2 $nick(%test.chan,0,v)
did -ra chan_stat 3 $nick(%test.chan,0,r)
did -ra chan_stat 30 $nick(%test.chan,0)
}
for the tracking of opping and voicing an such.. it seems to work, although it probally could be done more efectively. but, the parts and quits i know for fact its not right. so i'm asking for some pointers and or advise on this to get this working properly.. thanks in advance
|
|
|
|
Joined: Oct 2004
Posts: 8,330
Hoopy frood
|
Hoopy frood
Joined: Oct 2004
Posts: 8,330 |
This will work. I put all of your /did commands into an alias just to reduce the size of your script. I know that OP/DEOP/etc don't need to fill all spaces, but it won't hurt. I have it set in the alias so that if the dialog isn't open, it won't do anything. If you'd rather have it open the dialog automatically, you can change RETURN to your DIALOG command.
dialog chan_stat {
title Stats
size -1 -1 128 64
option dbu
box "User Stats", 16, 6 3 113 40
text "&Ops:", 4, 10 14 11 8
edit "", 1, 23 12 14 12, read
text "&Voiced:", 5, 42 14 18 8
edit "", 2, 62 12 14 12, read
text "&Regular:", 6, 80 14 20 8
edit "", 3, 102 12 14 12, read
text "Total Number of Users:", 29, 13 30 59 8
edit "", 30, 75 27 18 13, read
button "&Done", 20, 45 48 37 12, ok
}
on *:dialog:chan_stat:init:*:{
FillStats
}
on *:OP:%test.chan:{
FillStats
}
on *:DEOP:%test.chan:{
FillStats
}
on *:voice:%test.chan:{
FillStats
}
on *:devoice:%test.chan:{
FillStats
}
on *:JOIN:%test.chan: {
FillStats
}
on *:PART:%test.chan:{
FillStats
}
on *:KICK:%test.chan:{
FillStats
}
on *:QUIT:{
FillStats
}
alias FillStats {
if (!$dialog(chan_stat)) { return }
.timer 1 0 did -ra chan_stat 1 $!nick(%test.chan,0,o)
.timer 1 0 did -ra chan_stat 2 $!nick(%test.chan,0,v)
.timer 1 0 did -ra chan_stat 3 $!nick(%test.chan,0,r)
.timer 1 0 did -ra chan_stat 30 $!nick(%test.chan,0)
}
Invision Support #Invision on irc.irchighway.net
|
|
|
|
Joined: Oct 2006
Posts: 20
Ameglian cow
|
OP
Ameglian cow
Joined: Oct 2006
Posts: 20 |
that works very well Riamus2, thanks..... i noticed you also did this:
.timer 1 0 did -ra chan_stat 1 [color:#FF0000]$![/color]nick(%test.chan,0,o)
whats the purpose of that... from what i saw in the help file This is similar to the line above except for the addition of the $! parameter. This refers to the text you just typed into the parameter box. don't really understand that either.. hehe
|
|
|
|
Joined: Oct 2004
Posts: 8,330
Hoopy frood
|
Hoopy frood
Joined: Oct 2004
Posts: 8,330 |
Timers evaluate things when they are started rather than when the time is up.
When someone parts or quits, the event happens "before" the number of people in the channel changes. So you were getting the number of people in the channel just before the person left. The timer with no delay can be used to make it happen after the person leaves. Even with 0 delay, it still happens afterwards. However, because timers evaluate when they are called, it would still tell you the number of people at the time of the event rather than the number of people at the time the event finishes (i.e. the person leaves). The ! after the $ makes the timer *not* evaluate the identifier until the time the timer triggers.
Try these as examples to see:
//.timer 3 1 echo -a $time //.timer 3 1 echo -a $!time
As you can see, the first one just repeats the $time that it was when the timer was started and the second one tells you the $time it is when the timer triggers.
Invision Support #Invision on irc.irchighway.net
|
|
|
|
Joined: Oct 2006
Posts: 20
Ameglian cow
|
OP
Ameglian cow
Joined: Oct 2006
Posts: 20 |
ok, now i understand.... thanks Riamus2 that was a pretty good explaination too i might add.. still needs more tweaking tho.... it appears that if i'm on another channel the on quit triggers and i get blank fields.. lol probaly could be fixed with a if statement like : if ($chan == %test.chan) { fillstats } thats just off the top of my head... but anywho thanks again
|
|
|
|
Joined: Oct 2004
Posts: 8,330
Hoopy frood
|
Hoopy frood
Joined: Oct 2004
Posts: 8,330 |
There isn't a channel associated with on QUIT, so you can't use your IF statement in there. I'm not sure why it would give you blanks, though. As long as you are in your test channel, you should get numbers even if you're also in other channels. Obviously, if you're not in your test channel and you have the dialog open, it will give you blanks when someone quits because it cannot get the information from the test channel. If that's what you're doing (leaving the test channel), then you may want to have something along the lines of:
if ($me ison %test.chan) { FillStats }
Invision Support #Invision on irc.irchighway.net
|
|
|
|
Joined: Oct 2006
Posts: 20
Ameglian cow
|
OP
Ameglian cow
Joined: Oct 2006
Posts: 20 |
well, i'm not leaving the %test.chan at all... just that if i'm in another channel and that windows is active, it would pick up the quit signals from the other channel and thats when i would get the blank spots..... untill something happend in the test channel.... thats what i was trying to say.. kinda like looking at both... but i only want it restricted to w/e happens in the test chan
|
|
|
|
Joined: Oct 2004
Posts: 8,330
Hoopy frood
|
Hoopy frood
Joined: Oct 2004
Posts: 8,330 |
It shouldn't matter because it should be able to get the $nick(%test.chan,0) or whatever regardless of what window is active. I'll look at it later (leaving for work now).
Invision Support #Invision on irc.irchighway.net
|
|
|
|
|