Difference between revisions of "Modifying mIRCs own Away system"
From Scriptwiki
Line 7: | Line 7: | ||
; we also get familar with our own made functions. | ; we also get familar with our own made functions. | ||
− | ; halt default [[ | + | ; halt default [[:Category:Raws|raws]] to that shows whenever you back/away in status window |
[[Raw_305|raw 305]]:*:{ [[halt]] } | [[Raw_305|raw 305]]:*:{ [[halt]] } | ||
[[Raw_306|raw 306]]:*:{ [[halt]] } | [[Raw_306|raw 306]]:*:{ [[halt]] } |
Revision as of 08:53, 24 August 2005
This is an example of silent but a modified away script, including autoaway, away timer in titlebar and channel menus ($iif). Script checks if you away or not and sets you away/back. Applys to multiple networks you in (scid, $scon). We also get familar with our own made functions.
; this is an example of a silent but modified away script, including autoaway, away timer in titlebar and channel menus. ; script checks if you away or not and sets you away/back. Applys to multiple networks you in. ; we also get familar with our own made functions. ; halt default raws to that shows whenever you back/away in status window raw 305:*:{ halt } raw 306:*:{ halt } ; $iif(this is true,do this,else do this) ; $away returns $true whetner you've set away or $false menu channel { $iif($away,Set Back,Set Away):{ $iif($away,away,away $?="Away Reason") } } alias away { ; if $away is $false (we are not away) if (!$away) { ;if $1 (word after function exists) we set variable %away.reason to value $1- (all words after alias) if ($1) { set %away.reason $1- } ; else if there's no words after alias, se default reason to "Away" else { set %away.reason Away } ; we need this variable later on in this alias in our self made function set %since_away $date $time ; $scon(0) returns total number of open server windows. var %x = $scon(0) ; while-loop to go through every open connections while (%x) { ; this changes the active connection for a script to connection id %x ; so we can perform commands to other networks you're in too scid $scon(%x) ; we need this variable later to calculate how long we were away set %awaytime $ctime ; this is where happens the actual happening, setting us away away %away.reason $since ; $chan(0) returns to total number of channels open in active network %awaychan = $chan(0) ; we use while-loop to go though every channel while (%awaychan) { ; echo means that only you can see the text we "echo" ; option -t includes timestamp, $chan(%awaychan) returns to channel id %awaychan ; $marked_away is our own made function. echo -t $chan(%awaychan) $marked_away dec %awaychan } ; start timer what calls alias to create away timer in titlebar display it every second .timerawaytime 0 1 titleawaytime ; echo -s echoes our awaymsg to statuswindow echo -st $marked_away dec %x } } ; else, if we are in away mode elseif ($away) { ; %x - again, is number of open status windows var %x = $scon(0) ; loop through every status open connection with while-loop while (%x) { scid $scon(%x) ; now because we are set away, we just use command "away" to set us back away %awaychan = $chan(0) while (%awaychan) { echo -t $chan(%awaychan) $marked_back dec %awaychan } ; close timer we set to refresh away timer in titlebar every second .timerawaytime off scid $scon(%x) echo -st $marked_back ; resets text in titlebar titlebar dec %x } } } ; when we connect to any irc network, we start timer what does the trick with alias auto_away every 45's second on *:connect:{ .timer 0 45 auto_away } ; switch -l in alias means that alias can only be called via another alias alias -l auto_away { ; set %t how many secs we have to idle before setting away var %t = 2700 ; we check if have have idled %t seconds in every networks we are in var %c = $scon(0) while (%c) { scid $scon(%c) ; if we are not set away and we have idled over %t secs if (!$away) && ($idle > %t) { ; if variable %i doesnt exist, create one with value 1 if (!%i) { var %i = 1 } ; else just increase it with one else { inc %i } } dec %c } ; if %i has same valua as $scon(0) (number of networks) if (%i == $scon(0)) { set %since_away $date $time var %x = $scon(0) while (%x) { scid $scon(%x) set %awaytime $calc($ctime) set %away.reason Away after $duration(%t) !away %away.reason $since %awaychan = $chan(0) while (%awaychan) { echo -t $chan(%awaychan) $marked_away dec %awaychan } .timerawaytime 0 1 titleawaytime scid $scon(%x) echo -st $marked_away dec %x } } } ; our own functions ; $b(some text here) returns to bold text inside of function alias -l b return $+($chr(2),$$1-,$chr(2)) ; calculates how many secs we have been away, called in titlebar included in /away -command alias -l titleawaytime titlebar AwayTime[ $+ $duration($calc($ctime - %awaytime)) $+ ] ; sets time when we set away, gettok get only 2 first parametres from time, chr(58) is ":" ; $remove get only day and month from $date and leaves year behind;) alias -l since return $+($b([),$gettok($time,1-2,58),´,$remove($date,$right($date,5)),$b(])) ; next two aliases are lines what tells us how long we were away etc.. alias -l marked_away return $+($chr(22),$b($str($chr(155),2))) You have been marked as being away. Reason $b([) $+ %away.reason $since $+ $b(]) $+ $chr(22) alias -l marked_back return $+($chr(22),$b($str($chr(155),2))) You are no longer marked as being away. You was gone for $b([) $+ $duration($calc($ctime - %awaytime)) $+ $b(]) - Since $b([) $+ %since_away $+ $b(]) - Reason - $b([) $+ %away.reason $+ $b(]) $+ chr(22)