home *** CD-ROM | disk | FTP | other *** search
/ napalm.napnet.hu / 2015-02-12.napalm.napnet.hu.tar / napalm.napnet.hu / programok / kommunikacio / mpp700.exe / Kte-Dyn.dat < prev    next >
Text File  |  2002-08-02  |  26KB  |  770 lines

  1. ; Kte dynamic script file
  2. ; Do not edit or unload this file while using Kte!
  3. alias theme.text {
  4.   if (!$var(%:echo)) { return $false }
  5.   kte_set std
  6.   if ($isalias(kte:: $+ $1)) { kte:: $+ $1 | return $true }
  7.   elseif (* iswm $hget(Kte_Theme, $1)) {
  8.     var %ln
  9.     set -n %ln $hget(Kte_Theme, $1)
  10.     if ($gettok(%ln, 1, 32) == !Script) { set -n %ln $deltok(%ln, 1, 32) }
  11.     else { set -n %ln % $+ :echo $dll($scriptdir $+ kte.dll, MTSPrecompile, %ln) $!+  % $+ :comments }
  12.     .timerkte_theme 1 0 %ln | .timerkte_theme -e | return $true
  13.   }
  14.   return $false
  15. }
  16. alias kte_void
  17.  
  18. alias -l _entered {
  19.   var %def = $readini($mircini, events, default), %set
  20.   if (!%def) { %def = 0,0,0,0,0,0,0,0 }
  21.   %set = $readini($mircini, events, $1)
  22.   if (!%set) { %set = 0,0,0,0,0,0,0,0 }
  23.   while ($findtok(%set, 0, 1, 44)) { %set = $puttok(%set, $calc($gettok(%def, $ifmatch, 44) + 1), $ifmatch, 44) }
  24.   hadd Kte_Events $1 %set
  25. }
  26. alias -l _left {
  27.   set -u0 %kte_chan $1
  28.   var %i = $scon(0)
  29.   while (%i) { if ($scon(%i) != $cid) && ($scon(%i).kte_haschan) { return } | dec %i }
  30.   hdel Kte_Events $1
  31. }
  32. alias -l kte_haschan return $chan(%kte_chan)
  33.  
  34. alias -l _isactive if ($cid == $activecid) { return 1 } | return 0
  35. alias -l _active if ($cid == $activecid) { return a } | return s
  36. alias -l _ischat {
  37.   var %n = $mid($1, 2)
  38.   if (=* !iswm $1) { return 1 }
  39.   if (=* iswm $1) && (($chat(%n)) || ($fserv(%n))) { return 1 }
  40.   return 0
  41. }
  42.  
  43. ; events
  44. on ^&*:JOIN:#:{
  45.   if ($chan !ischan) { return }
  46.   if ($nick == $me) { _entered $chan }
  47.   var %tgt = $gettok($hget(Kte_Events, $chan), 1, 44)
  48.   if (%tgt = 3) && ($nick != $me) { haltdef | return }
  49.   kte_set std nick address target chanstd
  50.   if (%tgt = 2) { set -u1 %:echo echo $color(join) -sti2 }
  51.   else { set -u1 %:echo echo $color(join) -ti2 $chan }
  52.   if ($nick == $me) { kte::JoinSelf }
  53.   else { kte::Join }
  54.   kte_unset
  55. }
  56. on ^&*:PART:#:{
  57.   if ($chan !ischan) { return }
  58.   var %tgt = $gettok($hget(Kte_Events, $chan), 2, 44)
  59.   if ($nick != $me) || (%tgt = 2) {
  60.     if (%tgt = 3) { goto skip }
  61.     if (%tgt = 2) { set -u1 %:echo echo $color(part) -sti2 }
  62.     else { set -u1 %:echo echo $color(part) -ti2 $chan }
  63.     set -nu1 %::text $strip($1-, o)
  64.     kte_set std nick address target chanstd parentext
  65.     kte::Part
  66.     kte_unset
  67.   }
  68.   :skip
  69.   if ($nick == $me) { _left $chan }
  70. }
  71.  
  72. on ^&*:QUIT:{
  73.   var %i = $comchan($nick, 0), %tgt, %st = 0
  74.   set -nu1 %::text $strip($1-, o)
  75.   kte_set std nick address parentext
  76.   while (%i) {
  77.     %::chan = $comchan($nick, %i)
  78.     %tgt = $gettok($hget(Kte_Events, %::chan), 3, 44)
  79.     if (%tgt = 4) { dec %i | continue }
  80.     if (%tgt = 3) || (%tgt = 2) { %st = 1 }
  81.     if (!%tgt) || (%tgt = 3) || (%tgt = 1) { %:echo = echo $color(quit) -ti2 %::chan | kte::Quit ! }
  82.     dec %i
  83.   }
  84.   unset %::chan
  85.   if ($query($nick)) { %:echo = echo $color(quit) -ti2 $nick | kte::Quit ! }
  86.   if (%st) { %:echo = echo $color(quit) -sti2 | kte::Quit ! }
  87.   haltdef
  88.   kte_unset
  89. }
  90.  
  91. on ^&*:NICK:{
  92.   var %i = $comchan($newnick, 0), %tgt
  93.   kte_set std nick address
  94.   set -u1 %::newnick $newnick
  95.   if ($nick == $me) { %:echo = echo $color(nick) -sti2 | kte::NickSelf ! }
  96.   while (%i) {
  97.     set -u1 %::chan $comchan($newnick, %i)
  98.     %tgt = $gettok($hget(Kte_Events, %::chan), 7, 44)
  99.     if (%tgt != 2) || ($nick == $me) { %:echo = echo $color(nick) -ti2 %::chan | kte::Nick ! }
  100.     dec %i
  101.   }
  102.   if ($query($newnick)) { unset %::chan | %:echo = echo $color(nick) -ti2 $newnick | kte::Nick ! }
  103.   haltdef
  104.   kte_unset + chan newnick
  105. }
  106.  
  107. on ^&*:USERMODE:{
  108.   kte_set std nick address
  109.   set -nu1 %::modes $1-
  110.   set -u1 %:echo echo $color(mode) -sti2
  111.   kte::ModeUser
  112.   unset %::modes
  113.   kte_unset
  114. }
  115. on ^&*:RAWMODE:#:{
  116.   if ($chan !ischan) { return }
  117.   var %tgt = $gettok($hget(Kte_Events, $chan), 4, 44)
  118.   if (%tgt = 3) { haltdef | return }
  119.   kte_set std nick address target chanstd
  120.   if (%tgt = 2) { set -u1 %:echo echo $color(mode) -sti2 }
  121.   else { set -u1 %:echo echo $color(mode) -ti2 $chan }
  122.   set -nu1 %::modes $1-
  123.   kte::Mode
  124.   unset %::modes
  125.   kte_unset
  126. }
  127.  
  128. on ^&*:TOPIC:#:{
  129.   if ($chan !ischan) { return }
  130.   var %tgt = $gettok($hget(Kte_Events, $chan), 5, 44)
  131.   if (%tgt = 3) { haltdef | return }
  132.   if (%tgt = 2) { set -u1 %:echo echo $color(topic) -sti2 }
  133.   else { set -u1 %:echo echo $color(topic) -ti2 $chan }
  134.   set -nu1 %::text $1-
  135.   kte_set std nick address target chanstd parentext
  136.   kte::Topic
  137.   kte_unset
  138. }
  139. on ^&*:KICK:#:{
  140.   if ($chan !ischan) { return }
  141.   var %tgt = $gettok($hget(Kte_Events, $chan), 8, 44)
  142.   if (%tgt = 3) && ($knick != $me) { haltdef | return }
  143.   if (%tgt = 2) { set -u1 %:echo echo $color(kick) -sti2 }
  144.   else { set -u1 %:echo echo $color(kick) -ti2 $chan }
  145.   set -u1 %::knick $knick
  146.   set -u1 %::kaddress $gettok($address($knick, 5), 2, 33)
  147.   set -nu1 %::text $strip($1-, o)
  148.   kte_set std nick address target chanstd parentext
  149.   if ($knick == $me) {
  150.     kte::KickSelf !
  151.     if (%tgt == 2) { set -u1 %:echo echo $color(kick) -ti2 $chan }
  152.     else { set -u1 %:echo echo $color(kick) -seti2 }
  153.     kte::KickSelf !
  154.     _left $chan
  155.   }
  156.   else { kte::Kick ! }
  157.   haltdef
  158.   kte_unset + knick kaddress
  159. }
  160.  
  161. on ^&*:INVITE:#:{
  162.   var %e = echo $color(invite) -ti2
  163.   kte_set std nick address chan target
  164.   if ($_isactive) && (@* !iswm $active) && ($hget(Kte_Events, Active.Invites)) { set -u1 %:echo %e $+ a }
  165.   else { set -u1 %:echo %e $+ s }
  166.   kte::Invite
  167.   kte_unset
  168. }
  169.  
  170. on ^&*:ERROR:*:{
  171.   set -u1 %:echo echo $color(other) -sti2 | set -nu1 %::text $2-
  172.   kte_set std nick parentext
  173.   kte::ServerError
  174.   kte_unset
  175. }
  176.  
  177. on ^&*:NOTIFY:{
  178.   set -u1 %:echo echo $color(notify) -ti2 $+ $iif(($_isactive) && (@* !iswm $active), a, s)
  179.   set -nu1 %::text $notify($nick).note
  180.   kte_set std nick address parentext
  181.   kte::Notify
  182.   kte_unset
  183. }
  184. on ^&*:UNOTIFY:{
  185.   set -u1 %:echo echo $color(notify) -ti2 $+ $iif(($_isactive) && (@* !iswm $active), a, s)
  186.   set -nu1 %::text $notify($nick).note
  187.   kte_set std nick address parentext
  188.   kte::UNotify
  189.   kte_unset
  190. }
  191.  
  192. on ^&*:WALLOPS:*:{
  193.   set -u1 %:echo echo $color(wallops) -ti2 $+ $iif(($_isactive) && (@* !iswm $active), a, s)
  194.   set -nu1 %::text $strip($1-, o)
  195.   kte_set std nick address target parentext
  196.   kte::Wallop
  197.   kte_unset
  198. }
  199.  
  200. on &*:DNS:{
  201.   set -u1 %:echo echo $color(info) -ti2 $+ $iif(($_isactive) && (@* !iswm $active), a, s)
  202.   kte_set std
  203.   if ($dns(0)) {
  204.     var %i = 1, %t = $dns(0)
  205.     while (%i <= %t) {
  206.       set -nu1 %::nick $dns(%i).nick
  207.       set -nu1 %::address $dns(%i)
  208.       set -nu1 %::iaddress $dns(%i).ip
  209.       set -nu1 %::naddress $dns(%i).addr
  210.       set -nu1 %::raddress $remtok($dns(%i).ip $dns(%i).addr, $dns(%i), 1, 32)
  211.       kte::DNSResolve
  212.       inc %i
  213.     }
  214.   }
  215.   else {
  216.     set -nu1 %::nick $nick
  217.     set -nu1 %::address $address
  218.     kte::DNSError
  219.   }
  220.   kte_unset + nick address iaddress raddress naddress
  221. }
  222.  
  223. on ^&*:SNOTICE:*:{
  224.   set -u1 %:echo echo $color(notice) -sti2
  225.   set -nu1 %::text $strip($1-, o)
  226.   kte_set std nick target parentext
  227.   kte::NoticeServer
  228.   kte_unset
  229. }
  230.  
  231. on &*:INPUT:*:{
  232.   if ($0) && ((/* !iswm $1) || ($ctrlenter)) && (($active ischan) || ($query($active)) || (=* iswm $active)) && ($window($active, 0) = 1) {
  233.     say $1- | halt
  234.   }
  235. }
  236.  
  237. alias say {
  238.   if ($isid) { return }
  239.   if ($status == disconnected) || (!$0) || (($active !ischan) && (!$query($active))) && (=* !iswm $active) {
  240.     .timer.kte 1 0 !say $1- | .timer.kte -e | halt
  241.   }
  242.   .!msg $active $1-
  243.   set -u1 %:echo echo $color(own) -ati2
  244.   set -nu1 %::text $1- | set -u1 %::target $active | set -u1 %::nick $me
  245.   kte_set std parentext
  246.   if ($active ischan) {
  247.     set -u1 %::chan $active
  248.     if ($nick($active, $me).pnick != $me) { set -u1 %::cmode $left($ifmatch, 1) }
  249.     set -u1 %::cnick $nick($active, $me).color
  250.     kte::TextChanSelf !
  251.   }
  252.   else {
  253.     set -u1 %::cnick $cnick($me).color
  254.     kte::TextQuerySelf !
  255.   }
  256.   kte_unset + target nick address chan cnick cmode
  257. }
  258. alias query {
  259.   if ($isid) { return }
  260.   if (!$0) { .timer.kte 1 0 !query | .timer.kte -e | halt }
  261.   !query $1
  262.   if ($0 > 1) {
  263.     if (!$server) { .timer.kte 1 0 !query $1- | .timer.kte -e | halt }
  264.     msg $1-
  265.   }
  266. }
  267. alias msg {
  268.   if ($isid) { return }
  269.   if ($0 < 2) || ((=* !iswm $1) && ($status == disconnected)) || (!$_ischat($1)) {
  270.     .timer.kte 1 0 !msg $1- | .timer.kte -e | halt
  271.   }
  272.   .!msg $1-
  273.   if (!$show) { return }
  274.   set -nu1 %::text $2- | set -u1 %::target $1 | set -u1 %::nick $me
  275.   kte_set std parentext
  276.   ; %::nick = $me. This is a matter of logic.
  277.   ; Use <target> in your script, not <nick>, to refer to the recipient of the message.
  278.   if ($1 ischan) || ($query($1)) || (=* iswm $1) {
  279.     set -u1 %:echo echo $color(own) -ti2 $1
  280.     if ($1 ischan) {
  281.       if ($nick($1, $me).pnick != $me) { set -u1 %::cmode $left($ifmatch, 1) }
  282.       set -u1 %::cnick $nick($1, $me).color
  283.       kte::TextChanSelf !
  284.     }
  285.     else { kte::TextQuerySelf ! }
  286.   }
  287.   else {
  288.     set -u1 %:echo echo $color(own) -ti2 $+ $_active
  289.     kte::TextMsgSelf
  290.   }
  291.   kte_unset + target nick chanstd
  292. }
  293. alias amsg {
  294.   if ($isid) { return }
  295.   if ($status == disconnected) || (!$0) || (!$chan(0)) { .timer.kte 1 0 !amsg $1- | .timer.kte -e | halt }
  296.   !.amsg $1-
  297.   if (!$show) { return }
  298.   set -nu1 %::text $1- | set -u1 %::nick $me
  299.   kte_set std parentext
  300.   var %i = $chan(0)
  301.   while (%i) {
  302.     set -u1 %::chan $chan(%i)
  303.     set -u1 %::target %::chan
  304.     set -u1 %:echo echo $color(own) -ti2 %::chan
  305.     if ($nick($chan(%i), $me).pnick != $me) { set -u1 %::cmode $left($ifmatch, 1) }
  306.     set -u1 %::cnick $nick(%::chan, $me).color
  307.     kte::TextChanSelf !
  308.     dec %i
  309.   }
  310.   kte_unset + nick cnick cmode chan target
  311. }
  312.  
  313.  
  314. alias me {
  315.   if ($isid) { return }
  316.   if (!$server) || (!$0) || (($active !ischan) && (!$query($active))) && (=* !iswm $active) {
  317.     .timer.kte 1 0 !me $1- | .timer.kte -e | halt
  318.   }
  319.   .!describe $active $1-
  320.   if (!$show) { return }
  321.   set -u1 %:echo echo $color(action) -ati2
  322.   set -nu1 %::text $1- | set -u1 %::target $active | set -u1 %::nick $me
  323.   kte_set std parentext
  324.   if ($active ischan) {
  325.     set -u1 %::chan $active
  326.     if ($nick($active, $me).pnick != $me) { set -u1 %::cmode $left($ifmatch, 1) }
  327.     set -u1 %::cnick $nick($active, $me).color
  328.   }
  329.   kte::ActionChanSelf !
  330.   kte_unset + target nick chan cnick cmode
  331. }
  332. alias action {
  333.   if ($isid) { return }
  334.   if (!$server) || (!$0) || (($active !ischan) && (!$query($active))) && (=* !iswm $active) {
  335.     .timer.kte 1 0 !action $1- | .timer.kte -e | halt
  336.   }
  337.   me $1-
  338. }
  339. alias describe {
  340.   if ($isid) { return }
  341.   if (!$server) || ($0 < 2) || (!$_ischat($1)) {
  342.     .timer.kte 1 0 !describe $1- | .timer.kte -e | halt
  343.   }
  344.   .!describe $1-
  345.   if (!$show) { return }
  346.   set -nu1 %::text $2- | set -u1 %::target $1 | set -u1 %::nick $1
  347.   kte_set std parentext
  348.   if ($1 ischan) || ($query($1)) || (=* iswm $1) {
  349.     set -u1 %:echo echo $color(action) -ti2 $1
  350.     if ($1 ischan) {
  351.       set -u1 %::chan $1
  352.       if ($nick($1, $me).pnick != $me) { set -u1 %::cmode $left($ifmatch, 1) }
  353.       set -u1 %::cnick $nick($1, $me).color
  354.       kte::ActionChanSelf !
  355.     }
  356.     else { kte::ActionQuerySelf ! }
  357.   }
  358.   else { set -u1 %:echo echo $color(action) -ti2 $+ $_active | kte::ActionMsgSelf ! }
  359.   kte_unset + target chan cmode cnick nick
  360. }
  361. alias ame {
  362.   if ($isid) { return }
  363.   if (!$server) || (!$0) || (!$chan(0)) { .timer.kte 1 0 !ame $1- | .timer.kte -e | halt }
  364.   !.ame $1-
  365.   if (!$show) { return }
  366.   set -nu1 %::text $1- | set -u1 %::nick $me
  367.   kte_set std parentext
  368.   var %i = $chan(0)
  369.   while (%i) {
  370.     set -u1 %::chan $chan(%i)
  371.     set -u1 %::target %::chan
  372.     set -u1 %:echo echo $color(action) -ti2 %::chan
  373.     if ($nick(%::chan, $me).pnick != $me) { set -u1 %::cmode $left($ifmatch, 1) }
  374.     set -u1 %::cnick $nick(%::chan, $me).color
  375.     kte::ActionChanSelf !
  376.     dec %i
  377.   }
  378.   kte_unset + target chan cnick cmode nick
  379. }
  380.  
  381. alias notice {
  382.   if ($isid) { return }
  383.   if (!$server) || ($0 < 2) { .timer.kte 1 0 !notice $1- | .timer.kte -e | halt }
  384.   .!notice $1-
  385.   if (!$show) { return }
  386.   set -nu1 %::text $2- | set -u1 %::target $1 | set -u1 %::nick $1
  387.   kte_set std parentext
  388.   set -u1 %:echo echo $color(notice) -ti2 $+ $_active
  389.   if ($1 ischan) { set -u1 %::chan $1 | kte::NoticeSelfChan ! }
  390.   else { kte::NoticeSelf ! }
  391.   kte_unset + target nick chan
  392. }
  393.  
  394. on &^*:TEXT:*:#:{
  395.   if ($chan !ischan) { return }
  396.   set -u1 %:echo echo $color(normal) -mlbfti2 $chan
  397.   set -nu1 %::text $strip($1-, o)
  398.   kte_set std nick address chanstd target parentext
  399.   kte::TextChan
  400.   kte_unset
  401. }
  402. on &^*:ACTION:*:#:{
  403.   if ($chan !ischan) { return }
  404.   set -u1 %:echo echo $color(action) -mlbfti2 $chan
  405.   set -nu1 %::text $strip($1-, o)
  406.   kte_set std nick address chanstd target parentext
  407.   kte::ActionChan
  408.   kte_unset
  409. }
  410. on &^*:NOTICE:*:#:{
  411.   if ($chan !ischan) { return }
  412.   set -u1 %:echo echo $color(notice) -mti2 $chan
  413.   set -nu1 %::text $strip($1-, o)
  414.   kte_set std nick address chanstd target parentext
  415.   kte::NoticeChan
  416.   kte_unset
  417. }
  418.  
  419. on &^*:CHAT:*:{
  420.   if ($window(=$nick, 0) > 1) { return }
  421.   kte_set std nick address target
  422.   if (ACTION * iswm $1-) {
  423.     set -u1 %:echo echo $color(action) -mti2lbf =$nick
  424.     set -nu1 %::text $strip($mid($1-, 8, -1), o)
  425.     kte_set parentext
  426.     kte::ActionQuery
  427.   }
  428.   else {
  429.     set -u1 %:echo echo $color(normal) -mti2lbf =$nick
  430.     set -nu1 %::text $strip($1-, o)
  431.     kte_set parentext
  432.     kte::TextQuery
  433.   }
  434.   kte_unset std nick address target parentext
  435. }
  436.  
  437. on &^*:TEXT:*:?:{
  438.   var %e = echo $color(normal) -mti2
  439.   set -nu1 %::text $strip($1-, o)
  440.   kte_set std nick address target parentext
  441.   if ($query($nick)) {
  442.     set -u1 %:echo %e $nick
  443.     kte::TextQuery
  444.   }
  445.   else {
  446.     if ($window(Message Window)) { set -u1 %:echo %e $+ d }
  447.     elseif ($_isactive) && (@* !iswm $active) && ($hget(Kte_Events, Active.Queries)) { set -u1 %:echo %e $+ a }
  448.     else { set -u1 %:echo %e $+ s }
  449.     kte::TextMsg
  450.   }
  451.   kte_unset
  452. }
  453. on &^*:ACTION:*:?:{
  454.   var %e = echo $color(action) -mti2
  455.   set -nu1 %::text $strip($1-, o)
  456.   kte_set std nick address target parentext
  457.   if ($query($nick)) { set -u1 %:echo %e $nick | kte::ActionQuery }
  458.   else {
  459.     if ($window(Message Window)) { set -u1 %:echo %e $+ d }
  460.     elseif ($_isactive) && (@* !iswm $active) && ($hget(Kte_Events, Active.Queries)) { set -u1 %:echo %e $+ a }
  461.     else { set -u1 %:echo %e $+ s }
  462.     kte::ActionMsg
  463.   }
  464.   kte_unset
  465. }
  466. on &^*:NOTICE:*:?:{
  467.   var %e = echo $color(notice) -mti2
  468.   if ($_isactive) && (@* !iswm $active) && ($hget(Kte_Events, Active.Notices)) { set -u1 %:echo %e $+ a }
  469.   else { set -u1 %:echo %e $+ s }
  470.   set -nu1 %::text $strip($1-, o)
  471.   kte_set std nick address target parentext
  472.   kte::Notice
  473.   kte_unset
  474. }
  475.  
  476. ctcp ^&*:*:?:kte_onctcp $1-
  477. ctcp ^&*:*:#:kte_onctcp $1-
  478. alias -l kte_onctcp {
  479.   if ($1 == VERSION) || (($target == $me) && ($1 == DCC)) { return }
  480.   var %ch = 0, %txt, %rpl
  481.   if ($target != $me) { %ch = 1 }
  482.   if ($target ischan) {
  483.     var %tgt = $gettok($hget(Kte_Events, $chan), 6, 44)
  484.     if (%tgt = 2) { set -u1 %:echo echo $color(ctcp) -sti2 }
  485.     else { set -u1 %:echo echo $color(ctcp) -ti2 $target }
  486.   }
  487.   else {
  488.     set -u1 %:echo echo $color(ctcp) -ti2 $+ $iif((@* !iswm $active) && ($_isactive) && ($hget(Kte_Events, Active.CTCPs)), a, s)
  489.   }
  490.   set -u1 %::ctcp $1
  491.   set -n %txt $2-
  492.   if ($1 == PING) { %txt = | set -n %rpl $1- }
  493.   elseif ($1- == TIME) { set -n %rpl $1 $fulldate }
  494.   elseif ($1- == FINGER) { set -n %rpl $1 $($fullname, 2) (-) Idle $idle second $+ $iif(($idle != 1), s) }
  495.   set -nu1 %::text $strip(%txt, o)
  496.   kte_set std nick address chanstd target parentext
  497.   if (%ch) { kte::CTCPChan ! }
  498.   else { kte::CTCP ! }
  499.   if (%rpl) { !.ctcpreply $nick %rpl }
  500.   kte_unset
  501.   haltdef
  502. }
  503.  
  504. alias ctcp {
  505.   if ($isid) { return }
  506.   if ($0 < 2) || (!$server) || ($2 == DCC) { .timer.kte 1 0 !ctcp $1- | .timer.kte -e | return }
  507.   .!ctcp $1-
  508.   if (!$show) { return }
  509.   set -u1 %::target $1
  510.   set -u1 %::ctcp $upper($2)
  511.   set -nu1 %::text $3-
  512.   kte_set std parentext
  513.   set -u1 %:echo echo $color(ctcp) -ti2 $+ $_active
  514.   if ($1 ischan) { set -u1 %::chan $1 | kte::CTCPChanSelf ! }
  515.   else { set -u1 %::nick $1 | kte::CTCPSelf ! }
  516.   kte_unset + nick chan ctcp target
  517. }
  518.  
  519. on &*:CTCPREPLY:*:{
  520.   var %rpl | set -n %rpl $2-
  521.   if ($1 == PING) && ($2- isnum 1- $+ $ctime) { %rpl = $duration($calc($ctime - $2)) }
  522.   set -u1 %:echo echo $color(ctcp) -ti2 $+ $_active
  523.   set -u1 %::ctcp $upper($1)
  524.   set -nu1 %::text $strip(%rpl, o)
  525.   kte_set std nick address target parentext
  526.   kte::CTCPReply
  527.   kte_unset + ctcp
  528. }
  529.  
  530. alias ctcpreply {
  531.   if ($isid) { return }
  532.   if ($0 < 2) || (!$server) { .timer.kte 1 0 !ctcpreply $1- | .timer.kte -e | return }
  533.   .!ctcpreply $1-
  534.   if (!$show) { return }
  535.   set -u1 %:echo echo $color(ctcp) -ti2 $+ $_active
  536.   set -u1 %::target $1
  537.   set -u1 %::ctcp $upper($2)
  538.   set -nu1 %::text $3-
  539.   set -u1 %::nick $1
  540.   kte_set std parentext
  541.   kte::CTCPReplySelf !
  542.   kte_unset + ctcp target nick
  543. }
  544.  
  545. alias dns {
  546.   if ($isid) { return }
  547.   if (!$0) || (($1 == -h) && ($0 = 1)) || ((. !isin $1) && ($1 != -h) && (!$server)) {
  548.     .timer.kte 1 0 !dns $1- | .timer.kte -e | return
  549.   }
  550.   .!dns $1-
  551.   if (!$show) { return }
  552.   var %h = $1, %f
  553.   if ($istok(-h -c, $1, 32)) { %f = $1 | %h = $2 }
  554.   if (%f != -h) && (. !isin %h) && ($address(%h, 5)) { %h = $gettok($ifmatch, 2, 64) }
  555.   set -u1 %:echo echo $color(info) -ti2 $+ $iif((@* iswm $active) && ($_isactive), s, a)
  556.   set -u1 %::address %h
  557.   kte_set std
  558.   kte::DNS !
  559.   kte_unset + address
  560. }
  561.  
  562. ; ----------------------------------------------------------------------
  563. ; Numeric (raw) events  ------------------------------------------------
  564. ; ----------------------------------------------------------------------
  565.  
  566. raw 002:*:set -u1 %::value $ [ $+ [ $0 ] ] | _doraw $1-
  567. raw 003:*:if ($2-5 == this server was created) { set -u1 %::value $6- } | _doraw $1-
  568. raw 221:*:set -u1 %::nick $me | set -u1 %::modes $2 | _doraw $1-
  569. raw 250:*:set -u1 %::value $5 | _doraw $1-
  570. raw 251:*:set -u1 %::users $4 | set -u1 %::text $7 | set -u1 %::value $10 | _doraw $1-
  571. raw 255:*:set -u1 %::users $4 | set -u1 %::value $7 | _doraw $1-
  572. raw 265:*:set -u1 %::users $5 | set -u1 %::value $7 | _doraw $1-
  573. raw 266:*:set -u1 %::users $5 | set -u1 %::value $7 | _doraw $1-
  574. raw 301:*:{
  575.   if ($halted) { return }
  576.   if ($hget(Kte_Whois)) { hadd Kte_Whois Away $3- | haltdef }
  577.   else { set -u1 %::nick $2 | set -nu1 %::away $3- | set -nu1 %::text $3- | _doraw $1- }
  578. }
  579. raw 302:*:{
  580.   if ($halted) || (!$isalias(kte::Raw.302)) { return }
  581.   var %i = 2, %t = $0, %p, %addr, %pos
  582.   while (%i <= %t) {
  583.     %p = $ [ $+ [ %i ] ]
  584.     %addr = $gettok(%p, 2, 61)
  585.     %pos = $pos(%addr, $left($remove(%addr, +, -), 1), 1)
  586.     set -u1 %::nick $gettok(%p, 1, 61)
  587.     set -u1 %::address $mid(%addr, %pos)
  588.     set -u1 %::value $left(%addr, $calc(%pos - 1))
  589.     if ($right(%::nick, 1) == *) { %::nick = $left(%::nick, -1) | %::value = %::value $+ * }
  590.     ._doraw $1-
  591.     inc %i
  592.   }
  593. }
  594.  
  595. ; /list
  596. raw 321:*:if (!$halted) && ($isalias(kte::Raw.321)) { _doraw $1- }
  597. raw 322:*:if (!$halted) && ($isalias(kte::Raw.322)) { _doraw $1- }
  598. raw 323:*:if (!$halted) && ($isalias(kte::Raw.323)) { _doraw $1- }
  599. ; /links
  600. raw 364:*:if (!$halted) && ($isalias(kte::Raw.364)) { _doraw $1- }
  601. raw 365:*:if (!$halted) && ($isalias(kte::Raw.365)) { _doraw $1- }
  602.  
  603. raw 324:*:set -u1 %::chan $2 | set -u1 %::value $3- | set -u1 %::modes $3- | set -u1 %::text $3- | _doraw $1-
  604. raw 329:*:set -u1 %::chan $2 | set -u1 %::value $asctime($3) | set -u1 %::text $3- | _doraw $1-
  605. raw 333:*:set -u1 %::chan $2 | set -u1 %::nick $3 | set -u1 %::value $asctime($4) | set -u1 %::text %::value | _doraw $1-
  606. raw 341:*:set -u1 %::nick $2 | set -u1 %::chan $3 | _doraw $1-
  607. raw 352:*:{
  608.   if ($2 != *) { set -u1 %::chan $2 }
  609.   set -u1 %::address $+($3, @, $4)
  610.   set -u1 %::wserver $5
  611.   set -u1 %::nick $6
  612.   set -u1 %::away $iif((h isin $7), H, G)
  613.   set -u1 %::isoper is $iif((* !isin $7), not)
  614.   set -u1 %::cmode $remove($7, *, H, G)
  615.   set -u1 %::value $8
  616.   set -u1 %::realname $9-
  617.   _doraw $1-
  618. }
  619. raw 353:*:set -u1 %::chan $2 | set -u1 %::text $3- | _doraw $1-
  620. raw 372:*:set -nu1 %::text $3- | _doraw $1-
  621. raw 391:*:set -u1 %::text $3- | _doraw $1-
  622.  
  623. ; whois
  624. raw 311:*:{
  625.   var %h = Kte_Whois
  626.   if ($halted) { return }
  627.   if ($hget(%h)) { showwhois Whois }
  628.   if (* iswm $hget(Kte_Theme, Whois)) {
  629.     if (!$hget(%h)) { hmake %h 4 }
  630.     hadd %h Nick $2 | hadd %h Address $+($3, @, $4)
  631.     hadd %h RealName $6-
  632.     haltdef
  633.   }
  634.   if ($isalias(kte::Raw.311)) {
  635.     set -u1 %::nick $2
  636.     set -u1 %::address $+($3, @, $4)
  637.     set -nu1 %::realname $6-
  638.     ._doraw $1-
  639.   }
  640. }
  641. raw 314:*:{
  642.   var %h = Kte_Whois
  643.   if ($halted) { return }
  644.   if ($hget(%h)) { showwhois Whowas }
  645.   elseif (* iswm $hget(Kte_Theme, Whowas)) {
  646.     if (!$hget(%h)) { hmake %h 4 } | hadd %h Nick $2 | hadd %h Address $+($3, @, $4)
  647.     hadd %h RealName $6- | haltdef
  648.   }
  649.   if ($isalias(kte::Raw.314)) {
  650.     set -u1 %::nick $2 | set -u1 %::address $+($3, @, $4) | set -nu1 %::realname $6- | ._doraw $1-
  651.   }
  652. }
  653. raw 319:*:{
  654.   if ($halted) { return }
  655.   if ($hget(Kte_Whois)) { hadd Kte_Whois Chan $hget(Kte_Whois, Chan) $3- | haltdef }
  656.   if ($isalias(kte::Raw.319)) { set -u1 %::nick $2 | set -nu1 %::chan $3- | ._doraw $1- }
  657. }
  658. raw 312:*:{
  659.   if ($halted) { return }
  660.   if ($hget(Kte_Whois)) { hadd Kte_Whois WServer $3 | hadd Kte_Whois ServerInfo $4- | haltdef }
  661.   if ($isalias(kte::Raw.312)) { set -u1 %::nick $2 | set -u1 %::wserver $3 | set -nu1 %::serverinfo $4- | ._doraw $1- }
  662. }
  663. raw 307:*:{
  664.   if ($halted) { return }
  665.   if ($hget(Kte_Whois)) { hadd Kte_Whois IsRegd is | haltdef }
  666.   if ($isalias(kte::Raw.307)) { set -u1 %::nick $2 | set -u1 %::isregd is | ._doraw $1- }
  667. }
  668. raw 313:*:{
  669.   if ($halted) { return }
  670.   if ($hget(Kte_Whois)) { hadd Kte_Whois IsOper is | hadd Kte_Whois OperLine $3- | haltdef }
  671.   if ($isalias(kte::Raw.313)) { set -u1 %::nick $2 | set -u1 %::isoper is | set -nu1 %::operline $3- | ._doraw $1- }
  672. }
  673. raw 317:*:{
  674.   if ($halted) { return }
  675.   if ($hget(Kte_Whois)) { hadd Kte_Whois IdleTime $3 | hadd Kte_Whois SignonTime $4 | haltdef }
  676.   if ($isalias(kte::Raw.317)) {
  677.     set -u1 %::nick $2
  678.     set -u1 %::idletime $3
  679.     set -u1 %::signontime $asctime($4)
  680.     ._doraw $1-
  681.   }
  682. }
  683. raw 318:*:{
  684.   if ($halted) { return }
  685.   if ($hget(Kte_Data, ..NoNick)) { hdel Kte_Data ..NoNick | halt }
  686.   if ($hget(Kte_Whois)) { showwhois Whois | hfree Kte_Whois | haltdef }
  687.   if ($isalias(kte::Raw.318)) { set -nu1 %::nick $2 | ._doraw $1- }
  688. }
  689. raw 369:*:{
  690.   if ($halted) { return }
  691.   if (* iswm $hget(Kte_Data, ..NoNick)) { hdel Kte_Data ..NoNick | halt }
  692.   if ($hget(Kte_Whois)) { showwhois Whowas | hfree Kte_Whois | haltdef }
  693.   if ($isalias(kte::Raw.369)) { set -nu1 %::nick $2 | ._doraw $1- }
  694. }
  695.  
  696. raw *:*:{
  697.   if (6* iswm $numeric) || ($halted) { return }
  698.   if ($numeric = 303) && (!$2-) { Kte_error - $+ $_active The specified nicks are not online | haltdef }
  699.   set -u1 %::nick $2 | set -u1 %::chan $2 | set -u1 %::value $2
  700.   _doraw $1-
  701. }
  702. ; /_doraw str <params>
  703. alias -l _doraw {
  704.   var %cl = info2, %f, %n = $right(00 $+ $numeric, 3)
  705.   if ($istok(401 404, $numeric, 32)) { hadd Kte_Data ..NoNick $2 }
  706.   elseif (* iswm $hget(Kte_Data, ..NoNick)) { hdel Kte_Data ..NoNick }
  707.   if ($halted) && ($show) { goto end }
  708.   if ($istok(331 332 333, $numeric, 32)) { %cl = topic }
  709.   elseif ($numeric = 372) { %cl = normal }
  710.   set -u1 %::numeric $numeric
  711.   set -u1 %::fromserver $nick
  712.   kte_set std target
  713.   if ($istok(324 328 329 331 332 333 352 353 366 367 368 404 482, $numeric, 32)) {
  714.     var %ch = $2 | if ($numeric = 353) { %ch = $3 }
  715.     set -u1 %::chan %ch
  716.     if (%ch ischan) { %f = -ti2 %ch }
  717.     set -u1 %::value $3
  718.     if (!$var(%::text)) { set -nu1 %::text $3- }
  719.   }
  720.   if (!$isalias(kte::Raw. $+ %n)) {
  721.     if (!%f) { %f = -ti2 $+ $iif(($_isactive) && ($status != connecting) && (@* !iswm $active), a, s) }
  722.     set -u1 %:echo echo $color(%cl) %f
  723.     if (!$var(%::text)) { set -nu1 %::text $2- }
  724.     kte_set parentext
  725.     kte::Raw.Other !
  726.   }
  727.   else {
  728.     if ($istok(403 405 437 442 467 468 471 473 474 475 477 478, $numeric, 32)) {
  729.       set -u1 %::chan $2
  730.       if ($numeric = 478) { set -u1 %::value $3 | set -nu1 %::text $4- }
  731.       elseif (!$var(%::text)) { set -nu1 %::text $3- }
  732.     }
  733.     elseif ($istok(432 433 436 438, $numeric, 32)) { set -nu1 %::text $3- }
  734.     elseif ($numeric = 301) {
  735.       if (!$hget(Kte_Events, Active.Away)) { %f = -ti2s }
  736.       elseif ($query($2)) { %f = -ti2 $2 }
  737.     }
  738.     if (!%f) { %f = -ti2 $+ $iif(($_isactive) && ($status != connecting) && (@* !iswm $active), a, s) }
  739.     if (!$var(%::text)) {
  740.       if ($var(%::nick)) || ($var(%::chan)) || ($var(%::value)) { set -nu1 %::text $3- }
  741.       else { set -nu1 %::text $2- }
  742.     }
  743.     set -u1 %:echo echo $color(%cl) %f
  744.     kte_set parentext
  745.     $+(kte::Raw., %n)
  746.   }
  747.   haltdef
  748.   :end
  749.   kte_unset std nick address chan modes wserver target parentext fromserver value numeric away isoper cmode realname
  750. }
  751.  
  752. alias -l showwhois {
  753.   var %h = Kte_Whois
  754.   if (!$hget(%h, IsOper)) { hadd %h IsOper is not }
  755.   if (!$hget(%h, IsRegd)) { hadd %h IsRegd is not }
  756.   kte_set std
  757.   set -u1 %::nick $hget(%h, Nick) | set -u1 %::address $hget(%h, Address) | set -nu1 %::realname $hget(%h, RealName)
  758.   set -nu1 %::chan $hget(%h, Chan) | set -u1 %::wserver $hget(%h, WServer) | set -nu1 %::serverinfo $hget(%h, ServerInfo)
  759.   set -nu1 %::text $hget(%h, Text) | set -u1 %::isregd $hget(%h, IsRegd) | set -u1 %::isoper $hget(%h, IsOper)
  760.   set -nu1 %::operline $hget(%h, OperLine) | set -u1 %::idletime $hget(%h, IdleTime)
  761.   set -u1 %::signontime $asctime($hget(%h, SignonTime)) | set -nu1 %::away $hget(%h, Away)
  762.   set -u1 %:echo echo $color(whois) -ti2 $+ $iif(($_isactive) && (@* !iswm $active) && ($hget(Kte_Events, Active.Whois)), a, s)
  763.   if ($1 == Whois) { kte::Whois ! }
  764.   else { kte::Whowas ! }
  765.   hdel -w Kte_Whois *
  766.   kte_unset std nick address realname chan wserver serverinfo text isregd isoper operline idletime signontime away
  767. }
  768.  
  769.  
  770.