1 Reply Latest reply on Nov 9, 2011 11:48 PM by Jens Eckervogt

    Problem with Source:Object and Output:File

    Jens Eckervogt Level 1

      Hello dear people,

       

      i have been found example like FileCompressTool.

       

      But i have been coded for conversors or decompilers.

      I have got error of File and FileStream

      Look at my picture

      http://www.funpic.de/photos/5/7/3/4/7/574375_45b95ed909_e.jpg

       

      I have been tried because my Adobe AIr Application has not error..

      How do i fix this error? Or i must run Adobe Air as Administrator Right?

       

      Code for Example:

       

      <?xml version="1.0" encoding="utf-8"?>
      <mx:WindowedApplication
                title="Half-Life Map Decompiler"
                xmlns:mx="http://www.adobe.com/2006/mxml"
                layout="absolute"
                showStatusBar="false">
        
                <mx:Script>
                          <![CDATA[
                                    import com.valve.utils.mapEncorder;
        
                                    import flash.filesystem.File;
        
                                    private var bspSrc:File;
                                    private var mapDes:File;
        
                                    private function ChooseSrc():void
                                    {
                                              if( bspSrc == null ) {
                                                        bspSrc = new File();
                                              }
                                              bspSrc.addEventListener(Event.SELECT,  sourceSelectHandler);
                                              bspSrc.browseForOpen("Choose Half-Life 1 Bsp File", [new FileFilter("Half-Life 1 *.bsp", "*.bsp")]);
                                    }
        
                                    private function sourceSelectHandler(event:Event):void
                                    {
                                              bspSrcText.text = bspSrc.nativePath;
                                              StateLog.text = bspSrc.nativePath + " has been selected.";
        
                                    }
        
                                    private function ChooseDes():void
                                    {
                                              if ( mapDes == null ) {
                                                        mapDes = new File();
                                              }
                                              mapDes.addEventListener(Event.SELECT, destinationSelectHandler);
                                              mapDes.browseForDirectory("Choose for decompiled Map file!");
                                    }
        
                                    private function destinationSelectHandler(event:Event):void
                                    {
                                              mapDesText.text = mapDes.nativePath;
                                              StateLog.text = mapDes.nativePath + " has been selected.";
                                    }
        
                                    private function Decompile():void
                                    {
                                              var bsp2map:mapEncorder = new mapEncorder();
                                              bsp2map.decompileBsp2map(bspSrc, mapDes);
                                              StateLog.text = "This Map File has been decompiled complety.";
                                    }
        
                          ]]>
                </mx:Script>
        
                <mx:Label left="10" top="10" text="Choose your bsp ( used by Half-Life 1 ):"/>
                <mx:TextInput id="bspSrcText" left="15" right="63" top="36"/>
                <mx:Button right="15" top="36" label="..." click="ChooseSrc()"/>
                <mx:Label left="10" top="70" text="Choose your decompiled map in your directory:"/>
                <mx:TextInput id="mapDesText" left="15" right="63" top="96"/>
                <mx:Button right="15" top="96" label="..." click="ChooseDes()"/>
                <mx:Label left="10" top="130" text="View with decompiled details:"/>
                <mx:Button right="98" top="128" label="Decompile" click="Decompile()"/>
                <mx:Button right="192" top="128" label="Clean log"/>
                <mx:TextArea id="StateLog" left="15" right="15" top="156" bottom="15"/>
                <mx:Button right="15" top="128" width="75" label="About..."/>
        
      </mx:WindowedApplication>
      

       

      And com.valve.utils.mapEncorder.as

       

      /*
      
      
                Valve Software
      
      
                Half-Life 1 - Maps
      */
      package com.valve.utils
      {
                import flash.filesystem.File;
                import flash.filesystem.FileMode;
                import flash.filesystem.FileStream;
                import flash.utils.ByteArray;
      
      
                public class mapEncorder
                {
                          public function decompileBsp2map(bspSrc:Object, mapDes:File):void
                          {
                                    if( bspSrc == null || mapDes == null ){
                                              throw new ArgumentError("Half-LIfe Bsp File and Half-Life Map File cannot be null.");
                                    }
        
                                    var bspSrcByte:ByteArray;
                                    var mapFileTarget:File = new File(mapDes.nativePath);
        
                                    var fileTime:Date;
        
                                    if(bspSrc is File){
                                              var bspSrcFile:File = new File;
                                              if(bspSrcFile.exists || bspSrcFile.isDirectory){
                                                        throw new ArgumentError("If your bsp File is current version.");
                                              }
        
                                              var bspFileStream:FileStream = new FileStream();
                                              bspFileStream.open(bspSrcFile, FileMode.READ);
                                              bspSrcByte = new ByteArray;
                                              bspFileStream.readBytes(bspSrcByte, bspFileStream.bytesAvailable);
                                              bspFileStream.close();
        
                                              if (mapFileTarget.isDirectory)
                                              {
                                                        mapFileTarget = mapFileTarget.resolvePath(bspSrcFile.name + ".map");
                                                        fileTime = bspSrcFile.modificationDate;
                                              }
                                              else if (bspSrc is ByteArray)
                                              {
                                                        bspSrcByte = bspSrc as ByteArray;
        
                                                        if (mapFileTarget.isDirectory)
                                                        {
                                                                  mapFileTarget = mapFileTarget.resolvePath("_decompiled.map");
                                                        }
        
                                                        fileTime = new Date();
                                              }
                                              else
                                              {
                                                        throw new ArgumentError("Bsp File must be complety.");
                                              }
        
                                              var mapFileStream:FileStream = new FileStream();
                                              mapFileStream.open(mapFileTarget, FileMode.WRITE);
                                              mapFileStream.writeBytes(bspSrcByte);
                                              mapFileStream.close();
                                    }
                          }
                }
      }
      

       

      Thank you for help - If you find an error than you can tell me. If it doesn't work than i will try Flash Builder with Running as Admin.

       

      Regards J. Eckervogt

        • 1. Re: Problem with Source:Object and Output:File
          Jens Eckervogt Level 1

          I have been found problem because i have been found issus of if (...) with !

           

          It is okay. I have been forgotten. I am sorry. Thanks.. I have been fixed this..

           

          It is true

           

          But is worng code :

          /*


                    Valve Software


                    Half-Life 1 - Maps
          */
          package com.valve.utils
          {
                    import flash.filesystem.File;
                    import flash.filesystem.FileMode;
                    import flash.filesystem.FileStream;
                    import flash.utils.ByteArray;


                    public class mapEncorder
                    {
                              public function decompileBsp2map(bspSrc:Object, mapDes:File):void
                              {
                                        if( bspSrc == null || mapDes == null ){
                                                  throw new ArgumentError("Half-LIfe Bsp File and Half-Life Map File cannot be null.");
                                        }
           
                                        var bspSrcByte:ByteArray;
                                        var mapFileTarget:File = new File(mapDes.nativePath);
           
                                        var fileTime:Date;
           
                                        if(bspSrc is File){
                                                  var bspSrcFile:File = new File;
                                                  if(bspSrcFile.exists || bspSrcFile.isDirectory){
                                                            throw new ArgumentError("If your bsp File is current version.");
                                                  }
           
                                                  var bspFileStream:FileStream = new FileStream();
                                                  bspFileStream.open(bspSrcFile, FileMode.READ);
                                                  bspSrcByte = new ByteArray;
                                                  bspFileStream.readBytes(bspSrcByte, bspFileStream.bytesAvailable);
                                                  bspFileStream.close();
           
                                                  if (mapFileTarget.isDirectory)
                                                  {
                                                            mapFileTarget = mapFileTarget.resolvePath(bspSrcFile.name + ".map");
                                                            fileTime = bspSrcFile.modificationDate;
                                                  }
                                                  else if (bspSrc is ByteArray)
                                                  {
                                                            bspSrcByte = bspSrc as ByteArray;
           
                                                            if (mapFileTarget.isDirectory)
                                                            {
                                                                      mapFileTarget = mapFileTarget.resolvePath("_decompiled.map");
                                                            }
           
                                                            fileTime = new Date();
                                                  }
                                                  else
                                                  {
                                                            throw new ArgumentError("Bsp File must be complety.");
                                                  }
           
                                                  var mapFileStream:FileStream = new FileStream();
                                                  mapFileStream.open(mapFileTarget, FileMode.WRITE);
                                                  mapFileStream.writeBytes(bspSrcByte);
                                                  mapFileStream.close();
                                        }
                              }
                    }
          }

           

          Replace to:

          /*

                    Valve Software

           

           

                    Half-Life 1 - Maps

          */

          package com.valve.utils

          {

                    import flash.filesystem.File;

                    import flash.filesystem.FileMode;

                    import flash.filesystem.FileStream;

                    import flash.utils.ByteArray;

           

           

                    public class mapEncorder

                    {

                              public function decompileBsp2map(bspSrc:Object, mapFile:File):void

                              {

                                        if( bspSrc == null || mapFile == null ){

                                                  throw new ArgumentError("Half-LIfe Bsp File and Half-Life Map File cannot be null.");

                                        }

           

                                        var bspSrcByte:ByteArray;

                                        var mapFileTarget:File = new File(mapFile.nativePath);

           

                                        var fileTime:Date;

           

                                        if(bspSrc is File){

                                                  var bspSrcFile:File = bspSrc as File;

                                                  if(!bspSrcFile.exists || bspSrcFile.isDirectory){

                                                            throw new ArgumentError("If your bsp File is current version.");

                                                  }

           

                                                  var bspFileStream:FileStream = new FileStream();

                                                  bspFileStream.open(bspSrcFile, FileMode.READ);

                                                  bspSrcByte = new ByteArray();

                                                  bspFileStream.readBytes(bspSrcByte, bspFileStream.bytesAvailable);

                                                  bspFileStream.close();

           

                                                  if (mapFileTarget.isDirectory)

                                                  {

                                                            mapFileTarget = mapFileTarget.resolvePath(bspSrcFile.name + ".map");

                                                            fileTime = bspSrcFile.modificationDate;

                                                  }

                                                  else if (bspSrc is ByteArray)

                                                  {

                                                            bspSrcByte = bspSrc as ByteArray;

           

                                                            if (mapFileTarget.isDirectory)

                                                            {

                                                                      mapFileTarget = mapFileTarget.resolvePath("_decompiled.map");

                                                            }

           

                                                            fileTime = new Date();

                                                  }

                                                  else

                                                  {

                                                            throw new ArgumentError("Bsp File must be complety.");

                                                  }

           

           

           

                                                  var mapFileStream:FileStream = new FileStream();

                                                  mapFileStream.open(mapFileTarget, FileMode.WRITE);

           

                                                  mapFileStream.writeBytes(bspSrcByte);

                                                  mapFileStream.close();

                                        }

                              }

                    }

          }

           

          Now it is working. Thanks!