mIRC Home    About    Download    Register    News    Help

Print Thread
Page 1 of 3 1 2 3
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Im allways connected to more than 1 network, this script it not that good if you connect to more than 1 network. Cause then you wold be away on one network, and not away on the other one since you would have more idle time on the none than on the other.

So, how to check idle on all connected networks, and if ALL is higher than the %away.system.auto.check then set away on all networks. If one network has under this limit, and all other over then unset away on all networks.

Code:
away.system.auto {
  echo Check
  if (!$away) && ($idle >= %away.system.auto.check) && %away.system.auto == on {
    away Auto away after $duration(%away.system.auto.check,2) of idle
    echo -a Set
  }
  if ($away) && ($idle <= %away.system.auto.check) && %away.system.auto == on {
    away
    echo -a Unset
  }
}

Joined: Jan 2007
Posts: 1,156
D
Hoopy frood
Offline
Hoopy frood
D
Joined: Jan 2007
Posts: 1,156
Code:
alias idle_chk {
var %idl_ = $scon(0)
while (%idl) {
echo -s . $scon(%idl_).network idle time is $scon(%idl_).idle
echo -s . You are $iif(!$scon(%idl_).away,not) away on $scon(%idl_).network .
dec %idl_
}
}


Here is an example checking your idle and away status on every network.

Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Cheers!

Joined: Jan 2007
Posts: 1,156
D
Hoopy frood
Offline
Hoopy frood
D
Joined: Jan 2007
Posts: 1,156
Np. I forgot. In your while loop you can check each channel in that scon.
Code:
while ($scon(%idl_)) {

;make scon id active to check its channels
scon %idl_

;set vars for total channels
var %ch_ = $chan(0), %ch
while (%ch_) {
;set var to save channel name instead of using $chan(%ch_) every time.
%ch = $chan(%ch_)

echo -a . %ch idle: $chan(%ch_).idle
echo -a . %ch away: $chan(%ch_).away

dec %ch_
}


dec %idl_
}

Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
it all went into a spinning loop and crached my client.

Joined: Aug 2004
Posts: 7,252
R
Hoopy frood
Offline
Hoopy frood
R
Joined: Aug 2004
Posts: 7,252

Joined: Jan 2007
Posts: 1,156
D
Hoopy frood
Offline
Hoopy frood
D
Joined: Jan 2007
Posts: 1,156
It was an example. You would want to put it in the alias.

Code:
alias idle_chk {
var %idl_ = $scon(0)
while (%idl) {
echo -s . $scon(%idl_).network idle time is $scon(%idl_).idle
echo -s . You are $iif(!$scon(%idl_).away,not) away on $scon(%idl_).network .

;make scon id active to check its channels
scon %idl_

;set vars for total channels
var %ch_ = $chan(0), %ch
while (%ch_) {
;set var to save channel name instead of using $chan(%ch_) every time.
%ch = $chan(%ch_)

echo -a . %ch idle: $chan(%ch_).idle
echo -a . %ch away: $chan(%ch_).away

dec %ch_
}

dec %idl_
}
}

Joined: Jan 2007
Posts: 1,156
D
Hoopy frood
Offline
Hoopy frood
D
Joined: Jan 2007
Posts: 1,156
Code:
alias idle_chk {
var %idl_ = $scon(0)
while (%idl_) {
echo -s . $scon(%idl_).network idle time is $scon(%idl_).idle
echo -s . You are $iif(!$scon(%idl_).away,not) away on $scon(%idl_).network .

;make scon id active to check its channels
scon %idl_

;set vars for total channels
var %ch_ = $chan(0), %ch
while (%ch_) {
;set var to save channel name instead of using $chan(%ch_) every time.
%ch = $chan(%ch_)

echo -a . %ch idle: $chan(%ch_).idle
echo -a . %ch away: $chan(%ch_).away

dec %ch_
}

dec %idl_
}
}


It wouldn't let me edit this and I found I named the variable wrong in the while statement. When writign loops there is the chance that you mess up and it start an infinite loop. If this happens press ctrl + Pause/Break.

Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
How would you add scon into this? I've got confused of the other.

Code:
away.system.auto {
  if %away.system == off && %away.system.auto == on {
    echo Check
    if (!$away) && ($idle >= %away.system.auto.check) {
      away Auto away after $duration(%away.system.auto.check,2) of idle
      echo -a Set
    }
    if ($away) && ($idle <= %away.system.auto.check) {
      away
      echo -a Unset
    }
  }
}

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
just use /scon -at1 away.system.auto


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
But then the script dont work how I want it to work.

This set me away on the network Ive been idle on, and not away on the network im active on..

If im active on one network, I dont want to be set away on another network. I have to been idle on all networks before been set away.

If over 30 sec set idle set away.

Ex:
Network1 : Idle 100 sec
Network2 : Idle 2 sec
Network3 : Idle 200 sec

Then dont set away on any network...

but if Network2 is over 30 sec of idle then set away on all networks..

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
Code:
alias away_sys set -u %autoaw 1 | scon -at1 isautoaw | if (%autoaw) && (!away) scon -at1 away
alias isautoaw if ($idle < 60) set -k %isautoaw 0
This basically put you away on all network if each of your idle time are >= 60 secs, type /away_sys

Last edited by Wims; 04/04/10 02:50 AM.

#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Still if one of the network is under 60 sec it sets the other networks away.

It one network is idle under 60 sec then unset away on all networks.

If all networks is over 60 sec of idlem then set away on all networks.

There is no point of being active on one network, and away on another one.

I really appreciate your help.

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
Code:
alias away_sys set -u %autoaw 1 | set -u %aw | scon -at1 aw |  if (%autoaw) && (!%aw) scon -at1 away param
alias aw if ($idle < 60) set -k %autoaw 0 | if ($away) set -k %aw 1
This one is tested smile


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
sweet! Works.

Now, when one network is under 60 seconds, unset away on all networks.

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
Code:
alias away_sys set -u %autoaw 1 | set -u %aw | set -u %naw | scon -at1 aw |  if (%autoaw) && (!%aw) scon -at1 away param | elseif (!%aw) scon -at1 away
alias aw if ($idle < 60) set -k %autoaw 0 | if ($away) set -k %aw 1 | else set -k %naw 1
Not tested but should do it.


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Sorry, it dont work. The script sets away, but don't turn off if not idle.

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
a typo sorry :

Code:
alias away_sys set -u %autoaw 1 | set -u %aw | set -u %naw | scon -at1 aw |  if (%autoaw) && (!%aw) scon -at1 away param | elseif (%naw) scon -at1 away
alias aw if ($idle < 60) set -k %autoaw 0 | if ($away) set -k %aw 1 | else set -k %naw 1


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Still don't work.

Code:
alias away_sys set -u %autoaw 1 | set -u %aw | set -u %naw | scon -at1 aw | if (%autoaw) && (!%aw) scon -at1 away.system.auto | elseif (%naw) scon -at1 away.system.auto
alias aw if ($idle < %away.system.auto.check) set -k %autoaw 0 | if ($away) set -k %aw 1 | else set -k %naw 1


Code:
away.system.auto {
  if %away.system == off && %away.system.auto == on {
    echo Check
    if (!$away) && ($idle >= %away.system.auto.check) {
      away Auto away after $duration(%away.system.auto.check,2) of idle
      echo -a Set $server
    }
    if ($away) && ($idle <= %away.system.auto.check) {
      away
      echo -a Unset $server
    }
  }
}

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
Why are you using the second alias ? You don't need it :

Code:
alias away_sys set -u %autoaw 1 | set -u %aw | set -u %naw | scon -at1 aw | if (%autoaw) && (!%aw) scon -at1 away Auto away after $duration(%away.system.auto.check,2) of idle | elseif (%naw) && (%aw) scon -at1 away
alias aw if ($idle < %away.system.auto.check) set -k %autoaw 0 | if ($away) set -k %aw 1 | else set -k %naw 1
This is tested


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
It still dont turn off away if Im active. Strange if it works for you and not me.

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
How are you testing it ? I've just replaced your %var with a number like 15, used something like /timera 0 2 away_sys and typed something in a channel, ~15 seconds later, $idle was > 15 on each network so it put me away, when I broke my idle again, it put me back etc...

I think the problem is that you need to check 'cancel away on activity' in mIRC option (alt + o > IRC > option)


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
This is how I test it: I have /timer 0 10 away_sys

And I set the %away.system.auto.check 60

The part that sets me away works great. But not set me back, I find it strange.

Cancel away on activity is unchecked, I dont use it. Then the auto away and the rest of my away system wont work how Id like it to work.

Joined: Jan 2007
Posts: 1,156
D
Hoopy frood
Offline
Hoopy frood
D
Joined: Jan 2007
Posts: 1,156
If you are using identifiers like $away and $idle or using them as props you probably need mirc to cancel your away status on activity. Unless you want to write your code to do this.

Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
What I'm saying is that you need this to be checked for my script to work.
I'm only checking if the value of $away is $false on one server to consider you're not away anymore, that's why you need something to unset your away status on activity, either the mirc option (simple), or a scripted solution but really, no need to use a script when mirc purely do what you want.
Quote:

Then the auto away and the rest of my away system wont work how Id like it to work.
Is your away system not supposed to be the script I'm giving you, that need this option to be checked ?


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
The code you wrote is a part of my away system. smile

Code:
away_sys {
  if %away.system == off && %away.system.auto == on {
    set -u %autoaw 1 | set -u %aw | set -u %naw | scon -at1 aw
    if (!$away) && (%autoaw) && (!%aw) {
      scon -at1 away Auto away after $duration(%away.system.auto.check,2) of idle
      echo.mode You have been automatically marked as being away after $duration(%away.system.auto.check,2) of idle
      titlebar - [Away: Auto]
    }
    if (!%autoaw) && (%aw) {
      scon -at1 away
      echo.mode Away has automatically been turned off
      titlebar
    }
  }
}

This is how I ended up. :)

aw {
  if ($idle < %away.system.auto.check) { set -k %autoaw 0 | if ($away) set -k %aw 1 | else set -k %naw 1 }
  if ($idle > %away.system.auto.check) { set -k %autoaw 1 | if ($away) set -k %aw 0 | else set -k %naw 0 }
}

Last edited by Deep3D; 07/04/10 03:44 AM.
Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
Well, there is a big difference between what was my code and how you used it, I'm not sure why you modified it this way if you don't know what it does.
If you don't want to check the mIRC option, that's your problem, but my code will not work without it.Now it's up to you, I won't spend more time on this.


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Feb 2009
Posts: 133
C
Vogon poet
Offline
Vogon poet
C
Joined: Feb 2009
Posts: 133
Originally Posted By: Deep3D
set -u %autoaw 1

set -u <- what??
/help /set

set -uN


WorldDMT
Joined: Nov 2006
Posts: 1,559
H
Hoopy frood
Offline
Hoopy frood
H
Joined: Nov 2006
Posts: 1,559
/set -u unsets the variable after the routine has finished. It's interchangeable with /var in many cases, but not all cases.
A routine may for example be an alias calling several other aliases - you could access a local variable only within each alias itself. It's also handy in $submenu and "begin": you can access the /set -u global variable in all the other $1 values; the var will not unset until the complete submenu was processed.

Edit:
Originally Posted By: help
[...] If you specify a zero for N, the variable is unset when the script finishes.
So he could have put: -u0 smile

Joined: Feb 2009
Posts: 133
C
Vogon poet
Offline
Vogon poet
C
Joined: Feb 2009
Posts: 133
ok smile


WorldDMT
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
I modify your code into how I'd like it. And It works perfect, and Im greatfull that you spend your time on it. If you didn't I wouldn't have the script. So thank you.

I didn't want to use the mirc option because how the rest of my away system works.

Can you guys see any problem with how I edit the script?

Last edited by Deep3D; 08/04/10 12:08 PM.
Joined: Jul 2006
Posts: 3,971
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 3,971
my 'aw' alias was written to work in an specific way : with the mirc option 'cancel away on activity', if you don't want to use this option, you have to write a long script that will do the 'cancel away on activity' part.
If you have a problem with this then there's probably something wrong somewhere


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Well, I made it work without mirc option 'cancel away on activity'.

In my away system if you get auto away it now cancel away on activity, and not with mirc option, it's scripted. If I choose to set myself away with the Away System I dont want cancel away on activity.

BUT, there is 1 fault in the script (anyone tell me if they see any others).
If I get disconnected from server without using /quit (in this case: [10053] Software caused connection abort) and when the script connects again it sets me away 10 +/- times and then everything is ok (problem is just while reconnecting). Its annoying to get all the echos and the fact that there is actually a fault in the script. smile

Code:
away.system.auto {
  if %away.system == off && %away.system.auto == on {
    set -u %autoaw 1 | set -u %aw | set -u %naw | scon -at1 aw
    if (!$away) && (%autoaw) && (!%aw) {
      scon -at1 away %away.system.auto.message
      echo.mode You have been automatically marked as being away after $duration(%away.system.auto.check,2) of idle
      titlebar - [Away: Auto]
    }
    if (!%autoaw) && (%aw) {
      scon -at1 away
      echo.mode Away has automatically been turned off
      titlebar
    }
  }
}


Code:
aw {
  if ($idle < %away.system.auto.check) { set -k %autoaw 0 | if ($away) set -k %aw 1 | else set -k %naw 1 }
  if ($idle > %away.system.auto.check) { set -k %autoaw 1 | if ($away) set -k %aw 0 | else set -k %naw 0 }
}

Last edited by Deep3D; 09/04/10 01:36 AM.
Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
no? smile

Joined: Aug 2004
Posts: 7,252
R
Hoopy frood
Offline
Hoopy frood
R
Joined: Aug 2004
Posts: 7,252
No errors that I can see, but here's a suggestion
Code:
aw {
  set -k %autoaw $iif($idle < %away.system.auto.check,0,1)
  if $away {
    set -k $iif(%autoaw,%aw,%naw) 1
    set -k $iif(%autoaw,%naw,%aw) 0
  }
}


Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
Thank you. smile (EDIT: Your suggestion did not turn off away when I typed in channel)

As I explained earlier.

If I get disconnected (not on purpose), and when reconnecting script sets me away +/- 10 times in the connecting progress, how to stop that? It's just so I dont get annoying echos.

Want me to write more in detail or is this understandable?

Last edited by Deep3D; 10/04/10 04:26 PM.
Joined: Jan 2007
Posts: 1,156
D
Hoopy frood
Offline
Hoopy frood
D
Joined: Jan 2007
Posts: 1,156
If you don't use mirc's internal system to turn off away then you are douing it with scripted events. Show your events.

Joined: Dec 2002
Posts: 483
Deep3D Offline OP
Pan-dimensional mouse
OP Offline
Pan-dimensional mouse
Joined: Dec 2002
Posts: 483
If events is code I have posted it twice above.

Joined: Feb 2009
Posts: 133
C
Vogon poet
Offline
Vogon poet
C
Joined: Feb 2009
Posts: 133
to auto return you have to do it with ON INPUT event something like
Code:
on *:input:*:if (away condition) <return code>


WorldDMT
Joined: Jul 2006
Posts: 248
B
Fjord artisan
Offline
Fjord artisan
B
Joined: Jul 2006
Posts: 248
Originally Posted By: chacha
to auto return you have to do it with ON INPUT event something like
Code:
on *:input:*:if (away condition) <return code>

not really, mIRC resets $idle counter to 0 before triggering on INPUT, so original version with comparisons will work

Joined: Feb 2009
Posts: 133
C
Vogon poet
Offline
Vogon poet
C
Joined: Feb 2009
Posts: 133
may be i misspoke i wanted to say like this
Code:
on *:input:*:{
  if $away {
    away
    ;if used /tnick NickAw
    nick $anick
    ame back
  }
}


WorldDMT
Joined: Apr 2010
Posts: 966
F
Hoopy frood
Offline
Hoopy frood
F
Joined: Apr 2010
Posts: 966
Here's How I did it -shrugg-

Code:
alias away.system.auto {
  scon -a if (%away.system.auto == on && $idle >= %away.system.auto.check) inc %away.system.check.idle
  var %x = $scon(%x)
  while (%x) {
    scon %x if ($away) && (%away.system.check.idle != $scon(0)) { away $chr(124) echo -a unset }
    scon %x if (!$away) && (%away.system.check.idle == $scon(0)) { away Auto away after $duration(%away.system.auto.check,2) of idle $chr(124) echo -a unset }
    dec %x
  }
  unset %away.system.check.idle
}



I am SReject
My Stuff
Joined: Apr 2010
Posts: 966
F
Hoopy frood
Offline
Hoopy frood
F
Joined: Apr 2010
Posts: 966
Ok, the first post I did was basically an away check across all networks and what not but didn't account for you being disconnected. This one accounts for that, and has the events to start/stop the checks

Code:
on *:INPUT:#,?:{ away.system.auto }
on *:CONNECT:{ if (!$timer(.Auto.Away) { .timer -oi .Auto.Away 0 1 away.system.auto } }

alias away.system.auto {
  var %x = $scon(0)
  while ($scon(%x)) {
    if ($scon(%x).status == Connected) { inc %Away.Connection.Check }
    dec %x
  }
  if (!%Away.Connection.Check) { 
    .timer.Auto.Away off 
  }
  else {
    if (!$timer(.Auto.Away)) { .timer -oi .Auto.Away 0 1 away.system.auto }
    scon -a if ($status == Connected && %away.system.auto == on && $idle >= %away.system.auto.check) inc %away.system.check.idle
    var %x = $scon(%x)
    while (%x) {
      scon %x if ($status == Connected) && ($away) && (%away.system.check.idle != %Away.Connection.Check) { away $chr(124) echo -a unset }
      scon %x if ($status == Connected) && (!$away) && (%away.system.check.idle == %Away.Connection.Check) { away Auto away after $duration(%away.system.auto.check,2) of idle $chr(124) echo -a unset }
      dec %x
    }
  }
  unset %Away.Connection.Check
  unset %away.system.check.idle
}


I am SReject
My Stuff
Joined: Feb 2009
Posts: 133
C
Vogon poet
Offline
Vogon poet
C
Joined: Feb 2009
Posts: 133
so every on input that will execute the alias? too bad!


WorldDMT
Joined: Apr 2010
Posts: 966
F
Hoopy frood
Offline
Hoopy frood
F
Joined: Apr 2010
Posts: 966
Yes on any input to channel or query it will activate. Considering most ppl don't have more than 3-5 active connections the loops shouldn't be an issue

but, I see you're point:
Code:
on *:INPUT:#,?:{
  scon -a if ($status == connected && $away) { away }
}

Last edited by FroggieDaFrog; 19/04/10 12:50 PM.

I am SReject
My Stuff
Joined: Feb 2011
Posts: 1
J
Mostly harmless
Offline
Mostly harmless
J
Joined: Feb 2011
Posts: 1
Where i set auto away time in this script?

Page 1 of 3 1 2 3

Link Copied to Clipboard