All pastes #341161 Raw Edit

Away Script

public text v1 · immutable
·published 2007-02-05 11:15 UTC
rendered paste body
on *:start:{
  if ($isfile(away.hsh)) {      
    hmake away 5    
    hload -o away away.hsh  
  }  
  else { 
    hmake away 5 
    hadd away $+($date,$time) away  
  }
  if ($isfile(back.hsh)) {      
    hmake back 5    
    hload -o back back.hsh  
  }  
  else { 
    hmake back 5
    hadd back $+($date,$time) back  
  }
  if ($isfile(suffix.hsh)) {      
    hmake suffix 5    
    hload -o suffix suffix.hsh  
  }  
  else { 
    hmake suffix 5
    hadd suffix $+($date,$time) away  
  }
  if (%as6cooldown == $null) {
    set %as6cooldown 160
  }
  if (%as6awaymessage == $null) {  
    set %as6awaymessage away
  }
  if (%as6backmessage == $null) {  
    set %as6backmessage back
  }
  if (%as6awaysuffix == $null) {
    set %as6awaysuffix away
  }
}
on *:unload:{
  if ($isfile(away.hsh)) {
    remove away.hsh
  }  
  if ($isfile(back.hsh)) {
    remove back.hsh
  }  
  if ($isfile(suffix.hsh)) {
    remove suffix.hsh  
  }
  var %unloadas6 = 1
  var %unloadas62 = $scon(0)   
  while (%unloadas6 <= %unloadas62) {
    scon %unloadas6 away.off
    inc %unloadas6
  }
  autoaway.off
  autoback.off  
  unset %as6*
  hfree away
  hfree back
  hfree suffix
}
on *:exit: { 
  hsave -o away " $+ $scriptdiraway.hsh"  
  hfree away 
  hsave -o back " $+ $scriptdirback.hsh"  
  hfree back 
  hsave -o suffix " $+ $scriptdirsuffix.hsh"  
  hfree suffix 
}
menu channel {
  Away Script 
  .away 
  ..on {
    away.on
  }
  ..off {
    away.off
  }
  .control center { 
    dialog -m as as
  }
}
#away.aliases on
alias away.off {
  if ($($+(%,as6,$network,away),2) != off) {
    nick $mnick    
    set $+(%,as6,$network,away) off
    echo 5 -a Away is off.
    set %as6chan 1
    set %as6cnum $chan(0)      
    while (%as6chan <= %as6cnum) {
      notice $chan(%as6chan) $mnick is %as6backmessage     
      inc %as6chan      
    }    
  }      
  else {
    echo 5 -a Away is already off.
  }
}  
alias away.on {
  if ($($+(%,as6,$network,away),2) != on) {
    tnick $me $+ - $+ %as6awaysuffix    
    set $+(%,as6,$network,away) on
    echo 5 -a Away is on.
    set %as6chan 1
    set %as6cnum $chan(0)      
    while (%as6chan <= %as6cnum) {
      .timer 1 1 notice $chan(%as6chan) $mnick is %as6awaymessage $+ ; to page me type !page $!me     
      inc %as6chan      
    }      
  }      
  else {
    echo 5 -a Away is already on.   
  }
}    
alias autoback.on {
  if ($group(#autoback) != on) {
    .enable #autoback
    echo 5 -a Auto back is on
  }      
  else {
    echo 5 -a Auto back is already on    
  }
}
alias autoback.off {
  if ($group(#autoback) != off) {
    .disable #autoback
    echo 5 -a Auto back is off
  }
  else {
    echo 5 -a Auto back is already off  
  }
}  
alias autoaway.on {
  if ($timer(away) == $null) {
    .timeraway 0 10 away.idle
    echo 5 -a Auto away is now on.    
  }
  else {
    echo 5 -a Auto away is already on.
  }  
}
alias autoaway.off {
  if ($timer(away) != $null) {
    set %as6timeraway off      
    .timeraway off
    echo 5 -a Auto away is now off    
  }
  else {
    echo 5 -a Auto away is already off.
  }
}
alias away.idle {
  var %unloadas6 = 1
  var %unloadas62 = $scon(0)   
  while (%unloadas6 <= %unloadas62) {  
    scon %unloadas6    
    if (($idle >= 600) && ($($+(%,as6,$network,away),2) != on)) {
      away.on
    }    
    inc %unloadas6
  }
}
alias pager.on {
  if (%as6pagetimer == on) {
    unset %as6pagetimer
    echo 5 -a Pager has been turned on.
  }
  else {
    echo 5 -a Pager is already on
  }
}
alias pager.off {
  if (%as6pagetimer != on) {
    set %as6pagetimer on
    echo 5 -a Pager has been turned off
  }
  else {
    echo 5 -a Pager is already off.
  }
}
#away.aliases end
#away on
on *:Connect: { 
  if (%as6timeraway != off) {  
    .timeraway 0 10 away.idle 
  }
}
on *:text:*:?:{
  if (($($+(%,as6,$network,away),2) == on) && (%as6awaymsgtimer != on)) {
    msg $nick 4,1 Sorry $nick $+ ; I am %as6awaymessage $+ ; to page me type !page $me 
    set -u10 %as6awaymsgtimer on  
  }
}
on *:text:!page &:#:{
  if ((($($+(%,as6,$network,away),2) == on) && (%as6pagetimer != on) && ($$2 == $me))) {
    .timer 5 1 beep
    set  $+(-u,$(%as6cooldown)) %as6pagetimer on
    echo 5 -a $nick paged you!
    msg $chan 11,1 $nick has paged me, the pager wont be available for $calc($(%as6cooldown)/60) minutes.
  }
}
#away end

#autoback on
on *:input:*:{
  if ($($+(%,as6,$network,away),2) == on) { 
    away.off
  }
}
#autoback end

dialog AS {
  title "Away Script by TrusTkill"
  size -1 -1 236 370
  button "Ok", 1, 28 345 90 25, ok
  button "Cancel", 2, 118 345 90 25, cancel
  text "Main", 3, 10 40 60 15
  radio "on", 4, 10 55 30 15, group
  radio "off", 5, 10 70 30 15
  text "Auto Back", 6, 0 95 60 15
  radio "on", 7, 10 110 30 15, group
  radio "off", 8, 10 125 30 15
  text "Auto Away", 9, 0 150 60 15
  radio "on", 10, 10 165 30 15, group
  radio "off", 11, 10 180 30 15
  text "Pager", 12, 10 205 60 15
  radio "on", 13, 10 220 30 15, group
  radio "off", 14, 10 235 30 15
  box "", 15, 0 45 50 45
  box "", 16, 0 100 50 45
  box "", 17, 0 155 50 45
  box "", 18, 0 210 50 93
  text "Add Away Mess.", 19, 60 0 100 25
  button "Add", 20, 55 15 90 25
  text "Select Away Message", 21, 95 40 130 15
  list 22, 55 55 180 80
  text "Add Back Mess.", 23, 60 115 100 25 
  button "Add", 24, 55 130 90 25 
  text "Select Back Message", 25, 95 155 130 15
  list 26, 55 170 180 80 
  text "Del Away Mess.", 27, 155 0 100 25
  button "Delete", 28, 145 15 90 25
  text "Del Back Mess.", 29, 155 115 100 25
  button "Delete", 30, 145 130 90 25
  text "Add Suffix", 31, 60 230 100 25
  button "Add", 32, 55 245 90 25
  text "Del Suffix", 33, 155 230 100 25
  button "Delete", 34, 145 245 90 25 
  text "Select Nick Suffix", 35, 95 270 100 25 
  list 36, 55 285 180 80
  text "Cooldown", 37, 1 255 50 15  
  edit "", 38, 1 270 47 15
  text "Seconds", 39, 5 285 50 15
}
dialog AA {
  title "Add Away Message"
  size -1 -1 150 75
  button "Ok", 1, 5 40 70 25, ok
  button "Cancel", 2, 75 40 70 25, cancel
  text "New Away Message", 3, 27 0 130 15
  edit "", 4, 5 15 140 20
}
dialog AB {
  title "Add Back Message"
  size -1 -1 150 75
  button "Ok", 1, 5 40 70 25, ok
  button "Cancel", 2, 75 40 70 25, cancel
  text "New Back Message", 3, 27 0 130 15
  edit "", 4, 5 15 140 20
}
dialog DA {
  title "Delete Away Message"
  size -1 -1 190 105
  button "Ok", 1, 5 75 90 25, ok
  button "Cancel", 2, 95 75 90 25, cancel
  text "Select Message to Delete", 3, 40 0 130 15
  list 4, 5 15 180 80
}
dialog DB {
  title "Delete Back Message"
  size -1 -1 190 105
  button "Ok", 1, 5 75 90 25, ok
  button "Cancel", 2, 95 75 90 25, cancel
  text "Select Message to Delete", 3, 40 0 130 15
  list 4, 5 15 180 80
}
dialog AAS {
  title "Add Away Suffix"
  size -1 -1 150 75
  button "Ok", 1, 5 40 70 25, ok
  button "Cancel", 2, 75 40 70 25, cancel
  text "New Away Suffix", 3, 27 0 130 15
  edit "", 4, 5 15 140 20
}
dialog DAS {
  title "Delete Away Suffix"
  size -1 -1 190 105
  button "Ok", 1, 5 75 90 25, ok
  button "Cancel", 2, 95 75 90 25, cancel
  text "Select Suffix to Delete", 3, 40 0 130 15
  list 4, 5 15 180 80
}
on *:dialog:as:init:*:{
  set %as6awyn 1
  while ($hget(away,%as6awyn).item != $null) {
    did -a as 22 $hget(away,%as6awyn).data
    inc %as6awyn
  }
  set %as6bwyn 1
  while ($hget(back,%as6bwyn).item != $null) {
    did -a as 26 $hget(back,%as6bwyn).data
    inc %as6bwyn
  }
  set %as6swyn 1
  while ($hget(suffix,%as6swyn).item != $null) {
    did -a as 36 $hget(suffix,%as6swyn).data
    inc %as6swyn
  }
  if ($($+(%,as6,$network,away),2) == on) {
    did -c as 4
  }
  if ($($+(%,as6,$network,away),2) != on) {
    did -c as 5
  }
  if ($group(#autoback) == on) {
    did -c as 7
  }
  if ($group(#autoback) == off) {
    did -c as 8
  }
  if ($timer(away) != $null) {
    did -c as 10
  }
  if ($timer(away) == $null) {
    did -c as 11
  }
  if (%as6pagetimer == $null) {
    did -c as 13
  }
  if (%as6pagetimer == on) {
    did -c as 14
  }
  if (%as6cooldown != $null) {
    did -a as 38 %as6cooldown
  }
}
on *:dialog:da:init:*:{
  set %as6awyn 1
  while ($hget(away,%as6awyn).item != $null) {
    did -a da 4 $hget(away,%as6awyn).data
    inc %as6awyn
  }
}
on *:dialog:db:init:*:{
  set %as6bwyn 1
  while ($hget(back,%as6bwyn).item != $null) {
    did -a db 4 $hget(back,%as6bwyn).data
    inc %as6bwyn
  }
}
on *:dialog:das:init:*:{
  set %as6swyn 1
  while ($hget(suffix,%as6swyn).item != $null) {
    did -a das 4 $hget(suffix,%as6swyn).data
    inc %as6swyn
  }
}
on *:dialog:as:sclick:20:{
  dialog -c as as
  dialog -m aa aa
}
on *:dialog:as:sclick:24:{
  dialog -c as as
  dialog -m ab ab
}
on *:dialog:as:sclick:28:{
  dialog -c as as
  dialog -m da da
}
on *:dialog:as:sclick:30:{
  dialog -c as as
  dialog -m db db
}
on *:dialog:as:sclick:32:{
  dialog -c as as
  dialog -m aas aas
}
on *:dialog:as:sclick:34:{
  dialog -c as as
  dialog -m das das
}
on *:dialog:aa:sclick:1:{
  if (($did(aa,4).edited == $true) && ($hget(away))) {
    hadd away $+($date,$time) $did(aa,4).text
    hsave -o away " $+ $scriptdiraway.hsh"    
    dialog -m as as
  }
  if (($did(aa,4).edited == $true) && ($hget(away) == $null)) {
    hmake away 5    
    hadd away $+($date,$time) $did(aa,4).text
    hsave -o away " $+ $scriptdiraway.hsh"    
    dialog -m as as
  }    
  if ($did(aa,4).edited != $true) {
    dialog -m as as
  }
}
on *:dialog:ab:sclick:1:{
  if (($did(ab,4).edited == $true) && ($hget(back))) {
    hadd back $+($date,$time) $did(ab,4).text
    hsave -o back " $+ $scriptdirback.hsh"    
    dialog -m as as
  }
  if (($did(ab,4).edited == $true) && ($hget(back) == $null)) {
    hmake back 5    
    hadd back $+($date,$time) $did(ab,4).text
    hsave -o back " $+ $scriptdirback.hsh"    
    dialog -m as as
  }
  if ($did(ab,4).edited != true) {
    dialog -m as as 
  }
}
on *:dialog:da:sclick:1:{
  if (($did(da,4).sel != $null) && ($hget(away))) {
    hdel away $hfind(away,$did(da,4).seltext).data 
    hsave -o away " $+ $scriptdiraway.hsh"    
    dialog -m as as
  }
  else {
    dialog -m as as
  }
}
on *:dialog:db:sclick:1:{
  if (($did(db,4).sel != $null) && ($hget(back))) {
    hdel back $hfind(back,$did(db,4).seltext).data 
    hsave -o back " $+ $scriptdirback.hsh"    
    dialog -m as as
  }
  else {
    dialog -m as as
  }
}
on *:dialog:aas:sclick:1:{
  if (($did(aas,4).edited == $true) && ($hget(suffix))) {
    hadd suffix $+($date,$time) $did(aas,4).text
    hsave -o suffix " $+ $scriptdirsuffix.hsh"    
    dialog -m as as
  }
  if (($did(aas,4).edited == $true) && ($hget(suffix) == $null)) {
    hmake suffix 5    
    hadd suffix $+($date,$time) $did(aas,4).text
    hsave -o suffix " $+ $scriptdirsuffix.hsh"    
    dialog -m as as
  }
  if ($did(aas,4).edited != $true) {
    dialog -m as as 
  }
}
on *:dialog:das:sclick:1:{
  if (($did(das,4).sel != $null) && ($hget(suffix))) {
    hdel suffix $hfind(suffix,$did(das,4).seltext).data 
    hsave -o suffix " $+ $scriptdirsuffix.hsh"    
    dialog -m as as
  }
  else {
    dialog -m as as
  }
}
on *:dialog:as:sclick:1:{
  if ($did(as,22).seltext != $null) {
    set %as6awaymessage $did(as,22).seltext
  }
  if ($did(as,26).seltext != $null) {
    set %as6backmessage $did(as,26).seltext
  }
  if ($did(as,36).seltext != $null) {
    set %as6awaysuffix $did(as,36).seltext
  }
  if ($did(as,7).state == 1) {
    autoback.on
  }
  if ($did(as,8).state == 1) {
    autoback.off
  }
  if ($did(as,10).state == 1) {
    autoaway.on
  }
  if ($did(as,11).state == 1) {
    autoaway.off
  }
  if ($did(as,13).state == 1) {
    pager.on
  }
  if ($did(as,14).state == 1) {
    pager.off
  }
  if ($did(as,4).state == 1) {
    away.on
  }
  if ($did(as,5).state == 1) {
    away.off
  }
  if ($did(as,38).edited == $true) {
    set %as6cooldown $did(as,38).text
  }
}