home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / L2C / adenozin / SimpleScript.exe / Main / fserv.mrc < prev    next >
Encoding:
Text File  |  2000-05-25  |  25.4 KB  |  554 lines

  1. on 1:load:fserve.init
  2. #Ratio off
  3. #Ratio end
  4. #Custom off
  5. #Custom end
  6. on 1:connect: {
  7.   .disable #offer
  8. }
  9. alias fserve.init {
  10.   if %color1 == $null || %color2 == $null || %color3 == $null || %color4 == $null {
  11.     set %color1 12 | set %color2 2 | set %color3 10 | set %color4 14
  12.   }
  13.   .events on
  14.   .ctcps on
  15.   if $exists($mircdirdata) == $false run command.com /c md $mircdirdata
  16.   if $exists($mircdircredits) == $false run command.com /c md $mircdircredits
  17.   if %ratio == $null set %ratio 2
  18.   if %maxgets == $null set %maxgets 5
  19.   if %maxsends == $null set %maxsends 5
  20.   if %free.credits == $null set %free.credits 300000
  21.   if %validfiles == $null set %validfiles wav, mid, zip, jpg, txt, exe, gif
  22.   if %characters == $null set %characters !@
  23.   if %max.top == $null set %max.top 10
  24.   if %joinad == $null set %joinad off
  25.   if %ad.time == $null set %ad.time 180
  26.   if $findfile($mircdir,fserv2.mrc,1) != $null .timer 1 10 .load -rs $findfile($mircdir,fserv2.mrc,1)
  27.   echo %color2 -s Successfully loaded $+ %color3 File Server By: Aaron18
  28.   echo %color2 -s You may now press $+ %color1 F3 $+ %color2 to set up the script.
  29. }
  30. alias F3 {
  31.   if $chat($me).status == $null {
  32.     if $window(@FserveáSetup).state == normal window -c @FserveáSetup
  33.     else setup
  34.   }
  35.   else closeemail
  36. }
  37. on 1:text:%command:*:{
  38.   if %command == ! $+ $me && $2 != $null {
  39.     if $2 == $nopath(%offer.file) && $remove($1,!) == $me { 
  40.       dcc send $nick %offer.file 
  41.       .notice $nick  $+ %color2 $+ Sending: $+ %color1 $nopath(%offer.file)  $+ %color2 $+ Size: $+ %color3 $lof(%offer.file)  $+ %color2 $+ bytes
  42.     } 
  43.     else notice $nick 4Error: $+ %color2 Invalid filename, current file being offered: $+ %color3 $nopath(%offer.file)
  44.   }
  45.   elseif $group(#fserve).status == on && $fserv($nick) == $null {
  46.     set %host $readini $mircdircredits\ $+ $convert($nick) $+ .ini Host Address
  47.     if %host == $null { writeini $mircdircredits\ $+ $convert($nick) $+ .ini Host Address $mask($fulladdress,4) | set %host $mask($fulladdress,4) }
  48.     if %host != $mask($fulladdress,4) {
  49.       .notice $nick  $+ %color2 Sorry, [ $+ %color1 $+ %host $+  $+ %color2 $+ ] has already taken that nickname
  50.       .notice $nick  $+ %color2 Please choose a new nickname for access.
  51.       halt
  52.     }
  53.     else {
  54.       if $exists(%welcome) == $true fserve $nick 100 %directory %welcome
  55.       else fserve $nick 100 %directory
  56.     }
  57.   }
  58. }
  59. on 1:text:!list:#:.notice $nick You may enter my file server by typing: $+ %color3 %command  $+ %color2 $+ Ratio: $+ %color3 1: $+ %ratio
  60. #fserve off
  61. #fserve end
  62. #offer off
  63. on 1:text:!*:*:{
  64.   if $2 == $nopath(%offer.file) && $remove($1,!) == $me { 
  65.     dcc send $nick %offer.file 
  66.     .notice $nick  $+ %color2 $+ Sending: $+ %color1 $nopath(%offer.file)  $+ %color2 $+ Size: $+ %color3 $lof(%offer.file)  $+ %color2 $+ bytes
  67.   } 
  68.   elseif $remove($1,!) == $me .notice $nick 4Error: $+ %color2 Invalid filename, current file being offered: $+ %color3 $nopath(%offer.file)
  69.   halt
  70. }
  71. alias free {
  72.   set %files $findfile(%offer.directory,*.*,0)
  73.   if %files != $null {
  74.     set %offer.file $findfile(%offer.directory,*.*,$r(1,%files))
  75.     msg %offer.chan  $+ %color2 $+ To get a free random file, you may type $+ %color3 ! $+ $me $nopath(%offer.file)  $+ %color2 $+ to receive a copy.  File size $+ %color1 $lof(%offer.file)  $+ %color2 $+ bytes 
  76.   }
  77.   else { 
  78.     echo 4 -a Error $+ %color2 No files found in directory
  79.     .disable #offer
  80.   }
  81. }
  82. #offer end
  83. on 1:text:%command:?:.notice $nick Sorry %command is shut down at the moment.
  84. on 1:sendfail:*.*: {
  85.   if $group(#ratio).status == on {
  86.     if $readini $mircdircredits\ $+ $nick $+ .ini Files $filename == bought {
  87.       remini $mircdircredits\ $+ $nick $+ .ini Files $filename
  88.       if $fserv($nick).status == active {
  89.         msg = $+ $nick  $+ %color2 $+ File: $+ %color1 $nopath($filename)  $+ %color2 $+ did not complete. 
  90.         msg = $+ $nick  $+ %color1 $+ [ $+ $lof($filename) $+ ] $+ %color2 credits have been reimbursed to your account. 
  91.       }
  92.       else {
  93.         .notice $nick  $+ %color2 $+ File: $+ %color1 $nopath($filename)  $+ %color2 $+ did not complete. 
  94.         .notice $nick  $+ %color1 $+ [ $+ $lof($filename) $+ ] $+ %color2 credits have been reimbursed to your account. 
  95.       }
  96.       add $nick $lof($filename)
  97.     }
  98.   }
  99. }
  100. alias mget {
  101.   set %file $findfile($2,$3-,%loop)
  102.   if $2 $+ \ $+ $nopath(%file) == %file || $2 $+ $nopath(%file) == %file {
  103.     if $group(#ratio).status == off || $byte.credits($1) == Unlimited && $gets($1) < %maxgets {
  104.       dcc send $1 %file
  105.       msg = $+ $1  $+ %color2 $+ Sending [ $+ %color1 $+ $nopath(%file) $+  $+ %color2 $+ ]
  106.     }
  107.     elseif $byte.credits($1) >= $lof(%file) && $gets($1) < %maxgets && %file != $null { 
  108.       dcc send $1 %file 
  109.       del $1 $lof(%file)
  110.       writeini $mircdircredits\ $+ $convert($1) $+ .ini Files %file bought
  111.       msg = $+ $1  $+ %color2 $+ Sending [ $+ %color1 $+ $nopath(%file) $+  $+ %color2 $+ ] Credits remaining: $+ %color1 $byte.credits($1)
  112.     }
  113.     else {
  114.       if $gets($1) >= %maxgets msg = $+ $1  $+ %color2 $+ File transfer limit of $+ %color1 %maxgets  $+ %color2 $+ files has been reached.
  115.       elseif $byte.credits($1) <= $lof(%file) msg = $+ $1  $+ %color2 $+ Sorry, credit limit has been reached.  You have $+ %color1 $byte.credits($1)  $+ %color2 $+ credit(s) remaining
  116.       halt
  117.     }
  118.   }
  119.   if ( %loop == %files && %files >= 2 ) || ( $2 $+ \ $+ $nopath(%file) != %file && $2 $+ $nopath(%file) != %file ) || %file == $null { msg = $+ $1  $+ %color2 $+ End of listing for [ $+ %color1 $+ $3- $+  $+ %color2 $+ ] | halt } 
  120. }
  121. on 1:serv:*: {
  122.   if $byte.credits($nick) == banned {
  123.     msg = $+ $nick  $+ %color2 $+ Sorry, you have been banned from this fserve
  124.     close -f $nick
  125.     halt
  126.   }
  127.   if $1 == get {
  128.     unset %file
  129.     set %files $findfile($fserv($nick).cd,$2-,0)
  130.     if %files == 0 || $2- == $null { .msg = $+ $nick  $+ %color2 $+ No file(s) found.  Use form < $+ %color1 $+ get filename.ext $+ %color2 $+ > or < $+ %color1 $+ get file*.ex* $+ %color2 $+ > | halt }
  131.     else for 1 %files mget $nick $cd $2-
  132.     halt
  133.   }
  134.   elseif $1 == dir || $1 == ls {
  135.     if $group(#ratio).status == on msg = $+ $nick  $+ %color2 $+ Credit status: $+ %color3 $byte.credits($nick)
  136.     msg = $+ $nick  $+ %color2 $+ Type $+ %color1 Help $+ %color2 for Commands
  137.     if $group(#custom).status == on {
  138.       msg = $+ $nick  $+ %color2 $+ Directory listing for: $+ %color1 $remove($cd,$left(%directory,3))
  139.       set %loop 1
  140.       :loop
  141.       if %loop > $readini $mircdirdata\cat.ini directories total goto done
  142.       set %directory.check $readini $mircdirdata\cat.ini directories %loop
  143.       if %directory.check == $remove($cd,$left(%directory,3)) directory $nick
  144.       elseif $remove($cd,$left(%directory,3)) isin %directory.check {
  145.         set %directory.check %directory.check $+ \
  146.         set %slashes $count(%directory.check,$chr(92))
  147.         set %directory.check $gettok(%directory.check,%slashes,92)
  148.         set %length $len(%directory.check)
  149.         set %distance 20 - %length
  150.         set %check $cd $+ \ $+ %directory.check
  151.         if ($exists(%check)) msg = $+ $nick  $+ %color2 %directory.check $str(%distance,$chr(160))  $+ %color1 <DIR>
  152.       }
  153.       inc %loop
  154.       goto loop
  155.       :done
  156.       set %total $readini $mircdirdata\cat.ini $remove($cd,$left(%directory,3)) files
  157.       if %total == $null set %total 0
  158.       msg = $+ $nick  $+ %color2 $+ End of list for: $+ %color1 $remove($cd,$left(%directory,3))  $+ %color2 $+ with $+ %color1 %total  $+ %color2 $+ file(s)
  159.       unset % $+ $nick $+ ~ $+ *
  160.       halt
  161.     }
  162.   }
  163.   elseif $1 == help {
  164.     msg = $+ $nick  $+ %color2 $+ File serving commands:
  165.     msg = $+ $nick  $+ %color1 $+ Dir, ls: $+ %color2 Displays the directory listing
  166.     msg = $+ $nick  $+ %color1 $+ Get: $+ %color2 Gets a file or mutiple files
  167.     msg = $+ $nick  $+ %color2 $+ Syntax: < $+ %color1 $+ get *.mid $+ %color2 $+ > < $+ %color1 $+ get song.mid $+ %color2 $+ > < $+ %color1 $+ get s*.* $+ %color2 $+ > etc.
  168.     msg = $+ $nick  $+ %color1 $+ Read: $+ %color2 Reads the contents of a file
  169.     msg = $+ $nick  $+ %color1 $+ Cd: $+ %color2 Change directory, similar syntax to Dos
  170.     msg = $+ $nick  $+ %color1 $+ Stats: $+ %color2 Use Stats < $+ %color1 $+ Filename.ext $+  $+ %color2 $+ > for number of downloads
  171.     msg = $+ $nick  $+ %color1 $+ Stats: $+ %color2 Displays your credit and ratio status
  172.     msg = $+ $nick  $+ %color1 $+ Top: $+ %color2 Top %max.top downloaded files
  173.     halt
  174.   }
  175.   elseif $1- == cd {
  176.     msg = $+ $nick  $+ %color2 $+ Current Directory $+ %color1 $cd
  177.   }
  178.   elseif $1 == top { 
  179.     if $2 == $0 {
  180.       msg = $+ $nick  $+ %color2 $+ Top $+ %color1 %max.top  $+ %color2 $+ downloaded files
  181.       for 1 %max.top top.downloads $nick
  182.       msg = $+ $nick  $+ %color2 $+ Type $+ %color1 Top $+ %color2 < $+ %color1 $+ Number $+ %color2 $+ > to download file
  183.       halt
  184.     }
  185.     set %stat $read -l $+ $2 $mircdirdata\top.ini
  186.     set %file $gettok(%stat,1,32)
  187.     if $2 !isnum || $2 > %max.top || $2 < 1 {
  188.       msg = $+ $nick 4Error: $+ %color2 Invalid input, please select a number $+ %color1 1- $+ %max.top
  189.       halt
  190.     }
  191.     if $exists(%file) {
  192.       set %dir $nofile(%file)
  193.       set %file $nopath(%file)
  194.       set %files 1 | set %loop 1
  195.       mget $nick %dir %file  
  196.     }
  197.     else { 
  198.       msg = $+ $nick  $+ %color2 $+ [ $+ %color1 $+ %file $+  $+ %color2 $+ ] could not be found in that location
  199.     }
  200.     halt
  201.   }
  202.   elseif $1 == stats {
  203.     if $2 == $0 { 
  204.       msg = $+ $nick  $+ %color2 $+ Current ratio: $+ %color1 1: $+ %ratio
  205.       msg = $+ $nick  $+ %color2 $+ You have $+ %color1 $byte.credits($nick)  $+ %color2 $+ credit(s).
  206.       msg = $+ $nick  $+ %color2 $+ Files sent to you: $+ %color1 $downloads($nick)
  207.       msg = $+ $nick  $+ %color2 $+ Files received from you: $+ %color1 $uploads($nick)  
  208.       set %nick $readini $mircdirdata\address.ini Users $fserv($nick).ip
  209.       if  %nick != $nick && $byte.credits($nick) == 0 msg = $+ $nick  $+ %color2 $+ You have $+ %color1 $byte.credits(%nick)  $+ %Color2 $+ credits under this nick: $+ %color1 %nick
  210.       halt
  211.     }
  212.     set %file $cd $+ \ $+ $2  
  213.     set %downloads $readini $mircdirdata\download.ini Files %file
  214.     if %downloads == $0 msg = $+ $nick  $+ %color2 $+ No record found for: $+ %color1 $2
  215.     else msg = $+ $nick  $+ %color2 $+ [ $+ %color1 $+ $2 $+  $+ %color2 $+ ] has been downloaded $+ %color1 %downloads  $+ %color2 $+ Time(s).
  216.     halt
  217.   }
  218.   elseif $1 != cd && $1 != cd.. && $1 != exit && $1 != bye && $1 != quit && $1 != read && $1 != s && $1 != c halt
  219. }
  220. on 1:filesent:*.*: {
  221.   newfile $nick download
  222.   if $readini $mircdircredits\ $+ $convert($nick) $+ .ini Files $filename == bought remini $mircdircredits\ $+ $convert($nick) $+ .ini Files $filename
  223.   flushini $mircdircredits\ $+ $convert($nick) $+ .ini
  224.   increment $filename
  225. }
  226. on 1:filercvd:*.*: {
  227.   if $group(#ratio).status == on {
  228.     %temp = %ratio * $lof($filename) 
  229.     add $nick %temp
  230.     if $fserv($nick).status == active {
  231.       msg = $+ $nick  $+ %color2 $+ Upload of $+ %color1 $nopath($filename)  $+ %color2 $+ complete: Credit(s) earned: $+ %color1 %temp  $+ %color2 $+ Total Credits: $+ %color1 $byte.credits($nick)  $+ %color2 $+ credit(s)
  232.     }
  233.     else .notice $nick  $+ %color2 $+ Upload of $+ %color1 $nopath($filename)  $+ %color2 $+ complete: Credit(s) earned: $+ %color1 %temp  $+ %color2 $+ Total Credits: $+ %color1 $byte.credits($nick)  $+ %color2 $+ credit(s)
  234.   }
  235.   newfile $convert($nick) uploads
  236.   write $mircdirupload.log Received $filename from $nick 
  237. }
  238. on 1:close:!:unset % $+ $nick $+ cd
  239. alias h2 return ºεM▐L╔ º╟«═▐T
  240. alias v return 
  241. alias check.custom {
  242.   if $group(#custom) == on {
  243.     set %check %number.of.files + 1
  244.     if $findfile(%directory,*.*,%check) != $null || $findfile(%directory,*.*,%number.of.files) == $null {
  245.       echo %color2 -a Directory structure of $+ %color1 Custom Fserve $+ %color2 has changed
  246.       echo %color2 -a Please type $+ %color1 /compile $+ %color2 to re-compile
  247.       echo %color2 -a Press $+ %color1 F3 $+ %color2 and switch to $+ %color1 Normal $+ %color2 mode to avoid this message.
  248.     }
  249.     unset %check
  250.   }
  251. }
  252. on 1:open:!: {
  253.   check.custom
  254.   if $group(#custom).status != on  msg = $+ $nick $h2(%color2) $v(4,%color1)
  255.   else msg = $+ $nick $h2(%color2) $v(4,%color1) Custom File-Serve Mode
  256.   msg = $+ $nick  $+ %color2 $+ Available at: $+ %color1 http://warezhell.cjb.net
  257.   msg = $+ $nick  $+ %color2 $+ Type $+ %color1 Help $+ %color2 for Commands
  258.   if $group(#custom).status == on {
  259.     set %directory.letters $len(%directory)
  260.     dec %directory.letters 3
  261.     set %current.directory $right(%directory,%directory.letters)
  262.     dec %directory.letters
  263.     set %current.directory $left(%current.directory,%directory.letters)
  264.     set % $+ $nick $+ cd %current.directory 
  265.   }
  266.   if $group(#ratio).status == on {
  267.     set %check $readini $mircdirdata\address.ini Users $fserv($nick).ip
  268.     if %check == $0 && $byte.credits($nick) == 0 {    
  269.       writeini $mircdirdata\address.ini Users $fserv($nick).ip $convert($nick)
  270.       writeini $mircdircredits\ $+ $convert($nick) $+ .ini Credits Credits %free.credits
  271.     }
  272.     elseif %check != $convert($nick) && %check != $null {
  273.       msg = $+ $nick  $+ %color2 $+ Free credits denied, your record lies under this nick: $+ %color1 %check
  274.       .remove $mircdircredits\ $+ $convert($nick) $+ .ini
  275.       halt
  276.     }
  277.   }
  278. }
  279. alias newfile incini credits $1 Transfer $2 1
  280. alias uploads return $check($1,Transfer,uploads)
  281. alias downloads return $check($1,Transfer,download)
  282. alias check {
  283.   set %number $readini $mircdircredits\ $+ $convert($1) $+ .ini $2 $3
  284.   if %number == $null {
  285.     return 0
  286.     goto end
  287.   }
  288.   return %number
  289.   :end
  290. }
  291. alias incini {
  292.   set %credits $readini $mircdir $+ $1 $+ \ $+ $convert($2) $+ .ini $3 $4
  293.   if %credits == $null || $5 == Unlimited || $5 == Banned {
  294.     writeini $mircdir $+ $1 $+ \ $+ $convert($2) $+ .ini $3 $4 $5
  295.     goto end
  296.   }
  297.   inc %credits $5
  298.   writeini $mircdir $+ $1 $+ \ $+ $convert($2) $+ .ini $3 $4 %credits
  299.   :end
  300. }
  301. alias add incini Credits $1 Credits Credits $2
  302. alias byte.credits return $check($1,Credits,Credits)
  303. alias del {
  304.   set %credits $readini $mircdircredits\ $+ $convert($1) $+ .ini Credits Credits
  305.   if %credits == $null {
  306.     writeini $mircdircredits\ $+ $convert($1) $+ .ini Credits Credits 0
  307.     goto end
  308.   }
  309.   dec %credits $2
  310.   if %credits < 0 set %credits 0
  311.   writeini $mircdircredits\ $+ $convert($1) $+ .ini Credits Credits %credits
  312.   :end
  313. }
  314. alias delete {
  315.   remini $mircdircredits\ $+ $convert($1) $+ .ini Credits
  316. }
  317. alias convert {
  318.   set %nickname $left($1,8)
  319.   set %nickname $replace(%nickname,[,_)
  320.   set %nickname $replace(%nickname,],_)
  321.   set %nickname $replace(%nickname,|,_)
  322.   set %nickname $replace(%nickname,^,_)
  323.   set %nickname $replace(%nickname,\,_)
  324.   set %nickname $replace(%nickname,-,_)
  325.   return %nickname
  326. }
  327. alias increment {
  328.   incini data download Files $1 1
  329.   set %downloads $readini $mircdirdata\download.ini Files $1
  330.   add.file $1 %downloads
  331. }
  332. alias add.file for 1 %max.top insert $1 $2
  333. alias insert {
  334.   if ($exists($mircdirdata\top.ini)) set %file.check $read -l $+ %loop $mircdirdata\top.ini
  335.   if %file.check == $null set %file.check None 0
  336.   if $gettok(%file.check,1,32) == $1 { write -l $+ %loop $mircdirdata\top.ini $1 $2 | set %loop %max.top | if $window(@TopáDownloads).state == normal display.top | goto done }
  337.   elseif $gettok(%file.check,2,32) < $2 {
  338.     write -ds $+ $1 $mircdirdata\top.ini
  339.     write -il $+ %loop $mircdirdata\top.ini $1 $2
  340.     set %limit %max.top + 1
  341.     write -dl $+ %limit $mircdirdata\top.ini
  342.     set %loop %max.top
  343.     if $window(@TopáDownloads).state == normal display.top
  344.     goto done
  345.   }
  346.   :done
  347.   unset %file.check
  348. }
  349. alias top.downloads {
  350.   unset %stat
  351.   if ($exists($mircdirdata\top.ini)) set %stat $read -l $+ %loop $mircdirdata\top.ini
  352.   if %stat ==  $null msg = $+ $1  $+ %color1 $+ [ $+ %loop $+ ] $+ %color2 None
  353.   else {
  354.     set %filename $gettok(%stat,1,32)
  355.     set %downloads $gettok(%stat,2,32)
  356.     if %downloads > 1 msg = $+ $1  $+ %color1 $+ [ $+ %loop $+ ] $+ %color3 $nopath(%filename)  $+ %color2 $+ with $+ %color1 %downloads  $+ %color2 $+ downloads
  357.     else msg = $+ $1  $+ %color1 $+ [ $+ %loop $+ ] $+ %color3 $nopath(%filename)  $+ %color2 $+ with $+ %color1 %downloads  $+ %color2 $+ download
  358.   }
  359. }
  360. alias des {
  361.   set %file.for.description $$dir="Please Select a file for new description" %directory
  362.   set %des $$?="Enter description for selected file"
  363.   writeini $mircdirdata\describe.ini Files %file.for.description %des
  364.   echo %color2 -s Added [ $+ %color1 $+ %des $+  $+ %color2 $+ ] as description for $+ %color1 $nopath(%file.for.description)
  365.   unset %file.for.description
  366.   unset %des
  367. }
  368. alias directory {
  369.   set %directory.loop 1
  370.   :start
  371.   if %directory.loop > $readini $mircdirdata\cat.ini $remove($fserv($1).cd,$left(%directory,3)) files goto end
  372.   set %file $readini $mircdirdata\cat.ini $remove($fserv($1).cd,$left(%directory,3)) %directory.loop 
  373.   set %length $gettok(%file,2,32)
  374.   set %file $gettok(%file,1,32)
  375.   set %size $len(%file)
  376.   set %distance 15 - %size
  377.   set %fullpath $fserv($1).cd $+ \ $+ %file
  378.   set %path $fserv($1).cd $+ $chr(92) $+ %file
  379.   set %description $readini $mircdirdata\describe.ini Files %fullpath
  380.   if $exists(%path) {
  381.     if %description != $null .msg = $+ $1  $+ %color2 %file $str(%distance,$chr(160))  $+ %color3 %length bytes  $+ %color4 %description
  382.     else .msg = $+ $1  $+ %color2 %file $str(%distance,$chr(160))  $+ %color3 %length bytes
  383.   }
  384.   inc %directory.loop
  385.   goto start
  386.   :end
  387. }
  388. ;################## Required for the Compilation of the File Serving Directory Structure ##################
  389. alias compile {
  390.   echo %color2 -a Compiling directory structure of: $+ %color1 %directory
  391.   flushini $mircdirdata\cat.ini
  392.   .remove $mircdirdata\cat.ini
  393.   set %number.of.files $findfile(%directory,*.*,0)
  394.   unset %current.directory
  395.   if %number.of.files < 200 {
  396.     set %incrementation $round($calc(200 / %number.of.files),0)
  397.     if %incrementation > 1 dec %incrementation
  398.     set %newloop %incrementation
  399.   }
  400.   else {
  401.     set %incrementation $round($calc(%number.of.files / 200),0)
  402.     set %newloop 0
  403.     set %spot 0
  404.   }
  405.   for 1 %number.of.files writefile
  406.   rline %window 2  $+ %color1 $+ [ $+ %directory $+ ] $+ %color2 has been successfully compiled 
  407. }
  408. menu @ProgressáMeter {
  409.   dclick window -c @ProgressáMeter
  410. }
  411. alias progress {
  412.   set %window @ProgressáMeter
  413.   if $window(%window).state != normal {
  414.     window %window 95 120 430 70 %window Arial bold 12
  415.     for 1 4 aline %window 0-
  416.     set %loop 1
  417.   }
  418.   rline %window 1  $+ %color2 $+ Creating directory structure for [ $+ %color1 $+ %directory $+  $+ %color2 $+ ]
  419.   rline %window 2  $+ %color2 $+ Files complete: $+ %color1 %loop  $+ %color2 $+ of $+ %color1 %number.of.files
  420.   if %number.of.files < 200 {  
  421.     inc %newloop %incrementation
  422.     set %string 1,1|
  423.     set %position $line(%window,0)
  424.     rline %window %position $str(%newloop,%string)
  425.     dec %position
  426.     rline %window %position $str(%newloop,%string)
  427.   }
  428.   else {
  429.     if %newloop > %incrementation {
  430.       set %string 1,1|
  431.       set %position $line(%window,0)
  432.       inc %spot
  433.       rline %window %position $str(%spot,%string)
  434.       dec %position
  435.       rline %window %position $str(%spot,%string)
  436.       set %newloop 0
  437.     }
  438.     inc %newloop
  439.   }
  440. }
  441. alias writefile {
  442.   set %current.file $findfile(%directory,*.*,%loop)
  443.   set %slash.count $count(%current.file,$chr(92))
  444.   if %slash.count > 2 set %slash.count 2- [ $+ [ %slash.count ] ]
  445.   if %current.directory != $gettok(%current.file,%slash.count,92) newdirectory $gettok(%current.file,%slash.count,92)
  446.   set %current.directory $gettok(%current.file,%slash.count,92)
  447.   addfile $gettok(%current.file,%slash.count,92)
  448.   set %file.number $readini $mircdirdata\cat.ini %current.directory files
  449.   writeini $mircdirdata\cat.ini %current.directory %file.number $nopath(%current.file) $lof(%current.file)
  450.   progress
  451. }
  452. alias addfile incini data cat $1 files 1
  453. alias newdirectory {
  454.   set %directories $readini $mircdirdata\cat.ini directories total
  455.   if %directories == $null {
  456.     writeini $mircdirdata\cat.ini directories total 1
  457.     writeini $mircdirdata\cat.ini directories 1 $1
  458.     goto end
  459.   }
  460.   inc %directories
  461.   writeini $mircdirdata\cat.ini directories total %directories
  462.   writeini $mircdirdata\cat.ini directories %directories $1
  463.   :end
  464. }
  465. ;############################## Initialize Custom F-Serve Mode ##############################
  466. alias custom {
  467.   set %window @Important
  468.   window -c %window
  469.   window %window 120 30 400 305 @Important Arial bold 12
  470.   if $line(%window,0) == 0  for 1 7 aline -c0 %window -
  471.   echo %window  $+ %color2 $+ The Custom Fserve will allow you to utilize a more professional looking Fserve while at the same time giving descriptions to any of the files within your Fserve.  This is not recommended for newer users who may not know how an Fserve works.  This will first need to compile the directory structure of your Fserve directory to text so that it can be displayed to users.  This process could take several minutes on slower computers.  If you tend to change around the files within your fserve, this may not be a good idea to 
  472.   echo %window  $+ %color2 $+ use, for it will require you to re-compile the directory structure every time you add or delete files to your File Serving directory.  If you wish to activate this feature, you will need to double click on this window.  If not, you may simply close this window.  Upon confirmation, your fserve directory will be compiled, so please be aware that a long pause may take place.
  473.   rline %window 6  $+ %color2 $+ Custom File Server 4(Please Read)
  474.   rline %window 7  $+ %color3 $+ ===========================================================
  475.   aline %window  $+ %color3 $+ ================== $+ %color4 $+ Double click to Proceed  $+ %color3 $+ ===================
  476. }
  477. alias activatecustom {
  478.   window -c @Important
  479.   if $right(%directory,1) != $chr(92) set %directory %directory $+ $chr(92)
  480.   .disable #custom
  481.   compile
  482.   .enable #custom
  483.   set %description.popup File descriptions
  484. }
  485. menu @Important {
  486.   dclick activatecustom
  487.   Activate:activatecustom
  488.   Cancel:window -c @Important
  489. }
  490. ;############################### Menus and Settings ###################################
  491. menu query {
  492.   -
  493.   Info Center:info $1
  494. }
  495. on 1:part:#: {
  496.   if $nick == $me {
  497.     close.timer ad $chan
  498.     if %offer.chan == $chan {
  499.       .disable #offer
  500.       .timer50 off
  501.       unset %offer.chan
  502.     }
  503.   }
  504. }
  505. alias close.timer {
  506.   unset %timer
  507.   for 1 $timer(0) find.timer $1-
  508.   if %timer != $null  .timer $+ %timer off
  509. }
  510. alias find.timer {
  511.   unset %timer
  512.   if $timer(%loop).com == $1- { set %timer $timer(%loop) | set %loop $timer(0) }
  513. }
  514. alias setup {
  515.   if $findfile($mircdir,fserv2.mrc,1) != $null .load -rs $findfile($mircdir,fserv2.mrc,1)
  516.   else {
  517.     echo 4 -s Error: $+ %color2 fserv2.mrc was not found in $mircdir
  518.     echo %color2 -s Please make sure you copy that file into the appropriate directory and re-install.
  519.   }
  520.   set %window @FserveáSetup
  521.   if $window(%window).state == $null window %window 160 55 310 253 %window Arial bold 12
  522.   else window %window $window(%window).x $window(%window).y 310 253 %window Arial bold 12
  523.   if $line(%window,0) == 0  for 1 14 aline -c0 %window -
  524.   rline %window 1  $+ %color3 ============== $+ %color4 Fserve Setup $+ %color3 ==============
  525.   if %command != $null  rline %window 2  $+ %color2 Fserve Trigger command: $+ %color1 %command   $+ %color2 Active: $+ %color1 $group(#fserve)
  526.   else   rline %window 2  $+ %color2 Fserve Trigger command: $+ %color1 None   $+ %color2 Active: $+ %color1 $group(#fserve)
  527.   if $group(#custom).status == on  rline %window 3  $+ %color2 Fserve Mode: $+ %color1 Custom 
  528.   else rline %window 3  $+ %color2 Fserve Mode: $+ %color1 Normal
  529.   if %directory != $null rline %window 4  $+ %color2 Serving directory: $+ %color1 %directory 
  530.   else rline %window 4  $+ %color2 Serving directory: $+ %color1 None
  531.   if %welcome == $null  rline %window 5  $+ %color2 Fserve welcome file: $+ %color1 None
  532.   else  rline %window 5  $+ %color2 Fserve welcome file: $+ %color1 %welcome
  533.   rline %window 6  $+ %color2 Ratio: $+ %color1 1: $+ %ratio $chr(160)  $+ %color2 $+ Ratio status: $+ %color1 $group(#ratio).status
  534.   rline %window 7  $+ %color2 Join Notice: $+ %color1 %joinad
  535.   rline %window 8  $+ %color2 Max outgoing transferrs to each user: $+ %color1 %maxgets
  536.   rline %window 9  $+ %color2 Max incoming transferrs per user: $+ %color1 %maxsends
  537.   rline %window 10  $+ %color2 Starting credits for new users: $+ %color1 %free.credits
  538.   rline %window 11  $+ %color2 Acceptable file types: $+ %color1 %validfiles
  539.   rline %window 12  $+ %color2 Deny files starting with: $+ %color1 %characters
  540.   rline %window 13  $+ %color2 Record top $+ %color1 %max.top  $+ %color2 $+ downloaded file(s) for fserve
  541.   rline %window 14  $+ %color3 ======== $+ %color4 $+ Right click to change settings $+ %color3 $+ ========
  542. }
  543. alias for {
  544.   set %loop $1
  545.   :loop
  546.   if %loop > $2 goto end
  547.   $3-
  548.   inc %loop
  549.   goto loop
  550.   :end
  551. }
  552. alias ad {
  553.   msg #  $+ %color2 $+ To get into my file server, you may type: $+ %color1 %command  $+ %color2 $+ Rat
  554.