Copy link to clipboard
Copied
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
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
Copy link to clipboard
Copied
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!