Nem's Tools - HLLib
BlitzMax Forums/BlitzMax Programming/Nem's Tools - HLLib
| ||
HLLib is a library for loading all Half-Life and Half-Life 2 package and file formats. I was interested in it for loading HL2 packages, but it requires some C classes and I stopped. I got up to the point where I could open a .gcf package file. I am putting this up here in case someone else is interested in it. The lib can be downloaded here: http://nemesis.thewavelength.net/index.php?p=35 file$="C:/Program Files/Steam/steamapps/base source engine 2.gcf" file=RealPath(file) Const HL_MODE_INVALID = $00 Const HL_MODE_READ = $01 Const HL_MODE_WRITE = $02 Const HL_MODE_CREATE = $04 Const HL_MODE_VOLATILE = $08 Const HL_MODE_NO_FILEMAPPING = $10 Const HL_MODE_QUICK_FILEMAPPING = $20 Const HL_VERSION=0 Const HL_PACKAGE_NONE=0 Const HL_PACKAGE_BSP=1 Const HL_PACKAGE_GCF=2 Const HL_PACKAGE_PAK=3 Const HL_PACKAGE_VBSP=4 Const HL_PACKAGE_WAD=5 Const HL_PACKAGE_XZP=6 Const HL_PACKAGE_ZIP=7 Const HL_PACKAGE_NCF=8 Const HL_ID_INVALID=$ffffffff HLIB_HL=loadlibrarya("hllib.dll") Global hlInitialize() Global hlShutdown() Global hlPackageOpenFile:Byte(file$z,uimode:Int) Global hlPackageGetRoot:Byte Ptr() Global hlGetInteger:Int(thing:Int) Global hlGetPackageTypeFromName:Int(file$z) Global hlCreatePackage:Int(PackageType:Int,uiPackage:Byte Ptr) Global hlBindPackage:Int(package:Int) hlInitialize=getprocaddress(HLIB_HL,"hlInitialize") hlGetInteger=getprocaddress(HLIB_HL,"hlGetInteger") hlPackageOpenFile=getprocaddress(HLIB_HL,"hlPackageOpenFile") hlPackageGetRoot=getprocaddress(HLIB_HL,"hlPackageGetRoot") hlGetPackageTypeFromName=getprocaddress(HLIB_HL,"hlGetPackageTypeFromName") hlCreatePackage=getprocaddress(HLIB_HL,"hlCreatePackage") hlBindPackage=getprocaddress(HLIB_HL,"hlBindPackage") hlShutdown=getprocaddress(HLIB_HL,"hlShutdown") hlInitialize() Print "Version: "+hlGetInteger(HL_VERSION) Print "File: "+file format=hlGetPackageTypeFromName(file) Print "Format: "+format If Not hlCreatePackage(format,Varptr package) RuntimeError "Error creating package." Print "Package: "+package hlBindPackage package If Not hlPackageOpenFile(file,HL_MODE_READ) RuntimeError "Error reading package." If Not hlPackageGetRoot() Notify "SHIT" hlShutdown() |