mIRC Project Packer — File Browser

mIRCProjectPackerv1.2.1 / mIRCProjectPackerv1.2.1 / packer.mrc

packer.mrc — 20.4 KB — Download this file

;#######################;
;# mIRC Project Packer #;
;# Version 1.2.1       #;
;# By IceShaman        #;
;#######################;

alias packer { 
  if ($dialog(MP-Packer)) { dialog -v MP-Packer | return }
  dialog -dm MP-Packer MP-Packer 
}

dialog MP-Packer {
  title "mIRC Project Packer v1.2"
  size -1 -1 192 118
  option dbu
  tab "Files", 6, 1 0 188 115
  list 8, 4 19 143 72, tab 6 size
  button "Add", 9, 149 19 37 12, tab 6
  button "Del", 10, 149 33 37 12, disable tab 6
  button "Directory", 11, 149 48 37 12, tab 6
  check "Load On Unpack (Script)", 12, 5 94 69 7, disable tab 6
  check "Run On Unpack (EXE)", 13, 5 101 62 9, disable tab 6
  button "Clear", 31, 149 63 37 12, disable tab 6
  button "Pack", 18, 149 78 37 12, disable tab 6
  list 38, 135 99 51 10, hide tab 6 size
  list 32, 84 99 51 10, hide tab 6 size
  tab "Options", 7
  box "File Validation (CRC)", 20, 4 17 182 22, tab 7
  check "Enabled", 15, 8 26 28 9, tab 7
  check "Enabled", 17, 8 50 28 9, tab 7
  text "Level:", 19, 48 50 15 8, disable tab 7
  radio "1", 21, 68 49 14 10, disable group tab 7
  radio "2", 22, 85 49 14 10, disable tab 7
  radio "3", 23, 102 49 14 10, disable tab 7
  radio "4", 24, 120 49 14 10, disable tab 7
  radio "5", 25, 138 49 14 10, disable tab 7
  radio "6", 26, 157 49 14 10, disable tab 7
  check "Enabled", 28, 8 74 28 9, tab 7
  edit "", 29, 92 73 17 10, disable tab 7 limit 4
  text "Minimum Version:", 30, 48 74 42 8, disable tab 7
  box "Subdirectory Unpack (unpacks all files to $mircdir\subdir)", 34, 4 90 182 22, tab 7
  text "(Files CRC will be checked against originals on unpack)", 36, 47 26 135 8, disable tab 7
  box "Compression (6 is highest compression)", 14, 4 41 182 22, tab 7
  box "mIRC Version Check", 27, 4 65 182 22, tab 7
  check "Enabled", 35, 8 98 28 9, tab 7
  edit "", 37, 39 98 113 9, disable tab 7
  menu "File", 1
  item "Load", 2, 1
  item "Unload", 3, 1
  item "Save", 4, 1
  item "Exit", 5, 1
  menu "Help", 33
  item "About", 16, 33
  item "Readme", 39, 33
}

on *:dialog:MP-Packer:init:0: {     
  ;mIRC too old - disable compression
  if ($version < 6.1) { did -ra $dname 20 Compression (Requires mIRC v6.1 or higher) | did -b $dname 17 }
}

on *:dialog:MP-Packer:close: {     
  if ($hget(packer_files)) { hfree packer_files } 
}

on *:dialog:MP-Packer:menu:*: {
  if ($did == 2) {
    var %file = " $+ $$sfile(*.*,Open,Open) $+ ", %fdone = 0
    if ($ini(%file,0)) { did -r $dname 8 }
    while (%fdone < $ini(%file,0)) {
      inc %fdone
      if ($left($ini(%file,%fdone),5) == file_) { 
        var %listbox_path = $replace($right($ini(%file,%fdone),-5),$chr(63),$chr(32)), %listbox_file = $right(%listbox_path,$calc($len(%listbox_path) - $pos(%listbox_path,$chr(92),$pos(%listbox_path,$chr(92),0))))  
        did -a $dname 8 $iif($readini(%file,$ini(%file,%fdone),subdir),$ifmatch $+ %listbox_file,%listbox_file))   
        did -a $dname 32 $iif($readini(%file,$ini(%file,%fdone),type),$replace($ifmatch,load,1,run,2,none,0),0)
        did -a $dname 38 %listbox_path        
      }
    }
    if ($did($dname,8).lines) { did -e $dname 18,31 }
    if ($readini(%file,validation,status) == on) { did -ce $dname 15,36 }
    if ($readini(%file,versioncheck,version)) { did -ra $dname 29 $ifmatch }
    if (($readini(%file,compression,status) == on) && ($version >= 6.1)) { did -ce $dname 17 | did -e $dname 19,21,22,23,24,25,26,28,29,30 | did -c $dname 28 | did -ra $dname 29 $iif($readini(%file,versioncheck,version) > 6.1,$ifmatch,6.1) }
    if ($readini(%file,compression,level) isnum) { did -ce $dname $+(2,$ifmatch) }
    if ($readini(%file,versioncheck,status) == on) { did -ce $dname 28 | did -e $dname 29,30 }
    if ($readini(%file,subdir,status) == on) { did -e $dname 37 | did -c $dname 35 }
    if ($readini(%file,subdir,dir)) { did -ra $dname 37 $ifmatch }
    var %x = $input(Successfully loaded settings!,ou,Settings)
  }
  elseif ($did == 3) { did -b $dname 10,12,13,18,19,21,22,23,24,25,26,29,30,31,36,37 | did -r $dname 8,29,37,38 | did -u $dname 12,13,15,17,21,22,23,24,25,26,28,35,36 | did -e $dname 9,11 | did -c $dname 37 }
  elseif ($did == 4) {
    var %file = " $+ $$sfile(packer.ini,Save As,Save) $+ "
    write -c %file
    if ($did($dname,15).state == 1) { writeini -n %file validation status on }
    if ($did($dname,17).state == 1) { writeini -n %file compression status on }
    if ($did($dname,21).state == 1) || ($did($dname,22).state == 1) || ($did($dname,23).state == 1) || ($did($dname,24).state == 1) || ($did($dname,25).state == 1) || ($did($dname,26).state == 1) {
      if ($did($dname,21).state == 1) { var %compression_level = 1 }
      elseif ($did($dname,22).state == 1) { var %compression_level = 2 }
      elseif ($did($dname,23).state == 1) { var %compression_level = 3 }
      elseif ($did($dname,24).state == 1) { var %compression_level = 4 }
      elseif ($did($dname,25).state == 1) { var %compression_level = 5 }
      elseif ($did($dname,26).state == 1) { var %compression_level = 6 }
      writeini -n %file compression level %compression_level
    }
    if ($did($dname,28).state == 1) { writeini -n %file versioncheck status on }
    if ($did($dname,29).text isnum) { writeini -n %file versioncheck version $ifmatch }
    if ($did($dname,35).state == 1) { writeini -n %file subdir status on }
    if ($did($dname,37).text) { 
      var %subdirectory = $did($dname,37).text
      var %subdirectory = $iif($left(%subdirectory,1) == $chr(92),$right(%subdirectory,-1),%subdirectory)
      writeini -n %file subdir dir $iif($right(%subdirectory,1) != $chr(92),%subdirectory $+ $chr(92),%subdirectory)
    }
    var %pack_files = $did($dname,8).lines, %done = 0
    while (%done < %pack_files) {
      inc %done
      var %pack_file = $+($replace($did($dname,38,%done).text,$chr(32),$chr(63)),$iif($right($did($dname,8,%done).text,1) == $chr(92),$chr(92)))
      writeini -n %file $+(file_,%pack_file) type $iif($left($did($dname,32,%done).text,1) isin 1 2,$replace($ifmatch,1,load,2,run),none)
      if ($chr(92) isin $did($dname,8,%done).text) { writeini -n %file $+(file_,%pack_file) subdir $gettok($did($dname,8,%done).text,1- $+ $calc($numtok($did($dname,8,%done).text,92) - 1),92) $+ \ } 
    }
    var %x = $input(Successfully saved settings!,ou,Settings)
  }
  elseif ($did == 5) {     
    if ($hget(packer_files)) { hfree packer_files } 
    dialog -x $dname
  }
  ;about box
  elseif ($did == 16) { var %x = $input(mIRC Project Packer v1.2 By IceShaman,ou,About) }
  ;try to load readme file
  elseif ($did == 39) { 
    if ($exists(" $+ $scriptdir\readme.txt $+ ")) { .run " $+ $scriptdir\readme.txt $+ " }
    else { var %x = $input(Cannot locate readme file,ou,Error) }
  }
}

on *:dialog:MP-Packer:sclick:*: {
  if ($did == 9) {
    var %x = $$msfile(*,Files To Add,Select)
    if ($msfile(0) == -1) { var %x = $input(Too many files selected (try selecting the directory instead),ou,Error) | return }
    elseif ($msfile(0) == 0) { return }
    did -b $dname 12,13
    var %files = $msfile(0), %done = 0
    while (%done < %files) {
      inc %done
      did -a $dname 8 $right($msfile(%done),$calc($len($msfile(%done)) - $pos($msfile(%done),$chr(92),$pos($msfile(%done),$chr(92),0))))
      did -a $dname 38 $msfile(%done)
      did -a $dname 32 0
    }
    if ($did($dname,8).lines) { did -e $dname 18,31 }
    did -e $dname 31
  }
  elseif ($did == 10) {
    did -d $dname 8,32,38 $did($dname,8).sel
    if ($did($dname,8).lines == 0) {
      did -b $dname 10,31,12,13,18 | did -e $dname 9,11 
    }
    else { 
      did -c $dname 8 1 | did -b $dname 12,13 | did -e $dname $iif($findtok(.exe .com,$right($did($dname,8).seltext,4),32),13,12)
      if ($hget(packer_files,$did($dname,8).seltext)) { hdel packer_files $did($dname,8).seltext }
    }
  }  
  elseif ($did == 11) {
    var %dir = $$sdir(dir,Select A Folder), %files = $findfile(%dir,*,0), %folders = $finddir(%dir,*,0), %done = 0, %done2 = 0
    did -b $dname 12,13
    while (%done < %files) {
      inc %done
      var %file = $right($findfile(%dir,*,%done),- $+ $len(%dir))
      did -a $dname 8 %file
      did -a $dname 38 $findfile(%dir,*,%done)
      did -a $dname 32 0    
    }
    while (%done2 < %folders) {
      inc %done2
      var %folder = $right($finddir(%dir,*,%done2),- $+ $len(%dir)) $+ \
      if (!$didwm(MP-Packer,8,$+(%folder,*))) { 
        did -a $dname 8 %folder
        did -a $dname 38 $finddir(%dir,*,%done2)
        did -a $dname 32 0
      }
    }
    if ($did($dname,8).lines) { did -e $dname 18,31 }
    did -e $dname 31
  }
  elseif ($did == 8) {
    did -e $dname 10,31
    if ($findtok(.exe .com,$right($did($dname,8).seltext,4),32)) { did -e $dname 13 | did -b $dname 12 }
    elseif ($right($did($dname,8).seltext,1) == $chr(92)) { did -b $dname 12,13 }
    else { did -e $dname 12 | did -b $dname 13 }
    did -u $dname 12,13
    if (($did($dname,32,$did($dname,8).sel).text) && ($did($dname,32,$did($dname,8).sel).text != none)) { did -c $dname $replacex($ifmatch,1,12,2,13) }
  }
  elseif ($did == 12) || ($did == 13) {
    if (($did == 12) && ($did($dname,13).enabled == $true)) { did -bu $dname 13 }
    elseif (($did == 13) && ($did($dname,12).enabled == $true)) { did -bu $dname 12 }
    if ($did($dname,$did).state == 1) { did -o $dname 32 $did($dname,8).sel $replace($did,12,1,13,2) }
    else { did -o $dname 32 $did($dname,8).sel 0 }
  }
  elseif ($did == 15) { did $iif($did($dname,$did).state == 1,-e,-b) $dname 36 }
  elseif ($did == 31) { 
    did -r $dname 8,32,38 | did -b $dname 10,12,13,18,31 | did -e $dname 9,11 | did -u $dname 12,13
    if ($hget(packer_files)) { hfree packer_files }
  }
  elseif ($did == 17) { 
    if ($did($dname,$did).state == 1) {   
      did -e $dname 19,21,22,23,24,25,26,29,30
      did -c $dname 28
      if (($did($dname,$did).state == 1) && (!$did($dname,29).text) || ($did($dname,29).text < 6.1)) { did -ra $dname 29 6.1 }
    }
    else { did -b $dname 19,21,22,23,24,25,26 }
  }
  elseif ($did == 28) { 
    did $iif($did($dname,28).state == 1,-e,-b) $dname 29,30
    if ($did($dname,17).state == 1) { did -e $dname 29,30 | did -c $dname 28 | did -ra $dname 29 $iif($did($dname,29).text < 6.1,6.1,$did($dname,29).text) }
  }
  elseif ($did == 18) {
    if (($did($dname,28).state == 1) && ($did($dname,29).text !isnum)) { var %x = $input(No mIRC minimum version number specified or it is invalid,ou,Error) | return }
    elseif ($did($dname,17).state == 1)  {
      if ($did($dname,21).state == 1) { var %compression_level = 1 }
      elseif ($did($dname,22).state == 1) { var %compression_level = 2 }
      elseif ($did($dname,23).state == 1) { var %compression_level = 3 }
      elseif ($did($dname,24).state == 1) { var %compression_level = 4 }
      elseif ($did($dname,25).state == 1) { var %compression_level = 5 }
      elseif ($did($dname,26).state == 1) { var %compression_level = 6 }
      else { var %x = $input(No compression level specified,ou,Error) | return }
      if ($did($dname,29).text < 6.1) { var %x = $input(Compression requires a minimum version of at least 6.1,ou,Error) | return }
    } 
    var %minversion = $did($dname,29).text isnum), %pack_file = " $+ $$sfile(packed.mrc,Save As,Save) $+ "
    if (!$did($dname,8).lines) { var %x = $input(No files to pack,ou,Error while packing) | return }
    if ($did($dname,35).state == 1) { 
      if ($regex($did($dname,37).text,[/:*?"<>|])) { var %x = $input(Invalid Subdirectory ( $+ contains one of: / * ? " < > $chr(124) $+ ),ou,Error) | return }
      elseif (!$did($dname,37).text) { var %subdir }
      else { var %subdir = $iif($left($did($dname,37).text,1) == $chr(92),$right($did($dname,37).text,-1),$did($dname,37).text) | var %subdir = $iif($right(%subdir,1) != $chr(92),%subdir $+ $chr(92),%subdir) }
    }  
    did -b $dname 18

    ;null write the packed file and add the header <3
    write -c %pack_file
    write_script %pack_file $+ ? $+ $+(;#######################;)
    write_script %pack_file $+ ? $+ $+(;# mIRC Project Packer,$chr(160),#;)
    write_script %pack_file $+ ? $+ $+(;# (Self Extraction),$str($chr(160),3),#;)
    write_script %pack_file $+ ? $+ $+(;# Version 1.2.1,$str($chr(160),7),#;)
    write_script %pack_file $+ ? $+ $+(;# By IceShaman,$str($chr(160),8),#;)
    write_script %pack_file $+ ? $+ $+(;#######################;,$crlf)

    ;write the unpacking code to the packed file
    write_script %pack_file $+ ? $+ $(on *:LOAD: $chr(123),1)
    if (($did($dname,28).state == 1) && (%minversion)) { write_script %pack_file $+ ? $+ $($chr(160) if $+($chr(40),$,version < $did($dname,29).text,$chr(41)) $chr(123) var $+(%,x) = $+($,input,$chr(40),mIRC v $+ $did($dname,29).text or higher is required to unpack the files,$chr(44),ou,$chr(44),Error,$chr(41)) $chr(124) .unload -rs " $+($,+) $+($,script) $+($,+) " $chr(124) return $chr(125),1) }
    write_script %pack_file $+ ? $+ $($chr(160) var $+(%,file) = " $+($,+) $+($,script) $+($,+) $+(",$chr(44)) $+(%,start) = 1,1)
    write_script %pack_file $+ ? $+ $($chr(160) bread $+(%,file) 0 $+($,file(%file).size) &packed_file,1)
    write_script %pack_file $+ ? $+ $($chr(160) while $+($chr(40),%,start,$chr(41)) $chr(123),1)
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) var $+(%,start) = $+($,bfind,$chr(40),&packed_file,$chr(44),%,start,$chr(44),35 66 69 71 73 78 32 70 73 76 69,$chr(41)),1)
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) if $+($chr(40),!,%,start,$chr(41)) $chr(123) break $chr(125),1))
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) var $+(%,fcrc) = $+($,bvar,$chr(40),&packed_file,$chr(44),$,calc,$chr(40),%,start + 12,$chr(41),$chr(44),8,$chr(41),.text,$chr(44)) $+(%,faction) = $+($,bvar,$chr(40),&packed_file,$chr(44),$,calc,$chr(40),%,start + 21,$chr(41),$chr(44),1,$chr(41),.text,$chr(44)) $+(%,encfile_start) = $+($,bfind,$chr(40),&packed_file,$chr(44),%,start,$chr(44),$,crlf,$chr(41)),1)
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) var $+(%,fsize) = $+($,calc,$chr(40),$,bfind,$chr(40),&,packed_file,$chr(44),$,calc,$chr(40),%,start + 23,$chr(41),$chr(44),32,$chr(41) - $,calc,$chr(40),%,start + 23,$chr(41),$chr(41),$chr(44)) $+(%,encfile_end) = $+($,bvar,$chr(40),&,packed_file,$chr(44),$,calc,$chr(40),%,start + 23,$chr(41),$chr(44),%,fsize,$chr(41),.text) $+ $chr(44) $+(%,fname) = $+($,bvar,$chr(40),&packed_file,$chr(44),$,calc,$chr(40),%,start + 24 +) $+(%,fsize,$chr(41),$chr(44),$,calc,$chr(40),%,encfile_start - %,start - 24 -) $+(%,fsize,$chr(41),$chr(41),.text,$chr(44)) $+(%,fdir) = $+($,left,$chr(40),%,fname,$chr(44),$,pos,$chr(40),%,fname,$chr(44),$,chr,$chr(40),92,$chr(41),$chr(44),$,pos,$chr(40),%,fname,$chr(44),$,chr,$chr(40),92,$chr(41),$chr(44),0,$chr(41),$chr(41),$chr(41),$chr(44)) $+(%,fdone) = 0,1)
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) if $+($chr(40),%,faction,$chr(41)) $chr(123)  hadd -m unpack_actions $+(%,encfile_start) $+($,replace,$chr(40),%,faction,$chr(44),1,$chr(44),load -rs) " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) $+(",$chr(44),2,$chr(44),run) " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) $+(",$chr(41)) $chr(125),1)  
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) :checkfolder,1)
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) if $+($chr(40),!,$,isdir,$chr(40)," $+($,+) $+($chr(36),mircdir) $+($,+) %,fdir $+($chr(36),+) ",$chr(41),$chr(41)) $chr(123) inc $+(%,fdone) $chr(124) var $+(%,folder) = " $+($,+) $+($,mircdir) $+($,+) $+($,left,$chr(40),%,fdir,$chr(44),$,calc,$chr(40),$,pos,$chr(40),%,fname,$chr(44),$,chr(92),$chr(44),%,fdone,$chr(41) - 1,$chr(41),$chr(41)) $+($,+) " $chr(124) mkdir $+(%,folder) $chr(124) goto checkfolder $chr(125),1)
    if (%compression_level) { 
      write_script %pack_file $+ ? $+ $($chr(160) $chr(160) if $+($chr(40),$chr(40),$,right,$chr(40),%,fname,$chr(44),1,$chr(41)) != $+($,chr,$chr(40),92,$chr(41),$chr(41) && $chr(40),%,encfile_end,$chr(41),$chr(41)) $chr(123),1) 
      write_script %pack_file $+ ? $+ $($chr(160) $chr(160) $chr(160) bcopy -c &unpacked_file 1 &packed_file $+($,calc,$chr(40),%,encfile_start + 2,$chr(41)) $+(%,encfile_end),1)
      write_script %pack_file $+ ? $+ $($chr(160) $chr(160) $chr(160) var $+(%,x) = $+($,decompress,$chr(40),&unpacked_file,$chr(44),b,$chr(41)) $chr(124) write -c " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) " $chr(124) bwrite " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) " 0 -1 &unpacked_file $chr(124) bunset &unpacked_file,1)
      write_script %pack_file $+ ? $+ $($chr(160) $chr(160) $chr(125),1)
    }
    else { write_script %pack_file $+ ? $+ $($chr(160) $chr(160) if $+($chr(40),$chr(40),$,right,$chr(40),%,fname,$chr(44),1,$chr(41)) != $+($,chr,$chr(40),92,$chr(41),$chr(41) && $chr(40),%,encfile_end,$chr(41),$chr(41)) $chr(123) bcopy -c &unpacked_file 1 &packed_file $+($,calc,$chr(40),%,encfile_start + 2,$chr(41)) $+(%,encfile_end) $chr(124) write -c " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) " $chr(124) bwrite " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) " 0 -1 &unpacked_file $chr(124) bunset &unpacked_file $chr(125),1) }
    if ($did($dname,15).state == 1) { write_script %pack_file $+ ? $+ $($chr(160) $chr(160) if $+($chr(40),$,crc,$chr(40),") $+($,+) $+($,mircdir) $+($,+) $+($,iif,$chr(40),$,right,$chr(40),%,fname,$chr(44),1,$chr(41)) == $+($,chr,$chr(40),92,$chr(41),$chr(44),$,left,$chr(40),%,fname,$chr(44),-1,$chr(41),$chr(44),%,fname,$chr(41)) $+($,+) $+(",$chr(41)) != $+(%,fcrc,$chr(41)) $chr(123) echo -s File " $+($,+) $+($,mircdir) $+($,+) $+(%,fname) $+($,+) " is corrupt! $chr(125),1) }
    write_script %pack_file $+ ? $+ $($chr(160) $chr(160) var $+(%,start) = $+($,bfind,$chr(40),&packed_file,$chr(44),$,calc,$chr(40),%,encfile_start + %,encfile_end + 1,$chr(41),$chr(44),$,crlf,$chr(41)),1)
    write_script %pack_file $+ ? $+ $($chr(160) $chr(125),1)
    write_script %pack_file $+ ? $+ $($chr(160) echo -s Successfully unpacked files!,1)
    write_script %pack_file $+ ? $+ $($chr(160) var $+(%,actions) = $+($,hget,$chr(40),unpack_actions,$chr(44),0,$chr(41),.item,$chr(44)) $+(%,done) = 0,1)
    write_script %pack_file $+ ? $+ $($chr(160) while $+($chr(40),%,done < %,actions,$chr(41)) $chr(123) inc $+(%,done) $chr(124) . $+($,+) $+($,hget,$chr(40),unpack_actions,$chr(44),$,hget,$chr(40),unpack_actions,$chr(44),%,done,$chr(41),.item,$chr(41),$chr(41)) $chr(125),1)
    write_script %pack_file $+ ? $+ $($chr(160) if $+($chr(40),%,done,$chr(41)) $chr(123) hfree unpack_actions $chr(125),1)    
    write_script %pack_file $+ ? $+ $($chr(160) .unload -rs $+(%,file),1)    
    write_script %pack_file $+ ? $+ $($chr(125),1)
    write_script %pack_file

    ;read files to be packed and write them to the packed file
    var %files = $did($dname,8).lines, %done = 0
    while (%done < %files) {
      inc %done
      var %file = " $+ $did($dname,38,%done).text $+ "
      if (!$exists(%file)) { var %x = $input(No such file/folder: %file,ou,Error while packing) | continue } 
      elseif ($file(%file).size) {
        .bread %file 0 $ifmatch &pack_file 
        if (%compression_level) { var %packed = $compress(&pack_file,bl $+ %compression_level) }
        if (!%start_comment) { var %start_comment = $true | write %pack_file /* $crlf }
        var %packed = &pack_file
        write %pack_file #BEGIN FILE $crc(%file) $iif($did($dname,32,%done).text isin 1 2,$ifmatch,0) $bvar(&pack_file,0) $iif(%subdir,%subdir $+ $did($dname,8,%done).text,$did($dname,8,%done).text)    
        bwrite %pack_file $file(%pack_file).size -1 &pack_file
        write -n %pack_file $crlf
      }
      else { write %pack_file #BEGIN FILE 00000000 $iif($did($dname,32,$did($dname,8,%done).sel).text isin 1 2,$ifmatch,0) 0 $iif(%subdir,%subdir $+ $did($dname,8,%done).text,$did($dname,8,%done).text) | write -n %pack_file $crlf }
    }
    if (%start_comment) { write %pack_file */ }

    did -e $dname 18
    var %x = $input(Files Successfully Packed!,ou,Packing Status)
  }
  elseif ($did == 35) { did $iif($did($dname,$did).state == 1,-e,-b) $dname 37 }
}

;writes data to a file (with chr(160) parsed send as chr(32) as well as basic /write -n support)
alias -l write_script {
  if ($1 == -n) {  
    bset -t &write_line 1 $gettok($1-,2-,63) | breplace &write_line 160 32
    bwrite $gettok($gettok($1-,1,63),2-,32) $file($gettok($gettok($1-,1,63),2-,32)).size -1 &write_line
    bunset &write_line
    return
  }
  bset -t &write_line 1 $gettok($1-,2-,63) $+ $crlf | breplace &write_line 160 32
  bwrite $gettok($1-,1,63) $file($gettok($1-,1,63)).size  -1 &write_line
  bunset &write_line
}